How to arrange the constraints shape to A matrix and b constants automatically ( Ax <= b)??

7 visualizaciones (últimos 30 días)
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 comentario
Sanush
Sanush el 20 de Oct. de 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)

Iniciar sesión para comentar.

Respuesta aceptada

Matt J
Matt J el 2 de Oct. de 2021
Editada: Matt J el 2 de Oct. de 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) )
Solving problem using linprog. Optimal solution found.
sol = struct with fields:
x: [4×1 double]
However, if you really must have the matrices, then you can use prob2matrices,
p=prob2matrices({x},'Constraints',con)
p = struct with fields:
intcon: [] lb: [4×1 double] ub: [4×1 double] Aineq: [3×4 double] bineq: [3×1 double] Aeq: [] beq: []

Más respuestas (1)

Chunru
Chunru el 2 de Oct. de 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 comentarios
연승 김
연승 김 el 2 de Oct. de 2021
I understant what you mean, but my queation is different.
The inequality constraints make automatically by iteration,
so I want to creat A matrix automatically...
Do you understant what I mean??
I'm sorry that confusing you...
Chunru
Chunru el 2 de Oct. de 2021
No. I don't understand you. Can you explain with examples?

Iniciar sesión para comentar.

Categorías

Más información sobre Quadratic Programming and Cone Programming en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by