Modelling direct marketing with oemof


I’m currently writing a Master Thesis which deals with the optimization of power flows in virtual power plants.
I’m now trying to use oemof to create a dispatch timetable for a given virtual power plant in a distribution grid. I’d like to have this timetable express when to charge or discharge a battery, when to run the CHP and when to buy/sell electricity through direct marketing to gain maximum profit. Is this actually possible with this framework?
If yes, how can I model direct marketing with it? I tried defining it as a Sink for selling while using price-timelines as variable costs, but this is not working as intended.

I hope someone can help, thanks in advance!


Hi Steve, welcome to the oemof community.

Could you specify “not working as intended”, because how I understand direct marketing I would also use a sink.

Thank you :slight_smile:
I don’t know how to properly set the parameters of this. What should I set for nominal value for example? Same thing is for bought electricity from the grid - I want the system to yield maximum profit in a certain timeframe. I have the loadshapes of all components (baseload_el, baseload_th, PV, wind) and try to find the optimal operating strategy for CHP, heatpump and batteries.
Is there a way I can get this from the model?

If I’m using the summed_max attribute of a sink it results in way too high values for the flows of the sold electricity for example.

I really just want to know if working with this framework is the right approach for my task. Or am I on the wrong track?

Hi @steve,

I already replied to your mail. To get everyone informed, I post our mail conversation

Hallo Herr Pleßmann,

mein Name ist Steven Kaimonoff und ich schreibe grade meine Masterarbeit zur Optimierung von Lastflüssen in einem virtuellen Kraftwerk.

Nun bin ich bei meinen Recherchen auf das Framework oemof gestoßen welches Sie ja mitbetreuen.

Im Rahmen meiner Arbeit soll ich für ein virtuelles Kraftwerk, in dem sich PV-Anlagen, Windräder, BHKWs, Wärmepumpen, Batteriespeicher etc. befinden, einen optimalen Fahrplan ermitteln.

D.h. zum Beispiel: wann wird der Energiespeicher geladen? Wann wird Energie in die Batteriespeicher eingespeichtert und wann ausgespeichert?

Das alles soll unter dem Gesichtspunkt von maximalem Erlös durch direktvermarktetem Strom erfolgen.

Ist solch eine Fahrplanerstellung mit oemof in diesem Rahmen überhaupt möglich? Können solche binären Zustände wie Einspeichern/Ausspeichern überhaupt berechnet und dargestellt werden? Wenn ja, wie kann ich die Direktvermarktung im Modell darstellen? Ich möchte Strompreiszeitreihen der Bundesnetzagentur verwenden.

Viele Fragen auf einmal ich weiß, aber ich hoffe, Sie können mir weiterhelfen!

Vielen Dank im Voraus und viele Grüße,

Steven Kaimonoff

Hallo Herr Kaimonoff,

freut mich zu hören, das Sie oemof für ihre Arbeit verwenden wollen!

Das virtuelle Kraftwerk mit oemof.solph abzubilden sollte kein Problem darstellen. Schauen Sie sich die Beispiele an:

Dort sollten Sie ausreichend Inspiration bekommen, so dass sie ihr Modell erstellen können.

Bezüglich der Modellierung der Direktvermarktung muss man dann wohl ein MILP Modell formulieren. Geht aber auch mit oemof.solph. Man sollte sich nur über die wesentlicher höhere Komplexität eines MI(L)P Modells im Klaren sein.

Da wollte ich Ihnen gerade das Forum ans Herz legen und sehe, dass sie dort schon gepostet haben: Modelling direct marketing with oemof

Bei solchen Cross-Postings, geben Sie bitte jeweils die Links an. Dann wird der Gesamtaufwand für uns oemof developer geringer. Ich sehe, Sie sind mit Uwe Krien im Austausch. Da haben Sie einen kompetenten Ansprechpartner!

Besten Grüße

Guido Pleßmann

You should, we are short on time. Often we provide help to oemof newbies in our free time. So, if you make it as easy as possible to answer your questions, chances of getting help are more likely. Therefore, please

  • Provide a mathematical formulation of your modelling approach
  • Provide the code, i.e. on
  • Phrase the questions as specific as possible

Looking forward to help you building your model!

Thank you for your reply!
I already checked the examples but couldn’t find anything which resembles a direct marketing approach or let alone a MILP problem, that’s why I had to ask! Maybe someone has a code example or some literature?

Thanks in advance!

True, an example of direct marketing is not included in the examples. Maybe it was never with oemof.solph. I’d suggest to abstract your problem a bit and ask yourself “what does direct marketing by responding to a market price signal mean more generalized”. Quick answer: the virtual power plant should sell electricity if the electricity price reaches a certain limit.
Then, start reading how MI(L)P modelling works and write down the equations/inequations in plain math (you’ll need it for your thesis anyway!).

Next, check
This will tell you which MILP capabilities are provided by oemof.solph.
It is possible that these are not sufficient. No worries, it’s always possible to manipulate the model through using pyomo directly.

Thank you for your help! I’m getting there! :slight_smile: