-
Notifications
You must be signed in to change notification settings - Fork 2
Preparation for v1.0.0 release #105
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
Conversation
improve coverage ignore `lcov.info` file
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #105 +/- ##
==========================================
+ Coverage 96.95% 98.96% +2.01%
==========================================
Files 24 24
Lines 3577 3574 -3
==========================================
+ Hits 3468 3537 +69
+ Misses 109 37 -72 ☔ View full report in Codecov by Sentry. |
The only breaking change I have had in mind, which I leave up to you to decide about, is the signature of the nonlinear dynamics function. Right now it is pendulum(par, x, u) but it could potentially be worthwhile changing this to follow the SciML and ControlSystems.jl convention pendulum(x, u, par, t) where
Sounds worth it to me, I guess you have some script that runs them all and outputs the figures? |
Good idea! I think I'll switch the order. Right now, model parameters are not officially supported. I just use closure when needed. It works well but it feels dangerous, for type stability. That's why I added a |
Yep, that's the same script that produce the figure et run the benchmarks. I may have a problem with KNITRO tho, I used the 6-months demo license and I think it's expired. |
About that, it may be interesting to officially support a parameter argument in |
I just keep a struct MPC{T}
...
p::T
end that can be of any type the user decides, it's just passed along to the dynamics function (and constraints etc. in our case). |
I forgot about the measured disturbance argument pendulum(x, u, d, p, t) |
@baggepinnen In your experience, did you encountered any control application in which the plant model ODE was a function of the time Here are some arguments against adding 1- It would be a bad idea remove the Do you still think that adding edit: I like the idea of HILO-MPC python package. There are 2 types of model: one for nonlinear time-invariant (TI), the other for nonlinear time-varying (TV) plant models. It could the solution : |
The fact that
So to summarize, it's not always the dynamics that depend on time, it might be cost, constraints, noise etc. |
Interesting examples, thanks for all these great advices Fredrik! The other issue (minor TBF) with adding a But your example with Hydro bill (I means electricity tariffs, canadian stuff 😝 ) is great since it need a more precise definition of what is I will not add the A custom constraint function is not supported in the package for now but its in my TODO list. |
Can be implemented with a new measured disturbance. Seems like a bloat feature.
They are identical to the plant model parameter by default.
https://juliacontrol.github.io/ModelPredictiveControl.jl/previews/PR105 @baggepinnen The documenentation of the PR is still building. I added the ModelingToolkit example in the manual. Does it seems ok for you ? I do not use the new model parameter feature since I'm not sure how to integrate that. It's not crucial at all, but do you have an idea how we would do that? |
Weird.
I will investigate on this. |
@JuliaRegistrator register Release notes:
|
let's clean up the doc preview, maybe 🐈⬛ |
I don't plan for any other breaking change in the next releases. I feel that most essential features are there, and the public interface is flexible enough to accommodate many types of predictive controllers and state estimators. I feel like its time for the 1.0.0 release.
Also good news: I re-benchmarked the case studies in the manuscript and there is improvements using the last release (presumably caused by all the allocation improvements, and maybe some improvements in Ipopt/JuMP side). The first case study median time was ~750 ms with Ipopt. It is now ~450 ms.
About that, do you think that we should update the results in the paper (if accepted) ? It means updating all the figures since the new default current estimators produces different closed-loop responses. It may be worth it since the performance is just better, both for the disturbance rejection and the computational time.
I will wait a little bit before merging into main. In the meantime I will improve coverage and debug if required.