Matlab实现蚁群算法求解旅行商优化问题(TSP)(理论+例子+程序)

一、蚁群算法

        蚁群算法由意大利学者Dorigo M等根据自然界蚂蚁觅食行为提岀。蚂蚁觅食行为表示大量蚂蚁组成的群体构成一个信息正反馈机制,在同一时间内路径越短蚂蚁分泌的信息就越多,蚂蚁选择该路径的概率就更大。

        蚁群算法的思想来源于自然界蚂蚁觅食,蚂蚁在寻找食物源时,会在路径上留下蚂蚁独有的路径标识——信息素,蚂蚁会感知其他蚂蚁在各条路径上留下的信息素,并根据各条路径上的信息素浓度来选择之后要走的路,路径上留有的信息浓度越高,则蚂蚁更倾向于选择该路径。在蚂蚁选择某条路径后也会在改路径上留下信息素吸引更多蚂蚁选择该路径,随着时间的推移,信息素浓度不断增大,蚂蚁选择路径的概率也随之增高,由此形成了正反馈机制。由于蚁群算法的正反馈性,因此蚁群算法也属于增强型学习算法的其中一种。

初始时刻,不妨将P kij (t)设为t时刻蚂蚁k从结点i转移到结点j的概率。“蚂蚁TSP”策略收到两方面的左右,首先是访问某结点的概率,这个概率的大小依赖于其他蚂蚁释放的信息素浓度。所以定义:

        式中,nkij(t)为启发函数,表示蚂蚁从结点i转移到结点j的概率;allowk为蚂蚁k下一步可转移结点的集合,随着时间的推移,allowk储存的元素数量会减小,最终会变为空集合。a 为信息素重要程度因子。

        与实际情况类似的一点是:随着时间的推移,残留在路径上的信息素会逐渐挥发,蚂蚁在经过路径时残留的信息素量也会逐渐等同于信息素挥发量,最终使信息素残留量趋于稳定。令α表示信息素挥发程度,那么所有蚂蚁遍历完所有结点之后,各路径上的信息素残留量的数学表达式如下:

        式中,ckij为第k只蚂蚁在连接结点i 与结点k的路径上释放信息素而增加的信息素浓度。Δckij为所有蚂蚁在结点i 与结点k 连接路径上释放信息素而增加的信息素浓度,通常情况下:

        式中,Q为路径信息素常量,I为第k 只蚂蚁所经过路径的总长度。

二、蚁群算法改进(自适应)

改进(自适应蚁群算法)

1)每次循环结束后求出最优解将其保留。

2)自适应的改变 值。

1. 信息素挥发系数的存在,会让没有搜索到的信息素的量减小到接近于0,降低了算法的全局搜索能力。

2. 当过大,且解的信息量过大时,曾经搜索过的解被重新搜索的可能性会变大。

3. 减小提高算法的全局搜索能力,但这会让算法的收敛速度降低

实现方法:

1. 的初始值为

2. 当算法求得的最优解在N次循环内没有改进时,减小为

三、实现步骤

四、代码结果

改进前:

改进后:

五、改进后运行的数据

1. 迭代最后城市之间的信息素(部分)

2. 最佳路径记录(部分)

3. 城市初始化顺序

4. 最终城市顺序(最优结果)

5. 最终蚁群算法初始参数

sumnum=0;       %记录选择概率全为0的次数
m=100;         %蚂蚁个数           
Alpha=1;      %信息素重要程度参数                         
Beta=5;       %启发式因子重要程度参数            
Rho=1;        %信息素蒸发系数           
Rho_min=0.2;    %最小信息素蒸发系数   
num_G=0;         %迭代多少次最优值不变得次数
num_G_max=15;    %最大迭代多少次最优值不变得次数
G_max=200;    %最大迭代次数            
Q=100;        %信息素增加强度系数  

六、代码(改进前)

