数学建模社区-数学中国
标题:
关于debug的问题 。。。。
[打印本页]
作者:
Bojay
时间:
2012-7-22 13:27
标题:
关于debug的问题 。。。。
这是02年CUMCU 彩票问题
debug看懂是什么意思 求大神指点!!
$ G% _4 P# v6 a7 U$ [( ], E
' I; U* b$ A* W) l3 P5 b
global v
; ?1 @6 F% e) P2 W) L
v = 630589; % 求解v为630589的收入水平情况
! S) T( T5 D7 z/ w% w$ [
DEBUG = 0;
- {6 s& J5 m2 _3 _4 k! {" U
rand('state',sum(100*clock)) % 初始化随机数生成器
2 z! v2 l/ j" G, W" J9 L c
format long g
% [1 {/ \5 N' Z S2 ?
) M8 A$ ]8 `' x" F
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ J1 W n* [6 s8 U( Q5 s
% 求解开始
( m. T& [# [6 w& ? v. _
% 对于K1型
* r4 B8 s4 d# L8 ~# |8 Z' J
p_k1 = [2e-7;8e-7;1.8e-5;2.61e-4;3.42e-3;4.1995e-2];
4 K: L* {% p9 \$ O, d
% 6个奖项6个变量
. ?5 D( ^( l9 k" Z
Aeq=[1,1,1,0,0,0];
1 ]1 E& w' w2 O9 P* `8 Y
beq=1;
& w& J5 J' ^1 _+ s
a_lb=[10,4,3,4,2];
7 U& M/ x) z7 T4 l0 ]( k
b_ub=[233,54,17,20,10];
- M- M: l/ ~4 ?- @% T
A= [0,0,0,-1,a_lb(4),0;
- p6 P1 ^3 K/ T M9 ?; T8 g' N
0,0,0,1,-b_ub(4),0;
; x* K$ Q/ a3 U2 U( V. r& I
0,0,0,0,-1,a_lb(5);
) \$ x, W* i9 U5 E) ~0 p- p7 O |
0,0,0,0,1,-b_ub(5)];
! [# h0 B9 p: t. y! k
b= [0;0;0;0];
- Z! E; \1 |; N' M5 {* z# U$ M
lb=[0.5;0;0;0;0;0];
: r! T" n5 `9 {- J7 c: L" i
ub=[0.8;1;1;inf;inf;inf];
) Q+ q: Z# ?( f/ ` g( M6 u
p_test = p_k1;
. A z/ Y/ ~. S# Y/ h& t
rx0_tmp = zeros(6,1);
: z- F# ^( `& Z
rx_meta_result = zeros(6,1);
5 A9 B! b0 p6 S+ p+ i
fval_meta_result = inf;
& b4 X) {+ d8 F `, `
flag_meta_result = nan; %用以判断有没有得到过可行解
7 V" e" ?. V5 E8 G9 M! E
if DEBUG == 1
( P4 V% a1 j; F3 r4 p: |/ d
output_meta_result = [];
4 j* g+ c" z9 v2 K [
end
) s& ~2 n0 c, J8 a% C1 J
for j = 1:nums_test_of_initial_value
) ~0 q* }- n5 ?9 i1 J
%随机生成多个初始值rx0_tmp,以避免局部最优
; O3 v/ u% K" U; i- ]7 H4 y
rx0_tmp(1) = rand*(0.8-0.5) + 0.5;
, N: X+ ?! g; A1 Q9 Y" B
rx0_tmp(2) = rand*(1-rx0_tmp(1));
! j5 c% R: m; r9 J
rx0_tmp(3) = 1 - rx0_tmp(1) - rx0_tmp(2);
+ k, @) n7 Y6 v. t: `
rx0_tmp(4) = rand*1000;
# m) E% k1 P' E+ P y
rx0_tmp(5) = rand*100;
% d6 q# R" K) ^, ~# h
rx0_tmp(6) = rand*50;
& r# |" [" Y( P$ J6 f
% 寻优
% K1 f+ r' e; ^. s' v
[rx_tmp,fval_tmp,flag_tmp,output_tmp]= ...
2 ^* ?8 W2 \$ W3 J ?- f5 X
fmincon('cpiao',rx0_tmp,A,b,...
5 e O) O% Q) r' _
Aeq,beq,lb,ub,'nonlcon',[],1,p_test,a_lb,b_ub);
% U+ O, `( R( l' e) [% t
% 上式倒数第四个参数是为了区分彩票的类型(K1/K2/K3/K4)
" A% t( a% t0 o7 B5 [* ~; J K# ]( e
% 最后三个是函数cpiao和nonlcon计算中可能要用到的量。
5 y0 P7 z: P) o9 p/ h; H( K0 S
if (flag_tmp == 1) && (fval_meta_result > fval_tmp)
* I8 A# Z8 Z0 b; j5 z: M
fval_meta_result = fval_tmp;
$ m7 L2 a/ A- r7 Y
rx_meta_result = rx_tmp;
1 q- u& S" q/ x
flag_meta_result = 1;
3 y/ V% h& ? H
if DEBUG == 1
4 r" ~. j/ r2 Z }& Z. C( W
output_meta_result = output_tmp;
* ~& X5 c" L0 E
end
1 }- i5 i. F: n% ]/ K, ]$ G! h$ f
end
/ |* ~5 {' P; B8 J1 r
end
, B! W. y7 y8 Q* [! p$ v G
% 把求得的最好结果保存下来
/ E' C! @4 g! z; f+ m
if ~isnan(flag_meta_result)
# u. _' s' U8 r. f2 V) m1 N& V
rx_k1 = rx_meta_result;
/ u: i: y8 ~8 Z! D {
fval_k1 = fval_meta_result;
) c+ ]4 }3 {7 O8 l( l. l, p
flag_k1 = flag_meta_result;
1 L" ~7 n _- s' c0 Q
if DEBUG == 1
4 `0 N% E( x4 o2 T
output = output_meta_result;
) F. ?0 i+ o4 R5 M/ Q) O% i8 V. J$ B
end
4 `/ ` R6 A3 P A; J# N. u& J3 }' R
else
' U# _* h4 F* K/ J- @6 b! n4 _
if DEBUG == 1
9 z# D1 y* |, a9 `4 x2 f
rx_k1 = rx_tmp;
- a8 x# F/ n l$ e
fval_k1 = fval_tmp;
% u3 \( u/ Z* E/ `8 _* [; b
flag_k1 = flag_tmp;
/ ?8 j7 n; Q- K) t) S1 ]
output = output_tmp;
& ?4 V1 X, | G+ J- ]7 B
end
( e) Q3 o% A' Q: @5 p# U
end
8 D3 I( X9 }& M# L
作者:
Bojay
时间:
2012-7-24 22:49
没人回答啊
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5