- 在线时间
- 791 小时
- 最后登录
- 2022-11-28
- 注册时间
- 2017-6-12
- 听众数
- 15
- 收听数
- 0
- 能力
- 120 分
- 体力
- 36056 点
- 威望
- 11 点
- 阅读权限
- 255
- 积分
- 13757
- 相册
- 0
- 日志
- 0
- 记录
- 1
- 帖子
- 616
- 主题
- 542
- 精华
- 10
- 分享
- 0
- 好友
- 225
TA的每日心情 | 开心 2020-11-14 17:15 |
---|
签到天数: 74 天 [LV.6]常住居民II
 群组: 2019美赛冲刺课程 群组: 站长地区赛培训 群组: 2019考研数学 桃子老师 群组: 2018教师培训(呼伦贝 群组: 2019考研数学 站长系列 |
1.线性规划的局限性3 t4 }9 z9 K/ a |
只能解决一组线性约束条件下,某一目标只能是一个目标的最大或最小值的问题。9 E H' U/ H! ?
" o# \& W, ~" E
2.实际决策中,衡量方案优劣考虑多个目标
3 }3 C! J% H" I: j0 s: \ e: c' G这些目标中,有主要的,也有次要的;有最大值的,也有最小值的;有定量的, 也有定性的;有相互补充的,也有相互对立的,LP 则无能为力。
- U$ x+ w/ W$ L4 w/ A8 \( R. A( v5 n" i* b
3.目标规划(Goal Programming)
/ n: {$ T' _) o, ?9 M. D美国经济学家查恩斯(A. Charnes)和库柏(W. W. Cooper)在 1961 年出版的《管理模型及线性规划的工业应用》一书中,首先提出的。' d# U8 P+ N3 A& z, ~0 R; L6 g
P) P. @4 z A6 S2 I4.求解思路7 G4 @$ e# K+ w) c* z: J5 H- F8 w
(1)加权系数法7 B# ~: K' w# q8 d
为每一目标赋一个权系数,把多目标模型转化成单一目标的模型。但困难是要确 定合理的权系数,以反映不同目标之间的重要程度。
; G7 O/ w) x* r, C3 T* @2 g( B: z' n4 V+ d0 i* D, k
(2)优先等级法
9 a: u" t3 Z$ o9 e将各目标按其重要程度不同的优先等级,转化为单目标模型。$ V$ I6 Y q9 p
' s, m- N2 _( {7 w5 E
(3)有效解法% I1 h: n" E# o$ P2 e G
寻求能够照顾到各个目标,并使决策者感到满意的解。由决策者来确定选取哪一个 解,即得到一个满意解。但有效解的数目太多而难以将其一一求出。
0 g) J8 l) c. o: J* B/ c" F
4 I- m, q- T/ p* _2 目标规划的数学模型
9 M* t: l) F; ]4 w; x为了具体说明目标规划与线性规划在处理问题的方法上的区别,先通过例子来介绍 目标规划的有关概念及数学模型。$ h6 ?, } A- s. V+ K! X9 `
$ ^2 X5 `/ B2 U+ r例1 某工厂生产 I,II 两种产品,已知有关数据见下表 ,试求获利最大的生产方案。4 f+ m H. P" t* E+ h0 E
8 ]: h7 ~* z2 R" v+ L& A
: _/ w% Q# l6 S9 x
# V- n+ Y& y, \: z! ^* U: B X
解 这是一个单目标的规划问题,用线性规划模型表述为: 6 Q3 E$ R: s8 Q4 p7 M2 l, r
$ o" M) a2 A7 l1 n2 |/ d8 }& B
2 ^- L; h8 H1 l7 S* Z
) c" `. a( X k. d但实际上工厂在作决策方案时,要考虑市场等一系列其它条件。如/ ~- F/ h& E7 F) h1 k/ E, X
& t e. f U3 L! |- U; c+ e(i)根据市场信息,产品 I 的销售量有下降的趋势,故考虑产品 I 的产量不大于 产品 II。
P0 Q! F% R( B" c$ B
# n+ {. |' x8 M# C* L3 j(ii)超过计划供应的原材料,需要高价采购,这就使成本增加。8 e; }6 t! z0 \$ w$ ~
8 \. }7 L" r6 c2 e7 Y
(iii)应尽可能充分利用设备,但不希望加班。
; O% a5 ~6 ^ _( }0 s; n
! v+ R' d y' m, A. B d(iv)应尽可能达到并超过计划利润指标 56 元。
5 }! s8 D& q# [' Q9 h; q
a, Z' Y) f' ?% b1 F1 J3 E8 Z$ c7 S这样在考虑产品决策时,便为多目标决策问题。目标规划方法是解决这类决策问题 的方法之一。下面引入与建立目标规划数学模型有关的概念。 ) J' M! h& Q% ~ E- w: u# ^# k9 f
6 ~8 {* H8 W6 O
1. 正、负偏差变量
4 w# o9 M* w! k
: n* x1 @9 U, {; T$ v2 ^0 X![]()
; M$ i) T \! a4 N0 }9 e# G' [+ t5 G6 Z& {
2. 绝对(刚性)约束和目标约束 5 O5 B- Z4 ?! Q3 A' G
# E& u) M, V# N; |5 w3 G![]()
i% k0 q( q! P$ x/ W% T1 b t
- @$ a8 V( I! L/ g3. 优先因子(优先等级)与权系数 ' Q: S1 v4 |% q% {; n) m0 s
; k/ i( U* v3 N. {! W: M& z( C# Z
![]()
; n0 ~" i* P$ C3 r- ]9 @% Y1 R- {( T
" i# f( V$ Z/ c0 r' ^- Y. k D
4. 目标规划的目标函数
: j% s" { @5 j/ w
9 r1 t, k/ }: E) c( W* ?9 Q: ? ' ]; s- L" u7 @
" y- w1 ?' F0 m% e
对每一个具体目标规划问题,可根据决策者的要求和赋于各目标的优先因子来构造目标 函数,以下用例子说明。 , W3 m" y7 v! V9 @- v
+ d0 u5 A! @+ k0 z' a5 a例 2 : 例 1 的决策者在原材料供应受严格限制的基础上考虑:首先是产品 II 的产 量不低于产品 I 的产量;其次是充分利用设备有效台时,不加班;再次是利润额不小于 56 元。求决策方案。 解 按决策者所要求的,分别赋于这三个目标 优先因子。这问题的数学模型是 6 s2 s$ j& Y( X7 z: i, Q
" R( K8 \( M% \: \
![]()
, s) P d9 S: d7 |5 Z- t
; O. L" I {0 a" A5.目标规划的一般数学模型
! v+ z6 z: \( w7 X
, a- h, Y; V* Y% M+ Q 7 m9 _( t- J/ F% T% c% f
" E8 c1 B5 z* s0 t+ f8 F
, P0 J2 w% J" e2 o' j建立目标规划的数学模型时,需要确定目标值、优先等级、权系数等,它都具有一 定的主观性和模糊性,可以用专家评定法给以量化。 ; F; A7 L) l4 i, ~! w
& k) O1 i# Z7 {: Q
3 求解目标规划的序贯式算法5 E% h4 e- q! n) C
序贯式算法是求解目标规划的一种早期算法,其核心是根据优先级的先后次序, 将目标规划问题分解成一系列的单目标规划问题,然后再依次求解。
% g2 T0 Z8 X0 v. W2 g) s% n; W2 p. v4 @
![]()
# R7 d X8 @' j% `/ N9 e: @" {& r7 y P3 s3 E7 `6 M
" |8 D- Q% U1 p* G: @$ O
# Y0 z8 |7 R- p注 此时最优解的概念与线性规划最优解的概念已有所不同,但为方便起见,仍 称为最优解。 0 a- Z' U0 Z7 N+ i$ L7 t
6 r( F( A& m0 U" P2 g
例 3 某企业生产甲、乙两种产品,需要用到 A ,B ,C 三种设备,关于产品的赢利 与使用设备的工时及限制如下表所示。问该企业应如何安排生产,才能达到下列目标:1 Q; S+ {3 f* b% _
& B" F( y/ l% e `9 D * e1 P9 G8 l( w# v2 R3 }3 f+ R
, D# g3 j* y% }(1)力求使利润指标不低于 1500 元;9 Q1 O. i e" L ]8 Z a) ?
5 X" f2 q$ O/ n% ?8 T# F4 F(2)考虑到市场需求,甲、乙两种产品的产量比应尽量保持 1:2;
* @# j7 Q: q* k) g7 @( e7 L* d4 S: d5 S) |
(3)设备 A为贵重设备,严格禁止超时使用;' c8 d2 w9 `7 E. y' B0 a% J
) L9 o/ |) v2 }, c+ o9 x(4)设备 C 可以适当加班,但要控制;设备B 既要求充分利用,又尽可能不加班。 在重要性上,设备B 是设备C 的 3 倍。
# }/ j6 T) m* ~( v4 O
. ^1 T$ _& N( q' W建立相应的目标规划模型并求解。0 A/ [6 W8 }- n! t
( n$ h3 N7 s1 e. q
解 设备 A是刚性约束,其余是柔性约束。首先,最重要的指标是企业的利润, 因此,将它的优先级列为第一级;其次,甲、乙两种产品的产量保持 1:2 的比例,列为 第二级;再次,设备 B C, 的工作时间要有所控制,列为第三级。在第三级中,设备B 的 重要性是设备C 的三倍,因此,它们的权重不一样,设备B 前的系数是设备C 前系数 的 3 倍。由此得到相应的目标规划模型。 ; w ~6 I$ ^) H/ D9 h" y6 b
8 U% \( |$ Q/ Q
![]()
5 c4 f: Z- u0 v9 F& K. ^+ c _
4 p* t% q7 m% _) e, X序贯算法中每个单目标问题都是一个线性规划问题,可以使用 LINGO 软件进行求 解。 求第一级目标。LINGO 程序如下: L! n; w, e: I' t [) T* Q
. }" v5 l b* s) `; e6 t) I6 u" g% x! umodel:
4 @6 k2 [, F. s# V% Bsets: 2 Z, q+ }0 q6 A/ Y6 y; ^
variable/1..2/:x;
4 r# c5 c: x5 ^% s+ qS_Con_Num/1..4/:g,dplus,dminus;
+ \+ V% @ f5 _" ^) {5 ~0 pS_con(S_Con_Num,Variable):c;
9 J' g: M% S1 s' [" r7 n& H9 N; lendsets
9 b0 W: f/ B9 j8 g. }( A. l) i2 Xdata: ; D: T. g1 x& ^* ~
g=1500 0 16 15;
: Y, E- S3 z* l4 kc=200 300 2 -1 4 0 0 5;
. ]; m- d J" `! k$ Zenddata % q: f. G+ o) _, L) j
min=dminus(1); 7 {; L, y% T. {* _
2*x(1)+2*x(2)<12; ; K/ x& L4 d' h7 T# L
@for(S_Con_Num(i) sum(Variable(j):c(i,j)*x(j))+dminus(i)-dplus(i )=g(i)); : x% v" U4 D" o4 t/ o
end
" U' x4 u3 U( e7 @
" j! W9 C; K( p求得 dminus(1)=0,即目标函数的最优值为 0,第一级偏差为 0。 求第二级目标,LINGO 程序如下: model: t: g2 {) n0 d; R
sets:
6 j5 X3 h4 ^0 E k5 [$ G/ m( pvariable/1..2/:x;
o! `( Z% r! n% k! C7 z/ ZS_Con_Num/1..4/:g,dplus,dminus; ) z$ Y! F& R# K0 }. |
S_con(S_Con_Num,Variable):c; * z) Q' J. m9 O( g v. I, [5 ~; E9 p
endsets
5 F a6 d# p8 S. m6 |% ?6 y4 K) `data:
- L2 u! o, p+ A: z& Bg=1500 0 16 15;
( j5 e* N1 F3 l2 s1 \% E, Bc=200 300 2 -1 4 0 0 5; ) U: q6 j* t( R, j4 _6 Q7 y0 V
enddata
- e" e+ Z& g& [+ Y' [min=dplus(2)+dminus(2); !二级目标函数; & V7 |' g3 `4 J# L0 M' m
2*x(1)+2*x(2)<12; # b( m" ?; [ b$ V0 M1 }! A
@for(S_Con_Num(i) sum(Variable(j):c(i,j)*x(j))+dminus(i)-dplus(i )=g(i)); 6 E* G& O. S& }1 C& |
dminus(1)=0;!一级目标约束; / p7 ^0 s& f0 G! V
@for(variable gin(x));
* H$ }5 ?7 }5 Q( Jend
% N3 h8 a, F# e, F! i# y8 N/ a1 P1 w$ f' i! p5 Q& U/ v
求得目标函数的最优值为 0,即第二级的偏差仍为 0。 求第三级目标,LINGO 程序如下: ; w/ d( d3 B& G$ r, [
M% T. d3 @7 @ X4 A5 T4 gmodel:
) P& q: y% C- x, _8 c2 usets: # c" X" P5 V/ d/ m7 U+ a3 e* Z
variable/1..2/:x; 4 G; G0 o* |' {0 Y: C& L O y
S_Con_Num/1..4/:g,dplus,dminus; % C+ p1 [" g$ {
S_con(S_Con_Num,Variable):c;
9 `% h4 ~! Z4 R: @* k: mendsets
+ x! u+ d: i& F2 Adata: - E$ ?! ^$ ^* a% k& v% H
g=1500 0 16 15; ; W4 |* }* g+ S t! Q+ `9 C8 n
c=200 300 2 -1 4 0 0 5; t7 F3 \) G1 N) F& U/ |1 `3 p
enddata * D" _: h, E3 b3 _& H: [. i
min=3*dplus(3)+3*dminus(3)+dplus(4); !三级目标函数; 6 k& b8 S. D1 V: d& C
2*x(1)+2*x(2)<12;
2 F4 I4 w2 k+ R' l @for(S_Con_Num(i) sum(Variable(j):c(i,j)*x(j))+dminus(i)-dplus(i )=g(i));
8 t) W* q# k/ z8 z( i3 P& }dminus(1)=0;!一级目标约束;
6 D/ K8 Y) D; |1 A5 \$ hdplus(2)+dminus(2)=0;!二级目标约束; 9 q8 g7 F9 m* T6 C- |
end
, H0 n. [4 [- n9 u1 d7 Z3 P
2 c E& U0 H) y3 _% C4 ~目标函数的最优值为29,即第三级偏差为29。 % g) c& X, }, i
$ n% G4 q& x& K, I分析计算结果, ,因此,目标规划的最优解为 , 最优利润为1600。1 Y3 t! t. z5 X5 n# x4 ~! C
& v: C& t5 N, \6 g4 _# {3 ?上述过程虽然给出了目标规划问题的最优解,但需要连续编几个程序,这样在使 用时不方便,下面用 LINGO 软件,编写一个通用的程序,在程序中用到数据段未知数 据的编程方法。# ^# d# q' O* u# {5 S+ l
- b" M; G/ n. J( J$ |3 I1 k
例 4(续例 3) 按照序贯式算法,编写求解例 3 的通用 LINGO 程序。
. h# l0 g/ u" b( v
! {- z F7 ?( n1 g; O+ q* h1 hmodel: $ L1 z8 j% }3 E t, v
sets:
# V! m- f5 [ jlevel/1..3/:p,z,goal; & I$ X8 g- [" i
variable/1..2/:x; 6 J' t9 C8 e, {" l9 ] v
h_con_num/1..1/:b; ( ^2 G# G+ `8 d* s* o& I6 m, g1 e
s_con_num/1..4/:g,dplus,dminus; . C- w, A/ q- D4 U
h_con(h_con_num,variable):a;
- g, Y) F: E$ h5 as_con(s_con_num,variable):c;
5 V; ^5 d7 O* ? }( ]2 cobj(level,s_con_num)/1 1,2 2,3 3,3 4/:wplus,wminus; 0 U: V/ J+ f5 {, F$ x s
endsets ! ], S/ g4 M! D3 s, D. b
data: 0 U4 G( [0 h5 X4 n1 l
ctr=?;
* Q5 P# U1 R3 W7 ]goal=? ? 0;
& Z2 Q9 n6 o2 wb=12;
8 E4 T, _( B) t5 e' j) m7 J' }g=1500 0 16 15; * q0 |7 C8 r, I# g( p/ W' D% t% S
a=2 2; $ G. u4 {. n5 b v) d+ Y
c=200 300 2 -1 4 0 0 5; 7 H4 M, ~5 a0 T
wplus=0 1 3 1;
6 N4 ]* s- `1 x' Dwminus=1 1 3 0;
! j7 f/ ]$ }7 h A7 N; Xenddata & A! d" } z u7 J* s
min=@sum(level:p*z); 9 D: D) m: ]% ?5 d
p(ctr)=1; , k7 f# k+ \: a. c0 i' p
@for(level(i)|i#ne#ctr:p(i)=0); ! X8 X/ v: V8 E+ c* G7 B1 y5 ?
@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)));
1 q" B$ `* h) T& j- fend , T0 V4 Z3 V7 }1 Z0 H2 U1 v
( V0 X: G* ~/ W4 m# |* p; }8 \
- o6 H- i8 U: \% O: x# o5 I& o! _& F5 `+ `; K) M
![]()
; P! O) a4 C& x' g
& |7 V$ p' c4 m3 V1 M4 多标规划的 Matlab 解法 多目标规划可以归结为
; e7 w& s/ r7 c7 I' z![]()
! ~7 d, V* u& n K/ _0 u
+ G) A V% R7 D Y% @7 b% p9 R[x,fval]= fgoalattain('fun',x0,goal,weight)
* s+ ]* ]6 Q- |* T[x,fval]= fgoalattain('fun',x0,goal,weight,A,b) ) A" e& \+ o: k" {0 M! \# b
[x,fval]= fgoalattain('fun',x0,goal,weight,A,b,Aeq,beq) 0 s' v- y1 p1 J; j, t3 o
[x,fval]= fgoalattain('fun',x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon)
+ o( e" x9 u/ O# O% p% ` e3 V3 O5 h, ]: I! W2 t
; m- j4 l6 x) @- p$ r
要完整掌握其用法,请用 help fgoalattain 或 type fgoalattain 查询相关的帮助。
8 P: R. ?( E: I7 M$ r. B- w 例 5 求解多目标线性规划问题 0 ~5 k% P8 K( Q, Y% w
0 w" i; s O4 ^1 _% D
![]()
4 A, C4 d x# ]/ O W0 ~5 Q e- j! k; Y8 `
解 (i)编写 M 函数 Fun.m: 5 F8 G7 f- U3 `
$ F- {+ G' b& \2 s# \; o# y9 sfunction F=Fun(x);
8 G( Z! t* z$ b- Y+ v0 ?' H/ R
, H7 P+ D; |/ I$ C6 c F+ DF(1)=-100*x(1)-90*x(2)-80*x(2)-70*x(4); 5 F7 K- K8 }3 j
7 H3 \0 V( I2 L b2 R
F(2)=3*x(2)+2*x(4);
7 ]/ ^( ^& G% W9 h) l/ \
3 J& p0 c: M6 }; X5 e' x: @& M(ii)编写 M 文件 9 \ U K$ C8 w
% k2 Q9 `; U2 O( K, H5 Ra=[-1 -1 0 0 / s0 n% [3 b/ }# D& V9 b0 M" S
0 0 -1 -1 % c( D! W- t, d+ J" p7 M Y! _
3 0 2 0
]; g1 L8 t% P I* q* y 0 3 0 2]; j8 M+ r1 I5 I& U
b=[-30 -30 120 48]';
$ G6 E% W3 H2 n/ P, G" ~2 uc1=[-100 -90 -80 -70];
7 n5 W+ I% G/ a, y5 rc2=[0 3 0 2];
3 z& o' S, E; E; L# ?7 H, m[x1,g1]=linprog(c1,a,b,[],[],zeros(4,1)) %求第一个目标函数的目标值 ' E& c/ t5 h+ A0 N
[x2,g2]=linprog(c2,a,b,[],[],zeros(4,1)) %求第二个目标函数的目标值
4 ?7 D5 d! K+ c+ l3 V! bg3=[g1;g2] %目标goal的值 / W x% m3 v1 _1 S# {$ x1 ^
[x,fval]=fgoalattain('Fun',rand(4,1),g3,abs(g3),a,b,[],[],zeros(4 ,1))
. r* Z# y+ {2 {1 J1 V$ [%这里权重weight=目标goal的绝对值
. H; ]2 ^% o' T B3 L2 e
, }( S, i$ `) O& l就可求得问题的解。 习题
4 F& f3 F3 ?5 n! r5 U8 N : q6 `1 J5 @6 f- m3 F( [
# }1 N0 j. M9 T3 Q4 E
————————————————
6 H/ a F% J, V& m4 d3 L5 E! z8 L版权声明:本文为CSDN博主「wamg潇潇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 w( A* S3 s4 I) C
原文链接:https://blog.csdn.net/qq_29831163/article/details/89488932
9 Z$ T9 I1 r; e- o5 P% U4 Z- z9 j( C
) R; P$ r/ l7 e1 k, |# B( s, z
0 a6 M$ `& q; ] |
zan
|