• 首先要了解线性规划表达式的最简单的一种——矩阵表达式:记住其中A,b,c的位置以及含义。A是技术系数,b是资源约束,c是价值系数

一般的solve只会出slack or surplus ,随便给一个线性规划如下:

  • max=2*x1+x2; 5*x2<=15; 6*x1+2*x2<=24; x1+x2<=5;
  • slack or surplus表示在最优解为(3.5,1.5)的情况下三种约束是否有剩余;
  • dual price表示在每增加一个单位的资源的情况下,最优值的增加情况,也就是著名的影子价格
    eg:
    每增加一单位的约束条件1的资源(不等式右侧,即15多了1),最优值增加0;
    每增加一单位的约束条件2的资源(不等式右侧,即24多了1),最优值增加0.25;同理推约束条件3

- 为了用LINGO进行灵敏度分析,影子价格不够用,需要把range调出来探究资源系数(b),价值系数©对最优值(z)和最优解(x*)的影响(为啥没A,因为确实没得),在range情况下,最优解x是不变的,三大系数只会影响最优值z的大小。*

- 调用range——solver→options→general solver→dual computations→price&ranges→应用apply→ctrl+R

  • 如果出现syntax 232还是多少来着就去将multithreadings内的Threads调为avaliable或者其它什么东西然后就不报错了就直接出结果了不知道为什么。使用ctrl+R运行得到如下图结果:
  • sobol灵敏度分析 python lingo 灵敏度分析_约束条件

  • **目标系数范围(objective coefficient ranges)就是技术系数(c)**的范围
  • sobol灵敏度分析 python lingo 灵敏度分析_线性规划_02

  • increase表示x1系数的上误差限,decrease表示x1系数的下误差限结合就是c1=(2-1,2+1)范围时,最优解(3.5,1.5)不变,最优值z*我没算按理来说应该是要变的;
    具体变化情况直接将变化后的c代入目标函数。同理可以推x2的系数变化导致最优解不变的范围。
  • 右手边范围(righthand side ranges)就是资源系数(b)的范围。
  • sobol灵敏度分析 python lingo 灵敏度分析_sobol灵敏度分析 python_03

  • 该行表示b1变化范围为[7.5,+∞)时最优解x不变,,最优值z我没算按理来说应该是要变的;同理递推row 3和row 4。

最后还有个价值系数A,这就是个矩阵,这个东西变化的范围不好说啊,具体的咋变了直接带进去就行了吧没有变化范围一说吧。我不懂别B我。