R语言-运筹学线性规划实例

通过一个简单的小例子来复习线性规划的上机操作。

例子

在这里插入图片描述
首先写出该线性规划问题的数学模型
在这里插入图片描述
用R语言求解

library(lpSolve)
direction = 'max'
objective.vec = c(2,1)  #目标函数系数
a1 = c(0,5)   #每行约束条件中各变量的系数
a2 = c(6,2)
a3 = c(1,1)
a = rbind(a1,a2,a3)  #系数矩阵
a.dir = rep('<=',3)  #约束方向
a.rhs = c(15,24,5)  #约束值(等式右端)
solution = lp(direction, objective.vec, a, a.dir, a.rhs)
solution$solution  #变量的值
solution$objval  #目标函数的值

在这里插入图片描述
即该公司每天制造3.5件家电1,1.5件家电2,能获利最大。
这个结果其实不是很合理,因为家电不能半件半件地生产,此处只是为了举例子。若真的考虑到现实,应该用整数规划求解。

影子价格

所谓资源的影子价格,是指在其他条件不变的情况下,单位资源变化所引起目标函数最优值的改变,即该资源的边际价格。影子价格又可以看作一种机会成本,在完全市场经济条件下,当一种资源的市场价格低于资源成本加上影子价格时,可以买入资源;市场价格高于资源成本加上影子价格时,可以卖出资源。随着资源的买进卖出,影子价格会发生变化。

solution = lp(direction, objective.vec, a, a.dir, a.rhs, compute.sens = TRUE)
solution$duals  #影子价格
solution$duals.from  
solution$duals.to  #约束条件变动范围,在此范围内影子价格不变

灵敏度分析

灵敏度分析研究的是模型中参数发生变化时,问题的最优解会有什么改变;或者这些参数在多大范围内变化时,问题的最优解不变。

针对上述例子,提出一种灵敏度分析:固定某一种产品的利润,则另一种产品的利润在什么范围内变化,能使得该公司的最优生产计划不变。

solution = lp(direction, objective.vec, a, a.dir, a.rhs, compute.sens = TRUE)
solution$sens.coef.from
solution$sens.coef.to 

在这里插入图片描述
结果表示固定家电1的利润时,家电2利润的变化范围是 [2/3, 2],家电1同理。

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值