- 在线时间
- 791 小时
- 最后登录
- 2022-11-28
- 注册时间
- 2017-6-12
- 听众数
- 15
- 收听数
- 0
- 能力
- 120 分
- 体力
- 35445 点
- 威望
- 11 点
- 阅读权限
- 255
- 积分
- 13577
- 相册
- 0
- 日志
- 0
- 记录
- 1
- 帖子
- 621
- 主题
- 542
- 精华
- 10
- 分享
- 0
- 好友
- 225
TA的每日心情![](source/plugin/dsu_paulsign/img/emot/kx.gif) | 开心 2020-11-14 17:15 |
---|
签到天数: 74 天 [LV.6]常住居民II
![](plugin.php?id=eis_qrcode2:make_qrcode&tid=466846) 群组: 2019美赛冲刺课程 群组: 站长地区赛培训 群组: 2019考研数学 桃子老师 群组: 2018教师培训(呼伦贝 群组: 2019考研数学 站长系列 |
1.线性规划的局限性
/ h" J/ p$ r. t( c6 ]只能解决一组线性约束条件下,某一目标只能是一个目标的最大或最小值的问题。. Y* I# w# y6 Z
/ U' z4 L" y# Y 2.实际决策中,衡量方案优劣考虑多个目标
* p3 ?" x1 n# S$ q2 c1 C这些目标中,有主要的,也有次要的;有最大值的,也有最小值的;有定量的, 也有定性的;有相互补充的,也有相互对立的,LP 则无能为力。
5 e- ]) V4 g. Y* v* a# B/ t/ }% l) ]# [ u) g% M0 h& d
3.目标规划(Goal Programming)
+ T- ^. l1 N5 K8 h3 C0 z( F! c美国经济学家查恩斯(A. Charnes)和库柏(W. W. Cooper)在 1961 年出版的《管理模型及线性规划的工业应用》一书中,首先提出的。
: p! N1 ^* \: c8 M7 W6 n5 l6 ~% K4 ~' f* }- ]4 H, l, q
4.求解思路) ?0 U- c: Y# f1 b( G: R1 Q* Z: U( w
(1)加权系数法
* @. o2 B! G9 \8 S6 q为每一目标赋一个权系数,把多目标模型转化成单一目标的模型。但困难是要确 定合理的权系数,以反映不同目标之间的重要程度。
) L8 C' A; a) \* b
( L& A# z5 x! @. |* l0 B, s! C(2)优先等级法, m9 Q/ e1 |8 M/ i& [' |! `: `/ o
将各目标按其重要程度不同的优先等级,转化为单目标模型。
: h! S2 e: B$ I' h% P8 @$ t( b; D. j% B# H) A# a
(3)有效解法& o# d) T. \8 q8 {) q+ X
寻求能够照顾到各个目标,并使决策者感到满意的解。由决策者来确定选取哪一个 解,即得到一个满意解。但有效解的数目太多而难以将其一一求出。 / e1 G! n+ K0 p) D& w
- Q% G" `: T h5 v2 目标规划的数学模型
" o/ o7 W9 n8 K' Q2 R9 k" R! ?为了具体说明目标规划与线性规划在处理问题的方法上的区别,先通过例子来介绍 目标规划的有关概念及数学模型。8 }1 p$ c w6 D6 S+ n/ ~9 J4 v
; O9 p( ^6 Z8 C& s2 w4 F例1 某工厂生产 I,II 两种产品,已知有关数据见下表 ,试求获利最大的生产方案。% g7 I8 L6 o. c. m Z/ F, V
) J6 O' b% `1 P ( E$ j+ o/ K( o
0 k$ ]" d% i$ s0 u$ F( G& q2 v
解 这是一个单目标的规划问题,用线性规划模型表述为: 1 [5 e+ n5 m- `) l$ s }, L
; i( }2 f b. ^2 @6 A' r3 o 1 @- v) v$ |3 o: ]8 z+ Z# u
6 p- i+ }5 ?& c/ o2 V6 P但实际上工厂在作决策方案时,要考虑市场等一系列其它条件。如
6 ]. @$ ?$ B# j3 j, o% u# }; D" {& J3 ^
(i)根据市场信息,产品 I 的销售量有下降的趋势,故考虑产品 I 的产量不大于 产品 II。
7 f- \1 C2 Y# j- f! d; g( u# ^+ C$ n' w9 y. D9 v
(ii)超过计划供应的原材料,需要高价采购,这就使成本增加。
( F6 U0 T* d3 `0 G- Q" Y
8 _) C, B& }* j(iii)应尽可能充分利用设备,但不希望加班。
2 |4 |- V! E$ c+ X4 [# c( C. C. w, }; J1 X' P9 u
(iv)应尽可能达到并超过计划利润指标 56 元。
& P7 s; u0 X& J4 N/ N: e
$ c% H% ~1 }+ f/ r这样在考虑产品决策时,便为多目标决策问题。目标规划方法是解决这类决策问题 的方法之一。下面引入与建立目标规划数学模型有关的概念。 7 N& m9 C! \- W) \: d
7 R" S8 }8 M. z" }1. 正、负偏差变量 . e. ?5 C8 u3 q% F* W3 V4 o9 x2 O
) w2 o4 v1 q( y1 [- P; R
O1 ?7 @0 L4 H/ j# x
+ ?* O Y1 L6 I! q* U7 E
2. 绝对(刚性)约束和目标约束
" s- w1 C/ |9 A+ C2 Z1 ?3 ?9 v0 y; F {, Y3 q; y) t
![]()
, u5 S4 E0 `( a7 E& ?4 a0 s4 @$ U9 g( {4 q% E7 h) T
3. 优先因子(优先等级)与权系数
1 `4 ]! E% X4 N1 {4 o* j' ]9 m
9 x. i. x% t8 R( O" v0 x& N( [![]()
8 g4 ?' D2 Q' ]9 K2 _$ ?
4 i) A. D. b1 U# } K; q6 Z8 v. ?9 S% R- D; p
4. 目标规划的目标函数
* p; {. _" y7 L4 I M+ Y D8 v4 ]" E
4 Y: X1 p0 Z4 ~1 R. c
$ q$ `$ n! o$ P3 O# @$ q' {9 c; j对每一个具体目标规划问题,可根据决策者的要求和赋于各目标的优先因子来构造目标 函数,以下用例子说明。 ' g# ?, D5 d& a( H
0 K* Z6 f- z9 W, l/ Q+ F例 2 : 例 1 的决策者在原材料供应受严格限制的基础上考虑:首先是产品 II 的产 量不低于产品 I 的产量;其次是充分利用设备有效台时,不加班;再次是利润额不小于 56 元。求决策方案。 解 按决策者所要求的,分别赋于这三个目标 优先因子。这问题的数学模型是
7 y0 M2 L9 {1 q9 h
2 Z/ H) V0 a( v1 S/ S* H0 @ 0 Y$ J) H7 W& S t; l7 j) a
9 X/ @7 G+ D& w4 ?
5.目标规划的一般数学模型
7 l$ C/ s8 k+ ?# K1 b, x3 B
# d. h. x3 D7 e- C+ E, b![]()
( L# e T5 E# b' H/ w4 o. d, q2 S4 N- R
, S3 v& m, ` m* G! F* [
建立目标规划的数学模型时,需要确定目标值、优先等级、权系数等,它都具有一 定的主观性和模糊性,可以用专家评定法给以量化。 / G* u; k; p. O+ G0 ]$ c4 |& k
9 ~/ H6 }: J- U+ Y3 求解目标规划的序贯式算法
8 x+ t, ?" G% `: s$ ]/ B+ p+ i序贯式算法是求解目标规划的一种早期算法,其核心是根据优先级的先后次序, 将目标规划问题分解成一系列的单目标规划问题,然后再依次求解。
- `7 `; {4 \/ i& H2 N$ Y
+ w5 A# G' g# Y7 z- c. o2 _![]()
8 ~0 u. v1 |+ @0 e" r$ R# [& ]- E- `: b# Q6 P% c- S2 }6 Y1 i
/ `6 }4 C: {' w! H- _% Y* A
) [, I( L5 g- S3 W注 此时最优解的概念与线性规划最优解的概念已有所不同,但为方便起见,仍 称为最优解。
3 F* r- G: U' V" J7 c
7 p" O: S# l7 K5 H+ a% Q例 3 某企业生产甲、乙两种产品,需要用到 A ,B ,C 三种设备,关于产品的赢利 与使用设备的工时及限制如下表所示。问该企业应如何安排生产,才能达到下列目标:
# H( a, y. y3 D0 V, @; l1 T+ a8 k1 q2 ~9 b0 l! ]3 U$ b. {
! t' Z9 j o# _& O* T: H: P( U- P0 j
; u# G. r) [( [, R I(1)力求使利润指标不低于 1500 元;0 T; \5 N8 {6 y
8 V+ u0 }; |& H# \( ^% R, l(2)考虑到市场需求,甲、乙两种产品的产量比应尽量保持 1:2;
$ i, I! V1 R3 I) n% J' Y0 G
" u: o) Q4 S1 u' ~. B(3)设备 A为贵重设备,严格禁止超时使用;) F* `; s1 `) F/ r7 U( y$ i' f2 K
! W7 B# r. m8 o. }8 x, J) W(4)设备 C 可以适当加班,但要控制;设备B 既要求充分利用,又尽可能不加班。 在重要性上,设备B 是设备C 的 3 倍。5 H4 ]% e H1 v0 ~# n. {6 L/ w6 J% N
- P/ O }! d% d- d5 B3 P4 r1 W2 G建立相应的目标规划模型并求解。
1 X D4 z# b8 |: _' h7 L# d$ c- Z2 ~3 w# s* E$ ]
解 设备 A是刚性约束,其余是柔性约束。首先,最重要的指标是企业的利润, 因此,将它的优先级列为第一级;其次,甲、乙两种产品的产量保持 1:2 的比例,列为 第二级;再次,设备 B C, 的工作时间要有所控制,列为第三级。在第三级中,设备B 的 重要性是设备C 的三倍,因此,它们的权重不一样,设备B 前的系数是设备C 前系数 的 3 倍。由此得到相应的目标规划模型。
% j2 N, W+ T* y" l4 \
. r$ I2 t5 i0 i! J& r4 N/ Y![]()
) Z6 @6 i) a- P0 M5 ]+ d- G7 _+ B% @4 ]& O+ c, ~7 m- w" a R
序贯算法中每个单目标问题都是一个线性规划问题,可以使用 LINGO 软件进行求 解。 求第一级目标。LINGO 程序如下:
: F! C2 @9 i6 a$ F- o: B- e5 E% l x& k; ?% k# A8 R! F7 _
model: + R: L o; J3 N" r
sets: $ L+ I" w2 G/ ^7 K
variable/1..2/:x; ) f3 W1 e. z7 e( {+ B5 Q; G) F3 Q8 `
S_Con_Num/1..4/:g,dplus,dminus; ' o, d2 H' T+ g& s+ M3 c$ ^' c& d
S_con(S_Con_Num,Variable):c;
3 m+ R' M1 ?, i+ Tendsets 1 A8 [* P, S, P$ C; N: M0 |1 Q: ~' w
data: 2 q$ k! E8 s+ [) c
g=1500 0 16 15; 5 |/ Z. _5 g( y; f5 ]
c=200 300 2 -1 4 0 0 5; 8 U6 _( P% p6 Z
enddata
5 t5 N- w6 `# X* ?- ^1 @min=dminus(1); 8 j& ~# k; K* D1 B* l; D% u
2*x(1)+2*x(2)<12; 5 {! o1 x1 h' X. ?* i/ P3 I9 M
@for(S_Con_Num(i) sum(Variable(j):c(i,j)*x(j))+dminus(i)-dplus(i )=g(i));
/ T+ w0 e+ ]2 q/ M$ t' o$ \5 [end
2 G3 Y1 s1 C8 X( g+ y
$ l% F/ `, f1 l6 T求得 dminus(1)=0,即目标函数的最优值为 0,第一级偏差为 0。 求第二级目标,LINGO 程序如下: model: ( u$ v( t, ?$ j
sets: ( C6 A8 ?% n; y* i+ e- p
variable/1..2/:x; ( C0 \& D5 N! x/ K, e. U+ e z6 d8 L
S_Con_Num/1..4/:g,dplus,dminus;
+ }' D% `8 K# M5 C2 T7 v6 bS_con(S_Con_Num,Variable):c; 9 f# o9 Q5 c; Z
endsets
+ J. t, \$ V8 b1 B( w# p, Mdata: # l* r! D" o0 s
g=1500 0 16 15; ; P# \& g6 C5 g1 j
c=200 300 2 -1 4 0 0 5; * u9 g6 I2 M2 z7 S' l/ d K8 c
enddata
1 R; Y7 B1 E* T0 D1 p2 ^min=dplus(2)+dminus(2); !二级目标函数; # m$ `, L% L+ O$ d) i
2*x(1)+2*x(2)<12; ! G2 ?, C5 \' W
@for(S_Con_Num(i) sum(Variable(j):c(i,j)*x(j))+dminus(i)-dplus(i )=g(i)); - F! o6 U- L9 i' }% D
dminus(1)=0;!一级目标约束;
/ E4 Y3 F: v% }4 T. f8 B. [. n@for(variable gin(x)); ) K2 a7 V: {$ K: m' k1 @
end
1 P+ T) e0 g, T4 K
- N @7 u0 `+ F9 a6 |求得目标函数的最优值为 0,即第二级的偏差仍为 0。 求第三级目标,LINGO 程序如下:
' W, A1 a% H3 q1 E: U/ `3 N
' g4 Y5 f: m* M# S: { _ ` S6 u4 emodel: 4 U" V/ k' v# P0 u1 M
sets: 0 u8 X: O) O: f
variable/1..2/:x;
, P; y8 V' P; p2 s; S) IS_Con_Num/1..4/:g,dplus,dminus; & w+ c. d0 o* K' j" N* A! d1 Z
S_con(S_Con_Num,Variable):c;
) K4 ?# w# N( _% O( Vendsets
. ]' p' K$ G# S/ o) Jdata:
; n+ c/ S& {* {( W6 _; d; x& lg=1500 0 16 15; & f7 f. F- e" w# e1 `
c=200 300 2 -1 4 0 0 5; ) g4 [/ M% B- F! e" N4 [
enddata
" o3 d# U+ n& A: N7 P4 emin=3*dplus(3)+3*dminus(3)+dplus(4); !三级目标函数; ) A8 d9 H8 [ C+ q9 _
2*x(1)+2*x(2)<12;9 ]% a2 {8 \$ }* I9 A0 m
@for(S_Con_Num(i) sum(Variable(j):c(i,j)*x(j))+dminus(i)-dplus(i )=g(i));
' h: \9 c! |' C1 C' x# t7 |dminus(1)=0;!一级目标约束; 0 K9 N, h |3 t2 }3 s8 u% ]+ w
dplus(2)+dminus(2)=0;!二级目标约束;
6 z1 `8 j. q2 a7 d$ f2 Q Y4 T8 ]end, B- \% Y( A* @# Y4 W+ c& x! K% h# a. z
8 J/ h7 ^8 W3 ~: l- A/ u: ]: Z/ v' u
目标函数的最优值为29,即第三级偏差为29。 , y. m p/ H( P& X4 ]
0 P$ _/ t' I( I3 s分析计算结果, ,因此,目标规划的最优解为 , 最优利润为1600。& q- `2 v# ?2 d" t: @
/ [* } p/ W6 b! H
上述过程虽然给出了目标规划问题的最优解,但需要连续编几个程序,这样在使 用时不方便,下面用 LINGO 软件,编写一个通用的程序,在程序中用到数据段未知数 据的编程方法。& [, N' v4 K! a) e) m
: X7 Z+ O. |! d' K& C% U# c7 ]1 g8 J例 4(续例 3) 按照序贯式算法,编写求解例 3 的通用 LINGO 程序。
/ O! v G+ s1 v2 N7 {* b" A9 C+ O+ E2 [2 X) H
model:
( l# D" U0 ]# d% l; n* e: }* }0 ksets:
( P( N+ r; u+ r: B/ G; Vlevel/1..3/:p,z,goal;
+ p# b' h" A4 H9 P& D& C+ yvariable/1..2/:x; - s/ ?8 M5 w& n
h_con_num/1..1/:b; % C) u1 O* J( d% J- N! t: o! c
s_con_num/1..4/:g,dplus,dminus;
+ `/ D- t" b# C1 T. U& G% U$ nh_con(h_con_num,variable):a; . y& b5 q) S0 v' k/ e
s_con(s_con_num,variable):c;
! }+ ? c( O6 K7 X8 @+ Dobj(level,s_con_num)/1 1,2 2,3 3,3 4/:wplus,wminus; 8 O% E: p# ^* y# V/ T4 X* }3 Z
endsets
1 N5 A0 K+ h5 T4 ?6 hdata:
! R- S2 g; Y. Wctr=?; / H2 R) f) D0 b, \) N% M* Z0 V
goal=? ? 0;
# e& x' G& z( [3 x* B! \b=12;
+ r( j7 U3 J4 Tg=1500 0 16 15;
7 e; C% J+ V/ a* B( D4 S+ T8 J7 ga=2 2; & ^) P9 o% @( O; h
c=200 300 2 -1 4 0 0 5; 4 G6 X4 f. u" A1 F9 u
wplus=0 1 3 1; d. Y9 L9 t v; ?
wminus=1 1 3 0; 3 z! j- J+ L1 d6 l( o/ G
enddata 1 l& R; Y6 z% O& ^
min=@sum(level:p*z); 6 o: w5 w3 q( V; w! ]' ~3 h( l
p(ctr)=1;
5 v) |9 z3 `) _3 R@for(level(i)|i#ne#ctr:p(i)=0); : W8 u3 \, e6 t0 W. u% V* p
@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))); ! }3 p* [0 |8 C( g; c/ Y
end
% k9 h: Z- N/ r6 Z) p- u
" m I/ p3 l, R/ a
1 ?0 W6 y: u: n* [
2 J( g+ i+ Q+ }6 B& W![]()
: S# C; Y- ^, f7 X: E* m: q9 B& q9 _9 X; V4 C5 n- G4 s3 F
4 多标规划的 Matlab 解法 多目标规划可以归结为
7 d7 \6 Y9 _; N* l7 g # V! Q6 M& e+ U
1 i/ r2 a+ r3 m6 e4 @: ]
[x,fval]= fgoalattain('fun',x0,goal,weight) , t+ m8 o) e$ {/ [
[x,fval]= fgoalattain('fun',x0,goal,weight,A,b)
* E3 ^* x( L1 O0 ]$ _- |[x,fval]= fgoalattain('fun',x0,goal,weight,A,b,Aeq,beq)
5 k1 P' I9 @) |6 T[x,fval]= fgoalattain('fun',x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon) D! V! e0 E; \$ F! J1 j1 H8 d
( t/ }0 r1 ~; s; u9 x
8 g& |* l/ K3 J& H要完整掌握其用法,请用 help fgoalattain 或 type fgoalattain 查询相关的帮助。
: a2 j6 C0 @" {9 g' e' O 例 5 求解多目标线性规划问题 + z7 u: a3 l: Z$ r2 Q9 h
5 D# l5 _- R4 M0 c/ Y6 b 2 T! _( M$ d( I8 V4 U$ P
6 L. q) h4 K1 v" I9 o8 d8 [解 (i)编写 M 函数 Fun.m:
( y( \$ k" Z+ t" U p
4 j5 t3 {( }( H/ o6 x+ Qfunction F=Fun(x);
) e1 d* ?3 p( Z& Q: G+ w) q" r1 b$ m& K0 n. T
F(1)=-100*x(1)-90*x(2)-80*x(2)-70*x(4);
6 J/ d6 a$ e; G P2 g" `) ~0 G
2 ~; \" q+ ^6 H% \( ^0 ^5 T8 TF(2)=3*x(2)+2*x(4); / W8 q7 k+ B2 k5 A! E
3 g7 n. ?* m6 H' M0 c(ii)编写 M 文件 5 O; i6 t& W# V' e! x
8 J: ?2 q5 X9 Ga=[-1 -1 0 0 8 a# Z7 K) P' Z! p' v
0 0 -1 -1 & j L+ s% j4 f, E! ^" M
3 0 2 0 ! M3 [2 M& h1 n- p. }7 k1 s
0 3 0 2]; 7 D% J5 X T5 S/ @$ R5 J+ ]
b=[-30 -30 120 48]';
& {$ i6 P+ H+ dc1=[-100 -90 -80 -70];
9 J3 z% i; L* q9 z2 G2 L. Pc2=[0 3 0 2];
4 t+ {$ z- r. p9 Z1 O4 I+ X[x1,g1]=linprog(c1,a,b,[],[],zeros(4,1)) %求第一个目标函数的目标值 / E! ]! e, C) s0 t" i( E/ z$ k3 \
[x2,g2]=linprog(c2,a,b,[],[],zeros(4,1)) %求第二个目标函数的目标值
9 R8 H% `2 ?) W7 Y# }3 ~+ V) bg3=[g1;g2] %目标goal的值
- u5 _% L q9 T8 e9 e! i9 W/ o. O1 m[x,fval]=fgoalattain('Fun',rand(4,1),g3,abs(g3),a,b,[],[],zeros(4 ,1)) " y7 C, z' t$ x
%这里权重weight=目标goal的绝对值 ; v E, S1 z1 o4 e9 n4 T7 s) a1 Q
& b: @4 ^- X( S7 @2 R2 v
就可求得问题的解。 习题
" m, d3 f6 c' ^9 k% m![]()
8 K6 V+ F$ Y: v i! h
- q# q+ \. l/ g& ?8 k————————————————: p/ d" Z" Y4 s' s" S4 |7 j9 Q# Z
版权声明:本文为CSDN博主「wamg潇潇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
- U+ { f. h. A% A/ O; ~/ n; l原文链接:https://blog.csdn.net/qq_29831163/article/details/89488932$ }0 s# q' l& i4 q! p
& c# |7 Q7 x: p( [4 w
8 T T' [0 m# J. {# E: C4 E |
zan
|