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 from force_bdss.api import BaseMCOModel
class DummyDakotaModel(BaseMCOModel): class DummyDakotaModel(BaseMCOModel):
pass value_types = List(String)
import subprocess import subprocess
import sys import sys
import itertools
import collections
from force_bdss.api import BaseMultiCriteriaOptimizer 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): def run(self):
print("Running dakota optimizer") parameters = self.model.parameters
for initial_value in range(10):
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( ps = subprocess.Popen(
[sys.argv[0], [sys.argv[0],
"--evaluate", "--evaluate",
...@@ -16,5 +37,7 @@ class DummyDakotaOptimizer(BaseMultiCriteriaOptimizer): ...@@ -16,5 +37,7 @@ class DummyDakotaOptimizer(BaseMultiCriteriaOptimizer):
stdout=subprocess.PIPE, stdout=subprocess.PIPE,
stdin=subprocess.PIPE) stdin=subprocess.PIPE)
out = ps.communicate("{}".format(initial_value).encode("utf-8")) out = ps.communicate(
print("{}: {}".format(initial_value, out[0].decode("utf-8"))) " ".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 subprocess
import sys import sys
import itertools
import collections
from force_bdss.api import BaseMultiCriteriaOptimizer from force_bdss.api import BaseMultiCriteriaOptimizer
def rotated_range(start, stop, starting_value): class DummyDakotaOptimizer(BaseMultiCriteriaOptimizer):
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): def run(self):
parameters = self.model.parameters print("Running dakota optimizer")
for initial_value in range(10):
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( ps = subprocess.Popen(
[sys.argv[0], [sys.argv[0],
"--evaluate", "--evaluate",
...@@ -36,7 +16,7 @@ class DakotaOptimizer(BaseMultiCriteriaOptimizer): ...@@ -36,7 +16,7 @@ class DakotaOptimizer(BaseMultiCriteriaOptimizer):
stdout=subprocess.PIPE, stdout=subprocess.PIPE,
stdin=subprocess.PIPE) stdin=subprocess.PIPE)
out = ps.communicate( out = ps.communicate("{}".format(initial_value).encode("utf-8"))
" ".join([str(v) for v in value]).encode("utf-8")) print("{}: {}".format(initial_value, out[0].decode("utf-8")))
print("{}: {}".format(" ".join([str(v) for v in 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