数学建模社区-数学中国
标题:
关于debug的问题 。。。。
[打印本页]
作者:
Bojay
时间:
2012-7-22 13:27
标题:
关于debug的问题 。。。。
这是02年CUMCU 彩票问题
debug看懂是什么意思 求大神指点!!
. V) H- q. c5 ?$ A
: V6 k, G4 H, V4 K
global v
9 X& G3 U/ B, P- Y3 ~( U
v = 630589; % 求解v为630589的收入水平情况
% S2 ]. J7 Y8 p: g3 Y
DEBUG = 0;
* O, o: i: A- r; r$ R0 I- g
rand('state',sum(100*clock)) % 初始化随机数生成器
: n' {/ p2 i5 c) X v: F
format long g
4 z \) V, w: J- J8 o: v. j4 c
' X6 J6 s+ `! _* A. E) D
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ G$ Q9 _/ \5 d
% 求解开始
* O4 `0 ]6 i% F6 l- ~) }
% 对于K1型
( [+ H% G4 W; B" R: ]& m; v8 R8 u" x
p_k1 = [2e-7;8e-7;1.8e-5;2.61e-4;3.42e-3;4.1995e-2];
. d4 [. ~- x) R, W/ i/ X
% 6个奖项6个变量
; Q' e" I ^% B! x
Aeq=[1,1,1,0,0,0];
' r Q% t+ R* G2 w' i
beq=1;
( { j9 p, G0 h9 f
a_lb=[10,4,3,4,2];
1 n) K7 n# h) Z' M' N
b_ub=[233,54,17,20,10];
. Z: L) b# Y2 P8 {& |0 G+ W
A= [0,0,0,-1,a_lb(4),0;
( d6 P" s3 }2 j
0,0,0,1,-b_ub(4),0;
4 c4 W! t8 _6 x$ y
0,0,0,0,-1,a_lb(5);
# }. [- J0 E1 w: k H" \
0,0,0,0,1,-b_ub(5)];
2 D8 F; X5 [9 M; i; d5 M' `8 v. l* I
b= [0;0;0;0];
# K3 q, B t e9 q
lb=[0.5;0;0;0;0;0];
5 l# Q8 Y) V; \# h3 E
ub=[0.8;1;1;inf;inf;inf];
' W# ]' t/ M5 w) v
p_test = p_k1;
3 j& h" I4 M! A" O) @. C
rx0_tmp = zeros(6,1);
3 y# z; l8 C/ p" `4 K
rx_meta_result = zeros(6,1);
6 {" d' ^% M3 B: c# \% G
fval_meta_result = inf;
9 R6 g$ G& L. I+ d# B
flag_meta_result = nan; %用以判断有没有得到过可行解
# W* }9 y& q) _7 W
if DEBUG == 1
& {$ ?2 C# \. N* B6 y2 {' H
output_meta_result = [];
+ C0 |5 K0 J$ o3 B9 K: v. J( s
end
* K% m; a: P+ H
for j = 1:nums_test_of_initial_value
2 h" s# I; G2 h% n! y
%随机生成多个初始值rx0_tmp,以避免局部最优
) S, \. E/ Z8 V+ v
rx0_tmp(1) = rand*(0.8-0.5) + 0.5;
P8 r; C6 M( r9 c' j5 T
rx0_tmp(2) = rand*(1-rx0_tmp(1));
- t, |, u- u( M
rx0_tmp(3) = 1 - rx0_tmp(1) - rx0_tmp(2);
% H( G( e- s; n3 `% c
rx0_tmp(4) = rand*1000;
# E9 C4 @ i+ u9 T6 G. j
rx0_tmp(5) = rand*100;
4 ^4 i2 R* [" p/ S3 n) e
rx0_tmp(6) = rand*50;
% a# z& @7 k6 G* D( a
% 寻优
, r' V$ f: \5 X8 {
[rx_tmp,fval_tmp,flag_tmp,output_tmp]= ...
, v8 D8 Z4 m9 l+ e
fmincon('cpiao',rx0_tmp,A,b,...
: Z$ k3 z6 k6 C# n
Aeq,beq,lb,ub,'nonlcon',[],1,p_test,a_lb,b_ub);
4 u! z! b& F! L4 d5 W% e% I" K; r
% 上式倒数第四个参数是为了区分彩票的类型(K1/K2/K3/K4)
8 t$ N, N4 g. b6 U* Q" C+ @! H
% 最后三个是函数cpiao和nonlcon计算中可能要用到的量。
! s/ r; d& ]2 S
if (flag_tmp == 1) && (fval_meta_result > fval_tmp)
0 I" n" b# _( V+ m" n) w
fval_meta_result = fval_tmp;
6 _4 c/ e0 \5 f
rx_meta_result = rx_tmp;
! d& M- }* ?0 U6 }' v# G
flag_meta_result = 1;
2 [* z' _7 b2 B N2 }7 F
if DEBUG == 1
6 P5 z* X I t/ z4 l6 g* u( o3 v
output_meta_result = output_tmp;
' Z) l9 J& c! b
end
' ?/ s$ v: B: r& a- E
end
% F* J ~9 F, X) v8 J( A' G
end
/ ^4 V0 c' |8 ?+ `8 t
% 把求得的最好结果保存下来
7 R; ^) ?! a" C+ B/ ?
if ~isnan(flag_meta_result)
0 j n% U+ V6 k+ G: q
rx_k1 = rx_meta_result;
, `/ M3 I2 _ h) M8 n
fval_k1 = fval_meta_result;
# Q- Y# L- a: M8 ~/ E2 x) J
flag_k1 = flag_meta_result;
( m: b3 o' S( `3 l! y* [0 u
if DEBUG == 1
5 u) j! F- n8 P* W% c2 k8 v
output = output_meta_result;
4 _) L- }" `' W+ b; }9 v
end
; q& `3 m4 n; v. |) ]8 O
else
, [, P+ b, M8 r9 q# p T# J9 _8 i
if DEBUG == 1
$ Z, ^. C8 g; k) ?1 W3 o
rx_k1 = rx_tmp;
4 U8 N0 W% W2 x7 d0 z
fval_k1 = fval_tmp;
& q, A4 C. t6 }: ?
flag_k1 = flag_tmp;
! h% A3 j! b$ P% M4 k
output = output_tmp;
! N* |* h2 Q& O* [- Z% j" V# k4 I
end
5 p; ?' V1 C: W0 j- d5 P
end
7 N# w5 r/ d% l, u7 t4 ^
作者:
Bojay
时间:
2012-7-24 22:49
没人回答啊
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5