『壹』 matlab程序運行太慢,請大神幫看看,如何優化加快運算速度!
建議:取消syms,用數值積分方法先計算積分號裡面的東西,而不要用符號積分演算法。將下面這段:
symsz
w1=mt*t0/(4*pi*M*ne*(DL*DT)^0.5);
w2=exp(x.*u/(2*DL));
B=((u*x./(2*DL)).^2+(u*y).^2/(4*DL*DT)).^0.5;
w3=2*besselk(0,B);
w5=int((1/z)*exp(-z-(B.^2/(z*4))),t*u^2/(4*DL),inf);
w4=double(w5);
替換為
w1=mt*t0/(4*pi*M*ne*(DL*DT)^0.5);
w2=exp(x.*u/(2*DL));
B=((u*x./(2*DL)).^2+(u*y).^2/(4*DL*DT)).^0.5;
w3=2*besselk(0,B);
ifun=@(z,B)(1./z).*exp(-z-(B.^2./(z*4)));
w5=integral(@(z)ifun(z,B),t*u^2/(4*DL),inf);
w4=w5;
『貳』 求matlab計算多目標優化問題。
用matlab求解題主的多目標優化問題,可以這樣來考慮:
1、創建目標函數,其內容
w1 =0.4;w2=1-w1;
y =w1*0.78539*(x(1)^2-x(2)^2)+w2*x(1)^2;
2、創建約束條件函數,其內容
c(1)=(9224400*x(1)/(x(1)^4-x(2)^4))-45;
c(2)=(13050819/(x(1)^4-x(2)^4))-1;
c(3)=216379-(x(1)^4-x(2)^4)/x(1);
c(4)=-x(1)+x(2);
ceq = [];
3、初設x0的初值,即 x0 =[80,20];
4、設定上下限值,即lb=[0,0]; ub=[170,100];
5、使用fmincon最小值最優化函數,求出x(1)、x(2)的值。即
[x,fval] = fmincon(@(x) fmincon_fun(x),x0,[],[],[],[],lb,ub,@(x) fmincon_con(x))
6、驗證約束條件,即
disp('x2-x1<0')
disp(x(2)-x(1))
運行代碼後得到如下結果。
『叄』 怎樣運用matlab解決最優化問題
打開matlab2014a程序,在主工具欄找到應用程序一欄,打開optimization選項。
問題輸入
在optimization程序中,首先根據不同的問題類型選擇不同的模型,同時輸入約束等。
選擇優化程序運行的條件
在最中間的一欄中添加優化程序運行的條件,如優化截止的標准,畫圖的要求等等。
開始運算
點擊start即可實現優化程序的運行,在圖示的框中即可出現運行結果。
5
查看幫助文件
在程序的最右邊,是一個幫助文件,如果你有什麼疑問,可以直接在幫助文件中查找。