matlab pso工具箱和自己写

这篇博客介绍了如何使用MATLAB进行非线性约束优化,通过主函数`diertiyouhuaqiujie`求解问题,并提供了两种方法:使用内置的PSO工具箱和自定义的粒子群优化算法。博主还给出了约束函数`mycon2`以及工具箱的下载链接和自定义求解的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

求非线性约束
主函数:
function jie=diertiyouhuaqiujie(X)
%a2长,c厚度,L长度,1/4板子数目,K宽度,h需要的高度,P*9.8木板密度,d木板宽度,MU1地面摩擦系数
a2=X(1);
Mu2=0.4;
c=X(2);
L=X(3);
n=X(4);
K=80;
h=70;
P=0.54;
a=a2./2;
d=K/(2*n+2);  
r=K/2;
Mu1=0.5;
Ggangjin=pi*9.8*((c/2)^2)*2*r*7.85*9.8;
x=sqrt(r.^2-(r-d./2).^2);
cosxita=(h-c)./(a-x);
sinxita=sqrt((a-x).^2-(h-c).^2)./(a-x);
H=(a-x-L).*cosxita;
S=2*r.*(2*sqrt((a-x).^2-(h-c).^2)+2*x);
N=1:n;
l=a-x;
% if mod(n,2)==0
%     y=sqrt(r.^2-(N*d-d./2).^2);
% else
    y=sqrt(r.^2-(N*d-d/2).^2);
% end

Ci=y+sqrt((y-x-sqrt(L.^2-(cosxita*L).^2)).^2+(cosxita*L).^2)-x-L;
L1=x+L-y-Ci;
L2=((x+L-y-Ci).^2)./2+(a./2-y+x./2+L./2)*(a-x-L)./(a-y-Ci);
sinxitai=(y-x-sqrt(L.^2-(cosxita*L).^2))./sqrt((cosxita*L).^2+(y-x-sqrt(L.^2-(cosxita*L).^2)).^2);
cosxitai=cosxita./sqrt((cosxita*L).^2+(y-x-sqrt(L.^2-(cosxita*L).^2)).^2);
G=(a-x)*c*d*P*9.8;
Gi=(a-y-Ci)*c*d*P*9.8;
% Ni=Gi.*(sinxita.*L2-cosxitai*(c/2))./(Mu2*cosxitai*(c/2)+L2);
Ni=Gi.*(sinxita.*L2)./(L2);
fi=Ni.*Mu2;
Linshi=sum((sinxitai./abs(sinxitai)).*Ni.*(((cosxitai*cosxita-sinxitai*sinxita)))./(-Mu1*cosxita+sinxita));
% F=(2*Ggangjin*L./l)*sinxita./(Mu1*cosxita+sinxita)+4*sum((sinxitai./abs(sinxitai)).*((a-P*9.8*y.*sinxitai.*L2*sinxita)./(2*L1*(Mu1*cosxita+sinxita))).*Mu1.*(cosxitai+(cosxita./sinxita)*sinxitai).*L./l)+(Mu1*cosxita./sinxita)*4*l*P*9.8*sinxita./(Mu1*cosxita+sinxita)-2*l*P*9.8*sinxita./(Mu1*cosxita+sinxita)-2*sum(((a-y)*P*9.8.*sinxitai.*L2)./(l*(Mu1*cosxita+sinxita))*sinxita);
% F=4*sum(((sinxitai./abs(sinxitai)).*(((cosxitai*cosxita-sinxitai*sinxita).*sinxitai.*L2)./(2*L1*
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值