lingo结果分析及灵敏性分析

lingo结果分析及灵敏性分析
lingo结果分析及灵敏性分析

lingo结果分析及灵敏性分析

问题描述

程序代码:

max = 60*desks + 30*tables + 20*chairs;

8*desks + 6*tables + chairs <= 48;

2*desks + 1.5*tables + 0.5*chairs <= 8;

4*desks + 2*tables + 1.5*chairs <= 20;

tables<= 5;

部分结果一:

Variable Value Reduced Cost

DESKS 2.000000 0.000000

TABLES 0.000000 5.000000

CHAIRS 8.000000 0.000000

⑴Value:给出最优解中各变量的值,Value=0(非基变量),反之为基变量。

⑵Reduced Cost:表示当非基变量有微小变动时, 目标函数的变化率。本例中:

变量tables 对应的reduced cost 值为5,表示当非基变量tables 的值从0 变为1 时(此时假定其他非基变量保持不变,但为了满足约束条件,基变量显然会发生变化),最优的目标函数值= 280 - 5 = 275。

部分结果二:

Row Slack or Surplus Dual Price

1 280.0000 1.000000

2 24.00000 0.000000

3 0.000000 10.00000

4 0.000000 10.00000

5 5.000000 0.000000

⑴“Slack or Surplus”――松驰变量。

⑵“Dual Price”――对偶价格表示当对应约束有微小变动时, 目标函数的变化

率。若其数值为p,表示对应约束中不等式右端项若增加1个单位,目标函数将增加p个单位(max 型问题)。

⑶如果在最优解处约束正好取等号(紧约束,也称为有效约束或起作用约束),

对偶价格值才可能不是0。本例中:第3、4 行是紧约束,对应的对偶价格值为10,表示当紧约束4) 4 DESKS + 2 TABLES + 1.5 CHAIRS <= 20 变为4)

4 DESKS + 2 TABLES + 1.

5 CHAIRS <= 21 时,目标函数值= 280 +10 = 290。

灵敏度分析

激活灵敏性分析,运行LINGO|Options,选择General Solver,在Dual Computations 列表框中,选择Prices and Ranges 选项。

Ranges in which the basis is unchanged:

Objective Coefficient Ranges:

Current Allowable Allowable

Variable Coefficient Increase Decrease

DESKS 60.00000 20.00000 4.000000

TABLES 30.00000 5.000000 INFINITY

CHAIRS 20.00000 2.500000 5.000000

Right hand Side Ranges:

Current Allowable Allowable

Row RHS Increase Decrease

2 48.00000 INFINITY 24.00000

3 8.000000 2.000000 1.333333

4 20.00000 4.000000 4.000000

5 5.000000 INFINITY 5.000000

⑴灵敏性分析结果表示的是最优基保持不变的系数范围。需要注意的是并不一

定要在此范围内,超出时需重新建模。

⑵讨论DESKS在[60-4,60+20] = [56,80]范围变化时,需保持TABLES为30、

CHAIRS为20。

⑶费用系数变,RHS不变,最优解不变、最优值变化;只要RHS发生变化,最

优解、最优值都发生变化。

lingo灵敏度分析实例

一个实例理解Lingo的灵敏性分析 线性规划问题的三个重要概念: 最优解就是反应取得最优值的决策变量所对应的向量。 最优基就是最优单纯形表的基本变量所对应的系数矩阵如果其行列式是非奇异的,则该系数矩阵为最优基。 最优值就是最优的目标函数值。 Lingo的灵敏性分析是研究当目标函数的系数和约束右端项在什么范围(此时假定其它系数不变)时,最优基保持不变。灵敏性分析给出的只是最优基保持不变的充分条件,而不一定是必要条件。下面是一道典型的例题。 一奶制品加工厂用牛奶生产A1,A2两种奶制品,1桶牛奶可以在甲车间用12小时加工成3公斤A1,或者在乙车间用8小时加工成4公斤A2。根据市场需求,生产的A1,A2全部能售出,且每公斤A1获利24元,每公斤A2获利16元。现在加工厂每天能得到50桶牛奶的供应,每天正式工人总的劳动时间480小时,并且甲车间每天至多能加工100公斤A1,乙车间的加工能力没有限制。试为该厂制订一个生产计划,使每天获利最大,并进一步讨论以下3个附加问题: 1)若用35元可以买到1桶牛奶,应否作这项投资?若投资,每天最多购买多少桶牛奶?2)若可以聘用临时工人以增加劳动时间,付给临时工人的工资最多是每小时几元? 3)由于市场需求变化,每公斤A1的获利增加到30元,应否改变生产计划? 模型代码: max=72*x1+64*x2; x1+x2<=50; 12*x1+8*x2<=480; 3*x1<=100; 运行求解结果: Objective value: 3360.000 Variable Value Reduced Cost X1 20.00000 0.000000 X2 30.00000 0.000000 Row Slack or Surplus Dual Price 1 3360.000 1.000000 2 0.000000 48.00000 3 0.000000 2.000000 4 40.00000 0.000000 这个线性规划的最优解为x1=20,x2=30,最优值为z=3360,即用20桶牛奶生产A1, 30桶牛奶生产A2,可获最大利润3360元。输出中除了告诉我们问题的最优解和最优值以外,还有许多对分析结果有用的信息。 其中,“Reduced Cost”列出最优单纯形表中判别数所在行的变量的系数,表示当变量有微小变动时, 目标函数的变化率。其中基变量的reduced cost值应为0,对于非基变量Xj, 相应的reduced cost值表示当某个变量Xj 增加一个单位时目标函数减少的量( max型问题)。本例中X1,X2均为基变量。 “Slack or Surplus”给出松驰变量的值,模型第一行表示目标函数,所以第二行对应第一个约束。3个约束条件的右端不妨看作3种“资源”:原料、劳动时间、车间甲的加工能力。输出中Slack or Surplus给出这3种资源在最优解下是否有剩余:原料、劳动时间的剩余均为

