数学建模算法(一)——线性规划

(一)线性规划

线性规划问题是在一组线性约束条件的限制下,求一线性目标函数最大或最小的问题。

线性规划的Matlab标准形式:

 \min_{x}c^{T}x

  s.t.\left\{\begin{matrix} Ax\leq b\\ Aeq\cdot x=beq\\ lb\leq x\leq ub\\ \end{matrix}\right.

其中cxn维列向量,AAeq为适当维数的矩阵,bbeq为适当维数的列向量。

例如线性规划

\max_{x}c^{T}x                

 s.t. Ax\geq b

的Matlab标准型为

\min_{x}-c^{T}x

s.t.-Ax\leq b

1、求解线性规划问题

maxZ=2x_{1}+3x_{2}-5x_{3}

s.t.\left\{\begin{matrix} x_{1}+x_{2}+x_{3}=7\\ 2x_{1}-5x_{2}+x_{3}\geq10\\ x_{1}+3x_{2}+x_{3}\leq12\\ x_{1},x_{2},x_{3}\geq0\\ \end{matrix}\right.

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、求解运输问题(产销平衡)

某商品有m个产地、n个销地,各产地的产量分别为a_{1},a_{2},\cdots ,a_{m},各销地的需求量分别为b_{1},b_{2}\cdots ,b_{n}。若该商品由i产地运到j销地的单位运价为c_{ij},问应该如何调运才能使总运费最省?

引入变量,其取值为由由i产地运到j销地的该商品数量,数学模型为:

min\sum_{i=1}^{m}\sum_{j=1}^{n}c_{ij}x_{ij}

s.t.\left\{\begin{matrix} \sum_{j=1}^{n}x_{ij}=a_{i},\quad i=1,\cdots,m\\ \sum_{i=1}^{m}x_{ij}=b_{j},\quad j=1,\cdots,n\\ x_{ij}\geq0\\ \end{matrix}\right.

例:

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项工作,需花费c_{ij}单位时间,问应如何分配工作才能使工人花费的总时间最少?

引入变量x_{ij},若分配i干j工作,则取x_{ij}=1,否则取x_{ij}=0。上述指派问题的c_{ij}数学模型为:

min\sum_{i=1}^{n}\sum_{j=1}^{n}c_{ij}x_{ij}

s.t.\left\{\begin{matrix} \sum_{j=1}^{n}x_{ij}=1\\ \sum_{i=1}^{n}x_{ij}=1\\ x_{ij}=0or1\\ \end{matrix}\right.

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)

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值