- 在线时间
- 791 小时
- 最后登录
- 2022-11-28
- 注册时间
- 2017-6-12
- 听众数
- 15
- 收听数
- 0
- 能力
- 120 分
- 体力
- 36306 点
- 威望
- 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.线性规划的局限性+ V# b( o2 P. Y, K
只能解决一组线性约束条件下,某一目标只能是一个目标的最大或最小值的问题。
2 `" M! X0 ~/ H9 b( r) {2 t0 f6 I8 W! T
2.实际决策中,衡量方案优劣考虑多个目标
1 t; ?4 N; V! r8 t: `5 ~这些目标中,有主要的,也有次要的;有最大值的,也有最小值的;有定量的, 也有定性的;有相互补充的,也有相互对立的,LP 则无能为力。
; f8 l% W. P' d3 M4 P& i$ U6 w* @
: G! F* o/ u" F) I" r- {3.目标规划(Goal Programming)
. A1 p- K. P0 z- V9 R( E0 `美国经济学家查恩斯(A. Charnes)和库柏(W. W. Cooper)在 1961 年出版的《管理模型及线性规划的工业应用》一书中,首先提出的。1 O, n+ h( U7 E0 ~
. ]- \. v2 I1 y( }( M4.求解思路
( Y k! W7 }+ i' e! t, C% L(1)加权系数法2 p S. w" R7 e& x& u5 i
为每一目标赋一个权系数,把多目标模型转化成单一目标的模型。但困难是要确 定合理的权系数,以反映不同目标之间的重要程度。$ @5 V8 C* e8 [3 @6 t5 n( d
+ ]. ]' {# K! E: [- r0 ~# X(2)优先等级法
3 |! S3 O! P- D将各目标按其重要程度不同的优先等级,转化为单目标模型。
3 x6 ?+ F1 ~ [8 J
1 K; ^/ A5 w& a3 \' ] |; C. k(3)有效解法0 A5 N3 Q+ J) t; [, B' F, s4 u3 k
寻求能够照顾到各个目标,并使决策者感到满意的解。由决策者来确定选取哪一个 解,即得到一个满意解。但有效解的数目太多而难以将其一一求出。
. c. U- v7 {6 [2 h* W. ?9 k
8 q, G8 `2 H: V0 `2 目标规划的数学模型) ]1 x4 {0 v, ~. |# o
为了具体说明目标规划与线性规划在处理问题的方法上的区别,先通过例子来介绍 目标规划的有关概念及数学模型。
1 B( ?/ t, ?* `# J: R1 V
" F; e1 m% X- o9 t9 l2 `3 Y例1 某工厂生产 I,II 两种产品,已知有关数据见下表 ,试求获利最大的生产方案。
) y3 o6 [0 x. u8 l3 x, p0 J" x
7 G1 E5 g9 m, v t, d ! O& m& X) @2 |+ R F4 U U+ ?
1 I, ~. L6 J+ U! C3 r6 Y6 ^
解 这是一个单目标的规划问题,用线性规划模型表述为: + d* u" N9 J+ F+ Z8 `
; b; ?4 }- |! h# u![]()
: _. C- o3 R$ n; i M8 A3 G8 Z/ B0 T1 G/ O) S& K* Y8 {: i
但实际上工厂在作决策方案时,要考虑市场等一系列其它条件。如
9 o" S4 p# ]+ _
: x5 j' r ]6 J4 U8 o/ R2 S(i)根据市场信息,产品 I 的销售量有下降的趋势,故考虑产品 I 的产量不大于 产品 II。
& }6 N* j( a m# Y) q
1 w* @8 W6 M+ \" J; L(ii)超过计划供应的原材料,需要高价采购,这就使成本增加。+ }( R& ]' S' }& T: i8 V$ D
7 ?- t/ ~2 o- Z- s1 [3 ^) d(iii)应尽可能充分利用设备,但不希望加班。 h- c+ r+ }. l, W! O, _5 |% m p
. {1 x7 I8 Q9 o$ H6 i: e6 y
(iv)应尽可能达到并超过计划利润指标 56 元。6 W* a( W/ V% R9 g; R1 [
8 Z8 [1 s; T% [5 t! O& K. n5 v& H这样在考虑产品决策时,便为多目标决策问题。目标规划方法是解决这类决策问题 的方法之一。下面引入与建立目标规划数学模型有关的概念。 9 u9 f/ U2 N6 M0 w4 a9 z0 j6 Z
* G6 C/ y+ \8 J+ ^9 L9 M% y1. 正、负偏差变量 8 Z0 V( f2 y8 t! r0 b5 X" Q
" ~3 q; ~& L$ b/ Y( i1 `) e
( w* [9 }" x7 x* G, I2 E
* D5 `: `3 h# G' O) j' e2. 绝对(刚性)约束和目标约束 ( a9 C* t0 k: X/ c! N5 _- q
, c; u1 {. Q, e% _ S " y$ d G% k* z& C% P, ]5 x
' V# x5 t6 X2 G- U5 b
3. 优先因子(优先等级)与权系数
% J4 d- _% Q( V* E; p
" M% C6 E. {, A' ?1 N9 E + D* T$ @3 ^ C ?0 z- o
1 v" u7 i$ K! D, [3 j7 j" _
5 \7 M: h6 v- I6 j4. 目标规划的目标函数
6 n, J1 P7 ]: c) e9 p2 d4 q1 {" W/ v+ v# O: _0 l4 |
![]()
1 b- U- g- T3 S6 ]% I0 x
$ h: a: }: Z' x0 m, Z对每一个具体目标规划问题,可根据决策者的要求和赋于各目标的优先因子来构造目标 函数,以下用例子说明。
( h. _" }5 p$ D$ e" a6 Q K5 A
! A" Z8 C" p# o H# e1 I例 2 : 例 1 的决策者在原材料供应受严格限制的基础上考虑:首先是产品 II 的产 量不低于产品 I 的产量;其次是充分利用设备有效台时,不加班;再次是利润额不小于 56 元。求决策方案。 解 按决策者所要求的,分别赋于这三个目标 优先因子。这问题的数学模型是 ! c1 u/ `8 Y. \2 z- v) O& O
2 J1 u: d4 r+ y( m
![]()
+ s: d) T# D% L$ o
6 M3 u, ~2 p" ~: p% k5.目标规划的一般数学模型8 j0 X7 m2 m5 M. ^
% g. h$ u; ^2 j& z7 W0 G0 C1 ] ! `- R! J+ }' r
5 }- W# }. N7 X5 y+ v( M3 I0 O1 `4 k2 @6 S4 Z! R) P0 M) D! s
建立目标规划的数学模型时,需要确定目标值、优先等级、权系数等,它都具有一 定的主观性和模糊性,可以用专家评定法给以量化。 & X( e; S0 ~# k2 v7 r
# C% u w! G4 ?3 |5 v$ p, \ r1 R3 求解目标规划的序贯式算法
- w. F9 \7 ~8 ~5 m序贯式算法是求解目标规划的一种早期算法,其核心是根据优先级的先后次序, 将目标规划问题分解成一系列的单目标规划问题,然后再依次求解。 . m/ E6 f8 E+ c4 g8 N, d
# `6 T& A! ?- S$ X5 {7 P3 R ! ~# e( |: q- o. N, M$ |
, P- Y* [- K* S* k- L
![]()
* @0 I3 ~( N/ W! p+ r# y5 N8 Z' g9 h$ N
注 此时最优解的概念与线性规划最优解的概念已有所不同,但为方便起见,仍 称为最优解。
5 |( M- P8 p# n3 o. z
; I; [& I+ P& T8 \5 B例 3 某企业生产甲、乙两种产品,需要用到 A ,B ,C 三种设备,关于产品的赢利 与使用设备的工时及限制如下表所示。问该企业应如何安排生产,才能达到下列目标:
) x7 b" J' x% _! f
2 E9 u# e* j* r5 b Y- `4 L& D/ O - t' l& H$ m4 i
9 e" l" \! n4 i1 _: `(1)力求使利润指标不低于 1500 元;( e. y% N; t* E) J* v, R$ X
+ W" C: B \5 T% k! v( U3 ^' t
(2)考虑到市场需求,甲、乙两种产品的产量比应尽量保持 1:2;& L6 Y- t; B- R% [) [, c, p
) U% E5 _+ V! Y+ t3 h
(3)设备 A为贵重设备,严格禁止超时使用;5 N+ _0 W. E4 P: z
% _1 r' \/ L; o$ A4 _9 T' b. n(4)设备 C 可以适当加班,但要控制;设备B 既要求充分利用,又尽可能不加班。 在重要性上,设备B 是设备C 的 3 倍。
8 A' K0 J) J g8 V/ e% V5 a3 V+ k4 |% e$ y0 w8 C
建立相应的目标规划模型并求解。
9 {( p, B! P+ y" Z2 ]" O
1 z, S2 a, \) u/ h+ c3 n/ y解 设备 A是刚性约束,其余是柔性约束。首先,最重要的指标是企业的利润, 因此,将它的优先级列为第一级;其次,甲、乙两种产品的产量保持 1:2 的比例,列为 第二级;再次,设备 B C, 的工作时间要有所控制,列为第三级。在第三级中,设备B 的 重要性是设备C 的三倍,因此,它们的权重不一样,设备B 前的系数是设备C 前系数 的 3 倍。由此得到相应的目标规划模型。
; E' x$ _. K0 ]' {9 K; C( _8 i9 [/ g+ Q3 K, b+ {2 C4 `3 a8 w
; w! q6 S3 J) _- ?' ~. @
; E1 F D0 n) y; @. l, |+ s
序贯算法中每个单目标问题都是一个线性规划问题,可以使用 LINGO 软件进行求 解。 求第一级目标。LINGO 程序如下:
. V3 V4 N0 \8 g2 [7 j& m' U. {+ A% |# s
model: % z, M4 w5 i3 P8 t1 H
sets: 6 W o$ Z9 }- H l8 ~
variable/1..2/:x; 5 b8 Z( c! \. {+ b) Z
S_Con_Num/1..4/:g,dplus,dminus; . T! f; a; d$ d1 O* q2 h3 q4 }+ Y
S_con(S_Con_Num,Variable):c;
9 Z* |9 V, j' Z$ r# e2 C6 Xendsets $ u5 f0 A+ s1 G
data:
0 `- Y) G+ [, N# W# x$ wg=1500 0 16 15; & M# W$ S1 A" l6 M
c=200 300 2 -1 4 0 0 5; $ O Q# k. `' L1 g
enddata
9 L- e4 c. L5 `: e. K& nmin=dminus(1); 7 b& d A% P ?* g7 Z5 _6 K }( N
2*x(1)+2*x(2)<12; + T y4 a/ G0 B+ R$ M* g r- Q& ]
@for(S_Con_Num(i) sum(Variable(j):c(i,j)*x(j))+dminus(i)-dplus(i )=g(i));
7 ?. O/ |2 Z/ G* z$ p1 Y& xend
$ G" w7 C6 U: t& L; g% d" L- c9 d0 F
求得 dminus(1)=0,即目标函数的最优值为 0,第一级偏差为 0。 求第二级目标,LINGO 程序如下: model: ' ?' r4 Z7 j$ t2 r
sets:
; x) r) A% s6 W9 [; O7 o, Dvariable/1..2/:x;
$ ]) H1 J& s% D% O$ {1 eS_Con_Num/1..4/:g,dplus,dminus; & U; }8 ~4 Z7 C
S_con(S_Con_Num,Variable):c; ( C$ J/ L* q4 J0 Z8 l
endsets
# g6 p8 ?7 g7 Pdata:
4 M7 ^4 R/ c r( zg=1500 0 16 15; 1 x% V7 P, i ]! c1 a8 J j( j
c=200 300 2 -1 4 0 0 5; 1 j* q6 A& c. I* ?2 A; J$ q9 d
enddata 8 f) u4 F( Z2 e4 R) d
min=dplus(2)+dminus(2); !二级目标函数;
" k. A7 `. Z+ \1 W; W* O4 T2*x(1)+2*x(2)<12;
( b" N$ @) _% a1 Y6 r@for(S_Con_Num(i) sum(Variable(j):c(i,j)*x(j))+dminus(i)-dplus(i )=g(i)); * d4 D/ @8 p) }/ R
dminus(1)=0;!一级目标约束;
2 h0 T* x1 i7 \7 O8 i@for(variable gin(x)); ( }/ [ Y+ u3 V
end
* [/ f; d r: A+ t6 q9 c7 o" S0 I6 S4 j8 _; ?3 B! ^+ O
求得目标函数的最优值为 0,即第二级的偏差仍为 0。 求第三级目标,LINGO 程序如下: 9 t) K. A: w9 v/ w* `0 e
) a) i8 _& A: m. F1 c, _
model:
/ a2 l1 k C7 r9 Ysets: + C: l. J# L- a
variable/1..2/:x; 9 j% Z! p$ \8 l/ k7 o# [
S_Con_Num/1..4/:g,dplus,dminus; 9 m; y% U0 o: g
S_con(S_Con_Num,Variable):c;
6 \! r- J: p8 |% G/ S6 O$ jendsets ' G. |! ^/ r7 k: a E
data:
9 o" W) N# l# f4 F' U: fg=1500 0 16 15; 6 y, h0 a8 Q) y
c=200 300 2 -1 4 0 0 5;
+ N# M- x2 O) f% Jenddata
M5 \* f7 v/ G( W5 Q8 _min=3*dplus(3)+3*dminus(3)+dplus(4); !三级目标函数; ) C0 {" k' N9 n# v
2*x(1)+2*x(2)<12;7 i9 T" Y9 P$ p; {5 m& s% E* l
@for(S_Con_Num(i) sum(Variable(j):c(i,j)*x(j))+dminus(i)-dplus(i )=g(i)); 6 R% s x# F; ~9 Z7 r7 _) Y4 f
dminus(1)=0;!一级目标约束; " s$ ^3 J4 T/ i5 z O9 {7 v
dplus(2)+dminus(2)=0;!二级目标约束;
. N' u& y# S7 h2 xend
8 ]- U. K* c5 [) }& q8 l; ?7 m" {+ p% F& F$ p
目标函数的最优值为29,即第三级偏差为29。
- k: c& ^. z1 b3 N0 A
# u' T& Z# A( z分析计算结果, ,因此,目标规划的最优解为 , 最优利润为1600。4 [8 Z' [+ O8 `( ]
1 ^7 r' Y! a+ W; ^" e
上述过程虽然给出了目标规划问题的最优解,但需要连续编几个程序,这样在使 用时不方便,下面用 LINGO 软件,编写一个通用的程序,在程序中用到数据段未知数 据的编程方法。
, u R: _; g, w
\# p' k; O* g+ _- v3 N2 }: [例 4(续例 3) 按照序贯式算法,编写求解例 3 的通用 LINGO 程序。) T+ D+ p3 G* O9 X; @
2 W- L% C/ k! c: i: `5 A7 }
model: S. p: p9 B+ d& t* F' J
sets: . H* ?/ Q) i2 B% {% B4 Z8 S
level/1..3/:p,z,goal;
h9 r5 @8 ]# @variable/1..2/:x;
' f9 Y% H. }) L! wh_con_num/1..1/:b; & y, i! `% m0 U6 J& N! K" Y; I. [
s_con_num/1..4/:g,dplus,dminus; 5 M) @" I; K) {
h_con(h_con_num,variable):a;
6 _7 \/ h8 g# x! r* Qs_con(s_con_num,variable):c; 5 l& h* o% Z6 J4 G
obj(level,s_con_num)/1 1,2 2,3 3,3 4/:wplus,wminus; 5 d3 ]2 Q2 h) ^- g% F/ Z/ Q
endsets
j% l" U& B! `+ |7 U2 u. Ddata: 5 t1 [( g G5 K6 X# z/ _9 Z% N
ctr=?;
. Y! A* O! I4 C5 E* i; F# a/ }goal=? ? 0;
2 ?, o5 Z* ^% y6 Gb=12;
- T8 T5 k4 o8 S; o0 tg=1500 0 16 15; 9 t: n+ J/ }& }( t8 M$ P
a=2 2; 2 B! j' q8 s" @! t4 a1 J; |1 U
c=200 300 2 -1 4 0 0 5; ) l' Y+ w5 D+ T. C& B5 I% P
wplus=0 1 3 1; 4 Q% g: U5 q% _3 ^+ c& L8 p$ G% ~
wminus=1 1 3 0;
1 z3 ~7 K: L2 \4 ?) t8 ~6 t fenddata
- a( ^7 B' n/ B% {& x* ?min=@sum(level:p*z); 0 \2 o) m; K4 g! m* c
p(ctr)=1;
3 e5 l6 i1 w" O1 P$ E, D@for(level(i)|i#ne#ctr:p(i)=0);
2 z1 A! S- C8 g8 E( Q' h@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)));
/ V0 r' c4 A8 |end * b' e4 J; l4 U" Y
3 E+ b l, ~ l( o% {
3 s. _: j/ F% O5 m) v8 Q3 |
+ Y1 I8 |5 A; i' G. i![]()
. {6 y' K3 N. |4 D1 A/ a; I* A& Y* P
4 多标规划的 Matlab 解法 多目标规划可以归结为 ( t2 q, ]& e0 W% d- u
![]()
7 L' d- d3 l$ }1 M1 f: u$ a- j$ }/ b6 z
[x,fval]= fgoalattain('fun',x0,goal,weight) : g+ s; U8 ]) [6 C& e' F% u% @
[x,fval]= fgoalattain('fun',x0,goal,weight,A,b)
' H/ D7 ?7 H7 u[x,fval]= fgoalattain('fun',x0,goal,weight,A,b,Aeq,beq)
. \& o3 c/ \, ^+ h[x,fval]= fgoalattain('fun',x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon) # p) A( @' d" Y+ k7 I0 }* Y: h
( w* V; p) ?" D4 h; g1 {6 t
9 p" J& W9 m3 w- t- s要完整掌握其用法,请用 help fgoalattain 或 type fgoalattain 查询相关的帮助。0 C# P2 ?0 e! z6 A' B" h3 Y
例 5 求解多目标线性规划问题
. \) N) O( E* W8 ]" J/ Y" P+ l* W$ z# B$ F+ k, X' }
![]()
5 D! ]4 D3 f" h
& h% ~# L3 ^( d& P解 (i)编写 M 函数 Fun.m: . \; B5 x; d" K" j& V9 g
/ G3 d2 Z: [# M( Q# h% D7 M: H
function F=Fun(x); 4 n7 ~4 @" o! w! d
4 A" W# n, T) Q' O& v) YF(1)=-100*x(1)-90*x(2)-80*x(2)-70*x(4); 5 |, c+ B0 D* _ U! x7 D
8 c: E& E/ ]1 I; V! h( oF(2)=3*x(2)+2*x(4);
% G( e/ ]; V* ~& W# W
' M H* A( N" _8 U(ii)编写 M 文件 " a- y; d' U, U
! X- R+ d- N e1 _$ ha=[-1 -1 0 0
- `; M2 P( v2 i) v) O 0 0 -1 -1 " }+ N" z) R. H2 I2 R; J
3 0 2 0
8 g& c5 e2 C. g) L+ ~$ m4 } 0 3 0 2]; ! R0 U m3 F/ l/ G
b=[-30 -30 120 48]'; ' {- m7 \& B! z _; o
c1=[-100 -90 -80 -70];
5 \) H% c$ d" k/ N2 t2 }, }c2=[0 3 0 2];
- X; K; ?4 S5 f0 ~[x1,g1]=linprog(c1,a,b,[],[],zeros(4,1)) %求第一个目标函数的目标值 , j% ~/ p0 P# X7 W
[x2,g2]=linprog(c2,a,b,[],[],zeros(4,1)) %求第二个目标函数的目标值 : H9 B$ s8 n! S9 A
g3=[g1;g2] %目标goal的值
. F3 P6 U M! H1 s9 `: [[x,fval]=fgoalattain('Fun',rand(4,1),g3,abs(g3),a,b,[],[],zeros(4 ,1))
( |6 `1 Y2 B" E8 N9 g* c%这里权重weight=目标goal的绝对值
- |- g4 b9 @; P' Z- F
, Y' F# ~; o: T: N& P) O( H0 C$ k- ]就可求得问题的解。 习题- O2 L) _7 |" D9 ]' s) T
![]()
! ]. c. v! e; ]: A$ h& ~8 h
4 `* I9 E/ v5 K5 i3 \, X————————————————
) g& c: P5 y5 k5 n, h/ `版权声明:本文为CSDN博主「wamg潇潇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
# m0 \( G& k% ? y. X8 x原文链接:https://blog.csdn.net/qq_29831163/article/details/894889322 K6 r2 K* c# s2 C! w6 `
' p5 V( ?4 R6 L2 {( `8 b' [$ }# B( l- ~; o& e U; F
|
zan
|