matlab、lingo程序代码23-线性规划问题及灵敏度分析

线性规划问题及灵敏度分析在LINGO软件中的实现 (龙少波李东阳罗添元) 一、问题的提出: 某公司饲养实验用的动物以出售给动物研究所,已知这些动物的生长对饲 料中3种营养成分(蛋白质、矿物质和维生素)特别敏感,每个动物每周至少需 要蛋白质60g,矿物质3g,维生素8mg,该公司能买到5种不同的饲料,每种饲 料1kg所含各种营养成分和成本如下表所示,如果每个小动物每周食用饲料不超 过52kg,才能满足动物生长需要。 A1 A2 A3 A4 A5 营养最 低 要求蛋白质(g) 0.3 2 1 0.6 1.8 60 矿物质(g) 0.1 0.05 0.02 0.2 0.05 3 维生素(mg) 0.05 0.1 0.02 0.2 0.08 8 成本(元/ kg)0.2 0.7 0.4 0.3 0.5 问题: 1.求使得总成本最低的饲料配方? 2.如果另一个动物研究对蛋白质的营养要求变为59单位, 但是要求动物的价格比现在的价格便宜0.3元,问该养殖所 值不值得接受? 3.由于市场因素的影响,X2的价格降为0.6元每千克, 问是否要改变饲料配方? 二、建立线性规划数学模型 解答: (1)设需要饲料A1, A2, A3, A4分别为X1, X2, X3, X4kg,则建立线 性规划数学模型如下: 目标函数:MinS=0.2X1+0.7X2+0.4X3+0.3X4+0.5X5 约束条件:0.3X1+2X2+X3+0.6X4+1.8X5>=60 0.1X1+0.05X2+0.02X3+0.2X4+0.05X5>=3 005X1+0.1X2+0.02X3+0.2X4+0.08X5>=8

数学中的灵敏度分析

假设条件成为了建模过程中一个影响模型好坏的影响因素,灵敏度分析就是在模型建立后,对假设条件变化,检验模型的优劣性 一般来说Lingo做出来的灵敏度分析能够达到一个比较理想的程度,不过还是要根据模型本身来研究,建议你在开始之前先学习一下《数值分析》,对建模的灵敏度分析很有用哈,再根据《数值分析》的方法,对M-C(蒙特卡罗)方法进行灵敏度分析,你会很快掌握~~~ 随着现代工业的迅速发展,对工业设备的精度提出了更高的要求。但是,由于制造误差、轴承间隙、弹性变形等因素的影响,不可避免地会对设备的精度产生一定的影响。因此我们就有必要建立起一个数学模型并且应用恰当的分析方法来研究上述的各种误差对精度的影响关系,找出影响最大的因素,作为我们在实际的制造和装配过程中进行误差分配,降低生产成本,提高传动精度的理论依据。这里就可以采用灵敏度分析的方法。它主要包括局部灵敏度分析方法和全局灵敏度分析方法。 一、局部灵敏度分析方法 局部法主要分析因素对模型的局部影响(如某点)。局部法可以得到参数对输出的梯度,这一数值是许多领域研究中所需要的重要数据。局部法主要应用于数学表达式比较简单,灵敏度微分方程较易推出,不确定因素较少的系统模型中。主要包括直接求导法、有限差分法、格林函数法。 1.直接求导法 对于输入因素个数少、结构不复杂、灵敏度微分方程较易推导的系统或模型,直接法是一种简单快速的灵敏度分析方法。时变(非静止)系统可以用微分或微分-代数方程进行描述。假设要考虑的初值问题是 ,(1) 同样,代表n维输出变量,代表m维输入因素。代表初值数组。 式(1)对输入因素微分得到下述的灵敏度微分方程

(2) 或以矩阵形式表示为(3) 式中,是系统代数-微分方程右边对系统输出变量的导数(可称为雅可比矩阵),是对输入因素的导数,也可称为参数雅可比。微分方程(2)的初始条件为零向量。 上述的直接法建立在微分方程(2)的基础上,要得到其灵敏度矩阵S的解,需要先求得矩阵J和F的值。而矩阵的值又是由系统变量的真实值确定,因此,需同时或预先求得(1)方程的解。 对于非时变(静止)系统,将其代数方程,式中,Y是n维输出变量,X是m维输入因素。令表示隐性代数方程式的解。对输入因素求导数,得到下面的灵敏度公式: (4) 式中,称为静态灵敏度矩阵,和由静态点的变量值计算。对于变量少、结构不复杂、灵敏度微分方程较易推出的系统,直接法是一个简单快速的灵敏度分析方法。 2.有限差分法 局部灵敏度最简单的计算方法是有限差分法,其基本做法是使设计变量有一个微小的摄动,用差分格式来计算输出对设计变量的近似导数。其中比较简单的是采用向前差分格式 (5) 式中,截断误差与同阶。有时采用更为精确的中心差分公式 (6) 而,

