I am solving a joint non-linear optimization problem using 'fmincon' toolbox with three input argument variables of which two of then have to be integers as per our system design. But the solver consider continious real values. Can this be solved?

I am solving a joint non-linear optimization problem using 'fmincon' toolbox with three input argument variables of which two of then have to be integers as per our system design. But the solver consider continious real values. Can this be solved?

 Accepted Answer

No, fmincon does not address discrete decision variables. If the integer variables do not have too large a range, say they are each between 1 and 100, then you can simply tackle the 100*100 = 1e4 continuous problems resulting from setting the discrete variables to all possible values.
The only MathWorks solver that currently supports integer variables is ga from the Global Optimization Toolbox.
Alan Weiss
MATLAB mathematical toolbox documentation

3 Comments

Dear Alan,
Thanks a lot for your suggestion. Yes I do completely agree with you that Global Optimization toolbox is the only way to deal with the problem. Briefly about my problem, I am actually optimizing the packet size for a digital wireless communication system where the optimal packet value in bit will be depending on three main parameters i.e packet size, modulation level(bits/symbol)and received signal to noise ratio (SNR). Of these three parameters, first two parameters must be integers because for example packet size of 112.4 or 3.2bits/symbol does not make any sense. The lower bound and upper bound for these two integer input parameters are 100 to 300 and 2 to 9 respectively. For the third option, range of continuous real numbers are fine which can be from 10 to 40.
In my case , since it is a simulation based analysis, I do not require precise and exact optimal value for the packet size. A tentative trend of the result will do good as proof of concept. So under such circumstances is there is any way I could handle the situation with the existing fmincon by changing changing the step level in optimset or by rounding the input parameters or by some ceil/ floor operation at the constraint as it is bit urgent ???? It will be really great if you can give some idea.
For the journal extension of my work, certainly I am going for the Global Optimization tollbox as you have advised.
You don't have very many parameters. Why not do a discrete search as I suggested? 200*8 = 1600 discrete values, and maybe you want to start the continuous search from 2 or 3 points as well, making a total of no more than 3*1600 = 4800 one-dimensional minimizations to perform with, say, fminbnd or fmincon. I think that this is better than using GA, which is not guaranteed to give a global solution, and is not very robust or easy to tune.
If you want a "tentative trend," then I suppose you could optimize with fmincon using a very large value of the DiffMinChange parameter (and DiffMaxChange), maybe 2 or 3, and several starting points. You can round the result to be integers in the first two components. See the documentation on optimizing simulations.
Good luck,
Thanks a lot Alan.. I will try the way you advised..will let you know the outcome as soon as I get the results.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!