2025年优化算法:龙卷风优化算法(Tornado optimizer with Coriolis force,TOC)

龙卷风优化算法(Tornado optimizer with Coriolis force)是发表在中科院二区期刊“ARTIFICIAL INTELLIGENCE REVIEW”(IF:11.7)的2025年智能优化算法

01.引言

当自然界的狂暴之力,化身数字世界的智慧引擎:龙卷风,自然界最神秘的力量之一——雷暴盘旋、风切变激荡、科里奥利力牵引,最终凝聚成摧毁万物的旋转风暴。科学家们从这场“天地博弈”中捕捉灵感,打造出​「Tornado Optimizer with Coriolis Force (TOC)」​算法,将风暴形成的动态过程转化为优化问题的终极解法。无需复杂数学模型,不依赖初始参数,仅凭对自然规律的模拟,即可在浩瀚解空间中精准捕获最优答案!

传统算法的困局:为什么我们需要一场“风暴革命”?

在人工智能与工程优化领域,经典算法正面临三大挑战:

​梯度陷阱:传统方法依赖精确的数学梯度,面对噪声数据或非线性问题时束手无策。

​早熟收敛:元启发式算法常陷入局部最优,如同探险者被困山谷,错失远方高峰。

​维度灾难:高维问题中,解空间呈指数级膨胀,计算资源如泥牛入海。

TOC算法的突破,在于用自然界的混沌之力对抗数学的确定性困局——龙卷风的形成、旋转与消散,恰好映射了优化过程中探索、聚焦与迭代的智慧。

02.优化算法的流程

所提出的具有科里奥利力 (TOC) 的龙卷风优化器的想法是基于对龙卷风形成和消散以及风暴和雷暴如何在自然界中演变形成龙卷风的观察而受到启发。为了进一步澄清,关于龙卷风如何产生并向陆地移动的一些基本知识,它们遵循可识别的生命周期,如下所述:当风暴系统内的风速和风向发生变化时,该周期就开始了。这会产生一种旋转效果,该效果由穿过雷云的上升气流垂直倾斜。在这种情况下,风暴通常会发生在那个点。当风暴增强时,它通常会变成超级单体雷暴。另一种说法是,强大的雷暴在大气层几英里高的地方发展出一个旋转系统,成为超级单体或雷云单体。这些超级单体雷暴是独特的、孤立的单体,不属于风暴线的一部分。超级单体风暴是兜兜转转的风暴。当旋转的垂直气柱和超级单体雷暴一起时,风暴云可能会产生龙卷风。龙卷风形成过程的各个阶段可以在图下中观察到。

1. 风暴初生:种群的混沌与秩序

算法初始化时,随机生成三类“风暴个体”:

​普通风暴​(随机探索者):广泛散布在解空间,寻找潜力区域。

​雷暴​(精英个体):当前较优解,吸引周围风暴向其靠拢。

​龙卷风​(全局最优):吞噬能量,成为局部区域的绝对核心。

​自然隐喻:就像真实风暴需要温度、湿度与风切变的配合,算法通过动态调整“风暴能量”,平衡搜索的广度与深度。

​2. 科里奥利效应:给优化加上“地球自转”的智慧

龙卷风在北半球逆时针旋转、南半球顺时针旋转的现象,被抽象为方向扰动机制:

​北半球模式:解向量向右偏转,增强对未知区域的探索。

​南半球模式:解向量向左偏转,强化对已知优势区域的挖掘。

这种动态偏转有效避免了算法“原地打转”,仿佛为搜索过程装上导航罗盘。

​3. 气旋平衡方程:暴力美学中的数学优雅

借鉴流体力学中的梯度风速模型,TOC将气压梯度力、离心力与科里奥利力的平衡关系转化为迭代公式:

​高压区​(局部最优解):离心力主导,推动个体逃离“舒适区”。

​低压区​(潜力区域):科里奥利力牵引,引导种群螺旋式逼近。

整个过程宛如一场精心编排的“风暴之舞”,在破坏与重建中逼近全局最优。

​4. 消散与重生:劣解的淘汰与新星的崛起

当风暴能量衰减(适应度不再提升),算法自动触发“消散机制”:

淘汰停滞个体,释放计算资源。

随机生成新风暴,注入新鲜血液。