最优化方法(线性规划)——用Lingo对线性规划进行灵敏度分析

lingo 软件求解线性规划及灵敏度分析 注:以目标函数最大化为例进行讨论,对求最小的问题,有类似的分析方法!所有程序运行环境为lingo10。 一、用lingo 软件求解线性规划 例1: m a x 23..4310 3512,0 z x y s t x y x y x y =++≤+≤≥ 在模型窗口输入: model: max=2*x+3*y; 4*x+3*y<=10; 3*x+5*y<12; ! the optimal value is :7.454545 ; End 如图所示: 运行结果如下(点击 工具栏上的‘solve ’或点击菜单‘lingo ’下的‘solve ’即可): Global optimal solution found. Objective value: 7.454545(最优解函数值) Infeasibilities: 0.000000 Total solver iterations: 2(迭代次数)

Variable (最优解) Value Reduced Cost X 1.272727 0.000000 Y 1.636364 0.000000 Row Slack or Surplus Dual Price 1 7.454545 1.000000 2 0.000000 0.9090909E-01 3 0.000000 0.5454545 例2: 12123124125m a x 54.. 390280450 z x x s t x x x x x x x x x x =+++=++=++=≥ 在模型窗口输入: model: max=5*x1+4*x2; x1+3*x2+x3=90; 2*x1+x2+x4=80; x1+x2+x5=45; end 运行(solve )结果如下: Global optimal solution found. Objective value: 215.0000 Infeasibilities: 0.000000 Total solver iterations: 3 Variable Value Reduced Cost X1 35.00000 0.000000 X2 10.00000 0.000000 X3 25.00000 0.000000 X4 0.000000 1.000000 X5 0.000000 3.000000 Row Slack or Surplus Dual Price 1 215.0000 1.000000 2 0.000000 0.000000 3 0.000000 1.000000 4 0.000000 3.000000 例3

【2017年整理】lingo灵敏度分析实例

【2017年整理】lingo灵敏度分析实例一个实例理解Lingo的灵敏性分析 线性规划问题的三个重要概念: 最优解就是反应取得最优值的决策变量所对应的向量。 最优基就是最优单纯形表的基本变量所对应的系数矩阵如果其行列式是非奇异的,则该系数矩阵为最优基。 最优值就是最优的目标函数值。 Lingo的灵敏性分析是研究当目标函数的系数和约束右端项在什么范围(此时假定其它系数不变)时,最优基保持不变。灵敏性分析给出的只是最优基保持不变的充分条件,而不一定是必要条件。下面是一道典型的例题。 一奶制品加工厂用牛奶生产A1,A2两种奶制品,1桶牛奶可以在甲车间用12小时加工成3公斤A1,或者在乙车间用8小时加工成4公斤A2。根据市场需求,生产的A1,A2全部能售出,且每公斤A1获利24元,每公斤A2获利16元。现在加工厂每天能得到50桶牛奶的供应,每天正式工人总的劳动时间480小时,并且甲车间每天至多能加工100公斤A1,乙车间的加工能力没有限制。试为该厂制订一个生产计划,使每天获利最大,并进一步讨论以下3个附加问题: 1) 若用35元可以买到1桶牛奶,应否作这项投资,若投资,每天最多购买多少桶牛奶, 2) 若可以聘用临时工人以增加劳动时间,付给临时工人的工资最多是每小时几元, 3) 由于市场需求变化,每公斤A1的获利增加到30元,应否改变生产计划, 模型代码: max=72*x1+64*x2; x1+x2<=50; 12*x1+8*x2<=480;

3*x1<=100; 运行求解结果: Objective value: 3360.000 Variable Value Reduced Cost X1 20.00000 0.000000 X2 30.00000 0.000000 Row Slack or Surplus Dual Price 1 3360.000 1.000000 2 0.000000 48.00000 3 0.000000 2.000000 4 40.00000 0.000000 这个线性规划的最优解为x1=20,x2=30,最优值为z=3360,即用20桶牛奶生产A1, 30桶牛奶生产A2,可获最大利润3360元。输出中除了告诉我们问题的最优解和最优值以外,还有许多对分析结果有用的信息。 其中,“Reduced Cost”列出最优单纯形表中判别数所在行的变量的系数,表示当变量有微小变动时, 目标函数的变化率。其中基变量的reduced cost值应为0,对于非基变量 Xj, 相应的 reduced cost值表示当某个变量Xj 增加一个单位时目标函数减少的量( max型问题)。本例中X1,X2均为基变量。 “Slack or Surplus”给出松驰变量的值,模型第一行表示目标函数,所以第二行对应第一个约束。3个约束条件的右端不妨看作3种“资源”:原料、劳动时间、车间甲的加工能力。输出中Slack or Surplus给出这3种资源在最优解下是否有剩余:原料、劳动时间的剩余均为 零,车间甲尚余40(公斤)加工能力。

灵敏性分析

