【超宽带定位】超宽带测距和通信的鲁棒目标相对定位Matlab实现

 ✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知,求助可私信。

🔥 内容介绍

超宽带(Ultra-Wideband, UWB)技术凭借其精细的测距能力和抗多径干扰的特性,在目标相对定位领域展现出巨大的应用潜力。本文将深入探讨超宽带测距与通信技术在实现鲁棒目标相对定位中的关键技术、挑战以及未来发展方向。 鲁棒性,即系统在面对各种噪声、干扰和环境变化时仍然能够保持稳定可靠地工作的能力,是目标相对定位系统至关重要的性能指标。在复杂的实际环境中,如何提升UWB定位系统的鲁棒性是该领域的核心研究课题。

首先,我们需要理解UWB测距的原理。UWB信号具有极窄的脉冲宽度和极高的带宽,这使得其能够实现厘米级甚至毫米级的精确定位。 常用的UWB测距方法包括到达时间(Time of Arrival, TOA)、到达时间差(Time Difference of Arrival, TDOA)和到达角度(Angle of Arrival, AOA)等。TOA方法直接测量信号从发射端到接收端的传播时间,进而计算距离。TDOA方法利用多个接收端接收到的信号到达时间差来确定目标位置。AOA方法则利用信号到达接收端的角度信息进行定位。 然而,在实际应用中,这些方法都会受到多径效应、非视距(Non-Line-of-Sight, NLOS)传播以及硬件噪声等因素的影响,导致测距误差增大,降低定位精度和鲁棒性。

为了提高UWB定位系统的鲁棒性,诸多技术被提出并应用。首先,在信号处理方面,先进的信号处理算法能够有效地抑制多径干扰和噪声。例如,基于压缩感知(Compressed Sensing)的算法可以从大量的测量数据中提取出有效的信号信息,从而提高信噪比(Signal-to-Noise Ratio, SNR)和定位精度。 此外,基于机器学习的算法,例如深度学习网络,可以学习并识别各种干扰模式,并对测距结果进行修正,从而提高定位系统的鲁棒性。

其次,在系统设计方面,合理的传感器布局和同步机制至关重要。优化传感器节点的分布可以有效地减少多径效应的影响,提高定位精度。 精确的时钟同步是UWB定位系统准确测距的基础。 目前,常用的同步技术包括基于GPS或原子钟的全局同步和基于双向通信的相对同步。 然而,这些方法都存在一定的局限性,例如GPS信号在室内环境下不可用,而基于双向通信的相对同步会受到信道衰落的影响。因此,研究更鲁棒的同步机制是提高UWB定位系统性能的关键。

此外,对于NLOS传播,需要采用特殊的处理方法。 一种常用的方法是利用NLOS误差识别和抑制技术。通过分析接收信号的特征,例如接收信号强度(Received Signal Strength, RSS)和传播时间等,可以识别NLOS传播路径,并对其进行相应的补偿或去除。 另一种方法是利用NLOS传播模型对测距误差进行建模和预测,从而提高定位精度。 近年来,基于深度学习的NLOS误差识别和补偿技术也取得了显著的进展,展现出比传统方法更好的性能。

除了测距技术,UWB通信技术也对目标相对定位起着至关重要的作用。 UWB通信可以用于传感器节点之间的信息交换、数据传输以及系统控制。 高带宽的UWB通信能够支持大数据量的传输,为复杂的定位算法提供必要的数据支撑。 此外,UWB通信的低功耗特性也使其在便携式设备和低功耗应用中具有显著优势。

然而,UWB定位系统仍然面临一些挑战。 首先,UWB信号的穿透能力较弱,在某些复杂的室内环境中,信号衰减严重,影响定位性能。 其次,UWB技术的成本相对较高,限制了其大规模应用。 最后,UWB技术的标准化工作仍需进一步完善,才能更好地促进其在不同领域的应用。

