Skip to content
Snippets Groups Projects
Commit 47f7e5c9 authored by Stefano Borini's avatar Stefano Borini
Browse files

Restored functionality of old dummy dakota

parent b591a8e1
No related branches found
No related tags found
1 merge request!45Added support for MCO named parameters.
from traits.api import List, String
from force_bdss.api import BaseMCOModel
class DummyDakotaModel(BaseMCOModel):
pass
value_types = List(String)
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")))
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")))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment