基于prim算法求出网络最小生成树实现网络社团划分和规划

本文涉及的产品
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时计算 Flink 版,5000CU*H 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 该程序使用MATLAB 2022a版实现路线规划,通过排序节点权值并运用Prim算法生成最小生成树完成网络规划。程序基于TSP问题,采用遗传算法与粒子群优化算法进行路径优化。遗传算法通过编码、选择、交叉及变异操作迭代寻优;粒子群优化算法则通过模拟鸟群觅食行为,更新粒子速度和位置以寻找最优解。

1.程序功能描述
路线制定

1,将算法得到的各社团的需充电节点数量排序,将其视为节点权值

2,利用prim算法求出最小生成树,即完成了整个网络规划。

2.测试软件版本以及运行结果展示
MATLAB2022a版本运行
1.jpeg
2.jpeg
3.jpeg
4.jpeg
5.jpeg

3.核心程序

%节点权值
W   = [];
Xz  = [];
Yz  = [];
Ridx= 0;
for j=1:length(Cpn)
    if Cpn(j) == 0%N型社团
       Ridx    = Ridx + 1; 
       tmp     = C{j,1};
       E       = Eres(tmp);
       %找到能量最小的三个
       [VV,II] = sort(E);
       %求出其质心作为停留点
       indx    = tmp(II(1:min(3,length(tmp))));
       Xz      = [Xz,mean(Xo(indx))];
       Yz      = [Yz,mean(Yo(indx))];
       %分析无需充电节点
       Nindx1  = find(E>=0.9*Ec);
       %分析需充电节点
       Nindx2  = find(E< 0.9*Ec);
       %权值
       W       = [W,length(Nindx2)];
    end
end
%权值
W
%利用prim算法求出最小生成树,即完成了整个网络规划
figure;
for j = 1:length(Cj)
    tmp = Cj{j,1};
    X0  = Xo(tmp);
    Y0  = Yo(tmp);
    plot(X0,Y0,colors{j});
    hold on
    Xc(j)= mean(X0);
    Yc(j)= mean(Y0);
    for i = 1:length(tmp)
        dist(i) = sqrt((Xc(j)-X0(i))^2 + (Yc(j)-Y0(i))^2);
    end
    if Cpn(j) == 1
       plot3(Xc(j),Yc(j),max(dist)); 
    else
       plot4(Xc(j),Yc(j),max(dist)); 
    end
    hold on
end
plot(Xc,Yc,'rs','LineWidth',2,'MarkerEdgeColor','b','MarkerFaceColor','y','MarkerSize',10)
title('社团划分结果(Red:P;Black:N),Yellow:P&N中心点');
hold on
[All_Lens,T,xx,yy]=func_prim([Xc;Yc]);
grid on;

%按先序遍历顺序访问
for i=1:length(T)-1
    Xc(i) = xx(T(1,i));
    Yc(i) = yy(T(1,i));
end
%统计首次通过的
Xc1 = unique(Xc);
Yc1 = unique(Yc);
%路由表,保存点坐标
[Xc1',Yc1']
12_035m

4.本算法原理
旅行商问题(Traveling Salesman Problem, TSP)是组合优化领域的一个经典NP难问题,旨在寻找访问一系列城市并返回起点的最短路径。TSP问题可以描述为:给定一个城市集合和每对城市之间的距离,要求找出访问每个城市一次并返回起点的最短路径。

4.1 遗传算法(Genetic Algorithm, GA)在TSP中的应用
遗传算法是一种模拟自然选择和遗传学机制的优化算法,适用于求解组合优化问题。在TSP问题中,GA通过编码生成初始路径种群,然后通过选择、交叉和变异等操作不断迭代优化,最终找到近似最优解。

编码方式:采用自然数编码,每个城市的编号代表一个基因,一条路径则由一串基因组成。
初始种群生成:随机生成一定数量的初始路径,构成初始种群。
适应度函数:以适应度函数来衡量每个个体的优劣。在TSP问题中,适应度函数通常取为路径长度的倒数。
选择操作:采用轮盘赌选择法,即根据每个个体的适应度值在总体适应度值中的比例来选择个体。
交叉操作:采用部分映射交叉(PMX)或顺序交叉(OX)等方法,生成新的个体。
变异操作:通过随机交换路径中两个城市的位置来实现变异。