clear all;      %清除所有变量           
close all;      %清图        
clc;            %清屏%% 初始化
%蚂蚁个数:50
%信息素重要程度参数:1
%启发式因子重要程度参数:5
%信息素蒸发系数:0.1
%最大迭代次数:200
%信息素增加强度系数:100
m=100;         %蚂蚁个数           
Alpha=1;      %信息素重要程度参数                         
Beta=5;       %启发式因子重要程度参数            
Rho=0.15;      %信息素蒸发系数            
G_max=300;    %最大迭代次数            
Q=100;        %信息素增加强度系数                 % C = [1304 2312;3639 1315;4177 2244;3712 1399;3488 1535;3326 1556;
% 3238 1229;4196 1044;4312 790;4386 570;3007 1970;2562 1756;
% 2788 1491;2381 1676;1332 695;3715 1678;3918 2179;4061 2370;
% 3780 2212;3676 2578;4029 2838;4263 2931;3429 1908;3507 2376;
% 3394 2643;3439 3201;2935 3240;3140 3550;2545 2357;2778 2826;
% 2370 2975];   %31 个省会城市坐标C=[6734	1453;2233	10;5530	1424;401	841;3082	1644;7608	4458;
7573	3716;7265	1268;6898	1885;1112	2049;5468	2606;5989	2873;
4706	2674;4612	2035;6347	2683;6107	669;7611	5184;7462	3590;
7732	4723;5900	3561;4483	3369;6101	1110;5199	2182;1633	2809
4307	2322;675	1006;7555	4819;7541	3981;3177	756;7352	4506;
7545	2801;3245	3305;6426	3173;4608	1198;23	2216;7248	3779;
7762	4595;7392	2244;3484	2829;6271	2135;4985	140;1916	1569;
7280	4899;7509	3239;10	2676;6807	2993;5185	3258;3023	1942];        %% 第一步:变量初始化n=size(C,1);          %n 表示问题的规模(城市个数)  
D=zeros(n,n);         %D 表示两个城市距离间隔矩阵  
for i=1:nfor j=1:nif i~=jD(i,j)=((C(i,1)-C(j,1))^2+(C(i,2)-C(j,2))^2)^0.5;    %计算两两城市之间的距离elseD(i,j)=eps;endD(j,i)=D(i,j);end
end
Eta=1./D;                       %Eta 为启发因子,这里设为距离的倒数
Tau=ones(n,n);                  %Tau 为信息素矩阵 
Tabu=zeros(m,n);                %存储并记录路径的生成
NC=1;                           %迭代计数器
R_best=zeros(G_max,n);          %各代最佳路线
L_best=inf.*ones(G_max,1);      %各代最佳路线的长度
figure(1);                      %优化解
%% 判断是否满足终止条件:若满足,则结束搜索过程,输出优化值;若不满足,则继续进行迭代优化。
while NC<=G_max            
%% 第二步:将 m 只蚂蚁放到 n 个城市上Randpos=[];for i=1:(ceil(m/n))Randpos=[Randpos,randperm(n)];endTabu(:,1)=(Randpos(1,1:m))'; 
%% 第三步:m 只蚂蚁按概率函数选择下一座城市,完成各自的周游
%将 m 个蚂蚁置于n个城市上,计算待选城市的概率分布,m 只蚂蚁按概率函数选择下一座城市,完成各自的周游。for j=2:nfor i=1:mvisited=Tabu(i,1:(j-1));  %己访问的城市J=zeros(1,(n-j+1));       %待访问的城市P=J;                      %待访问城市的选择概率分布Jc=1;for k=1:nif length(find(visited==k))==0J(Jc)=k;Jc=Jc+1;endend
%计算待选城市的概率分布for k=1:length(J)P(k)=(Tau(visited(end),J(k))^Alpha)...*(Eta(visited(end),J(k))^Beta);endP=P/(sum(P));
%按概率原则选取下一个城市Pcum=cumsum(P);         % 如 P=[1 2 3 4],则cumsum(P)=[1 3 6 10],要累加,轮盘赌法,依次看是否在转得的区域内Select=find(Pcum>=rand);%轮盘赌法随机选择to_visit=J(Select(1));  %待选择的城市Tabu(i,j)=to_visit;     %访问的城市endendif NC>=2Tabu(1,:)=R_best(NC-1,:);   %最佳路线end
%% 第四步:记录本次迭代最佳路线L=zeros(m,1);for i=1:mR=Tabu(i,:);  %第i只蚂蚁走过的城市for j=1:(n-1)L(i)=L(i)+D(R(j),R(j+1));  %计算i只蚂蚁走过的路径endL(i)=L(i)+D(R(1),R(n)); %加上初始位置的路径endL_best(NC)=min(L);      %获取路径最少的一只pos=find(L==L_best(NC));%在50只蚂蚁中寻找走最少的一只R_best(NC,:)=Tabu(pos(1),:);%记录最佳路径%% 第五步:更新信息素%蚁环算法更新信息素增量%离线更新——蚁群Delta_Tau=zeros(n,n);for i=1:mfor j=1:(n-1)Delta_Tau(Tabu(i,j),Tabu(i,j+1))=...Delta_Tau(Tabu(i,j),Tabu(i,j+1))+Q/L(i);%信息素增量的更新endDelta_Tau(Tabu(i,n),Tabu(i,1))=...Delta_Tau(Tabu(i,n),Tabu(i,1))+Q/L(i);%加上起使信息素增量的更新endTau=(1-Rho).*Tau+Delta_Tau;  %更新公式
%% 第六步: 禁忌表清零Tabu=zeros(m,n);
%历代最优路线for i=1:n-1plot([ C(R_best(NC,i),1), C(R_best(NC,i+1),1)],...[C(R_best(NC,i),2), C(R_best(NC,i+1),2)],'bo-');%绘制路径hold on;endplot([C(R_best(NC,n),1), C(R_best(NC,1),1)],...[C(R_best(NC,n),2), C(R_best(NC,1),2)],'ro-');  %绘制更新过程title(['优化最短距离:',num2str(L_best(NC))]); %输出结果hold off;pause(0.005);NC=NC+1;   %迭代+1 
end
%% 第七步:输出结果
Pos=find(L_best==min(L_best));
Shortest_Route=R_best(Pos(1),:);          %最佳路线 
Shortest_Length=L_best(Pos(1));           %最佳路线长度
figure(2),
plot(L_best)
xlabel('迭代次数')
ylabel('目标函数值')
title('适应度进化曲线')

