mirror of
https://github.com/ejeanboris/MDAF.git
synced 2025-12-14 20:48:14 +00:00
67 lines
2.6 KiB
Python
67 lines
2.6 KiB
Python
# directly running the DOE because existing surrogates can be explored with another workflow
|
|
|
|
from numpy import random as r
|
|
import time
|
|
import importlib.util
|
|
import multiprocessing
|
|
|
|
|
|
|
|
# initialise the logic helpers
|
|
r.seed(int(time.time()))
|
|
|
|
heuristicpath = "/home/remi/Documents/MDAF-GitLAB/SourceCode/SampleAlgorithms/SimmulatedAnnealing.py"
|
|
heuristic_name = "SimmulatedAnnealing"
|
|
testfunctionpaths = ["/home/remi/Documents/MDAF-GitLAB/SourceCode/TestFunctions/Bukin2.py", "/home/remi/Documents/MDAF-GitLAB/SourceCode/TestFunctions/Bukin4.py", "/home/remi/Documents/MDAF-GitLAB/SourceCode/TestFunctions/Brown.py"]
|
|
funcnames = ["Bukin2", "Bukin4", "Brown"]
|
|
# testfunctionpaths = ["/home/remi/Documents/MDAF-GitLAB/SourceCode/TestFunctions/Brown.py"]
|
|
# funcnames = ["Brown"]
|
|
|
|
objs = 0
|
|
args = {"high": 200, "low": -200, "t": 1000, "p": 0.95}
|
|
scale = 2.5
|
|
|
|
|
|
def doe(heuristicpath, heuristic_name, testfunctionpaths, funcnames, objs, args, scale):
|
|
spec = importlib.util.spec_from_file_location(heuristic_name, heuristicpath)
|
|
heuristic = importlib.util.module_from_spec(spec)
|
|
spec.loader.exec_module(heuristic)
|
|
proc = list()
|
|
connections = []
|
|
#heuristic.MyClass()
|
|
for idx, funcpath in enumerate(testfunctionpaths):
|
|
testspec = importlib.util.spec_from_file_location(funcnames[idx], funcpath)
|
|
func = importlib.util.module_from_spec(testspec)
|
|
testspec.loader.exec_module(func)
|
|
#func.MyClass()
|
|
initpoint = [r.random() * scale, r.random() * scale]
|
|
connections.append(multiprocessing.Pipe(duplex=False))
|
|
proc.append(multiprocessing.Process(target=heuristic.main, name=funcnames[idx], args=(func, objs, initpoint, args, connections[idx][1])))
|
|
|
|
|
|
responses = []
|
|
failedfunctions = []
|
|
processtiming = []
|
|
|
|
for idx,process in enumerate(proc):
|
|
# processtiming.append(time.tic())
|
|
process.start()
|
|
# connections[idx][1].close()
|
|
|
|
# Waiting for all the runs to be done
|
|
for process in proc: process.join()
|
|
|
|
for idx,conn in enumerate(connections):
|
|
if proc[idx].exitcode == 0: responses.append(conn[0].recv())
|
|
else:
|
|
responses.append("this run was mot successful")
|
|
failedfunctions.append((funcnames[idx], proc[idx].exitcode))
|
|
conn[0].close()
|
|
conn[1].close()
|
|
|
|
# display output
|
|
print("\n\n||||| Responses |||||")
|
|
for idx,response in enumerate(responses): print(funcnames[idx] + "____\n" + "started :" + str(initpoint) + "\nEnded :" + str(responses[idx]) + "\n_________________")
|
|
|
|
|
|
doe (heuristicpath, heuristic_name, testfunctionpaths, funcnames, objs, args, scale) |