Using fminimax for optimization with linear and non-linear variables

1 view (last 30 days)
Hello,
I am trying to use the fminimax(...) optimization toolbox to solve a problem. The only problem is that my nonlinear variables do not appear in my linear equations. The nonlinear equations can be implemented in nlnconstr(...) function, but there is nothing to let the optimization function know how to modify the nonlinear variables other than the Ceq and C params returned from nlnconstr(...). Matlab uses the linear constraints to determine how to "modify" the variables to optimize the objective function.
Thanks, Ali
  3 Comments
Ali
Ali on 3 Jun 2011
Hello Steve,
Thanks for the comment. Sorry haven't checked this for a long time. The linear and nonlinear variables appear in the nonlinear constraints (its an algorithm). The nonlinear variables affect the linear variables which in turn effects the objective functions. Because the nonlinear variables are linear constraints, they don't appear in the linear equations.
I currently have to "zero out" the nonlinear vars in my linear equations (e.g. set rows of Aeq that are associated with the nonlinear variables equal to zero).
Let me know if you have any comments or questions.
Thanks,
Ali
Steve Grikschat
Steve Grikschat on 6 Jun 2011
Hi Ali,
What you've said sounds fine to me. There is nothing wrong with all zero columns in the linear constraint matrices.
Can you write out a formulation? Something like this?
min F(x)
(x,y)
subject to: [A 0]*[x;y] <= b
ceq(x,y) = 0
cineq(x,y) <= 0

Sign in to comment.

Answers (1)

Matt J
Matt J on 12 Oct 2017
Edited: Matt J on 12 Oct 2017
To summarize, you must pass all unknown variables to the objective and nonlinear constraint functions (bundled into an array), but you are not obligated to use them all there.
Similarly, you must also have as many columns in your constraint matrices as there are unknowns, but making some of the columns zero (so that some unknowns don't participate) is also legit.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!