the multiprocessing workflows as well as comms pipelines are operational

This commit is contained in:
Remi Ehounou
2021-04-04 23:06:05 -04:00
parent 58030d90ab
commit 46c3d76ef3
2 changed files with 17 additions and 10 deletions

View File

@ -14,8 +14,8 @@ heuristic_name = "SimmulatedAnnealing"
testfunctionpaths = ["/home/remi/Documents/MDAF-GitLAB/SourceCode/TestFunctions/Bukin2.py"] testfunctionpaths = ["/home/remi/Documents/MDAF-GitLAB/SourceCode/TestFunctions/Bukin2.py"]
funcnames = ["Bukin2"] funcnames = ["Bukin2"]
objs = 0 objs = 0
args = {"high": 200, "low": -200, "t": 0.01, "p": 0.8} args = {"high": 200, "low": -200, "t": 100, "p": 0.8}
scale = 62 scale = 3
def doe(heuristicpath, heuristic_name, testfunctionpaths, funcnames, objs, args, scale): def doe(heuristicpath, heuristic_name, testfunctionpaths, funcnames, objs, args, scale):
@ -23,6 +23,7 @@ def doe(heuristicpath, heuristic_name, testfunctionpaths, funcnames, objs, args,
heuristic = importlib.util.module_from_spec(spec) heuristic = importlib.util.module_from_spec(spec)
spec.loader.exec_module(heuristic) spec.loader.exec_module(heuristic)
proc = list() proc = list()
connections = []
#heuristic.MyClass() #heuristic.MyClass()
for idx, funcpath in enumerate(testfunctionpaths): for idx, funcpath in enumerate(testfunctionpaths):
testspec = importlib.util.spec_from_file_location(funcnames[idx], funcpath) testspec = importlib.util.spec_from_file_location(funcnames[idx], funcpath)
@ -30,11 +31,14 @@ def doe(heuristicpath, heuristic_name, testfunctionpaths, funcnames, objs, args,
testspec.loader.exec_module(func) testspec.loader.exec_module(func)
#func.MyClass() #func.MyClass()
initpoint = [r.random() * scale, r.random() * scale] initpoint = [r.random() * scale, r.random() * scale]
proc.append(multiprocessing.Process(target=heuristic.main, name=funcnames[idx], args=(func, objs, initpoint, args))) connections.append(multiprocessing.Pipe())
best = proc[idx].run() proc.append(multiprocessing.Process(target=heuristic.main, name=funcnames[idx], args=(func, objs, initpoint, args, connections[idx][0])))
print("started :" + str(initpoint) + "\nEnded :" + str(best)) responses = []
for idx,process in enumerate(proc):
process.start()
responses.append(connections[idx][1].recv())
print("started :" + str(initpoint) + "\nEnded :" + str(responses[0]))
# simulatedAnnealing(S = [9.00,4.00],y = 0,high = 10,low = -8,t =0.01,p = 0.8)
# proc = subprocess.call(["python", heuristic, "arg-15", "arg2", "argN"])
doe (heuristicpath, heuristic_name, testfunctionpaths, funcnames, objs, args, scale) doe (heuristicpath, heuristic_name, testfunctionpaths, funcnames, objs, args, scale)

View File

@ -28,9 +28,10 @@ def Quality(Sc,objective,func):
error = [func_output[i]-objective[i] for i in range(len(func_output))] error = [func_output[i]-objective[i] for i in range(len(func_output))]
else: else:
error = func_output - objective error = func_output - objective
print("Error is: "+str(error))
return 1/abs(error) return 1/abs(error)
def main(func,obj,S,args): def main(func, obj, S, args, connection):
r.seed(int(time.time())) r.seed(int(time.time()))
route = list() route = list()
#Parsing arguments #Parsing arguments
@ -71,10 +72,12 @@ def main(func,obj,S,args):
route.append(Best[:]) route.append(Best[:])
print(route) print(route)
if t < 0 or Quality(Best,y,func) > 200: if t < 0 or Quality(Best,y,func) > 1000:
break break
#print('the Best Quality obtained was:{}'.format(Quality(Best,y))) #print('the Best Quality obtained was:{}'.format(Quality(Best,y)))
return Best print("Final Quality is: {}".format(Quality(Best,y,func)))
print("final Temperature is: {}".format(t))
connection.send(Best)