这一机制完美复刻自然界的物竞天择,确保种群永葆进化活力。

论文伪代码:

3.论文中算法对比图

04.本代码效果图

05.部分代码

function [TornadoCost,Tornadoposition,ccurve]=TOC(n,max_it,lb,ub,dim,fobj,nto,nt)
%% Convergence curve
ccurve=zeros(1,max_it);%% Generate initial population for the Tornado Optimizer with Coriolis force (TOC) 
% Create initial population for Tornado, thunderstorms, and windstorms, and initialize the positions of populationy=initialization(n,dim,ub,lb);
% Evaluate the fitness of initial population for Tornado, thunderstorms, and windstorms 
fit = zeros(size(y,1),1);
for i=1:size(y,1)fit(i,1)=fobj(y(i,:));
end
[~,index]=sort(fit) ;
%% Forming Windstorms, Thunderstorms, and Tornado of the Tornado Optimizer with Coriolis force (TOC) 
% nto: Number of thunderstorms and tornadoes
% Nt : Number of thunderstorms
% To:  Number of tornadoes
% nw: number of windstorms
To= nto - nt;% Tornadoes
nw=n-nto; % Windstorms
%================ Forming and evaluating the population of the Tornadoes ================
Tornadoposition=y(index(1:To),:) ; % 
TornadoCost=fit(index(1:To)); %================ Forming and evaluating the population of the Thunderstorms ================
Thunderstormsposition(1:nto-1,:)=y(index(2:nto),:);
ThunderstormsCost(1:nto-1)=fit(index(2:nto));
bThunderstormsCost = ThunderstormsCost;
gThunderstormsCost=zeros(1,nto-1);[~,ind]=min(ThunderstormsCost);
bThunderstormsposition = Thunderstormsposition; % Initial best Thunderstorms position
gThunderstormsCost = Thunderstormsposition(ind,:); % Initial global Thunderstorms position
%================ Forming and evaluating the population of the Windstorms ================Windstormsposition(1:nw,:)=y(index(nto+1:nto+nw),:) ; 
WindstormsCost(1:nw)=fit(index(nto+1:nto+nw)) ;  
gWindstormsposition=zeros(1,nw);
bWindstormsCost = WindstormsCost;
[~,ind]=min(WindstormsCost);
bWindstormsposition = Windstormsposition; % % Initial best windstorms position (Update the best positions of windstorms)
gWindstormsposition = Windstormsposition(ind,:); % Initial global windstorms position%% Velcity term of TOC 
vel_storm = 0.1*Windstormsposition; % Velocity of windstorms
%%  Designate windstorms to thunderstorms and Tornadoes 
nwindstorms=1:nw;nwindstorms=nwindstorms(sort(randperm(nw,nto)));% Combining windstorms to tornado
nWT=diff(nwindstorms)';
nWT(end+1)= nw-sum(nWT);
% nWT1=sort(nWT1,'descend');
nWT1 = nWT(1);
% Combining windstorms to thunderstorms
nWH=nWT(2:end);
%% Parameter setting s for TOC
b_r=100000;  
fdelta=[-1,1];
%% Key functions of Tornado Optimizer with Coriolis force (TOC) 
chi=4.10;
eta=2/abs(2-chi-sqrt(chi^2-4*chi)) ;
%% ================  Main Loop for TOC ================ 
disp('================  Tornado Optimizer with Coriolis force (TOC) ================ ');
t=1;while t<=max_it%% Key adaptive functions (Adaptive parameters) of TOCnu  =(0.1*exp(-0.1*(t/max_it)^0.1))^16;mu = 0.5 + rand/2;ay=(max_it-(t^2/max_it))/max_it ;Rl = 2/(1+exp((-t+max_it/2)/2)) ;  Rr = -2/(1+exp((-t+max_it/2)/2)) ;  %%  Evolution of windstorms to Tornadoes% Update velocity     
for i=1:nwfor j = 1:dimif rand > 0.5delta1=fdelta(ceil(2*rand()));zeta=ceil((To).*rand(1,To))'; %  wmin=1; wmax=4.0; rr=wmin+rand()*(wmax-wmin);wr= (((2*rand()) - (1*rand()+rand()))/rr); c=b_r*delta1*wr;omega = 0.7292115E-04; 
%            w_r = sin(-1 + 2.*rand(1,1));f= 2*omega*sin(-1 + 2.*rand(1,1));phi(i,j) = Tornadoposition(zeta,j) - Windstormsposition(i,j);if sign(Rl)>=0 if sign(phi(i,j))>=0 phi(i,j) = -phi(i,j);endendCFl =(((f^2*Rl^2)/4) -Rl* 1 *phi(i,j));if sign(CFl)< 0 CFl= -CFl;endvel_storm(i,j)= eta*  (mu*vel_storm(i,j) - c* (f*Rl)/2 +(sqrt(CFl)));elsedelta1=fdelta(ceil(2*rand()));zeta=ceil((To).*rand(1,To))'; %  rmin=1; rmax=4.0; rr=rmin+rand()*(rmax-rmin);wr= (((2*rand()) - (1*rand()+rand()))/rr); c=b_r*delta1*wr; phi(i,j) = Tornadoposition (zeta,j)-Windstormsposition(i,j);if sign(Rr)<=0 if sign(phi(i,j))<=0 phi(i,j) = -phi(i,j);endendomega =0.7292115E-04;% s�1
%          w_r = sin(-1 + 2.*rand(1,1));f= 2*omega*sin(-1 + 2.*rand(1,1));CFr =(((f^2*Rr^2)/4) -Rr* 1 *phi(i,j));if sign(CFr)<0 CFr= -CFr;end vel_storm(i,j)= eta  *(mu* vel_storm(i,j) - c* (f*Rr)/2 +(sqrt(CFr)))  ;        endendend %% %% Exploration - Evolution of windstorms to Tornadoesfor i=1:nWT1rand_index = floor((nWT1).*rand(1,nWT1))+1;rand_w = Windstormsposition(rand_index, :);alpha=abs(2*ay*rand-1*rand)   ;Windstormsposition(i,:)=Windstormsposition(i,:)+2*alpha*(Tornadoposition  - rand_w(i,:)) + vel_storm(i,:);
%  ub_=Windstormsposition(i,:)>ub; lb_=Windstormsposition(i,:)<lb;Windstormsposition(i,:)=(Windstormsposition(i,:).*(~(ub_+lb_)))+ub.*ub_+lb.*lb_;WindstormsCost (i)=fobj(Windstormsposition(i,:));%%% Finding out the best positionsif WindstormsCost(i)<bWindstormsCost(i)bWindstormsposition(i,:)=Windstormsposition(i,:) ; % Best solutionsbWindstormsCost(i)=WindstormsCost(i);   % Best costendend[minTornadoCost,in]=min(bWindstormsCost); % finding out the best Posif (minTornadoCost<TornadoCost)TornadoCost=minTornadoCost;Tornadoposition = bWindstormsposition(in,:); % Update the global best positionsend %% ================ Exploitation -  Evolution of windstorms to thunderstorms ================ 
%% ================  Combining windstorms together to form thunderstorms ================  for i=1:ntfor j=1:nWH(i)rand_index = floor((nt).*rand(nt))+1;rand_w = Windstormsposition(rand_index, :);c1=abs(2*ay*rand-1*ay); c2=abs(ay - 2*ay*rand);Windstormsposition((j+sum(nWT(1:i))),:)=Windstormsposition((j+sum(nWT(1:i))),:)+2*rand*(Thunderstormsposition(i,:)-Windstormsposition((j+sum(nWT(1:i))),:))+...+ 2*rand*(Tornadoposition (1,:)-Windstormsposition((j+sum(nWT(1:i))),:));ub_=Windstormsposition((j+sum(nWT(1:i))),:)>ub; lb_=Windstormsposition((j+sum(nWT(1:i))),:)<lb;Windstormsposition((j+sum(nWT(1:i))),:)=(Windstormsposition((j+sum(nWT(1:i))),:).*(~(ub_+lb_)))+ub.*ub_+lb.*lb_;WindstormsCost((j+sum(nWT(1:i))))=fobj(Windstormsposition((j+sum(nWT(1:i))),:));if WindstormsCost((j+sum(nWT(1:i))))<ThunderstormsCost(i)              bThunderstormsposition(i,:) =Windstormsposition((j+sum(nWT(1:i))),:);Thunderstormsposition(i,:)=Windstormsposition((j+sum(nWT(1:i))),:);ThunderstormsCost(i)=WindstormsCost((j+sum(nWT(1:i))));end endend   %[minTornadoCost, in]=min(ThunderstormsCost); % finding out the best Posif (minTornadoCost<TornadoCost)TornadoCost=minTornadoCost;Tornadoposition = bThunderstormsposition(in,:); % Update the global best positionsend %% ================  Evolution of thunderstorms to tornado ================ for i=1:nt        zeta=ceil((To).*rand(1,To)); %  alpha=abs(2*ay*rand-1*rand)    ; p = floor((nt).*rand(1,nt))+1;rand_w = Thunderstormsposition(p, :);Thunderstormsposition(i,:)=Thunderstormsposition(i,:)+2.*alpha*(Thunderstormsposition(i,:) - Tornadoposition(zeta,:))+...+2.*alpha*(rand_w(i,:) - Thunderstormsposition(i,:));ub_=Thunderstormsposition(i,:)>ub; lb_=Thunderstormsposition(i,:)<lb;Thunderstormsposition(i,:)=(Thunderstormsposition(i,:).*(~(ub_+lb_)))+ub.*ub_+lb.*lb_;ThunderstormsCost(i) =fobj(Thunderstormsposition(i,:));if ThunderstormsCost(i)<bThunderstormsCost(i)         bThunderstormsposition(i,:) =Thunderstormsposition(i,:);bThunderstormsCost(i) =ThunderstormsCost(i);endend[minTornadoCost,in]=min(bThunderstormsCost); % finding out the best Posif (minTornadoCost<TornadoCost)TornadoCost=minTornadoCost;Tornadoposition = bThunderstormsposition(in,:); % Update the global best positionsend %%   ================  Random formation of windstorms, tornadoes and thunderstorms ================ % Check windstorms formation for windstorms and tornadoesfor i=1:nWT1if  ((norm(Windstormsposition(i,:)-Tornadoposition)<nu))delta2=fdelta(floor(2*rand()+1));Windstormsposition(i,:)=  Windstormsposition(i,:) - (2*ay*(rand*(lb-ub) - lb))*delta2;end
end  % Check windstorms formation for windstorms and thunderstormsfor i=1:ntif  ((norm(Windstormsposition(i,:)-Thunderstormsposition(i,:))<nu))for j=1:nWH(i)delta2=fdelta(floor(2*rand()+1)) ;Windstormsposition((j+ sum(nWT(1:i))),:)=  Windstormsposition((j+ sum(nWT(1:i))),:) - (2*ay*(rand*(lb-ub) - lb))*delta2;endend
end %% Results and Plot   disp(['Iteration: ',num2str(t),'   minTornadoCost= ',num2str(TornadoCost)]);ccurve(t)=TornadoCost;%{if t>2line([t-1 t], [ccurve(t-1) ccurve(t)],'Color','b'); title({'Convergence characteristic curve'},'interpreter','latex','FontName','Times','fontsize',12);xlabel('Iteration');ylabel('Best score obtained so far');drawnow end 
%}t=t+1;endend

