WEBVTT

00:00.000 --> 00:11.600
One, if you don't hear me just give me some indication that I shall speak louder, right?

00:11.600 --> 00:18.000
So my name is Christoph, I'm from the German Aerospace Center, and despite that name we

00:18.000 --> 00:23.440
are actually doing energy research, and I want to present you our electricity market model

00:23.440 --> 00:30.320
Amiris, and Amiris stands for the open agent-based market model for the investigation

00:30.320 --> 00:37.200
of renewable and integrated energy systems, so quite long title, but otherwise we wouldn't

00:37.200 --> 00:41.040
fill in all of the letters that we had before.

00:41.040 --> 00:49.280
So, right, and it's an agent-based market model for the power market, and it models

00:49.280 --> 00:56.160
business oriented decisions for dispatched considering the regulatory framework, and we focus

00:56.160 --> 01:02.240
on renewable energy sources and flexibility options, and as I'm here, this model is completely

01:02.240 --> 01:07.040
open source, you can find it on our GitLab repository.

01:07.040 --> 01:12.160
The key functionality of this model is that we simulate the trading and operation of power

01:12.160 --> 01:15.200
generation plans and flexibility options.

01:15.200 --> 01:21.040
We model from a business oriented perspective, so we model the behavior under uncertainty

01:21.040 --> 01:28.000
of the individual agents with an hourly resolution, or even higher, if you want to, and spatial

01:28.000 --> 01:34.000
resolution of market zones, so for example, your national energy market, but you can

01:34.000 --> 01:38.160
define that at any range that you want to.

01:38.160 --> 01:44.240
And inputs to that model are the power plant capacities, efficiencies, and availability

01:44.240 --> 01:50.400
of these power plants, feeding potentials for renewables, demand, time series, fuel prices,

01:50.400 --> 01:58.480
and CO2 prices, you feed that into amiris, and what you get is electricity prices, CO2 emissions,

01:58.480 --> 02:04.960
system costs for support instruments, for example, the dispatch of the power plans, and

02:04.960 --> 02:09.760
you can derive market values for all of the units in the simulation.

02:10.640 --> 02:16.960
Now, example application of this model is the question to model market dynamics,

02:16.960 --> 02:21.920
so how will electricity prices evolve in different futures scenarios that you can think of?

02:23.280 --> 02:30.240
How support instruments impact the behavior of the agents, if there is enough support for

02:30.240 --> 02:38.880
renewable energy sources, maybe, or even too much, or how to household electricity tariffs,

02:38.880 --> 02:44.560
impact the flexibility level of these households, especially from heat pumps, electric vehicles,

02:44.560 --> 02:50.400
or storage units in that household, for example. So these are example applications that we

02:50.400 --> 02:56.800
applied a year before, we have several other applications as well. Now, as an agent-based model,

02:56.800 --> 03:02.320
the central thing of our model are the agents, right? And we have different types of agent in our

03:02.320 --> 03:09.360
model. Of course, we consider markets, at markets we determine prices for goods. For example,

03:09.360 --> 03:14.400
at the day ahead market, we can determine the electricity price. But we have also other markets

03:14.400 --> 03:20.640
like the fuel market or the CO2 market, which are things are kind of stopped, which will only

03:20.640 --> 03:27.920
feed in the prices that you pre-decided on for the simulation. We have traders that operate on

03:28.000 --> 03:33.760
these markets, they fulfill marketing strategies, so they bid for goods, or they offer goods,

03:33.760 --> 03:42.240
and so we have like supply traders or demand traders. And those will create bits and place them

03:42.240 --> 03:50.480
at the electricity market. Then, once prices are awarded and the bits are awarded, they will feed

03:50.480 --> 03:55.600
back to the power plant operators and they will control the power plants and operate them.

03:56.160 --> 04:04.160
Flexibility providers allow two model electrolysis units, for example, or storage units,

04:04.160 --> 04:10.880
or heat pump units, for example, and they try to minimize the cost, maximize the profit from the

04:10.880 --> 04:17.600
operation, and they need forecasts that we have in our model, and these forecasts are provided

04:17.600 --> 04:26.480
by dedicated forecasting agents. Also, we have explicit consideration of support policies, and for

04:26.480 --> 04:33.920
that we have a support policy agent. Now, you can see how all of these agents interact with each

04:33.920 --> 04:38.480
other. We have different kind of connections between those agents. We have flows of money,

04:38.480 --> 04:44.560
flows of energy, and also flows of information between these different agents, and these then

04:44.560 --> 04:51.360
form the whole simulation. And as a result of these simulations, you can see here,

04:52.320 --> 04:59.360
back testing results, all of the data is open source, open access, so you can download these data

04:59.360 --> 05:04.640
from our example repository, and run the simulation. As you can see here, is electricity time

05:05.520 --> 05:13.200
series over the last over a few weeks in the year 2019 for the German country, and you can see

05:13.200 --> 05:19.360
we achieve quite a good fit for the historical data in gray where our model results are blue.

