在线时间 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.线性规划的局限性
: ?( Z( M$ I( W 只能解决一组线性约束条件下,某一目标只能是一个目标的最大或最小值的问题。
/ |; o7 t H2 F2 P% S
4 s: l* T, g5 G$ T) {, c5 C 2.实际决策中,衡量方案优劣考虑多个目标+ R8 a# z( S1 n$ Q O
这些目标中,有主要的,也有次要的;有最大值的,也有最小值的;有定量的, 也有定性的;有相互补充的,也有相互对立的,LP 则无能为力。* M# K' q9 |8 M0 ?
( ~7 j, Y- i1 n% c# J
3.目标规划(Goal Programming)
% ]$ P3 T. x7 T 美国经济学家查恩斯(A. Charnes)和库柏(W. W. Cooper)在 1961 年出版的《管理模型及线性规划的工业应用》一书中,首先提出的。
8 i1 h3 S" }- P
9 _' y# g6 `) |1 ^/ c' o0 Z" p" \ 4.求解思路 T5 \; n% e5 p' i/ F6 ?0 R* |
(1)加权系数法
$ g3 y: @$ X+ g! A, k! w 为每一目标赋一个权系数,把多目标模型转化成单一目标的模型。但困难是要确 定合理的权系数,以反映不同目标之间的重要程度。8 a4 B2 h6 r- C2 |5 e
4 p. |: W1 e- ?/ p$ c, u
(2)优先等级法
9 K0 x9 B* |0 z, q- R 将各目标按其重要程度不同的优先等级,转化为单目标模型。0 b' J, C% E( g
% ? F( o L% l' f! w" j
(3)有效解法% u& ^/ @% e" B3 F( _" t7 W/ e# R
寻求能够照顾到各个目标,并使决策者感到满意的解。由决策者来确定选取哪一个 解,即得到一个满意解。但有效解的数目太多而难以将其一一求出。 / y- K, F/ v( p
! b/ g! y+ z$ M! r. t* z5 G
2 目标规划的数学模型
/ |7 ^0 z( m3 u8 n/ H 为了具体说明目标规划与线性规划在处理问题的方法上的区别,先通过例子来介绍 目标规划的有关概念及数学模型。 R3 ^/ k0 M9 e) p' h
; a0 {' H! Q- _, \
例1 某工厂生产 I,II 两种产品,已知有关数据见下表 ,试求获利最大的生产方案。9 n1 ^# S5 Q' |# a2 V/ Y
5 L/ y( n* ?& [ 0 G2 b; a* X% @& E5 l) k/ z
, v$ p, S0 L( S3 N 解 这是一个单目标的规划问题,用线性规划模型表述为: * m# O! y1 s- g9 R$ n5 `: T7 U" C
6 @) V$ @% ` r! p4 v
: Q" _* u5 D6 M' C4 b* A" s. \ 6 k2 \' {: t! E
但实际上工厂在作决策方案时,要考虑市场等一系列其它条件。如
+ w+ B) C' Y% N! {: T& s
, s8 k) }/ R+ S9 x- ~4 k' a (i)根据市场信息,产品 I 的销售量有下降的趋势,故考虑产品 I 的产量不大于 产品 II。
0 b& p# D7 S! b7 A" d
8 Z" e) S a" r$ D) a( n$ T (ii)超过计划供应的原材料,需要高价采购,这就使成本增加。, g. r1 Q, ]! z5 N: m* l
6 i. b' h: o3 L2 v' J% U% \' S' Z0 @ (iii)应尽可能充分利用设备,但不希望加班。 / h9 ?* I" u. ?' |
/ _* D- D0 N8 q" M. m( c (iv)应尽可能达到并超过计划利润指标 56 元。
1 \( `5 C. k' ` Y6 \# h/ \ 8 U# v* J8 J& Z. I4 o+ u
这样在考虑产品决策时,便为多目标决策问题。目标规划方法是解决这类决策问题 的方法之一。下面引入与建立目标规划数学模型有关的概念。 . V4 a6 v# i! ]0 C
/ o$ ~) M6 J) ~- E3 Q0 O 1. 正、负偏差变量 : n/ H/ Q. T5 @$ P3 b+ {' s
& D6 w1 ^4 y2 R6 h, M% J4 G
. I2 s0 L# t2 B7 _2 G5 N( Q1 u , t7 R @$ P+ m
2. 绝对(刚性)约束和目标约束 $ Z I. l' c/ F/ x& C* M! d
% r% Z- b4 ]- M
7 r# g; x- b) t: r1 k
3 g- T, g- w: G1 | Z 3. 优先因子(优先等级)与权系数
7 w5 i2 S% X5 R$ q1 K
; g" U V" s% ^' z1 @ ' `5 c, Z6 A: b
! f( Z" c- ~( P! F$ a
8 n, H/ r3 A4 G* x 4. 目标规划的目标函数
* Z0 c+ D7 ]1 F7 L% [ ) }0 Q. a: T( x; I
, @% r! O/ u T. J
9 r- s* n5 w" @3 i; Y3 P( x 对每一个具体目标规划问题,可根据决策者的要求和赋于各目标的优先因子来构造目标 函数,以下用例子说明。 . h& @9 U: C" s- h% m4 }( ]1 @
: ~9 G/ Y7 D8 U( m
例 2 : 例 1 的决策者在原材料供应受严格限制的基础上考虑:首先是产品 II 的产 量不低于产品 I 的产量;其次是充分利用设备有效台时,不加班;再次是利润额不小于 56 元。求决策方案。 解 按决策者所要求的,分别赋于这三个目标 优先因子。这问题的数学模型是
9 j, ^1 m8 g% Q8 n+ c- y " E; r0 [$ I1 W6 T* X
% S5 e5 C# |, A2 ]1 H : ~3 J- z- }+ a; _
5.目标规划的一般数学模型
; o: G- P9 i& l5 x' a9 l
. o) v5 I% z: |0 h# W2 v9 R % `3 c0 v, |& F- Y
6 p. r+ H# |$ |: ~9 V
% f5 T' Z9 `9 [) p) b7 ~: Z 建立目标规划的数学模型时,需要确定目标值、优先等级、权系数等,它都具有一 定的主观性和模糊性,可以用专家评定法给以量化。
o: K( d/ R0 m
# Q0 N& m/ f* _9 Z: R8 h- O, c 3 求解目标规划的序贯式算法
- r- j8 B& {5 Y" n: U, ~0 } 序贯式算法是求解目标规划的一种早期算法,其核心是根据优先级的先后次序, 将目标规划问题分解成一系列的单目标规划问题,然后再依次求解。
( A+ b8 W7 J5 g7 f. F: [: ~- f
( M% H9 @1 P B7 f0 ?6 Q 2 `; u- _1 i. R/ \
# d6 l! U. H Q* M% h5 ~& {' _1 y, V
4 F' @ L) i3 N# r& T) h) n& m
# B ?+ t+ Y; { 注 此时最优解的概念与线性规划最优解的概念已有所不同,但为方便起见,仍 称为最优解。
( D2 J' C4 y. Q' R t. R) b
) S% R$ ~# K& ^! Q4 O 例 3 某企业生产甲、乙两种产品,需要用到 A ,B ,C 三种设备,关于产品的赢利 与使用设备的工时及限制如下表所示。问该企业应如何安排生产,才能达到下列目标:) p8 r5 {. _3 q) |$ n
/ t5 B1 ~ z7 o `
) [9 C6 q3 F1 X
) Q( C r7 |; V# s& G( L
(1)力求使利润指标不低于 1500 元;
4 J+ r" W" y/ @7 m- g
y* l) Q; m' g6 P (2)考虑到市场需求,甲、乙两种产品的产量比应尽量保持 1:2;% E7 u5 o" }% a" R' ?5 c
( S. ?* F1 F: Q9 Q ^9 R (3)设备 A为贵重设备,严格禁止超时使用;+ v4 H; ^8 ~+ l1 b3 i3 j$ p6 B
" v* e) |2 E' }# B0 }; _: K0 b (4)设备 C 可以适当加班,但要控制;设备B 既要求充分利用,又尽可能不加班。 在重要性上,设备B 是设备C 的 3 倍。3 K$ o' u% ?( [1 i" c2 X( k% S% A
7 d, G" I4 c5 @* u
建立相应的目标规划模型并求解。+ X) C0 x: Q% |% q* Q% ]/ T
( p5 ?# r# u/ m; M 解 设备 A是刚性约束,其余是柔性约束。首先,最重要的指标是企业的利润, 因此,将它的优先级列为第一级;其次,甲、乙两种产品的产量保持 1:2 的比例,列为 第二级;再次,设备 B C, 的工作时间要有所控制,列为第三级。在第三级中,设备B 的 重要性是设备C 的三倍,因此,它们的权重不一样,设备B 前的系数是设备C 前系数 的 3 倍。由此得到相应的目标规划模型。
, f) y1 G- f0 h$ I9 f# k& m + P. j. q1 Q$ O: H* K4 d6 x# D
- U* {, w6 m, n! G0 F7 B& a4 q " T# e( |$ h* i6 E
序贯算法中每个单目标问题都是一个线性规划问题,可以使用 LINGO 软件进行求 解。 求第一级目标。LINGO 程序如下:
2 s6 ]7 j* p8 |$ _: n ( O2 B- g. O2 F
model:
. x5 X- f; z! _2 N. O/ B! L6 W$ X% F( ] sets:
# y8 C3 {0 I1 s variable/1..2/:x; ' ?# U7 O8 G5 B/ I9 s" ?; n3 [
S_Con_Num/1..4/:g,dplus,dminus;
5 J: Q: Q4 C" }5 u% |/ k) [; K S_con(S_Con_Num,Variable):c;
0 U5 [: f; b+ w( C. ]6 [ endsets 8 `$ v$ @. G7 w7 N5 b* ^9 B% o
data:
4 K, b/ D/ X) R; W8 t9 n g=1500 0 16 15;
' @5 t. [3 c' V. z s& F4 l. P c=200 300 2 -1 4 0 0 5;
4 ^$ f3 V, [' e$ { enddata
" v9 b( }: C1 \$ \' N- b, x min=dminus(1);
6 e3 s3 p2 @( d1 a1 j, V/ R 2*x(1)+2*x(2)<12;
$ g8 {6 f/ o3 R: Z/ w- ?# i% ]9 J( g* G @for(S_Con_Num(i) sum(Variable(j):c(i,j)*x(j))+dminus(i)-dplus(i )=g(i)); ; C: t; v: X J# _3 o, D% r
end
8 Y# s! j5 R% h $ [# S/ q$ S P8 ^
求得 dminus(1)=0,即目标函数的最优值为 0,第一级偏差为 0。
求第二级目标,LINGO 程序如下:
model:
+ a! H# t4 Q! w) c- O9 a. ~ sets:
; b0 G5 @0 x; L6 V6 T6 Y variable/1..2/:x; 3 S, d& i7 ]5 C; w+ q
S_Con_Num/1..4/:g,dplus,dminus; 6 {& Y' v, h3 h0 ?
S_con(S_Con_Num,Variable):c;
8 _+ I/ ^ t, e* `. Y! Q endsets
) B, {7 a( l$ m( a: f, [+ S data:
) O( s7 T6 [8 C, l) w+ p, L g=1500 0 16 15;
9 W9 c. c+ Z6 Y9 M8 N) r c=200 300 2 -1 4 0 0 5; : \$ f: z& ?5 ?9 t6 }
enddata , U2 H; M1 \3 z1 y4 l
min=dplus(2)+dminus(2); !二级目标函数;
|$ u' a" A+ p' q6 f 2*x(1)+2*x(2)<12; ) T8 j+ P2 u1 \
@for(S_Con_Num(i) sum(Variable(j):c(i,j)*x(j))+dminus(i)-dplus(i )=g(i)); ( [- Z8 \% B, K( ^& Q+ z# O
dminus(1)=0;!一级目标约束;
- N0 J6 V# B) V/ `9 Y @for(variable gin(x)); " F9 B3 N: P+ {
end
; F/ d% i2 {# m& c; p
! `2 `' u# Q2 M) u8 m4 J* C 求得目标函数的最优值为 0,即第二级的偏差仍为 0。 求第三级目标,LINGO 程序如下: 9 k8 {! R$ r" }4 z H! {7 A5 \
# g3 o. @$ X' H# q( r model:
O% { t# e$ H! _$ _# f P# K/ X sets: 1 U" ^ W7 `" b+ f
variable/1..2/:x; & e: ~& P' y! i
S_Con_Num/1..4/:g,dplus,dminus;
4 T1 ]7 e+ l7 ^+ U8 ?0 u S_con(S_Con_Num,Variable):c; " ~1 p1 ? G ~7 P/ p2 g c
endsets
! ~8 k' d: }; o4 g( ^- ? data: % f \$ X: L: S/ K
g=1500 0 16 15; . w4 [9 a) e0 U, l& C# E
c=200 300 2 -1 4 0 0 5; % U/ n% M& t8 p$ Z
enddata + a5 m$ L# X- ^# G* m5 k
min=3*dplus(3)+3*dminus(3)+dplus(4); !三级目标函数; : f* u0 w. u' K/ t. M- s5 G
2*x(1)+2*x(2)<12;: Q- G9 a2 b/ D2 ]5 l1 c* Y& A
@for(S_Con_Num(i) sum(Variable(j):c(i,j)*x(j))+dminus(i)-dplus(i )=g(i));
7 r3 `8 E3 ^. p- f+ n. K: i dminus(1)=0;!一级目标约束;
9 h8 u+ X- r- C# u$ W" {9 B dplus(2)+dminus(2)=0;!二级目标约束; h& ?- y, ^. z9 r
end- m. Z& q7 |: f0 ?& I
/ i) e4 u P. G n6 ?7 @ 目标函数的最优值为29,即第三级偏差为29。
. a G( J! T) N
: a4 ^$ P# T# V! T- O+ W3 I 分析计算结果, ,因此,目标规划的最优解为 , 最优利润为1600。
, @$ |' L+ w% U+ s; w0 z7 o# h ! ~ \ t; {( n# V* @2 h
上述过程虽然给出了目标规划问题的最优解,但需要连续编几个程序,这样在使 用时不方便,下面用 LINGO 软件,编写一个通用的程序,在程序中用到数据段未知数 据的编程方法。& ?. A$ {6 F& ?/ T& R
4 H+ I6 Z; ]+ k; ]6 X: r1 a1 `- P0 ? 例 4(续例 3) 按照序贯式算法,编写求解例 3 的通用 LINGO 程序。! f. Z* P! q r/ I# M) Z- |
& u4 X- n! O3 T
model:
( I& t/ G. d$ l8 C: P2 \ sets: ! |$ _! y, z K7 l; l& J; q
level/1..3/:p,z,goal; ' K) I/ E1 E! |
variable/1..2/:x;
. Z. Z' I& j% I" U- u" k h_con_num/1..1/:b;
8 l, p0 q6 J8 r* l, N s_con_num/1..4/:g,dplus,dminus;
: m) Q: w7 N/ U! j" @ h_con(h_con_num,variable):a; ; p: O, M5 J# b( g6 e* x7 f
s_con(s_con_num,variable):c; 0 K- K6 q( f( C: }! ^
obj(level,s_con_num)/1 1,2 2,3 3,3 4/:wplus,wminus;
' a2 x. y1 V2 i% z9 ` endsets
* D6 N/ X, p, M `: q data: : i6 `, E8 ~7 [: _) E) x5 c$ N2 h
ctr=?;
6 z2 x! e, X' o! e goal=? ? 0;
5 F. @9 \; `2 H) \. N0 R b=12; ) y& v. P" K% N3 y8 c
g=1500 0 16 15;
5 ~* E0 h: g+ w2 u. m$ x1 X a=2 2;
0 z" v; m* ^/ j6 X c=200 300 2 -1 4 0 0 5;
( r8 ?6 T- m+ X/ h9 R/ y wplus=0 1 3 1; - d* U) g- L0 {/ ? Q% e
wminus=1 1 3 0;
: {# l7 G i" T$ P% Y: w enddata
: E5 S: ?; K; y& y! K$ p min=@sum(level:p*z);
* x* t& S5 j+ q# U3 @. y p(ctr)=1;
) Q, h" s; [" b7 h( e \* r @for(level(i)|i#ne#ctr:p(i)=0);
2 S7 A+ J0 }- }/ g @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))); $ `6 B+ Q L! J4 Y
end 6 L5 c7 ^7 A6 b! q0 G5 ]$ N
; }1 H1 [, w2 R+ X
0 P. I# w7 s3 d
2 x" E& r& z5 N% T: c
' e" J' k1 l+ Z J, |; m( T) p
$ p* {6 K! n+ n& n
4 多标规划的 Matlab 解法 多目标规划可以归结为
* ~" T) L3 z# u
" w$ _+ l$ _, @5 |. e4 c 2 {% r8 M5 G" e5 @6 Y* N5 u
[x,fval]= fgoalattain('fun',x0,goal,weight)
8 t: ~2 n! ?( s. m4 R6 z$ G [x,fval]= fgoalattain('fun',x0,goal,weight,A,b) . z) S! x) T6 b% N$ C( F" }" X
[x,fval]= fgoalattain('fun',x0,goal,weight,A,b,Aeq,beq)
6 n6 y; L. z" H6 A [x,fval]= fgoalattain('fun',x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon)
. d) z+ \9 N1 k8 }* ^, w
( o2 Q& ] t: R5 e" B. f- U
& p# z4 x! B p+ Y; ^4 B# i! y 要完整掌握其用法,请用 help fgoalattain 或 type fgoalattain 查询相关的帮助。
5 ] \3 Z. x% e9 s Y3 s 例 5 求解多目标线性规划问题 9 P7 O# C) |/ J$ u
; i' w: P( z4 g" { 7 N" }! `- v; D1 m7 m. k5 M
$ t& _; p" T3 N! `+ S
解 (i)编写 M 函数 Fun.m: , _* R+ i# v; [# k* S" F$ Y+ \
" W& Z) i# g& h' F5 f
function F=Fun(x); / I7 ^( D8 G& [1 C9 E7 }: n7 |
2 N' g9 e; Z# C+ I* O! l2 H
F(1)=-100*x(1)-90*x(2)-80*x(2)-70*x(4);
4 H3 u4 Z- E, l# D6 G % v' |* A- {% v/ w
F(2)=3*x(2)+2*x(4);
" _, Z9 t7 I' K! c, B( Q9 n5 `: e' T
8 m$ Y2 Q# n5 A, i7 Y (ii)编写 M 文件 9 J0 F9 y. U8 ?& x" H5 m
3 A' E# p/ Z `7 I9 Y) v* Q" \1 H# l a=[-1 -1 0 0 & T2 C2 J K8 k$ c( ^6 q) H4 u
0 0 -1 -1
+ S' F+ K% t0 @* [( ?4 e; f+ q 3 0 2 0
1 M8 Q |* _% [8 } 0 3 0 2]; % k/ j* f) P) {# T3 W
b=[-30 -30 120 48]'; . w2 [& H/ f2 {
c1=[-100 -90 -80 -70]; 1 g# X! A8 r* B8 {
c2=[0 3 0 2]; " e( d. K3 y9 o4 n5 ^. |) m
[x1,g1]=linprog(c1,a,b,[],[],zeros(4,1)) %求第一个目标函数的目标值 " t- I' W5 `3 C1 d4 N8 O
[x2,g2]=linprog(c2,a,b,[],[],zeros(4,1)) %求第二个目标函数的目标值
" s3 P& T B/ u% ?7 g g3=[g1;g2] %目标goal的值
8 S, t7 x) t" {9 D5 ?, ` [x,fval]=fgoalattain('Fun',rand(4,1),g3,abs(g3),a,b,[],[],zeros(4 ,1)) 5 J# A+ g" n1 m* |- u
%这里权重weight=目标goal的绝对值
. k$ d1 e: `& k7 g. Q. Q, ?
$ k+ @( o7 x7 P% h$ _ 就可求得问题的解。
习题
& h( t2 U& z& O; v9 t& K 7 n) U" q- \8 b4 s
# Y( A" b% W% y( H8 D& V1 _) Y
————————————————
2 f) F5 C% u7 w3 d( X- I ? 版权声明:本文为CSDN博主「wamg潇潇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 e: y4 ? i% z
原文链接:https://blog.csdn.net/qq_29831163/article/details/89488932' c- f5 x T) [" ?8 o
6 p9 }$ M# r; J; s4 R6 m . F9 s9 @1 x. G* w
zan