Dual problem and primal problem unbounded linear programming
10 vues (au cours des 30 derniers jours)
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
Réponses (1)
Matt J
le 27 Juil 2024
Modifié(e) : Matt J
le 27 Juil 2024
%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
0 commentaires
Voir également
Catégories
En savoir plus sur Solver Outputs and Iterative Display 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!