数学建模社区-数学中国

标题: 关于debug的问题 。。。。 [打印本页]

作者: Bojay    时间: 2012-7-22 13:27
标题: 关于debug的问题 。。。。
这是02年CUMCU 彩票问题  debug看懂是什么意思  求大神指点!!; O$ L& r" R. e1 L* N$ T) b
# h* G1 E; K/ t% C! X8 [) A7 J* o( {
global v7 ~. ~% h1 Q0 }
v = 630589;                % 求解v为630589的收入水平情况
& i1 F8 a3 z4 X% }* I% BDEBUG = 0;
) d4 M0 ~+ f) G1 x3 I- i+ m3 Crand('state',sum(100*clock))        % 初始化随机数生成器, ~# q& A4 s" d: K5 t
format long g
, p8 V( l  |& N3 t& A
4 M; R3 e. V! k, B2 l% P%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$ m" ]' Y' V  n9 J8 m: {
% 求解开始6 r, t1 N! h  q' w' P0 [
% 对于K1型
6 V. S" t$ R/ H0 d' B: Ap_k1 = [2e-7;8e-7;1.8e-5;2.61e-4;3.42e-3;4.1995e-2];
+ J4 A2 j- M! S% 6个奖项6个变量
2 E3 H- X$ u/ l% n0 B; Q' U6 a% H  KAeq=[1,1,1,0,0,0];
8 M1 K( T% e% m3 Ubeq=1;% h/ E& j2 d3 Q4 \& D+ g4 D
a_lb=[10,4,3,4,2];
) w$ x. s% B" `  Jb_ub=[233,54,17,20,10];
% X$ Y0 s7 L9 P, x) e" a- pA= [0,0,0,-1,a_lb(4),0;
3 @2 \* s# K) t    0,0,0,1,-b_ub(4),0;
! `$ s- Z. g4 A! u" R' u$ l    0,0,0,0,-1,a_lb(5);
: H4 @7 N2 k: c. ?$ d: V    0,0,0,0,1,-b_ub(5)];
/ W! o/ _% W  Sb= [0;0;0;0];
" D/ u. A, v9 |5 _lb=[0.5;0;0;0;0;0];
6 `3 p/ N; Y1 V- P" e* n8 k& Eub=[0.8;1;1;inf;inf;inf];; g) @  }( t9 s! y- R9 Q9 m) i
p_test = p_k1;5 _9 E/ r) Q  B/ _' W& {1 }$ I
rx0_tmp = zeros(6,1);. P6 }. N0 p4 R9 t
rx_meta_result = zeros(6,1);" a7 W5 h5 g5 k/ I4 g. M/ b
fval_meta_result = inf;
: t# R1 R6 N* q5 I- t; }flag_meta_result = nan; %用以判断有没有得到过可行解
, r3 p8 v5 F+ s* lif DEBUG == 1/ o( ^2 K1 x3 C' b4 r" g- i9 ^
    output_meta_result = [];& p( p- n; L3 l* P/ y
end4 ~7 ?* l% d- {& I6 U! O5 r
for j = 1:nums_test_of_initial_value; n4 C) ?$ M4 j8 r/ p. \
    %随机生成多个初始值rx0_tmp,以避免局部最优; h; g# x$ @: c$ i/ Y/ J9 k3 A
    rx0_tmp(1) = rand*(0.8-0.5) + 0.5;
; h4 s1 u( C* l) A    rx0_tmp(2) = rand*(1-rx0_tmp(1));
* S# k9 B; F/ t$ D3 V  Y5 g    rx0_tmp(3) = 1 - rx0_tmp(1) - rx0_tmp(2);
: B& s0 i) j5 k' ^    rx0_tmp(4) = rand*1000;
9 |1 G9 X7 C- l+ Y# [$ w; H# A, I    rx0_tmp(5) = rand*100;
" P3 u# i+ Y1 n" I' ]    rx0_tmp(6) = rand*50;
1 x+ t- p% P3 |% L; b    % 寻优
$ z. N2 \5 @) @; `# C+ b6 r- [    [rx_tmp,fval_tmp,flag_tmp,output_tmp]= ...7 T7 i* E8 D) j% l- m' i# X
            fmincon('cpiao',rx0_tmp,A,b,..., V% ~% e, V% A8 f( D+ \
                    Aeq,beq,lb,ub,'nonlcon',[],1,p_test,a_lb,b_ub);4 O0 A) b5 G/ F: p* t% z+ i
        % 上式倒数第四个参数是为了区分彩票的类型(K1/K2/K3/K4)
; a0 _% o4 F( F  v3 L) z. V        % 最后三个是函数cpiao和nonlcon计算中可能要用到的量。
0 b- B. T, k% ~1 G# E$ H6 Y    if (flag_tmp == 1) && (fval_meta_result > fval_tmp)
5 Z& g/ ?  ?  M2 }        fval_meta_result = fval_tmp;4 U: E: X( O3 u7 p
        rx_meta_result = rx_tmp;1 A  k. I% J* V( `: w
        flag_meta_result = 1;2 c9 A7 T; R- ~9 l$ D
        if DEBUG == 14 z% S# X  T1 j6 X; R/ ~
            output_meta_result = output_tmp;5 h  B( i8 m0 V2 h- b8 n; N
        end) x) t! X. V( |; ?4 ^2 Z& ]
    end0 T: C  Q. w. N0 c6 [
end
' X6 A$ g( T. [* P% 把求得的最好结果保存下来
/ C% b5 E" n0 h* `2 G; ~6 }" Bif ~isnan(flag_meta_result)
: d# W5 g; t+ a* [; Z% i    rx_k1 = rx_meta_result;
* M  w) p( P5 F$ o6 f9 y    fval_k1 = fval_meta_result;
5 a) M) [; Z' y    flag_k1 = flag_meta_result;
/ a. `2 U+ h) V( o5 ^  D    if DEBUG == 1
) ?, N( P- @% B7 V        output = output_meta_result;
- M; w6 a) w4 `& [, b3 ^    end
* S. H5 }8 {  {" gelse
" G" Z, W7 D, e    if DEBUG == 1
( A2 v! q0 {) j7 ^! D% ~        rx_k1 = rx_tmp;  g8 Q* ^9 s0 ?) s' x* n9 r0 `
        fval_k1 = fval_tmp;% J! m3 t; i" m. p$ s% e
        flag_k1 = flag_tmp;
+ u$ q# j# I9 O" l! w$ F        output = output_tmp;
! B2 \  Y; ]- Q! [0 H8 s/ n$ o6 o8 f    end5 ^0 s* I/ ~: i! ?. D
end
+ c- q5 p+ I& S8 A5 V( J9 d
作者: Bojay    时间: 2012-7-24 22:49
没人回答啊




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5