05:21.920 --> 05:28.720
Now, how do we actually use it? So, I'm here with this kind of simulation written in Java using

05:28.720 --> 05:33.920
the open framework for distributed agent-based modeling of energy systems, also long name,

05:33.920 --> 05:40.400
and it's also developed by us. That's the cost probably, and that's famed for short, in that

05:40.400 --> 05:46.720
case, and here we define a mirror, which then communicates with the input output model written in

05:46.720 --> 05:55.120
Python, which collects your configuration files as yammer standards, puts all your CSV data in there,

05:56.400 --> 06:02.480
makes a binary input file, runs the Java simulation in on one or multiple cores, usually

06:02.480 --> 06:10.160
only use one my laptop, and then you create binary output files, which then are translated into

06:10.480 --> 06:18.480
readable CSV files again using famio. This also completely opensource, so feel free to build your

06:18.480 --> 06:26.320
own models with that framework as well. And for an easy access, we have a Python wrapper for this

06:26.320 --> 06:33.520
ameraspy that can make life way easier. So, if you want to use ameras, it's basically creating

06:33.600 --> 06:40.400
a Python environment running pip install, ameraspy, ameras install will download the whole

06:40.400 --> 06:47.680
model and all of the example files, and then run the model with an amerasrun command and the download

06:47.680 --> 06:52.880
model and the files, and after it maximum five minutes if you have Java and Python already

06:52.880 --> 06:59.200
installed in a system, you will have your first result ready for one of the examples in the

06:59.200 --> 07:07.840
simulation here. If you want to connect your own model, maybe, to our to our mirrors, it's

07:07.840 --> 07:14.400
quite easy. You can we provide a URL model service class within our code that allows easy connection

07:14.400 --> 07:21.920
with your model, basically anything. So, it's an API web API approach, basically, so you can

07:21.920 --> 07:26.880
then web request to your API and interchange data, and if you don't have an API, it's super easy to

07:26.880 --> 07:36.640
set one up. So, you can couple with virtually any model at runtime of the ameras model to your own one,

07:36.640 --> 07:41.280
and we use this a lot if we don't want to code our special code in Java, for example, or we

07:41.280 --> 07:47.760
have a different model in Python or something, then we use this kind of remote call to the

07:47.760 --> 07:54.320
specialized model, and this works quite well. For example, for load shifting optimization or heat

07:54.320 --> 07:59.200
pump operation, we have used this, and we are currently using this also for machine learning

07:59.200 --> 08:07.120
based predictions of the electricity price forecasts. We develop our model as following the

08:07.120 --> 08:12.320
fair for research software principles, so we want to have our model findable, accessible,

08:12.320 --> 08:20.160
interoperable, and reusable. All of these links are under downloadable, can follow all of these links

08:20.240 --> 08:26.800
on the downloads from this presentation, and we also have some external users already, which we are

08:26.800 --> 08:33.520
quite proud of, and if you want to join our community and want to work with us or work with the

08:33.520 --> 08:38.400
model, feel free to do so downloaded use it, and if you have any questions, so any,

08:39.920 --> 08:44.320
not happy with our model and complaints, maybe something like that, feel free to post your

08:44.320 --> 08:51.760
questions or complaints or suggestions at the OpenMot forum, send us an email, or discuss with us

08:51.760 --> 08:57.760
at our open forum that we have every Friday at 10 o'clock, a century European time, and of course,

08:57.760 --> 09:01.520
feel free to raise issues or contribute in our repositories. Thank you.

09:01.760 --> 09:15.040
Thank you. Any questions? Yes.

09:24.320 --> 09:29.040
So in our group, we are doing a lot of research on the integration of renewables, and what you

09:29.040 --> 09:34.720
require support instruments, so we have several research projects where we try to understand

09:34.720 --> 09:39.680
which kind of support instruments that there are, so like feed-in tariffs or market premium

09:39.680 --> 09:47.200
stuff like that, work best for the future, and exactly that, yeah. So, yes?

09:59.040 --> 10:05.760
And then that input is a view of money, which then creates a cut-in electricity, which creates a

10:05.760 --> 10:12.720
mic of use, but in a kind of a cascaded event, because since you have known so close, inflation money,

10:13.280 --> 10:18.400
or some have stopped paying, because of any more money, so then they have electricity, and that

10:18.400 --> 10:26.880
stops the flow of power, so are you interested? So, I try to repeat the question, so you ask if we

10:26.960 --> 10:34.720
kind of model complex spill over effects between the different flows that are presented?

10:38.400 --> 10:48.320
I'd say no. Yeah, so kind of the system that we presented are is kind of static as well, so

10:48.320 --> 10:55.840
the flows in there, you can't change the flows numbers, but not really kind of create new connections

10:55.920 --> 11:00.960
or make a kind of evolving system during this simulation, you would need to do that manually,

11:00.960 --> 11:08.640
probably, right? Thank you.

