diff --git a/README.md b/README.md index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..68e6a408d871425da72d2320d1bf8ee666f18e57 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,8 @@ +FORCE BDSS +---------- + +This repository contains the implementation of the Business Decision System. It is implemented +under the FORCE project (Horizon 2020/NMBP-23-2016/721027). + + + diff --git a/braindump/main.py b/braindump/main.py index cbac2019f5f7dbf3f3277a66506c251f56e877f4..a61d6a00c4e4b9534c8375c5ecdf4fa738d95930 100644 --- a/braindump/main.py +++ b/braindump/main.py @@ -1,4 +1,4 @@ -from force import * +from force_bdss import * wf=Workflow() wf.set_mco(Dakota()) diff --git a/force/__init__.py b/force_bdss/__init__.py similarity index 100% rename from force/__init__.py rename to force_bdss/__init__.py diff --git a/force_bdss/application.py b/force_bdss/application.py new file mode 100644 index 0000000000000000000000000000000000000000..d0fef517e0b521c07420500cb6a4d245b374316c --- /dev/null +++ b/force_bdss/application.py @@ -0,0 +1,25 @@ +# Enthought library imports. +from envisage.api import Application + + +# Application entry point. +from force_bdss.multi_criteria_optimizers_plugin import \ + MultiCriteriaOptimizersPlugin +from force_bdss.workflow_plugin import WorkflowPlugin +from force_bdss.key_performance_calculators_plugin import \ + KeyPerformanceCalculatorsPlugin + + +def run(): + + application = Application( + id='force', + plugins=[ + WorkflowPlugin(), + MultiCriteriaOptimizersPlugin(), + KeyPerformanceCalculatorsPlugin(), + ] + ) + + # Run it! + application.run() diff --git a/force_bdss/basic_key_performance_calculator.py b/force_bdss/basic_key_performance_calculator.py new file mode 100644 index 0000000000000000000000000000000000000000..30d8a7650a5945e31b2577912d2e750713bd0f6e --- /dev/null +++ b/force_bdss/basic_key_performance_calculator.py @@ -0,0 +1,9 @@ +from traits.api import provides, HasStrictTraits + +from force_bdss.i_key_performance_calculator import IKeyPerformanceCalculator + + +@provides(IKeyPerformanceCalculator) +class BasicKeyPerformanceCalculator(HasStrictTraits): + def run(self): + print("Computing basic key performance indicator") diff --git a/force_bdss/basic_multi_criteria_optimizer.py b/force_bdss/basic_multi_criteria_optimizer.py new file mode 100644 index 0000000000000000000000000000000000000000..740c6aa6ee6edfb8d28d9e33b36571f0464a1a44 --- /dev/null +++ b/force_bdss/basic_multi_criteria_optimizer.py @@ -0,0 +1,9 @@ +from traits.api import provides, HasStrictTraits + +from force_bdss.i_multi_criteria_optimizers import IMultiCriteriaOptimizer + + +@provides(IMultiCriteriaOptimizer) +class BasicMultiCriteriaOptimizer(HasStrictTraits): + def run(self): + print("Basic multicriteria optimizer in action") diff --git a/force_bdss/i_key_performance_calculator.py b/force_bdss/i_key_performance_calculator.py new file mode 100644 index 0000000000000000000000000000000000000000..8ad12ca9a6ac879a19d56791e79f5b4a60087645 --- /dev/null +++ b/force_bdss/i_key_performance_calculator.py @@ -0,0 +1,6 @@ +from traits.api import Interface + + +class IKeyPerformanceCalculator(Interface): + def run(self): + pass diff --git a/force_bdss/i_multi_criteria_optimizers.py b/force_bdss/i_multi_criteria_optimizers.py new file mode 100644 index 0000000000000000000000000000000000000000..a04bf6be6409133ece307b14916bcdcddba94d11 --- /dev/null +++ b/force_bdss/i_multi_criteria_optimizers.py @@ -0,0 +1,6 @@ +from traits.api import Interface + + +class IMultiCriteriaOptimizer(Interface): + def run(self): + pass diff --git a/force_bdss/key_performance_calculators_plugin.py b/force_bdss/key_performance_calculators_plugin.py new file mode 100644 index 0000000000000000000000000000000000000000..082af87fa08bf826f7322f23993bc68c735dca63 --- /dev/null +++ b/force_bdss/key_performance_calculators_plugin.py @@ -0,0 +1,19 @@ +from traits.api import List +from envisage.plugin import Plugin + +from force_bdss.basic_key_performance_calculator import \ + BasicKeyPerformanceCalculator +from force_bdss.i_key_performance_calculator import IKeyPerformanceCalculator + + +class KeyPerformanceCalculatorsPlugin(Plugin): + + id = "force_bdss.key_performance_calculators_plugin" + + key_performance_calculators = List( + IKeyPerformanceCalculator, + contributes_to='force_bdss.key_performance_calculators' + ) + + def _key_performance_calculators_default(self): + return [BasicKeyPerformanceCalculator()] diff --git a/force_bdss/multi_criteria_optimizers_plugin.py b/force_bdss/multi_criteria_optimizers_plugin.py new file mode 100644 index 0000000000000000000000000000000000000000..a815cd1f9f3f959b6aa33f482d30c5f9a9f97be5 --- /dev/null +++ b/force_bdss/multi_criteria_optimizers_plugin.py @@ -0,0 +1,19 @@ +from traits.api import List +from envisage.plugin import Plugin + +from force_bdss.basic_multi_criteria_optimizer import \ + BasicMultiCriteriaOptimizer +from force_bdss.i_multi_criteria_optimizers import IMultiCriteriaOptimizer + + +class MultiCriteriaOptimizersPlugin(Plugin): + + id = "force_bdss.multi_criteria_optimizers_plugin" + + multi_criteria_optimizers = List( + IMultiCriteriaOptimizer, + contributes_to='force_bdss.multi_criteria_optimizers' + ) + + def _multi_criteria_optimizers_default(self): + return [BasicMultiCriteriaOptimizer()] diff --git a/force_bdss/workflow_plugin.py b/force_bdss/workflow_plugin.py new file mode 100644 index 0000000000000000000000000000000000000000..75e898c1737bc49d6a5a50b516de53f380686565 --- /dev/null +++ b/force_bdss/workflow_plugin.py @@ -0,0 +1,27 @@ +from envisage.extension_point import ExtensionPoint +from traits.api import List +from envisage.plugin import Plugin +from traits.api import on_trait_change + +from force_bdss.i_key_performance_calculator import IKeyPerformanceCalculator +from force_bdss.i_multi_criteria_optimizers import IMultiCriteriaOptimizer + + +class WorkflowPlugin(Plugin): + + id = "force_bdss.workflow_plugin" + + key_performance_calculators = ExtensionPoint( + List(IKeyPerformanceCalculator), + id='force_bdss.key_performance_calculators') + + multi_criteria_optimizers = ExtensionPoint( + List(IMultiCriteriaOptimizer), + id='force_bdss.multi_criteria_optimizers') + + @on_trait_change("application:started") + def application_started(self): + for mco in self.multi_criteria_optimizers: + mco.run() + for kpc in self.key_performance_calculators: + kpc.run() diff --git a/setup.py b/setup.py index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..dcce0668a7ffaef86207222a820a185662067f19 100644 --- a/setup.py +++ b/setup.py @@ -0,0 +1,15 @@ +from setuptools import setup + +VERSION="0.1.0.dev0" + +setup( + name="force_bdss", + version=VERSION, + entry_points={ + 'console_scripts': [ + 'force_bdss = force_bdss.application:run', + ]}, + install_requires=[ + "envisage >= 4.6.0" + ] +)