✅作者简介:信号处理方向在校博士研究生,目前专研于MATLAB算法及科学绘图等,熟知各种信号分解算法、神经网络时序、回归和分类预测算法、数据拟合算法以及滤波算法。提供一个可以相互学习相互进步的平台

🚩技术信仰:知行合一,让每一行代码都成为解决问题的利器

🔍后台私信备注个人需求(比如TOC-BP)定制以下TOC算法优化模型(看到秒回):

1.回归/时序/分类预测类:BP、RF、XGBoost、RBF、LSSVM、SVM、ELM、DELM、ESN、RELM等等均可,优化算法优化BP为例,可达到以下效果:

(1)优化BP神经网络的数据时序预测

(2)优化BP神经网络的数据回归(多输入多输出)预测

(3)优化BP神经网络的数据回归预测

2.分解类:EEMD、VMD、REMD、CEEMDAN、ICEEMDAN、SVMD等分解模型均可,优化算法优化VMD/ICEEMDAN为例,可达到以下效果:

(1)基于改进天鹰优化算法(IAO)优化的VMD参数

(2)基于改进天鹰优化算法(IAO)优化ICEEMDAN参数

3.去噪算法算法类:VMD/CEEMDAN/ICEEMDAN/SVMD+小波阈值/SVD去噪,可在去噪算法前加智能优化算法优化参数以VMD-WT/SVD为例,可达到以下效果:

