Re: [討論] 請教向量化寫法

看板MATLAB作者 (house salesman)時間12年前 (2013/05/16 11:57), 編輯推噓0(003)
留言3則, 1人參與, 最新討論串2/2 (看更多)
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

05/16 11:59, , 1F
UB=5.12, LB=-5.12,為數值上界和下界
05/16 11:59, 1F

05/16 12:00, , 2F
gBest是表現最好的那一列,其它程式碼沒有列出來
05/16 12:00, 2F

05/16 12:01, , 3F
一個solution有N個variable
05/16 12:01, 3F
文章代碼(AID): #1Hb5b2qb (MATLAB)
討論串 (同標題文章)
文章代碼(AID): #1Hb5b2qb (MATLAB)