From 47f7e5c955503eb8ecd58682903552952293016e Mon Sep 17 00:00:00 2001 From: Stefano Borini <sborini@enthought.com> Date: Fri, 21 Jul 2017 16:35:42 +0100 Subject: [PATCH] Restored functionality of old dummy dakota --- .../dummy/dummy_dakota/dakota_model.py | 3 +- .../dummy/dummy_dakota/dakota_optimizer.py | 35 ++++++++++++++---- .../dummy_mco/dakota/dakota_optimizer.py | 36 +++++-------------- 3 files changed, 39 insertions(+), 35 deletions(-) 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 6515097..f8ab40d 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 e91edb5..3c6abaa 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 485a3d6..0f845ec 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"))) + + -- GitLab