LINGO灵敏性分析(Range,Ctrl+R) 用该命令产生当前模型的灵敏性分析报告:研究当目标函数的费用系数和约束右端项在 什么范围(此时假定其它系数不变)时,最优基保持不变。灵敏性分析是在求解模型时作出的,因此在求解模型时灵敏性分析是激活状态,但是默认是不激活的。为了激活灵敏性分析,运行 LINGO|Options…,选择 General Solver Tab,在 Dual Computations 列表框中,选择 Prices and Ranges 选项。灵敏性分析耗费相当多的求解时间,因此当速度很关键时,就没有必要激活它。 下面我们看一个简单的具体例子。 例 5.1某家具公司制造书桌、餐桌和椅子,所用的资源有三种:木料、木工和漆工。生产数据如下表所示: 若要求桌子的生产量不超过 5 件,如何安排三种产品的生产可使利润最大? 用 DESKS、TABLES 和 CHAIRS 分别表示三种产品的生产量,建立 LP 模型。 max=60*desks+30*tables+20*chairs; 8*desks+6*tables+chairs<=48; 4*desks+2*tables+1.5*chairs<=20; 2*desks+1.5*tables+.5*chairs<=8; tables<=5; 求解这个模型,并激活灵敏性分析。这时,查看报告窗口(Reports Window),可以看 到如下结果。

“Global optimal solution found at iteration: 3”表示 3 次迭代后得到全局最优解。“Objective value:280.0000”表示最优目标值为 280。“Value”给出最优解中各变量的值:造 2 个书桌(desks), 0 个餐桌(tables), 8 个椅子(chairs)。所以 desks、chairs 是基变量(非 0), tables 是非基变量(0)。 “Slack or Surplus”给出松驰变量的值: 第 1 行松驰变量 =280(模型第一行表示目标函数,所以第二行对应第一个约束) 第 2 行松驰变量 =24 第 3 行松驰变量 =0 第 4 行松驰变量 =0 第 5 行松驰变量 =5 “Reduced Cost”列出最优单纯形表中判别数所在行的变量的系数,表示当变量有微小变动时, 目标函数的变化率。其中基变量的 reduced cost 值应为 0,对于非基变量 Xj, 相应的 reduced cost 值表示当某个变量 Xj 增加一个单位时目标函数减少的量( max 型问题)。本例中:变量 tables 对应的 reduced cost 值为 5,表示当非基变量 tables 的值从 0变为 1 时(此时假定其他非基变量保持不变,但为了满足约束条件,基变量显然会发生变化),最优的目标函数值 = 280 - 5 = 275。 “DUAL PRICE”(对偶价格)表示当对应约束有微小变动时, 目标函数的变化率。输 出结果中对应于每一个约束有一个对偶价格。若其数值为 p,表示对应约束中不等式右端项若增加 1 个单位,目标函数将增加 p 个单位(max 型问题)。显然,如果在最优解处约束正好取等号(也就是“紧约束”,也称为有效约束或起作用约束),对偶价格值才可能不是0。本例中:第 3、4 行是紧约束,对应的对偶价格值为 10,表示当紧约束 3) 4 DESKS + 2 TABLES + 1.5 CHAIRS <= 20 变为 3) 4 DESKS + 2 TABLES + 1.5 CHAIRS <= 21 时,目标函数值 = 280 +10 = 290。对第 4 行也类似。 对于非紧约束(如本例中第 2、5 行是非紧约束),DUAL PRICE 的值为 0, 表示对应约束中不等式右端项的微小扰动不影响目标函数。有时, 通过分析 DUAL PRICE, 也可对产生不可行问题的原因有所了解。 灵敏度分析的结果是 目标函数中 DESKS 变量原来的费用系数为 60,允许增加(Allowable Increase)=4、允许减少(Allowable Decrease)=2,说明当它在[60-4,60+20] = [56,80]范围变化时,

lingo结果分析及灵敏性分析

lingo结果分析及灵敏性分析 问题描述 程序代码: max = 60*desks + 30*tables + 20*chairs; 8*desks + 6*tables + chairs <= 48; 2*desks + 1.5*tables + 0.5*chairs <= 8; 4*desks + 2*tables + 1.5*chairs <= 20; tables<= 5; 部分结果一: Variable Value Reduced Cost DESKS 2.000000 0.000000 TABLES 0.000000 5.000000 CHAIRS 8.000000 0.000000 ⑴Value:给出最优解中各变量的值,Value=0(非基变量),反之为基变量。

⑵Reduced Cost:表示当非基变量有微小变动时, 目标函数的变化率。本例中: 变量tables 对应的reduced cost 值为5,表示当非基变量tables 的值从0 变为1 时(此时假定其他非基变量保持不变,但为了满足约束条件,基变量显然会发生变化),最优的目标函数值= 280 - 5 = 275。 部分结果二: Row Slack or Surplus Dual Price 1 280.0000 1.000000 2 24.00000 0.000000 3 0.000000 10.00000 4 0.000000 10.00000 5 5.000000 0.000000 ⑴“Slack or Surplus”――松驰变量。 ⑵“Dual Price”――对偶价格表示当对应约束有微小变动时, 目标函数的变化 率。若其数值为p,表示对应约束中不等式右端项若增加1个单位,目标函数将增加p个单位(max 型问题)。 ⑶如果在最优解处约束正好取等号(紧约束,也称为有效约束或起作用约束), 对偶价格值才可能不是0。本例中:第3、4 行是紧约束,对应的对偶价格值为10,表示当紧约束4) 4 DESKS + 2 TABLES + 1.5 CHAIRS <= 20 变为4) 4 DESKS + 2 TABLES + 1. 5 CHAIRS <= 21 时,目标函数值= 280 +10 = 290。

Lingo与线性规划

