Skip to content

Commit

Permalink
fix: RS running
Browse files Browse the repository at this point in the history
  • Loading branch information
Agrover112 committed Aug 25, 2021
1 parent 2fe4dd1 commit c3f3b5a
Show file tree
Hide file tree
Showing 2 changed files with 73 additions and 17 deletions.
28 changes: 11 additions & 17 deletions flight_algorithms/algorithms/base_algorithm.py
Expand Up @@ -2,30 +2,24 @@
#from flight_algorithms.Flight import Flight
import random
import math

import sys

class FlightAlgorithm(metaclass=ABCMeta):
def __init__(self, domain, fitness_function, seed=random.randint(10, 100),
set_all_generators=False, init=[]):
def __init__(self, domain, fitness_function,seed=random.randint(10, 100),seed_init=True,init=[]):
self.domain = domain
self.fitness_function = fitness_function
self.seed = seed
self.seed_init = seed_init
self.init = init
self.init_seed(set_all_generators)

self.population = []
self.best_cost = 0.0 # returned
self.scores = 0.0 # returned
self.nfe = 0 # returned

if self.seed_init:
# Set the seed for initial population only
self.r_init = random.Random(seed)
else:
# Same seeds for both init and other random generators
self.r_init = random.Random(seed)
random.seed(seed)



def init_seed(self, set_all_generators=False):
self.r_init = random.Random(self.seed)

if set_all_generators:
random.seed(self.seed)
self.best_cost =0.0 # returned

@abstractmethod
def run(self, **kwargs) -> tuple:
Expand Down
62 changes: 62 additions & 0 deletions flight_algorithms/algorithms/rs.py
@@ -0,0 +1,62 @@
import sys
import os
sys.path.append(os.getcwd())
from abc import ABCMeta
from utils.utils import plot_scores, print_schedule, read_file
from flight_algorithms.algorithms.base_algorithm import FlightAlgorithm
import heapq
import math
import random
import sys
from fitness import *


class RandomSearch(FlightAlgorithm, metaclass=ABCMeta):
def __init__(self, domain, fitness_function, seed=random.randint(10, 100),
seed_init=True, init=[], epochs=100):
super().__init__(domain, fitness_function, seed, seed_init, init)
self.epochs = epochs
self.best_cost=sys.maxsize
self.best_solution=0.0


def run(self, **kwargs) -> tuple:
scores = []
nfe = 0
if len(self.init) > 0:
solution = self.init
else:
solution = [self.r_init.randint(self.domain[i][0], self.domain[i][1])
for i in range(len(self.domain))]
for i in range(self.epochs):
if i != 0:
solution = [random.randint(self.domain[i][0], self.domain[i][1])
for i in range(len(self.domain))]
if not self.fitness_function.__name__ == 'fitness_function':
cost = self.fitness_function(solution)
else:
cost = self.fitness_function(solution, 'FCO')
nfe += 1
if cost < self.best_cost:
self.best_cost = cost
self.best_solution = solution
scores.append(self.best_cost)
return self.best_solution, self.best_cost, scores, nfe, self.seed



if __name__ == '__main__':
read_file('flights.txt')
rs=RandomSearch(domain=domain['domain'],fitness_function=fitness_function,seed=5,seed_init=False)
soln, cost, scores, nfe, seed=rs.run()
plot_scores(scores,rs.__class__.__name__,save_fig=False)
print_schedule(soln,'FCO')
""""
1. Change all algorithms
2. Docstrings
3. Type hinting
4. Unit tests
5. Change all single_runs
6. Change all multiple runs
"""

0 comments on commit c3f3b5a

Please sign in to comment.