基于Lingo软件的目标规划序贯解法
Lingo求解多目标规划[新]
![Lingo求解多目标规划[新]](https://img.taocdn.com/s3/m/23d640295a8102d276a22fcf.png)
例:某工厂生产Ⅰ、Ⅱ两种产品,需要用到A ,B ,C 三种设备,已知有关数据见下表。
企业的经营目标不仅仅是利润,还需要考虑多个方面:(1) 力求使利润不低于1500元;(2) 考虑到市场需求,Ⅰ、Ⅱ两种产品的产量比应尽量保持1:2;(3) 设备A 为贵重设备,严格禁止超时使用;(4) 设备C 可以适当加班,但要控制;设备B 即要求充分利用,又尽可能不加班。
在重要性上,设备C 是设备B 的3倍。
ⅠⅡ设备的生产能力/hA (h/件) 2 2 12B (h/件) 4 0 16C (h/件) 0 5 15 利润 元/件200300解:此题中只有设备A 是刚性约束,其余都是柔性约束。
首先,最重要的指标是企业的利润,将它的优先级列为第一级;其次是Ⅰ、Ⅱ两种产品的产量保持1:2的比例,列为第二级;再次,设备B 、C 的工作时间要有所控制,列为第三级。
在第三级中,设备B 的重要性是设备C 的3倍,因此它们的权重不一样,设备B 的系数是设备C 的3倍。
该计划问题可用数学模型表示为: 目标函数min)33()(433322211++-+--+++++=d d d p d d p d p z满足约束条件 2122x x + 12≤15003002001121=-+++-d d x x022221=-+-+-d d x x 14x 1633=-++-d d155442=-++-d d x3,2,1,0,,,21=≥+-i d d x x i i LINGO 程序为:求第一级目标。
LINGO 程序如下: model: sets:variable/1..2/:x;S_Con_Num/1..4/:g,dplus,dminus; S_con(S_Con_Num,Variable):c; endsets data:g=1500 0 16 15; c=200 300 2 -1 4 0 0 5; enddata min=dminus(1); 2*x(1)+2*x(2)<12;@for(S_Con_Num(i):@sum(Variable(j):c(i,j)*x(j))+dminus(i)-dplus(i )=g(i)); end求得dminus(1)=0,即目标函数的最优值为0,第一级偏差为0。
数学建模必备知识——lingo处理实例(多目标问题)

一个简单的LINGO程序
LINGO的基本用法的几点注意事项
•LINGO中不区分大小写字母;变量和行名可以超过8个字符,但 不能超过32个字符,且必须以字母开头。 •用LINGO解优化模型时已假定所有变量非负(除非用限定变量取 值范围的函数@free或@BND另行说明)。 •变量可以放在约束条件的右端(同时数字也可放在约束条件的左 端)。但为了提高LINGO求解时的效率,应尽可能采用线性表达 式定义目标和约束(如果可能的话)。 •语句是组成LINGO模型的基本单位,每个语句都以分号结尾,编 写程序时应注意模型的可读性。例如:一行只写一个语句,按照 语句之间的嵌套关系对语句安排适当的缩进,增强层次感。 •以感叹号开始的是说明语句(说明语句也需要以分号结束))。
LINGO中定义集合及其属性
LP模型在LINGO中的一个典型输入方式
以“MODEL:”开 始
集合定义部分从 (“SETS:”到 “ENDSETS” ): 定义集合及其属性 给出优化目标 和约束 集合定义部分从 (“DATA:”到 “ENDDATA” )
以“END”结 束
目标函数的定义方式 @SUM(集合(下标):关于集合的属性的表达式) 对语句中冒号“:”后面的表达式,按照“:”前 面的集合指定的下标(元素)进行求和。 本例中目标函数也可以等价地写成
LINGO软件的基本使用方法
内容提要
1. LINGO入门 2.在LINGO中使用集合
3. 运算符和函数
4. LINGO的主要菜单命令 5. LINGO命令窗口
6.习题
1. LINGO入门 2.在LINGO中使用集合
3. 运算符和函数
1. LINGO入门 4. LINGO的主要菜单命令 5. LINGO命令窗口
LINGO在多目标规划及最大最小化模型中的应用

