- 在线时间
- 791 小时
- 最后登录
- 2022-11-28
- 注册时间
- 2017-6-12
- 听众数
- 15
- 收听数
- 0
- 能力
- 120 分
- 体力
- 36395 点
- 威望
- 11 点
- 阅读权限
- 255
- 积分
- 13879
- 相册
- 0
- 日志
- 0
- 记录
- 1
- 帖子
- 616
- 主题
- 542
- 精华
- 12
- 分享
- 0
- 好友
- 225
TA的每日心情 | 开心 2020-11-14 17:15 |
|---|
签到天数: 74 天 [LV.6]常住居民II
 群组: 2019美赛冲刺课程 群组: 站长地区赛培训 群组: 2019考研数学 桃子老师 群组: 2018教师培训(呼伦贝 群组: 2019考研数学 站长系列 |
1.线性规划的局限性* _! Y' u0 G: a& h
只能解决一组线性约束条件下,某一目标只能是一个目标的最大或最小值的问题。
" Z. O6 U9 ^; Y5 G9 k" h
7 j* c! u( k) j3 x2 j" o2 I. h! { 2.实际决策中,衡量方案优劣考虑多个目标) s( X7 F+ U/ B$ y3 V
这些目标中,有主要的,也有次要的;有最大值的,也有最小值的;有定量的, 也有定性的;有相互补充的,也有相互对立的,LP 则无能为力。
% a. C! ?0 E1 z$ P" s9 |2 C; _& O8 r; [2 z
3.目标规划(Goal Programming)
# k, H0 r% @/ }4 a% k- O美国经济学家查恩斯(A. Charnes)和库柏(W. W. Cooper)在 1961 年出版的《管理模型及线性规划的工业应用》一书中,首先提出的。
' t( [& S1 O! P1 v/ f' L' x/ c: z8 e& Q7 u5 `
4.求解思路
! M8 C; K ^7 X2 N7 \. |) \(1)加权系数法3 b% y- O0 ~5 Q2 ?5 c) K
为每一目标赋一个权系数,把多目标模型转化成单一目标的模型。但困难是要确 定合理的权系数,以反映不同目标之间的重要程度。$ E& ~# `6 I6 z/ y. X
8 x- L% c. @. Z+ j8 f8 j/ o9 L7 r(2)优先等级法$ @) L: i$ v6 P1 W# m; R
将各目标按其重要程度不同的优先等级,转化为单目标模型。6 u! p% u+ G: e. ]# w2 G5 o" _# J
/ N( p+ |5 N' S j
(3)有效解法0 _: M! ^' i& c) Z
寻求能够照顾到各个目标,并使决策者感到满意的解。由决策者来确定选取哪一个 解,即得到一个满意解。但有效解的数目太多而难以将其一一求出。
3 ~9 Y& e$ P/ `) [
' ~! u! W" U! [: a2 d( Y. t* i: D# O2 目标规划的数学模型, t s1 s/ g6 u; A
为了具体说明目标规划与线性规划在处理问题的方法上的区别,先通过例子来介绍 目标规划的有关概念及数学模型。
0 Q/ t& v* R. z2 h
! o e) W ]6 Y7 _/ w" M7 B4 ~例1 某工厂生产 I,II 两种产品,已知有关数据见下表 ,试求获利最大的生产方案。& s2 w7 I6 y$ C8 x, x
6 j$ v7 ]$ A+ n; t6 L: [' h
![]()
4 j' O5 {5 ^8 R! ~6 s0 i! L$ M5 c5 [6 Q, h# q# T; U7 ?/ S
解 这是一个单目标的规划问题,用线性规划模型表述为:
7 F$ R% p- B' J, V! c$ \) F/ E6 D# ]/ P( ?- k
![]()
( j. C+ Z z# a# W+ h' G1 R! V% W, p4 Y% H, ~3 h6 R
但实际上工厂在作决策方案时,要考虑市场等一系列其它条件。如1 w7 L. O% }( f! q; Z/ m* G
+ {1 Y# y# Z$ c(i)根据市场信息,产品 I 的销售量有下降的趋势,故考虑产品 I 的产量不大于 产品 II。
- f7 W& x+ a: p5 A: }( H2 r( Y& O# m
g; `/ B( I# A' ?/ v; V4 V* g8 g(ii)超过计划供应的原材料,需要高价采购,这就使成本增加。. `( M+ A& C" ]- |% {
: Y. e4 Q* j" ~
(iii)应尽可能充分利用设备,但不希望加班。
; Y* j9 X- W0 @4 a# x; G4 N0 V' r9 `, E- b/ M
(iv)应尽可能达到并超过计划利润指标 56 元。+ @/ B }5 J" Z6 x/ o/ N$ U
6 s& a: B! q& J5 b1 C( i; f; \
这样在考虑产品决策时,便为多目标决策问题。目标规划方法是解决这类决策问题 的方法之一。下面引入与建立目标规划数学模型有关的概念。
1 j7 S U$ G2 |" r8 S
/ F `# f) b5 v1. 正、负偏差变量
8 L; I* t: f2 g# ?; a, c' L1 ?& J( ^: x6 M5 [/ P9 ?: A
+ ^) b* `5 i$ r
$ {% J" f$ H% T" e+ _( W
2. 绝对(刚性)约束和目标约束 ( a6 x0 i& ]# h$ |
& p) H$ {3 ?- f7 H
/ y& J% D1 z+ u2 L a4 [
% ^5 E% Z! N0 ^% p) H9 I3. 优先因子(优先等级)与权系数 $ |% w( h- O, [6 J1 ^
/ S: D9 g! Q! O9 V* u$ P ' V3 ]% q/ P8 m) d! }, g7 t
: J1 p l2 ]# X2 M2 }: X) J
4 ~( `+ N& q+ i0 h1 T4. 目标规划的目标函数
+ [0 d- G) f) G5 h s6 _* `- ]! C
! Q5 J# r+ p% v% M# r+ t : r* O N3 R2 [
9 S& l9 Z- ^& L
对每一个具体目标规划问题,可根据决策者的要求和赋于各目标的优先因子来构造目标 函数,以下用例子说明。
3 z( r+ Q$ h1 c* R% D
5 n( f1 K5 E& r ?例 2 : 例 1 的决策者在原材料供应受严格限制的基础上考虑:首先是产品 II 的产 量不低于产品 I 的产量;其次是充分利用设备有效台时,不加班;再次是利润额不小于 56 元。求决策方案。 解 按决策者所要求的,分别赋于这三个目标 优先因子。这问题的数学模型是 : s8 U4 `5 U) g/ @- @
( Y' E( C$ x7 j9 W$ W1 K% V
; Y. g: ^& ~* X o& I7 A
6 V& o$ h. A7 j# p9 v
5.目标规划的一般数学模型0 \5 g j! ^. t
2 \+ `. r/ `! C1 A& ~ ) N* ]3 p9 L' n
: B% y9 K# ^1 q M
% H6 O" |& G; n, D0 J3 Z8 E! n
建立目标规划的数学模型时,需要确定目标值、优先等级、权系数等,它都具有一 定的主观性和模糊性,可以用专家评定法给以量化。 p8 T& |7 H- Z5 }- [$ w
- G, }) P& K6 e# [1 |3 h3 a# v3 求解目标规划的序贯式算法
6 ^" e' v+ T7 t; ?- @- j序贯式算法是求解目标规划的一种早期算法,其核心是根据优先级的先后次序, 将目标规划问题分解成一系列的单目标规划问题,然后再依次求解。
$ R' v z" z! v0 ~$ q" e; d7 k7 ^' p2 S* Y+ f8 z: e
![]()
" b9 z, z, e# P' p9 D7 t% W- W
( a/ a' A% _9 P- r7 d4 z. ?8 A / a: k {; a% X# c) m
% C6 [" n; F4 o' b$ d
注 此时最优解的概念与线性规划最优解的概念已有所不同,但为方便起见,仍 称为最优解。 & |! `0 k% X; R7 A: B3 Q
: _- y# l2 z: g, R$ D% x
例 3 某企业生产甲、乙两种产品,需要用到 A ,B ,C 三种设备,关于产品的赢利 与使用设备的工时及限制如下表所示。问该企业应如何安排生产,才能达到下列目标:" K' j) w3 s4 }1 m) N/ l L- `. x
' k1 F) S5 s3 _) V+ N8 H' G
' c B5 Y& `1 B1 H& y* }, q+ m
/ t* N# D9 {( Q. x& H5 c, t; r- W(1)力求使利润指标不低于 1500 元;- @: C" ~- z( I; P+ s+ c
; U4 A- U8 E' G" _* _: ?' ]
(2)考虑到市场需求,甲、乙两种产品的产量比应尽量保持 1:2;) p# E6 Z- Q/ ^/ p% e d* x0 q2 U/ k
& O4 I0 |; v7 n( b2 A# F(3)设备 A为贵重设备,严格禁止超时使用;: R, o6 d: w9 k2 h+ u! y
I' l4 Z$ c5 k4 n(4)设备 C 可以适当加班,但要控制;设备B 既要求充分利用,又尽可能不加班。 在重要性上,设备B 是设备C 的 3 倍。) J4 X O b& G }4 p
) }8 l( }+ Q6 C2 J2 ]) Y$ p+ _! v
建立相应的目标规划模型并求解。' k( Y. o8 T$ e- P# s( y: x
, F" O r9 Q$ Z# q" k
解 设备 A是刚性约束,其余是柔性约束。首先,最重要的指标是企业的利润, 因此,将它的优先级列为第一级;其次,甲、乙两种产品的产量保持 1:2 的比例,列为 第二级;再次,设备 B C, 的工作时间要有所控制,列为第三级。在第三级中,设备B 的 重要性是设备C 的三倍,因此,它们的权重不一样,设备B 前的系数是设备C 前系数 的 3 倍。由此得到相应的目标规划模型。 9 v$ `( [7 O3 y3 c% w( |4 Y6 y) k
1 f2 b4 V- Z! y& n4 \% A( |
![]()
; F3 o2 [ a- l1 ^6 y/ y3 |% D% p1 ^, Y$ H; x0 p( [! L, u
序贯算法中每个单目标问题都是一个线性规划问题,可以使用 LINGO 软件进行求 解。 求第一级目标。LINGO 程序如下:
: O4 m& V) E8 @" L4 a3 q' T* T6 A6 z. H" k- _% A. n: z- m
model:
0 T6 k' R9 ^8 J7 [sets:
2 Y- p3 h2 Y( [/ Y) F2 ]* [variable/1..2/:x; 8 I% b1 Q" w4 a1 t* c/ O3 T/ c) z P1 m& \
S_Con_Num/1..4/:g,dplus,dminus;
0 L# H; v8 ^( O, l- XS_con(S_Con_Num,Variable):c; ! { i( W4 y$ F$ A5 M6 y
endsets 9 ~6 }4 ~0 e6 p1 W
data:
! e/ Z6 s4 c _7 p% R6 W. r& n3 `+ c$ ig=1500 0 16 15; 4 Y$ W; y, e! ^8 }( z( r5 L* C
c=200 300 2 -1 4 0 0 5; % j6 I5 Y% I( f( J5 E
enddata
+ }# q+ u1 J: H* a. G6 j" k2 T& Z9 ` j. cmin=dminus(1);
5 o" E+ I k$ O2*x(1)+2*x(2)<12;
" ^' m" m6 ?; w. B" p; x@for(S_Con_Num(i) sum(Variable(j):c(i,j)*x(j))+dminus(i)-dplus(i )=g(i)); 2 Z3 F" B; K" m- ]1 X
end: n8 K* `0 q! N( V" T
0 Q6 o3 U6 N/ j j! f% o; K% d求得 dminus(1)=0,即目标函数的最优值为 0,第一级偏差为 0。 求第二级目标,LINGO 程序如下: model:
( U" H- i7 H5 b9 Q, R. ssets: ( K1 D0 m5 i9 D
variable/1..2/:x; ; r, ?" _! I X! F; A
S_Con_Num/1..4/:g,dplus,dminus; 5 |6 r) A0 o) V9 A! s
S_con(S_Con_Num,Variable):c;
# ~: O& ~* m" w1 u4 jendsets
; W; L6 h g( j3 t8 F2 Z y! qdata: # _6 L) C( G& x7 q
g=1500 0 16 15; , W9 `7 `+ r2 B( O( _7 K& w
c=200 300 2 -1 4 0 0 5;
4 L: n$ M) w7 X, e: Q7 S0 ^enddata ) W6 u4 X( c+ c5 c) V- r2 V3 b
min=dplus(2)+dminus(2); !二级目标函数;
' z; e9 r2 q+ e/ y2*x(1)+2*x(2)<12;
1 b; W* T0 W7 a4 k@for(S_Con_Num(i) sum(Variable(j):c(i,j)*x(j))+dminus(i)-dplus(i )=g(i)); 6 k) u* z+ x. M* l
dminus(1)=0;!一级目标约束;
# b7 M( I! N5 Q; j- g( W@for(variable gin(x)); , q2 t3 [$ D5 u+ j: N9 d
end ' C2 l) p: y" U6 U+ E% ?; d3 _+ j1 k
/ ^% w7 a2 n7 I, m6 z b( o% ]
求得目标函数的最优值为 0,即第二级的偏差仍为 0。 求第三级目标,LINGO 程序如下: ( m. c/ m6 U/ z, p
1 ^' s2 t1 m& t' f
model:
+ W) }9 S- f2 i) V6 z! r6 ~sets: ) _. h I! v, I7 N& o+ r
variable/1..2/:x; " x7 m8 \* r+ i2 I
S_Con_Num/1..4/:g,dplus,dminus; ( Z$ ?4 f1 L8 e4 \9 T5 L' m
S_con(S_Con_Num,Variable):c; ; t, L% z2 X4 x a( _+ u
endsets
# e/ k9 T/ j7 y m2 z+ O4 bdata:
7 B3 w- M. k: E* s* mg=1500 0 16 15;
3 T! {# m7 F: A* Kc=200 300 2 -1 4 0 0 5; ! q/ d4 M; `* T3 P0 s
enddata
6 h& o4 y- Y$ y- r4 O5 Y# Vmin=3*dplus(3)+3*dminus(3)+dplus(4); !三级目标函数; $ {& X7 w; H# g# {8 }' O
2*x(1)+2*x(2)<12;
. E* A; U6 M* d @for(S_Con_Num(i) sum(Variable(j):c(i,j)*x(j))+dminus(i)-dplus(i )=g(i)); g% [! `. g! I, @2 O4 `$ u
dminus(1)=0;!一级目标约束; 8 F1 E. `; U0 }
dplus(2)+dminus(2)=0;!二级目标约束; ) w F9 R$ k3 T* U
end2 S* m- h" s; ~/ X: N6 ^0 B
! g; X# @( H6 Q+ N' Q; w# @+ j
目标函数的最优值为29,即第三级偏差为29。 ( ~* w6 G3 {* @9 k) {" e7 `
* B! J5 \$ A( `( X
分析计算结果, ,因此,目标规划的最优解为 , 最优利润为1600。, b4 R a( h, v2 O
8 w+ l& h5 C/ {3 T H6 Z) s9 R
上述过程虽然给出了目标规划问题的最优解,但需要连续编几个程序,这样在使 用时不方便,下面用 LINGO 软件,编写一个通用的程序,在程序中用到数据段未知数 据的编程方法。
( T3 l% l( m7 ?; x( H' Y# J6 ~; j, _% c
例 4(续例 3) 按照序贯式算法,编写求解例 3 的通用 LINGO 程序。
. u6 ], r" ~9 e( D
, m) {* |& m) g; Z7 I; g6 h& ^3 Rmodel:
) J0 `. |2 q5 u' P/ gsets:
# f8 \, p2 O+ g# a$ Z4 P, xlevel/1..3/:p,z,goal;
3 M4 b: q: N) H8 }- G5 svariable/1..2/:x;
% h K: E6 }& jh_con_num/1..1/:b;
K- l) o2 l( A. m: X2 S4 i. {s_con_num/1..4/:g,dplus,dminus;
$ S" {4 w' P' Rh_con(h_con_num,variable):a;
6 k; D: Z. Y9 Os_con(s_con_num,variable):c; ' O3 x3 K' I% K9 P0 k
obj(level,s_con_num)/1 1,2 2,3 3,3 4/:wplus,wminus; 0 n3 x9 R) l3 ?; O* T& \$ Q
endsets
" F# g. m1 ~5 d1 i; \9 m% udata: ; D5 `* F8 O$ b5 D6 G
ctr=?; ' P9 j5 a/ S' Y2 m$ s f H& y: r
goal=? ? 0;
# H$ b9 @( Y) ~' T! D. Wb=12;
# V# f! o0 |1 o$ Jg=1500 0 16 15;
: T) c" [, K" N5 L4 @+ qa=2 2; ) x% ~0 x# d4 M3 l5 \
c=200 300 2 -1 4 0 0 5; ( d' c+ z* x; E* V
wplus=0 1 3 1; 2 I/ Q$ H8 t( C
wminus=1 1 3 0; % v6 K: S& `& R: X5 ]
enddata
) [0 C u U8 a: Cmin=@sum(level:p*z);
; S9 l! I' ~; B) |" C5 U u5 Lp(ctr)=1; 3 q: r, [1 l2 ~1 N
@for(level(i)|i#ne#ctr:p(i)=0);
k) Y6 ]5 l' `@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))); & {* i, B9 s4 e1 m2 s+ w
end
% H9 H' s) x3 g# H" ?$ e, y
! D$ Q5 Y t7 g( A4 Z$ ~0 r
$ l1 c( q: ]& B' w' l/ M4 O$ N8 `) a* D% T
: u: k6 s7 v9 K, w+ L9 D
' @ Y/ n0 t7 q! H
4 多标规划的 Matlab 解法 多目标规划可以归结为
) K; S* s9 W8 x5 b1 S6 g* ]$ q& T![]()
5 h+ k' Z' J x7 p: Y3 `. {* Y9 b7 D7 d, F/ X
[x,fval]= fgoalattain('fun',x0,goal,weight) 8 ]6 E8 B! Q8 a6 H
[x,fval]= fgoalattain('fun',x0,goal,weight,A,b) & K& M" F0 D. m/ |
[x,fval]= fgoalattain('fun',x0,goal,weight,A,b,Aeq,beq) : O* e [- O2 y8 `4 N! `3 z6 a2 v
[x,fval]= fgoalattain('fun',x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon) % D* m1 W) m7 n- k
, T8 e! z5 L4 A! P$ R
3 i) L6 |# C! f5 {$ S要完整掌握其用法,请用 help fgoalattain 或 type fgoalattain 查询相关的帮助。 t. y$ [+ P% x* T
例 5 求解多目标线性规划问题
) R" ?: a: g1 l+ i0 F5 k3 {# U3 X
% @$ s( w8 K" s0 E6 N( X/ A- }* H![]()
% k9 D2 }2 ^* Y- ^& ?5 N5 ]# R" t- ]; f# m$ Q
解 (i)编写 M 函数 Fun.m:
$ ~# ?3 `- q$ ]4 p* F( k# ^' P9 N9 a% P
function F=Fun(x);
9 C6 o6 u- V1 O. e2 v% _; s/ n3 t, [
F(1)=-100*x(1)-90*x(2)-80*x(2)-70*x(4);
/ a% M* M) ?& t( C; B6 R6 E1 ], x* c% v/ T+ O2 z- \: S3 C, g
F(2)=3*x(2)+2*x(4); 0 ]7 D3 d+ @, s" R- F; c- X: G L W' B
& i6 S( f" z5 O! B( Z# _4 M
(ii)编写 M 文件
7 G: j8 f) X- T! X" P( C3 }* U+ K
9 x R6 Q, D! h+ u, v! Ea=[-1 -1 0 0 , ?; Q7 Q4 q5 m9 M
0 0 -1 -1 * ]& {* _0 O! R# }! U* c
3 0 2 0
h9 o) A3 D( v' b3 I% k0 X 0 3 0 2];
8 w4 Q" s; X) L; o. d5 [b=[-30 -30 120 48]'; 2 a4 N, m/ x! J M+ O) a
c1=[-100 -90 -80 -70];
& j+ x7 t1 m& t* C- Wc2=[0 3 0 2]; ) K( o9 L, B! B5 i+ S) z2 q6 V
[x1,g1]=linprog(c1,a,b,[],[],zeros(4,1)) %求第一个目标函数的目标值 % G/ l+ c8 U: p7 J. o2 `8 }
[x2,g2]=linprog(c2,a,b,[],[],zeros(4,1)) %求第二个目标函数的目标值 - ]" l+ S$ M7 T X! D
g3=[g1;g2] %目标goal的值
3 V. f( @8 ?2 [[x,fval]=fgoalattain('Fun',rand(4,1),g3,abs(g3),a,b,[],[],zeros(4 ,1)) * v! q& Z+ H% o8 q( `& @
%这里权重weight=目标goal的绝对值
( ]$ C9 B5 R5 ]. I- h" X% j4 h, E/ K9 `# }# t5 M
就可求得问题的解。 习题3 {. V* L' P1 ?9 z1 f+ L5 w
![]()
4 V8 A; g) S7 {( b) E
/ N5 i0 N* n) Z1 \- o8 }————————————————% b( g$ I( o) I( |* \; m+ @3 w5 {6 A
版权声明:本文为CSDN博主「wamg潇潇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。. S3 Z: W2 J0 g9 J7 W4 R
原文链接:https://blog.csdn.net/qq_29831163/article/details/894889329 p$ t* ^* K" |
8 h P. G2 X+ g/ y1 N% m5 l0 S
+ P3 n. }4 v2 B/ Y6 F |
zan
|