线性规划通常研究资源的最优利用问题,总的来说有两类方面。
a.在任务确定的条件下,如何利用最少的资源(如资金、原材料、人工、设备)完成确定的任务?
b.在资源一定的条件下,如何组织生产使得成本最小,利润最大?
a.建立模型,列出线性规划模型的三要素(决策变量、目标函数、约束条件)。
b.利用软件计算得结果(excel,matlab,lingo)。
c.灵敏度分析和最优解判别,推荐使用lingo。
a.运输问题
b.指派问题
mtlab专用程序函数
[x,fval] = linprog(f,A,b,Aeq,beq,lb,ub,x0),下面分别介绍各参数的含义.
[x,fval]返回值中x为最优解,fval为最优值.
f表示目标函数中各个变量前面的系数向量,如果是求最小值问题,那么f就是各个变量的系数,如果是求最大值问题,那么f就是各个变量的系数的相反数.
A和b 表示不等式约束A*x <=b中的矩阵A和向量b.
Aeq和beq 表示等式约束Aeq*x =beq中的矩阵Aeq和向量beq.
lb和ub 分别表示自变量的上下界组成的向量,如果没有上下界,该选项用[]表示,如果只有部分变量有上下界,其余的变量没有,那么可以把没有上下界的变量的上下界设为-inf或者inf使lb或者ub的长度符合要求.
x0 表示变量的初始值,可以缺省.
matlab代码
clc
clear
c=1:4;
c=[c,c]';
aeq=[1,-1,-1,1;
1,-1,1,-3;
1,-1,-2,3];
beq=[0,1,-1/2];
aeq=[aeq,-aeq];
[x,fval]=linprog(c,[],[],aeq,beq,zeros(8,1))
x=x(1:4)-x(5:end)
lingo代码
model:
sets:
col/1..4/:c,x;
row/1..3/:b;
links(row,col):a;
endsets
data:
c=1 2 3 4;
a=1 -1 -1 1 1 -1 1 -3 1 -1 -2 3;
b=0 1 -0.5;
enddata
min=@sum(col:c*@abs(x));
@for(row(i):@sum(col(j):a(i,j)*x(j))=b(i));
@for(col:@free(x));!x的取值可正可负;
end