04.04. Networking Friday on Energy Scheduler v2 & Genetic Algorithms

On 4th April we are organizing a Networking Friday on Energy Scheduler v2 & Genetic Algorithms:

Stefan takes a deep dive into the current development around Energy Scheduler v2, Genetic Algorithms and Time-of-Use-Tariff optimization in OpenEMS. This Networking Friday specifically targets software developers in the OpenEMS Community who want to learn more about the software architecture our energy schedules. Stefan is prepared to answer technical details and concepts directly in the source code and in the Eclipse IDE.

Direct link to Airmeet:

https://www.airmeet.com/e/683bee30-08bb-11f0-acbb-8774e9ac85b8

Thank you all for joining today - and sorry for the technical problems.

Here are the slides:

2025-04-04 Networking Friday Energy Scheduler v2.pdf (1.3 MB)

I am looking forward to lively discussions and feedback! :slight_smile:

Regards,
Stefan

1 Like

Hello Stefan, I followed the webinar with interest. Time permitting, I would like to contribute to the project, and I’m specifically interested in the Energy Scheduler v2.
I had some questions that I wanted to ask but didn’t have the time to do it during the call, so I’d like to do it now, hoping not to waste your time (and thanking you again for your helpfulness).

  1. Why does the algorithm determine operating modes instead of actual set-points?
  2. How does the energy scheduler work with multiple controllers?
  3. How are predictions used in the cost calculation?
  4. Where could I start, as a newcomer who only knows how to implement devices (like shown in the documentation), to contribute to the Energy Scheduler development?

Thank you and best regards,
Fabio

Thank you Fabio! I’ll try to answer in a written way. As I have seen a lot of people are interested in the development, maybe we can do more regular actual meetups.

  1. Why does the algorithm determine operating modes instead of actual set-points?

I am attaching my slides of last years OpenEMS Conference, which covered that topic:
2024-11-29 Genetic Algorithms Stefan Feilmeier.pdf (1.4 MB)

That should clarify why we follow the idea of optimizing “modes” and not “set-points”.

  1. How does the energy scheduler work with multiple controllers?

Every Controller that should be “Schedulable” must implement EnergySchedulable.java.

Those are injected to the Optimizer.

The Simulator then calls each of them in order. The call to simulate() takes two adjustable parameters:

  • EnergyFlow (ef) allows adjusting the energy flow of one period, e.g. adding a managed consumption or charge/discharge of energy storage system
  • Fitness: the fitness or cost function
  1. How are predictions used in the cost calculation?

They are not actually used in the cost calculation, but predictions are used in the GlobalOptimizationContext.java as global input for all simulations.

  1. Where could I start, as a newcomer who only knows how to implement devices (like shown in the documentation), to contribute to the Energy Scheduler development?

By solving your own optimization problems, finding implementation problems and bugs on the way and documenting your progress. :slight_smile:

Electric Heaters, Heat-Pumps, etc. could be interesting; but in principle every other Controller is suitable.

There are a few new technologies in OpenEMS linked to this development, e.g.

  • JSCalendar.java for one-time or recurring events. The implementation of the RFC in OpenEMS Edge is incomplete at the moment: RFC 8984: JSCalendar: A JSON Representation of Calendar Data; there is no OpenEMS UI to configure JSCalender events yet.
  • Change from EVCS to EVSE: we are doing a full rewrite of the Electric Vehicle infrastructure. If that applies to you and you have charging station and an EV, that might be a nice project.
  • In OpenEMS UI we are evaluating a new tree-based, multi-level navigation - that is currently only visible with new EVSE. If you are into UI/UX, there is a lot of room for improvements like visualizing the future energy-schedule of a EV, ESS, electric heater,… - or helping with the navigation in general.

Regards,
Stefan