展望未来,UWB定位技术将朝着更高精度、更强鲁棒性、更低成本以及更广泛应用的方向发展。 结合人工智能、边缘计算以及新型传感器技术,UWB定位系统有望在自动驾驶、机器人导航、室内定位、精准农业等领域发挥更大的作用。 进一步的研究将集中在以下几个方面:开发更先进的信号处理算法,提高抗干扰能力;设计更鲁棒的系统架构,提高系统可靠性;降低UWB技术的成本,使其更具竞争力;以及探索UWB技术与其他定位技术的融合,实现互补优势。 通过持续的创新和发展,UWB技术必将在实现鲁棒目标相对定位方面发挥越来越重要的作用。

📣 部分代码

close all;

clear all;

mobAntOff =[0.172, 0.283, 0.004;

            0.182, -0.280, -0.006;

            -0.376, -0.293, 0.003;

            -0.386, 0.262, 0.000]';

      

% Near anchors

ancPos = [0.04, -0.57, 1.753;

          0.035, 0.424, 1.778]';

      

% Translating the coordinate from UWB frame to vicon frame      

ancPos = [-ancPos(2, :);

           ancPos(1, :);

           ancPos(3, :)];

     

ancAntOff = [0, 0, 0;

             0, 0, 0;

             0, 0, 0;

             0, 0, 0]';

centerOffset = [0.1; 0.0; -0.07];

flightdata = csvread('bagcsv/niv20170821_Tmod.csv', 1, 0);

%--Trimming data

t = flightdata(:, 1)' - flightdata(1, 1);

% T

tstart = t(1);

tend = t(end);

I = find( t > tstart & t < tend);

flightdata = flightdata(I, :);

%--Trimming data

[K, ~] = size(flightdata);

t = flightdata(:, 1)';

t = t - t(1);

ttakeoff = t(1);

tlanding = t(end);

vcTarP = flightdata(:, 25:27)';

vcTarV = zeros(3, K);

lastPx = vcTarP(1, 1);

lastPy = vcTarP(2, 1);

lastPz = vcTarP(3, 1);

lastkx = 1;

lastky = 1;

lastkz = 1;

for k = 2:K

    if vcTarP(1, k) ~= lastPx

        vcTarV(1, k) = vcTarV(1, k-1)*0.75 + 0.25*(vcTarP(1, k) - lastPx)/(t(k) - t(lastkx));

        lastPx = vcTarP(1, k);

        lastkx = k;

    else

        vcTarV(1, k) = vcTarV(1, k-1);

    end

    

    if vcTarP(2, k) ~= lastPy

        vcTarV(2, k) = vcTarV(2, k-1)*0.75 + 0.25*(vcTarP(2, k) - lastPy)/(t(k) - t(lastky));

        lastPy = vcTarP(2, k);

        lastky = k;

    else

        vcTarV(2, k) = vcTarV(2, k-1);

    end

    

    if vcTarP(3, k) ~= lastPz

        vcTarV(3, k) = vcTarV(3, k-1)*0.75 + 0.25*(vcTarP(3, k) - lastPz)/(t(k) - t(lastkz));

        lastPz = vcTarP(3, k);

        lastkz = k;

    else

        vcTarV(3, k) = vcTarV(3, k-1);

    end

    

end

% vcTarP = [-vcTarP(2, :); vcTarP(1, :); vcTarP(3, :)];

vcP = flightdata(:, 2:4)';

vcV = flightdata(:, 5:7)';

vcEul = flightdata(:, 8:10)';

vcDCM = zeros(3, 3, K);

px4P = flightdata(:, 11:13)';

px4P = [-px4P(2, :); px4P(1, :); px4P(3, :)] + vcTarP;

px4V = flightdata(:, 14:16)';

px4V = [-px4V(2, :); px4V(1, :); px4V(3, :)];

px4Eul = flightdata(:, 17:19)';

px4Lidar = flightdata(:, 20)';

corflow = flightdata(:, 21:23)';

flowpsr = flightdata(:, 24)';

figure('name', '3D Pos', 'position', [865 200 600 600], 'color', [1 1 1]);

hold on;

