sys.argv.append("out") sys.argv.append(16) sys.argv.append(4) sys.argv.append("recordpointfile") ######################## constraint_index = int(sys.argv[5]) recordpointfile = sys.argv[6] experiment = sys.argv[1] file_ext = str(int(math.log(int(sys.argv[4]),2))) outfile=sys.argv[3] infilename = sys.argv[2] ######################## if experiment == "SHP": from Z3ModelEShopUpdate import * INPUT = SHP_Min setRecordPoint(True) elif experiment == "WPT": from Z3ModelWebPortalUpdate import * INPUT = WPT_Min elif experiment == "ERS": from Z3ModelEmergencyResponseUpdate import * INPUT = ERS_Min cons = getConstraintFromFile(INPUT.s, infilename, constraint_index) INPUT.s.add(cons) ######################## GIAOptionsNP = GuidedImprovementAlgorithmOptions(verbosity=0, \ incrementallyWriteLog=False, \ writeTotalTimeFilename="timefile.csv", \ writeRandomSeedsFilename="randomseed.csv", useCallLogs=False)
def _single_test(repeat=0): experiment = sys.argv[1] problem = None if experiment == "SHP": INPUT = SHP_Min setRecordPoint(True) return elif experiment == "WPT": INPUT = WPT_Min problem = WebPortal() elif experiment == "ERS": INPUT = ERS_Min problem = EmergencyResponse() else: return num_consumers = int(str(sys.argv[3]).strip()) solvers = replicateSolver(INPUT.s, num_consumers) outputFileParentName = str(sys.argv[2]).strip() # Establish communication queues mgr = multiprocessing.Manager() taskQueue = [] for i in xrange(num_consumers): taskQueue.append(mgr.Queue()) ParetoFront = mgr.Queue() totalTime = mgr.Queue() # Enqueue initial tasks for i in xrange(num_consumers): taskQueue[i].put("Task") # Start consumers consumersList = [ Consumer(taskQueue, ParetoFront, totalTime, i, outputFileParentName, num_consumers, solvers[i], INPUT) for i in xrange(num_consumers)] starttime = time.time() for w in consumersList: w.start() for w in consumersList: w.join() runningtime = 0.0 while totalTime.qsize() > 0: ttime = totalTime.get() if (float(ttime) < runningtime): runningtime = float(ttime) endtime = time.time() TotalOverlappingParetoFront = ParetoFront.qsize() pf = [] while not ParetoFront.empty(): pf.append(ParetoFront.get()) pf = problem.convert_to_points(pf) pf = sel_nsga2(problem, pf, Cons.default_settings().GALE_pop_size) new_dir = mkdir("results/"+str(datetime.date.today())+"/") outputFileParent = open(new_dir+str(outputFileParentName+'.csv'), 'a') try: # keep a zero position for the same merging program as opGIA # in fact, here zero should be 356, as we already check it using the above code outputFileParent.writelines(str(num_consumers) + ',' + str(TotalOverlappingParetoFront) +',' + '0' + ',' + str(endtime - starttime) + '\n') finally: outputFileParent.close() obj_file = mkdir(new_dir+"/repeat_"+str(repeat)+"/") + str(outputFileParentName)+"_"+str(num_consumers)+"_objs" write_objs([one.objectives for one in pf], obj_file)