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

Posted 书槑

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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同理。

以上是关于R语言-运筹学线性规划实例的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

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

R语言-运筹学虚拟变量运输问题实例

R语言-运筹学指派和运输问题实例