vctarhd = plot3(vcTarP(1, 1), vcTarP(2, 1), vcTarP(3, 1), 'g', 'linewidth', 1);

vcquadhd = plot3(vcP(1, 1), vcP(2, 1), vcP(3, 1), 'r', 'linewidth', 1);

px4quadhd = plot3(px4P(1, 1), px4P(2, 1), px4P(3, 1), 'b', 'linewidth', 1);

tarMarkerhd = plot3(vcTarP(1, 1), vcTarP(2, 1), vcTarP(3, 1), 'o', 'markersize', 8, 'MarkerFaceColor', [0, 1, 0], 'MarkerEdgeColor', 'w');

quadVcMarkerhd = plot3(vcP(1, 1), vcP(2, 1), vcP(3, 1), 'o', 'markersize', 8, 'MarkerFaceColor', [1, 0, 0], 'MarkerEdgeColor', 'w');

quadEstMarkerhd = plot3(px4P(1, 1), px4P(2, 1), px4P(3, 1), 'o', 'markersize', 8, 'MarkerFaceColor', [0, 0, 1], 'MarkerEdgeColor', 'w');

% plot3(setpoints(1, :), setpoints(2, :), setpoints(3, :), 'g', 'linewidth', 1);

% plot3(ancPos(1, 1), ancPos(2, 1), ancPos(3, 1),  'o', 'markersize', 8, 'MarkerFaceColor', [112/255, 173/255, 71/255], 'MarkerEdgeColor', [112/255, 173/255, 71/255]);

% plot3(ancPos(1, 2), ancPos(2, 2), ancPos(3, 2),  'o', 'markersize', 8, 'MarkerFaceColor', [112/255, 173/255, 71/255], 'MarkerEdgeColor', [112/255, 173/255, 71/255]);

% plot3(ancPos(1, :), ancPos(2,:), ancPos(3, :), 'linewidth', 2, 'color', 'k');

% plot3(mean(ancPos(1, :))*ones(1, 2), mean(ancPos(2,:))*ones(1, 2), [0, mean(ancPos(3, :))], 'linewidth', 2, 'color', 'k');

set(gca, 'DataAspectRatio', [1 1 1], 'fontsize', 14);

xlim([-2.5, 2.5]);

ylim([-2.5, 2.5]);

% zlim([0, 2]);

ylb = ylabel('$\mathrm{Position}\ y\ [m]$', 'interpreter', 'latex');%, 'position', [-9.2995 -14.2466 2.6102]);

xlabel('$\mathrm{Position}\ x\ [m]$', 'interpreter', 'latex');

zlabel('$\mathrm{Position}\ z\ [m]$', 'interpreter', 'latex');

% ylabel('Position X (m)');

% xlabel('Position Y (m)');

% zlabel('Position Z (m)');

lghd = legend('$\mathrm{Base\ Position}$', '$\mathrm{UAV\ Position}$', '$\mathrm{Relative\ Pos.\ Estimate\ (\ +\ Base\ Pos.)}$');

set(lghd, 'interpreter', 'latex', 'fontsize', 12, 'position', [0.436 0.866 0.168 0.096]);

grid on;

set(vctarhd, 'xdata', vcTarP(1, 1:K), 'ydata', vcTarP(2, 1:K), 'zdata', vcTarP(3, 1:K));

set(vcquadhd, 'xdata', vcP(1, 1:K), 'ydata', vcP(2, 1:K), 'zdata', vcP(3, 1:K));

set(px4quadhd, 'xdata', px4P(1, 1:K), 'ydata', px4P(2, 1:K), 'zdata', px4P(3, 1:K));

set(tarMarkerhd, 'xdata', vcTarP(1, K), 'ydata', vcTarP(2, K), 'zdata', vcTarP(3, K));

set(quadVcMarkerhd, 'xdata', vcP(1, K), 'ydata', vcP(2, K), 'zdata', vcP(3, K));

set(quadEstMarkerhd, 'xdata', px4P(1, K), 'ydata', px4P(2, K), 'zdata', px4P(3, K));

