- 在线时间
- 791 小时
- 最后登录
- 2022-11-28
- 注册时间
- 2017-6-12
- 听众数
- 15
- 收听数
- 0
- 能力
- 120 分
- 体力
- 36305 点
- 威望
- 11 点
- 阅读权限
- 255
- 积分
- 13852
- 相册
- 0
- 日志
- 0
- 记录
- 1
- 帖子
- 616
- 主题
- 542
- 精华
- 12
- 分享
- 0
- 好友
- 225
TA的每日心情 | 开心 2020-11-14 17:15 |
|---|
签到天数: 74 天 [LV.6]常住居民II
 群组: 2019美赛冲刺课程 群组: 站长地区赛培训 群组: 2019考研数学 桃子老师 群组: 2018教师培训(呼伦贝 群组: 2019考研数学 站长系列 |
1.线性规划的局限性
# x) ?6 h4 G& [只能解决一组线性约束条件下,某一目标只能是一个目标的最大或最小值的问题。0 _3 p [, H# L6 m9 r% P2 y5 Y- x
- ~% |6 N6 k0 i& X% o+ B" L* u 2.实际决策中,衡量方案优劣考虑多个目标* l5 ]; E0 ]7 G: `
这些目标中,有主要的,也有次要的;有最大值的,也有最小值的;有定量的, 也有定性的;有相互补充的,也有相互对立的,LP 则无能为力。- g; _. W) x' o- F7 o `8 X
( c2 N7 V6 j# T! T7 H' |! J3.目标规划(Goal Programming)
1 Q b/ b% b8 i美国经济学家查恩斯(A. Charnes)和库柏(W. W. Cooper)在 1961 年出版的《管理模型及线性规划的工业应用》一书中,首先提出的。, h/ u1 I* K" f- @/ i& g% g+ F
+ y2 z- c, \/ d2 s7 e \4.求解思路( g0 u8 ~9 m( \
(1)加权系数法" A3 o0 g7 z% M2 V' ?( q
为每一目标赋一个权系数,把多目标模型转化成单一目标的模型。但困难是要确 定合理的权系数,以反映不同目标之间的重要程度。
. h% a- C9 z$ |- h9 V. B1 F0 k/ n: d/ p: Y
(2)优先等级法
f* m5 j& R! Y将各目标按其重要程度不同的优先等级,转化为单目标模型。
W) ?9 o# s. B0 Q
( L P& ]$ f( E3 @/ v(3)有效解法
4 ^! |6 f/ l$ b" }寻求能够照顾到各个目标,并使决策者感到满意的解。由决策者来确定选取哪一个 解,即得到一个满意解。但有效解的数目太多而难以将其一一求出。
5 ]2 A4 A* ^+ u: `$ }( W0 B$ k+ T4 F) q# a0 h& g5 x; k
2 目标规划的数学模型
4 _6 c! ?( m2 q4 L6 V* n: ], R, D8 Z为了具体说明目标规划与线性规划在处理问题的方法上的区别,先通过例子来介绍 目标规划的有关概念及数学模型。
0 [# ^' |; L( N N
) f/ ?) ^" l& [- B" I' x0 @例1 某工厂生产 I,II 两种产品,已知有关数据见下表 ,试求获利最大的生产方案。. |( A. ~4 t# u
|6 U( H+ g7 o& |5 X% m* h
![]()
, u+ `1 x5 m2 Z; G( j& _0 i3 y/ J& [" E, ]' |
解 这是一个单目标的规划问题,用线性规划模型表述为: : u7 m( R* G' r6 d1 W# a
# b0 S3 U5 _, b. o2 n
![]()
' B6 Q2 V3 @; F5 ?. r! |. y& V7 b# V' S* W/ b# x/ m4 `4 v
但实际上工厂在作决策方案时,要考虑市场等一系列其它条件。如
- s' m% q; n3 q0 _* e) }3 A' R' q; [8 P* _; L5 v c7 J: g j
(i)根据市场信息,产品 I 的销售量有下降的趋势,故考虑产品 I 的产量不大于 产品 II。
$ ^5 R. r) L7 `8 s# K0 O) I Q- N: Y; K2 ~- m O
(ii)超过计划供应的原材料,需要高价采购,这就使成本增加。
. h1 z, J I) W& n& a
$ u! ]# i! v- [) ^+ g, W(iii)应尽可能充分利用设备,但不希望加班。
( f7 Z6 G& m+ m+ i- ]& J2 S
( L3 p" F9 O g8 h% N8 |(iv)应尽可能达到并超过计划利润指标 56 元。: S- w5 f2 v/ B) j
0 i1 \# F9 B U2 R; l这样在考虑产品决策时,便为多目标决策问题。目标规划方法是解决这类决策问题 的方法之一。下面引入与建立目标规划数学模型有关的概念。 ; g& S( ~& o7 L5 D/ n4 u
, v. L! R! {4 T. H9 s& p7 a& \) K' ^1. 正、负偏差变量
/ X) p0 E0 J. Y& ^1 F; H( E9 A( N, Z( h/ A
![]()
* |: ?8 B H" w7 q$ @) s# A& b) L9 n! j/ g# t4 S- e
2. 绝对(刚性)约束和目标约束 0 {7 [$ M& U2 j( V
2 L% z" {- R/ m9 F![]()
9 r- P; \* H/ m$ y& y) E, V h& V7 x* f v' }6 Z
3. 优先因子(优先等级)与权系数
, f! g5 a4 Y' o* w" u: p8 l. f; d/ Z& U7 h
/ n4 d, E- e& g% x7 ?5 L |4 C
, R8 t8 ]/ r0 U3 {
# }7 G/ ~. L% u L' E. h4. 目标规划的目标函数
% Z% P" s0 J3 I% g& z, N( L. u g: D( Y) {+ ~( c# b# C: _
![]()
/ C% A5 d0 I/ H4 `( e" K; \4 o2 H [+ B
( g& W- G# `. \9 v对每一个具体目标规划问题,可根据决策者的要求和赋于各目标的优先因子来构造目标 函数,以下用例子说明。 ' c7 i1 w+ r( ?, Z9 c7 g9 F
# S5 \! O5 W# A6 Z
例 2 : 例 1 的决策者在原材料供应受严格限制的基础上考虑:首先是产品 II 的产 量不低于产品 I 的产量;其次是充分利用设备有效台时,不加班;再次是利润额不小于 56 元。求决策方案。 解 按决策者所要求的,分别赋于这三个目标 优先因子。这问题的数学模型是
' A p ^( \6 A2 C8 z- N1 v
" m0 B5 _5 x% a6 \9 c5 ? * @" n9 _! u# X2 }8 j
' t6 I1 `, X9 v8 o% b# e
5.目标规划的一般数学模型
/ } ?- `; v) @! p2 O3 P- O- F8 y: d4 V$ ~9 X* o8 r! D$ ]4 m: G+ E
![]()
7 B0 b- e' V2 z/ P5 V2 F# @5 l! Z$ d; i0 B, J7 K1 K6 }" r1 Y
6 J% c/ h0 g6 Y$ q w7 w" s
建立目标规划的数学模型时,需要确定目标值、优先等级、权系数等,它都具有一 定的主观性和模糊性,可以用专家评定法给以量化。 8 W/ F$ l. q3 L- k$ a' y, _
5 r6 ~# S1 b( @9 }* ~; |
3 求解目标规划的序贯式算法( X( \- x& R! c# e. V
序贯式算法是求解目标规划的一种早期算法,其核心是根据优先级的先后次序, 将目标规划问题分解成一系列的单目标规划问题,然后再依次求解。 6 n% R" T7 |; d9 b
: k7 @9 C2 Z4 Z+ o2 N$ ]! e# [![]()
' I5 G/ O/ i1 E4 \: c* S/ S: O( w4 {0 o* n! \* w5 ?
![]()
) g. O+ H7 k* A2 M
7 ]6 f7 Q$ B' ]* |注 此时最优解的概念与线性规划最优解的概念已有所不同,但为方便起见,仍 称为最优解。 ) Z9 D2 s! `* i+ s3 ^
9 Q0 O5 N$ f- t( |
例 3 某企业生产甲、乙两种产品,需要用到 A ,B ,C 三种设备,关于产品的赢利 与使用设备的工时及限制如下表所示。问该企业应如何安排生产,才能达到下列目标:
) S! a) d% o. b2 j
: u, h# E6 Y9 ^0 U1 U 6 x& c6 ^4 {- ^& `" m* U* P6 W
6 x" y5 ~7 t" w2 x. J& }* ](1)力求使利润指标不低于 1500 元;
1 k, n5 Y9 a4 H
0 K' H$ q4 g2 S# @6 B: u(2)考虑到市场需求,甲、乙两种产品的产量比应尽量保持 1:2;
) `" C' F1 g' [& [! J
' s4 j3 J$ Z; {4 o# L# B(3)设备 A为贵重设备,严格禁止超时使用;# F; ~. P" L$ q9 j- z
- |6 X- ~8 t. {+ y
(4)设备 C 可以适当加班,但要控制;设备B 既要求充分利用,又尽可能不加班。 在重要性上,设备B 是设备C 的 3 倍。# ?; l5 q/ ]) W2 c9 i* M
" i% ?& E2 J+ D2 e& h
建立相应的目标规划模型并求解。( N3 |( K5 l- l% ?1 i! A* p
) M- G9 O% P" C
解 设备 A是刚性约束,其余是柔性约束。首先,最重要的指标是企业的利润, 因此,将它的优先级列为第一级;其次,甲、乙两种产品的产量保持 1:2 的比例,列为 第二级;再次,设备 B C, 的工作时间要有所控制,列为第三级。在第三级中,设备B 的 重要性是设备C 的三倍,因此,它们的权重不一样,设备B 前的系数是设备C 前系数 的 3 倍。由此得到相应的目标规划模型。 4 ~2 R! N, z2 y" ^! }/ F& x# C
W x3 a" w+ X; {; j; s& G' q4 F% k; v![]()
" a9 p" F' M; M7 ^. P% P) C |
& i# m/ l; L2 [$ v* R T( W/ }3 b序贯算法中每个单目标问题都是一个线性规划问题,可以使用 LINGO 软件进行求 解。 求第一级目标。LINGO 程序如下:
0 w' d! U+ O6 x# \4 I/ H% i4 y* |: w
model: , [, P, [( |- Z$ \8 Z' h' B
sets:
( S H& V( J% J" o+ n! Ovariable/1..2/:x;
+ |2 P7 a6 c( [& ^9 x+ E1 wS_Con_Num/1..4/:g,dplus,dminus;
. t9 J% L: D8 J8 h6 w: RS_con(S_Con_Num,Variable):c; 7 U4 K( I7 o- ^% j6 d* t- M
endsets 2 V N* c+ q7 o3 }7 L% E
data: " K4 l& g) B/ V7 ?4 n3 r0 @: l
g=1500 0 16 15;
; X/ X% N; m" W gc=200 300 2 -1 4 0 0 5;
9 g% F# U# a( @. z; d5 Z2 ~enddata 0 P; q# M1 c: f8 ?
min=dminus(1); ; Y7 q6 ^4 ?. @2 B! v
2*x(1)+2*x(2)<12;
: Y2 q8 F' I- k& P- S. ]@for(S_Con_Num(i) sum(Variable(j):c(i,j)*x(j))+dminus(i)-dplus(i )=g(i)); 2 P/ I; k" ]6 l
end* k+ n, n% a- F2 `& ]
" p& T) f4 E0 X
求得 dminus(1)=0,即目标函数的最优值为 0,第一级偏差为 0。 求第二级目标,LINGO 程序如下: model:
8 D$ G) J! z/ _' _sets:
3 B, y, ?0 ?) e2 P8 R' x+ D& o+ b) cvariable/1..2/:x;
0 u$ W9 V6 c1 m7 ]3 O5 ? _S_Con_Num/1..4/:g,dplus,dminus;
- x: m/ @) W" TS_con(S_Con_Num,Variable):c; 9 w0 O. ?* F1 b/ s
endsets ; M' U) [1 K8 o- d' O `3 |4 n; i
data: / S6 z5 O. [& X* Z" _/ s
g=1500 0 16 15;
) b5 Y: w$ Z* f# pc=200 300 2 -1 4 0 0 5;
- }( r' H- n4 G7 o% ~enddata
5 X, |- F* [8 P; [min=dplus(2)+dminus(2); !二级目标函数;
( ]) V% l( C7 I2 }& j& _2*x(1)+2*x(2)<12; . S9 P2 i% \9 k, f( a6 o, ?( q
@for(S_Con_Num(i) sum(Variable(j):c(i,j)*x(j))+dminus(i)-dplus(i )=g(i)); ( b" g+ e: q# O. V9 f E
dminus(1)=0;!一级目标约束;
& R2 O1 ?2 n8 u6 ?0 Y! T@for(variable gin(x));
+ B! T: G* s, d8 Zend 4 R4 U0 _; G' D4 M. v% V
! ^$ @3 E6 m/ N( r) {* _! f求得目标函数的最优值为 0,即第二级的偏差仍为 0。 求第三级目标,LINGO 程序如下: " n8 J1 L' B/ l' I
+ k J. _; p; S6 f7 ~- w) n$ Fmodel: % J: [& B; i- z* g7 J; y
sets:
) x' f0 o: x z1 p" mvariable/1..2/:x; ( L$ \" }6 C8 A8 j2 k' x' Y- e8 H
S_Con_Num/1..4/:g,dplus,dminus; 4 j" d2 a# f4 `% _+ U1 o8 i
S_con(S_Con_Num,Variable):c;
5 G5 T% V' a5 P% n3 F. m+ Uendsets
7 t9 P1 R7 r7 D" _4 J5 ]; i, Ydata:
+ J% f4 T! b% {& qg=1500 0 16 15; 6 E$ A5 h4 o( Z& c4 x$ d7 X
c=200 300 2 -1 4 0 0 5;
" y8 V1 w$ V4 M' S& ]* Ienddata
6 _# v- h: T/ ?* I5 e$ Ymin=3*dplus(3)+3*dminus(3)+dplus(4); !三级目标函数;
3 b0 u; g+ Q7 k1 P8 H* {2*x(1)+2*x(2)<12;7 G( t* K5 Q9 u N9 a' h
@for(S_Con_Num(i) sum(Variable(j):c(i,j)*x(j))+dminus(i)-dplus(i )=g(i));
# h- N3 d, j' Y, {( d7 U5 r3 l+ u' @dminus(1)=0;!一级目标约束; 8 W( h6 }' U: P' z
dplus(2)+dminus(2)=0;!二级目标约束;
a" ?& y) m; y' g! s9 [end9 L' d7 x3 [# K! c2 E
/ l8 K' L* u5 \0 b9 a# X. [( E
目标函数的最优值为29,即第三级偏差为29。 / D. P M- v$ O9 c5 _8 {# a
/ o) q. C2 j3 [ W
分析计算结果, ,因此,目标规划的最优解为 , 最优利润为1600。
9 x+ J. o3 g1 H) V0 J$ W( u
) g# Q6 w5 R/ K- D5 ~$ W6 w; _上述过程虽然给出了目标规划问题的最优解,但需要连续编几个程序,这样在使 用时不方便,下面用 LINGO 软件,编写一个通用的程序,在程序中用到数据段未知数 据的编程方法。
' x5 v4 t, N) k, M5 i: g* _# p
0 @" V6 G: R2 I例 4(续例 3) 按照序贯式算法,编写求解例 3 的通用 LINGO 程序。
/ N( D* E( b2 F# B2 C3 w
3 P8 j* u! k# f5 O2 R s* J! b$ lmodel: & w5 c1 w+ b3 D: o+ m$ U
sets: ! U% e5 V- l+ O; ]/ D
level/1..3/:p,z,goal; : w, }1 B) l5 n" ^) _
variable/1..2/:x;
# L4 x) T/ @* H4 [6 s- Rh_con_num/1..1/:b;
T* V9 Y; _2 G9 D& N0 O8 }; y" hs_con_num/1..4/:g,dplus,dminus; $ v0 x5 U. n. J- r1 _
h_con(h_con_num,variable):a; 7 E$ m' Y* M# x" b b
s_con(s_con_num,variable):c; $ n, E7 h+ Y) o
obj(level,s_con_num)/1 1,2 2,3 3,3 4/:wplus,wminus;
: q) J# u. Z" B, _- R0 }endsets - W5 U: B! V. @5 Z" {5 U; R' l
data: $ b# [' W5 j( E2 m/ a( J
ctr=?;
8 o+ H/ [/ j8 F! t. @2 t* Dgoal=? ? 0;
1 A7 I7 {# y3 G( g% Hb=12; " W" T+ |5 o9 [4 |0 _/ G
g=1500 0 16 15;
* W, F* I* |5 v/ p' Y9 Oa=2 2; . U- |/ h8 y; F3 z
c=200 300 2 -1 4 0 0 5;
5 F3 h/ M7 L. K1 Q& ]wplus=0 1 3 1; # u+ M" N1 Z- S3 _2 U0 I
wminus=1 1 3 0; 7 P1 z9 d4 @: k. A* n
enddata 9 K, g" r7 b( r( N5 y' r
min=@sum(level:p*z); # B3 `/ z: g- b' y* T0 t
p(ctr)=1;
# u( ^- Z8 w }8 g5 v$ O G@for(level(i)|i#ne#ctr:p(i)=0);
2 J1 G+ ^( V+ L; T@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)));
; X- r* W! H/ l+ L0 ~end $ G' s6 S) N( z/ b8 _% z" I! b
$ L$ d/ v, _ M! G7 E3 K# F, T8 h& P) \6 b
- w& z7 J) q8 I. ?8 o" K6 V9 E
![]()
/ M1 n# C9 ~- q% A0 q5 I2 X+ N4 ?: ^7 M( s; W
4 多标规划的 Matlab 解法 多目标规划可以归结为 - O7 c' H* h6 ~
& o5 l3 t* z9 w/ g% P
' C" j8 ]% C5 X1 ?, V d4 B; |[x,fval]= fgoalattain('fun',x0,goal,weight)
) {: z$ _" x* G7 |; L[x,fval]= fgoalattain('fun',x0,goal,weight,A,b) & {! M1 Q7 g, v. M3 Y' o
[x,fval]= fgoalattain('fun',x0,goal,weight,A,b,Aeq,beq)
, j5 Y1 M2 C& O5 O[x,fval]= fgoalattain('fun',x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon)
6 c# R% \& Q7 \5 S8 M/ Q- O9 z+ V }. w. h" [3 S A! j
$ g7 u* J& p- V/ i& Z* S) y要完整掌握其用法,请用 help fgoalattain 或 type fgoalattain 查询相关的帮助。& D2 d- Z; r1 }% B. e
例 5 求解多目标线性规划问题
8 t" W9 j/ o6 @1 N
1 R0 z/ \7 C: L- m/ y4 y" \$ S![]()
" M: h! o; A4 {. V( e# l
1 }+ }, P, O4 [- ]解 (i)编写 M 函数 Fun.m:
. j6 F% I/ u( ~2 n, u0 h/ j, U7 o& K: ^- {: _/ i' {2 e; A; N
function F=Fun(x);
: b5 }( q/ @& l' j/ T; {( |* @$ M8 v, Z3 y- t" D4 m
F(1)=-100*x(1)-90*x(2)-80*x(2)-70*x(4); ( t# `- p6 Z0 \" t8 w, W9 d H
3 w# [- U. v% _+ x, h8 h* H/ U
F(2)=3*x(2)+2*x(4);
! r5 {( a9 G7 L* c0 b7 s. [( e* A/ A7 L1 N/ N! ^% s( [
(ii)编写 M 文件
7 n' F# P" a4 {, h* v2 w( A; X+ P7 P
a=[-1 -1 0 0
! \* m) w. ?; \5 u: J- ^ 0 0 -1 -1 : \( J5 |# L% j. ]( T
3 0 2 0 7 q/ f0 M0 U! L
0 3 0 2]; , s' u( H) b* ~ _/ |4 X
b=[-30 -30 120 48]';
& C5 ]. f! a7 [5 b! G% i. u: _1 M/ U1 b8 Ec1=[-100 -90 -80 -70]; 0 l8 P t# ]- L. Q4 z0 o" n
c2=[0 3 0 2]; ' @, i0 a3 J0 Z
[x1,g1]=linprog(c1,a,b,[],[],zeros(4,1)) %求第一个目标函数的目标值 3 d$ {8 A* N" R" Q" _
[x2,g2]=linprog(c2,a,b,[],[],zeros(4,1)) %求第二个目标函数的目标值 , ? @; k+ L }' Y, j4 B; A: _
g3=[g1;g2] %目标goal的值
* o$ k2 B7 `+ }1 L[x,fval]=fgoalattain('Fun',rand(4,1),g3,abs(g3),a,b,[],[],zeros(4 ,1)) 7 N4 T( b! h' j( Y
%这里权重weight=目标goal的绝对值
( X* K! u4 n$ c
* F) Y! B9 M( N( }就可求得问题的解。 习题
/ X$ c0 i# f" ^- i , z/ i4 m, Y: n5 G; C! \
3 q5 r( ~6 F8 y+ U
————————————————
" i0 P) P+ \8 [7 q' w版权声明:本文为CSDN博主「wamg潇潇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。$ o3 Y3 k3 D+ s. }$ z
原文链接:https://blog.csdn.net/qq_29831163/article/details/89488932
! d. |: ]' r7 v7 X9 o
! L8 W% {$ @5 [, ~, _
# t* T/ _9 A3 V, ?$ ~$ a. \ |
zan
|