def run_mimic(t, samples, keep, m): fname = outfile.format('MIMIC{}_{}_{}'.format(samples, keep, m), str(t + 1)) ef = ContinuousPeaksEvaluationFunction(T) odd = DiscreteUniformDistribution(ranges) nf = DiscreteChangeOneNeighbor(ranges) mf = DiscreteChangeOneMutation(ranges) cf = SingleCrossOver() gap = GenericGeneticAlgorithmProblem(ef, odd, mf, cf) df = DiscreteDependencyTree(m, ranges) pop = GenericProbabilisticOptimizationProblem(ef, odd, df) mimic = MIMIC(samples, keep, pop) fit = FixedIterationTrainer(mimic, 10) times = [0] for i in range(0, maxIters, 10): start = clock() fit.train() elapsed = time.clock() - start times.append(times[-1] + elapsed) fevals = ef.fevals score = ef.value(mimic.getOptimal()) ef.fevals -= 1 st = '{},{},{},{}\n'.format(i, score, times[-1], fevals) # print st base.write_to_file(fname, st) return
def run_ga(t, pop, mate, mutate): fname = outfile.format('GA{}_{}_{}'.format(pop, mate, mutate), str(t + 1)) with open(fname, 'a+') as f: content = f.read() if "fitness" not in content: f.write('iterations,fitness,time,fevals\n') ef = FlipFlopEvaluationFunction() odd = DiscreteUniformDistribution(ranges) nf = DiscreteChangeOneNeighbor(ranges) mf = DiscreteChangeOneMutation(ranges) cf = SingleCrossOver() gap = GenericGeneticAlgorithmProblem(ef, odd, mf, cf) ga = StandardGeneticAlgorithm(pop, mate, mutate, gap) fit = FixedIterationTrainer(ga, 10) times = [0] for i in range(0, maxIters, 10): start = clock() fit.train() elapsed = time.clock() - start times.append(times[-1] + elapsed) fevals = ef.fevals score = ef.value(ga.getOptimal()) ef.fevals -= 1 st = '{},{},{},{}\n'.format(i, score, times[-1], fevals) # print st base.write_to_file(fname, st) return
def run_mimic(t, samples, keep, m): fill = [N] * N ranges = array('i', fill) ef = TravelingSalesmanRouteEvaluationFunction(points) odd = DiscreteUniformDistribution(ranges) fname = outfile.format('MIMIC{}_{}_{}'.format(samples, keep, m), str(t + 1)) base.write_header(fname) df = DiscreteDependencyTree(m, ranges) ef = TravelingSalesmanRouteEvaluationFunction(points) pop = GenericProbabilisticOptimizationProblem(ef, odd, df) mimic = MIMIC(samples, keep, pop) fit = FixedIterationTrainer(mimic, 10) times = [0] for i in range(0, maxIters, 10): start = clock() fit.train() elapsed = time.clock() - start times.append(times[-1] + elapsed) fevals = ef.fevals score = ef.value(mimic.getOptimal()) ef.fevals -= 1 st = '{},{},{},{}\n'.format(i, score, times[-1], fevals) # print st base.write_to_file(fname, st) return
def run_sa(t, CE): fname = outfile.format('SA{}'.format(CE), str(t + 1)) with open(fname, 'a+') as f: content = f.read() if "fitness" not in content: f.write('iterations,fitness,time,fevals\n') ef = FlipFlopEvaluationFunction() odd = DiscreteUniformDistribution(ranges) nf = DiscreteChangeOneNeighbor(ranges) hcp = GenericHillClimbingProblem(ef, odd, nf) sa = SimulatedAnnealing(1E10, CE, hcp) fit = FixedIterationTrainer(sa, 10) times = [0] for i in range(0, maxIters, 10): start = clock() fit.train() elapsed = time.clock() - start times.append(times[-1] + elapsed) fevals = ef.fevals score = ef.value(sa.getOptimal()) ef.fevals -= 1 st = '{},{},{},{}\n'.format(i, score, times[-1], fevals) # print st base.write_to_file(fname, st) return
def run_rhc(t): fname = outfile.format('RHC', str(t + 1)) with open(fname, 'a+') as f: content = f.read() if "fitness" not in content: f.write('iterations,fitness,time,fevals\n') ef = ContinuousPeaksEvaluationFunction(T) odd = DiscreteUniformDistribution(ranges) nf = DiscreteChangeOneNeighbor(ranges) hcp = GenericHillClimbingProblem(ef, odd, nf) rhc = RandomizedHillClimbing(hcp) fit = FixedIterationTrainer(rhc, 10) times = [0] for i in range(0, maxIters, 10): start = clock() fit.train() elapsed = time.clock() - start times.append(times[-1] + elapsed) fevals = ef.fevals score = ef.value(rhc.getOptimal()) ef.fevals -= 1 st = '{},{},{},{}\n'.format(i, score, times[-1], fevals) # print fname, st base.write_to_file(fname, st) return
def run_rhc(t): fname = outfile.format('RHC', str(t + 1)) ef = TravelingSalesmanRouteEvaluationFunction(points) hcp = GenericHillClimbingProblem(ef, odd, nf) rhc = RandomizedHillClimbing(hcp) fit = FixedIterationTrainer(rhc, 10) times = [0] for i in range(0, maxIters, 10): start = clock() fit.train() elapsed = time.clock() - start times.append(times[-1] + elapsed) fevals = ef.fevals score = ef.value(rhc.getOptimal()) ef.fevals -= 1 st = '{},{},{},{}\n'.format(i, score, times[-1], fevals) # print st base.write_to_file(fname, st) return
def run_ga(t, pop, mate, mutate): fname = outfile.format('GA{}_{}_{}'.format(pop, mate, mutate), str(t + 1)) ef = TravelingSalesmanRouteEvaluationFunction(points) gap = GenericGeneticAlgorithmProblem(ef, odd, mf, cf) ga = StandardGeneticAlgorithm(pop, mate, mutate, gap) fit = FixedIterationTrainer(ga, 10) times = [0] for i in range(0, maxIters, 10): start = clock() fit.train() elapsed = time.clock() - start times.append(times[-1] + elapsed) fevals = ef.fevals score = ef.value(ga.getOptimal()) ef.fevals -= 1 st = '{},{},{},{}\n'.format(i, score, times[-1], fevals) # print st base.write_to_file(fname, st) return
def run_sa(t, CE): fname = outfile.format('SA{}'.format(CE), str(t + 1)) ef = TravelingSalesmanRouteEvaluationFunction(points) hcp = GenericHillClimbingProblem(ef, odd, nf) sa = SimulatedAnnealing(1E10, CE, hcp) fit = FixedIterationTrainer(sa, 10) times = [0] for i in range(0, maxIters, 10): start = clock() fit.train() elapsed = time.clock() - start times.append(times[-1] + elapsed) fevals = ef.fevals score = ef.value(sa.getOptimal()) ef.fevals -= 1 st = '{},{},{},{}\n'.format(i, score, times[-1], fevals) # print st base.write_to_file(fname, st) return
def run_sa(t, CE): fname = outfile.format('SA{}'.format(CE), str(t + 1)) base.write_header(fname) ef = ContinuousPeaksEvaluationFunction(T) odd = DiscreteUniformDistribution(ranges) nf = DiscreteChangeOneNeighbor(ranges) hcp = GenericHillClimbingProblem(ef, odd, nf) sa = SimulatedAnnealing(1E10, CE, hcp) fit = FixedIterationTrainer(sa, 10) times = [0] for i in range(0, maxIters, 10): start = clock() fit.train() elapsed = time.clock() - start times.append(times[-1] + elapsed) fevals = ef.fevals score = ef.value(sa.getOptimal()) ef.fevals -= 1 st = '{},{},{},{}\n'.format(i, score, times[-1], fevals) # print st base.write_to_file(fname, st) return
def run_rhc(t): fname = outfile.format('RHC', str(t + 1)) base.write_header(fname) ef = FlipFlopEvaluationFunction() odd = DiscreteUniformDistribution(ranges) nf = DiscreteChangeOneNeighbor(ranges) hcp = GenericHillClimbingProblem(ef, odd, nf) rhc = RandomizedHillClimbing(hcp) fit = FixedIterationTrainer(rhc, 10) times = [0] for i in range(0, maxIters, 10): start = clock() fit.train() elapsed = time.clock() - start times.append(times[-1] + elapsed) fevals = ef.fevals score = ef.value(rhc.getOptimal()) ef.fevals -= 1 st = '{},{},{},{}\n'.format(i, score, times[-1], fevals) # print st base.write_to_file(fname, st) return
class RunExperiment(Callable): def __init__(self, experiment): self.experiment = experiment self.started = None self.completed = None self.result = None self.thread_used = None self.exception = None def __str__(self): if self.exception: return "[%s] %s download error %s in %.2fs" % \ (self.thread_used, self.experiment, self.exception, self.completed - self.started, ) #, self.result) elif self.completed: return "[%s] %s downloaded %dK in %.2fs" % \ (self.thread_used, self.experiment, len(self.result)/1024, self.completed - self.started, ) #, self.result) elif self.started: return "[%s] %s started at %s" % \ (self.thread_used, self.experiment, self.started) else: return "[%s] %s not yet scheduled" % \ (self.thread_used, self.experiment) # needed to implement the Callable interface; # any exceptions will be wrapped as either ExecutionException # or InterruptedException def call(self): self.thread_used = threading.currentThread().getName() self.started = time.time() if self.experiment['kind'] == 'rhc': exp_args = self.experiment['args'] else: exp_args = ",".join(map(str, self.experiment['args'])) print "START: {},{},{}".format(self.experiment['type'], self.experiment['kind'], exp_args) try: if self.experiment['type'] == 'continuouspeaks': if self.experiment['kind'] == 'rhc': self.result = continuouspeaks.run_rhc( self.experiment['args']) if self.experiment['kind'] == 'sa': self.result = continuouspeaks.run_sa( *self.experiment['args']) if self.experiment['kind'] == 'ga': self.result = continuouspeaks.run_ga( *self.experiment['args']) if self.experiment['kind'] == 'mimic': self.result = continuouspeaks.run_mimic( *self.experiment['args']) if self.experiment['type'] == 'flipflop': if self.experiment['kind'] == 'rhc': self.result = flipflop.run_rhc(self.experiment['args']) if self.experiment['kind'] == 'sa': self.result = flipflop.run_sa(*self.experiment['args']) if self.experiment['kind'] == 'ga': self.result = flipflop.run_ga(*self.experiment['args']) if self.experiment['kind'] == 'mimic': self.result = flipflop.run_mimic(*self.experiment['args']) if self.experiment['type'] == 'tsp': if self.experiment['kind'] == 'rhc': self.result = tsp.run_rhc(self.experiment['args']) if self.experiment['kind'] == 'sa': self.result = tsp.run_sa(*self.experiment['args']) if self.experiment['kind'] == 'ga': self.result = tsp.run_ga(*self.experiment['args']) if self.experiment['kind'] == 'mimic': self.result = tsp.run_mimic(*self.experiment['args']) if self.experiment['type'] == 'nn': if self.experiment['kind'] == 'backprop': self.result = NNbackprop.main(*self.experiment['args']) if self.experiment['kind'] == 'ga': self.result = NNga.main(*self.experiment['args']) if self.experiment['kind'] == 'rhc': self.result = NNrhc.main(*self.experiment['args']) if self.experiment['kind'] == 'sa': self.result = NNsa.main(*self.experiment['args']) except Exception, ex: self.exception = ex self.completed = time.time() if self.experiment['kind'] == 'rhc': exp_args = self.experiment['args'] else: exp_args = ",".join(map(str, self.experiment['args'])) finished = "{},{},{},{}".format(self.experiment['type'], self.experiment['kind'], exp_args, self.completed - self.started) print " END: {}".format(finished) base.write_to_file(TIMING_FILE, "{}\n".format(finished)) return self
def call(self): self.thread_used = threading.currentThread().getName() self.started = time.time() if self.experiment['kind'] == 'rhc': exp_args = self.experiment['args'] else: exp_args = ",".join(map(str, self.experiment['args'])) print("START: {},{},{}".format(self.experiment['type'], self.experiment['kind'], exp_args)) try: if self.experiment['type'] == 'continuouspeaks': if self.experiment['kind'] == 'rhc': self.result = continuouspeaks.run_rhc( self.experiment['args']) if self.experiment['kind'] == 'sa': self.result = continuouspeaks.run_sa( *self.experiment['args']) if self.experiment['kind'] == 'ga': self.result = continuouspeaks.run_ga( *self.experiment['args']) if self.experiment['kind'] == 'mimic': self.result = continuouspeaks.run_mimic( *self.experiment['args']) if self.experiment['type'] == 'flipflop': if self.experiment['kind'] == 'rhc': self.result = flipflop.run_rhc(self.experiment['args']) if self.experiment['kind'] == 'sa': self.result = flipflop.run_sa(*self.experiment['args']) if self.experiment['kind'] == 'ga': self.result = flipflop.run_ga(*self.experiment['args']) if self.experiment['kind'] == 'mimic': self.result = flipflop.run_mimic(*self.experiment['args']) if self.experiment['type'] == 'tsp': if self.experiment['kind'] == 'rhc': self.result = tsp.run_rhc(self.experiment['args']) if self.experiment['kind'] == 'sa': self.result = tsp.run_sa(*self.experiment['args']) if self.experiment['kind'] == 'ga': self.result = tsp.run_ga(*self.experiment['args']) if self.experiment['kind'] == 'mimic': self.result = tsp.run_mimic(*self.experiment['args']) if self.experiment['type'] == 'nn': if self.experiment['kind'] == 'backprop': self.result = NNbackprop.main(*self.experiment['args']) if self.experiment['kind'] == 'ga': self.result = NNga.main(*self.experiment['args']) if self.experiment['kind'] == 'rhc': self.result = NNrhc.main(*self.experiment['args']) if self.experiment['kind'] == 'sa': self.result = NNsa.main(*self.experiment['args']) except Exception: pass self.exception = ex self.completed = time.time() if self.experiment['kind'] == 'rhc': exp_args = self.experiment['args'] else: exp_args = ",".join(map(str, self.experiment['args'])) finished = "{},{},{},{}".format(self.experiment['type'], self.experiment['kind'], exp_args, self.completed - self.started) print(" END: {}".format(finished)) base.write_to_file(TIMING_FILE, "{}\n".format(finished)) return self