I'm seeking for values 0 or more than 0.1 for example. How can I do this?

2 Comments

Torsten
Torsten on 31 May 2022
Edited: Torsten on 31 May 2022
help find
if you seek them in an array or a matrix.
Otherwise, you have to explain your problem in more detail.
partially discrete constraint like "x(i)=0 or x(i)>=0.1"

Sign in to comment.

 Accepted Answer

Matt J
Matt J on 31 May 2022
Edited: Matt J on 31 May 2022
You cannot specify a partially discrete constraint like "x(i)=0 or x(i)>=0.1" on your variables with fmincon.
To handle that with fmincon, you must run a separate fmincon optimization for every possible subset S of non-zero x(i) variables, constraining x(i)>=0.1 for and x(i)=0 for .
An alternative to doing a combinatoric optimization would be to introduce binary variables b(i) and impose the linear inequality constraints,
0<=x(i)
b(i)<=10*x(i)
x(i)<=ub(i)*b(i)
The only x(i)<0.1 which satisfies these constraints is x(i)=0. For this approach, however, you would need a solver that can handle binary-constrained variables, like intlinprog (if your objective and other constraints are linear) or ga.

3 Comments

You could use ga and nonlinear constraints though. ga and patternsearch should be able to handle discontinuities
Thanks a lot! I do a portfolio optimization (by min risk) but all of assets from initial asset list take a part in optimized portfolio. It is not normal. Some of assets have weigths below 0.00005. I'm looking to desision how to constraint that solution.
Matt J
Matt J on 31 May 2022
Edited: Matt J on 31 May 2022
You could use ga and nonlinear constraints though. ga and patternsearch should be able to handle discontinuities
I 'm less optimistic about that being successful. ga cannot do any prior analysis of nonlinear discontinuous constraints to determine how to distribute the initial population over discontinuous feasible regions.

Sign in to comment.

More Answers (0)

Categories

Products

Release

R2022a

Asked:

on 31 May 2022

Edited:

on 31 May 2022

Community Treasure Hunt

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

Start Hunting!