- 在线时间
- 791 小时
- 最后登录
- 2022-11-28
- 注册时间
- 2017-6-12
- 听众数
- 15
- 收听数
- 0
- 能力
- 120 分
- 体力
- 36136 点
- 威望
- 11 点
- 阅读权限
- 255
- 积分
- 13781
- 相册
- 0
- 日志
- 0
- 记录
- 1
- 帖子
- 616
- 主题
- 542
- 精华
- 10
- 分享
- 0
- 好友
- 225
TA的每日心情 | 开心 2020-11-14 17:15 |
---|
签到天数: 74 天 [LV.6]常住居民II
 群组: 2019美赛冲刺课程 群组: 站长地区赛培训 群组: 2019考研数学 桃子老师 群组: 2018教师培训(呼伦贝 群组: 2019考研数学 站长系列 |
1.线性规划的局限性1 f# `) X% K5 u& U: U
只能解决一组线性约束条件下,某一目标只能是一个目标的最大或最小值的问题。
" J' {) J [0 O, n
$ H, n/ R# E* q! r3 W& Q 2.实际决策中,衡量方案优劣考虑多个目标
, E+ |: a' N4 ~/ O( l- Y) h这些目标中,有主要的,也有次要的;有最大值的,也有最小值的;有定量的, 也有定性的;有相互补充的,也有相互对立的,LP 则无能为力。4 u3 M( p- C1 @2 A; ?
" |3 l) w6 p. H% U9 t
3.目标规划(Goal Programming)4 {9 s. s [, m$ a+ Y+ V/ x
美国经济学家查恩斯(A. Charnes)和库柏(W. W. Cooper)在 1961 年出版的《管理模型及线性规划的工业应用》一书中,首先提出的。
/ W, m8 w0 p$ D+ j- Y% L; a4 T e! @1 f3 g+ D8 w. ]" _$ G
4.求解思路
* F: y: z" D4 U: h0 W1 y5 M8 ~(1)加权系数法9 z0 q" B% ~8 C. l2 M# Z# Z! T
为每一目标赋一个权系数,把多目标模型转化成单一目标的模型。但困难是要确 定合理的权系数,以反映不同目标之间的重要程度。6 h) a1 M' ~, t5 i1 v* ^
5 G2 Q" L0 J; F1 i/ ^) `. g; M
(2)优先等级法5 y, J8 j u# {9 q3 n" J
将各目标按其重要程度不同的优先等级,转化为单目标模型。. a) ~& d! b1 s% B" Z) C
2 `6 E; l+ g" l3 l( V4 A4 G
(3)有效解法
) v" [ e- E; {4 j寻求能够照顾到各个目标,并使决策者感到满意的解。由决策者来确定选取哪一个 解,即得到一个满意解。但有效解的数目太多而难以将其一一求出。
; L5 C. c9 l: q" j" G" [, Y
3 p3 y; y% o" w# ]0 S+ t2 目标规划的数学模型
; E; b& I& {. X i) s9 `为了具体说明目标规划与线性规划在处理问题的方法上的区别,先通过例子来介绍 目标规划的有关概念及数学模型。6 Q" e6 b' ?* I5 r
( L. r& }, U& ?; z* K% j+ f, F例1 某工厂生产 I,II 两种产品,已知有关数据见下表 ,试求获利最大的生产方案。
* o5 B( N+ a D
' h8 `8 e$ o4 `6 d( }![]()
2 U" M% ?0 R `0 _; Y& p p; Q2 R" @9 q8 N. ^+ V
解 这是一个单目标的规划问题,用线性规划模型表述为: 1 `, e3 |8 N+ d. A- n
) a. R/ w) X1 p i. R( M% z$ l
![]()
' |$ L" A: r- n) E' v* d8 u! K5 T
' w7 X5 V/ }8 _. B, e; m但实际上工厂在作决策方案时,要考虑市场等一系列其它条件。如
' H' y9 A& N+ Y' S1 ]& M& r: c8 Y( H& V7 a, v
(i)根据市场信息,产品 I 的销售量有下降的趋势,故考虑产品 I 的产量不大于 产品 II。 U' h3 c; x$ y( r, Y# R. X5 Q
0 ]0 I% @9 J9 J* G# x
(ii)超过计划供应的原材料,需要高价采购,这就使成本增加。8 T( d- L7 j5 h9 T! c
3 x- ~; e+ ^( x9 G( O(iii)应尽可能充分利用设备,但不希望加班。 9 d3 H. _2 b! T
7 m2 T4 a h$ ?7 K1 R. g
(iv)应尽可能达到并超过计划利润指标 56 元。
1 x' z; K p# J* P: X: X0 q2 M% d) f4 C8 \# _
这样在考虑产品决策时,便为多目标决策问题。目标规划方法是解决这类决策问题 的方法之一。下面引入与建立目标规划数学模型有关的概念。
! G" Y3 Y: I: Y- ?7 [* ?4 u) K
1 D. i" o+ [0 u' x1. 正、负偏差变量
) I! l& W5 Q/ c( f
$ i8 `; B. C& t% |2 l![]()
3 f2 J: ^; z1 R
. P: G* F& ^+ d8 c4 T4 V2. 绝对(刚性)约束和目标约束
; O; [. X) ]& s0 @& E% e4 W4 ]" f) o) f d& m. G' r
![]()
' q# ]2 M r. [( ]$ R, \5 H
, ]& ` A% V8 j) Q5 C B2 a3. 优先因子(优先等级)与权系数
4 f8 v# s. z |' a/ N8 b& H7 O) u9 K2 R7 ^/ T6 H7 L
1 T2 G" n4 E" m
0 B: L+ V( s9 I$ K
9 ^0 A( g9 i4 W4. 目标规划的目标函数
. q# U, l7 j$ ~& ]& C2 D
" [& k' K* l8 ~2 ?4 W' h) Q8 x5 \, _![]()
+ g$ |( l# b/ u H6 u6 y
) D# M5 Y7 A5 A5 N) |, l& Q& r8 e g9 r对每一个具体目标规划问题,可根据决策者的要求和赋于各目标的优先因子来构造目标 函数,以下用例子说明。 ) J5 R& M5 }1 K& L
* d% o- M6 D' J; u$ h例 2 : 例 1 的决策者在原材料供应受严格限制的基础上考虑:首先是产品 II 的产 量不低于产品 I 的产量;其次是充分利用设备有效台时,不加班;再次是利润额不小于 56 元。求决策方案。 解 按决策者所要求的,分别赋于这三个目标 优先因子。这问题的数学模型是
6 U3 I* S& \3 t' m( j3 x
4 G7 ]9 A& s: N+ }6 H1 a 9 F! x3 X9 ~' T4 o0 B2 y
* }& g1 o, H9 r$ g! {1 Q {+ Y
5.目标规划的一般数学模型
* Y x$ A) d5 P/ | K U5 i3 p" O1 h3 w1 I8 Y) ~8 y- M; q4 G
![]()
: E/ q5 E% w6 w* G7 I5 n% q' t& X1 z! L9 ~1 ^+ l% F
1 W5 l, }- R# x' O1 c& k3 L8 n g建立目标规划的数学模型时,需要确定目标值、优先等级、权系数等,它都具有一 定的主观性和模糊性,可以用专家评定法给以量化。
' q7 c2 T# R# w4 B
9 n, b# X; d: ?* P, ~* s3 \3 求解目标规划的序贯式算法
, ?5 @! S, X5 c, J序贯式算法是求解目标规划的一种早期算法,其核心是根据优先级的先后次序, 将目标规划问题分解成一系列的单目标规划问题,然后再依次求解。 8 c' W% I. f: D& n6 `
8 g& H8 m1 Z3 @* f1 J![]()
0 @* w9 U5 Y4 H2 o8 h0 ^3 u
5 X" K2 k4 r y; X4 S ( G% ]7 C% @3 `+ t$ H8 Y
- d- y- }7 I, Y/ ^8 D
注 此时最优解的概念与线性规划最优解的概念已有所不同,但为方便起见,仍 称为最优解。 & F9 F) F& p5 k/ h3 P; o4 U! H, L( s
6 j; q* C5 ~" c( c# X( T例 3 某企业生产甲、乙两种产品,需要用到 A ,B ,C 三种设备,关于产品的赢利 与使用设备的工时及限制如下表所示。问该企业应如何安排生产,才能达到下列目标:
: p) x8 r! q$ J+ ]3 O2 j: Z' V6 e3 \/ |' H' v" Y2 g
![]()
( g6 n* N& k7 M4 m( C9 b" u( I. ?
(1)力求使利润指标不低于 1500 元;, r1 L1 j* U, H5 G
+ }7 y0 d/ b7 r G, \: B(2)考虑到市场需求,甲、乙两种产品的产量比应尽量保持 1:2;: G. ], z: a) c( d4 i! {. u
" q w5 |6 a7 j# }& F8 g9 A; C' Z
(3)设备 A为贵重设备,严格禁止超时使用;
6 k4 L* f A7 `8 o6 t8 t0 Z: k9 l1 P* J# t- w
(4)设备 C 可以适当加班,但要控制;设备B 既要求充分利用,又尽可能不加班。 在重要性上,设备B 是设备C 的 3 倍。
' L+ a* D. d* W( v. n9 J0 T3 A5 t7 j
6 D% |; e1 R+ W( _ v7 l建立相应的目标规划模型并求解。5 p' U( e6 D1 @$ ?' `- _* w
0 _& t1 l/ B) g% X1 L解 设备 A是刚性约束,其余是柔性约束。首先,最重要的指标是企业的利润, 因此,将它的优先级列为第一级;其次,甲、乙两种产品的产量保持 1:2 的比例,列为 第二级;再次,设备 B C, 的工作时间要有所控制,列为第三级。在第三级中,设备B 的 重要性是设备C 的三倍,因此,它们的权重不一样,设备B 前的系数是设备C 前系数 的 3 倍。由此得到相应的目标规划模型。 * [& Q; v) ]' p' f6 z
8 ]# K, |7 g: e# ^9 R& ^7 X3 v![]()
! e, k4 y$ Y0 \! I7 O. o
( g0 ~. M' p7 a3 r+ q序贯算法中每个单目标问题都是一个线性规划问题,可以使用 LINGO 软件进行求 解。 求第一级目标。LINGO 程序如下: / k' E5 o. x2 F: @7 R8 d0 d
8 f7 X% Y$ t5 J* J$ E# x3 K
model: ! B+ t/ X3 l4 [2 ]% H
sets:
3 w% b) K- G( ~+ |7 T! c/ cvariable/1..2/:x; ( \" X, K2 N. w; c$ j- M# z+ A
S_Con_Num/1..4/:g,dplus,dminus; 6 s2 l' o! F. v G! I
S_con(S_Con_Num,Variable):c;
/ G' U- F: K6 C7 Bendsets 1 t( v( ~' d! o" v4 W& @5 N! O
data:
# `7 ~ q/ L9 v% e' Z2 t7 _3 {& W+ xg=1500 0 16 15; , ~* m% ]( M9 C" |3 C
c=200 300 2 -1 4 0 0 5;
, A8 m3 s6 F( Y& V: nenddata
( |. D/ a. p) x4 q) Xmin=dminus(1); - l: j/ t* a: ?% Z, c$ p
2*x(1)+2*x(2)<12;
: K# L0 e. L" |& E( J7 F@for(S_Con_Num(i) sum(Variable(j):c(i,j)*x(j))+dminus(i)-dplus(i )=g(i)); 9 o. Y0 N6 W% E% V6 N3 p
end0 |2 L4 y. y6 d& t
4 n5 G8 L; X% b; L9 {: [) W* A求得 dminus(1)=0,即目标函数的最优值为 0,第一级偏差为 0。 求第二级目标,LINGO 程序如下: model: # {, [* F4 }4 S$ o* c$ h/ C
sets:
$ W! T: k4 b/ ]" ^7 X g* Gvariable/1..2/:x;
. T5 H% i7 @$ \4 AS_Con_Num/1..4/:g,dplus,dminus; - P" q+ X1 i7 K0 k; Z) b; x% t
S_con(S_Con_Num,Variable):c; + ~7 u2 h2 b7 _) ~* |4 ^1 R% s8 T
endsets
B( d' ?; q. f+ d% ddata:
4 w+ k5 N& O! k, ?" [/ T/ n- dg=1500 0 16 15; 2 h! J& A& ]. f( o) o& M
c=200 300 2 -1 4 0 0 5;
0 Y0 t% i8 h5 t" C2 Benddata 1 \- w9 Y, }7 V( P7 I
min=dplus(2)+dminus(2); !二级目标函数;
% {3 ~7 \3 X! I# q4 H+ B2*x(1)+2*x(2)<12;
9 ]5 r1 U- J2 O2 e3 [@for(S_Con_Num(i) sum(Variable(j):c(i,j)*x(j))+dminus(i)-dplus(i )=g(i));
8 w7 W4 R% T. \0 m7 X/ Ldminus(1)=0;!一级目标约束; ( ]0 \3 g) G% ~" y, }* c
@for(variable gin(x));
5 H% D D+ F' W) v; l* Iend O. h+ k2 R6 x0 F, X9 [ f) U
$ |9 N5 p7 z( L; M
求得目标函数的最优值为 0,即第二级的偏差仍为 0。 求第三级目标,LINGO 程序如下: 3 N$ \% Y4 M/ M1 g, w: |8 ]
/ }+ z2 [! J# v, L
model: ' S& D3 G' w$ N( |
sets:
* i9 ~0 @, @3 r' h: J8 | V' x, p! Kvariable/1..2/:x;
; v9 F( d5 v6 k+ r' t5 yS_Con_Num/1..4/:g,dplus,dminus;
0 w5 Y: l- g4 c" p8 m* MS_con(S_Con_Num,Variable):c; , J8 q- C c% u8 [
endsets 6 ^* a2 G k' c+ b
data: - [# _* N/ v4 K' ?3 c
g=1500 0 16 15; " }. a5 {$ p* ~
c=200 300 2 -1 4 0 0 5; ; r) X6 Y+ ~: Z# ` x4 t
enddata
! B+ d4 [! s# J; u0 t c" T$ dmin=3*dplus(3)+3*dminus(3)+dplus(4); !三级目标函数;
: `! w: E: Z" `( m* G2*x(1)+2*x(2)<12;
6 c, I2 F( l; q2 `) g @for(S_Con_Num(i) sum(Variable(j):c(i,j)*x(j))+dminus(i)-dplus(i )=g(i)); * h2 l4 i( h6 J& M, z% i
dminus(1)=0;!一级目标约束; + c% G; Y4 ]. [! |1 W
dplus(2)+dminus(2)=0;!二级目标约束;
9 l" i& r+ i3 O8 a$ j7 i4 ]% Q" E& Send5 @8 J7 P9 E, D+ a j8 [/ O
, K; I) K0 G$ R( l) {' s0 x
目标函数的最优值为29,即第三级偏差为29。
- L6 N# \; F- |' ]. A1 `+ k( {& E' }% U6 Y
分析计算结果, ,因此,目标规划的最优解为 , 最优利润为1600。
. U. E+ O' ~, F
6 n) g2 {" v4 h; L# B9 A上述过程虽然给出了目标规划问题的最优解,但需要连续编几个程序,这样在使 用时不方便,下面用 LINGO 软件,编写一个通用的程序,在程序中用到数据段未知数 据的编程方法。
1 N3 v% S/ I9 c! d$ e9 S$ p- N/ j1 c+ C
例 4(续例 3) 按照序贯式算法,编写求解例 3 的通用 LINGO 程序。7 q9 ], n1 g0 y! l1 Q* |6 q
) I( E; |! d' v S1 ]6 a; Umodel:
. W: Y6 s6 |& a: Esets:
$ a* u5 i! y7 x# d* K& vlevel/1..3/:p,z,goal; 2 {& U4 z" w( |
variable/1..2/:x;
7 ^3 a4 m1 K/ o: r( z. \h_con_num/1..1/:b; ) L( P( K! c9 X4 m
s_con_num/1..4/:g,dplus,dminus;
$ L" d- c# [ Q" D0 x' D4 yh_con(h_con_num,variable):a; ) v7 d% C; A* V% V5 v" L3 q
s_con(s_con_num,variable):c; 5 u$ a& @( _# O" g1 |0 X) q: d. k
obj(level,s_con_num)/1 1,2 2,3 3,3 4/:wplus,wminus; ! ?+ B# K+ G+ R: ?
endsets
3 ~+ v% ^3 R2 T$ _* p0 ?5 A2 W3 zdata: " W2 S+ g5 R0 {- O6 N9 s! F! ]9 }
ctr=?; m) S$ a P% u- I7 R. I+ L( f
goal=? ? 0; . W3 e: M5 L5 i' D
b=12; . k2 s3 o, I1 S! |
g=1500 0 16 15;
6 i p' F' n. X4 R& J7 Ba=2 2;
/ p) D0 I& k* S+ ?4 @8 y% a8 Vc=200 300 2 -1 4 0 0 5; 6 C7 D' b# P8 q4 q. K7 [
wplus=0 1 3 1;
+ ?2 [2 p: A4 e4 H# xwminus=1 1 3 0; % L+ }; M% E/ P
enddata . [8 N9 A) N( i# Z
min=@sum(level:p*z);
& [: B' ^3 t$ `, b7 P, Bp(ctr)=1; . P5 I/ a" \0 g/ b/ U. I% M
@for(level(i)|i#ne#ctr:p(i)=0); ) z+ {+ T$ r- b" ^1 \, e
@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)));
9 r+ Z' O' Y2 U0 G, N2 a; g7 B/ Dend & X/ G' y& s, B6 A
' s1 f: M# e( f# \6 B" b
7 L4 `! G) m0 @; n+ `9 D6 o1 T! |$ j
![]()
2 d' f+ t+ h9 h6 j+ K8 \" @/ _$ s% |: a7 _! S# c4 a6 ]: n/ p" g7 J& a
4 多标规划的 Matlab 解法 多目标规划可以归结为 ! ^ _+ s9 i, e- U. X4 o! ?' b
![]()
7 r( e/ M' J" ~* q5 b# q( s5 q$ B5 g7 V% P. e. g
[x,fval]= fgoalattain('fun',x0,goal,weight) ; c) ?, X; K9 j: y# C/ ^) l' Z
[x,fval]= fgoalattain('fun',x0,goal,weight,A,b) 6 o: h: \- X' s7 Z1 C
[x,fval]= fgoalattain('fun',x0,goal,weight,A,b,Aeq,beq) # Y) \6 s! z' e1 C
[x,fval]= fgoalattain('fun',x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon) ! x% C' S1 |2 Y9 P+ H7 A( q5 @
, y p( \# ]- [, `& b7 _1 N" P8 {5 v% k
要完整掌握其用法,请用 help fgoalattain 或 type fgoalattain 查询相关的帮助。
# W1 w8 @# H% s% w1 |& b: ?1 z 例 5 求解多目标线性规划问题
+ Z1 W! \: T2 J$ n$ t% _ B0 D* a" K) ^5 |% p2 O' ]$ U; s
![]()
; C1 \% G/ @( z' W; }. ~9 ~1 y! ?! }: u; J6 @
解 (i)编写 M 函数 Fun.m: 1 F/ z7 k- V# V& Q
! C& \+ P% \+ @2 Z# Afunction F=Fun(x);
- w _) R7 a( U5 V. _
! a3 I: k7 U. f/ L5 OF(1)=-100*x(1)-90*x(2)-80*x(2)-70*x(4);
2 H; j: L0 a) ~; F/ p5 Y7 |5 `% a6 M @" Q$ F+ O) B
F(2)=3*x(2)+2*x(4); 0 X. S! ^. y# n( m5 y H( ]
* X/ C- k, y( ~ Y }0 K/ t
(ii)编写 M 文件 7 q4 V7 t5 S1 D" j6 x* S
3 G) c5 b. @1 j+ L5 ^
a=[-1 -1 0 0 0 L) P" O4 v9 y2 p* E k! N5 a
0 0 -1 -1 $ ?6 q9 @+ a8 }3 D/ x6 t+ n
3 0 2 0 . e! T5 \( }" I$ G# c: V: R
0 3 0 2];
}5 t G; I' I- E; i2 B# }! Db=[-30 -30 120 48]'; # ?- `7 O: q9 Z' z# c
c1=[-100 -90 -80 -70];
! }( Z7 b4 z7 t) i; F6 Y/ xc2=[0 3 0 2];
" f6 L9 L5 [; i5 R2 a7 D' }[x1,g1]=linprog(c1,a,b,[],[],zeros(4,1)) %求第一个目标函数的目标值 + Y" s$ |1 ^! o
[x2,g2]=linprog(c2,a,b,[],[],zeros(4,1)) %求第二个目标函数的目标值 ' y2 M# o1 u" u0 C1 u) k
g3=[g1;g2] %目标goal的值 % }2 \: ~9 y5 R ?; C$ l
[x,fval]=fgoalattain('Fun',rand(4,1),g3,abs(g3),a,b,[],[],zeros(4 ,1))
; v& C2 ?3 E8 }%这里权重weight=目标goal的绝对值
( X5 p# i G; d \5 g
) v; T5 \/ q& g) \就可求得问题的解。 习题
8 u( W. N$ l/ U3 _5 p1 |9 \$ l 9 n- g. [! T5 q8 x
1 `; {/ S6 O- t* r1 a# W
————————————————& Z, N. ]) _5 A6 S" B
版权声明:本文为CSDN博主「wamg潇潇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
3 m" K: u8 i9 H/ _. f6 R7 X6 `原文链接:https://blog.csdn.net/qq_29831163/article/details/89488932$ a# o9 w; D ]7 b$ m) L
( V5 A5 v+ Q- e( T
q6 U+ W7 F, q
|
zan
|