数学建模社区-数学中国
标题:
关于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 f
v = 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( B
format long g
0 M6 O' z- @2 E5 ^' \8 n: S
3 _; ]( 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& o
Aeq=[1,1,1,0,0,0];
( m/ S7 s( w& q+ g* m
beq=1;
) ~5 f3 A- Z% v# ~( `4 m
a_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/ S
lb=[0.5;0;0;0;0;0];
0 A. c& l5 l# Z: g
ub=[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* s
rx_meta_result = zeros(6,1);
1 B" I! K4 `! P; S! G: d5 w. k
fval_meta_result = inf;
8 k4 |# e+ }$ m
flag_meta_result = nan; %用以判断有没有得到过可行解
( L- c% F7 l+ |5 K
if DEBUG == 1
0 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: {' M
end
) 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 == 1
0 ]' ^& G8 O7 q- e1 T* B. b
output = output_meta_result;
" E& F! {/ I( ]
end
1 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