Closed DanielMartensson closed 5 years ago
It's already there. (or did I misunderstand you)
org.ojalgo.optimisation.convex is essentially/still just a collection o QP solvers (unconstrained, equality constrained and/or inequality constrained).
Just model your problem with ExpressionsBasedModel...
No quadratic constraints!
It's already there. (or did I misunderstand you)
org.ojalgo.optimisation.convex is essentially/still just a collection o QP solvers (unconstrained, equality constrained and/or inequality constrained).
Just model your problem with ExpressionsBasedModel...
No quadratic constraints!
But the subject constraints are only
min 1/2 [X]T[Q][X] - [C]T[X] when [AE][X] == [BE] and [AI][X] <= [BI]
In ExpressionsBasedModel you can model everything. Then it gets transformed to fit the requirements of the individual solver.
In ExpressionsBasedModel you can model everything. Then it gets transformed to fit the requirements of the individual solver.
Jag tar det på Svenska istället. Det skulle ha varit ett bra exempel på detta. OjAlgo verkar vara ett igenomtänkt bibliotek med tanke på att den använder sig varken av JBlas eller C++ i grunden. Jag har vissa planer med att använda OjAlgo med JavaFX för Iphone och Android apputveckling. Men problemet är att jag som "kund" eller användare med andra ord, finner OjAlgo svårt att använda.
Om jag ska t.ex. använda din QP-lösare i Java så måste den ha samma begränsingar som QP i Octave har. Den måste alltså vara identisk. Som jag ser så har den två begränsingar. Likhetsbegränsingar och olikhetsbegränsingar. Men det är inga begärnsingar på X vektorn.
Jag har själv gjort ett liknande bibliotek som heter EmbeddedLapack som följer "MATLAB/Octave" struktur: https://github.com/DanielMartensson/EmbeddedLapack Den är dessutom snabbare än Armadillo C++ i ett granska stort arbetsexempel. Problemet är att det är inte gjort i Java.
Det skulle vara bra om OjAlgo också följde en sådan struktur. Nu vet jag att det inte kommer ske. Men det skulle ha funnits arbetsexempel för jag har noll koll på vad man kan använda i en JavaDoc, trots att det står klart och tydligt. :)
Jag vet att det finns en grundläggande matris- och vektormanual, men det skulle vara bra om varje JavaDoc hade ett arbetsexempel. http://www.ojalgo.org/2019/03/linear-algebra-introduction/
Här är ett exempel på Model Predictive Control där jag använder en QP-lösare med begränsingar på både IN och UT. https://github.com/DanielMartensson/Matavecontrol/blob/master/sourcecode/lmpc.m
u = qp([], H, q, [], [], U_LB, U_UB, Y_LB, A_IN, Y_UB);
There are code examples of how to use ExpressionsBasedModel at https://www.ojalgo.org/code-examples/
ojAlgo is intended to be primarily for Java developers. Being compatible with various legacy fortran, c or matlab api:s is not a priority.
That said, creating a utility method with your desired signature would be very little coding – a few loops over the supplied arrays is all that's required.
For a paying customer I build what they want...
Men objektivfunktionen visar ju att optimeringen är konkav och inte konvex och konkav på samma gång. Om du tittar på begärningarna som GNU Octave's QP-lösare visar så ser du vad jag menar :)
Do this: Forget about Octave/Matlab and what you think you know about ojAlgo's solvers. Instead start with ExpressionsBasedModel. Spend a little time to figure out how it works (rather than how you expect or would like it to work) and just model the problem you want to solve.
Some examples can be found here:
https://www.ojalgo.org/code-examples/
and some further advice here:
https://github.com/optimatika/ojAlgo/wiki/Optimisation-Modelling-Advice
And if you want to ask more questions like these then please use Stack Overflow
Hello.
I have a suggestion: A QP-solver for ojAlgo!
subject to
Notice that Octave's QP-solver have lower bound inequality constraints A_lb. Very usefull for control theory. MATLAB's quadprog don't have that.
https://octave.org/doc/v4.4.0/Quadratic-Programming.html