作者jiing24 (house salesman)
看板MATLAB
标题Re: [讨论] 请教向量化写法
时间Thu May 16 11:57:51 2013
Nsol 是Number of solutions
Nvar 是 Number of variable
Cg 是一个门槛值,在此为 0.55
Cp 是一个门槛值,在此为 0.75
Cw 是一个门槛值,在此为 0.95
Nvar = 20;
Nsol = 150;
Cg = 0.55;
Cp = 0.75;
Cw = 0.95;
这段code是Simplified Swarm Optimization Algorithm的核心
※ 引述《jiing24 (house salesman)》之铭言:
: 这是我原本的写法
: for sol=1:Nsol
: for var=1:Nvar
: random_number=rand;
: if random_number < Cg
: X(sol,var)=pX(gBest,var);
: elseif random_number< Cp
: X(sol,var)=pX(sol,var);
: elseif random_number < Cw
: continue;
: else
: X(sol,var)=rand*(UB-LB)+LB;
: end
: end
: end
: 我想改成向量写法,结果我写成这样,但答案行为好像不对
: for sol=1:Nsol
: random_numbers= rand(1,Nvar);
: cols = find(random_numbers < Cg );
: X([sol,cols]) = pX([gBest,cols]);
: cols = find( (random_numbers >= Cg) & (random_numbers < Cp) );
: X([sol,cols]) = pX([sol,cols]);
: cols = find( random_numbers >= Cw);
: X([sol,cols]) = rand(size(X([sol,cols]))).*(UB-LB)+LB;
: end
: 可否帮我看看我哪里写错了,看了好久看不出来
: 感谢!
--
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.37.189.237
1F:→ jiing24:UB=5.12, LB=-5.12,为数值上界和下界 05/16 11:59
2F:→ jiing24:gBest是表现最好的那一列,其它程式码没有列出来 05/16 12:00
3F:→ jiing24:一个solution有N个variable 05/16 12:01