(1)基于VMD-SpEn(样本熵)联合小波阈值去噪

(2)基于SVMD-SVD的信号去噪算法

(3)基于ZOA优化VMD-IAWT岩石声发射信号降噪算法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/39422.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面试题分享-多线程顺序打印奇偶数

目录 1.题目详情 2.解题思路 2.1.分析题目 2.2.解析思路 3.代码实现 4.运行结果 1.题目详情 昨天刷抖音&#xff0c;遇到一个面试题&#xff0c;描述如下&#xff1a; 请使用两个线程&#xff0c;分别顺序交替打印奇数和偶数&#xff0c;直到10为止。例如有两个线程&#…

QuecPython 网络协议之TCP/UDP协议最祥解析

概述 IP 地址与域名 IP 地址是网络中的主机地址&#xff0c;用于两台网络主机能够互相找到彼此&#xff0c;这也是网络通信能够成功进行的基础。IP 地址一般以点分十进制的字符串来表示&#xff0c;如192.168.1.1。 ​ 我们日常访问的网站&#xff0c;其所在的服务器主机都有…

React - LineChart组件编写(用于查看每日流水图表)

一、简单版本 LineChart.tsx // src/component/LineChart/LineChart.tsx import React, {useEffect,useRef,useImperativeHandle,forwardRef,useMemo,useCallback, } from react; import * as echarts from echarts/core; import type { ComposeOption } from echarts/core; …

