‘壹’ 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
查看帮助文件
在程序的最右边,是一个帮助文件,如果你有什么疑问,可以直接在帮助文件中查找。