Giter Club home page Giter Club logo

openempire's People

Contributors

chriska85 avatar goggien avatar stianbacke avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

openempire's Issues

Index problem with Pyomo

8): 68422.0, ('France', 719, 'scenario5', 8): 67613.0, ('France',
720, 'scenario5', 8): 69987.0} failed: RuntimeError: Failed to set value for
param=sloadRaw, index=('Germany', 1, 'scenario1', 4), value=57195.1825.
source error message="Index '('Germany', 1, 'scenario1', 4)' is not
valid for indexed component 'sloadRaw'"
Traceback (most recent call last):

File ~\anaconda3\lib\site-packages\pyomo\core\base\param.py:808 in construct
self._setitem_when_not_present(self._validate_index(key), val)

File ~\anaconda3\lib\site-packages\pyomo\core\base\indexed_component.py:874 in _validate_index
raise KeyError(

KeyError: "Index '('Germany', 1, 'scenario1', 4)' is not valid for indexed component 'sloadRaw'"

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

File ~\anaconda3\lib\site-packages\spyder_kernels\py3compat.py:356 in compat_exec
exec(code, globals, locals)

File c:\users\lothar\documents\github\openempire\run.py:122
run_empire(name = name,

File ~\Documents\GitHub\OpenEMPIRE\Empire.py:755 in run_empire
instance = model.create_instance(data) #, report_timing=True)

File ~\anaconda3\lib\site-packages\pyomo\core\base\PyomoModel.py:734 in create_instance
instance.load(data, namespaces=_namespaces, profile_memory=profile_memory)

File ~\anaconda3\lib\site-packages\pyomo\core\base\PyomoModel.py:771 in load
self._load_model_data(dp, namespaces, profile_memory=profile_memory)

File ~\anaconda3\lib\site-packages\pyomo\core\base\PyomoModel.py:823 in _load_model_data
self._initialize_component(

File ~\anaconda3\lib\site-packages\pyomo\core\base\PyomoModel.py:871 in _initialize_component
declaration.construct(data)

File ~\anaconda3\lib\site-packages\pyomo\core\base\param.py:811 in construct
raise RuntimeError(

RuntimeError: Failed to set value for param=sloadRaw, index=('Germany', 1, 'scenario1', 4), value=57195.1825.
source error message="Index '('Germany', 1, 'scenario1', 4)' is not valid for indexed component 'sloadRaw'"

Configure continuous integration testing of OpenEMPIRE

To enhance software quality and rule out problems with commits to the master branch the project should be setup with a continuous integration system to test changes that are push to the central repository,

A prerequisite would be to setup an optimization instance that can be run smoothly without the use of a commercial solver as this would be difficult to use with the relevant CI services due to licensing. The instance "test" can be a good candidate for this.

Possible CI options are either Github Actions or Travis

Move documentation to a system that allows source control

The current documentation practice, writing the documentation in a MS word file and converting to a pdf, does not allow for proper source control and may prohibit (or at least complicate) community contributions.

The documentation should be moved to a system that better allows source control, such as sphinx or readthedocs.

Review possible run-time configuration parameters to add to config_run.yaml

In the current version of OpenEMPIRE the config_run.yaml file only includes a hand-full of the possible configurations one can imagine using for optimization runs. As of now the user has to interact with the model through the excel input files to run sensitivity analysis, however, some configurations (e.g. enabling/disabling technologies for investment and level of transmission expansion permitted) could easily be changed upon run-time if the configuration file allowed.

Also, more general settings could be added to config_run.yaml,, e.g. optimization solver settings and log level which are currently hardcoded in Empire.py.

We should review and restructure the files config_run.yaml, run.py and Empire.py to improve flexibility in model run.

Split `run_empire` in `Empire.py` into several functions

Currently the full EMPIRE model setup and solution is handled in a single function run_empire in Empire.py. There are a number of ways to split it up into several more specialized functions which can be called from the main run_empire function. The advantage would firstly be improved code readability as it would be clearer which parts are sort of self-contained. Secondly, it would be possible to write unit tests for the individual functions which can be run in a continuous integration framework.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.