数学建模社区-数学中国
标题:
关于debug的问题 。。。。
[打印本页]
作者:
Bojay
时间:
2012-7-22 13:27
标题:
关于debug的问题 。。。。
这是02年CUMCU 彩票问题
debug看懂是什么意思 求大神指点!!
' R2 v, w) V( q8 ?5 t
% X5 k" O' f' Q; h" D0 J
global v
# L: j( t1 {4 W o! o5 `1 o, S6 B
v = 630589; % 求解v为630589的收入水平情况
2 |. G- A: Y. e+ U% i2 O+ X
DEBUG = 0;
8 w. b. N6 Q: {; o9 k& S4 w
rand('state',sum(100*clock)) % 初始化随机数生成器
& \( z V7 f, r! Q' G/ \
format long g
/ A1 I) @0 r9 ^ E, V9 _ t5 K
/ B6 R4 C3 k6 `7 v* W. d+ r
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0 i: y2 m; b' h. Y
% 求解开始
" I9 } O' }6 e* q! y. f
% 对于K1型
2 u/ I- G6 \4 h4 G1 l: r
p_k1 = [2e-7;8e-7;1.8e-5;2.61e-4;3.42e-3;4.1995e-2];
6 H/ p6 ?4 Z* z# N
% 6个奖项6个变量
# G& K: X" h# G. B2 U( i" p5 L1 T
Aeq=[1,1,1,0,0,0];
) G1 g- v$ z9 R' e1 `* j4 U
beq=1;
: A# n6 Q r: j0 m( S+ _0 F& d
a_lb=[10,4,3,4,2];
/ T1 i; j7 t; _4 Y' u$ m
b_ub=[233,54,17,20,10];
5 P$ [& Z1 Y4 g7 M- ~$ a7 M7 e; m
A= [0,0,0,-1,a_lb(4),0;
6 x h* E9 ?- I. F2 `4 G
0,0,0,1,-b_ub(4),0;
1 W" Y' u. M* A
0,0,0,0,-1,a_lb(5);
" y$ C& W# Y9 U5 T- }+ m, f2 b! x
0,0,0,0,1,-b_ub(5)];
, U- r& \! ]0 E- h9 b, Z5 [3 v
b= [0;0;0;0];
4 m. {) _& P% g0 e' ]- m6 p0 I: Q
lb=[0.5;0;0;0;0;0];
8 s: F1 h( v4 e3 K* q) z
ub=[0.8;1;1;inf;inf;inf];
$ ]+ r' `; p8 A* H: g+ l
p_test = p_k1;
4 r7 F O6 F% E: a: t
rx0_tmp = zeros(6,1);
( O! H* S+ b C2 {' B! t: c
rx_meta_result = zeros(6,1);
% z! N4 A) k, Q) H) w
fval_meta_result = inf;
- U1 }/ l* X1 `- j) X
flag_meta_result = nan; %用以判断有没有得到过可行解
3 F, G# ]3 [) g1 m! J) n
if DEBUG == 1
1 ?3 ~: x3 }$ ?
output_meta_result = [];
) t6 j( s$ j# L( x) a; c2 K
end
. n0 u8 l0 P1 q0 c
for j = 1:nums_test_of_initial_value
- d a8 G N" s+ d7 \
%随机生成多个初始值rx0_tmp,以避免局部最优
' T7 y/ B% g8 H! V' G; e
rx0_tmp(1) = rand*(0.8-0.5) + 0.5;
! n( {1 w7 e6 R% @0 `
rx0_tmp(2) = rand*(1-rx0_tmp(1));
q, H# {6 v3 E, S7 q
rx0_tmp(3) = 1 - rx0_tmp(1) - rx0_tmp(2);
& Z% }+ D3 C _4 X. x* G
rx0_tmp(4) = rand*1000;
0 L: X7 ?9 r+ t. X# }7 { y& A( ^) E- `
rx0_tmp(5) = rand*100;
4 C# N5 ]# M9 W$ |/ i4 N, N) I
rx0_tmp(6) = rand*50;
" p' p j E- x5 c
% 寻优
, g, ~! r9 N0 U' j
[rx_tmp,fval_tmp,flag_tmp,output_tmp]= ...
* B8 l- x* x% F4 o3 z* ~* z
fmincon('cpiao',rx0_tmp,A,b,...
" |. I! I0 W3 U0 x( u
Aeq,beq,lb,ub,'nonlcon',[],1,p_test,a_lb,b_ub);
# G( y e% \, r0 Y) W6 G
% 上式倒数第四个参数是为了区分彩票的类型(K1/K2/K3/K4)
% t8 d5 e4 F2 f1 x1 P
% 最后三个是函数cpiao和nonlcon计算中可能要用到的量。
3 N* ~. D5 {0 A9 N
if (flag_tmp == 1) && (fval_meta_result > fval_tmp)
/ `) r* S7 [$ R) S0 }6 S% H+ c! l
fval_meta_result = fval_tmp;
2 b* @; ~: W. [4 B I: a. c
rx_meta_result = rx_tmp;
1 K6 z2 ^; [! J( h2 c& i
flag_meta_result = 1;
0 i- ?3 {) E6 c( ]! o
if DEBUG == 1
! K+ N1 W& Z$ r6 E+ l+ V7 ]. ?6 w' O( v6 _
output_meta_result = output_tmp;
% s3 p$ T. h7 M2 F0 l6 X6 w
end
4 q* b4 [, ]2 x& r
end
$ \; c0 X& f ^6 {* U
end
8 ]( R! N$ ?) `5 D( R6 j" A
% 把求得的最好结果保存下来
/ E8 d2 G, e( Z
if ~isnan(flag_meta_result)
" J3 z5 o$ z* R7 u8 O
rx_k1 = rx_meta_result;
+ U- v! | @/ Y! N$ X2 m3 X
fval_k1 = fval_meta_result;
1 H5 {! {/ l5 W% L1 W* [9 I
flag_k1 = flag_meta_result;
k% |1 a2 R" R; ?: j
if DEBUG == 1
# _) x K, x1 f5 H2 h0 A6 W
output = output_meta_result;
2 y& U/ E" g" {0 {$ B M8 D
end
) w1 \7 ^- a' l3 Q# n* |( q
else
( Y- F4 Y7 C6 e, Y3 i; ?
if DEBUG == 1
2 B' W5 o" L5 ~3 I$ n M3 S
rx_k1 = rx_tmp;
; e0 w: s' ~( U* G5 ^2 }
fval_k1 = fval_tmp;
- b$ m+ ]* L: P2 Y# d6 c
flag_k1 = flag_tmp;
4 x Y6 i0 A; N3 g9 m
output = output_tmp;
5 Y. T$ r; @6 e7 e$ n! M0 @
end
4 J f5 _# o; G0 Z7 ~# c$ v% ^
end
3 x6 U. b' \& i& `7 G
作者:
Bojay
时间:
2012-7-24 22:49
没人回答啊
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5