💥💥💥💥💥💥💥💥💞💞💞💞💞💞💞💞💞Matlab领域博客之家💞💞💞💞💞💞💞💞💞💥💥💥💥💥💥💥💥
🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀
🔊博主简介:985研究生,Matlab领域科研开发者;
🏫个人主页:Matlab领域
🏆代码获取方式:
CSDN Matlab领域—代码获取方式
🚅座右铭:路漫漫其修远兮,吾将上下而求索。
更多Matlab物理应用仿真内容点击👇
①Matlab物理应用(高阶版)
②付费专栏Matlab物理应用(进阶版)
③付费专栏Matlab物理应用(初级版)
⛳️关注CSDN Matlab领域,更多资源等你来!!
⛄一、受限线性时变MPC进行横向飞行轨迹优化
项目全称:基于约束线性时变模型预测控制(LTV-MPC)的车辆横向轨迹优化,作者 Michelangelo Pozza,MATLAB 代码,用于信息物理系统(CPS)课程,实现自动驾驶车辆的横向路径跟踪、避障。
核心:线性时变 MPC(LTV-MPC),在参考轨迹的每个预测时刻更新系统矩阵,适配非线性车辆横向动力学;采用空间参数化路径(沿弧长 s 描述参考道路),支持多种场景、道路边界约束 + 轮胎附着极限约束,软约束处理边界避免优化不可行。
- 整体功能概述
该 MATLAB 程序搭建自动驾驶车辆横向动力学仿真 + LTV-MPC 轨迹规划与跟踪控制器。 - 预先定义 6 种测试场景:直道带障碍物、正弦道路、环岛、多障碍泊车、双纽线、简单弯道;
- 将笛卡尔坐标系道路点((x,y))转换为弧长 s、参考航向角(\theta_r)、参考曲率(\kappa_r),把道路沿里程参数化;
- 构建 5 阶非线性横向车辆模型,在 MPC 预测时域上线性化得到时变状态空间模型 A,B,C,E;
- 构建带约束的二次规划 QP 问题,调用
quadprog求解 MPC 最优控制输入; - 使用 ODE45 积分车辆非线性动力学,完成闭环仿真;
- 多图可视化:鸟瞰全局轨迹、控制输入、横向偏差、航向误差、曲率、车速等结果。
车辆:BMW i3,轴距 (l=2.57\mathrm{m})。控制输入u为曲率变化率,状态包含横向偏差、航向误差、车辆曲率、参考航向、参考曲率。
- 参数与变量定义
仿真基础参数
N = 20; % MPC预测时域长度 Ts = 0.2; % 采样时间 200ms T % 总仿真时间,不同场景自动设置 n=5; % 状态维度 m=1; % 控制输入维度 o=1; % 扰动维度 p=4; % 输出维度车辆物理参数
- (l=2.57):轴距;
- (u_{max}/u_{min}):控制输入上下限(曲率变化率);
- (k_{max_delta},k_{min_delta}):车辆曲率硬限;
- (g=9.81,\mu=0.9):重力加速度、路面附着系数,用于Kamm 轮胎圆计算最大允许曲率 (\kappa_{max}=\mu g/v^2)(速度越高,允许转弯曲率越小)。
- 场景选择与参考轨迹生成(switch-case)
程序启动弹出菜单,用户选择测试场景: - Case1 直道带障碍物:直线道路,在里程 7.5~9m 处修改道路横向边界
d_min_vec模拟障碍物,强制车辆绕行; - Case2 正弦道路:y 随 x 正弦变化的弯曲道路,无障碍物;
- Case3 环岛:使用高斯曲线近似环岛参考路径;
- Case4 泊车场景:直道 + 圆弧弯道 + 直道,多处修改道路左右边界,放置多个障碍物;
- Case5 双纽线 Lemniscate:双纽线闭合参考轨迹;
- Case6 简单圆弧弯道:90° 圆弧曲线。
道路几何转换核心
输入:离散笛卡尔坐标((x_{plot},y_{plot}))道路点
计算: - 一阶差分(dx,dy)、二阶差分(ddx,ddy);
- 曲率公式:
(\kappa=\frac{|x’y’‘-y’x’'|}{(x’2+y’2)^{3/2}}) - 累积弧长(s_{ref}):沿道路中心线的里程;
- 参考航向角(\theta_r):道路切线角,用
unwrap(atan2(dy,dx))防止角度跳变; - 道路横向边界(d_{max},d_{min}):道路左右侧极限横向偏移;障碍物实现原理:直接修改该边界向量,压缩可行区域。
v_spatial:沿里程 s 设定的参考速度(空间速度剖面)。 - MPC 闭环主循环
for time_instant = 1:T
每一步循环 = 测量当前状态 → 预测时域内参考轨迹插值 → 构建 LTV 模型 → 构造 QP 优化问题 → 求解最优控制 → 积分车辆动力学得到下一状态。
4.1 空间预测(s_pred,v_pred)
根据当前里程(s_{curr})、当前车速(v_{curr}),在预测时域 N 上,预测未来各时刻沿道路的里程s_pred和参考速度v_pred;
用interp1插值得到预测时域上未来的:参考曲率(\kappa_{fut})、参考航向(\theta_{fut})、道路横向约束(d_{max_fut},d_{min_fut})。
约束使用
previous零阶保持插值:保证障碍物边界在预测区间不被插值平滑掉。
4.2 非线性车辆模型 & 线性时变状态空间
ODE 非线性模型(solution 函数)
状态向量 (\boldsymbol{x} = \begin{bmatrix}d_r \ \Delta\theta \ \kappa \ \theta_r \ \kappa_r\end{bmatrix})
- (d_r):车辆相对道路中心线的横向偏差;
- (\Delta\theta=\theta-\theta_r):车辆航向角减去道路参考航向;
- (\kappa):车辆曲率;
- (\theta_r):道路参考航向;
- (\kappa_r):道路参考曲率;
- 输入(u=\dot{\kappa}):曲率变化率;
- 扰动(z=\dot{\kappa}_r):参考曲率随时间变化率。
dxdt(1) = v*sin(x(2)-x(4)); dxdt(2) = v*x(3); dxdt(3) = u; dxdt(4) = (v*cos(x(2)-x(4)))/(1-x(1)*x(5))*x(5); dxdt(5) = z;在每个预测时刻i,对非线性模型在当前预测轨迹点做线性化,得到连续时变矩阵(A_c(i),B_c(i),E_c(i),C_c(i));
调用c2d离散化,得到离散 LTV 矩阵(A_d(i),B_d(i),E_d(i),C_d(i))。
4.3 MPC 代价函数与大矩阵组装(LTV-MPC 标准扩维方法)
将有限时域最优控制问题,把状态、输入沿预测时域堆叠,转为标准 QP 形式:
- 权重矩阵 Q,R:时变权重,横向偏差(d_r)、航向误差(\Delta\theta)、曲率(\kappa);末端代价矩阵P(终端代价,保证稳定性);
- 组装扩维矩阵:
- (A_{big}):状态转移堆叠矩阵;
- (B_{big}):控制输入到状态的堆叠矩阵;
- (Eps_{big}):扰动 z 到状态的堆叠矩阵;
- (C_{big}):输出矩阵;
- 计算海森矩阵(H_{big}=B_{big}^T Q_{big} B_{big}+R_{big}),线性项f;
4.4 约束设计(硬约束 + 软约束)
- 硬约束:控制输入u上下限;车辆曲率(\kappa)上下限,曲率上限由轮胎 Kamm 圆动态限制(\kappa_{max}=\mu g/v^2),车速越高,允许曲率越小;
- 软约束(松弛变量):前 Ns 步的横向道路边界约束引入松弛变量(\varepsilon),给约束施加惩罚(K_2);
作用:避免障碍物场景下 QP 完全不可行,控制器可以轻微越界(带惩罚),提升仿真鲁棒性。
构造不等式约束矩阵Ac_tilde、约束上限bc_tilde,调用quadprog求解 QP,得到预测时域最优输入序列UMPC。MPC 滚动策略:只取第一个控制量 u_curr施加给车辆(滚动时域)。
4.5 车辆状态更新
用ode45对非线性微分方程solution积分一个采样周期 Ts,得到下一时刻车辆状态xnext,更新状态(x_0),进入下一轮循环。EXITFLAG=-2 代表 QP 无解,程序会进入
keyboard调试模式。
- 结果后处理与绘图模块
仿真结束后,将沿里程 s 的参考轨迹插值,把车辆**Frenet 坐标系(s,d)**转回全局笛卡尔 XY 坐标,绘制 4 组图: - 鸟瞰图 Bird’s eye view:道路中心线、道路左右边界、障碍物压缩后的边界、车辆行驶轨迹,起点终点标记;直观看到车辆是否绕行障碍物;
- 时间分析子图(3×2)
- 控制输入 u 随时间变化,对比上下限;
- 横向偏差(d_r)和道路边界(d_{max}/d_{min});
- 车辆曲率(\kappa),对比轮胎附着极限;
- 航向误差(车辆航向 - 道路航向,单位 deg);
- 横向偏差与车速子图:横向偏差 + 车辆行驶速度 v;
- 参考曲线插值对比:原始道路 waypoint 和插值后的参考轨迹。
⛄二、部分源代码和运行步骤
1 部分代码
clear all
close all
clc
% Horizon
N = 20;
% Time step = 200ms
Ts = 0.2;
% Default simulation time
T = 35;
% State vector
n = 5;
% Input vector
m = 1;
% Disturbance vector
o = 1;
% Output vector
p = 4;
%% Vehicle parameters (BMW i3: wheelbase l = 2.57m)
l = 2.57;
r_circles = 1; % because r_circle < l/2 = 1.29
u_max = 0.25; % [1/ms]
u_min = -u_max;
k_max_delta = 0.25; % [1/m]
k_min_delta = -k_max_delta;
g = 9.81;
mu = 0.9;
%% User’s menu
disp(‘------------------------------------------------------------------’);
disp(’ LATERAL VEHICLE TRAJECTORY OPTIMIZATION USING LMPC ‘);
disp(’------------------------------------------------------------------‘);
disp(‘Select the test you want to execute:’);
disp(’ 1: Straight road with an obstacle’);
disp(’ 2: Sine() road without obstacles’);
disp(’ 3: Roundabout’);
disp(’ 4: Parking scenario with more obstacles’);
disp(’ 5: Lemniscate’);
disp(’ 6: Simple curve’);
disp(‘------------------------------------------------------------------’);
number_test = input('Type the number of the test you want to execute: ');
%% Trajectory to follow
ds = 0.05;
switch number_test
case 1
T = 30;
% waypoints of the track
x_plot = 0:ds:40;
y_plot = zeros(1, length(x_plot));
% Transformation between points (x,y) to (k,theta) % k = |x'y''-y'x''|/(x'^2+y'^2)^(3/2) % dx=x' and dy=y' (differences at each step) dx = diff(x_plot); dy = diff(y_plot); ddx = diff(dx); ddy = diff(dy); num = dx(1:end-1).*ddy - dy(1:end-1).*ddx; den = (dx(1:end-1).^2 + dy(1:end-1).^2).^(1.5); kappa_r_vec = num ./ den; % parametrization on the arc of the curves ds_step = sqrt(dx.^2 + dy.^2); % this is the derivative s_ref = [0, cumsum(ds_step)]; % computation of theta_r -> using [dy dy(end)] because diff() function % provide the intervals which are N_points-1 wrt original points. We need % to add the last piece as constat to have the same number of points theta_r_vec = unwrap(atan2([dy dy(end)], [dx dx(end)])); dtheta = diff(theta_r_vec); % kappa_r = ||dtheta|| ==> normalize using ds % other way: kappa_r_vec = dtheta./ds_step; kappa_r_vec = [kappa_r_vec, kappa_r_vec(end), kappa_r_vec(end)]; % padding because of the differences N_curve = length(x_plot); % Lateral limits because of the road d_max_vec = (2-r_circles)*ones(1, N_curve); d_min_vec = (-2+r_circles)*ones(1, N_curve); % Casual obstacle obs_start = find(s_ref >= 7.5, 1); obs_end = find(s_ref >= 9, 1); % Modification of the bounds to add the obstacle d_min_vec(obs_start:obs_end) =d_min_vec(obs_start:obs_end) + 1.3; % straight road but with an obstacle => not so fast v_max = 8; v_spatial = v_max*ones(1, length(kappa_r_vec)); case 2 T = 50; x_plot = 0:ds:160; % amplitude and frequency of the sine amplitude = 20; lambda_sine = 80; y_plot = amplitude*sin((2*pi/lambda_sine)*x_plot); % Transformation between points (x,y) to (k,theta) % k = |x'y''-y'x''|/(x'^2+y'^2)^(3/2) % dx=x' and dy=y' (differences at each step) dx = diff(x_plot); dy = diff(y_plot); ddx = diff(dx); ddy = diff(dy); num = dx(1:end-1).*ddy - dy(1:end-1).*ddx; den = (dx(1:end-1).^2 + dy(1:end-1).^2).^(1.5); kappa_r_vec = num ./ den; % parametrization on the arc of the curves ds_step = sqrt(dx.^2 + dy.^2); % this is the derivative s_ref = [0, cumsum(ds_step)]; % computation of theta_r -> using [dy dy(end)] because diff() function % provide the intervals which are N_points-1 wrt original points. We need % to add the last piece as constat to have the same number of points theta_r_vec = unwrap(atan2([dy dy(end)], [dx dx(end)])); dtheta = diff(theta_r_vec); % kappa_r = ||dtheta|| ==> normalize using ds % other way: kappa_r_vec = dtheta./ds_step; kappa_r_vec = [kappa_r_vec, kappa_r_vec(end), kappa_r_vec(end)]; % padding because of the differences N_curve = length(x_plot); % Lateral limits because of the road d_max_vec = (2-r_circles)*ones(1, N_curve); d_min_vec = (-2+r_circles)*ones(1, N_curve); % No obstacles => If possible go fast v_max = 10; v_spatial = v_max*ones(1, length(kappa_r_vec)); case 3 T = 30; % let's make the roundabout as if it was a gaussian round_mu = 30; round_alpha = 10; round_sigma = 10; x_plot = 0:ds:60; y_plot = -round_alpha*exp(-(x_plot-round_mu).^2/(2*round_sigma^2)); % Transformation between points (x,y) to (k,theta) % k = |x'y''-y'x''|/(x'^2+y'^2)^(3/2) % dx=x' and dy=y' (differences at each step) dx = diff(x_plot); dy = diff(y_plot); ddx = diff(dx); ddy = diff(dy); num = dx(1:end-1).*ddy - dy(1:end-1).*ddx; den = (dx(1:end-1).^2 + dy(1:end-1).^2).^(1.5); kappa_r_vec = num ./ den; % parametrization on the arc of the curves ds_step = sqrt(dx.^2 + dy.^2); % this is the derivative s_ref = [0, cumsum(ds_step)]; % computation of theta_r -> using [dy dy(end)] because diff() function % provide the intervals which are N_points-1 wrt original points. We need % to add the last piece as constat to have the same number of points theta_r_vec = unwrap(atan2([dy dy(end)], [dx dx(end)])); dtheta = diff(theta_r_vec); % kappa_r = ||dtheta|| ==> normalize using ds % other way: kappa_r_vec = dtheta./ds_step; kappa_r_vec = [kappa_r_vec, kappa_r_vec(end), kappa_r_vec(end)]; % padding because of the differences N_curve = length(x_plot); % Lateral limits because of the road d_max_vec = (2-r_circles)*ones(1, N_curve); d_min_vec = (-2+r_circles)*ones(1, N_curve); % No obstacles => If possible go fast v_max = 10; v_spatial = v_max*ones(1, length(kappa_r_vec)); case 4 % x1 and y1 represent the parking x1 = 0:ds:5; y1 = zeros(1, length(x1)); % 5m radius circle to describe the curve after the parking r_curve = 5.0; % ds = r_circle*dl_curve => dl_curve is a little piece of the arc length dl_curve = ds/r_curve; curve_angles_set = (-pi/2+dl_curve):dl_curve:0; x2 = x1(end)+r_curve*cos(curve_angles_set); y2 = r_curve+r_curve*sin(curve_angles_set); % last straight part y3 = (r_curve+ds):ds:15; x3 = (x1(end)+r_curve)*ones(1, length(y3)); x_plot = [x1, x2, x3]; y_plot = [y1, y2, y3]; % Transformation between points (x,y) to (k,theta) % k = |x'y''-y'x''|/(x'^2+y'^2)^(3/2) % dx=x' and dy=y' (differences at each step) dx = diff(x_plot); dy = diff(y_plot); ddx = diff(dx); ddy = diff(dy); num = dx(1:end-1).*ddy - dy(1:end-1).*ddx; den = (dx(1:end-1).^2 + dy(1:end-1).^2).^(1.5); kappa_r_vec = num ./ den; % parametrization on the arc of the curves ds_step = sqrt(dx.^2 + dy.^2); % this is the derivative s_ref = [0, cumsum(ds_step)]; % computation of theta_r -> using [dy dy(end)] because diff() function % provide the intervals which are N_points-1 wrt original points. We need % to add the last piece as constat to have the same number of points theta_r_vec = unwrap(atan2([dy dy(end)], [dx dx(end)])); dtheta = diff(theta_r_vec); % kappa_r = ||dtheta|| ==> normalize using ds % other way: kappa_r_vec = dtheta./ds_step; kappa_r_vec = [kappa_r_vec, kappa_r_vec(end), kappa_r_vec(end)]; % padding because of the differences N_curve = length(x_plot); % Lateral limits because of the road d_max_vec = (2-r_circles)*ones(1, N_curve); d_min_vec = (-2+r_circles)*ones(1, N_curve); obs_start = find(s_ref >= 5.0, 1); obs_end = find(s_ref >= 8.5, 1); d_max_vec(obs_start:obs_end) = d_max_vec(obs_start:obs_end) - 1.2; obs2_start = find(s_ref >= 10, 1); obs2_end = find(s_ref >= 12, 1); d_min_vec(obs2_start:obs2_end) = d_min_vec(obs2_start:obs2_end) + 0.8; obs3_start = find(s_ref >= 14, 1); obs3_end = find(s_ref >= 15.5, 1); d_min_vec(obs3_start:obs3_end) = d_min_vec(obs3_start:obs3_end) + 1.2; % parking situation, we may not going too fast v_max = 5; v_spatial = v_max*ones(1, length(kappa_r_vec)); case 5 T = 100; a = 60; t_param = -pi:ds:pi; x_plot = (a*cos(t_param))./(1+sin(t_param).^2); y_plot = (a*sin(t_param).*cos(t_param))./(1+sin(t_param).^2); % dx=x' and dy=y' (differences at each step) dx = diff(x_plot); dy = diff(y_plot); ddx = diff(dx); ddy = diff(dy); % parametrization on the arc of the curves ds_step = sqrt(dx.^2 + dy.^2); % this is the derivative s_ref = [0, cumsum(ds_step)]; theta_r_vec = unwrap(atan2([dy dy(end)], [dx dx(end)])); num = dx(1:end-1).*ddy - dy(1:end-1).*ddx; den = (dx(1:end-1).^2 + dy(1:end-1).^2).^(3/2); kappa_r_vec = num ./ den; kappa_r_vec = [kappa_r_vec, kappa_r_vec(end), kappa_r_vec(end)]; N_curve = length(x_plot); % Lateral limits because of the road d_max_vec = (2-r_circles)*ones(1, N_curve); d_min_vec = (-2+r_circles)*ones(1, N_curve); v_max = 8; v_spatial = v_max*ones(1, length(kappa_r_vec)); case 6 T = 40; N_curve = 150; theta = linspace(0, pi/2, N_curve); r = 60; x_plot = r*cos(theta); y_plot = r*sin(theta); % Transformation between points (x,y) to (k,theta) % k = |x'y''-y'x''|/(x'^2+y'^2)^(3/2) % dx=x' and dy=y' (differences at each step) dx = diff(x_plot); dy = diff(y_plot); ddx = diff(dx); ddy = diff(dy); num = dx(1:end-1).*ddy - dy(1:end-1).*ddx; den = (dx(1:end-1).^2 + dy(1:end-1).^2).^(1.5); kappa_r_vec = num ./ den; % parametrization on the arc of the curves ds_step = sqrt(dx.^2 + dy.^2); % this is the derivative s_ref = [0, cumsum(ds_step)]; % computation of theta_r -> using [dy dy(end)] because diff() function % provide the intervals which are N_points-1 wrt original points. We need % to add the last piece as constat to have the same number of points theta_r_vec = unwrap(atan2([dy dy(end)], [dx dx(end)])); dtheta = diff(theta_r_vec); % kappa_r = ||dtheta|| ==> normalize using ds % other way: kappa_r_vec = dtheta./ds_step; kappa_r_vec = [kappa_r_vec, kappa_r_vec(end), kappa_r_vec(end)]; % padding because of the differences N_curve = length(x_plot); % Lateral limits because of the road d_max_vec = (2-r_circles)*ones(1, N_curve); d_min_vec = (-2+r_circles)*ones(1, N_curve); v_max = 10; v_spatial = v_max*ones(1, length(kappa_r_vec)); otherwise disp("The test you selected does not exist! Let's execute test 1"); T = 30; % waypoints of the track x_plot = 0:ds:40; y_plot = zeros(1, length(x_plot)); % Transformation between points (x,y) to (k,theta) % k = |x'y''-y'x''|/(x'^2+y'^2)^(3/2) % dx=x' and dy=y' (differences at each step) dx = diff(x_plot); dy = diff(y_plot); ddx = diff(dx); ddy = diff(dy); num = dx(1:end-1).*ddy - dy(1:end-1).*ddx; den = (dx(1:end-1).^2 + dy(1:end-1).^2).^(1.5); kappa_r_vec = num ./ den; % parametrization on the arc of the curves ds_step = sqrt(dx.^2 + dy.^2); % this is the derivative s_ref = [0, cumsum(ds_step)]; % computation of theta_r -> using [dy dy(end)] because diff() function % provide the intervals which are N_points-1 wrt original points. We need % to add the last piece as constat to have the same number of points theta_r_vec = unwrap(atan2([dy dy(end)], [dx dx(end)])); dtheta = diff(theta_r_vec); % kappa_r = ||dtheta|| ==> normalize using ds % other way: kappa_r_vec = dtheta./ds; kappa_r_vec = [kappa_r_vec, kappa_r_vec(end), kappa_r_vec(end)]; % padding because of the differences N_curve = length(x_plot); % Lateral limits because of the road d_max_vec = (2-r_circles)*ones(1, N_curve); d_min_vec = (-2+r_circles)*ones(1, N_curve); % Casual obstacle obs_start = find(s_ref >= 7.5, 1); obs_end = find(s_ref >= 9, 1); % Modification of the bounds to add the obstacle d_min_vec(obs_start:obs_end) =d_min_vec(obs_start:obs_end) + 1.3; % straight road but with an obstacle => not so fast v_max = 8; v_spatial = v_max*ones(1, length(kappa_r_vec));end
2 通用运行步骤
(1)直接运行main.m即可一键出图
⛄三、运行结果
⛄四、matlab版本及参考文献
1 matlab版本
2019b
2 参考文献
[1] 门云阁.MATLAB物理计算与可视化[M].清华大学出版社,2013.
3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除
⛄五、仿真咨询与程序定制
1 各类智能优化算法改进及应用
1.1 PID优化
1.2 VMD优化
1.3 配电网重构
1.4 三维装箱
1.5 微电网优化
1.6 优化布局
1.7 优化参数
1.8 优化成本
1.9 优化充电
1.10 优化调度
1.11 优化电价
1.12 优化发车
1.13 优化分配
1.14 优化覆盖
1.15 优化控制
1.16 优化库存
1.17 优化路由
1.18 优化设计
1.19 优化位置
1.20 优化吸波
1.21 优化选址
1.22 优化运行
1.23 优化指派
1.24 优化组合
1.25 车间调度
1.26 生产调度
1.27 经济调度
1.28 装配线调度
1.29 水库调度
1.30 货位优化
1.31 公交排班优化
1.32 集装箱船配载优化
1.33 水泵组合优化
1.34 医疗资源分配优化
1.35 可视域基站和无人机选址优化
2 机器学习和深度学习分类与预测
2.1 机器学习和深度学习分类
2.1.1 BiLSTM双向长短时记忆神经网络分类
2.1.2 BP神经网络分类
2.1.3 CNN卷积神经网络分类
2.1.4 DBN深度置信网络分类
2.1.5 DELM深度学习极限学习机分类
2.1.6 ELMAN递归神经网络分类
2.1.7 ELM极限学习机分类
2.1.8 GRNN广义回归神经网络分类
2.1.9 GRU门控循环单元分类
2.1.10 KELM混合核极限学习机分类
2.1.11 KNN分类
2.1.12 LSSVM最小二乘法支持向量机分类
2.1.13 LSTM长短时记忆网络分类
2.1.14 MLP全连接神经网络分类
2.1.15 PNN概率神经网络分类
2.1.16 RELM鲁棒极限学习机分类
2.1.17 RF随机森林分类
2.1.18 SCN随机配置网络模型分类
2.1.19 SVM支持向量机分类
2.1.20 XGBOOST分类
2.2 机器学习和深度学习预测
2.2.1 ANFIS自适应模糊神经网络预测
2.2.2 ANN人工神经网络预测
2.2.3 ARMA自回归滑动平均模型预测
2.2.4 BF粒子滤波预测
2.2.5 BiLSTM双向长短时记忆神经网络预测
2.2.6 BLS宽度学习神经网络预测
2.2.7 BP神经网络预测
2.2.8 CNN卷积神经网络预测
2.2.9 DBN深度置信网络预测
2.2.10 DELM深度学习极限学习机预测
2.2.11 DKELM回归预测
2.2.12 ELMAN递归神经网络预测
2.2.13 ELM极限学习机预测
2.2.14 ESN回声状态网络预测
2.2.15 FNN前馈神经网络预测
2.2.16 GMDN预测
2.2.17 GMM高斯混合模型预测
2.2.18 GRNN广义回归神经网络预测
2.2.19 GRU门控循环单元预测
2.2.20 KELM混合核极限学习机预测
2.2.21 LMS最小均方算法预测
2.2.22 LSSVM最小二乘法支持向量机预测
2.2.23 LSTM长短时记忆网络预测
2.2.24 RBF径向基函数神经网络预测
2.2.25 RELM鲁棒极限学习机预测
2.2.26 RF随机森林预测
2.2.27 RNN循环神经网络预测
2.2.28 RVM相关向量机预测
2.2.29 SVM支持向量机预测
2.2.30 TCN时间卷积神经网络预测
2.2.31 XGBoost回归预测
2.2.32 模糊预测
2.2.33 奇异谱分析方法SSA时间序列预测
2.3 机器学习和深度学习实际应用预测
CPI指数预测、PM2.5浓度预测、SOC预测、财务预警预测、产量预测、车位预测、虫情预测、带钢厚度预测、电池健康状态预测、电力负荷预测、房价预测、腐蚀率预测、故障诊断预测、光伏功率预测、轨迹预测、航空发动机寿命预测、汇率预测、混凝土强度预测、加热炉炉温预测、价格预测、交通流预测、居民消费指数预测、空气质量预测、粮食温度预测、气温预测、清水值预测、失业率预测、用电量预测、运输量预测、制造业采购经理指数预测
3 图像处理方面
3.1 图像边缘检测
3.2 图像处理
3.3 图像分割
3.4 图像分类
3.5 图像跟踪
3.6 图像加密解密
3.7 图像检索
3.8 图像配准
3.9 图像拼接
3.10 图像评价
3.11 图像去噪
3.12 图像融合
3.13 图像识别
3.13.1 表盘识别
3.13.2 车道线识别
3.13.3 车辆计数
3.13.4 车辆识别
3.13.5 车牌识别
3.13.6 车位识别
3.13.7 尺寸检测
3.13.8 答题卡识别
3.13.9 电器识别
3.13.10 跌倒检测
3.13.11 动物识别
3.13.12 二维码识别
3.13.13 发票识别
3.13.14 服装识别
3.13.15 汉字识别
3.13.16 红绿灯识别
3.13.17 虹膜识别
3.13.18 火灾检测
3.13.19 疾病分类
3.13.20 交通标志识别
3.13.21 卡号识别
3.13.22 口罩识别
3.13.23 裂缝识别
3.13.24 目标跟踪
3.13.25 疲劳检测
3.13.26 旗帜识别
3.13.27 青草识别
3.13.28 人脸识别
3.13.29 人民币识别
3.13.30 身份证识别
3.13.31 手势识别
3.13.32 数字字母识别
3.13.33 手掌识别
3.13.34 树叶识别
3.13.35 水果识别
3.13.36 条形码识别
3.13.37 温度检测
3.13.38 瑕疵检测
3.13.39 芯片检测
3.13.40 行为识别
3.13.41 验证码识别
3.13.42 药材识别
3.13.43 硬币识别
3.13.44 邮政编码识别
3.13.45 纸牌识别
3.13.46 指纹识别
3.14 图像修复
3.15 图像压缩
3.16 图像隐写
3.17 图像增强
3.18 图像重建
4 路径规划方面
4.1 旅行商问题(TSP)
4.1.1 单旅行商问题(TSP)
4.1.2 多旅行商问题(MTSP)
4.2 车辆路径问题(VRP)
4.2.1 车辆路径问题(VRP)
4.2.2 带容量的车辆路径问题(CVRP)
4.2.3 带容量+时间窗+距离车辆路径问题(DCTWVRP)
4.2.4 带容量+距离车辆路径问题(DCVRP)
4.2.5 带距离的车辆路径问题(DVRP)
4.2.6 带充电站+时间窗车辆路径问题(ETWVRP)
4.2.7 带多种容量的车辆路径问题(MCVRP)
4.2.8 带距离的多车辆路径问题(MDVRP)
4.2.9 同时取送货的车辆路径问题(SDVRP)
4.2.10 带时间窗+容量的车辆路径问题(TWCVRP)
4.2.11 带时间窗的车辆路径问题(TWVRP)
4.3 多式联运运输问题
4.4 机器人路径规划
4.4.1 避障路径规划
4.4.2 机器人轨迹跟踪
4.4.3 机器人编队
4.4.4 机器人导航
4.4.5 机器人定位
4.4.6 机器人控制
4.4.7 机器人路径规划
4.4.8 机器人任务分配
4.4.9 机器人搜索
4.4.10 机器人运输
4.4.11 迷宫路径规划
4.4.12 水下机器人路径规划
4.4.13 栅格地图路径规划
4.5 配送路径规划
4.5.1 冷链配送路径规划
4.5.2 外卖配送路径规划
4.5.3 口罩配送路径规划
4.5.4 药品配送路径规划
4.5.5 含充电站配送路径规划
4.5.6 连锁超市配送路径规划
4.5.7 车辆协同无人机配送路径规划
4.6 无人机路径规划
4.6.1 飞行器仿真
4.6.2 无人机飞行作业
4.6.3 无人机轨迹跟踪
4.6.4 无人机集群仿真
4.6.5 卡车无人机
4.6.6 目标搜索
4.6.7 三维路径规划
4.6.8 无人机编队
4.6.9 无人机导航
4.6.10 无人机吊运
4.6.11 无人机对抗
4.6.12 无人机覆盖
4.6.13 无人机检测
4.6.14 无人机控制
4.6.15 无人机求援
4.6.16 无人机位姿估计
4.6.17 无人机系统
4.6.18 无人机侦查
4.6.19 无人机联盟
4.6.20 无人机协同任务
4.6.21 异构无人机
4.7 水下飞行器
4.8 无人车路径规划
4.9 无人艇路径规划
4.10 物流选址
4.11 车辆控制
4.12 多智能体路径规划
4.12.1 多智能体编队
4.12.2 多智能体控制
4.12.3 多智能体路径规划
4.12.4 多智能体协同
5 语音处理
5.1 语音情感识别
5.2 声源定位
5.3 特征提取
5.4 语音编码
5.5 语音处理
5.6 语音分离
5.7 语音分析
5.8 语音合成
5.9 语音加密
5.10 语音去噪
5.11 语音识别
5.12 语音压缩
5.13 语音隐藏
6 元胞自动机方面
6.1 元胞自动机病毒仿真
6.2 元胞自动机城市规划
6.3 元胞自动机交通流
6.4 元胞自动机气体
6.5 元胞自动机人员疏散
6.6 元胞自动机森林火灾
6.7 元胞自动机生命游戏
7 信号处理
7.1 机械振动信号处理
7.1.1 故障信号
7.1.1.1 齿轮损伤识别
7.1.1.2 异步电机转子断条故障诊断
7.1.1.3 滚动体内外圈故障诊断分析
7.1.1.4 电机故障诊断分析
7.1.1.5 轴承故障诊断分析
7.1.1.6 齿轮箱故障诊断分析
7.1.1.7 三相逆变器故障诊断分析
7.1.1.8 柴油机故障诊断
7.1.2 管道泄漏
7.1.3 振动信号
7.2 生物医学信号处理
7.2.1 肌电信号EMG
7.2.2 脑电信号EEG
7.2.3 乳腺癌诊断
7.2.4 生物电信号
7.2.5 心电信号ECG
7.2.6 心血管
7.2.7 心脏仿真
7.2.8 血压
7.3 声呐探测信号处理
7.3.1 声呐
7.3.2 水声通信
7.4 通信工程信号处理
7.4.1 超声波信号处理
7.4.2 导航定位
7.4.3 航天航空
7.4.4 空间识别
7.4.5 雷达通信
7.4.5.1 FMCW仿真
7.4.5.2 GPS抗干扰
7.4.5.3 雷达LFM
7.4.5.4 雷达MIMO
7.4.5.5 雷达测角
7.4.5.6 雷达成像
7.4.5.7 雷达定位
7.4.5.8 雷达回波
7.4.5.9 雷达检测
7.4.5.10 雷达数字信号处理
7.4.5.11 雷达通信
7.4.5.12 雷达相控阵
7.4.5.13 雷达信号分析
7.4.5.14 雷达预警
7.4.5.15 雷达脉冲压缩
7.4.5.16 天线方向图
7.4.5.17 雷达杂波仿真
7.4.6 模拟信号处理
7.4.7 时差绘制
7.4.8 数字信道处理
7.4.9 数字信号处理
7.4.10 无线通信
7.4.11 姿态解算
**7.4.12 资源分配 **
7.5 自动测量信号处理
**7.5.1 参数估计 **
**7.5.2 电动汽车动力电池管理 **
**7.5.3 高度预估 **
8 物理应用
8.1 物理学分支力学
8.1.1 材料力学
8.1.2 弹性力学
8.1.3 动力学
8.1.4 分析力学
8.1.5 固体力学
8.1.6 结构力学
8.1.7 静力学
8.1.8 空气动力学
8.1.9 流体力学
8.1.10 塑性力学
8.1.11 运动学
8.2 物理学其他分支
8.2.1 表面物理学
8.2.2 超声学
8.2.3 次声学
8.2.4 电磁学
8.2.5 电动力学
8.2.6 电学
8.2.7 高压物理学
8.2.8 金属物理学
8.2.9 光学
8.2.10 核物理学
8.2.11 金属物理学
8.2.12 量子力学
8.2.13 热力学
8.2.14 热学
8.2.15 声学
8.2.16 水声学
8.3 物理应用
8.3.1 地理学
8.3.2 化学化工
8.3.3 生物
8.3.4 其他