Lingo基本用法总结除集函数部分Word文件下载.docx

上传人:b****1 文档编号:14198406 上传时间:2022-10-20 格式:DOCX 页数:81 大小:239.26KB
下载 相关 举报
Lingo基本用法总结除集函数部分Word文件下载.docx_第1页
第1页 / 共81页
Lingo基本用法总结除集函数部分Word文件下载.docx_第2页
第2页 / 共81页
Lingo基本用法总结除集函数部分Word文件下载.docx_第3页
第3页 / 共81页
Lingo基本用法总结除集函数部分Word文件下载.docx_第4页
第4页 / 共81页
Lingo基本用法总结除集函数部分Word文件下载.docx_第5页
第5页 / 共81页
点击查看更多>>
下载资源
资源描述

Lingo基本用法总结除集函数部分Word文件下载.docx

《Lingo基本用法总结除集函数部分Word文件下载.docx》由会员分享,可在线阅读,更多相关《Lingo基本用法总结除集函数部分Word文件下载.docx(81页珍藏版)》请在冰豆网上搜索。

Lingo基本用法总结除集函数部分Word文件下载.docx

所以当x1为250,x2为100时目标函数得到最大值。

●算术运算符

Lingo中变量不区分大小写,以字母开头不超过32个字符

算术运算符是针对数值进行操作的。

LINGO提供了5种二元运算符:

^ 乘方﹡ 乘/ 除﹢ 加﹣ 减

LINGO唯一的一元算术运算符是取反函数“﹣”。

这些运算符的优先级由高到底为:

高 ﹣(取反)

  ﹡/

低 ﹢﹣

运算符的运算次序为从左到右按优先级高低来执行。

运算的次序可以用圆括号“()”来改变。

例:

在x1+x2>

=350,x1>

=100,2*x1+x2<

=600的条件下求2*x1+3*x2的最小值

在代码窗口中编写

然后单击上面菜单lingo菜单下solve键即可。

●数学函数

标准数学函数:

@abs(x)返回x的绝对值

@sin(x)返回x的正弦值,x采用弧度制

@cos(x)返回x的余弦值

@tan(x)返回x的正切值

@exp(x)返回常数e的x次方

@log(x)返回x的自然对数

@lgm(x)返回x的gamma函数的自然对数

@sign(x)如果x<

0返回-1;

否则,返回1

@floor(x)返回x的整数部分。

当x>

=0时,返回不超过x的最大整数;

当x<

0时,返回不低于x的最大整数。

最大最小函数:

@smax(x1,x2,…,xn)返回x1,x2,…,xn中的最大值

@smin(x1,x2,…,xn)返回x1,x2,…,xn中的最小值

边界限定函数:

@bin(x)限制x为0或1

@bnd(L,x,U)限制L≤x≤U

@free(x)取消对变量x的默认下界为0的限制,即x可以取任意实数

@gin(x)限制x为整数

辅助函数

1.@if(logical_condition,true_result,false_result)

@if函数将评价一个逻辑表达式logical_condition,如果为真,返回true_result,否则返回false_result

在默认情况下,LINGO规定变量是非负的,也就是说下界为0,上界为+∞。

@free取消了默认的下界为0的限制,使变量也可以取负值。

@bnd用于设定一个变量的上下界,它也可以取消默认下界为0的约束。

其中x1只能取0或1;

x2为整数

min=x1^2+3*x2-x1*x2+@exp(x3);

x1+x3<

50;

2*x1+x2+x3<

@bin(x1);

@gin(x2);

以上是lingo最基本的用法

●逻辑运算符

LINGO具有9种逻辑运算符:

#not# 否定该操作数的逻辑值,#not#是一个一元运算符

#eq#  若两个运算数相等,则为true;

否则为flase

#ne#若两个运算符不相等,则为true;

#gt#若左边的运算符严格大于右边的运算符,则为true;

#ge# 若左边的运算符大于或等于右边的运算符,则为true;

#lt# 若左边的运算符严格小于右边的运算符,则为true;

#le# 若左边的运算符小于或等于右边的运算符,则为true;

#and# 仅当两个参数都为true时,结果为true;

#or#仅当两个参数都为false时,结果为false;

否则为true

这些运算符的优先级由高到低为:

高#not#

#eq##ne##gt##ge##lt##le#

低#and##or#

例4.2逻辑运算符示例

2#gt#3#and#4#gt#2,其结果为假(0)。

●模型求解状态

@status()

返回LINGO求解模型结束后的状态:

0GlobalOptimum(全局最优)

1Infeasible(不可行)

2Unbounded(无界)

3Undetermined(不确定)

4Feasible(可行)

5InfeasibleorUnbounded(通常需要关闭“预处理”选项后重新求解模型,以确定模型究竟是不可行还是无界)

