diff --git a/force_bdss/core_plugins/dummy/dummy_dakota/dakota_model.py b/force_bdss/core_plugins/dummy/dummy_dakota/dakota_model.py index 65150979e82bf7dfe79074baf5f978053a23ef1b..f8ab40d3395e9923654779e2245b21354a7c1125 100644 --- a/force_bdss/core_plugins/dummy/dummy_dakota/dakota_model.py +++ b/force_bdss/core_plugins/dummy/dummy_dakota/dakota_model.py @@ -1,5 +1,6 @@ +from traits.api import List, String from force_bdss.api import BaseMCOModel class DummyDakotaModel(BaseMCOModel): - pass + value_types = List(String) diff --git a/force_bdss/core_plugins/dummy/dummy_dakota/dakota_optimizer.py b/force_bdss/core_plugins/dummy/dummy_dakota/dakota_optimizer.py index e91edb5b3146f94c3b30cc2eb79ac0f7d70c3ba5..3c6abaaacbd3389e0e2ebfb69bb301ef97f47f26 100644 --- a/force_bdss/core_plugins/dummy/dummy_dakota/dakota_optimizer.py +++ b/force_bdss/core_plugins/dummy/dummy_dakota/dakota_optimizer.py @@ -1,14 +1,35 @@ import subprocess - import sys +import itertools +import collections from force_bdss.api import BaseMultiCriteriaOptimizer -class DummyDakotaOptimizer(BaseMultiCriteriaOptimizer): +def rotated_range(start, stop, starting_value): + r = list(range(start, stop)) + start_idx = r.index(starting_value) + d = collections.deque(r) + d.rotate(-start_idx) + return list(d) + + +class DakotaOptimizer(BaseMultiCriteriaOptimizer): + def run(self): - print("Running dakota optimizer") - for initial_value in range(10): + parameters = self.model.parameters + + values = [] + for p in parameters: + values.append( + rotated_range(p.lower_bound, + p.upper_bound, + p.initial_value) + ) + + value_iterator = itertools.product(*values) + + for value in value_iterator: ps = subprocess.Popen( [sys.argv[0], "--evaluate", @@ -16,5 +37,7 @@ class DummyDakotaOptimizer(BaseMultiCriteriaOptimizer): stdout=subprocess.PIPE, stdin=subprocess.PIPE) - out = ps.communicate("{}".format(initial_value).encode("utf-8")) - print("{}: {}".format(initial_value, out[0].decode("utf-8"))) + out = ps.communicate( + " ".join([str(v) for v in value]).encode("utf-8")) + print("{}: {}".format(" ".join([str(v) for v in value]), + out[0].decode("utf-8"))) diff --git a/force_bdss/core_plugins/dummy_mco/dakota/dakota_optimizer.py b/force_bdss/core_plugins/dummy_mco/dakota/dakota_optimizer.py index 485a3d6531432c6fa89c34e47c6dc065903717d1..0f845ecc6dc8757780272340ac564661ec8641d2 100644 --- a/force_bdss/core_plugins/dummy_mco/dakota/dakota_optimizer.py +++ b/force_bdss/core_plugins/dummy_mco/dakota/dakota_optimizer.py @@ -1,34 +1,14 @@ import subprocess + import sys -import itertools -import collections from force_bdss.api import BaseMultiCriteriaOptimizer -def rotated_range(start, stop, starting_value): - r = list(range(start, stop)) - start_idx = r.index(starting_value) - d = collections.deque(r) - d.rotate(-start_idx) - return list(d) - - -class DakotaOptimizer(BaseMultiCriteriaOptimizer): +class DummyDakotaOptimizer(BaseMultiCriteriaOptimizer): def run(self): - parameters = self.model.parameters - - values = [] - for p in parameters: - values.append( - rotated_range(p.lower_bound, - p.upper_bound, - p.initial_value) - ) - - value_iterator = itertools.product(*values) - - for value in value_iterator: + print("Running dakota optimizer") + for initial_value in range(10): ps = subprocess.Popen( [sys.argv[0], "--evaluate", @@ -36,7 +16,7 @@ class DakotaOptimizer(BaseMultiCriteriaOptimizer): stdout=subprocess.PIPE, stdin=subprocess.PIPE) - out = ps.communicate( - " ".join([str(v) for v in value]).encode("utf-8")) - print("{}: {}".format(" ".join([str(v) for v in value]), - out[0].decode("utf-8"))) + out = ps.communicate("{}".format(initial_value).encode("utf-8")) + print("{}: {}".format(initial_value, out[0].decode("utf-8"))) + +