QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 1171|回复: 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.线性规划的局限性/ a% ?$ V7 d" u, `
    只能解决一组线性约束条件下,某一目标只能是一个目标的最大或最小值的问题。
    & ]# O* j' ~* K- e
    ) A+ m/ J4 h* _+ Q 2.实际决策中,衡量方案优劣考虑多个目标
    ! z( u, n! v8 q% m4 A$ |! A这些目标中,有主要的,也有次要的;有最大值的,也有最小值的;有定量的, 也有定性的;有相互补充的,也有相互对立的,LP 则无能为力。' Y4 ]. v) L/ |6 X
    % }* m, ]% g% }1 D: J) @- z
    3.目标规划(Goal Programming)5 d( v' R: [6 h1 [, @/ X/ O
    美国经济学家查恩斯(A. Charnes)和库柏(W. W. Cooper)在 1961 年出版的《管理模型及线性规划的工业应用》一书中,首先提出的。
    - P% t. e( y/ v+ V# Z4 j: |5 x/ I$ g4 D" \) L/ i: f$ }
    4.求解思路' \* q6 I8 K; V* J
    (1)加权系数法3 @% J6 d7 Z. h5 P; R
    为每一目标赋一个权系数,把多目标模型转化成单一目标的模型。但困难是要确 定合理的权系数,以反映不同目标之间的重要程度。
    " B  r4 h0 U+ [' |" @9 t8 J0 A9 ~  K! x. ~4 X+ ?
    (2)优先等级法
    5 i: c+ Q" N% c+ s将各目标按其重要程度不同的优先等级,转化为单目标模型。
    ' J/ A  G* ^5 l* ~, e' P
    ; e1 k, ^3 r) R8 h2 Y; S1 u(3)有效解法5 g0 Y: j# G4 W: t) _& D0 V
    寻求能够照顾到各个目标,并使决策者感到满意的解。由决策者来确定选取哪一个 解,即得到一个满意解。但有效解的数目太多而难以将其一一求出。 . a$ ]1 ^. R4 n; B9 a
    / V, @' W: Y+ x5 P1 x9 W. ?3 [
    2  目标规划的数学模型& Y! t/ L, T3 l
    为了具体说明目标规划与线性规划在处理问题的方法上的区别,先通过例子来介绍 目标规划的有关概念及数学模型。
    8 C$ A3 O; a; c4 I  |* y! o7 W; S0 J
    8 V  ?' x9 @7 @( i! o1 r例1  某工厂生产 I,II 两种产品,已知有关数据见下表 ,试求获利最大的生产方案。5 a6 D1 p  n0 u# e4 F/ M

    . W, g) h& \" p! B6 @* G, n& i# A/ N, w
    + R" b. _" [" B: b
    解  这是一个单目标的规划问题,用线性规划模型表述为:
    ( P/ V' _' p- r" o0 c3 b+ d2 v
    7 O! t- e9 r6 u7 ]- U* l5 L; r7 n1 ?

    9 c. h( R5 ]: X  I但实际上工厂在作决策方案时,要考虑市场等一系列其它条件。如
    # o7 C  v# T: i' n) S
    ' G$ {. \7 N. b9 u$ M( A4 n, b(i)根据市场信息,产品 I 的销售量有下降的趋势,故考虑产品 I 的产量不大于 产品 II。: Y8 b9 h) P! G2 {: v
    5 W4 o1 p# m7 L6 g0 I7 u
    (ii)超过计划供应的原材料,需要高价采购,这就使成本增加。
    / F% U0 Y- M. H9 a" a8 `4 [7 N# o
    (iii)应尽可能充分利用设备,但不希望加班。
    " D2 v  ?5 Q! B0 V/ V5 P
    ' d, k4 v! }7 k2 I4 E$ b5 E(iv)应尽可能达到并超过计划利润指标 56 元。% G) J. [9 U& \* R, ?

    / ^5 w& G8 x0 L7 r+ j  w这样在考虑产品决策时,便为多目标决策问题。目标规划方法是解决这类决策问题 的方法之一。下面引入与建立目标规划数学模型有关的概念。
    : w, P+ O) G4 W
    & q* [. |+ K" i: t% u; [9 }# H1. 正、负偏差变量
    : B6 a! k/ ~0 k9 ^; d, z' a
    # s( h  |! l9 q, V2 a5 ]" c) l1 d1 q8 {

    3 [5 n  h7 @; a5 U2. 绝对(刚性)约束和目标约束
    * M4 B5 X3 O/ g" j) g
    - X0 V, z2 _/ @; n1 C5 b
    + }; |2 U  ]' Z2 ^" L6 }
    - k; U3 G- A# ^8 I7 d  V3. 优先因子(优先等级)与权系数 0 {# f0 T6 T. ^. ]
    + w2 S% ?: v7 @
    9 E2 a# n6 ^( W
    ( V' T% M7 W: M( s3 C: k

    1 W1 h+ Q+ K. Z: t4. 目标规划的目标函数 8 T0 \: p: j1 b" U( H2 q/ e4 p! z
    . R/ V( e4 a& f1 H: v
    & ~* ]+ a' }% J/ z( a; n
    * X; ^, K9 m) e$ R( g# z+ I
    对每一个具体目标规划问题,可根据决策者的要求和赋于各目标的优先因子来构造目标 函数,以下用例子说明。 * ~6 D. i9 O3 R- ^9 Q

    8 Q5 C1 g2 u' _- o例 2 : 例 1 的决策者在原材料供应受严格限制的基础上考虑:首先是产品 II 的产 量不低于产品 I 的产量;其次是充分利用设备有效台时,不加班;再次是利润额不小于 56 元。求决策方案。 解  按决策者所要求的,分别赋于这三个目标  优先因子。这问题的数学模型是  
    % }2 H1 C0 @5 z  m/ C/ z
    $ K/ c- @3 r, {5 Y
    ( n# L  S1 M+ d/ c  A2 v# O$ f5 }% X9 {# _  J! {8 J7 Y
    5.目标规划的一般数学模型# m( f  g4 c9 M
    / l6 H; O1 J6 a8 D0 i- }
    $ q9 u+ `3 J# {- o
    % l$ Q9 c+ v3 c* n. B- V

    ( M' |* \- W' T6 E建立目标规划的数学模型时,需要确定目标值、优先等级、权系数等,它都具有一 定的主观性和模糊性,可以用专家评定法给以量化。 ' ^9 n7 z; r5 l: n4 \1 J. l+ D

    . A; a/ U( ~- z3  求解目标规划的序贯式算法; I+ t$ d& O1 x- N: E' @2 U
    序贯式算法是求解目标规划的一种早期算法,其核心是根据优先级的先后次序, 将目标规划问题分解成一系列的单目标规划问题,然后再依次求解。 ! a, }4 j) Q0 E& T
    * T$ w9 _& E9 j
    * B' m8 @0 q- K% X* E2 }
    4 i$ P* I$ F- O) D& G

    ) G- ]; t$ G1 J! }- M: u/ U# V) j* y( Z
    注  此时最优解的概念与线性规划最优解的概念已有所不同,但为方便起见,仍 称为最优解。
    3 [' ]5 Z1 X; |0 D4 m3 c7 b5 n5 t# J7 u' A
    例 3  某企业生产甲、乙两种产品,需要用到 A ,B ,C 三种设备,关于产品的赢利 与使用设备的工时及限制如下表所示。问该企业应如何安排生产,才能达到下列目标:' p) T+ g7 o' b/ b* c
    5 j! L# W1 _8 f: K& U
    1 ]/ L: Z! {4 U/ Z5 ~

    2 O3 M# n% y6 O% }8 B7 f. W; d(1)力求使利润指标不低于 1500 元;. u4 _' t: ]! y4 H. m% K

    6 l5 y; i! Z' U) n3 r2 Z(2)考虑到市场需求,甲、乙两种产品的产量比应尽量保持 1:2;! o  U: n$ ], C$ y. B* D8 e* r1 F4 t
    # X( Q7 q  E1 T& ]. K2 Q
    (3)设备 A为贵重设备,严格禁止超时使用;
    5 u' p+ o+ K, t1 P. r! c/ X' O- P* o
    (4)设备 C 可以适当加班,但要控制;设备B 既要求充分利用,又尽可能不加班。 在重要性上,设备B 是设备C 的 3 倍。" R, {$ y5 u- ^7 ?4 ]+ ^0 z7 y

    ; I2 R, x- T2 O" v建立相应的目标规划模型并求解。
    / n9 H7 K5 n  D! A: T
    ' O: n9 _0 a% `5 _解  设备 A是刚性约束,其余是柔性约束。首先,最重要的指标是企业的利润, 因此,将它的优先级列为第一级;其次,甲、乙两种产品的产量保持 1:2 的比例,列为 第二级;再次,设备 B C, 的工作时间要有所控制,列为第三级。在第三级中,设备B 的 重要性是设备C 的三倍,因此,它们的权重不一样,设备B 前的系数是设备C 前系数 的 3 倍。由此得到相应的目标规划模型。 , k2 A4 v) M$ i4 T$ h3 I6 ^
    8 A6 a, E' ^& K( p- M4 d

    ' Q! }8 i' H% J; q8 g) ~& s/ V; c7 y5 U; `8 W( {/ {' {/ N
    序贯算法中每个单目标问题都是一个线性规划问题,可以使用 LINGO 软件进行求 解。 求第一级目标。LINGO 程序如下: . n; J; ]4 i3 O/ H$ R
    3 t7 ]# N) `* `5 U* E
    model: $ b) i1 \, ]! b! Y5 j
    sets: ! i9 U: }- t/ H( @
    variable/1..2/:x;
    & q+ X) D- s  n) a3 v7 VS_Con_Num/1..4/:g,dplus,dminus;
    5 O) |4 M1 h! j! ^2 D) xS_con(S_Con_Num,Variable):c;
    ( g0 k5 |$ e$ l7 H( gendsets
    7 d* K- y; N& ]& {1 r  b! J  x1 sdata:
    * `( `# f" L' F" J' s3 U* g" V* {g=1500 0 16 15;
    , g+ ^7 w, Z7 f. i8 B# t* b. gc=200 300 2 -1 4 0 0 5;
    5 t. R7 u+ B# _  U4 senddata
    7 x! E( a/ e; D! j% r/ ymin=dminus(1); ) M% y) c) v* q0 S. H1 c
    2*x(1)+2*x(2)<12; " g- p- Y" [  r# e3 b; ^2 m
    @for(S_Con_Num(i)sum(Variable(j):c(i,j)*x(j))+dminus(i)-dplus(i )=g(i));   v! c( F& j% P' y
    end4 w5 Z7 A% P8 v5 Y

    6 f+ _7 c3 Z5 M, S$ x; \; h

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

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

    model:
    5 o% C" ^+ d, n0 y  S# W5 q1 @sets: 1 i/ f6 Z8 C- V9 p
    variable/1..2/:x; 6 `" [+ q8 @/ a2 ?0 W: U" [
    S_Con_Num/1..4/:g,dplus,dminus;
    0 r4 F' D9 D) {' W* aS_con(S_Con_Num,Variable):c;
    0 A6 x7 k9 t% h. y# d$ l# Xendsets   `$ d- Z( H2 y( n* u
    data: 0 P( s; e* ^) P% ^
    g=1500 0 16 15; 9 e1 F9 y' a3 r3 O( d# a+ N/ o
    c=200 300 2 -1 4 0 0 5;
      O, P4 ~7 M/ g+ O8 aenddata + t& P) z% l, {1 A. u$ V
    min=dplus(2)+dminus(2);    !二级目标函数; 4 X3 U. w, h- L+ I7 r8 f4 d
    2*x(1)+2*x(2)<12; 7 r) j: G, U+ E3 q$ W. E" B
    @for(S_Con_Num(i)sum(Variable(j):c(i,j)*x(j))+dminus(i)-dplus(i )=g(i)); * {7 P* {+ ^- k; Z
    dminus(1)=0;!一级目标约束; 8 H  H7 c1 j; i
    @for(variablegin(x)); # B7 I( h8 X7 K7 Z1 }, l" v! o& i/ Z8 W
    end
    + h9 d2 J: B% d: r; _$ D0 i# s1 U5 ~+ N, C9 B( i
    求得目标函数的最优值为 0,即第二级的偏差仍为 0。 求第三级目标,LINGO 程序如下:
    . p% Q6 E! c2 [& D) M8 J) n; @2 m9 i8 C* ~9 q9 g$ g% U
    model: 9 N) u* ~. g' e( f  a
    sets: 9 ]" }0 e$ t6 F3 l
    variable/1..2/:x; 6 M9 L8 g7 B4 m5 S5 W
    S_Con_Num/1..4/:g,dplus,dminus; " z, [. N3 o' M" w+ f; T
    S_con(S_Con_Num,Variable):c; ( }2 ^- c* B' }: F6 [; L. \
    endsets 9 l9 G$ v6 D4 R; x' j' v
    data:
    4 J! O& [0 K; c+ k  {5 ^) e9 Dg=1500 0 16 15;
    , c* }  a$ G' r! fc=200 300 2 -1 4 0 0 5; 5 J0 T% j# X. H! L. _1 {
    enddata - z  u- r2 h7 K
    min=3*dplus(3)+3*dminus(3)+dplus(4);    !三级目标函数;
    ! u6 z. d. B4 C6 `2*x(1)+2*x(2)<12;0 m. |. o) W% s9 u
    @for(S_Con_Num(i)sum(Variable(j):c(i,j)*x(j))+dminus(i)-dplus(i )=g(i)); " ~) T# G- ]/ ]$ U
    dminus(1)=0;!一级目标约束;
    # ]. r# A  V4 Cdplus(2)+dminus(2)=0;!二级目标约束; # i6 |5 s$ n4 _6 k* g8 i2 w
    end& i" d0 Q- K  {- J- N

    - D! l1 L+ E5 i; j3 K目标函数的最优值为29,即第三级偏差为29。
    " g' E; P/ X& T" k* \' u" b- x% v4 r% \# d) H# A9 }
    分析计算结果,  ,因此,目标规划的最优解为   , 最优利润为1600。
    3 W8 \& Z1 y4 U8 @: R: D; U/ Z2 N) x5 \" U# q4 L5 i9 w7 j
    上述过程虽然给出了目标规划问题的最优解,但需要连续编几个程序,这样在使 用时不方便,下面用 LINGO 软件,编写一个通用的程序,在程序中用到数据段未知数 据的编程方法。
    9 I7 W( K5 p+ X" d% [* @+ L1 B8 J' |, ?
    5 v  q4 S# I! D. v$ O: A例 4(续例 3)  按照序贯式算法,编写求解例 3 的通用 LINGO 程序。
    ( v' T" Y+ l0 A# ~0 f+ r$ L6 _; V( G) n2 A
    model:
    : b# f! @. w8 j3 t  qsets: 7 F2 X" N, }' [5 e9 O
    level/1..3/:p,z,goal; 3 D. m# U& k, Z2 L7 H6 Z9 C
    variable/1..2/:x;
    3 _: a( [1 m1 d$ U4 i; P! rh_con_num/1..1/:b; 2 k: K- G% |1 K3 O5 v+ ?, z% b
    s_con_num/1..4/:g,dplus,dminus;
    , W, {0 G, U9 D! h$ N% {; t) Yh_con(h_con_num,variable):a; " Y4 @" I& n9 r
    s_con(s_con_num,variable):c;
    5 Z% H& K1 k4 Bobj(level,s_con_num)/1 1,2 2,3 3,3 4/:wplus,wminus; ; ^- s7 V  v6 U9 U* D) x
    endsets
    + j" a7 I1 |) n& C  Ydata:
    ) N) H8 ?; k. l2 z5 g( W3 a* z9 |ctr=?;
    % I' f) [1 g% a3 m' {7 t; q) Igoal=? ? 0;
    : }9 R# y7 ^$ \/ r$ y( P( X! Zb=12; ' o* E8 ~% \  e) u) ]" U
    g=1500 0 16 15;
    3 E) G2 g4 [3 x' z" f, a7 ba=2 2;
    ( i" |5 G4 t2 J: G7 @0 oc=200 300 2 -1 4 0 0 5;
    9 _1 j: b/ Q. N6 jwplus=0 1 3 1; & L7 [- s) @7 ?
    wminus=1 1 3 0; ) X, |: M. o8 P/ m* O; F/ L& f2 K3 V
    enddata   o! I8 p4 P2 s; f
    min=@sum(level:p*z); . @* z& {( t1 [  }0 F
    p(ctr)=1;
    , K8 X" @! N0 i7 s4 b+ T@for(level(i)|i#ne#ctr:p(i)=0);
    2 u) w( `  L7 D% y@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))); ) n; M) M) k( U
    end 1 G& d6 A. t0 I/ u
    / B4 r6 k$ |, }2 F( w6 L0 ]# U
    & l/ F9 `( `; c% F
    8 q* x2 K4 Z& a8 _1 J( j& o
    2 ~* m' y: P7 h, C
    . V5 M2 N7 N# c# k! o
    4  多标规划的 Matlab 解法

    多目标规划可以归结为

    . B" s1 }7 t$ |$ ?/ z' ]& v' [. B
    # J! n2 i4 l& X' i8 D" o. k1 o
    ! i' h1 i7 q5 M' u. C
    [x,fval]= fgoalattain('fun',x0,goal,weight)           , i* |3 o; r) \6 Q
    [x,fval]= fgoalattain('fun',x0,goal,weight,A,b)           
    , X  U$ Y: f1 K& s+ I3 \[x,fval]= fgoalattain('fun',x0,goal,weight,A,b,Aeq,beq)           - d0 g8 \. z7 ?. ~4 c" ]
    [x,fval]= fgoalattain('fun',x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon) & e; k% B! F+ H$ a

    & F9 y; m: a; m" V4 |9 t% V2 x( V& D4 S/ H( Y2 R) r
    要完整掌握其用法,请用 help  fgoalattain 或 type  fgoalattain 查询相关的帮助。1 v3 I" p+ i2 x) \2 S, E7 f" M
    例 5  求解多目标线性规划问题   y) k$ U& ?" v6 i2 u
      ~/ A6 h" b, X/ E* i' c6 @7 A

    - h( ]% `! t2 M: _& k& X( F; }
    1 g3 K+ F+ B8 Z6 y解  (i)编写 M 函数 Fun.m: & i; R* E  z) S. h

    1 |% K4 B, H" M  Pfunction F=Fun(x); / o. b5 T, D+ d! Q3 j

    6 \$ C' X$ _7 N& ?F(1)=-100*x(1)-90*x(2)-80*x(2)-70*x(4); + k' @4 k9 e6 m

    6 P( K) Y: ]- }) JF(2)=3*x(2)+2*x(4); ! P& F9 I* I3 b

    5 Q; u  E& q+ H' n* }: v$ a, C(ii)编写 M 文件 + [% T! `' L: g" M# d* _
    * z4 M4 y4 B) C) L. V3 A: k
    a=[-1 -1  0  0    0 T6 j+ ^5 X1 x& _6 a
       0  0  -1 -1    . O, U8 ~" _# l1 h
       3  0   2  0    - J2 l; T" D; @  ?3 l2 P, n
       0  3   0  2];
    5 A; p+ ?9 H3 s' z/ Xb=[-30 -30 120 48]'; " O. J1 V+ L/ B- o$ w' R2 E
    c1=[-100 -90 -80 -70]; $ Z7 }/ q8 H4 {
    c2=[0 3 0 2];
    / {& L9 V: V( B9 b  t6 F[x1,g1]=linprog(c1,a,b,[],[],zeros(4,1))  %求第一个目标函数的目标值
    0 P0 w. y0 d2 c[x2,g2]=linprog(c2,a,b,[],[],zeros(4,1))  %求第二个目标函数的目标值 + |; }- `; S! P) n* ?# ]
    g3=[g1;g2]  %目标goal的值 : M4 l" J9 L  P
    [x,fval]=fgoalattain('Fun',rand(4,1),g3,abs(g3),a,b,[],[],zeros(4 ,1))
    7 Z' ^( w! F  Y& X. P0 _$ e! Q%这里权重weight=目标goal的绝对值
    ! N; F: D( \' K! T
    0 w! Y  a: l3 h+ o( b' F

    就可求得问题的解。

    习题& m. \) `' s5 q! r

    ; r* d8 r( O& M7 o' c0 H
    7 V, k! [% t) r: m; l" M8 W$ |————————————————  r# d- a( _! s3 e% _$ s6 I
    版权声明:本文为CSDN博主「wamg潇潇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    6 B  q8 i( e0 ?! C原文链接:https://blog.csdn.net/qq_29831163/article/details/894889322 J8 r/ q: k# @( ~6 z  l( O' v
    ' l* Z: J, Z/ H- V% P- X( a  I
    - ^  m$ E  n; P" L
    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, 2024-5-31 10:25 , Processed in 0.336702 second(s), 50 queries .

    回顶部