figure('name', 'Position','position', [1278 100 840 630], 'color', [1 1 1]);

subplot(3, 1, 1);

plot(t, vcP(1, :), 'r', t, px4P(1, :), 'b');

grid on;

ylim([-2.5, 2.5]);

set(gca, 'XTick',t(1):20:t(end));

xlabel('$\mathrm{Time}\ [s]$', 'interpreter', 'latex', 'fontsize', 14);

ylabel('$\mathrm{Position}\ x\ [m]$', 'interpreter', 'latex', 'fontsize', 14);

lghd = legend('$\mathrm{Vicon}$', '$\mathrm{Estimate}$');

set(lghd, 'interpreter', 'latex', 'fontsize', 14, 'position', [0.5360 0.8102 0.2117 0.1057]);

set(gca, 'fontsize', 16);  

grid on;

subplot(3, 1, 2);

plot(t, vcP(2, :), 'r', t, px4P(2, :), 'b');

grid on;

ylim([-2.5, 2.5]);

set(gca, 'XTick',t(1):20:t(end));

xlabel('$\mathrm{Time}\ [s]$', 'interpreter', 'latex', 'fontsize', 14);

ylabel('$\mathrm{Position}\ y\ [m]$', 'interpreter', 'latex', 'fontsize', 14);

set(gca, 'fontsize', 16);  

subplot(3, 1, 3);

% plot(t, vcP(3, :), 'r', t, px4P(3, :), 'b', t, px4Lidar, 'g');

plot(t, vcP(3, :), 'r', t, px4P(3, :), 'b');

grid on;

ylim([0, 1.5]);

set(gca, 'XTick',t(1):20:t(end));

xlabel('$\mathrm{Time}\ [s]$', 'interpreter', 'latex', 'fontsize', 14);

ylabel('$\mathrm{Position}\ z\ [m]$', 'interpreter', 'latex', 'fontsize', 14);

set(gca, 'fontsize', 16);  

figure('name', 'Velocity','position', [1278 100 840 630], 'color', [1 1 1]);

subplot(3, 1, 1);

plot(t, vcV(1, :), 'r', t, px4V(1, :), 'b', t, vcTarV(1, :), 'g');

grid on;

ylim([-0.6, 0.6]);

set(gca, 'XTick',t(1):20:t(end));

xlabel('$\mathrm{Time}\ [s]$', 'interpreter', 'latex', 'fontsize', 14);

ylabel('$\mathrm{Velocity}\ x\ [m/s]$', 'interpreter', 'latex', 'fontsize', 14);

lghd = legend('$\mathrm{True\ Velocity}$', '$\mathrm{Estimated\ Velocity}$', '$\mathrm{Target\ Velocity}$');

set(lghd, 'interpreter', 'latex', 'fontsize', 14, 'position', [0.5360 0.8102 0.2117 0.1057]);

set(gca, 'fontsize', 16);  

grid on;

subplot(3, 1, 2);

plot(t, vcV(2, :), 'r', t, px4V(2, :), 'b', t, vcTarV(2, :), 'g');

grid on;

ylim([-0.6, 0.6]);

set(gca, 'XTick',t(1):20:t(end));

xlabel('$\mathrm{Time}\ [s]$', 'interpreter', 'latex', 'fontsize', 14);

ylabel('$\mathrm{Velocity}\ y\ [m/s]$', 'interpreter', 'latex', 'fontsize', 14);

set(gca, 'fontsize', 16);  

subplot(3, 1, 3);

% plot(t, vcP(3, :), 'r', t, px4P(3, :), 'b', t, px4Lidar, 'g');

plot(t, vcV(3, :), 'r', t, px4V(3, :), 'b', t, vcTarV(3, :), 'g');

grid on;

ylim([-0.25, 0.25]);

set(gca, 'XTick',t(1):20:t(end));

xlabel('$\mathrm{Time}\ [s]$', 'interpreter', 'latex', 'fontsize', 14);