Lingo 与线性规划 线性规划的标准形式是 1111111..0,1,2,,n n m mn n m i a x a x b s t a x a x b x i n +≤????+≤??≥= ? (1) 其中11n n z c x c x =++称为目标函数,自变量i x 称为决策变量,不等式组(1)称为约束条件. 满足不等式组(1)的所有1(,,)n x x 的集合称为可行域,在可行域里面使得z 取最小值 的**1(,,)n x x 称为最优解,最优解对应的函数值称为最优值。 求解优化模型的主要软件有Lingo 、Matlab 、Excel 等。其中Lingo 是一款专业求解优化模型的软件,有其他软件不可替代的方便功能。本文将简要介绍其在线性规划领域的应用。 一、基本规定 1、目标函数输入格式 max=函数解析式; 或者 min=函数解析式; 2、约束条件输入格式 利用:>、<、>=、<=等符号。但是>与>=没有区别。Lingo 软件默认所以自变量都大于等于0. 3、运算 加(+),减(-),乘(*),除(/),乘方(x^a),要注意乘号(*)不能省略。 4、变量名 不区分大小写字母,不超过32个字符,必须以字母开头。 5、标点符号 每个语句以分号“;”结束,感叹号“!”开始的是说明语句(说明语句也需要以分号“;”结束)。但是,model ,sets ,data 以“:”结尾。endsets ,enddata ,end 尾部不加任何符号。 6、命令不考虑先后次序 7、MODEL 语句 一般程序必须先输入MODEL :表示开始输入模型,以“END”结束。对简单的模型,这两个语句也可以省略。 8、改变变量的取值范围 @bin(变量名); 限制该变量为0或1. @bnd(a,变量名,b ); 限制该变量介于a,b 之间. @free(变量名); 允许该变量为负数. @gin(变量名); 限制该变量为整数. 例1 求目标函数1 223z x x =+的最小值,约束条件为 输入Lingo 程序: min = 2*x1 + 3*x2; x1 + x2 >= 350; x1 >= 100; 2*x1 + x2 <= 600; 有两种运行方式:

熟悉LINGO软件的灵敏度分析功能

熟悉LINGO软件的灵敏度分析功能

2012——2013学年第一学期 合肥学院数理系 实验报告 课程名称:运筹学 实验项目:熟悉LINGO软件的灵敏度分析功能实验类别:综合性□设计性□√验证性□专业班级: 姓名:学号: 实验地点: 实验时间: 2012年11月22日 指导教师:管梅成绩:

一.实验目的 1、学会使用LINGO 软件求解线性规划问题的灵敏度分析。 2、学会分析LINGO 软件求解的结果。 二.实验内容 1、求解线性规划: 12 1212max 2251228Z x x x x x x =++≥?? +≤? 并对价值系数、右端常量进行灵敏度分析。 2、已知某工厂计划生产I ,II ,III 三种产品,各产品需要在A 、B 、C 设备上加 I II III 设备有效台时 (每月) A 8 2 10 300 B 10 5 8 400 C 2 13 10 420 单位产品利润 (千元) 3 2 2.9 (1)如何发挥生产能力,使生产盈利最大? (2)若为了增加产量,可租用别工厂设备B ,每月可租用60台时,租金1.8万元,租用B 设备是否合算? (3)若另有二种新产品IV 、V ,其中新产品IV 需用设备A 为12台时、B 为5台时、C 为10台时,单位产品盈利2.1千元;新产品V 需用设备A 为4台时、B 为4台时、C 为12台时,单位产品盈利1.87千元。如A 、B 、C 的设备台时不增加,这两种新产品投产在经济上是否划算? (3)对产品工艺重新进行设计,改进结构。改进后生产每件产品I 需用设备A 为9台时、设备B 为12台时、设备C 为4台时,单位产品盈利4.5千元,这时对原计划有何影响? 三. 模型建立 1、模型略

Lingo例子(学生版)

Lingo实验例子 (例子来源:《运筹学教程》(第三版)胡运权主编清华大学出版社2007年第三版) 一、线性规划及单纯形法、灵敏度分析 例1 P28页例5 Lingo程序: max=2*x1+x2; 5*x2<=15; 6*x1+2*x2<=24; x1+x2<=5; 例2 P44页习题1.7(1)Lingo程序:model: max=2*x1-x2+2*x3; x1+x2+x3>=6; -2*x1+x3>=2; 2*x2-x3>=0; end 其余课本上的例题和习题同学们自己动手编写程序并进行调试运行,分析运行结果。二、运输问题 例3 P82页例1 Lingo程序: model: sets: gy/g1..g3/:ai; xs/x1..x4/:dj; link(gy,xs):c,x; endsets data: ai=16,10,22; dj=8,14,12,14; c=4,12,4,11 2,10,3,9 8,5,11,6; enddata min=@sum(link(i,j):c(i,j)*x(i,j) ); @for(gy(i):@sum(xs(j):x(i,j))=ai (i)); @for(xs(j):@sum(gy(i):x(i,j))=dj (j)); end 例4 P98页例5(转运)Lingo程序:model: sets: plant/x1..x5/:produce; customer/y1..y5/:require; link(plant,customer):c,x; endsets data: produce=60,90,50,50,50; require=50,50,50,80,70; c=-4,5,3,2,100 5,-1,2,100,4 3,2-3,5,5 2,100,5-3,6 100,4,5,6,-5; enddata min=@sum(link:c*x); @for(plant(i):@sum(customer(j):x (i,j))=produce(i)); @for(customer(j):@sum(plant(i):x (i,j))=require(j)); end 三、目标规划 例5 P108页例2 Lingo程序: 第一种做法分三步来完成 第一步:考虑目标:min= 11 Pd- model: min=dminus1; 5*x1+10*x2<=60; x1-2*x2+dminus1-dplus1=0; 4*x1+4*x2+dminus2-dplus2=36; 6*x1+8*x2+dminus3-dplus3=48; end 第二步:考虑目标:min= 1122 Pd P d -+ + model: min=dminus1+dplus2; 5*x1+10*x2<=60; x1-2*x2+dminus1-dplus1=0; 4*x1+4*x2+dminus2-dplus2=36; 6*x1+8*x2+dminus3-dplus3=48; end 第三步:考虑目标:min= 112233 Pd P d Pd -+- ++ model: min=dminus1+dplus2+dminus3;