医学图像分割数据集肺分割数据labelme格式6299张2类别

数据集格式&#xff1a;labelme格式(不包含mask文件&#xff0c;仅仅包含jpg图片和对应的json文件) 图像分辨率&#xff1a;1024x1024 图片数量(jpg文件个数)&#xff1a;6299 标注数量(json文件个数)&#xff1a;6299 标注类别数&#xff1a;2 标注类别名称:["leftl…

帕金森病致生活艰难,如何缓解心理负担?

你是否留意到身边有人手部不由自主地颤抖&#xff0c;且肢体变得僵硬&#xff0c;行动也愈发迟缓&#xff1f;这很可能是帕金森病的症状。帕金森病是一种常见的神经系统退行性疾病&#xff0c;多发生于中老年人。​ 静止性震颤往往是帕金森病的首发症状&#xff0c;患者在安静状…

从零构建大语言模型全栈开发指南:第二部分:模型架构设计与实现-2.1.1自注意力机制(Scaled Dot-Product Attention)的逐行代码实现

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 2.1.1 自注意力机制(Scaled Dot-Product Attention)的逐行代码实现1. 自注意力机制的核心原理与数学表达1.1 注意力计算的三元组:`Q, K, V`2. 逐行代码实现与解析2.1 输入嵌入与权重矩阵初始化2.2 完…

机械臂【逆运动学】

回顾正运动学fk&#xff1a; IK&#xff1a; 几何法 代数法 六轴 456轴交再同一点 有解析解 下列公式为正运动学部分结论 a和d是长度 &#xff0c;theta和alfa是角度 **疑问&#xff1a;alfa00&#xff1f; Z轴互相平行 ** 已知末端要在空间XYZ处如下 绿色项&#x…

IDEA批量替换项目下所有文件中的特定内容

文章目录 1. 问题引入2. 批量替换项目下所有文件中的特定内容2.1 右键项目的根目录&#xff0c;点击在文件中替换2.2 输入要替换的内容 3. 解决替换一整行文本后出现空行的问题4. 增加筛选条件提高匹配的精确度 更多 IDEA 的使用技巧可以查看 IDEA 专栏&#xff1a; IDEA 1. 问…

Ubuntu22.04美化MacOS主题

安装Tweaks 参考Ubuntu 22.04 桌面美化成Mac风格这篇更好点 sudo apt install gnome-tweaks gnome-shell-extensions -y安装macos主题 git clone https://github.com/vinceliuice/WhiteSur-gtk-theme.git # 进到文件目录 ./install.sh -t all -N glassy sudo ./tweaks.sh -g…

基于Python的机器学习入门指南