ylabel('$\mathrm{Velocity}\ z\ [m/s]$', 'interpreter', 'latex', 'fontsize', 14);

set(gca, 'fontsize', 16);   

figure('name', 'Pos. Err', 'position', [2626 64 840 630]);

plot(t, abs(vcP(1, :) - px4P(1, :)), 'r', t, abs(vcP(2, :) - px4P(2, :)), 'g', t, abs(vcP(3, :) - px4P(3, :)), 'b');

ylim([0, 0.5]);

rmsex = rms(vcP(1, :) - px4P(1, :));

rmsey = rms(vcP(2, :) - px4P(2, :));

rmsez = rms(vcP(3, :) - px4P(3, :));

stdx = std(vcP(1, :) - px4P(1, :));

stdy = std(vcP(2, :) - px4P(2, :));

stdz = std(vcP(3, :) - px4P(3, :));

rmsevx = rms(vcV(1, :) - px4V(1, :));

rmsevy = rms(vcV(2, :) - px4V(2, :));

rmsevz = rms(vcV(3, :) - px4V(3, :));

stdvx = std(vcV(1, :) - px4V(1, :));

stdvy = std(vcV(2, :) - px4V(2, :));

stdvz = std(vcV(3, :) - px4V(3, :));

maxTarVx = max(abs(vcTarV(1, :)));

maxTarVy = max(abs(vcTarV(2, :)));

maxTarVz = max(abs(vcTarV(3, :)));

uwbD = flightdata(:, end-3)';