七、代码(改进后)

clear all;      %清除所有变量           
close all;      %清图        
clc;            %清屏
%% 初始化sumnum=0;       %记录选择概率全为0的次数
m=100;         %蚂蚁个数           
Alpha=1;      %信息素重要程度参数                         
Beta=5;       %启发式因子重要程度参数            Rho=1;        %信息素蒸发系数           
Rho_min=0.2;    %最小信息素蒸发系数   
num_G=0;         %迭代多少次最优值不变得次数
num_G_max=3;    %最大迭代多少次最优值不变得次数G_max=200;    %最大迭代次数            
Q=100;        %信息素增加强度系数            %48 个省会城市坐标
C=[6734	1453;2233	10;5530	1424;401	841;3082	1644;7608	4458;
7573	3716;7265	1268;6898	1885;1112	2049;5468	2606;5989	2873;
4706	2674;4612	2035;6347	2683;6107	669;7611	5184;7462	3590;
7732	4723;5900	3561;4483	3369;6101	1110;5199	2182;1633	2809
4307	2322;675	1006;7555	4819;7541	3981;3177	756;7352	4506;
7545	2801;3245	3305;6426	3173;4608	1198;23	2216;7248	3779;
7762	4595;7392	2244;3484	2829;6271	2135;4985	140;1916	1569;
7280	4899;7509	3239;10	2676;6807	2993;5185	3258;3023	1942];        %% 第一步:变量初始化
aaaa=eps;
n=size(C,1);          %n 表示问题的规模(城市个数)  
D=zeros(n,n);         %D 表示两个城市距离间隔矩阵  
for i=1:nfor j=1:nif i~=jD(i,j)=((C(i,1)-C(j,1))^2+(C(i,2)-C(j,2))^2)^0.5;    %计算两两城市之间的距离elseD(i,j)=eps;%eps表示从 1.0 到下一个最大双精度数的距离endD(j,i)=D(i,j);end
end
Eta=1./D;                       %Eta 为启发因子,这里设为距离的倒数
Tau=ones(n,n);                  %Tau 为信息素矩阵 
Tabu=zeros(m,n);                %存储并记录路径的生成
NC=1;                           %迭代计数器
R_best=zeros(G_max,n);          %各代最佳路线
L_best=inf.*ones(G_max,1);      %各代最佳路线的长度
figure(1);                      %优化解
%% 判断是否满足终止条件:若满足,则结束搜索过程,输出优化值;若不满足,则继续进行迭代优化。
while NC<=G_max            
%% 第二步:将 m 只蚂蚁放到 n 个城市上Randpos=[];for i=1:(ceil(m/n))%蚂蚁个数除以城市个数向上取整Randpos=[Randpos,randperm(n)];%生成ceil(m/n)个1*n的矩阵并合并endTabu(:,1)=(Randpos(1,1:m))'; %将Randpos的第一行前m个放到Tabu的第1列
%% 第三步:m 只蚂蚁按概率函数选择下一座城市,完成各自的周游
%将 m 个蚂蚁置于n个城市上,计算待选城市的概率分布,m 只蚂蚁按概率函数选择下一座城市,完成各自的周游。for j=2:n%第j个城市for i=1:m%第i个蚂蚁visited=Tabu(i,1:(j-1));  %己访问的城市J=zeros(1,(n-j+1));       %待访问的城市P=J;                      %待访问城市的选择概率分布Jc=1;for k=1:nif length(find(visited==k))==0%判断第k个城市有没有被访问J(Jc)=k;Jc=Jc+1;endend
%计算待选城市的概率分布for k=1:length(J)P(k)=(Tau(visited(end),J(k))^Alpha)...*(Eta(visited(end),J(k))^Beta);end%% 修改%开始if sum(P)==0to_visit=J(ceil(length(J)*rand)); %% 如果所选择的全部城市信息素为0将随机选择sumnum=sumnum+1;else%结束    P=P/(sum(P));
%按概率原则选取下一个城市Pcum=cumsum(P);         % 如 P=[1 2 3 4],则cumsum(P)=[1 3 6 10],要累加,轮盘赌法,依次看是否在转得的区域内Select=find(Pcum>=rand);%轮盘赌法随机选择to_visit=J(Select(1));  %待选择的城市endTabu(i,j)=to_visit;     %访问的城市endendif NC>=2Tabu(1,:)=R_best(NC-1,:);   %最佳路线end
%% 第四步:记录本次迭代最佳路线L=zeros(m,1);%m*1的距离矩阵for i=1:mR=Tabu(i,:);  %第i只蚂蚁走过的城市for j=1:(n-1)L(i)=L(i)+D(R(j),R(j+1));  %计算i只蚂蚁走过的路径endL(i)=L(i)+D(R(1),R(n)); %加上初始位置的路径endL_best(NC)=min(L);      %获取路径最少的一只pos=find(L==L_best(NC));%在m只蚂蚁中寻找走最少的一只R_best(NC,:)=Tabu(pos(1),:);%记录最佳路径
%% 改进算法%开始
if NC>1
if L_best(NC)==L_best(NC-1)num_G=num_G+1;if num_G >= num_G_maxif Rho>=Rho_minRho=0.95*Rho;if Rho<=Rho_minRho=Rho_min;endnum_G=0;endend
end
end
Rho_list(NC)=Rho;
%结束%% 第五步:更新信息素%蚁环算法更新信息素增量%离线更新——蚁群Delta_Tau=zeros(n,n);for i=1:mfor j=1:(n-1)Delta_Tau(Tabu(i,j),Tabu(i,j+1))=...Delta_Tau(Tabu(i,j),Tabu(i,j+1))+Q/L(i);%信息素增量的更新endDelta_Tau(Tabu(i,n),Tabu(i,1))=...Delta_Tau(Tabu(i,n),Tabu(i,1))+Q/L(i);%加上起使信息素增量的更新endTau=(1-Rho).*Tau+Delta_Tau;  %更新公式
%% 第六步: 禁忌表清零Tabu=zeros(m,n);
%历代最优路线for i=1:n-1plot([ C(R_best(NC,i),1), C(R_best(NC,i+1),1)],...[C(R_best(NC,i),2), C(R_best(NC,i+1),2)],'bo-');%绘制路径hold on;endplot([C(R_best(NC,n),1), C(R_best(NC,1),1)],...[C(R_best(NC,n),2), C(R_best(NC,1),2)],'ro-');  %绘制更新过程title(['优化最短距离:',num2str(L_best(NC))]); %输出结果hold off;pause(0.005);NC=NC+1;   %迭代+1 
end
%% 第七步:输出结果
Pos=find(L_best==min(L_best));
Shortest_Route=R_best(Pos(1),:);          %最佳路线 
Shortest_Length=L_best(Pos(1));           %最佳路线长度
figure(2),
plot(L_best)
xlabel('迭代次数')
ylabel('目标函数值')
title('适应度进化曲线')
figure(3),
plot(Rho_list)
xlabel('迭代次数')
ylabel('挥发系数')
title('挥发系数自适应曲线')

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

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