在当今数字化时代&#xff0c;机器学习&#xff08;Machine Learning&#xff09;已经成为科技领域中最热门的话题之一。它不仅改变了我们对数据的理解和处理方式&#xff0c;还在许多行业中得到了广泛应用&#xff0c;如金融、医疗、交通等。Python作为一门强大的编程语言&…

Python前缀和(例题:异或和,求和)

前缀和 前缀和&#xff1a;对于一个长度为n的列表a&#xff0c;前缀和为&#xff1a; sum[i]a[0]a[1]...a[i] 前缀和的性质&#xff1a; 第一条性质用于处理出前缀和&#xff1a; Sum[i]Sum[i-1]a[i] 第二条性质可以在O(l)的时间内求出区间和&#xff1a; a[l]....a[r] S…

统计矩的高阶推广:经验还是理论推导?

矩的发展既是经验总结的结果&#xff0c;也是数学理论推导的产物。研究者们在分析数据、描述物理现象的过程中&#xff0c;发现了低阶矩与日常物理概念&#xff08;如质心、惯性&#xff09;之间的紧密联系&#xff0c;而高阶矩的应用往往出现在更复杂的数学体系中&#xff0c;…

安宝特分享|AR智能装备赋能企业效率跃升

AR装备开启智能培训新时代 在智能制造与数字化转型浪潮下&#xff0c;传统培训体系正面临深度重构。安宝特基于工业级AR智能终端打造的培训系统&#xff0c;可助力企业构建智慧培训新生态。 AR技术在不同领域的助力 01远程指导方面 相较于传统视频教学的单向输出模式&#x…

《软件安装与使用教程》— NVIDIA CUDA在Windows的安装教程

《软件安装与使用教程》— NVIDIA CUDA在Windows的安装教程 Installed: - Nsight Monitor Not Installed: - Nsight for Visual Studio 2019 Reason: VS2019 was not found - Nsight for Visual Studio 2017 Reason: VS2017 was not found - Integrated Graphics Frame Debugge…

领域驱动设计(DDD)实践入门

文章目录 1.认识领域驱动设计1.1 简介1.2 发展历史1.3 DDD 的兴起 2.从一个简单案例2.1 转账需求2.2 设计的问题2.3 违反的设计原则 3.使用 DDD 进行重构抽象数据存储层抽象第三方服务抽象中间件封装业务逻辑重构后的架构 4.小结参考文献 1.认识领域驱动设计 1.1 简介 领域驱…

OrangePi 5B 内核开启 CONFIG_CIFS 通过 Samba 挂载 NAS 路径

文章目录 OrangePi 5B 内核开启 CONFIG_CIFS 通过 Samba 挂载 NAS 路径获取 Linux SDK 的源码从 github 下载 orangepi-build编译 linux 内核更新开发板内核上传编译好的 deb 包到开发板登录开发板&#xff0c;卸载旧内核安装新内核重启开发板 Ubuntu & Debian 系统下挂载 …

8662 234的和

8662 234的和 ⭐️难度&#xff1a;中等 &#x1f31f;考点&#xff1a;模拟、二维前缀和 &#x1f4d6; &#x1f4da; import java.util.Arrays; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner;public class Main {static int[] a ne…

softmax回归的实现

softmax回归是logistic回归在多分类问题上的推广 原理 网络架构&#xff1a; 常用的方式是独热编码&#xff1a; 如果下面这样&#xff0c;会使得分类器更倾向于把奶牛和耗牛预测到一起&#xff0c;因为预测为海公牛惩罚更大&#xff0c;这样是不合理的。 损失函数&…

架构师面试(十九):IM 架构

问题 IM 系统从架构模式上包括 【介绍人模式】和 【代理人模式】。介绍人模式也叫直连模式&#xff0c;消息收发不需要服务端的参与&#xff0c;即客户端之间直连的方式&#xff1b;代理人模式也叫中转模式&#xff0c;消息收发需要服务端进行中转。 下面关于这两类模式描述的…

WSL2增加memory问题

我装的是Ubuntu24-04版本&#xff0c;所有的WSL2子系统默认memory为主存的一半&#xff08;我的电脑是16GB&#xff0c;wsl是8GB&#xff09;&#xff0c;可以通过命令查看&#xff1a; free -h #查看ubuntu的memory和swap &#xff08;改过的11GB&#xff09; 前几天由于配置E…