灵敏度分析 使用MATLAB编写

实验二、线性规划的灵敏度分析 (一)实验目的 1. 线性规划求解的单纯形法的灵敏度分析的编程实现 2.掌握使用matlab、Lingo、Excel的规划求解功能求解,并利用“敏感性报告”进行分析。 (二)实验内容 课本例1 解的灵敏度分析 (1):调用单纯形程序: function [x,z,flg,sgma]=simplexfun(A,A1,b,c,m,n,n1,cb,xx) % A,b are the matric in A*x=b % c is the matrix in max z=c*x % A1 is the matric in simplex table % m is the numbers of row in A and n is the con number in A % n1 is the nubers of artificial variables,and artificial variables are default as the last % n1 variables in x. % cb is the worth coefficient matrix for basic variables % xx is the index matrix for basic variables % B1 is the invers matrix for the basic matrix in simplex table.The initial % matrix is default as the last m con in the matrix A. x=zeros(n,1); z=0; B1=A1(:,n-m+1:n); sgma1=c-(cb*B1)*A; [masg,kk]=max(sgma1); k=kk(1); flg=0; ll=0; while (masg>0)&&(ll<20) ll=ll+1; thita=1000+zeros(m,1); for i=1:m if A1(i,k)>0 thita(i)=A1(i,k)\b(i); end end [r8,c8]=find(thita>999); if sum(c8)

lingo灵敏度分析

灵敏度分析用于产生当前模型的灵敏性分析报告:研究当目标函数的费用系数和约束右端项在什么范围(此时假定其它系数不变)时,最优基保持不变。灵敏性分析是在求解模型时作出的,因此在求解模型时灵敏性分析是激活状态,但是默认是不激活的。为了激活灵敏性分析,运行LINGO|Options…,选择General Solver Tab,在Dual Computations列表框中,选择Prices and Ranges选项。灵敏性分析耗费相当多的求解时间,因此当速度很关键时,就没有必要激活它。 ·一个简单的具体例子 某家具公司制造书桌、餐桌和椅子,所用的资源有三种:木料、木工和漆工。生产数据 “Global optimal solution found at iteration: 表示3次迭代后得到全局最优解。“Objective value:表示最优目标值为280。“Value”给出最优解中各变量的值:造2个书桌(desks), 0个餐桌(tables), 8个椅子(chairs)。所以desks、chairs是基变量(非0),tables是非基变量(0)。 “Slack or Surplus”给出松驰变量的值: 第1行松驰变量=280(模型第一行表示目标函数,所以第二行对应第一个约束) 第2行松驰变量=24

第3行松驰变量=0 第4行松驰变量=0 第5行松驰变量=5 “Reduced Cost”列出最优单纯形表中判别数所在行的变量的系数,表示当变量有微小变动时, 目标函数的变化率。其中基变量的reduced cost值应为0,对于非基变量Xj, 相应的reduced cost值表示当某个变量Xj 增加一个单位时目标函数减少的量( max型问题)。本例中:变量tables对应的reduced cost值为5,表示当非基变量tables的值从0变为1时(此时假定其他非基变量保持不变,但为了满足约束条件,基变量显然会发生变化),最优的目标函数值= 280 - 5 = 275。 “DUAL PRICE”(对偶价格)表示当对应约束有微小变动时, 目标函数的变化率。输出结果中对应于每一个约束有一个对偶价格。若其数值为p,表示对应约束中不等式右端项若增加1 个单位,目标函数将增加p个单位(max型问题)。显然,如果在最优解处约束正好取等号(也就是“紧约束”,也称为有效约束或起作用约束),对偶价格值才可能不是0。本例中:第3、4行是紧约束,对应的对偶价格值为10,表示当紧约束 3) 4 DESKS + 2 TABLES + 1.5 CHAIRS <= 20 变为3) 4 DESKS + 2 TABLES + 1.5 CHAIRS <= 21 时,目标函数值= 280 +10 = 290。对第4行也类似。 对于非紧约束(如本例中第2、5行是非紧约束),DUAL PRICE 的值为0, 表示对应约束中不等式右端项的微小扰动不影响目标函数。有时, 通过分析DUAL PRICE, 也可对产生不可行问题的原因有所了解。 灵敏度分析的结果是 Ranges in which the basis is unchanged: Objective Coefficient Ranges Current Allowable Allowable Variable Coefficient Increase Decrease DESKS 60.00000 20.00000 4.000000 TABLES 30.00000 5.000000 INFINITY CHAIRS 20.00000 2.500000 5.000000 Righthand Side Ranges Row Current Allowable Allowable RHS Increase Decrease 2 48.00000 INFINITY 24.00000 3 20.00000 4.000000 4.000000 4 8.000000 2.000000 1.333333 5 5.000000 INFINITY 5.000000 目标函数中DESKS变量原来的费用系数为60,允许增加(Allowable Increase)=4、允许减少(Allowable Decrease)=2,说明当它在[60-4,60+20] = [56,80]范围变化时,最优基保持不变。对TABLES、CHAIRS变量,可以类似解释。由于此时约束没有变化(只是目标函数中某个费用系数发生变化),所以最优基保持不变的意思也就是最优解不变(当然,由于目标函数中费用系数发生了变化,所以最优值会变化)。 第2行约束中右端项(Right Hand Side,简写为RHS)原来为48,当它在[48-24,48+∞] = [24,∞]范围变化时,最优基保持不变。第3、4、5行可以类似解释。不过由于此时约束发生变化,最优基即使不变,最优解、最优值也会发生变化。

