航空公司有三个基地A、B、C;航材供应商有两家,供应商A的航材采购价为b1,有g1件,供应商B的航材采购价为b2,有g2件;而从两个家供应商处采购的总航材数量满足其需求量,A机场基地从供应商A处采购e1件航材,从供应商B处采购f1件航材,e1+f1=a1,B机场基地从供应商A处采购e2件航材,从供应商B处采购f2件航材,e2+f2=a2,C机场基地从供应商A处采购e3件航材,从供应商B处采购f3件航材,e3+f3=a3;从供应商A运到基地A需要运费c11,到基地B需要c21,到基地C需要c31,从供应商B运到基地A需要运费c21,到基地B需要c22, 到基地C需要c32;供应商A采购价为b1,供应商A采购价为b2。用线性规划求花费最小值F,并用matlab编程
时间: 2024-03-13 12:48:08 浏览: 36
航材院物资供应部采购管理专责职务说明书.doc
该问题可以用线性规划来求解,建立如下模型:
目标函数:min F = b1*(e1+e2+e3) + b2*(f1+f2+f3) + c11*e1 + c21*f1 + c21*e2 + c22*f2 + c31*e3 + c32*f3
约束条件:
e1 + f1 = a1
e2 + f2 = a2
e3 + f3 = a3
e1, e2, e3, f1, f2, f3 >= 0
e1 + e2 + e3 <= g1
f1 + f2 + f3 <= g2
将目标函数和约束条件转化为矩阵形式,可以得到如下的标准形式:
min Cx
s.t. Ax = b
x >= 0
其中,C是目标函数系数矩阵,x是变量向量,A是约束系数矩阵,b是约束条件右侧的常数向量。
用matlab编写程序如下:
```matlab
% 定义目标函数系数矩阵C
C = [b1, b1, b1, b2, b2, b2, c11, c21, 0, c21, c22, 0, c31, 0, c32, 0, 0];
% 定义约束系数矩阵A
A = [1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0;
0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0;
0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0;
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0;
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1;
1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
% 定义约束条件右侧的常数向量b
b = [a1; a2; a3; 0; 0; 0; 0; 0; g1; g2];
% 求解线性规划问题
[x, Fval] = linprog(C, [], [], A, b, zeros(1, 17));
% 输出结果
fprintf('最小花费为:%f\n', Fval);
fprintf('采购量e1=%f,f1=%f\n', x(1), x(4));
fprintf('采购量e2=%f,f2=%f\n', x(2), x(5));
fprintf('采购量e3=%f,f3=%f\n', x(3), x(6));
```
注意,matlab中的线性规划函数linprog的输入参数中,第一个空数组[]表示没有等式约束,第二个空数组[]表示没有不等式约束。
阅读全文