LINGO 在多目标规划和最大最小化模型中的应用在许多实际问题中,决策者所期望的目标往往不止一个,如电力网络管理部门在制定发电计划时即希望安全系数要大,也希望发电成本要小,这一类问题称为多目标最优化问题或多目标规划问题。
一、多目标规划的常用解法多目标规划的解法通常是根据问题的实际背景和特征,设法将多目标规划转化为单目标规划,从而获得满意解,常用的解法有:1.主要目标法确定一个主要目标,把次要目标作为约束条件并设定适当的界限值。
2.线性加权求和法对每个目标按其重要程度赋适当权重0≥i ω,且1=∑i i ω,然后把)(x f i ii ∑ω作为新的目标函数(其中p i x f i ,,2,1),( =是原来的p 个目标)。
3.指数加权乘积法设p i x f i ,,2,1),( =是原来的p 个目标,令∏==p i a i ix f Z 1)]([其中i a 为指数权重,把Z 作为新的目标函数。
4.理想点法先分别求出p 个单目标规划的最优解*i f ,令∑-=2*))(()(i i f x f x h然后把它作为新的目标函数。
5.分层序列法将所有p 个目标按其重要程度排序,先求出第一个最重要的目标的最优解,然后在保证前一个目标最优解的前提条件下依次求下一个目标的最优解,一直求到最后一个目标为止。
这些方法各有其优点和适用的场合,但并非总是有效,有些方法存在一些不足之处。
例如,线性加权求和法确定权重系数时有一定主观性,权重系数取值不同,结果也就不一样。
线性加权求和法、指数加权乘积法和理想点法通常只能用于两个目标的单位(量纲)相同的情况,如果两个目标是不同的物理量,它们的量纲不相同,数量级相差很大,则将它们相加或比较是不合适的。
二、最大最小化模型在一些实际问题中,决策者所期望的目标是使若干目标函数中最大的一个达到最小(或多个目标函数中最小的一个达到最大)。
例如,城市规划中需确定急救中心的位置,希望该中心到服务区域内所有居民点的距离中的最大值达到最小,称为最大最小化模型,这种确定目标函数的准则称为最大最小化原则,在控制论,逼近论和决策论中也有使用。
基于Lingo软件的目标规划序贯解法

(2)销售目标 优先满足老客户的需求,并根据三种设备的纯利润分配不同的权因子, A, B, C 三种型 号的设备每小时的利润是
1000 2400 3000 ,因此,老客户的销售目标约束为 , , 5 8 12
2 目标规划的序贯解法 设 x j ( j 1,2,, n )是目标规划的决策变量,共有 m 个约束是刚性约束,可能是等
式约束,也可能是不等式约束。设有 l 个柔性目标约束,其目标规划约束的偏差为 d i , d i 的权重,分别记为 wki , wki (i 1,2, , l ) 。因此目标规划模型的一般数学表达式为
l
(1) (2) (3) (4) (5) (6)
* q 所对应的解
* *
s.t.
a x
j 1
n
tj
j
(, )bt , t 1, , m ,
c
j 1
l i 1
ij
x j d i d i Байду номын сангаасd i0 , i 1,2,, l ,
si i * , s 1,2, , k 1 , wsi di ) zs
3.2 Lingo 软件的求解 求解上述目标规划,现有的方法需要构建 5 个 Lingo 模型,或者是构建一个 Lingo 模型, 但要运行 5 次,每次运行需要把前面几次运行结果的最优值实时输入 Lingo 模型,特别不方 便。Lingo10 引入了子函数功能,利用 Lingo10 的子函数功能,设计一个 Lingo 模型,在 Lingo 运行过程中不需要实时输入数据,就可以一次性得到满意解的所有细节结果。 Lingo10 新引入的子函数必须放在模块 calc:和 endcalc 之间,该模块中不能含有决策变 量,只能含有已知量的迭代运算和子函数。
用LINGO软件求解目标规划问题

10 x1 + 15 x2 + d1 d1+ = 40 + x1 + x2 + d 2 d 2 = 10 s.t. d1+ = 0 x1 , x2 , d , d + ≥ 0, j = 1,2 j j
用LINGO求解,得最优解 d = d 具体LINGO程序及输出信息如下:LINGO程序为(参见图 4.4.4):
+ 1
=0, 1
d2 = 6 ,最优值为6.
精品课程《运筹学》
图4.4.4
精品课程《运筹学》
LINGO运算后输出为(参见图4.4.5):
图4.4.5 精品课程《运筹学》
d 对应于第三优先等级,将d1+ =0, 2 = 6 作为约束条件, 建立线性规划问题:
min z = d 3 10 x1 + 15 x2 + d1 d1+ = 40 + x1 + x2 + d 2 d 2 = 10 x2 + d 3 d 3+ = 7 s.t. d1+ = 0, d 2 = 6 + x1 , x2 , d j , d j ≥ 0, j = 1,2,3
10 x1 + 15 x 2 + d 1 d 1+ = 40 + x1 + x 2 + d 2 d 2 = 10 s.t. x 2 + d 3 d 3+ = 7 x1 , x 2 , d , d + ≥ 0, j = 1,2,3 j j
精品课程《运筹学》
解:首先对应于第一优先等级,建立线性规 划问题:
x1 = 4, x2 = 0, d1+ = d1 = 0 , 用LINGO求解,得最优解是
数学建模lingo作业-习题讲解

基础题:1.目标规划问题最近,某节能灯具厂接到了订购16000套A 型和B 型节能灯具的订货合同,合同中没有对这两种灯具的各自数量做要求,但合同要求工厂在一周内完成生产任务并交货。
根据该厂的生产能力,一周内可以利用的生产时间为20000min ,可利用的包装时间为36000min 。
生产完成和包装一套A 型节能灯具各需要2min ;生产完成和包装完成一套B 型节能灯具各需要1min 和3min 。
每套A 型节能灯成本为7元,销售价为15元,即利润为8元;每套B 型节能灯成本为14元,销售价为20元,即利润为6元。
厂长首先要求必须按合同完成订货任务,并且即不要有足量,也不要有超量。
其次要求满意销售额达到或者尽量接近275000元。
最后要求在生产总时间和包装总时间上可以有所增加,但过量尽量地小。
同时注意到增加生产时间要比包装时间困难得多。
试为该节能灯具厂制定生产计划。
解:将题中数据列表如下:根据问题的实际情况,首先分析确定问题的目标级优先级。
第一优先级目标:恰好完成生产和包装完成节能灯具16000套,赋予优先因子p1;第二优先级目标:完成或者尽量接近销售额为275000元,赋予优先因子p2; 第三优先级目标:生产和包装时间的增加量尽量地小,赋予优先因子p3; 然后建立相应的目标约束。
在此,假设决策变量12,x x 分别表示A 型,B 型节能灯具的数量。
(1) 关于生产数量的目标约束。
用1d -和1d +分别表示未达到和超额完成订货指标16000套的偏差量,因此目标约束为1111211min ,..16000z d d s t x x d d -+-+=+++-=要求恰好达到目标值,即正、负偏差变量都要尽可能地小(2) 关于销售额的目标约束。
用2d -和2d +分别表示未达到和超额完成满意销售指标275000元的偏差值。
因此目标约束为221222min ,..1520-275000.z d s t x x d d --+=++=要求超过目标值,即超过量不限,但必须是负偏差变量要尽可能地小,(另外:d +要求不超过目标值,即允许达不到目标值,就是正偏差变量要尽可能地小) (3) 关于生产和包装时间的目标约束。
Lingo解目标规划
不考虑目标,运输问题的数学模型为:
设xij 表示从第i个产地向第j个销地的运量。则: min z cij xij
i 1 j 1 3 4
x
j 1 3
4
ij
ai , i 1,2,3 b j , j 1,2,3,4
x
i 1
ij
xij 0
Lingo代码:
sets: cd/1..3/:a; xd/1..4/:b; links(cd,xd):c,x; endsets data: a=300 200 400; b=200 100 450 250; c=5 2 6 7 3546 4 5 2 3; enddata min=@sum(links(i,j):c(i,j)*x(i,j)); @for(cd(i):@sum(xd(j):x(i,j))<=a(i)); @for(xd(j):@sum(cd(i):x(i,j))>=b(j));
整数线性规划一般形式:
max(min) z c j x j
j 1
n
( a )
n (b) aij x j ( , )bi j 1 (c ) xj 0 x , x , , x 中部分或全部取整数 ( d ) n 1 2
Lingo代码
min=d31; 2*x1+x2<=11; x1-x2+d11-d12=0; x1+2*x2+d21-d22=10; 8*x1+10*x2+d31-d32=56; d12=0; d21+d22=0;
例2:
min z p1d1 p2 d 2 p3 (2d 3 d 4 )
5 11
Lindo 和Lingo 数学软件的简单使用方法
Lindo 和Lingo 数学软件的简单使用方法一、Lindo最新版本:6.1版(注册版)限制:4000个约束、8000个变量、800个整型变量功能:可以求解线性规划、整数规划、混合整数规划、二次规划、目标规划。
我们主要用它来求解整数规划或混合整数规划。
特点:执行速度非常快 例1:求解整数规划问题12121212max 58..65945,0z x x s t x x x x x x =++≤+≤≥且整解:在lindo 的运行窗口中输入 max 5x1+8x2 stx1+x2<6 5x1+9x2<45 end gin 2然后按Solve 菜单或快捷键得运行结果。
OBJECTIVE FUNCTION V ALUE (目标函数最优值) 1) 40.00000VARIABLE V ALUE REDUCED COST (变量增加1时目标函数改变量) X1 0.000000 -5.000000 X2 5.000000 -8.000000ROW SLACK OR SURPLUS DUAL PRICES (行) (松弛变量值) (对偶价格,表示约束右边常数增加1时目标函数改变量)) 2) 1.000000 0.000000 3) 0.000000 0.000000RANGES IN WHICH THE BASIS IS UNCHANGED (灵敏度分析) OBJ COEFFICIENT RANGES (目标函数中变量的系数的变动范围,在此范围内最优解不变) V ARIABLE CURRENT ALLOWABLE ALLOWABLECOEF (当前系数) INCREASE (增加量) DECREASE (减少量) X1 5.000000 0.000000 INFINITY X2 8.000000 0.000000 INFINITYRIGHTHAND SIDE RANGES (约束条件右边常数的变化范围,在此范围内最优基不变) ROW CURRENT ALLOWABLE ALLOWABLERHS (当前系数)INCREASE (增加量) DECREASE (减少量) 2 6.000000 INFINITY 1.000000 (第一个约束) 3 45.000000 INFINITY 0.000000 (第二个约束)注意:1. 软件中已经假设所以的变量是非负的,所以非负约束不必输入; 2. 可以用 FREE 变量 来取消变量的非负限制; 3. 不区分大小写; 4. 约束条件“<=”、“>=”可以用“<”、“>”代替; 5. 变量名不能超过8个字符;6. 变量与系数间可以有空格,但不能有任何运算符号(如*等); 7. 不允许变量出现在一个约束条件的右端; 8. 输入中不能有“()”和“,”;比如4(x1+x2)应写成4x1+4x2等;9. 在一个式中同一变量不能出现一次以上,比如2x1+3x2-x1应简化为x1+3x2;gin 变量 变量为整数变量 gin nint n 模型中的前n 个变量为0/1整数变量,关于变量的顺序可由输出结果查证! 整数变量申明须放在最后(即end 后)例2:集合覆盖问题设有一集合S={1,2,3,4,5},及S 的一个子集簇P={{1,2},{1,3,5},{2,4,5},{3},{1},{4,5}},假设选择P 中各个元素的费用为1、1.5、1.5、0.8、0.8、1,试从P 中选一些元素使之覆盖S 且所选元素费用之和最小。
lingo求解多目标规划--例题
实验二:目标规划一、实验目得目标规划就是由线性规划发展演变而来得,线性规划考虑得就是只有一个目标函数得问题,而实际问题中往往需要考虑多个目标函数,这些目标不仅有主次关系,而且有得还相互矛盾。
这些问题用线性规划求解就比较困难,因而提出了目标规划。
熟悉目标规划模型得建立,求解过程及结果分析。
二、目标规划得一般模型设)...2,1(n j x j =就是目标规划得决策变量,共有m 个约束就是国内刚性约束,可能就是等式约束,也可能就是不等式约束。
设有l 个柔性目标约束,其目标规划约束得偏差就是),...,2,1(,l i d d i i =-+。
设有q 个优先级别,分别为q p p p ,...,21。
在同一个优先级k p 中,有不同得权重,分别记为),...,2,1(,l j w w kj kj =-+。
因此目标规划模型得一般数学表达式为: min ∑∑=++--=+=l j j kj j kj q k kd w d w p z 11);(s 、t 、,,...2,1,),(1m i b x a n j i j ij =≥=≤∑= .,...2,1,0,,,...,2,1,,,...2,1,1l i d d n x o x l i g d d x ci i j i n j i i j ij =≥=≥==-++-=+-∑ 三、实验设备及分组实验在计算机中心机房进行,使用微型电子计算机,每人一机(一组)。
四、实验内容及步骤1、打开LINGO ,并利用系统菜单与向导在E 盘创建一个项目。
目录与项目名推荐使用学生自己得学号。
2、以此题为例,建立数学模型,并用说明语句进行说明,增强程序得可读性。
例2、1:某工厂生产Ⅰ、Ⅱ两种产品,需要用到A ,B ,C 三种设备,已知有关数据见下表。
企业得经营目标不仅仅就是利润,还需要考虑多个方面:(1) 力求使利润不低于1500元;(2) 考虑到市场需求,Ⅰ、Ⅱ两种产品得产量比应尽量保持1:2;(3) 设备A 为贵重设备,严格禁止超时使用;(4) 设备C 可以适当加班,但要控制;设备B 即要求充分利用,又尽可能不加班。
数学建模必备LINGO在多目标规划和最大最小化模型中的应用
数学建模必备LINGO 在多目标规划和最大最小化模型中的应用一、多目标规划的常用解法多目标规划的解法通常是根据问题的实际背景和特征,设法将多目标规划转化为单目标规划,从而获得满意解,常用的解法有:1.主要目标法确定一个主要目标,把次要目标作为约束条件并设定适当的界限值。
2.线性加权求和法对每个目标按其重要程度赋适当权重0≥i ω,且1=∑ii ω,然后把)(x f i ii ∑ω作为新的目标函数(其中p i x f i ,,2,1),( =是原来的p 个目标)。
3.指数加权乘积法设p i x f i ,,2,1),( =是原来的p 个目标,令∏==pi a i ix f Z 1)]([其中i a 为指数权重,把Z 作为新的目标函数。
4.理想点法先分别求出p 个单目标规划的最优解*i f ,令∑-=2*))(()(iifx f x h然后把它作为新的目标函数。
5.分层序列法将所有p 个目标按其重要程度排序,先求出第一个最重要的目标的最优解,然后在保证前一个目标最优解的前提条件下依次求下一个目标的最优解,一直求到最后一个目标为止。
这些方法各有其优点和适用的场合,但并非总是有效,有些方法存在一些不足之处。
例如,线性加权求和法确定权重系数时有一定主观性,权重系数取值不同,结果也就不一样。
线性加权求和法、指数加权乘积法和理想点法通常只能用于两个目标的单位(量纲)相同的情况,如果两个目标是不同的物理量,它们的量纲不相同,数量级相差很大,则将它们相加或比较是不合适的。
二、最大最小化模型在一些实际问题中,决策者所期望的目标是使若干目标函数中最大的一个达到最小(或多个目标函数中最小的一个达到最大)。
例如,城市规划中需确定急救中心的位置,希望该中心到服务区域内所有居民点的距离中的最大值达到最小,称为最大最小化模型,这种确定目标函数的准则称为最大最小化原则,在控制论,逼近论和决策论中也有使用。
最大最小化模型的目标函数可写成)}(,),(),(max{min 21X f X f X f p X或)}(,),(),(min{max 21X f X f X f p X式中T n x x x X ),,,(21 是决策变量。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2 目标规划的序贯解法 设 x j ( j 1,2,, n )是目标规划的决策变量,共有 m 个约束是刚性约束,可能是等
式约束,也可能是不等式约束。设有 l 个柔性目标约束,其目标规划约束的偏差为 d i , d i 的权重,分别记为 wki , wki (i 1,2, , l ) 。因此目标规划模型的一般数学表达式为
( i 1,2,, l ) 。设有 q 个优先级别,分别为 P 1, P 2 , , P q 。在同一个优先级 Pk 中,有不同
min
z Pk k 1
q
w d
i 1
l
ki i
wki di ,
s.t.
n atj x j (, )bt , t 1, , m, j 1 n c x d d d 0 , i 1,2, , l , ij j i i i j 1 x j 0, j 1,2, , n, di , di 0, i 1,2, , l.
3
应用实例
3.1 目标规划模型 为了具体介绍目标规划序贯解法的 Lingo 模型,下面先给出一个目标规划的例子。 某家设备公司生产三种型号的设备 A, B, C 。这三种设备需要在复杂的装配线上生产, 生产1台 A, B, C 型号的设备分别需要5, 8, 12 (h) 。 公司装配线正常的生产时间是每月1700h。 公司营业部门估计 A, B, C 三种设备的利润分别是每台1000,2400,3000(元) ,而公司预 测这个月生产的设备能够全部售出。公司经理考虑以下目标 第一目标:充分利用正常的生产能力,避免开工不足; 第二目标:优先满足老客户的需求, A, B, C 三种型号的设备分别为50,50,80(台) , 同时根据三种设备的纯利润分配不同的权因子; 第三目标:限制装配线加班时间,最好不要超过200h; 第四目标:满足各种型号设备的销售目标, A, B, C 型号分别为100,120,100(台) , 再根据三种设备的纯利润分配不同的权因子; 第五目标:装配线的加班时间尽可能少。 为了建立目标规划模型,首先建立目标约束。 (1)装配线正常生产 设生产 A, B, C 型号的设备为 x1 , x2 , x3(台) ,d1 为装配线正常生产时间未利用数,d1 为装配线加班时间,希望装配线正常生产,避免开工不足,因此装配线目标约束为
4 结语
本文基于 Lingo10 以上版本软件,设计了目标规划问题序贯解法的 Lingo 模型。利用 Lingo10 软件新增加的子函数功能,一次性求出目标规划的满意解,且给出所有的求解细节。 省去了通常的多次运行 Lingo 程序,且要实时输入前面几次运行结果数据的繁琐。本文所设
计的 Lingo 模型可以作为工具箱,供实际工程应用和数学建模使用。另外本文的方法也可以 应用于数据包络分析中,一次性求出所有数学规划的解。 参考文献 [1] 谢金星,薛毅. 优化建模与 Lindo/Lingo 软件[M]. 北京:清华大学出版社,2005,25. [2] 司守奎,孙玺菁. 数学建模算法与应用[M]. 北京:国防工业出版社,2011,125-135.
x1 d 2 d2 50,
x2 d3 d3 50,
x3 d 4 d4 80,
x1 d5 d5 100, x2 d 6 d 6 120, x3 d 7 d 7 100,
5x1 8x2 12 x3 d8 d8 1900, x1, x2 , di , di 0, i 1,2,,8.
我们设计的 Lingo 模型如下 model: sets: level/1..5/:z,goal; !z为中间变量; variable/1..3/:d,x; s_con_num/1..8/:g,dplus,dminus; s_con(s_con_num,variable):c; obj(level,s_con_num)/1 1,2 2,2 3,2 4,3 8,4 5,4 6,4 7,5 1/:wplus,wminus; endsets data: g=1700 50 50 80 100 120 100 1900; c=5 8 12 1 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 1 5 8 12; d=1000 2400 3000; wplus=0 0 0 0 1 0 0 0 1; wminus=1 200 300 250 0 200 300 250 0; enddata submodel subgoal: !定义数学规划的子函数; min=myobj; !目标函数; myobj=z(flag); @for(level(i):z(i)=@sum(obj(i,j):wplus(i,j)*dplus(j)+wminus(i,j)*dminus(j))); @for(s_con_num(i):@sum(variable(j):c(i,j)*x(j))+dminus(i)-dplus(i)=g(i)); !定义目标约束; @for(level(i)|i #lt#flag:@bnd(0,z(i),goal(i))); @for(variable:@gin(x)); !定义整数变量约束; T=@sum(variable:d*x); !求满意解对应的利润; endsubmodel calc: @for(level(k): flag=k; @solve(subgoal); goal(k)=myobj); !调用子函数; endcalc end 把上述 Lingo 模型运行一次,就求出所有计算结界如下: 第一级目标的满意解为: x1 0 , x2 213 , x3 0 ,最优偏差值为 0; 前两级目标的满意解为: x1 50 , x2 50 , x3 142 ,最优偏差值为 0; 前三级目标的满意解为: x1 50 , x2 62 , x3 80 ,最优偏差值为 0; 前四级目标的满意解为: x1 100 , x2 55 , x3 80 ,第四级最优偏差值为 24500; 所有五级目标的满意解为: x1 100 , x2 55 , x3 80 ,第五级最优偏差值为 200; 目标规划问题的满意解 x1 100 , x2 55 , x3 80 ,说明装配线生产时间为 1900h, 满足装配线加班不超过 200h 的要求。能够满足老客户的需求,但未能满足一般销售目标。 销售总利润为 1000 100 2400 55 3000 80 472000 (元).
3.2 Lingo 软件的求解 求解上述目标规划,现有的方法需要构建 5 个 Lingo 模型,或者是构建一个 Lingo 模型, 但要运行 5 次,每次运行需要把前面几次运行结果的最优值实时输入 Lingo 模型,特别不方 便。Lingo10 引入了子函数功能,利用 Lingo10 的子函数功能,设计一个 Lingo 模型,在 Lingo 运行过程中不需要实时输入数据,就可以一次性得到满意解的所有细节结果。 Lingo10 新引入的子函数必须放在模块 calc:和 endcalc 之间,该模块中不能含有决策变 量,只能含有已知量的迭代运算和子函数。
l
(1) (2) (3) (4) (5) (6)
* q 所对应的解
* *
s.t.
a x
j 1
n
tj
j
(, )bt , t 1, , m ,
c
j 1
l i 1
ij
x j d i d i d i0 , i 1,2,, l ,
si i * , s 1,2, , k 1 , wsi di ) zs
基于 Lingo 软件的目标规划序贯解法
司守奎 (海军航空工程学院,基础部数学教研室,264001,烟台) [摘要]在工程应用问题中经常涉及目标规划问题,为了求得解的一些细节,可以使用序贯 解法,即求解一系列相互关联的数学规划问题。Lingo 软件是一款功能强大的优化软件,但 用通常的 Lingo 模型求解一系列相互关联的数学规划很不方便,需要设计多个程序文件,或 者需要在程序运行过程中实时输入前几步的运行结果。基于 Lingo10 以上版本子函数功能, 本文设计的 Lingo 模型可以一次性求出目标规划的满意解。 [关键字]目标规划,序贯解法,Lingo
综上所述,建立如下的目标规划模型
min z P 1d1 P 2 (200d 2 300d 3 250d 4 ) P 3 d8 P4 (200d5 300d6 250d7 ) P5d1 ,
s.t.
5x1 8x2 12 x3 d1 d1 1700 ,
1 引言
Lingo 软件[1]是由 Lindo System Inc.出品的专门用于求解数学规划问题的优化计算软件 包。Lingo 软件的特点是程序执行速度快,易于方便地输入、修改、求解和分析一个数学规 划问题,因此 Lingo 软件在教学、科研和工业界得到广泛应用。但 Lingo 软件求解数学规划 问题只能有一个目标函数,目标规划问题中含有多个目标函数。目标规划的求解方法很多, 我们可以使用加权法求解, 即把多个目标函数通过适当的权重合成一个目标函数, 利用数学 规划求解,但这样忽略了解的很多细节。 序贯解法是求解目标规划问题的一种常用方法,但利用低版本 Lingo 软件求解时很不方 便,需要设计多个程序文件,或者虽然可以设计一个程序文件,但在程序运行过程中要实时 输入前几步的运行结果。本文借助 Lingo10 以上版本新增加的子函数功能,设计的 Lingo 模 型可以一次性求出目标规划的满意解,方便了工程应用和数学建模的使用。
序贯算法是求解目标规划的一种早期算法[2],其优点是可以得到解的很多细节。序贯 解法的核心是根据优先级的先后次序, 将目标规划问题分解成一系列的单目标规划问题, 然 后再依次求解。 下面介绍求解目标规划的序贯算法。对于 k 1,2, , q ,求解单目标规划