How to arrange the constraints shape to A matrix and b constants automatically ( Ax <= b)??
4 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hi. I'm not good at MATLAB so please help me^^
I want to solve LP problem using "linprog",
so I have to make inequality constraints to A matrix and b constants. (Ax <= b)
And my inequality constraint's variables are mixed each other, so I have to arrange the constraints.
For example,
x1 + x2 <= x3 + x4 + 1 ; % constraint 1
X3 <= x1 + 10 ; % constraint 2
x2 + x4 <= 7 ; % constraint 3
In this situation, how can I make shape "Ax <= b" automatically??
It means I don't have to code one by one.
1 commentaire
Sanush
le 20 Oct 2021
Rearrange your constraint
Px1 <= Qx2 + c
(P - Q - c)*(x1', x2', 1)' <= 0
% for x1 + x2 <= x3 + x4 + 1
P = x1 + x2
Q = x3 + x4 + 1
% As Ax <= b
A = P - Q
b = zeros(size(A,1),1)
Réponse acceptée
Matt J
le 2 Oct 2021
Modifié(e) : Matt J
le 2 Oct 2021
Using the problem-based solvers, you do not have to build things in matrix form, e.g.,
x=optimvar('x',4,'LowerBound',0,'UpperBound',20);
con(1)=x(1) + x(2) <= x(3) + x(4) + 1 ; % constraint 1
con(2)=x(3) <= x(1) + 10 ; % constraint 2
con(3)=x(2) + x(4) <= 7 ; % constraint 3
sol=solve( optimproblem('Objective',-sum(x),'Constraints',con) )
However, if you really must have the matrices, then you can use prob2matrices,
p=prob2matrices({x},'Constraints',con)
Plus de réponses (1)
Chunru
le 2 Oct 2021
% Let x = [x1; x2; x3; x4]
% x1 + x2 <= x3 + x4 + 1 ; % constraint 1
% => [1 1 -1 -1]*x <= 1
% X3 <= x1 + 10 ; % constraint 2
% => [-1 0 1 0]*x <= 10
% x2 + x4 <= 7 ; % constraint 3
% => [0 1 0 1]*x <=7
% Putting together
% [ 1 1 -1 -1] [ 1 ]
% |-1 0 1 0| * x <=|10 ]
% [ 0 1 0 1] [ 7 ]
%
% Therefore, you can specify A and b as follows
A = [1 1 -1 -1; -1 0 1 0; 0 1 0 1];
b = [1; 10; 7];
2 commentaires
Voir également
Catégories
En savoir plus sur Quadratic Programming and Cone Programming dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!