数学建模社区-数学中国
标题:
关于debug的问题 。。。。
[打印本页]
作者:
Bojay
时间:
2012-7-22 13:27
标题:
关于debug的问题 。。。。
这是02年CUMCU 彩票问题
debug看懂是什么意思 求大神指点!!
5 ^) K1 ~- X- A. c7 {
" G- h, |7 `' F- @5 p% A7 v/ Q8 z
global v
) _' d [% q0 G4 L3 p
v = 630589; % 求解v为630589的收入水平情况
6 r/ {! L9 x8 n# D
DEBUG = 0;
, C, ]) k B5 _# ~
rand('state',sum(100*clock)) % 初始化随机数生成器
) H: Y1 a/ y/ X/ E
format long g
# w9 m: I% l2 `" ^1 t* J+ F+ @3 N# k1 m
% C! p1 Y& a* }. _4 O: B
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ T. h) O) F& Y z D
% 求解开始
- a( f9 n5 _2 d5 c, s
% 对于K1型
% O0 a% @$ _* k
p_k1 = [2e-7;8e-7;1.8e-5;2.61e-4;3.42e-3;4.1995e-2];
5 t: T$ V; a9 y6 u0 }2 ~& M+ ~* c: D
% 6个奖项6个变量
3 b% Z6 b1 S) _: a" d
Aeq=[1,1,1,0,0,0];
, {) e% J. E! @+ e9 s* M# u
beq=1;
: U0 G; Q% l0 ~) W
a_lb=[10,4,3,4,2];
8 F2 D. L5 [8 |5 X: m# p
b_ub=[233,54,17,20,10];
. @: V$ q' V& s
A= [0,0,0,-1,a_lb(4),0;
) f3 e, w' o3 v9 |* u2 E9 T. J0 o
0,0,0,1,-b_ub(4),0;
( E2 i5 Z, O: @: P [, {
0,0,0,0,-1,a_lb(5);
" _% f. {+ ^/ p+ t/ V- |
0,0,0,0,1,-b_ub(5)];
8 e6 b( U* d1 ] x ~/ q
b= [0;0;0;0];
9 S5 K8 {# \6 Q# ]& ~
lb=[0.5;0;0;0;0;0];
# H6 Y+ n8 p. A/ F. J
ub=[0.8;1;1;inf;inf;inf];
2 v ?6 S. v! ^: }: g6 d
p_test = p_k1;
2 V3 T } j: L# @
rx0_tmp = zeros(6,1);
1 g6 ^; Y# y! K6 f) e" o
rx_meta_result = zeros(6,1);
+ a4 D( t7 |" o' c. [: p
fval_meta_result = inf;
6 M2 b6 l$ H3 z0 }
flag_meta_result = nan; %用以判断有没有得到过可行解
6 @+ `) r X! q) _
if DEBUG == 1
+ m: U& Q- U8 ~0 F$ U3 J, x7 }
output_meta_result = [];
+ y' y/ i0 m! r/ L: X( T( m5 L" h) c
end
) ?& X, g* \, ?/ I7 X8 D5 z
for j = 1:nums_test_of_initial_value
/ r$ N4 t3 Z* j) Q9 |9 I
%随机生成多个初始值rx0_tmp,以避免局部最优
$ b0 {! z+ g$ l: @9 @' t4 D
rx0_tmp(1) = rand*(0.8-0.5) + 0.5;
; L, B) J2 [2 s- A7 f2 @3 H/ T3 ~
rx0_tmp(2) = rand*(1-rx0_tmp(1));
! A% N8 U# H! F$ S. f6 m$ K% G$ k% P
rx0_tmp(3) = 1 - rx0_tmp(1) - rx0_tmp(2);
" Q. e% v2 n0 X5 X) `1 y
rx0_tmp(4) = rand*1000;
( J/ H) i" m3 m: Y6 h
rx0_tmp(5) = rand*100;
: E. X5 y9 P# M, v6 E
rx0_tmp(6) = rand*50;
' A) @( Y. o* K, q, H7 u( j
% 寻优
) f7 F/ S" Y! }/ ~
[rx_tmp,fval_tmp,flag_tmp,output_tmp]= ...
1 V5 X) |: ?+ }6 l& w) O
fmincon('cpiao',rx0_tmp,A,b,...
B3 H2 R9 W6 h8 R
Aeq,beq,lb,ub,'nonlcon',[],1,p_test,a_lb,b_ub);
8 j- g4 F$ [& Q( |% t& s
% 上式倒数第四个参数是为了区分彩票的类型(K1/K2/K3/K4)
4 G1 k' u5 }3 g6 a
% 最后三个是函数cpiao和nonlcon计算中可能要用到的量。
4 w) w4 i1 J: c6 G% |
if (flag_tmp == 1) && (fval_meta_result > fval_tmp)
% y1 Q! t( C' c- @! o \
fval_meta_result = fval_tmp;
- Z( K S& J8 e
rx_meta_result = rx_tmp;
6 y2 [8 w+ j; T3 U
flag_meta_result = 1;
4 z( s! Y8 x+ _; M. T0 s7 S' Y
if DEBUG == 1
1 R9 L+ h2 S3 z; w9 U, K& x" ~
output_meta_result = output_tmp;
$ x4 ? h% ~, Y/ D( q5 C
end
. y0 k) C: k, p
end
* Q* H; G" x: ^6 S/ V* G
end
( @" \4 E( r* F$ A& K+ x
% 把求得的最好结果保存下来
6 Y) | R# \; S" l! m: h
if ~isnan(flag_meta_result)
, Q1 X( ]4 V7 D: r0 h$ F# x- w0 @
rx_k1 = rx_meta_result;
6 V: _; X: E2 \3 Q
fval_k1 = fval_meta_result;
. D, k% m. G1 b6 F
flag_k1 = flag_meta_result;
3 F2 @; k# P' O, N0 R, {4 O
if DEBUG == 1
7 x8 K/ z4 T H2 b1 {" X% m; E
output = output_meta_result;
$ v- C: {- b8 _- w4 F c& ~6 `6 y
end
$ g" b% D1 Y5 R: P* ?( ^
else
. C0 j, N6 ?% x
if DEBUG == 1
5 ` q+ s) B" Q1 R* R% C! `
rx_k1 = rx_tmp;
$ u! G& }( _; O+ p7 w2 o* h
fval_k1 = fval_tmp;
2 {8 ~! N2 ^9 b
flag_k1 = flag_tmp;
. K& ]# V9 A8 J
output = output_tmp;
0 j1 F' A5 L( ]: g' p
end
- a! `5 c; B' o0 J" Q
end
# g' P/ p: \) u: ~/ d3 E z. H7 k/ Y" A
作者:
Bojay
时间:
2012-7-24 22:49
没人回答啊
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5