Dual problem and primal problem unbounded linear programming
Afficher commentaires plus anciens
Hello,
I need some help please to solve this problem I have . I have solved a max. problem , the primal problem , by using linprog.
After this , I have done the dual problem of the primal. After this proccess, I don't get the result that I should get , because the values of F0 should be the same in both cases(if I am not wrong).
I am sending the illustrated problem and code below. I hope someone can give me a help.
thank you !
Max 300𝑥1 + 400𝑥2
𝑥1 + 𝑥2 ≤ 320
4𝑥1 + 5𝑥2 ≤ 510
2𝑥1 + 3𝑥2 ≤ 430
3𝑥1 + 𝑥2 ≤ 300
𝑥1,𝑥2 ≥ 0
The Dual Problem
Min 320𝑦1 + 510𝑦2 + 430𝑦3 + 300𝑦4
𝑦1 + 4𝑦2 + 2𝑦3 + 3𝑦4 ≥ 300
4𝑦1 + 5𝑦2 + 3𝑦3 + 𝑦4 ≥ 400
𝑦1,𝑦2,𝑦3,𝑦4 ≥ 0
Matlab Code:
%Primary Problem
%Ax<=b
%coefficients of A
A = [1 4; 4 5; 2 3; 3 1];
%coefficients of B
b = [320 510 430 300];
%coefficients of the objective function
f = [300 400];
%The maximation of the linear function using the matlab linear
%programming function
[x0,F0] = linprog(-f,A,b,[],[],[0 0])
% disp('x0 = ')
% disp(x0);
%------------------------------------------------------------------
%Dual problem
%coefficients of AT
AT = [1 4 2 3;
4 5 3 1];
%coefficients of u
u = [300 400];
g = [320 510 430 300];
%setting a lower bounder
lb = zeros(1,4);
%setting an upper bounder
ub=[];
[u0,F0] = linprog(g,-AT,-u,[],[],lb,ub)
% disp('u0 = ');
% disp(u0);
%So,1st and 2nd constrains of the primary problem are active
%because u0 = [9.0909
% 72.7273
% 0
% 0]
%Solutions of Primary problem throug the dual problem
syms x1 x2
eqns = [x1 + x2 == 320, 4*x1 + 5*x2 == 510];
S = solve(eqns,[x1 x2]);
b = [S.x1 S.x2];
disp('Values of x ')
disp(b);
duality_gap = [x0(1)-u0(1); x0(2)-u0(2)]
1 commentaire
Sifat-E-Tanzim Chowdhury
le 27 Juil 2024
I think you have wrong input for matrix A.
Réponses (1)
%Primary Problem
%coefficients of A
A = [1 4; 4 5; 2 3; 3 1];
%coefficients of B
b = [320 510 430 300];
%coefficients of the objective function
f = [300 400];
%The maximation of the linear function using the matlab linear
%programming function
[x0,F0] = linprog(-f,A,b,[],[],[0 0]);
F0=-F0
%------------------------------------------------------------------
%Dual problem
%coefficients of AT
AT = A';
%coefficients of u
u = f;
g = b;
%setting a lower bounder
lb = zeros(1,4);
[u0,F0] = linprog(g,-AT,-u,[],[],lb);
F0
Catégories
En savoir plus sur Solver Outputs and Iterative Display dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!