How to take the number of zero elements of an optimization variable as part of the constraint condition?I want to take the number of non-zero solutions of the optimization variable x as part of the constraint.

 Akzeptierte Antwort

Matt J
Matt J am 11 Sep. 2021
Bearbeitet: Matt J am 11 Sep. 2021

1 Stimme

You cannot do that in a continuous optimization problem, although in sparse optimization, it is common to approximate the number of non-zeros as norm(x,1).
If it's a binary linear programming that you're solving, the number of non-zeros is simply the linear function sum(x). If it's a more general integer linear program where 0<=x(i)<=M, you can introduce extra binary variables z with the constraint that x/M<=z<=x, and the number of non-zeros will then be sum(z).

3 Kommentare

培国 原
培国 原 am 11 Sep. 2021
"Constraints must be an OptimizationConstraint or a struct containing OptimizationConstraints."
I always have this problem when I calculate. How can I solve it?
培国 原
培国 原 am 11 Sep. 2021
Thank you very much for your advice, which is very useful!
Matt J
Matt J am 11 Sep. 2021
You're welcome, but if you consider your question answered, please click Accept.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Gefragt:

am 11 Sep. 2021

Kommentiert:

am 11 Sep. 2021

Community Treasure Hunt

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

Start Hunting!

Translated by