def action(model): start_time = time.time() # generating the 10k random solutions candidates = list() for _ in range(10000): ran_dec = [random.random() for _ in range(model.decsNum)] can = model.Individual(ran_dec) candidates.append(can) print('random sol created.') for can in candidates: model.eval(can) print('finish evaluating.') res = emo.sortNondominated(candidates, len(candidates), True) print('finish selection.') finish_time = time.time() with open(request_new_file('./tse_rs/god', model.name), 'w') as f: f.write('T:' + str(start_time) + '\n~~~\n') f.write('T:' + str(finish_time) + '\n') for front in res[0]: f.write(' '.join(map(str, front.fitness.values))) f.write('\n') f.write('~~~\n') return res
from __future__ import division from Benchmarks.POM3 import pre_defined from Algorithms.NSGA2 import action from repeats import request_new_file import time import pdb if __name__ == '__main__': for x in [0, 1, 2]: model = pre_defined()[x] start_time = time.time() res = action(model, mu=300, ngen=10000 // 100, cxpb=0.9, mutpb=0.15) finish_time = time.time() with open(request_new_file('./tse_rs/nsga2', model.name), 'w') as f: f.write('T:' + str(start_time) + '\n~~~\n') f.write('T:' + str(finish_time) + '\n') for i in res: f.write(' '.join(map(str, i.fitness.values))) f.write('\n')
candidates = list() for _ in range(10000): ran_dec = [random.random() for _ in range(model.decsNum)] can = model.Individual(ran_dec) candidates.append(can) global M M = model res = sway(candidates, model.eval, where, comparing) return res if __name__ == '__main__': for repeat in range(1): ii = [0, 1, 2, 3] for i in ii: XOMO_model = pre_defined()[i] start_time = time.time() res = get_sway_res(XOMO_model) finish_time = time.time() print(finish_time - start_time) # save the results with open(request_new_file('./tse_rs/sway', XOMO_model.name), 'w') as f: f.write('T:' + str(start_time) + '\n~~~\n') f.write('T:' + str(finish_time) + '\n') for i in res: f.write(' '.join(map(str, i.fitness.values))) f.write('\n') print('****** ' + str(repeat) + ' ******')
# for l in f: # can = model.Individual(l.strip('\n')) # candidates.append(can) candidates = sat_gen_valid_pop(model, 10000) res = sway(candidates, model.eval, partial(split_products, groupC=min(15, model.featureNum // 7)), comparing) return res if __name__ == '__main__': # models = ['eshop'] #models = [ 'fiasco', 'freebsd', 'linux'] models = ['webportal'] for repeat in range(1): for name in models: print(name) model = DimacsModel(name) start_time = time.time() res = get_sway_res(model) finish_time = time.time() # save the results with open(request_new_file('./tse_rs/sway', name), 'w') as f: f.write('T:' + str(start_time) + '\n~~~\n') f.write('T:' + str(finish_time) + '\n') for i in res: f.write(' '.join(map(str, i.fitness.values))) f.write('\n')
import sys if __name__ == '__main__': # save_stdout = sys.stdout models = ['webportal', 'eshop', 'fiasco', 'freebsd', 'linux'] # models = ['webportal'] # for repeat in range(20): for name in models: fm = DimacsModel(name) start_at = time.time() res = SATIBEA.action(fm) # sys.stdout = save_stdout print(time.time() - start_at) # save the results with open(request_new_file('./tse_rs/satibea', name), 'w') as f: f.write('T:' + str(start_at) + '\n') f.write('~~~\n') for log in res[1]: gen = log['gen'] fitness = log['fitness'] at = log['time'] if fitness == 'pass': continue f.write('T:' + str(at) + '\n') f.write('Gen: ' + str(gen) + '\n') for i in fitness: f.write(' '.join(map(str, i)))
def action(fm): # get the 10k sat solutions def sat_gen_valid_pop(n): pops = list() cnf = copy.deepcopy(fm.cnfs) while len(pops) < n: for index, sol in enumerate(pycosat.itersolve(cnf)): new_ind = fm.Individual(''.join( ['1' if i > 0 else '0' for i in sol])) pops.append(new_ind) if index > 20: break for x in cnf: random.shuffle(x) random.shuffle(cnf) # for c in range(n): # if c % 1 == 0: print(c) # for sol in pycosat.itersolve(cnf): # new_ind = fm.Individual(''.join(['1' if i > 0 else '0' for i in sol])) # print 'x' # # sol = pycosat.solve(cnf, vars=fm.featureNum) # # ground_sol = copy.deepcopy(sol) # if isinstance(sol, list): # new_ind = fm.Individual(''.join(['1' if i > 0 else '0' for i in sol])) # pops.append(new_ind) # cnf.append([-x for x in sol]) # if c % 100 == 0: # for x in cnf: # random.shuffle(x) # random.shuffle(cnf) # else: # break random.shuffle(pops) return pops start_time = time.time() print('start gen ' + fm.name) pops = sat_gen_valid_pop(10000) print('finish gen ' + fm.name) candidates = [fm.Individual(i) for i in pops] # pdb.set_trace() # with open('/Users/jianfeng/Desktop/tse_rs/' + fm.name + '.txt', 'r') as f: # for l in f: # can = fm.Individual(l.strip('\n')) # candidates.append(can) # evaluate all for can in candidates: fm.eval(can) res = emo.sortNondominated(candidates, len(candidates), True) finish_time = time.time() with open(request_new_file('./tse_rs/god', fm.name), 'w') as f: f.write('T:' + str(start_time) + '\n~~~\n') f.write('T:' + str(finish_time) + '\n') for front in res[0]: f.write(' '.join(map(str, front.fitness.values))) f.write('\n') f.write('~~~\n')