ZKX's LAB

pso的约束优化 python求解无约束最优化问题

2021-04-04知识11

在MATLAB中用神经网络算法求解无约束最优化问题 程序一:GA训练BP权值的主函数 function net=GABPNET(XX,YY)%使用遗传算法对BP网络权值阈值进行优化,再用BP算法训练网络%数据归一化预处理 nntwarn off XX=[1:19;2:20;3:21;4:22]';YY=[1:4];XX=premnmx(XX);YY=premnmx(YY);YY%创建网络 net=newff(minmax(XX),[19,25,1],{'tansig','tansig','purelin'},'trainlm');下面使用遗传算法对网络进行优化 P=XX;T=YY;R=size(P,1);S2=size(T,1);S1=25;隐含层节点数 S=R*S1+S1*S2+S1+S2;遗传算法编码长度 aa=ones(S,1)*[-1,1];popu=50;种群规模 save data2 XX YY%是将 xx,yy 二个变数的数值存入 data2 这个MAT-file,initPpp=initializega(popu,aa,'gabpEval');初始化种群 gen=100;遗传代数%下面调用gaot工具箱,其中目标函数定义为gabpEval[x,endPop,bPop,trace]=ga(aa,'gabpEval',[],initPpp,[1e-6 1 1],'maxGenTerm',gen,.'normGeomSelect',[0.09],['arithXover'],[2],'nonUnifMutation',[2 gen 3]);绘收敛曲线图 figure(1)plot(trace(:,1),1./trace(:,3),'r-');hold on plot(trace(:,1),1./trace(:,2),'b-');xlabel('Generation');ylabel('Sum-Squared Error');figure(2)plot(trace(:,1),trace(:,3),'r-');hold on plot。

有约束最优化问题,用matlab求解 假设最优时候的a1不等于a2,那么取a1'=a2'=max{a1,a2}将是更优的解。因此,最优时候的a1与a2必定相等。给定角加速度a时,加速时间越长那么转过的角度越多。在加速度不大于0.5g的约束下,加速时间最多可以是:加速与减速过程所转过的角度是a*t(a)^2,是个随a递减的函数。假设最优时候的角加速度为a,加速时间t(a),那么可以增大a到某个值a',加速时间为t(a'),使得a'*t(a')^2=at^2。因此,最优时候的加速时间必取到最大值。综上,可得最终优化式子:代码如下:g=9.8;r=.056;t=(a)(g^2/(4*r^2*a^4)-1/a^2)^(1/4);f=(a)t(a)+22.2/a/t(a);a=fminsearch(f,1e-6);fprintf('a1=a2=f\\nt1=t3=f\\nt2=f\\n',a,t(a),22.2/a/t(a)-t(a))

pso的约束优化 约束优化问题的目标是在满足一组线性或非线性约束的条件下,找到使得适应值函数最优的解。对于约束优化问题,需要对原始PSO算法进行改进来处理约束。一种简单的方法是,所有的微粒初始化时都从可行解开始,在更新过程中,仅需记住在可行空间中的位置,抛弃那些不可行解即可。该方法的缺点是对于某些问题,初始的可行解集很难找到。或者,当微粒位置超出可行范围时,可将微粒位置重置为之前找到的最好位置,这种简单的修正就能成功找到一系列Benchmark问题的最优解。Paquet让微粒在运动过程中保持线性约束,从而得到一种可以解决线性约束优化问题的PSO算法。Pulido引入扰动算子和约束处理机制来处理约束优化问题。Park提出一种改进的PSO算法来处理等式约束和不等式约束。另一种简单的方法是使用惩罚函数将约束优化问题转变为无约束优化问题,之后再使用PSO算法来进行求解。Shi将约束优化问题转化为最小—最大问题,并使用两个共同进化的微粒群来对其求解。谭瑛提出一种双微粒群的PSO算法,通过在微粒群间引入目标信息与约束信息项来解决在满足约束条件下求解目标函数的最优化问题。Zavala在PSO算法中引入两个扰动算子,用来解决单目标约束优化问题。第三种方法是采用修复策略,。

#python求解非线性最优化问题#python求解无约束最优化问题

随机阅读

qrcode
访问手机版