Optimization problem: how to include binary variables?

Currently I have an optimization problem with linear equality and inequality constraints. The cost function is nonlinear convex and I used matrix forms, function handle and fmincon to solve for the problem. Now I want to extend the model by simply adding a binary variables to the problem. However, fmincon does not support this and intlinprog does not accept nonlinear cost functions and nor does it accept functions as input.
I looked up the GA page, but I saw the following note: "When there are integer constraints, ga does not accept linear or nonlinear equality constraints, only inequality constraints."
Are there alternatives available for this problem?

7 Comments

Yes. Solve the problem two times - once with binary variable set to 0 and once binary variable set to 1 - and compare the values of the objective function.
Best wishes
Torsten.
Thank you for your quick reply. I don't understand this approach. Why would I solve the first time with all binary variables 0 and second time with all ones. My educated guess tells me that the solution I somewhere in the middle (1 0 1 1 0 0 1 1 etc). From my POV using your solution does not bring my to that solution.
You were talking about a binary variable.
If there are more than just one you want to include , you will have to solve your problem for all combinations, i.e. 2^n if n binary variables are present.
Best wishes
Torsten.
Sorry about the confusion. At this very moment I have 2*N+1 decision variables. N = 30; therefore I currently have 61 vars. Now if I include my binary variables, this will lead to 91. Is there really no alternative? Because comparing that many solutions is near impossible. It is possible for me to drop the nonlinearity in the cost function and make it a linear one.
For problems of that size use CPLEX.
Best wishes
Torsten.
And you could also do some sensitivity analysis in order to reduce the dimensionality of your problem beforehand.
If you can linearize your nonlinear obj. function, you could use intlinprog for binary/integer variables.

Sign in to comment.

Answers (0)

Categories

Asked:

on 7 Jul 2016

Commented:

on 14 Jul 2016

Community Treasure Hunt

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

Start Hunting!