QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 1944|回复: 0
打印 上一主题 下一主题

[建模教程] 目标规划模型:求解思路、序贯式算法

[复制链接]
字体大小: 正常 放大
浅夏110 实名认证       

542

主题

15

听众

1万

积分

  • TA的每日心情
    开心
    2020-11-14 17:15
  • 签到天数: 74 天

    [LV.6]常住居民II

    邮箱绑定达人

    群组2019美赛冲刺课程

    群组站长地区赛培训

    群组2019考研数学 桃子老师

    群组2018教师培训(呼伦贝

    群组2019考研数学 站长系列

    跳转到指定楼层
    1#
    发表于 2020-6-1 15:20 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta |邮箱已经成功绑定
    1.线性规划的局限性3 t4 }9 z9 K/ a  |
    只能解决一组线性约束条件下,某一目标只能是一个目标的最大或最小值的问题。9 E  H' U/ H! ?
    " o# \& W, ~" E
    2.实际决策中,衡量方案优劣考虑多个目标
    3 }3 C! J% H" I: j0 s: \  e: c' G这些目标中,有主要的,也有次要的;有最大值的,也有最小值的;有定量的, 也有定性的;有相互补充的,也有相互对立的,LP 则无能为力。
    - U$ x+ w/ W$ L4 w/ A8 \( R. A( v5 n" i* b
    3.目标规划(Goal Programming)
    / n: {$ T' _) o, ?9 M. D美国经济学家查恩斯(A. Charnes)和库柏(W. W. Cooper)在 1961 年出版的《管理模型及线性规划的工业应用》一书中,首先提出的。' d# U8 P+ N3 A& z, ~0 R; L6 g

      P) P. @4 z  A6 S2 I4.求解思路7 G4 @$ e# K+ w) c* z: J5 H- F8 w
    (1)加权系数法7 B# ~: K' w# q8 d
    为每一目标赋一个权系数,把多目标模型转化成单一目标的模型。但困难是要确 定合理的权系数,以反映不同目标之间的重要程度。
    ; G7 O/ w) x* r, C3 T* @2 g( B: z' n4 V+ d0 i* D, k
    (2)优先等级法
    9 a: u" t3 Z$ o9 e将各目标按其重要程度不同的优先等级,转化为单目标模型。$ V$ I6 Y  q9 p
    ' s, m- N2 _( {7 w5 E
    (3)有效解法% I1 h: n" E# o$ P2 e  G
    寻求能够照顾到各个目标,并使决策者感到满意的解。由决策者来确定选取哪一个 解,即得到一个满意解。但有效解的数目太多而难以将其一一求出。
    0 g) J8 l) c. o: J* B/ c" F
    4 I- m, q- T/ p* _2  目标规划的数学模型
    9 M* t: l) F; ]4 w; x为了具体说明目标规划与线性规划在处理问题的方法上的区别,先通过例子来介绍 目标规划的有关概念及数学模型。$ h6 ?, }  A- s. V+ K! X9 `

    $ ^2 X5 `/ B2 U+ r例1  某工厂生产 I,II 两种产品,已知有关数据见下表 ,试求获利最大的生产方案。4 f+ m  H. P" t* E+ h0 E
    8 ]: h7 ~* z2 R" v+ L& A
    : _/ w% Q# l6 S9 x
    # V- n+ Y& y, \: z! ^* U: B  X
    解  这是一个单目标的规划问题,用线性规划模型表述为: 6 Q3 E$ R: s8 Q4 p7 M2 l, r
    $ o" M) a2 A7 l1 n2 |/ d8 }& B
    2 ^- L; h8 H1 l7 S* Z

    ) c" `. a( X  k. d但实际上工厂在作决策方案时,要考虑市场等一系列其它条件。如/ ~- F/ h& E7 F) h1 k/ E, X

    & t  e. f  U3 L! |- U; c+ e(i)根据市场信息,产品 I 的销售量有下降的趋势,故考虑产品 I 的产量不大于 产品 II。
      P0 Q! F% R( B" c$ B
    # n+ {. |' x8 M# C* L3 j(ii)超过计划供应的原材料,需要高价采购,这就使成本增加。8 e; }6 t! z0 \$ w$ ~
    8 \. }7 L" r6 c2 e7 Y
    (iii)应尽可能充分利用设备,但不希望加班。
    ; O% a5 ~6 ^  _( }0 s; n
    ! v+ R' d  y' m, A. B  d(iv)应尽可能达到并超过计划利润指标 56 元。
    5 }! s8 D& q# [' Q9 h; q
      a, Z' Y) f' ?% b1 F1 J3 E8 Z$ c7 S这样在考虑产品决策时,便为多目标决策问题。目标规划方法是解决这类决策问题 的方法之一。下面引入与建立目标规划数学模型有关的概念。 ) J' M! h& Q% ~  E- w: u# ^# k9 f
    6 ~8 {* H8 W6 O
    1. 正、负偏差变量
    4 w# o9 M* w! k
    : n* x1 @9 U, {; T$ v2 ^0 X
    ; M$ i) T  \! a4 N0 }9 e# G' [+ t5 G6 Z& {
    2. 绝对(刚性)约束和目标约束 5 O5 B- Z4 ?! Q3 A' G

    # E& u) M, V# N; |5 w3 G
      i% k0 q( q! P$ x/ W% T1 b  t
    - @$ a8 V( I! L/ g3. 优先因子(优先等级)与权系数 ' Q: S1 v4 |% q% {; n) m0 s
    ; k/ i( U* v3 N. {! W: M& z( C# Z

    ; n0 ~" i* P$ C3 r- ]9 @% Y1 R- {( T
    " i# f( V$ Z/ c0 r' ^- Y. k  D
    4. 目标规划的目标函数
    : j% s" {  @5 j/ w
    9 r1 t, k/ }: E) c( W* ?9 Q: ?' ]; s- L" u7 @
    " y- w1 ?' F0 m% e
    对每一个具体目标规划问题,可根据决策者的要求和赋于各目标的优先因子来构造目标 函数,以下用例子说明。 , W3 m" y7 v! V9 @- v

    + d0 u5 A! @+ k0 z' a5 a例 2 : 例 1 的决策者在原材料供应受严格限制的基础上考虑:首先是产品 II 的产 量不低于产品 I 的产量;其次是充分利用设备有效台时,不加班;再次是利润额不小于 56 元。求决策方案。 解  按决策者所要求的,分别赋于这三个目标  优先因子。这问题的数学模型是  6 s2 s$ j& Y( X7 z: i, Q
    " R( K8 \( M% \: \

    , s) P  d9 S: d7 |5 Z- t
    ; O. L" I  {0 a" A5.目标规划的一般数学模型
    ! v+ z6 z: \( w7 X
    , a- h, Y; V* Y% M+ Q7 m9 _( t- J/ F% T% c% f

    " E8 c1 B5 z* s0 t+ f8 F
    , P0 J2 w% J" e2 o' j建立目标规划的数学模型时,需要确定目标值、优先等级、权系数等,它都具有一 定的主观性和模糊性,可以用专家评定法给以量化。 ; F; A7 L) l4 i, ~! w
    & k) O1 i# Z7 {: Q
    3  求解目标规划的序贯式算法5 E% h4 e- q! n) C
    序贯式算法是求解目标规划的一种早期算法,其核心是根据优先级的先后次序, 将目标规划问题分解成一系列的单目标规划问题,然后再依次求解。
    % g2 T0 Z8 X0 v. W2 g) s% n; W2 p. v4 @

    # R7 d  X8 @' j% `/ N9 e: @" {& r7 y  P3 s3 E7 `6 M
    " |8 D- Q% U1 p* G: @$ O

    # Y0 z8 |7 R- p注  此时最优解的概念与线性规划最优解的概念已有所不同,但为方便起见,仍 称为最优解。 0 a- Z' U0 Z7 N+ i$ L7 t
    6 r( F( A& m0 U" P2 g
    例 3  某企业生产甲、乙两种产品,需要用到 A ,B ,C 三种设备,关于产品的赢利 与使用设备的工时及限制如下表所示。问该企业应如何安排生产,才能达到下列目标:1 Q; S+ {3 f* b% _

    & B" F( y/ l% e  `9 D* e1 P9 G8 l( w# v2 R3 }3 f+ R

    , D# g3 j* y% }(1)力求使利润指标不低于 1500 元;9 Q1 O. i  e" L  ]8 Z  a) ?

    5 X" f2 q$ O/ n% ?8 T# F4 F(2)考虑到市场需求,甲、乙两种产品的产量比应尽量保持 1:2;
    * @# j7 Q: q* k) g7 @( e7 L* d4 S: d5 S) |
    (3)设备 A为贵重设备,严格禁止超时使用;' c8 d2 w9 `7 E. y' B0 a% J

    ) L9 o/ |) v2 }, c+ o9 x(4)设备 C 可以适当加班,但要控制;设备B 既要求充分利用,又尽可能不加班。 在重要性上,设备B 是设备C 的 3 倍。
    # }/ j6 T) m* ~( v4 O
    . ^1 T$ _& N( q' W建立相应的目标规划模型并求解。0 A/ [6 W8 }- n! t
    ( n$ h3 N7 s1 e. q
    解  设备 A是刚性约束,其余是柔性约束。首先,最重要的指标是企业的利润, 因此,将它的优先级列为第一级;其次,甲、乙两种产品的产量保持 1:2 的比例,列为 第二级;再次,设备 B C, 的工作时间要有所控制,列为第三级。在第三级中,设备B 的 重要性是设备C 的三倍,因此,它们的权重不一样,设备B 前的系数是设备C 前系数 的 3 倍。由此得到相应的目标规划模型。 ; w  ~6 I$ ^) H/ D9 h" y6 b
    8 U% \( |$ Q/ Q

    5 c4 f: Z- u0 v9 F& K. ^+ c  _
    4 p* t% q7 m% _) e, X序贯算法中每个单目标问题都是一个线性规划问题,可以使用 LINGO 软件进行求 解。 求第一级目标。LINGO 程序如下:   L! n; w, e: I' t  [) T* Q

    . }" v5 l  b* s) `; e6 t) I6 u" g% x! umodel:
    4 @6 k2 [, F. s# V% Bsets: 2 Z, q+ }0 q6 A/ Y6 y; ^
    variable/1..2/:x;
    4 r# c5 c: x5 ^% s+ qS_Con_Num/1..4/:g,dplus,dminus;
    + \+ V% @  f5 _" ^) {5 ~0 pS_con(S_Con_Num,Variable):c;
    9 J' g: M% S1 s' [" r7 n& H9 N; lendsets
    9 b0 W: f/ B9 j8 g. }( A. l) i2 Xdata: ; D: T. g1 x& ^* ~
    g=1500 0 16 15;
    : Y, E- S3 z* l4 kc=200 300 2 -1 4 0 0 5;
    . ]; m- d  J" `! k$ Zenddata % q: f. G+ o) _, L) j
    min=dminus(1); 7 {; L, y% T. {* _
    2*x(1)+2*x(2)<12; ; K/ x& L4 d' h7 T# L
    @for(S_Con_Num(i)sum(Variable(j):c(i,j)*x(j))+dminus(i)-dplus(i )=g(i)); : x% v" U4 D" o4 t/ o
    end
    " U' x4 u3 U( e7 @
    " j! W9 C; K( p

    求得 dminus(1)=0,即目标函数的最优值为 0,第一级偏差为 0。

    求第二级目标,LINGO 程序如下:

    model:   t: g2 {) n0 d; R
    sets:
    6 j5 X3 h4 ^0 E  k5 [$ G/ m( pvariable/1..2/:x;
      o! `( Z% r! n% k! C7 z/ ZS_Con_Num/1..4/:g,dplus,dminus; ) z$ Y! F& R# K0 }. |
    S_con(S_Con_Num,Variable):c; * z) Q' J. m9 O( g  v. I, [5 ~; E9 p
    endsets
    5 F  a6 d# p8 S. m6 |% ?6 y4 K) `data:
    - L2 u! o, p+ A: z& Bg=1500 0 16 15;
    ( j5 e* N1 F3 l2 s1 \% E, Bc=200 300 2 -1 4 0 0 5; ) U: q6 j* t( R, j4 _6 Q7 y0 V
    enddata
    - e" e+ Z& g& [+ Y' [min=dplus(2)+dminus(2);    !二级目标函数; & V7 |' g3 `4 J# L0 M' m
    2*x(1)+2*x(2)<12; # b( m" ?; [  b$ V0 M1 }! A
    @for(S_Con_Num(i)sum(Variable(j):c(i,j)*x(j))+dminus(i)-dplus(i )=g(i)); 6 E* G& O. S& }1 C& |
    dminus(1)=0;!一级目标约束; / p7 ^0 s& f0 G! V
    @for(variablegin(x));
    * H$ }5 ?7 }5 Q( Jend
    % N3 h8 a, F# e, F! i# y8 N/ a1 P1 w$ f' i! p5 Q& U/ v
    求得目标函数的最优值为 0,即第二级的偏差仍为 0。 求第三级目标,LINGO 程序如下: ; w/ d( d3 B& G$ r, [

      M% T. d3 @7 @  X4 A5 T4 gmodel:
    ) P& q: y% C- x, _8 c2 usets: # c" X" P5 V/ d/ m7 U+ a3 e* Z
    variable/1..2/:x; 4 G; G0 o* |' {0 Y: C& L  O  y
    S_Con_Num/1..4/:g,dplus,dminus; % C+ p1 [" g$ {
    S_con(S_Con_Num,Variable):c;
    9 `% h4 ~! Z4 R: @* k: mendsets
    + x! u+ d: i& F2 Adata: - E$ ?! ^$ ^* a% k& v% H
    g=1500 0 16 15; ; W4 |* }* g+ S  t! Q+ `9 C8 n
    c=200 300 2 -1 4 0 0 5;   t7 F3 \) G1 N) F& U/ |1 `3 p
    enddata * D" _: h, E3 b3 _& H: [. i
    min=3*dplus(3)+3*dminus(3)+dplus(4);    !三级目标函数; 6 k& b8 S. D1 V: d& C
    2*x(1)+2*x(2)<12;
    2 F4 I4 w2 k+ R' l @for(S_Con_Num(i)sum(Variable(j):c(i,j)*x(j))+dminus(i)-dplus(i )=g(i));
    8 t) W* q# k/ z8 z( i3 P& }dminus(1)=0;!一级目标约束;
    6 D/ K8 Y) D; |1 A5 \$ hdplus(2)+dminus(2)=0;!二级目标约束; 9 q8 g7 F9 m* T6 C- |
    end
    , H0 n. [4 [- n9 u1 d7 Z3 P
    2 c  E& U0 H) y3 _% C4 ~目标函数的最优值为29,即第三级偏差为29。 % g) c& X, }, i

    $ n% G4 q& x& K, I分析计算结果,  ,因此,目标规划的最优解为   , 最优利润为1600。1 Y3 t! t. z5 X5 n# x4 ~! C

    & v: C& t5 N, \6 g4 _# {3 ?上述过程虽然给出了目标规划问题的最优解,但需要连续编几个程序,这样在使 用时不方便,下面用 LINGO 软件,编写一个通用的程序,在程序中用到数据段未知数 据的编程方法。# ^# d# q' O* u# {5 S+ l
    - b" M; G/ n. J( J$ |3 I1 k
    例 4(续例 3)  按照序贯式算法,编写求解例 3 的通用 LINGO 程序。
    . h# l0 g/ u" b( v
    ! {- z  F7 ?( n1 g; O+ q* h1 hmodel: $ L1 z8 j% }3 E  t, v
    sets:
    # V! m- f5 [  jlevel/1..3/:p,z,goal; & I$ X8 g- [" i
    variable/1..2/:x; 6 J' t9 C8 e, {" l9 ]  v
    h_con_num/1..1/:b; ( ^2 G# G+ `8 d* s* o& I6 m, g1 e
    s_con_num/1..4/:g,dplus,dminus; . C- w, A/ q- D4 U
    h_con(h_con_num,variable):a;
    - g, Y) F: E$ h5 as_con(s_con_num,variable):c;
    5 V; ^5 d7 O* ?  }( ]2 cobj(level,s_con_num)/1 1,2 2,3 3,3 4/:wplus,wminus; 0 U: V/ J+ f5 {, F$ x  s
    endsets ! ], S/ g4 M! D3 s, D. b
    data: 0 U4 G( [0 h5 X4 n1 l
    ctr=?;
    * Q5 P# U1 R3 W7 ]goal=? ? 0;
    & Z2 Q9 n6 o2 wb=12;
    8 E4 T, _( B) t5 e' j) m7 J' }g=1500 0 16 15; * q0 |7 C8 r, I# g( p/ W' D% t% S
    a=2 2; $ G. u4 {. n5 b  v) d+ Y
    c=200 300 2 -1 4 0 0 5; 7 H4 M, ~5 a0 T
    wplus=0 1 3 1;
    6 N4 ]* s- `1 x' Dwminus=1 1 3 0;
    ! j7 f/ ]$ }7 h  A7 N; Xenddata & A! d" }  z  u7 J* s
    min=@sum(level:p*z); 9 D: D) m: ]% ?5 d
    p(ctr)=1; , k7 f# k+ \: a. c0 i' p
    @for(level(i)|i#ne#ctr:p(i)=0); ! X8 X/ v: V8 E+ c* G7 B1 y5 ?
    @for(level(i):z(i)=@sum(obj(i,j):wplus(i,j)*dplus(j)+wminus(i,j)* dminus(j))); @for(h_con_num(i)sum(variable(j):a(i,j)*x(j))<b(i)); @for(s_con_num(i)sum(variable(j):c(i,j)*x(j))+dminus(i)-dplus(i )=g(i)); @for(level(i)|i #lt# @size(level)bnd(0,z(i),goal(i)));
    1 q" B$ `* h) T& j- fend , T0 V4 Z3 V7 }1 Z0 H2 U1 v
    ( V0 X: G* ~/ W4 m# |* p; }8 \

    - o6 H- i8 U: \% O: x# o5 I& o! _& F5 `+ `; K) M

    ; P! O) a4 C& x' g
    & |7 V$ p' c4 m3 V1 M4  多标规划的 Matlab 解法

    多目标规划可以归结为


    ; e7 w& s/ r7 c7 I' z
    ! ~7 d, V* u& n  K/ _0 u
    + G) A  V% R7 D  Y% @7 b% p9 R[x,fval]= fgoalattain('fun',x0,goal,weight)           
    * s+ ]* ]6 Q- |* T[x,fval]= fgoalattain('fun',x0,goal,weight,A,b)           ) A" e& \+ o: k" {0 M! \# b
    [x,fval]= fgoalattain('fun',x0,goal,weight,A,b,Aeq,beq)           0 s' v- y1 p1 J; j, t3 o
    [x,fval]= fgoalattain('fun',x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon)
    + o( e" x9 u/ O# O% p% `  e3 V3 O5 h, ]: I! W2 t
    ; m- j4 l6 x) @- p$ r
    要完整掌握其用法,请用 help  fgoalattain 或 type  fgoalattain 查询相关的帮助。
    8 P: R. ?( E: I7 M$ r. B- w 例 5  求解多目标线性规划问题 0 ~5 k% P8 K( Q, Y% w
    0 w" i; s  O4 ^1 _% D

    4 A, C4 d  x# ]/ O  W0 ~5 Q  e- j! k; Y8 `
    解  (i)编写 M 函数 Fun.m: 5 F8 G7 f- U3 `

    $ F- {+ G' b& \2 s# \; o# y9 sfunction F=Fun(x);
    8 G( Z! t* z$ b- Y+ v0 ?' H/ R
    , H7 P+ D; |/ I$ C6 c  F+ DF(1)=-100*x(1)-90*x(2)-80*x(2)-70*x(4); 5 F7 K- K8 }3 j
    7 H3 \0 V( I2 L  b2 R
    F(2)=3*x(2)+2*x(4);
    7 ]/ ^( ^& G% W9 h) l/ \
    3 J& p0 c: M6 }; X5 e' x: @& M(ii)编写 M 文件 9 \  U  K$ C8 w

    % k2 Q9 `; U2 O( K, H5 Ra=[-1 -1  0  0    / s0 n% [3 b/ }# D& V9 b0 M" S
       0  0  -1 -1    % c( D! W- t, d+ J" p7 M  Y! _
       3  0   2  0   
      ]; g1 L8 t% P  I* q* y   0  3   0  2];   j8 M+ r1 I5 I& U
    b=[-30 -30 120 48]';
    $ G6 E% W3 H2 n/ P, G" ~2 uc1=[-100 -90 -80 -70];
    7 n5 W+ I% G/ a, y5 rc2=[0 3 0 2];
    3 z& o' S, E; E; L# ?7 H, m[x1,g1]=linprog(c1,a,b,[],[],zeros(4,1))  %求第一个目标函数的目标值 ' E& c/ t5 h+ A0 N
    [x2,g2]=linprog(c2,a,b,[],[],zeros(4,1))  %求第二个目标函数的目标值
    4 ?7 D5 d! K+ c+ l3 V! bg3=[g1;g2]  %目标goal的值 / W  x% m3 v1 _1 S# {$ x1 ^
    [x,fval]=fgoalattain('Fun',rand(4,1),g3,abs(g3),a,b,[],[],zeros(4 ,1))
    . r* Z# y+ {2 {1 J1 V$ [%这里权重weight=目标goal的绝对值
    . H; ]2 ^% o' T  B3 L2 e
    , }( S, i$ `) O& l

    就可求得问题的解。

    习题
    4 F& f3 F3 ?5 n! r5 U8 N: q6 `1 J5 @6 f- m3 F( [
    # }1 N0 j. M9 T3 Q4 E
    ————————————————
    6 H/ a  F% J, V& m4 d3 L5 E! z8 L版权声明:本文为CSDN博主「wamg潇潇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。  w( A* S3 s4 I) C
    原文链接:https://blog.csdn.net/qq_29831163/article/details/89488932
    9 Z$ T9 I1 r; e- o5 P% U4 Z- z9 j( C
    ) R; P$ r/ l7 e1 k, |# B( s, z
    0 a6 M$ `& q; ]
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2025-6-1 08:56 , Processed in 0.644063 second(s), 51 queries .

    回顶部