相关文章

给哔哩哔哩bilibili电脑版做个手机遥控器

前言 bilibili电脑版可以在电脑屏幕上观看bilibili视频。然而&#xff0c;电脑版的bilibili不能通过手机控制视频翻页和调节音量&#xff0c;这意味着观看视频时需要一直坐在电脑旁边。那么&#xff0c;有没有办法制作一个手机遥控器来控制bilibili电脑版呢&#xff1f; 首先…

JavaEE初阶---网络原理之TCP篇(二)

文章目录 1.断开连接--四次挥手1.1 TCP状态1.2四次挥手的过程1.3time_wait等待1.4三次四次的总结 2.前段时间总结3.滑动窗口---传输效率机制3.1原理分析3.2丢包的处理3.3快速重传 4.流量控制---接收方安全机制4.1流量控制思路4.2剩余空间大小4.3探测包的机制 5.拥塞控制---考虑…

【C语言刷力扣】3216.交换后字典序最小的字符串

题目&#xff1a; 解题思路&#xff1a; 字典序最小的字符串&#xff1a;是指按照字母表顺序排列最前的字符串。即字符串在更靠前的位置出现比原字符串对应字符在字母表更早出现的字符。 枚举数组元素&#xff0c;尽早将较小的同奇偶的相邻字符交换。 char* getSmallestString…

