在线时间 791 小时 最后登录 2022-11-28 注册时间 2017-6-12 听众数 15 收听数 0 能力 120 分 体力 36309 点 威望 11 点 阅读权限 255 积分 13853 相册 0 日志 0 记录 1 帖子 616 主题 542 精华 12 分享 0 好友 225
TA的每日心情 开心 2020-11-14 17:15
签到天数: 74 天
[LV.6]常住居民II
群组 : 2019美赛冲刺课程
群组 : 站长地区赛培训
群组 : 2019考研数学 桃子老师
群组 : 2018教师培训(呼伦贝
群组 : 2019考研数学 站长系列
1.线性规划的局限性+ j8 s: {8 T( s) z4 ?
只能解决一组线性约束条件下,某一目标只能是一个目标的最大或最小值的问题。
8 \2 Z1 U1 T$ y8 H 4 T# U. \6 E$ \$ ^! d6 u) V1 `
2.实际决策中,衡量方案优劣考虑多个目标
) l3 d6 C7 r3 v }5 \- N# J+ B 这些目标中,有主要的,也有次要的;有最大值的,也有最小值的;有定量的, 也有定性的;有相互补充的,也有相互对立的,LP 则无能为力。4 a. s2 q$ e: i- m. L5 B
7 H" O' G1 Z; T y 3.目标规划(Goal Programming)
+ W5 X( x' Z: g! T6 ~ 美国经济学家查恩斯(A. Charnes)和库柏(W. W. Cooper)在 1961 年出版的《管理模型及线性规划的工业应用》一书中,首先提出的。* K7 K w. \ T+ @
" l4 D) s+ y; ]+ }
4.求解思路
+ s2 P @) R' J1 |, n: P1 |9 H (1)加权系数法
" t/ v7 `. F1 w$ T 为每一目标赋一个权系数,把多目标模型转化成单一目标的模型。但困难是要确 定合理的权系数,以反映不同目标之间的重要程度。2 X U! c' v t+ w9 k0 Y
& I& S, I) I: l6 b
(2)优先等级法
0 Y( H7 q' M2 I) a2 I 将各目标按其重要程度不同的优先等级,转化为单目标模型。
9 J) I% k. G" ~; r ( O5 c) j0 v' S- K9 ^% V, O
(3)有效解法. X8 _! Y1 V8 j3 j. X2 V5 @
寻求能够照顾到各个目标,并使决策者感到满意的解。由决策者来确定选取哪一个 解,即得到一个满意解。但有效解的数目太多而难以将其一一求出。
6 m5 I/ g F) V, Q/ k/ p1 K" U; Z# V9 ^ & t( i% @7 z, x; k) z4 e
2 目标规划的数学模型, X/ i# [% Y3 d! ~/ L) t, p1 W
为了具体说明目标规划与线性规划在处理问题的方法上的区别,先通过例子来介绍 目标规划的有关概念及数学模型。
& A2 K. m0 z, E
; }* Z* r: u Z/ S) e# d2 w. g 例1 某工厂生产 I,II 两种产品,已知有关数据见下表 ,试求获利最大的生产方案。
9 d- ]* }$ F) A 8 p% o4 s8 h6 q9 ~6 W8 [! U1 m* s$ @( s
0 I, ^9 y& j+ _. E g0 w% W
7 F+ {2 j; T( {6 b6 } 解 这是一个单目标的规划问题,用线性规划模型表述为:
2 b; [+ U" K( D3 z+ G1 ^ O& Z$ P) B* K8 t# \ y8 _
7 b; y/ h1 p p3 R/ I }8 r8 ?' R" Z, {/ |
但实际上工厂在作决策方案时,要考虑市场等一系列其它条件。如$ L; G# F3 \2 n7 c- b& s
0 l! B' P: u$ `- w- p (i)根据市场信息,产品 I 的销售量有下降的趋势,故考虑产品 I 的产量不大于 产品 II。4 d0 I! a* G, z4 p$ D! n% }4 b$ {
! C# R. ^4 [; A- ]$ p
(ii)超过计划供应的原材料,需要高价采购,这就使成本增加。
4 a, u: j9 i6 m1 W . s$ l7 {* k! a( X0 f' Z
(iii)应尽可能充分利用设备,但不希望加班。
- O: e: Q6 |" G$ ^7 r! i1 L. @; Z7 ` 0 @( l; a& F: z7 _( D
(iv)应尽可能达到并超过计划利润指标 56 元。
5 H0 p0 `1 Z6 n% I
7 \! ^+ T) P. S& u- c- b 这样在考虑产品决策时,便为多目标决策问题。目标规划方法是解决这类决策问题 的方法之一。下面引入与建立目标规划数学模型有关的概念。
5 ?' o$ g Z: K9 U) [1 f% F2 v7 j! C & a. y$ o. n3 ^0 I: V" }
1. 正、负偏差变量
, f# g) |% V4 e# {9 n $ F+ w t3 R2 {) x% j9 B; e
( H) ]+ j3 I, G
) R- F( t5 N" p2 n 2. 绝对(刚性)约束和目标约束
2 o) u0 H3 u+ O# }5 G/ e' ?7 `
5 s! S9 v }* d0 {/ U9 T0 s$ J 9 x, o7 v$ @) j( C9 ]# q
4 ^" p/ k* _' { W w. t+ I 3. 优先因子(优先等级)与权系数
0 {+ Q* Q' p6 Y# X
. Z {8 h1 S8 p% Z ) v+ f5 B6 x: p2 ? b
0 F$ ^3 }+ H; ? U2 o3 U; B# Z9 `
1 p/ j+ d A% n" V8 m
4. 目标规划的目标函数
+ W" Z4 a1 X) e2 J. b
# V+ ?- D: U5 I: y n1 X& t- o
, C+ v, H) O1 w; \- Y4 k ; n4 u( N2 z7 r, q* r- N6 N1 O; R
对每一个具体目标规划问题,可根据决策者的要求和赋于各目标的优先因子来构造目标 函数,以下用例子说明。
1 |4 n( `% u$ E) {0 | ^0 j# i8 C, m1 Q- \. F: t/ k
例 2 : 例 1 的决策者在原材料供应受严格限制的基础上考虑:首先是产品 II 的产 量不低于产品 I 的产量;其次是充分利用设备有效台时,不加班;再次是利润额不小于 56 元。求决策方案。 解 按决策者所要求的,分别赋于这三个目标 优先因子。这问题的数学模型是 * ` S# A) o! M# B; y- W# U) t5 p
" d o4 f" t; o8 ]5 |( f) g6 w ( I0 i9 Y( C6 }
4 S7 D+ p9 ]) f j2 K
5.目标规划的一般数学模型 p; t1 p) z: ?- g$ n
3 _% O4 L+ k' n9 J 8 c C7 d: K$ u. w2 P, `7 t
' Y" C& U: w7 U' s) d
6 w& r& X. {& d8 Y5 S 建立目标规划的数学模型时,需要确定目标值、优先等级、权系数等,它都具有一 定的主观性和模糊性,可以用专家评定法给以量化。
/ ]6 P. \/ V e; K' J' A( E. w: x % I, v. p0 N( U2 \- m
3 求解目标规划的序贯式算法) Z, j2 y" ] [; s& }1 `
序贯式算法是求解目标规划的一种早期算法,其核心是根据优先级的先后次序, 将目标规划问题分解成一系列的单目标规划问题,然后再依次求解。
4 C% e; i$ \ w4 C . T" L6 U; v/ m6 ?
[ C7 h. V8 v0 C
' t( ?5 X4 o7 \$ Y 9 f( k4 D4 v4 W- K1 Q
! y( a! B- `2 C) C9 u8 v! U 注 此时最优解的概念与线性规划最优解的概念已有所不同,但为方便起见,仍 称为最优解。
4 e! M) G. z o1 v6 q
) e6 J9 m( l% D, X4 J. d& _2 z 例 3 某企业生产甲、乙两种产品,需要用到 A ,B ,C 三种设备,关于产品的赢利 与使用设备的工时及限制如下表所示。问该企业应如何安排生产,才能达到下列目标:
4 Z M1 S: r+ t! q1 F0 e; e" t
0 G% o H8 q+ e" |
1 v! I) P; h( f. a2 t
& p: L" M8 B% L e (1)力求使利润指标不低于 1500 元;) m3 \8 a4 S7 V
& j |$ _2 h2 y, d9 U9 y (2)考虑到市场需求,甲、乙两种产品的产量比应尽量保持 1:2; x, c+ T; X* Y6 P: ]( G
$ q$ D& b% s9 t8 K (3)设备 A为贵重设备,严格禁止超时使用;
5 Q0 _ q4 W3 R0 q5 S
0 n0 h" [* p# }: B. T- x (4)设备 C 可以适当加班,但要控制;设备B 既要求充分利用,又尽可能不加班。 在重要性上,设备B 是设备C 的 3 倍。
, z+ f& E) b( }& g
' m' M0 N8 e' z. Q K9 y8 D 建立相应的目标规划模型并求解。6 @8 K/ v, D- E8 D+ ^
/ F* U8 N% Q, d3 ? 解 设备 A是刚性约束,其余是柔性约束。首先,最重要的指标是企业的利润, 因此,将它的优先级列为第一级;其次,甲、乙两种产品的产量保持 1:2 的比例,列为 第二级;再次,设备 B C, 的工作时间要有所控制,列为第三级。在第三级中,设备B 的 重要性是设备C 的三倍,因此,它们的权重不一样,设备B 前的系数是设备C 前系数 的 3 倍。由此得到相应的目标规划模型。
1 i# f0 c! E* T+ N2 u * J+ A" @+ b9 V( ^* I U9 Q
7 `' S' F8 e5 p' ^; E/ C9 S6 J# K
8 W; i" n% w1 F' a9 {0 L
序贯算法中每个单目标问题都是一个线性规划问题,可以使用 LINGO 软件进行求 解。 求第一级目标。LINGO 程序如下: * i$ k1 a9 f3 n }5 C
' r# r L2 ~; | [
model: 4 q: T$ F$ w" l4 J1 P1 V0 W- C
sets:
}4 i6 h& L+ I5 I9 v variable/1..2/:x;
/ X/ f5 g1 I, W+ M; ]1 j7 ^ S_Con_Num/1..4/:g,dplus,dminus; : X& I% `: E; ], b2 F# w
S_con(S_Con_Num,Variable):c;
' }" @6 c: S! A/ B9 C endsets - W+ m. t- H( n1 u: h- M
data: # f. Q- m/ @5 P% f
g=1500 0 16 15; + s' r# b$ @4 e7 P- `% Z
c=200 300 2 -1 4 0 0 5; " o8 S1 ~. ]% G- ~, [+ f
enddata
0 s+ a3 X q3 n min=dminus(1);
$ d$ q3 P8 v" b0 G4 D& u3 B/ D 2*x(1)+2*x(2)<12; & m5 w* U1 Z; U8 V I1 l
@for(S_Con_Num(i) sum(Variable(j):c(i,j)*x(j))+dminus(i)-dplus(i )=g(i)); & E; R, V: [ d# ]0 m
end
4 L- c1 A# S1 i
% `* C9 Q0 z' R* p9 K 求得 dminus(1)=0,即目标函数的最优值为 0,第一级偏差为 0。
求第二级目标,LINGO 程序如下:
model:
; b0 s$ n5 A ^ sets: * h- v7 I% j1 }( ?2 P3 ]( \- d
variable/1..2/:x; / |, Z6 p% R- v0 R0 q0 M
S_Con_Num/1..4/:g,dplus,dminus; 4 Y0 x# y3 _2 g( F( J7 C! }8 ?
S_con(S_Con_Num,Variable):c;
6 q' \8 [7 V8 m3 G endsets 4 N: Q+ j! i& I) {
data:
. t! M2 ~) [. ? g=1500 0 16 15; + z; {* f A- m0 k9 j
c=200 300 2 -1 4 0 0 5;
7 J3 q+ R/ o5 {! K( N8 x enddata / B# i- O- v2 A; E
min=dplus(2)+dminus(2); !二级目标函数;
# k' S9 |. K* n& x- i6 Q1 F 2*x(1)+2*x(2)<12;
3 G4 s7 G- Y' ]1 A" x' T' [, b @for(S_Con_Num(i) sum(Variable(j):c(i,j)*x(j))+dminus(i)-dplus(i )=g(i));
! ^0 K" {" ?/ \. w dminus(1)=0;!一级目标约束; + B* v: _" }$ w3 Y) |
@for(variable gin(x)); ! a* ?0 ^- \1 K9 ] A
end 5 _/ h( b! k' J" O4 `* k
0 j' l2 v# [% y
求得目标函数的最优值为 0,即第二级的偏差仍为 0。 求第三级目标,LINGO 程序如下: ; g7 D2 M1 E2 b
7 V! H# X4 u f) M. l- r. K$ ]& v model: , u5 e8 E, @+ t: a- o' F
sets:
! I( ?5 O! z- y2 F3 r variable/1..2/:x;
7 k1 G! Y2 `' u$ D& {7 k; \3 A; M S_Con_Num/1..4/:g,dplus,dminus;
" n3 c3 b, n! i) R% f: o S_con(S_Con_Num,Variable):c; 8 L7 N- L3 C1 d# {
endsets
# E0 s- C' q* J3 Z data:
- x$ U @/ n) f g=1500 0 16 15; 1 O. R" y" ~ J, G' m' A1 y' [
c=200 300 2 -1 4 0 0 5; 2 |' o6 l- L9 ]" J5 l
enddata
$ W% J3 U5 _: j0 z min=3*dplus(3)+3*dminus(3)+dplus(4); !三级目标函数;
. y& j$ J- q, ]! v" S% l: o 2*x(1)+2*x(2)<12;( r4 _! P+ w$ i
@for(S_Con_Num(i) sum(Variable(j):c(i,j)*x(j))+dminus(i)-dplus(i )=g(i)); 6 ^+ F. Q) E ]+ ?5 x) W8 r
dminus(1)=0;!一级目标约束; ; b( O$ I$ A8 j
dplus(2)+dminus(2)=0;!二级目标约束; / n3 I* _ \3 T5 [
end# r, I$ X- i3 C- C- e) F
% r0 M7 ~, r! }" o# G" z3 \* m" t
目标函数的最优值为29,即第三级偏差为29。
; P" e `& a2 c+ Q" F$ M& b + y# N2 Y6 u& f$ _
分析计算结果, ,因此,目标规划的最优解为 , 最优利润为1600。% m, ?2 n' z8 F% _2 N( k1 `
3 \1 f. i9 }4 S9 t, \( g7 Y9 ~ 上述过程虽然给出了目标规划问题的最优解,但需要连续编几个程序,这样在使 用时不方便,下面用 LINGO 软件,编写一个通用的程序,在程序中用到数据段未知数 据的编程方法。
1 m" N6 w( X) C# j
7 f$ V7 U2 q9 ^ 例 4(续例 3) 按照序贯式算法,编写求解例 3 的通用 LINGO 程序。! d7 l& L+ Y- u3 j% Q h7 R
+ n# x. U+ X: D5 y8 j9 o+ H model: - E4 M! W9 T' K6 Y
sets:
A0 _! ^+ [. y& f" x7 U; J level/1..3/:p,z,goal; # E+ }8 Y7 b6 a* W+ Y$ R
variable/1..2/:x;
1 X0 N$ e( R- }$ }6 j I. o h_con_num/1..1/:b;
9 O3 f! x! @: N1 D8 k s_con_num/1..4/:g,dplus,dminus;
7 Y3 D% L) b+ s U& L+ f$ Y h_con(h_con_num,variable):a;
3 R: x# k- W, D9 t" E. y% j s_con(s_con_num,variable):c; 9 j8 C. N- b0 h6 \9 K
obj(level,s_con_num)/1 1,2 2,3 3,3 4/:wplus,wminus; / x/ d3 k I0 j0 H" Z( j
endsets , C4 N; K; x7 g( U2 a+ T
data:
$ R) t0 \& X) J" }& ]3 q ctr=?;
/ R: r1 c( l" q; ]1 V goal=? ? 0;
, z5 N9 J+ ^! N1 c b=12; . x5 s1 h4 d) {- r
g=1500 0 16 15;
5 ], W7 ]1 w- \( {5 a a=2 2; 7 ^1 D* u3 ]3 ~9 D" v
c=200 300 2 -1 4 0 0 5;
# S" C# i1 n8 F/ O) g wplus=0 1 3 1; 0 q, e5 c4 }! L/ J
wminus=1 1 3 0;
( t2 N+ ?* K' P1 l enddata
5 g( U; t, B' n! N min=@sum(level:p*z); : T0 ?; k6 L- U; w% E
p(ctr)=1; ! s, p3 w2 h$ U9 R `4 {
@for(level(i)|i#ne#ctr:p(i)=0); ( \8 I9 R. N3 _/ l- U; i+ A
@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))); % S# ^2 d J7 M+ Z* _* D
end * V+ _ u( o/ U$ v# S" w
) N8 ?+ O2 v3 l7 ~
! D7 y% ]( y. o' m9 Y
7 |; O; H% e* r% I: w
: Z6 H+ Q% V: Q0 Z * Z+ o* Z- h% |- @* T6 m
4 多标规划的 Matlab 解法 多目标规划可以归结为
; p4 ]3 O: F8 v- v2 ]7 Z4 H
9 Q5 n& K' G+ ~8 H* S8 s" t3 }. {7 y! Q
/ T1 J+ }. \9 J( d/ N; p0 m( o9 Z C [x,fval]= fgoalattain('fun',x0,goal,weight)
. Z4 o8 f+ [' b* y2 ] [x,fval]= fgoalattain('fun',x0,goal,weight,A,b)
& ]; y1 B: `2 Z1 `/ B [x,fval]= fgoalattain('fun',x0,goal,weight,A,b,Aeq,beq)
: r$ Y& w' `( n( ?& B3 R [x,fval]= fgoalattain('fun',x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon)
" l! O- b6 {' K3 W4 {* ^* [
3 h: `: Q' y% w% E , a! `; z& ?1 j: W3 m( p
要完整掌握其用法,请用 help fgoalattain 或 type fgoalattain 查询相关的帮助。
. ^/ L* m# b5 @# }( v1 D! i$ { 例 5 求解多目标线性规划问题
/ {5 \+ G5 W* T) w n5 H
7 J8 u, C7 U4 B
. P t0 i2 O3 B+ l* x- S
+ l% p" l x/ ^; s3 T 解 (i)编写 M 函数 Fun.m:
$ Y' y* O+ ^, C$ x/ q 5 k; L% X" i- Z* @6 C8 F
function F=Fun(x); + y6 z5 ?+ F! {& [" r& k
# [+ h0 a$ ^" e, Y$ j& P F(1)=-100*x(1)-90*x(2)-80*x(2)-70*x(4);
* f/ r5 N( k" y
+ ]5 e- z6 J. F2 b, r z F(2)=3*x(2)+2*x(4); ; H' E* M2 C' |1 n s
6 P' | S3 d6 X0 `- M
(ii)编写 M 文件 : [$ {( s3 U1 C9 p# E! t
) u* p3 |. l: x8 e# p, Z4 {; w a=[-1 -1 0 0
+ D3 d+ X2 d5 B, }( g1 S7 C9 | 0 0 -1 -1 7 S# {" `$ u. u
3 0 2 0 ) i# A1 }5 j7 ~1 M. |2 e
0 3 0 2];
1 Q& ~; q5 {+ k b=[-30 -30 120 48]'; / p/ [% a" {+ Q: R" q0 M
c1=[-100 -90 -80 -70];
6 ^( y% ]# t" R7 r c2=[0 3 0 2];
# f$ Z2 L. k+ P- S2 P2 P! r [x1,g1]=linprog(c1,a,b,[],[],zeros(4,1)) %求第一个目标函数的目标值
+ d% k3 _6 C% e) r3 B; I% P0 q4 c [x2,g2]=linprog(c2,a,b,[],[],zeros(4,1)) %求第二个目标函数的目标值
( c- {# d, `3 `; [2 N g3=[g1;g2] %目标goal的值
6 Y9 U! C+ y: K( G5 K" F- `% U+ F [x,fval]=fgoalattain('Fun',rand(4,1),g3,abs(g3),a,b,[],[],zeros(4 ,1))
$ W9 x; L5 ]! N2 X# d k %这里权重weight=目标goal的绝对值 U% U! T; K$ I( W( u: I
* Z9 Y3 L: k6 z2 W 就可求得问题的解。
习题 9 Q( R7 k: ~' X( d: O- G4 S0 [
: A, |4 S$ f- `. L5 j4 i4 w& ` 8 H- U) D+ P/ A" A/ f/ z
————————————————3 ?' n @/ D' c5 @) R2 x
版权声明:本文为CSDN博主「wamg潇潇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
9 O- H' q* V# {, R- l, K: Q$ H, y 原文链接:https://blog.csdn.net/qq_29831163/article/details/89488932( \$ M# o/ _0 Z8 c; I" d, c
J, w7 s- A& ]" j3 u' Y
' F- r# C- ~& C* h! ?4 E, L$ J5 E
zan