Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Open Energy Modeling at JuMP-dev 2024 #156

Merged
merged 25 commits into from
Sep 20, 2024
Merged

Add Open Energy Modeling at JuMP-dev 2024 #156

merged 25 commits into from
Sep 20, 2024

Conversation

odow
Copy link
Member

@odow odow commented Sep 5, 2024

This is part of a deliverable for #154, so we can wait until that is announced before merging.

I haven't finished yet, but I'll ping @datejada, @trulsf, @jd-lara and @hellemo for initial feedback (if you are interested/have time).

Other talks to include:

Maybe others?

@datejada
Copy link

datejada commented Sep 5, 2024

@odow Thanks for the comprehensive summary of our talks from TNO. We learned a lot from the JuMP-dev workshop and were happy to participate and contribute.

@odow
Copy link
Member Author

odow commented Sep 5, 2024

Thanks! Did I miss (or mis-interpret) anything in your talk? I've sent you a calendar invite for a regular call series I'm starting up as it relates to #154. But it's at a pretty terrible time for you, so once we have something concrete to discuss, we could always schedule something at a more convenient time.

@trulsf
Copy link

trulsf commented Sep 5, 2024

Very good summaries! Regarding PiecewiseAffineApprox, we took a lot of inspiration from PiecewiseLinearOpt. Our focus was more on finding good convex piecewise approximation to data points (where you not necessarily have access to the function or the gradients). This was not covered by PiecewiseLinearOpt so we made our own package, but I think it would make sense to combine these features into a single package. We have plans to extend our work from only convex approximations to approximation of general function (similar to Kazda & Li, 2024). Then it would make even more sense to connect it with the modelling in PiecewiseLinearOpt (at least for univariate problems).

@datejada
Copy link

datejada commented Sep 5, 2024

Thanks for the invitation; let's start with that schedule, and I will try to attend as much as possible. For instance, I'm sorry in advance because I am the first one I cannot participate. It is because I will be out of the office anyway.
Regarding the summary, I don't have any comments or suggested changes. Thanks!

@hellemo
Copy link

hellemo commented Sep 5, 2024

Thanks for the nice summary!

In the context of Energy Modeling at SINTEF it is perhaps worth to mention also EnergyModelsX, which was mentioned in our talks this year, and presented at JuMP-dev 2023 by @JulStraus https://www.youtube.com/watch?v=fARbeM8sANA&t=13s .

When it comes to performance in model building and workarounds, better documentation/advertising limitations is always useful, but I think it would benefit the JuMP ecosystem in large if the performance issues with sparse structures could be addressed at the JuMP-level by exploiting sparsity when building constraints, for example (see e.g. jump-dev/JuMP.jl#3438). The broader point of the SparseVariables package I would say is to demonstrate that this would allow people to write formulations that are closer to the math and hence easier to write, read and maintain - without sacrificing performance. Also keep in mind that many modellers in the energy domain do not have a background in computer science, so applying the current workarounds represents a significant barrier for them, and I believe this is perhaps the motivation for earlier algebraic modelling languages like GAMS to do these kinds of optimizations.

@odow odow changed the title WIP: Add Open Energy Modeling at JuMP-dev 2024 Add Open Energy Modeling at JuMP-dev 2024 Sep 5, 2024
@odow
Copy link
Member Author

odow commented Sep 6, 2024

I spent most of today re-watching a lot of JuMP-dev talks (on 2x speed!) and I've added a bunch more content. We've had quite a lot of energy-related talks! There are still a bunch that I haven't got to yet.

@odow
Copy link
Member Author

odow commented Sep 6, 2024

I hope this post is actually pretty useful for future energy modelers. It's really a crash course on "here's everything that people have done previously and the various issues that we've run into."

Watching the talks back-to-back and making connections between them really is more than the sum of the parts.

@odow odow force-pushed the od/jump-energy-2024 branch from fc7c166 to 9445854 Compare September 9, 2024 05:31
@jd-lara
Copy link

jd-lara commented Sep 9, 2024

@odow I think you should distinguish between applications that are energy models like Tulipa or GenX and those that are simulations tools like Sienna (PowerSimulations.jl)

repository, and that JuMP's ability to efficiently solve a sequence of similar
problems with some changes in the problem parameters is both a main selling
point of using JuMP over alternative tools and a current bottleneck in existing
workflows.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sienna is also one of the few tools that has a workflow with multiple resolves as part of the features and needs since it is the only JuMP application focused on simulations.

Copy link
Member Author

@odow odow Sep 9, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't know if this is true. SpineOpt has a rolling-horizon feature, and so does @sstroemer's model.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The same is currently in development for EnergyModelsX.

@odow
Copy link
Member Author

odow commented Sep 9, 2024

Okay! This kept getting longer and longer, but I think the first draft is done. Feedback appreciated.

@odow
Copy link
Member Author

odow commented Sep 9, 2024


I found it useful to compare the talk to Jose's [[2019] PowerSimulations.jl](#2019-powersimulationsjl).
If multiple groups arrive at the same set of ideas, I think it demonstrates that
hierarchical models that leverage Julia's multiple dispatch is the "right" way
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We could reference from JuMP-dev 2024 that Pyomo arrived to a similar design of implementing a multiple dispatch like capability

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is slightly different. Pyomo would say build models using blocks etc. They're using multiple dispatch internally to simplify the expression tree walkers.

@iSoron
Copy link

iSoron commented Sep 10, 2024

@odow Thanks for including UnitCommitment.jl in this review post. A few comments and suggestions:

  • The current description compares UCjl with PowerModels.jl, but, in my opinion, does not make the distinction between the two packages very clear. The main distinction, as we see it, is that UCjl focuses on multi-period energy problems with integer decision variables modeling on/off status of generators.
  • Since our JuMP-dev talk in 2021, we have added many new features to the package, including two-stage stochastic unit commitment, simulation of market clearing and decomposition methods. Here are some slides from the FERC Software Conference 2023.
  • Since you have mentioned real-world usage of GenX and Sienna, I'd also like to mention that UnitCommitment.jl has been used by various academic institutions worldwide and by some industry stakeholders, including ISO-NE and EPRI Europe.

@odow odow force-pushed the od/jump-energy-2024 branch from b9b4799 to 9f1869e Compare September 16, 2024 22:22
@jd-foster
Copy link
Contributor

I wonder if the 'big-O' notation is potentially confusing for non-CS types.

@odow
Copy link
Member Author

odow commented Sep 17, 2024

I wonder if the 'big-O' notation is potentially confusing for non-CS types.

I don't particularly care 😄 This post is mostly intended for our benefit, with a second-order benefit to energy system modelers.

Copy link
Contributor

@jd-foster jd-foster left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a great overview - very useful to see it in one place.

_posts/2024-09-17-open-energy-models.md Outdated Show resolved Hide resolved
_posts/2024-09-17-open-energy-models.md Outdated Show resolved Hide resolved
_posts/2024-09-17-open-energy-models.md Outdated Show resolved Hide resolved
_posts/2024-09-17-open-energy-models.md Outdated Show resolved Hide resolved
_posts/2024-09-17-open-energy-models.md Outdated Show resolved Hide resolved
_posts/2024-09-17-open-energy-models.md Outdated Show resolved Hide resolved
_posts/2024-09-17-open-energy-models.md Outdated Show resolved Hide resolved
@jd-foster
Copy link
Contributor

All done.

@odow odow merged commit f80acef into master Sep 20, 2024
@odow odow deleted the od/jump-energy-2024 branch September 20, 2024 08:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

8 participants