Maltab与线性规划

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

Matlab中的线性规划的标准形式如图所示:

  其中c和x是n维列向量,A和Aeq是适当维数的矩阵,b和beq是适当维数的列矩阵。

  基本函数形式为linprog(c,A,b),他返回的是向量x的值。

  它完整的函数调用形式为:

   x= linprog(f,A,b,Aeq,beq,lb,ub,x0,options) ,其中x0和options分别x的初始值和控制参数。

  用一个例题来进行巩固:

  求解下列线性规划问题:

  首先,套入线性规划的标准型:得到c=[2,3,-5] a=[2,-5,1;1,3,1] b=[-10;12] aeq=[1,1,1]

beq=[1,1,1] ,在matlab中编写文件:

c=[2;3;-5];
a=[-2,5,-1;1,3,1];
b=[-10;12];
aeq=[1,1,1];
beq=7;
x=linprog(-c,a,b,aeq,beq,zeros(3,1));
value=c'*x;

运行结果:

   与线性规划相关的指派问题:如果派n个人去干n项工作,每人干且仅干一件事,若分配第i个人干第j项工作,需要花费Cij的时间,那么问如何分配工作才能使花费的总时间最少。将指派问题实例化,那么仅仅需要一个矩阵C=Cij

  引入0-1模型,如果分配i干第j个工作,则取Xij=1,否则取Xij=0,上述指派问题的数学模型为:

  求解指派问题,可以使用匈牙利算法:如果系数矩阵一行或一列每一个元素都加上或减去同一个数,得到一个新矩阵,则这两个矩阵拥有相同的最优指派。

  例如:系数矩阵C为:

可以通过第一列减去15,第二列减去17,第三列减去17,第四列减去16,得到新矩阵:

 

不难看出最优指派为:

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值