当前位置:文档之家› 基于Lingo软件的目标规划序贯解法

基于Lingo软件的目标规划序贯解法


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 ,求解单目标规划
相关主题