✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
⛄ 内容介绍
本论文通过对PID控制、粒子群优化算法、船舶运动数学模型的研究,将其进行有机的结合运用于船舶航向控制。 通过对粒子群优化算法原理的分析,本文提出了一种搜索空间自适应的自适应粒子群优化算法。该算法对不同等级的粒子适应值采取不同的惯性权重,并随着算法的迭代不断地缩小粒子群的搜索空间,同时选择当前代的较优部分粒子直接进入下一代,其他粒子通过在缩小的搜索空间内随机生成。通过对一系列标准函数的测试证明了本文提出的粒子群优化算法提高了算法的收敛速度及收敛精度。
⛄ 部分代码
%% 船舶慢漂力计算函数
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%计算波浪2阶漂移力之前设置对应p-m谱的风速u和浪向角kusaiwv,船长L
function F_wave = F_lang(windspeed, angle_wave,eta)
u=windspeed;
kusai=eta(3);
kusaiwv = angle_wave;
w = 0.005:0.005:3;
s = 0.0081*9.81^2./w.^5.*exp(-0.032.*(9.81./((u.^2).*w)).^2);
A = 0.0081*9.81^2;
B = 0.74*(9.81/u)^4;
wp = 0.877*9.81/u;
sp = A*(0.75*B).^(-1.25)*exp(-1.25);
m0 = A/(4*B);
m1 = 0.306*A/B^0.75;
m2 = pi^0.5/4*A/B^0.5;
m4 = inf;
n = 40;
e = m0/n;
w0 = zeros(n-1,1);
ei = zeros(n-1,1);
wi = zeros(n/2,1);
for i=1:n-1;
ei(i) = i*e;
w0(i) = (B/log(A/(A-4*B*ei(i))))^0.25;
if rem(i,2)~=0
wi((i+1)/2) = w0(i);
end
end
ksi = (4*m0/n)^0.5;
e = 2*pi*rand(n/2,1);
L = 0.5;
alpha = kusaiwv - kusai;
thita = mod(mod(alpha,2*pi),pi);
lanmda = zeros(n/2,1);
ita = zeros(n/2,1);
for ii=1:n/2
%%
lanmda(ii) = (1.25*2*pi/wi(ii))^2;
ita(ii) = lanmda(ii)/L;
end
%漂移力系数
cxw = 0.05 - 0.20*ita + 0.75*ita.^2 - 0.51*ita.^3;
cyw = 0.46 + 6.83*ita - 15.65*ita.^2 + 8.44*ita.^3;
cnw = 0.11 + 0.68*ita - 0.79*ita.^2 + 0.21*ita.^3;
%漂移力/矩估算公式
x = zeros(n/2,1);
y = zeros(n/2,1);
n = zeros(n/2,1);
x = 0.5 * 1025 *L * ksi^2* cos(thita) * cxw;%单位为牛
y = 0.5 * 1025 *L * ksi^2* sin(thita) * cyw;%单位为牛
n = 0.5 * 1025 *L^2*ksi^2* sin(thita) * cnw;%单位为牛.米
xwv = sum(x);
ywv = sum(y);
nwv = sum(n);
F_wave = 0.01*[xwv;ywv;nwv];
⛄ 运行结果
⛄ 参考文献
[1]沈锡. 基于粒子群优化算法的船舶航向PID控制[D]. 大连海事大学, 2011.
[2]傅康, 桑华希. PID控制器优化的船舶航迹跟踪控制[J]. 舰船科学技术, 2017(24):3.
⛄ 完整代码
❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料