Java:Map和Set练习

目录 查找字母出现的次数 只出现一次的数字 坏键盘打字 查找字母出现的次数 这道题的思路在后面的题目过程中能用到&#xff0c;所以先把这题给写出来 题目要求&#xff1a;给出一个字符串数组&#xff0c;要求输出结果为其中每个字符串及其出现次数。 思路&#xff1a;我…

【宠粉赠书】大模型项目实战:多领域智能应用开发

在当今的人工智能与自然语言处理领域&#xff0c;大型语言模型&#xff08;LLM&#xff09;凭借其强大的生成与理解能力&#xff0c;正在广泛应用于多个实际场景中。《大模型项目实战&#xff1a;多领域智能应用开发》为大家提供了全面的应用技巧和案例&#xff0c;帮助开发者深…

【商汤科技-注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…

Nginx防盗链配置

1. 什么是盗链? 盗链是指服务提供商自己不提供服务的内容&#xff0c;通过技术手段绕过其它有利益的最终用户界面&#xff08;如广告&#xff09;&#xff0c;直接在自己的网站上向最终用户提供其它服务提供商的服务内容&#xff0c;骗取最终用户的浏览和点击率。受益者不提供…

Oracle+11g+笔记(8)-备份与恢复机制

Oracle11g笔记(8)-备份与恢复机制 8、备份与恢复机制 8.1 备份与恢复的方法 数据库的备份是对数据库信息的一种操作系统备份。这些信息可能是数据库的物理结构文件&#xff0c;也可能是某一部分数 据。在数据库正常运行时&#xff0c;就应该考虑到数据库可能出现故障&#…

基于Multisim的篮球比赛电子记分牌设计与仿真

一、设计任务与要求 设计一个符合篮球比赛规则的记分系统。 &#xff08;1&#xff09;有得1分、2分和3分的情况&#xff0c;电路要具有加、减分及显示的功能。 &#xff08;2&#xff09;有倒计时时钟显示&#xff0c;在“暂停时间到”和“比赛时间到”时&#xff0c;发出声光…

易友BOM管理软件

