数学建模社区-数学中国
标题:
有没有哪位高人会用动态规划来解线性规划的题? 附题一道
[打印本页]
作者:
zhaobener
时间:
2011-3-17 11:29
标题:
有没有哪位高人会用动态规划来解线性规划的题? 附题一道
Max Z=3 x1 + 7 x2 + 6 f(x3)subject to
, R$ K" C/ o' }% ?6 {8 f
x1 + 3 x2 + 2 x3 <= 6
% V5 ~" U4 T* g- w; u, f& u0 b
x1 + x2 <= 5
! M1 ]- E# E, h0 I
and
* |% L& M9 b0 T, K: r. v* W
x1>=0; x2>=0; x3>=0
; \- U6 x1 g- U; f3 B/ u9 O k! b
4 Z; L3 k0 r M8 p( h4 }" x d
当 x3=0 时 f(x3)=0; 当x3>0时, f(x3)= -1 + x3
6 X8 m7 r- ~# D
& {- K7 @# |+ b2 L
用动态规划来解 谢谢(lingo之类的我知道如何求解 主要想知道计算过程)
3 @/ W+ [' u& S% W- [9 u* O7 F
作者:
jerrybond6
时间:
2011-3-17 16:41
本帖最后由 jerrybond6 于 2011-3-17 16:45 编辑
1 B! t2 p) f E" C; R
! M0 U6 N/ O& `9 l7 B ?
根据 s.t.可知 :
$ w8 [- E V' m" v1 Z
0<=x1<=5;
6 f# {8 A1 q9 e9 o
0<=x2<=2;
3 Y: ?/ P# n. q$ L* ?- T
0<=x3<=3;
3 S' t% Y1 z$ I
; K* p0 ~. K- L! O0 F2 S
动态规划过程如下:
4 Y; Z# c0 E+ t
; D! j0 o% Z; a. L; \2 U0 D
int dp[6][3][4], maxn, tmp, ans;
8 B/ L0 i: c* t6 g1 |! s
7 Y0 u1 p. C5 X) Y7 Q" P* d& h
memset(dp,0,sizoef(dp));
6 C" F% u+ _5 y9 @4 G2 ^
9 q0 M! V# q3 P0 N! B4 D
for (i=0;i<=5;i++)
0 l7 ]0 Q* X) R$ }
for (j=0;j<=2;j++)
/ E' }. T. R8 X5 b. m: y3 i
for (k=0;k<=3;k++)
8 I. V" ` b+ `7 h8 D6 T
{
1 Y- }" Z9 E/ ]2 a, l, n
maxn=0;
. Z6 [: ~) W& i/ U+ j" H' m7 U
if (i>0)
* T; k3 n2 R. S
{
. o; F; V9 i3 U$ I
tmp=dp[i-1][j][k]+3;
7 F% B4 H& n0 X! m
if (tmp>maxn)
% d' G- s c; O& M; Y3 }! ?7 |2 }
maxn=tmp;
6 _. R! ]9 L! Z( q- u4 @, h
}
# `2 g7 A' @& U2 s3 ^( N
if (j>0)
1 `. E# o7 s0 } D+ n; ?1 l0 U
{
3 b. I; j: \/ N# Z
tmp=dp
[j-1][k]+7;
! T- D! |, n1 n9 d% h5 g2 F( k% |
if (tmp>maxn)
- q3 v5 V& I( d( |0 w; F
maxn=tmp;
2 T& B& F; G6 S/ I0 }# o/ d( x
}
, B6 [. o1 K1 a8 o9 ?6 Y
if (k>0)
( k W( |: }/ G' m* G- m$ x% \
{
% E( v& e5 H- N5 k0 y8 ~4 I
tmp=dp
[j][k-1]+6;
. h( Q' N [+ F
if (tmp>maxn)
# V4 Z$ U7 z o3 K* t( N0 B
maxn=tmp;
# L1 m$ c1 [2 q! n' T
}
. o: I- `; b8 s" x' l. ~ D
dp
[j][k]=maxn;
1 Z) G: c. D0 S Y5 g& E+ J
}
3 b/ B: B+ L1 G, ?4 `, c
1 B4 I# a8 a8 H* Y0 m
ans=0;
0 v# s$ ?1 d u
for (i=0;i<=5;i++)
; y B( }: U' a$ K" r7 F2 t7 g4 ]
for (j=0;j<=2;j++)
+ I6 j& R/ M6 a6 M I- I$ D
for (k=0;k<=3;k++)
! ]) x7 s7 R+ D( Z! i5 h! K6 K* ~
{
$ y( \0 F8 S& n
if (i+3*j+2*k>6)
3 m8 V6 L; q2 J/ ]. j' R0 T: [
continue;
5 x1 h! p; w7 q `
if (i+j>5)
5 a, A+ z. }0 d+ ^/ }' H# g8 ^
continue;
: C, _5 z+ w2 x: O2 c
tmp=dp
[j][k];
2 A( v0 y8 k" n/ q$ s. g2 l- d/ Q
if (k>0)
! O: P& ~- o/ T( w
tmp-=6;
9 Q$ E, U; ?* t# u2 s1 i4 Q+ L4 s
if (tmp>ans)
s1 x- J, f2 B; ?2 F1 |
ans=tmp;
8 F' J$ D/ y8 B) Y
}
" ?! O4 k/ s. ^ h1 q! H
printf("%d\n", ans);
% v! B! H7 d) n- @3 _5 C
ans极为目标函数的最大值。
, [+ @6 @: R, y0 r! J+ S7 ~0 x
作者:
jerrybond6
时间:
2011-3-17 16:46
本帖最后由 jerrybond6 于 2011-3-17 16:50 编辑
9 A1 B, v1 H" R" V1 [' H
" g; Q+ P; a2 I" l. z: T
网页有点问题哈 数组有的地方显示的是2维 应该是3维 你自己琢磨琢磨哈 要是不明白想知道对不对 自己拿程序照着写一个 跑一下 和lingo对比一下就知道了
作者:
gaoshanliu水
时间:
2011-3-17 22:19
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5