Re: [問題] 使用迴圈更改起始值 求最佳解 已回收

看板MATLAB作者 (妹妹)時間16年前 (2009/04/26 00:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
我又再想了一個辦法 昨天的邏輯怪怪的 我想將每迴圈每變動一次的函數值都與前一次比較 如果函數值比前一次小 則所有參數估計的結果都取代掉 但是問題是怎麼把這次的fval保留 與前一次fval比較勒? 怎麼把這次的theta_ml保留 與前一次theta_ml比較勒? 怎麼把第一次的比較值設為0? fval1=0; ^^^^^^^^^ 先將第一次的比較值設為0 theta_ml1=0; ^^^^^^^^^^^^^先將第一次的比較值設為0 for x=1:10 theta0=[0.1;0.1;0.1;0.1;x;10;10]; [theta_ml,fval,exitflag,output]=fmincon(f,theta0,[],[],[],[],lb,ub); if fval<fval1 ^^^^^^^^^^??? theta_ml=theta_ml1; ^^^^^^^^^^^^^^^^^^^??? end end ※ 引述《contente (妹妹)》之銘言: : 我先在c矩陣中抽出5天B和S的資料 : 接著讓參數theta0中的x、y、z起始值設為迴圈變動 : 怎麼找出每天 參數變動下 比較每個函數結果 找出函數最大的解? : global B S : lb=[0;0;0;0;0.1;0.1;0.1]; : ub=[1;1;1;1;50;50;50]; : f=@Qn4; : for i=1:5 : B=c(i:59+i,2); : S=c(i:59+i,3); : for x=20:40 : for y=1:20 : for z=1:20 : theta0=[0.1;0.1;0.1;0.1;x;y;z]; : [theta_ml,fval,exitflag,output]=fmincon(f,theta0,[],[],[],[],lb,ub); : 請問目前為止有錯嗎? 接下來我就不會寫了 : 怎麼找出每天 參數變動下 函數最大的解? : 也就是映出結果為以下的矩陣 : fval theta1 theta2 theta3 theta4 theta5 theta6 theta7 : day 1 : day 2 : day 3 : day 4 : day 5 : 謝謝大家!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.70.216.65 ※ 編輯: contente 來自: 219.70.216.65 (04/26 00:03) ※ 編輯: contente 來自: 219.70.216.65 (04/26 00:08) ※ 編輯: contente 來自: 219.70.216.65 (04/26 00:26) ※ 編輯: contente 來自: 219.70.216.65 (04/26 00:34)
文章代碼(AID): #19ypFq18 (MATLAB)
文章代碼(AID): #19ypFq18 (MATLAB)