Using fminimax for optimization with linear and non-linear variables

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

It sounds to me that you have two separate problems. There is nothing wrong with what you've said here.
You have a set of variables that are nonlinearly constrained with no bearing on the objective(s) and another set that are linearly constrained that do affect the objective. What's wrong with that?
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
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.

Categories

Asked:

Ali
on 20 Apr 2011

Edited:

on 12 Oct 2017

Community Treasure Hunt

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

Start Hunting!