数学建模社区-数学中国
标题:
关于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 v
7 ~. ~% h1 Q0 }
v = 630589; % 求解v为630589的收入水平情况
& i1 F8 a3 z4 X% }* I% B
DEBUG = 0;
) d4 M0 ~+ f) G1 x3 I- i+ m3 C
rand('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: A
p_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 K
Aeq=[1,1,1,0,0,0];
8 M1 K( T% e% m3 U
beq=1;
% h/ E& j2 d3 Q4 \& D+ g4 D
a_lb=[10,4,3,4,2];
) w$ x. s% B" ` J
b_ub=[233,54,17,20,10];
% X$ Y0 s7 L9 P, x) e" a- p
A= [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 S
b= [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& E
ub=[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* l
if DEBUG == 1
/ o( ^2 K1 x3 C' b4 r" g- i9 ^
output_meta_result = [];
& p( p- n; L3 l* P/ y
end
4 ~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 == 1
4 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& ]
end
0 T: C Q. w. N0 c6 [
end
' X6 A$ g( T. [* P
% 把求得的最好结果保存下来
/ C% b5 E" n0 h* `2 G; ~6 }" B
if ~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 { {" g
else
" 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
end
5 ^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