table { margin: auto }

线性规划的对偶问题

线性规划对偶问题概述

例1:某厂生产A,B, C三种产品,每种产品的单位利润分别为12,18和15,资源消耗如下表,求总利润最大的生产方案。

A B C 资源
原料1/单位产品 6 9 5 200
原料2/单位产品 12 16 17 360
人工/单位产品 25 20 12 780
利润 12 18 15

1. 自主生产

设生产A,B,C分别为\(x_1\),\(x_2\),\(x_3\)个单位,数学模型为(LP):

\begin{array}{l} \max z = 12{x_1} + 18{x_2} + 5{x_3}\\ s.t.\left\{ {\begin{array}{*{20}{c}} {6{x_1} + 9{x_2} + 5{x_3} \le 200}\\ {12{x_1} + 16{x_2} + 17{x_3} \le 360}\\ {25{x_1} + 20{x_2} + 12{x_3} \le 780}\\ {{x_1} \ge 0,{x_2} \ge 0,{x_3} \ge 0} \end{array}} \right. \end{array}

2. 外包资源

如果接受外来订单加工可看成将企业拥有的三种资源(原料1、原料2和人工)出售给对方,每单位资源售价(利润)为\(y_i\)(\(i=1,2,3\)),则6个单位资源1加12个单位资源2再加上25个小时人工相当于生产一个单位产品A1,故这些资源的总售价应至少为产品A1的售价,不然给别人加工不如自己生产产品A1,同理我们就得到如下对偶线性规划(DLP):

\begin{array}{l} \min w = 200{y_1} + 360{y_2} + 780{y_3}\\ s.t.\left\{ {\begin{array}{*{20}{c}} {6{y_1} + 12{y_2} + 25{y_3} \ge 12}\\ {9{y_1} + 16{y_2} + 20{y_3} \ge 18}\\ {5{y_1} + 17{y_2} + 12{y_3} \ge 5}\\ {{y_1} \ge 0,{y_2} \ge 0,{y_3} \ge 0} \end{array}} \right. \end{array}

影子价格

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

1. 对偶的经济解释

如果把线性规划约束看成广义资源约束,右边项代表资源的可用量,其经济含义是资源对经济目标的边际贡献。目标函数值通常用价值量衡量,对偶解也具有价值内涵,被称为影子价格。影子价格是对偶解十分形象的名称,它既表明对偶解是对资源的一种客观估价,又表明它是虚拟而不是真实的价格。

2. 影子价格的特点

(1)系统资源的最优估价:影子价格是综合考虑系统内所有因素和相互影响之后对资源在系统内的真实价值的估价。只有系统达到最优状态时才可能赋予该资源这种价值。因此,也有人称之为最优计划价格。

(2)影子价格是一种边际值:它与经济学中边际成本的概念相同,在管理中有十分重要的应有价值,管理者可以根据资源在本企业内影子价格的大小决定企业的经营策略。

(3)影子价格是一种机会成本:它与经济学中机会成本的概念相同,在决策中有十分重要的应有价值,管理者可以根据机会成本的大小决定企业的资源是否应该使用。但这里的机会成本只是企业生产范围内机会成本。

(4)影子价格与系统价值取向和状态有关:影子价格(\(y=C_B\)B-1\()的取值与系统的价值取向有关(反映在\)\(C_B\)上);影子价格受系统状态影响(反映在B-1上);系统内部资源数量和价格的任何变化都会引起影子价格的变化,从这种意义上讲,它是一种动态的价格体系。

(5)反映资源在系统内的稀缺程度:如果资源在系统内供大于求,其影子价格为零。增加该资源的供应不会给系统目标带来任何变化。如果是稀缺资源,其影子价格大于零。价格越高,资源的稀缺程度越高。按以下原则考虑经营策略:影子价格高于市场价格(或≥0)表明资源有获利能力,购入该资源。影子价格低于市场价格(或≤0)表明该资源无获利能力,出让该资源。影子价格等于市场价格(或=0)表明该资源处于平衡状态,既不用买入,也不必卖出。

影子价格R计算

例2:奶制品加工问题

一奶制品加工厂用牛奶生产A1和A2两种产品,一桶牛奶可以在甲车间用12h加工成3kg的A1产品,或者在乙车间用8h加工成4kg的A2产品。两种产品的利润分别为24元/kg和16元/kg。1kgA1产品在甲车间用2小时和3元成本加工成0.8kg B1产品,每千克B1产品可获利44元。1千克A2产品在乙车间用2小时和3元成本加工成0.75千克B2产品,每千克B2产品可获利32元。加工厂每天得到50桶牛奶的供应,每天正式工人总的劳动时间为480个小时,甲车间的设备上限为每天100千克,乙车间无限制。

A1 A2 B1 B2 资源
牛奶 1 1 50
甲车间 3 100
A1 1
A2 1
总工时 12 8 2 2 480
单位利润 24 16 44 32

(1)制定一个生产计划,是每天的获利最大。

(2)30元可增加1桶牛奶,3元可增加1小时时间,是否应该投资?现投资150元,可赚回多少?

(3)B1、B2的获利经常有10%的波动,对计划有无影响?

!!!注意A1和A2既是产品又是制造B1和B2的原料

1. 建立数学模型

依题意,一桶牛奶在甲车间经过12小时可生产3KG A1产品,1KG A1产品经过2小时和3元成本可生产0.8KGB1产品,每千克B1获利44元;一桶牛奶在乙车间经过8小时可生产4KG A2产品,1KG A2产品经过2小时和3元成本可生产0.75KG B2产品,每千克B2获利32元。设有\(x_1\)桶牛奶用于生产A1,\(x_2\)桶牛奶用于生产A2,\(x_3\)桶牛奶用于生产B1,\(x_4\)桶牛奶用于生产B2,最后A1产品为3\(x_3\),A2产品为4\(x_4\),生产的B1产品为2.4\(x_3\),生产的B2产品为3\(x_4\),得利润为

\begin{array}{l} \ {3\times32}{x_1} + {4\times16}{x_2}+ {2.4\times44}{x_3} + {3\times32}{x_4}- {3\times3}{x_3}-{3\times4}{x_4}\end{array}

建立模型为

\begin{array}{l} \ max z = 72{x_1} + 64{x_2} + 96.6{x_3} + 84{x_4}\\ s.t.\left\{ {\begin{array}{*{20}{c}} {{x_1} + {x_2} + {x_3} + {x_4} \le 50}\\ {12{x_1} + 8{x_2} + 18{x_3} + 16{x_4}\le 480}\\ {3{x_1} + 5.4{x_3} \le 100}\\ {{x_1} \ge 0,{x_2} \ge 0,{x_3}\ge 0,{x_4} \ge 0} \end{array}} \right. \end{array}

第2个约束是因为所用人工总量为\(12x_1\)+\(8x_2\)+\(12x_3\)+\({2\times3}\)\(x_3\)+\(8x_4\)+\({2\times4}\)\(x_4\);第3个约束是因为甲车间的生产总数量为\(3x_1\)+\(3x_3\)+\({0.8\times3}\)\(x_3\)。

2. 模型R求解

(1)制定一个生产计划,是每天的获利最大。

1.1 R计算程序
library(lpSolve)
c<-c(72,64, 96.6,84)
A<-matrix(c(1,1,1,1,12,8,18,16,3,0,5.4,0),nrow=3,byrow=T)
d<-rep("<=",3)
b<-c(50,480,100)
lp.sol<-lp(direction="max",objective.in=c,const.mat=A,const.dir=d,const.rhs=b,compute.sens=1)
1.2 R计算结果
lp.sol$solution  #变量的值
lp.sol$objval #目标函数的值
lp.sol$solution #变量的值
[1] 0 42 8 0
lp.sol$objval #目标函数的值
[1] 3460.8
1.3 结果解释

每天用42桶牛奶生产A2产品,8桶牛奶生产B1产品,获利最多为3460.8元。

(2)30元可增加1桶牛奶,3元可增加1小时时间,是否应该投资?现投资150元,可赚回多少?

1.1 R计算程序
rbind(lp.sol$duals,lp.sol$duals.from,lp.sol$duals.to)
1.2 R计算结果
         [,1]     [,2]   [,3]      [,4]   [,5]   [,6]      [,7]
[1,] 37.92000 3.2600 0e+00 -5.04e+00 0e+00 0e+00 -6.08000
[2,] 36.85185 400.0000 -1e+30 -1.00e+30 -1e+30 -1e+30 -13.14815
[3,] 60.00000 585.1852 1e+30 2.00e+01 1e+30 1e+30 10.00000
1.3 结果解释

关于原料供应约束的影子价格为37.92元,上限为60桶,关于劳动时间的影子价格为3.26元。每增加一桶牛奶的成本为30元,可获利7.92元,每增加一小时时间的成本为3元,可获利0.26元,因为都获利,所以应该投资。

因为每单位价格牛奶的获利大于每单位价格劳动时间的获利,所以在区间内应该全选牛奶,150元可以买5桶牛奶,在区间内,所以应该全投资买牛奶,获利为39.6元。

(3)B1、B2的获利经常有10%的波动,对计划有无影响?

1.1 R计算程序
rbind(lp.sol$sens.coef.from,lp.sol$sens.coef.to)
1.2 R计算结果
           [,1] [,2] [,3]       [,4]
[1,] -1.000e+30 55.6 89 -1.000e+30
[2,] 7.704e+01 96.6 144 9.008e+01
1.3 结果解释

最优解不变时,B1系数b1的变化区间为 [89,144] ,B2系数b2的变化区间为 [-\(∞\),90.08] ,所以当B1降价10%或B2涨价10%都对计划有影响;当B1张价10%或B2降价10%对计划没有影响。

参考文献

  1. R语言-运筹学线性规划
  2. 线性规划模型与R
  3. 运筹学专业课考点

对偶问题影子价格求解—R实现的更多相关文章

  1. SVM 为什么要从原始问题变为对偶问题来求解

    这个问题困扰了我许久,下面是我搜集整理到的答案 对偶问题将原始问题中的约束转为了对偶问题中的等式约束 方便核函数的引入 改变了问题的复杂度.由求特征向量w转化为求比例系数a,在原始问题下,求解的复杂度 ...

  2. R语言:规划求解优化ROI

    今天看到一篇文章介绍如何用excel建模对ROI 进行规划求解. 蓝鲸的网站分析笔记 成本 Cost 每次点击费用 CPC 点击量 \[clickRate = \frac{cost}{CPC}\] 转 ...

  3. 感知器、逻辑回归和SVM的求解

    这篇文章将介绍感知器.逻辑回归的求解和SVM的部分求解,包含部分的证明.本文章涉及的一些基础知识,已经在<梯度下降.牛顿法和拉格朗日对偶性>中指出,而这里要解决的问题,来自<从感知器 ...

  4. 4. SVM分类器求解(2)

    最优间隔分类器(optimal margin classifier) 重新回到SVM的优化问题: 我们将约束条件改写为: 从KKT条件得知只有函数间隔是1(离超平面最近的点)的线性约束式前面的系数,也 ...

  5. 序列最小最优化算法(SMO)-SVM的求解(续)

    在前一篇文章中,我们给出了感知器和逻辑回归的求解,还将SVM算法的求解推导到了最后一步,在这篇文章里面,我们将给出最后一步的求解.也就是我们接下来要介绍的序列最小最优化算法. 序列最小最优化算法(SM ...

  6. 带约束优化问题 拉格朗日 对偶问题 KKT条件

    转自:七月算法社区http://ask.julyedu.com/question/276 咨询:带约束优化问题 拉格朗日 对偶问题 KKT条件 关注 | 22 ... 咨询下各位,在机器学习相关内容中 ...

  7. R读取MySQL数据出现乱码,解决该问题的方法总结

    最终的解决办法直接看 4 我的思路: 我用的都是utf-8编码,电脑系统win7, MySQL-Front进行数据库的可视化. 1.我用的是RStudio,先去设置R的默认编码: Tools→Glob ...

  8. 拉格朗日乘子法与KKT条件 && SVM中为什么要用对偶问题

    参考链接: 拉格朗日乘子法和KKT条件 SVM为什么要从原始问题变为对偶问题来求解 为什么要用对偶问题 写在SVM之前——凸优化与对偶问题 1. 拉格朗日乘子法与KKT条件 2. SVM 为什么要从原 ...

  9. 三种SVM的对偶问题

    一.SVM原问题及要变成对偶问题的解决办法 对于SVM的,我们知道其终于目的是求取一分类超平面,然后将新的数据带入这一分类超平面的方程中,推断输出结果的符号,从而推断新的数据的正负. 而求解svm分类 ...

  10. 拉格朗日乘子法 - KKT条件 - 对偶问题

    接下来准备写支持向量机,然而支持向量机和其他算法相比牵涉较多的数学知识,其中首当其冲的就是标题中的拉格朗日乘子法.KKT条件和对偶问题,所以本篇先作个铺垫. 大部分机器学习算法最后都可归结为最优化问题 ...

随机推荐

  1. 【APT】Hades APT组织针对乌克兰发起网络攻击事件分析

    背景 Hades一个充满神秘色彩的APT组织,该组织因为2017年12月22日针对韩国平昌冬奥会的攻击活动被首次发现,后来卡巴斯基将该次事件的攻击组织命名为Hades.但是该攻击组织的归属问题却一直未 ...

  2. echarts区域选择(brush)默认开启选择

    api.dispatchAction({ // 刷选模式的开关.使用此 action 可将当前鼠标变为可刷选状态. 事实上,点击 toolbox 中的 brush 按钮时,就是通过这个 action, ...

  3. python 函数默认值误区

    当创建python函数时,默认值参数实在执行def语句的时候创建的也即是在创建该函数的时候,而不是在调用该函数的时候创建的. def append(x, lst = []): lst.append(x ...

  4. 修改allure图标和标题

    allure的logo更换步骤 1.找到allure安装目录,进入目录如:D:\Program Files\allure-2.17.3\plugins\custom-logo-plugin\stati ...

  5. 第12组 Beta冲刺 总结

    1.基本情况: 组长博客链接:https://www.cnblogs.com/yaningscnblogs/p/14050343.html 答辩总结:答辩中,对于老师提出的意见,我们认为能够帮助我们更 ...

  6. springMVC的定时器

    大家好,本人从事软件行业已有8年,大部分时间从事软件开发编写工作.好了废话少说了哈哈哈,直接干货. 在Java开发过程中有很多业务需求里面需要我们实时处理一些动态的业务比如库存的数据动态更新,实时数据 ...

  7. MySQL数据库封锁机制和事务隔离级别

    参考: 数据库技术:MySql学习笔记之事务隔离级别详解 详解MySQL 数据库隔离级别与MVCC MySQL 事务&&锁机制&&MVCC 数据库系统原理 - MySQ ...

  8. Spring Cloud netty

    <properties> <spring.boot.version>2.3.2.RELEASE</spring.boot.version> <spring.c ...

  9. CH573 CH582 CH579蓝牙从机(peripheral)例程讲解二(广播内容修改)

    在上一篇外设例程讲解中讲述了蓝牙从机的收发接口,这样可以快速的上手,那么接下来就讲解另一个重要设置,从机的广播. 在peripheral例程中,一直是以50ms的周期进行广播,使用手机软件扫描可以获取 ...

  10. 后端008_配置Security登录授权过滤器

    ------------恢复内容开始------------ 现在我们就可以去进行springscurity的配置了.首先我们新建一个配置类.然后该类需要添加@Configuration注解,然后还要 ...