数学建模社区-数学中国

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

作者: Bojay    时间: 2012-7-22 13:27
标题: 关于debug的问题 。。。。
这是02年CUMCU 彩票问题  debug看懂是什么意思  求大神指点!!  p% _  u# D. u0 h$ V" {$ M7 u
, z- d! P! F* x5 k( f3 [
global v
. T9 L, b# u0 e9 p) n4 fv = 630589;                % 求解v为630589的收入水平情况- T7 h  D; n' J  [2 N
DEBUG = 0;, ?7 Y* E  b4 E! x" p- X
rand('state',sum(100*clock))        % 初始化随机数生成器
. q/ e5 K: v  s8 x8 f! i/ h( Bformat long g
0 M6 O' z- @2 E5 ^' \8 n: S3 _; ]( e# @/ M  |5 w
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1 c; w. O  l8 E9 B1 C* G8 n% j, [; H% 求解开始1 ^1 G+ j, m+ ?  o) U# R: u! z
% 对于K1型
5 f# M& v  a4 d1 I& v9 ]p_k1 = [2e-7;8e-7;1.8e-5;2.61e-4;3.42e-3;4.1995e-2];  d/ e  l/ X4 L
% 6个奖项6个变量
( O: v- d2 z6 ^9 J6 p& oAeq=[1,1,1,0,0,0];
( m/ S7 s( w& q+ g* mbeq=1;
) ~5 f3 A- Z% v# ~( `4 ma_lb=[10,4,3,4,2];% W2 U5 i# R* }! U6 ?* h+ d
b_ub=[233,54,17,20,10];
5 t$ ]8 J# |  h: ^7 ~A= [0,0,0,-1,a_lb(4),0;5 E8 h4 W  L9 k7 K; J8 B7 O
    0,0,0,1,-b_ub(4),0;# m3 h# Y  C0 ]  p4 c6 g8 ~9 B
    0,0,0,0,-1,a_lb(5);' T+ h) J+ i7 E; i( R
    0,0,0,0,1,-b_ub(5)];
" Y* _: y7 S8 @) p% {b= [0;0;0;0];
8 M' u+ U' _$ K/ Slb=[0.5;0;0;0;0;0];
0 A. c& l5 l# Z: gub=[0.8;1;1;inf;inf;inf];5 s, U) d) y2 k5 ^$ _0 Y) A
p_test = p_k1;% I; p8 u; M! }% }: ]; K# y
rx0_tmp = zeros(6,1);
) F. x6 }! \) l7 x* srx_meta_result = zeros(6,1);
1 B" I! K4 `! P; S! G: d5 w. kfval_meta_result = inf;
8 k4 |# e+ }$ mflag_meta_result = nan; %用以判断有没有得到过可行解
( L- c% F7 l+ |5 Kif DEBUG == 10 q2 t, a; v) [& K% P
    output_meta_result = [];+ T3 W( U2 v2 ]
end/ ]) K" x+ p( _; x
for j = 1:nums_test_of_initial_value  ~. t& R9 m' U& [  F
    %随机生成多个初始值rx0_tmp,以避免局部最优! X1 E6 J9 X# v" D# j
    rx0_tmp(1) = rand*(0.8-0.5) + 0.5;# H2 \2 Q0 `0 [8 n: y0 Q2 q' ^* ^
    rx0_tmp(2) = rand*(1-rx0_tmp(1));
0 L* [% i! _  N& u    rx0_tmp(3) = 1 - rx0_tmp(1) - rx0_tmp(2);
  S; ^9 z- s% \1 I$ r! y$ ^) J    rx0_tmp(4) = rand*1000;
& F) y0 F4 J, [    rx0_tmp(5) = rand*100;
' t8 C5 O3 _4 g2 T  H' ?- I# a    rx0_tmp(6) = rand*50;: f4 _% {6 J/ ?
    % 寻优
" P% T- T& \9 T  L5 t    [rx_tmp,fval_tmp,flag_tmp,output_tmp]= ...& v+ q  X0 A2 ~+ O2 E( F$ |
            fmincon('cpiao',rx0_tmp,A,b,...5 [* C' Y9 B7 E3 W% [: V7 z* C  M
                    Aeq,beq,lb,ub,'nonlcon',[],1,p_test,a_lb,b_ub);- N/ g8 i4 e, g: c& L4 w
        % 上式倒数第四个参数是为了区分彩票的类型(K1/K2/K3/K4)
& P8 V1 t8 t7 p% b        % 最后三个是函数cpiao和nonlcon计算中可能要用到的量。, l2 m  I- L4 S
    if (flag_tmp == 1) && (fval_meta_result > fval_tmp); I# K8 q8 u! Q) ^; I
        fval_meta_result = fval_tmp;
8 @7 n  e+ |7 w$ R, X. ?2 H        rx_meta_result = rx_tmp;
, y" I  _& W' i- K" n/ V        flag_meta_result = 1;
4 j. J$ ~% u3 v3 U* S" u        if DEBUG == 1
0 A6 p' U  v' n0 Z4 p' A+ j            output_meta_result = output_tmp;
" V8 X2 @2 F. K( _        end
. K- s- _3 O9 Y+ O: Q    end
+ j- x. {1 y# E: {' Mend) M/ B2 a% \) `7 W* k1 u
% 把求得的最好结果保存下来, |8 C2 C/ R2 X6 `- C2 g
if ~isnan(flag_meta_result)
/ O' P6 ^" L2 ?; n" o: k    rx_k1 = rx_meta_result;
; r5 u% R  g" Z. g    fval_k1 = fval_meta_result;
6 ?; d* h, o* s    flag_k1 = flag_meta_result;
1 Q2 j, q, @" K  W4 J6 f/ @    if DEBUG == 10 ]' ^& G8 O7 q- e1 T* B. b
        output = output_meta_result;
" E& F! {/ I( ]    end1 z2 f3 J0 o. Y) Q
else+ b; O. V+ @, M. z4 O1 h
    if DEBUG == 1
4 w4 t7 Q! D9 S% ?4 A2 A7 Q) G        rx_k1 = rx_tmp;
2 o" J5 S& s/ D5 s        fval_k1 = fval_tmp;
  l) |2 h) X- t, A6 l" P        flag_k1 = flag_tmp;% }4 ^2 O3 m7 [' i+ O# C
        output = output_tmp;9 @1 z  W* s; I4 A
    end! B. ?4 H% Z  w6 d& n% x5 {9 ]
end
! e# P$ B( q4 M& g" U
作者: Bojay    时间: 2012-7-24 22:49
没人回答啊




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