数学建模社区-数学中国

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

作者: Bojay    时间: 2012-7-22 13:27
标题: 关于debug的问题 。。。。
这是02年CUMCU 彩票问题  debug看懂是什么意思  求大神指点!!. V) H- q. c5 ?$ A
: V6 k, G4 H, V4 K
global v9 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- grand('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" xp_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! xAeq=[1,1,1,0,0,0];
' r  Q% t+ R* G2 w' ibeq=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+ WA= [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* Ib= [0;0;0;0];# K3 q, B  t  e9 q
lb=[0.5;0;0;0;0;0];
5 l# Q8 Y) V; \# h3 Eub=[0.8;1;1;inf;inf;inf];
' W# ]' t/ M5 w) vp_test = p_k1;3 j& h" I4 M! A" O) @. C
rx0_tmp = zeros(6,1);
3 y# z; l8 C/ p" `4 Krx_meta_result = zeros(6,1);
6 {" d' ^% M3 B: c# \% Gfval_meta_result = inf;
9 R6 g$ G& L. I+ d# Bflag_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+ Hfor 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' Gend/ ^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 Oelse, [, 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    end5 p; ?' V1 C: W0 j- d5 P
end7 N# w5 r/ d% l, u7 t4 ^

作者: Bojay    时间: 2012-7-24 22:49
没人回答啊




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