6LocalOptimum(局部最优)

7LocallyInfeasible(局部不可行,尽管可行解可能存在,但是LINGO并没有找到一个)

8Cutoff(目标函数的截断值被达到)

9NumericError(求解器因在某约束中遇到无定义的算术运算而停止)

通常,如果返回值不是0、4或6时,那么解将不可信,几乎不能用。

该函数仅被用在模型的数据部分来输出数据。

解窗口说明

例5.1某家具公司制造书桌、餐桌和椅子,所用的资源有三种:

木料、木工和漆工。

生产数据如下表所示:

 

每个书桌

每个餐桌

每个椅子

现有资源总数

木料

8单位

6单位

1单位

48单位

漆工

4单位

2单位

1.5单位

20单位

木工

0.5单位

成品单价

60单位

30单位

若要求桌子的生产量不超过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;

求解这个模型,并激活灵敏性分析。

这时,查看报告窗口(ReportsWindow),可以看到如下结果。

“Globaloptimalsolutionfoundatiteration:

3”表示3次迭代后得到全局最优解。

“Objectivevalue:

280.0000”表示最优目标值为280。

“Value”给出最优解中各变量的值:

造2个书桌(desks),0个餐桌(tables),8个椅子(chairs)。

所以desks、chairs是基变量(非0),tables是非基变量(0)。

“SlackorSurplus”给出松驰变量的值:

第1行松驰变量=280(模型第一行表示目标函数,所以第二行对应第一个约束)

第2行松驰变量=24

第3行松驰变量=0

第4行松驰变量=0

第5行松驰变量=5

“ReducedCost”列出最优单纯形表中判别数所在行的变量的系数,表示当变量有微小变动时,目标函数的变化率。

其中基变量的reducedcost值应为0,对于非基变量Xj,相应的reducedcost值表示当某个变量Xj增加一个单位时目标函数减少的量(max型问题)。

本例中:

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

“DUALPRICE”(对偶价格)表示当对应约束有微小变动时,目标函数的变化率。

输出结果中对应于每一个约束有一个对偶价格。

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

显然,如果在最优解处约束正好取等号(也就是“紧约束”,也称为有效约束或起作用约束),对偶价格值才可能不是0。

第3、4行是紧约束,对应的对偶价格值为10,表示当紧约束

3)4DESKS+2TABLES+1.5CHAIRS<

=20

变为3)4DESKS+2TABLES+1.5CHAIRS<

=21

时,目标函数值=280+10=290。

对第4行也类似。

对于非紧约束(如本例中第2、5行是非紧约束),DUALPRICE的值为0,表示对应约束中不等式右端项的微小扰动不影响目标函数。

有时,通过分析DUALPRICE,也可对产生不可行问题的原因有所了解。

灵敏度分析的结果是

Rangesinwhichthebasisisunchanged:

ObjectiveCoefficientRanges

CurrentAllowableAllowable

VariableCoefficientIncreaseDecrease

DESKS60.000000.00.0

TABLES30.000000.00.0

CHAIRS20.000000.00.0

RighthandSideRanges

RowCurrentAllowableAllowable

RHSIncreaseDecrease

248.000000.00.0

320.000000.00.0

48.0000000.00.0

55.0000000.00.0

目标函数中DESKS变量原来的费用系数为60,允许增加(AllowableIncrease)=4、允许减少(AllowableDecrease)=2,说明当它在[60-4,60+20]=[56,80]范围变化时,最优基保持不变。

对TABLES、CHAIRS变量,可以类似解释。

由于此时约束没有变化(只是目标函数中某个费用系数发生变化),所以最优基保持不变的意思也就是最优解不变(当然,由于目标函数中费用系数发生了变化,所以最优值会变化)。

第2行约束中右端项(RightHandSide,简写为RHS)原来为48,当它在[48-24,48+∞]=[24,∞]范围变化时,最优基保持不变。

第3、4、5行可以类似解释。

不过由于此时约束发生变化,最优基即使不变,最优解、最优值也会发生变化。

灵敏性分析结果表示的是最优基保持不变的系数范围。

由此,也可以进一步确定当目标函数的费用系数和约束右端项发生小的变化时,最优基和最优解、最优值如何变化。

下面我们通过求解一个实际问题来进行说明。

例5.2一奶制品加工厂用牛奶生产A1,A2两种奶制品,1桶牛奶可以在甲车间用12小时加工成3公斤A1,或者在乙车间用8小时加工成4公斤A2。

根据市场需求,生产的A1,A2全部能售出,且每公斤A1获利24元,每公斤A2获利16元。

现在加工厂每天能得到50桶牛奶的供应,每天正式工人总的劳动时间480小时,并且甲车间每天至多能加工100公斤A1,乙车间的加工能力没有

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1