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