LINGO软件的使用

第三章 LINGO软件使用入门 LINGO是美国LINDO系统公司开发的一套专门用于求解最优化问题的软件.它为求解最优化问题提供了一个平台,主要用于求解线性规划、非线性规划、整数规划、二次规划、线性及非线性方程组等问题.它是最优化问题的一种建模语言,包含有许多常用的函数供使用者编写程序时调用,并提供了与其他数据文件的接口,易于方便地输入,求解和分析大规模最优化问题,且执行速度快.由于它的功能较强,所以在教学、科研、工业、商业、服务等许多领域得到了广泛的应用. §3.1 LINGO操作界面简介 在Windows操作系统下启动LINGO软件,屏幕上首先显示如图1.1所示的窗口. 图1.1 图1.1中最外层的窗口是LINGO软件的主窗口(LINGO软件的用户界面),所有其他窗口都在这个窗口之内.主窗口有:标题栏、菜单栏、工具栏和状态栏.目前,状态栏最左边显示的是“Ready”,表示准备就绪,右下角显示的是当前时间,时间前面是当前光标的位置“Ln 1,Col 1”(即1行1列).将来用户可以用选项命令(LINGO|Options|Interface菜单命令)决定是否需要显示工具栏和状态栏. LINGO有5个主菜单: ●File(文件) ●Edit(编辑) ●LINGO(LINGO系统) ●Windows(窗口) ●Help(帮助) 这些菜单的用法与Windows下其他应用程序的标准用法类似,下面只对主菜单中LINGO

系统的主要命令进行简要介绍. LINGO系统(LINGO)的主菜单 ●LINGO|Solve(Ctrl-S) LINGO|Solve(Ctrl-S)(求解)命令对当前模型进行编译并求解.如果当前模型输入有错误,编译时将报告错误.求解时会显示一个求解器运行状态窗口. ●LINGO|Solution(Ctrl-O) LINGO|Solution(Ctrl-O)(解答)命令显示当前解. ●LINGO|Range(Ctrl-R) LINGO|Range(Ctrl-R)(灵敏度分析)命令显示当前解的灵敏度分析结果.(你必须在此之前求解过当前模型) ●LINGO|Options(Ctrl-I) LINGO|Options(Ctrl-I)(选项)命令将打开一个含有7个选项卡的对话框窗口,你可以通过它修改LINGO系统的各种控制参数和选项.修改完以后,你如果单击“应用”按钮,则新的设置马上生效;如果单击“OK”按钮,则新的设置马上生效,并且同时关闭该窗口;如果单击“Save”按钮,则将当前设置变为默认设置,下次启动LINGO时这些设置仍然有效;如果单击“Default”按钮,则恢复LINGO系统定义的原始默认设置;如果单击“Cancel”按钮将废弃本次操作,退出对话框;单击“Help”按钮将显示本对话框的帮助信息. ●LINGO|Generate和LINGO|Picture LINGO|Generate和LINGO|Picture命令都是在模型窗口下才能使用,他们的功能是按照LINGO模型的完整形式分别以代数表达式形式和矩阵图形形式显示目标函数和约束. ●LINGO|Debug(Ctrl+D) LINGO|Debug(Ctrl+D)命令分析线性规划无解或无界的原因,建议如何修改 ●LINGO|Model Statistics(Ctrl+E) LINGO|Model Statistics(Ctrl+E)命令显示当前模型的统计信息. ●LINGO|Look(Ctrl+L) LINGO|Look(Ctrl+L)命令显示当前模型的文本形式,显示时对所有行按顺序编号.图1.2给出了工具栏的简要功能说明. 图1.2

Lingo 中各项的含义

Lingo solution report中各项的含义 (一)优化模型的组成 优化模型包括以下3部分: l Objective Function:目标函数是一个能准确表达所要优化问题的公式。 l Variables:Decision variables(决策变量),在模型中所使用的变量。 l Constraints:约束条件。 (二)Lingo软件使用的注意事项 (1)LINGO中不区分大小写字母,变量(和行名)可以使用不超过32个字符表示,且必须以字母开头。 (2)在命令方式下(Command Window中),必须先输入MODEL:表示开始输入模型。LINGO中模型以“MODEL:”开始,以“END”结束。对简单的模型,这两个语句也可以省略。 (3)LINGO中的语句的顺序是不重要的,因为LINGO总是根据“MAX=”或“MIN=”语句寻找目标函数,而其它语句都是约束条件(当然注释语句和TITLE 除外)。 (4)LINGO模型是由一系列语句组成,每个语句以分号“;”结束。 (5)LINGO中以感叹号“!”开始的是说明语句(说明语句也需要以分号“;”结束)。 (6)LINGO中解优化模型时假定所有变量非负(除非用限定变量函数@free 或@sub或slb另行说明)。 (三)Solution Report各项的含义 例1 将以下模型粘贴到Lingo中求解,其中第一行MODEL和最后一行END在Lingo Model 窗口下可以不要。 MODEL: min = 2*x1 + 3*x2; x1 + x2 >= 350; x1 >= 100; 2*x1 + x2 <= 600; END 得到如下的结果报告 Global optimal solution found. Objective value: 800.0000 Infeasibilities: 0.000000 !指矛盾约束的数目; Total solver iterations: 2 Model Class: LP