易友BOM管理软件介绍 易友BOM管理软件是一款功能齐全、操作简便、安全可靠的BOM管理系统。它为企业提供了多方面的BOM管理解决方案&#xff0c;帮助企业提高生产效率、降低成本、增强灵活性并提升竞争力。制造企业&#xff0c;都可以通过易友BOM管理软件来实现BOM管理的优化和…

【模型学习之路】手写+分析bert

手写分析bert 目录 前言 架构 embeddings Bertmodel 预训练任务 MLM NSP Bert 后话 netron可视化 code2flow可视化 fine tuning 前言 Attention is all you need! 读本文前&#xff0c;建议至少看懂【模型学习之路】手写分析Transformer-CSDN博客。 毕竟Bert是tr…

不用求人,4个方法快速恢复小米手机删除短信

手机短信作为我们日常办理事情的重要验收通道&#xff0c;往往承载着许多重要的信息。然而&#xff0c;由于各种原因&#xff0c;我们可能会不小心删除了重要的短信。那么&#xff0c;小米手机用户如何恢复这些被删除的短信呢&#xff1f;接下来&#xff0c;我们将分点为您详细…

爆肝整理14天AI工具宝藏合集(三)

&#x1f6e0;️以下是我为大家整理的AI工具宝藏合集&#xff08;三&#xff09;&#xff1a; &#x1f4a1;AI搜索 1️⃣ 天工AI搜索 2️⃣ 秘塔AI搜索 3️⃣ 夸克AI搜索 4️⃣ 开搜AI搜索 &#x1f4a1; AI视频 1️⃣ 可灵AI 2️⃣ 即梦AI 3️⃣ Vidu 4️⃣ Stable Video …

vue版本太低无法执行vue ui命令

连接 ui和create目前都只支持3.0以后得版本才能使用 https://blog.csdn.net/m0_67318913/article/details/136775252?utm_mediumdistribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-0-136775252-blog-121204604.235v43pc_blog_bottom_relevance…

ETL集成工具丨如何运用ETLCloud单步调试断点功能

在现代数据处理领域&#xff0c;ETLCloud 的单步调试断点功能正成为数据管理的重要工具。ETLCloud 是一个强大的云端数据处理平台&#xff0c;它提供了灵活的单步调试功能&#xff0c;使得用户能够逐步跟踪和分析数据处理流程。本文将探讨如何运用 ETLCloud 的单步调试断点功能…

python 模块和包、类和对象

模块 模块是包含 Python 代码的文件&#xff0c;通常用于组织相关的函数、类和其他语句。模块可以被导入并在其他 Python 文件中使用。 创建模块 假设你创建了一个名为 mymodule.py 的文件&#xff0c;内容如下&#xff1a; # mymodule.pydef greet(name): return f"…

Linux系统用户操作以及权限管理

用户账号 用户账号&#xff1a;linux系统当中用户的角色&#xff0c;以及用户所拥有的权限 超级管理员&#xff1a;root roottest1&#xff1a;~# 命令含义root表示当前的登录用户test1当前主机名~当前目录#表示当前用户时管理员$表示当前用户是普通用户 exit&#xff1a;…

全新更新!Fastreport.NET 2025.1版本发布,提升报告开发体验

在.NET 2025.1版本中&#xff0c;我们带来了巨大的期待功能&#xff0c;进一步简化了报告模板的开发过程。新功能包括通过添加链接报告页面、异步报告准备、HTML段落旋转、代码文本编辑器中的文本搜索、WebReport图像导出等&#xff0c;大幅提升用户体验。 FastReport .NET 是…

Unity(四十八):Unity与Web双向交互

效果 游戏对象绑定脚本 游戏脚本源码 using System.Collections; using System.Collections.Generic; using UnityEngine;public class Tent : MonoBehaviour {public Camera camera;// Start is called before the first frame updatevoid Start(){}// Update is called once…

Docker:容器化和虚拟化

虚拟化 虚拟化是一种资源管理技术&#xff0c;它将计算机的各种实体资源&#xff08;如CPU、内存、磁盘空间、网络适配器等&#xff09;予以抽象、转换后呈现出来&#xff0c;并可供分割、组合为一个或多个电脑配置环境。这些资源的新虚拟部分是不受现有资源的架设方式、地域或…