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

Added bundle for dakota and basic MCOs

parent 62426ce2
No related branches found
No related tags found
1 merge request!5Introducing bundles
import abc
class BaseMultiCriteriaOptimizer(metaclass=abc.ABCMeta):
def __init__(self, bundle, application, model):
self.bundle = bundle
self.application = application
self.model = model
@property
def name(self):
return self.bundle.name
@abc.abstractmethod
def run(self):
pass
import subprocess
import sys
from traits.api import provides, HasStrictTraits, String
from force_bdss.mco.i_multi_criteria_optimizers import IMultiCriteriaOptimizer
@provides(IMultiCriteriaOptimizer)
class Basic(HasStrictTraits):
name = String("basic")
def run(self, application):
print("Running Basic optimizer")
subprocess.check_call([sys.argv[0], "--evaluate",
application.workflow_filepath])
from traits.has_traits import HasStrictTraits, provides
from .i_multi_criteria_optimizer_bundle import IMultiCriteriaOptimizerBundle
from .basic_model import BasicModel
from .basic_optimizer import BasicOptimizer
@provides(IMultiCriteriaOptimizerBundle)
class BasicBundle(HasStrictTraits):
def create_model(self, model_data):
return BasicModel.from_json(model_data)
def create_ui(self):
pass
def create_optimizer(self, application, model):
return BasicOptimizer(self, application, model)
from traits.has_traits import HasStrictTraits
class BasicModel(HasStrictTraits):
@classmethod
def from_json(cls, model_data):
return cls()
import subprocess
import sys
from force_bdss.mco.base_multi_criteria_optimizer import \
BaseMultiCriteriaOptimizer
class BasicOptimizer(BaseMultiCriteriaOptimizer):
def run(self):
print("Running Basic optimizer")
subprocess.check_call([sys.argv[0], "--evaluate",
self.application.workflow_filepath])
import subprocess
import sys
from traits.api import provides, HasStrictTraits, String
from force_bdss.mco.i_multi_criteria_optimizers import IMultiCriteriaOptimizer
@provides(IMultiCriteriaOptimizer)
class Dakota(HasStrictTraits):
name = String("dakota")
def run(self, application):
print("Running dakota optimizer")
subprocess.check_call([sys.argv[0], "--evaluate",
application.workflow_filepath])
from traits.has_traits import HasStrictTraits, provides
from force_bdss.mco.dakota_optimizer import DakotaOptimizer
from force_bdss.mco.dakota_model import DakotaModel
from .i_multi_criteria_optimizer_bundle import IMultiCriteriaOptimizerBundle
@provides(IMultiCriteriaOptimizerBundle)
class DakotaBundle(HasStrictTraits):
def create_model(self, model_data):
return DakotaModel.from_json(model_data)
def create_ui(self):
pass
def create_optimizer(self, application, model):
return DakotaOptimizer(self, application, model)
from traits.has_traits import HasStrictTraits
class DakotaModel(HasStrictTraits):
@classmethod
def from_json(cls, model_data):
return cls()
import subprocess
import sys
from force_bdss.mco.base_multi_criteria_optimizer import \
BaseMultiCriteriaOptimizer
class DakotaOptimizer(BaseMultiCriteriaOptimizer):
def run(self):
print("Running dakota optimizer")
subprocess.check_call([sys.argv[0], "--evaluate",
self.application.workflow_filepath])
from traits.api import Interface, String
class IMultiCriteriaOptimizerBundle(Interface):
name = String()
def create_optimizer(self, application, model):
pass
def create_ui(self):
pass
def create_model(self, model_data):
pass
from traits.api import Interface, String
class IMultiCriteriaOptimizer(Interface):
name = String()
def run(self, application):
pass
from envisage.plugin import Plugin from envisage.plugin import Plugin
from traits.api import List from traits.api import List
from force_bdss.mco.basic import Basic from .i_multi_criteria_optimizer_bundle import (
from force_bdss.mco.dakota import Dakota IMultiCriteriaOptimizerBundle)
from force_bdss.mco.i_multi_criteria_optimizers import IMultiCriteriaOptimizer from .dakota_bundle import DakotaBundle
from .basic_bundle import BasicBundle
class MultiCriteriaOptimizersPlugin(Plugin): class MultiCriteriaOptimizersPlugin(Plugin):
id = "force_bdss.multi_criteria_optimizers_plugin" id = "force.bdss.mco.plugins.multi_criteria_optimizers_plugin"
multi_criteria_optimizers = List( multi_criteria_optimizers = List(
IMultiCriteriaOptimizer, IMultiCriteriaOptimizerBundle,
contributes_to='force_bdss.multi_criteria_optimizers' contributes_to='force.bdss.mco.bundles'
) )
def _multi_criteria_optimizers_default(self): def _multi_criteria_optimizers_default(self):
return [Basic(), Dakota()] return [BasicBundle(), DakotaBundle()]
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