(一)线性规划
线性规划问题是在一组线性约束条件的限制下,求一线性目标函数最大或最小的问题。
线性规划的Matlab标准形式:
其中和
为
维列向量,
、
为适当维数的矩阵,
、
为适当维数的列向量。
例如线性规划
的Matlab标准型为
1、求解线性规划问题
c = [2;3;-5];
a = [-2 5 -1;1 3 1];
Aeq = [1 1 1];
b = [-10;12];
beq = 7;
[x,value] = linprog(-c,a,b,Aeq,beq,zeros(3,1))
2、求解运输问题(产销平衡)
某商品有个产地、
个销地,各产地的产量分别为
,各销地的需求量分别为
。若该商品由
产地运到
销地的单位运价为
,问应该如何调运才能使总运费最省?
引入变量,其取值为由由产地运到
销地的该商品数量,数学模型为:
例:
c=[3,11,3,10,1,9,2,8,7,4,10,5];\\运输成本
Aeq=[1,1,1,1,0,0,0,0,0,0,0,0;
0,0,0,0,1,1,1,1,0,0,0,0;
0,0,0,0,0,0,0,0,1,1,1,1;
1,0,0,0,1,0,0,0,1,0,0,0;
0,1,0,0,0,1,0,0,0,1,0,0;
0,0,1,0,0,0,1,0,0,0,1,0;
0,0,0,1,0,0,0,1,0,0,0,1];
beq=[7;4;9;3;6;5;6];
lb=[0;0;0;0;0;0;0;0;0;0;0;0];
[x,fval]=linprog(c,[],[],Aeq,beq,lb)
3、求解指派问题
拟分配n人去干n项工作,每人干且仅干一项工作,若分配第i人去干第j项工作,需花费单位时间,问应如何分配工作才能使工人花费的总时间最少?
引入变量,若分配i干j工作,则取
,否则取
。上述指派问题的
数学模型为:
C=[3 8 2 10 3;8 7 2 9 7 ;6 4 2 7 5;8 4 2 3 5 ;9 10 6 9 10];
C=C(:);
a=zeros(10,25);
for i=1:5
a(i,(i-1)*5+1:5*i)=1;
a(5+i,i:5:25)=1;
end
b=ones(10,1);
Xm=zeros(25,1);%下界Xm
XM=ones(25,1);%上界XM
[x,z]=linprog(C,[],[],a,b,Xm,XM)