4.2 粒子群优化算法在TSP中的应用
粒子群优化算法是一种模拟鸟群觅食行为的优化算法,适用于连续和离散优化问题。在TSP问题中,PSO将每个解看作一个粒子,通过不断更新粒子的速度和位置来寻找最优解。

  粒子表示:每个粒子表示一个可能的解,即一条路径。粒子的位置由路径中城市的排列顺序决定。
   速度更新公式:根据每个粒子的历史最优位置和群体最优位置来更新粒子的速度。速度更新公式为:(v_{id} = w * v_{id} + c1 * rand() * (pbest_{id} - x_{id}) + c2 * rand() * (gbest_d - x_{id})),其中 (v_{id}) 表示第i个粒子在第d维上的速度,(x_{id}) 表示第i个粒子在第d维上的位置,(pbest_{id}) 表示第i个粒子在第d维上的历史最优位置,(gbest_d) 表示群体在第d维上的最优位置,w为惯性权重,c1和c2为学习因子,rand()为随机数生成函数。

位置更新公式:根据更新后的速度来更新粒子的位置。位置更新公式为:(x{id} = x{id} + v_{id})。

   需要注意的是,在更新位置时要保证新生成的路径满足TSP问题的约束条件。
相关文章
|
28天前
|
弹性计算 人工智能 架构师
阿里云携手Altair共拓云上工业仿真新机遇
2024年9月12日,「2024 Altair 技术大会杭州站」成功召开,阿里云弹性计算产品运营与生态负责人何川,与Altair中国技术总监赵阳在会上联合发布了最新的“云上CAE一体机”。
阿里云携手Altair共拓云上工业仿真新机遇
|
4天前
|
人工智能 Rust Java
10月更文挑战赛火热启动,坚持热爱坚持创作!
开发者社区10月更文挑战,寻找热爱技术内容创作的你,欢迎来创作!
450 17
|
7天前
|
JSON 自然语言处理 数据管理
阿里云百炼产品月刊【2024年9月】
阿里云百炼产品月刊【2024年9月】,涵盖本月产品和功能发布、活动,应用实践等内容,帮助您快速了解阿里云百炼产品的最新动态。
阿里云百炼产品月刊【2024年9月】
|
20天前
|
存储 关系型数据库 分布式数据库
GraphRAG:基于PolarDB+通义千问+LangChain的知识图谱+大模型最佳实践
本文介绍了如何使用PolarDB、通义千问和LangChain搭建GraphRAG系统,结合知识图谱和向量检索提升问答质量。通过实例展示了单独使用向量检索和图检索的局限性,并通过图+向量联合搜索增强了问答准确性。PolarDB支持AGE图引擎和pgvector插件,实现图数据和向量数据的统一存储与检索,提升了RAG系统的性能和效果。
|
8天前
|
Linux 虚拟化 开发者
一键将CentOs的yum源更换为国内阿里yum源
一键将CentOs的yum源更换为国内阿里yum源
389 3
|
22天前
|
人工智能 IDE 程序员
期盼已久!通义灵码 AI 程序员开启邀测,全流程开发仅用几分钟
在云栖大会上,阿里云云原生应用平台负责人丁宇宣布,「通义灵码」完成全面升级,并正式发布 AI 程序员。
|
24天前
|
机器学习/深度学习 算法 大数据
【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析
2024“华为杯”数学建模竞赛,对ABCDEF每个题进行详细的分析,涵盖风电场功率优化、WLAN网络吞吐量、磁性元件损耗建模、地理环境问题、高速公路应急车道启用和X射线脉冲星建模等多领域问题,解析了问题类型、专业和技能的需要。
2603 22
【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析
|
6天前
|
存储 人工智能 搜索推荐
数据治理,是时候打破刻板印象了
瓴羊智能数据建设与治理产品Datapin全面升级,可演进扩展的数据架构体系为企业数据治理预留发展空间,推出敏捷版用以解决企业数据量不大但需构建数据的场景问题,基于大模型打造的DataAgent更是为企业用好数据资产提供了便利。
295 2
|
4天前
|
编译器 C#
C#多态概述:通过继承实现的不同对象调用相同的方法,表现出不同的行为
C#多态概述:通过继承实现的不同对象调用相同的方法,表现出不同的行为
106 65
|
24天前
|
机器学习/深度学习 算法 数据可视化
【BetterBench博士】2024年中国研究生数学建模竞赛 C题:数据驱动下磁性元件的磁芯损耗建模 问题分析、数学模型、python 代码
2024年中国研究生数学建模竞赛C题聚焦磁性元件磁芯损耗建模。题目背景介绍了电能变换技术的发展与应用,强调磁性元件在功率变换器中的重要性。磁芯损耗受多种因素影响,现有模型难以精确预测。题目要求通过数据分析建立高精度磁芯损耗模型。具体任务包括励磁波形分类、修正斯坦麦茨方程、分析影响因素、构建预测模型及优化设计条件。涉及数据预处理、特征提取、机器学习及优化算法等技术。适合电气、材料、计算机等多个专业学生参与。
1582 17
【BetterBench博士】2024年中国研究生数学建模竞赛 C题:数据驱动下磁性元件的磁芯损耗建模 问题分析、数学模型、python 代码