How to use a decision variable from optimization problem into an if else statement?
6 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Paramvir Singh
il 29 Apr 2018
Commentato: Amir Hossein Nazeri
il 5 Apr 2022
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/190173/image.png)
Here Tins is a decision variable of size=(24,1) in my optimization problem. The value of Tins(min_des) =20 while value of Tins(max_des) = 23. When I input the if else statement using Tins variable for value comparison, then the following error is shown by matlab:-
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/190174/image.png)
Please suggest the corrective measure. Thanks in advance
Risposta accettata
Mary Fenelon
il 2 Mag 2018
The if-constraints (logical constraints, implication constraints) can be modeled with linear constraints and binary variables.
To see how to do this, suppose you have a binary variable y that should be 1 when x > 0. The constraint x - M*y <= 0, where M is an upper bound on x, will enforce this. When x > 0, y must be 1; the only other possible value for y is 0 and if y were 0, the constraint reduces to x <= 0, a contradiction.
To formulate constraint (6), make two constraints
- (Tmin - Tins) - M1*(1-BCac) <= 0 where M1 is an upper bound on (Tmin - Tins)
- (Tins - Tmax) - M2*BCac <= 0 where M2 is an upper bound on (Tins - Tmax)
The resulting constraints are called big-M constraints or indicator constraints. The y variable is called an indicator variable.
3 Commenti
Amir Hossein Nazeri
il 5 Apr 2022
@Paramvir Singh Hi Paramvir, Is your problem solved? Can you share your Matlab code with me if possible? Or if you have any Github or so...
Thanks!
Amir
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Get Started with Optimization Toolbox in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!