ancAntId = floor(flightdata(:, end-2)'/16) + 1;

mobAntId = mod(flightdata(:, end-2)', 16) + 1;

rqstrId = flightdata(:, end)'-1;

rspdrId = flightdata(:, end-1)'+1;

[~, mobAnts] = size(mobAntOff);

[~, ancs] = size(ancPos);

edgeTotal = max(mobAnts*ancs);

f = [];

% uwbAllD = zeros(antCount, K);

vcD = zeros(1, K);

vcDCM = zeros(3, 3, K);

px4DCM = zeros(3, 3, K);

px4EulinVC = zeros(3, K);

vcMobAntPos = zeros(3, mobAnts*2, K);

vcAntPosCompact = zeros(3, K);

vcVbody = zeros(3, K);

for k = 1:K

    vcRo = vcEul(1, k);

    vcPi = vcEul(2, k);

    vcYa = vcEul(3, k);

    

    vcRx = [1, 0, 0; 0, cos(vcRo), -sin(vcRo); 0, sin(vcRo), cos(vcRo)];

    vcRy = [cos(vcPi), 0, sin(vcPi); 0, 1, 0; -sin(vcPi), 0, cos(vcPi)];

    vcRz = [cos(vcYa), -sin(vcYa), 0; sin(vcYa), cos(vcYa), 0; 0, 0, 1];

    

    vcDCM(:, :, k) = vcRx*vcRy*vcRz;

    

    px4Ro = px4Eul(1, k);

    px4Pi = px4Eul(2, k);

    px4Ya = px4Eul(3, k);

    

    px4Rx = [1, 0, 0; 0, cos(px4Ro), -sin(px4Ro); 0, sin(px4Ro), cos(px4Ro)];

    px4Ry = [cos(px4Pi), 1, sin(px4Pi); 0, 1, 0; -sin(px4Pi), 0, cos(px4Pi)];

    px4Rz = [cos(px4Ya), -sin(px4Ya), 0; sin(px4Ya), cos(px4Ya), 0; 0, 0, 1];

    

    px4DCM(:, :, k) = [0 1, 0; 1 0 0; 0 0 -1]*px4Rz*px4Ry*px4Rx*[1 0, 0; 0 -1 0; 0 0 -1];

    

    [px4Eul(1, k), px4Eul(2, k), px4Eul(3, k)] = dcm2angle(px4DCM(:, :, k)', 'XYZ');

    [vcEul(1, k), vcEul(2, k), vcEul(3, k)] = dcm2angle(vcDCM(:, :, k)', 'XYZ');

    

    for n=1:2

        for s=1:2

            vcMobAntPos(:, (n-1)*2 + s, k) = vcDCM(:, :, k)*mobAntOff(:, (n-1)*2 + s) + vcP(:, k);

        end

    end

    vcD(k) = norm(vcMobAntPos(:, (rqstrId(k)-1)*2 + mobAntId(k), k)...

                - (ancPos(:, rspdrId(k)) + ancAntOff(:, ancAntId(k))));

    vcAntPosCompact(:, k) = vcMobAntPos(:, (rqstrId(k)-1)*2 + mobAntId(k), k);

    

    vcVbody(:, k) = vcDCM(:, :, k)'*vcV(:, k);

    

    if flowpsr(k) > 40

        corflowvalid(:, k) = corflow(:, k);

    elseif k > 1

        corflowvalid(:, k) = corflowvalid(:, k-1);

    else

        corflowvalid(:, k) = [0; 0; 0];

    end

end

figure('name', 'Angle','position', [1278 100 840 630], 'color', [1 1 1]);

subplot(3, 1, 3);

plot(t, vcEul(1, :)*180/pi, 'r', t, px4Eul(1, :)*180/pi, 'b');

grid on;

ylim([-10, 10]);

set(gca, 'XTick',t(1):20:t(end));

xlabel('$\mathrm{Time}\ [s]$', 'interpreter', 'latex', 'fontsize', 14);

ylabel('$\mathrm{Roll}\ [deg]$', 'interpreter', 'latex', 'fontsize', 14);

set(gca, 'fontsize', 16);  

subplot(3, 1, 2);

plot(t, vcEul(2, :)*180/pi, 'r', t, px4Eul(2, :)*180/pi, 'b');

grid on;

ylim([-10, 10]);

set(gca, 'XTick',t(1):20:t(end));

xlabel('$\mathrm{Time}\ [s]$', 'interpreter', 'latex', 'fontsize', 14);

ylabel('$\mathrm{Pitch}\ [deg]$', 'interpreter', 'latex', 'fontsize', 14);

set(gca, 'fontsize', 16);  

subplot(3, 1, 1);

% plot(t, vcP(3, :), 'r', t, px4P(3, :), 'b', t, px4Lidar, 'g');

plot(t, vcEul(3, :)*180/pi, 'r', t, px4Eul(3, :)*180/pi, 'b');

grid on;

ylim([85, 100]);

set(gca, 'XTick',t(1):20:t(end));

xlabel('$\mathrm{Time}\ [s]$', 'interpreter', 'latex', 'fontsize', 14);

ylabel('$\mathrm{Yaw}\ [deg]$', 'interpreter', 'latex', 'fontsize', 14);

lghd = legend('$\mathrm{Vicon}$', '$\mathrm{Estimate}$');

set(lghd, 'interpreter', 'latex', 'fontsize', 14, 'position', [0.5360 0.8102 0.2117 0.1057]);

set(gca, 'fontsize', 16);  

rmseyaw = rms(vcEul(3, :)*180/pi - px4Eul(3, :)*180/pi);

rmsepitch = rms(vcEul(2, :)*180/pi - px4Eul(2, :)*180/pi);

rmseroll = rms(vcEul(1, :)*180/pi - px4Eul(1, :)*180/pi);

stdyaw = std(vcEul(3, :)*180/pi - px4Eul(3, :)*180/pi);

stdpitch = std(vcEul(2, :)*180/pi - px4Eul(2, :)*180/pi);

stdroll = std(vcEul(1, :)*180/pi - px4Eul(1, :)*180/pi);

errsig = round([rmsex, rmsey, rmsez, maxTarVx, maxTarVy, maxTarVz;

                stdx, stdy, stdz, 0, 0, 0], 3);

figure('name', 'Vels and Flow', 'position', [865 100 560 420]);

subplot(2, 1, 1);

plot(t, vcV(1, :), 'r', t, px4V(1, :), 'g', t, corflow(1, :).*vcP(3, :), 'b');

subplot(2, 1, 2);

plot(t, vcV(2, :), 'r', t, px4V(2, :), 'g', t, -corflow(2, :).*vcP(3, :), 'b');

⛳️ 运行结果

🔗 参考文献

🎈 部分理论引用网络文献,若有侵权联系博主删除

👇 关注我领取海量matlab电子书和数学建模资料

🎁  私信完整代码和数据获取及论文数模仿真定制

🌿 往期回顾可以关注主页,点击搜索

🏆团队擅长辅导定制多种科研领域MATLAB仿真,助力科研梦:

🌈 各类智能优化算法改进及应用
生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化、背包问题、 风电场布局、时隙分配优化、 最佳分布式发电单元分配、多阶段管道维修、 工厂-中心-需求点三级选址问题、 应急生活物质配送中心选址、 基站选址、 道路灯柱布置、 枢纽节点部署、 输电线路台风监测装置、 集装箱调度、 机组优化、 投资优化组合、云服务器组合优化、 天线线性阵列分布优化、CVRP问题、VRPPD问题、多中心VRP问题、多层网络的VRP问题、多中心多车型的VRP问题、 动态VRP问题、双层车辆路径规划(2E-VRP)、充电车辆路径规划(EVRP)、油电混合车辆路径规划、混合流水车间问题、 订单拆分调度问题、 公交车的调度排班优化问题、航班摆渡车辆调度问题、选址路径规划问题、港口调度、港口岸桥调度、停机位分配、机场航班调度、泄漏源定位
🌈 机器学习和深度学习时序、回归、分类、聚类和降维

2.1 bp时序、回归预测和分类

2.2 ENS声神经网络时序、回归预测和分类

2.3 SVM/CNN-SVM/LSSVM/RVM支持向量机系列时序、回归预测和分类

2.4 CNN|TCN|GCN卷积神经网络系列时序、回归预测和分类

2.5 ELM/KELM/RELM/DELM极限学习机系列时序、回归预测和分类
2.6 GRU/Bi-GRU/CNN-GRU/CNN-BiGRU门控神经网络时序、回归预测和分类

2.7 ELMAN递归神经网络时序、回归\预测和分类

2.8 LSTM/BiLSTM/CNN-LSTM/CNN-BiLSTM/长短记忆神经网络系列时序、回归预测和分类

2.9 RBF径向基神经网络时序、回归预测和分类

2.10 DBN深度置信网络时序、回归预测和分类
2.11 FNN模糊神经网络时序、回归预测
2.12 RF随机森林时序、回归预测和分类
2.13 BLS宽度学习时序、回归预测和分类
2.14 PNN脉冲神经网络分类
2.15 模糊小波神经网络预测和分类
2.16 时序、回归预测和分类
2.17 时序、回归预测预测和分类
2.18 XGBOOST集成学习时序、回归预测预测和分类
2.19 Transform各类组合时序、回归预测预测和分类
方向涵盖风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、用电量预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断
🌈图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知
🌈 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、 充电车辆路径规划(EVRP)、 双层车辆路径规划(2E-VRP)、 油电混合车辆路径规划、 船舶航迹规划、 全路径规划规划、 仓储巡逻
🌈 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配、无人机安全通信轨迹在线优化、车辆协同无人机路径规划
🌈 通信方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化、水声通信、通信上传下载分配
🌈 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化、心电信号、DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪、数字信号调制、误码率、信号估计、DTMF、信号检测
🌈电力系统方面
微电网优化、无功优化、配电网重构、储能配置、有序充电、MPPT优化、家庭用电
🌈 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长 金属腐蚀
🌈 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合、SOC估计、阵列优化、NLOS识别
🌈 车间调度
零等待流水车间调度问题NWFSP 、 置换流水车间调度问题PFSP、 混合流水车间调度问题HFSP 、零空闲流水车间调度问题NIFSP、分布式置换流水车间调度问题 DPFSP、阻塞流水车间调度问题BFSP

👇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

matlab科研助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值