lingo灵敏度分析实验报告

竭诚为您提供优质文档/双击可除lingo灵敏度分析实验报告 篇一:lingo灵敏度分析实例 一个实例理解Lingo的灵敏性分析 线性规划问题的三个重要概念: 最优解就是反应取得最优值的决策变量所对应的向量。 最优基就是最优单纯形表的基本变量所对应的系数矩 阵如果其行列式是非奇异的,则该系数矩阵为最优基。 最优值就是最优的目标函数值。 Lingo的灵敏性分析是研究当目标函数的系数和约束右端项在什么范围(此时假定其它系数不变)时,最优基保持不变。灵敏性分析给出的只是最优基保持不变的充分条件,而不一定是必要条件。下面是一道典型的例题。 一奶制品加工厂用牛奶生产A1,A2两种奶制品,1桶牛奶可以在甲车间用12小时加工成3公斤A1,或者在乙车间用8小时加工成4公斤A2。根据市场需求,生产的A1,A2全部能售出,且每公斤A1获利24元,每公斤A2获利16元。现在加工厂每天能得到50桶牛奶的供应,每天正式工人总

的劳动时间480小时,并且甲车间每天至多能加工100公斤A1,乙车间的加工能力没有限制。试为该厂制订一个生产计划,使每天获利最大,并进一步讨论以下3个附加问题:1)若用35元可以买到1桶牛奶,应否作这项投资?若投资,每天最多购买多少桶牛奶? 2)若可以聘用临时工人以增加劳动时间,付给临时工人的工资最多是每小时几元? 3)由于市场需求变化,每公斤A1的获利增加到30元,应否改变生产计划? 模型代码: max=72*x1+64*x2; x1+x2 12*x1+8*x2 3*x1 运行求解结果: objectivevalue:3360.000 VariableValueReducedcost x120.000000.000000 x230.000000.000000 RowslackorsurplusDualprice 13360.0001.000000 20.00000048.00000 30.0000002.000000 440.000000.000000 这个线性规划的最优解为x1=20,x2=30,最优值为

LINGO实验报告

实验报告 课程名称:模型优化与lingo软件应用专业班级: 姓名:学号: 湖南工业大学理学院 篇二:lingo实验报告1 x 2 实验报告 课程名称:模型优化与lingo软件应用专业班级: 姓名:学号: 湖南工业大学理学院 篇三:lingo实验报告学习lingo心得 隆展实业发展有限公司产品生产计划的优化研究 问题分析 题目要求在不追加产值的情况下实现产值最大化,所以采用线性规划模型。求解思路 首先指出本例中的一个错误:最后一张表——原材料的成本中 对az-1的成本计算有误,根据前几张表,az-1的成本应为96.0625 1、首先计算出每种产品的利润=出售价格-成本 例生产一件az-1的利润为350-96.0625=253.9375 经计算得下表 产品利润单位:元 2、由题得,公司目前所能提供的最大流动 资金为36万元,且不准备追加投入,所以要求在调整后生产结构中,总的成本不得超过36 万元。 3、考虑工人的工时问题 一条装配线可以装配多中零件,但每个零件要求工人的工时不同,总需求时间不得超过 工人的每月的总工时。例如,在组装这项工作中,8个工人每月的总工时为2496小时, 而组装各个产品的需求时间分别为0.6,0.67,0.56,0.56,0.58,0.58。若另x1代表az-1 的产量;x2代表bz-1的产量;x3代表lz-7的产量;x4代表rz-7的产量;x5代表lr-8的 产量;x6代表rz-8的产量,则可列出不等式: 0.60*x1+0.67*x2+0.56*x3+0.56*x4+0.58*x5+0.58*x6<=2496 同理可得关于拉直及切断、剪板及折弯、焊接网胚及附件和焊接底盘工作所需工时的不 等式 4、题目中有提到在产品的销售方面lz/rz-8以其大载重量,结实坚固深得顾客的青睐, 并希望能增加产量。所以解决方案中,希望rz-8比原先的产量要多,相对的,其他产品的产 量就要减少。 lingo 程序 max=253.9375*x1+229.5*x2+292.5625*x3+306.5*x4+503.2125*x5+538.5*x6; 96.0625*x1+90.5000*x2+167.4375*x3+213.5000*x4+216.7875*x5+276.5000*x6<=360000; 0.60*x1+0.67*x2+0.56*x3+0.56*x4+0.58*x5+0.58*x6<=2496; 0.30*x1+0.31*x2+0.325*x3+0.34*x4+0.33*x5+0.35*x6<=624; 0.90*x1+0.90*x2+0.95*x3+1.00*x4+1.01*x5+1.05*x6<=1872; 1.30*x1+1.00*x2+1.25*x3+1.25*x4+1.35*x5+1.35*x6<=2496; 0.76*x1+0.76*x2+0.80*x3+0.82*x4+0.82*x5+0.85*x6<=1560;

相关文档
最新文档