以node / link文件表征的道路网络-----dijkstra算法yyds-----基于南京公路公开数据做路径规划(中)------Python实现

3天干完6个月的活,Claude把模型搬上AMD 一条挺刺激的消息:Anthropic 给投资人的材料里有一张幻灯片,写着它的 Claude Mythos Preview 只花了大约​,就摸清了怎么让另一个 Claude 模型在 AMD 的 MI355X 上跑起来。同一处还写了个对照数字:过去给一块新芯片做推理适配,通常要几十名工程师、​。3 天对 6 个月,这个比值太扎眼,当天中文互联网上就冒出一堆「英伟达的护城河塌了」的说法。我把能翻到的材料都翻了一遍,越看越觉得,塌掉的那一小块是真的,可塌的位置和很多人想的不一样。 阅读详情

从理论到实现,需要数据、需要代码、需要运气

以node / link文件表征的道路网络-----dijkstra算法yyds-----基于南京公路公开数据做路径规划(上)
基本讲清楚了最短路算法的基本原理

下面主要做几件事:
①把node和link文件导入
②把有效字段输入算法
③输出我想要的结果

核心算法如下:

import pandas as pd
import numpy as np
import seaborn as sns
sns.set(style="ticks", color_codes=True)

def dijkstra(start, adjacency_matrix):
    passed = [start]  
    nopass = [x for x in range(len(adjacency_matrix)) if x != start]  
    dis = adjacency_matrix[start]  
    
    while len(nopass):
        idx = nopass[0]
        for i in nopass:
            if dis[i] < dis[idx]:
                idx = i

        nopass.remove(idx)
        passed.append(idx)

        for i in nopass:
            if dis[idx] + adjacency_matrix[idx][i] < dis[i]:
                dis[i] = dis[idx] + adjacency_matrix[idx][i]
                route_list_index[i].append(idx)

    return dis

下面就是些导入数据之类的:

class ReadData:
    def __init__(self, node, link):  # 类属性
        self.node = 'node.csv'
        self.link = 'link.csv'

    def read_node(self):  
        self.node_list = []
        with open(self.node, "r") as fl_node:
            df_node = pd.read_csv(fl_node)
            for i in range(0, len(df_node)):
                a = Node()  
                a.node_id = df_node.loc[i, "node_id"]
                a.x = df_node.loc[i, "x_coord"]
                a.y = df_node.loc[i, "y_coord"]
                self.node_list.append(a)
        # print("读取的node结果为:")
        # print(df_node)
        # 看看数据有没有导入成功是个好习惯,后续的该类做法,就作为中间过程,不保留了
        
    def read_link(self): 
        self.link_list = []
        with open(self.link, "r") as fl_link, open(self.node, "r") as fl_node:
            df_link = pd.read_csv(fl_link)
            df_node = pd.read_csv(fl_node)
            # link_uni_lst = list(pd.unique(df_link["link_id"]))
            node_uni_lst = list(pd.unique(df_node["node_id"]))

            for i in range(0, len(df_link)):
                # print("read link", i/len(df_link))
                b = Link()  
                b.link_id = df_link.loc[i, "link_id"]
                b.length = df_link.loc[i, "length"]
                b.lanes = df_link.loc[i, "lanes"]
                b.free_speed = df_link.loc[i, "free_speed"]
                b.from_node_id = df_link.loc[i, "from_node_id"]
                b.to_node_id = df_link.loc[i, "to_node_id"]
                b.spend_time = df_link.loc[i, "length"] / (df_link.loc[i, "free_speed"]/3.6)  
                
                from_node = self.node_list[node_uni_lst.index(b.from_node_id)]
                from_node.flow_out_link.append(b.link_id)
                from_node.flow_out_node.append(b.to_node_id)

                to_node = self.node_list[node_uni_lst.index(b.to_node_id)]
                to_node.flow_in_link.append(b.link_id)
                to_node.flow_in_node.append(b.from_node_id)
                self.link_list.append(b)
    

class Node:  
    def __init__(self):
        self.node_id = None
        self.x = None
        self.y = None
        self.flow_in_link = [] 
        self.flow_out_link = []  
        self.flow_in_node = []  
        self.flow_out_node = []  


class Link:  
    def __init__(self):
        self.link_id = None
        self.length = None
        self.lanes = None
        self.free_speed = None
        self.from_node_id = None
        self.to_node_id = None
        self.spend_time = None



network = ReadData(0, 0)
print(network.read_node()) 
print(network.read_link()) 
print()

node_uni = list(pd.unique(pd.read_csv('node.txt')["node_id"]))
link_uni = list(pd.unique(pd.read_csv('link.txt')["link_id"]))
size = len(node_uni)  
dis = np.ones((size, size))*100000  
for i in range(0, len(network.link_list)):  
    dis[node_uni.index(network.link_list[i].from_node_id), node_uni.index(network.link_list[i].to_node_id)] = network.link_list[i].length

for i in range(0, size):
    dis[i, i] = 0


start_id = 5653  # 这里是起点编号
end_id = 2916 # 这里是终点编号

start_node_index = node_uni.index(start_id)  
end_node_index = node_uni.index(end_id)
route_list_index = [[] for i in range(0, size)]  
route_list_id = [] 
distance_list = dijkstra(start_node_index, dis)  
k = route_list_index[end_node_index][0]

while k != start_node_index:
    print(node_uni[k])
    route_list_id.append(node_uni[k])
    if len(route_list_index[k]) != 0:
        k = route_list_index[k][0]
    else:
        k = start_node_index
route_list_id.append(start_id)
route_list_id.reverse()
route_list_id.append(end_id)

至此算法运算结束
那就输出我们想要的结果吧:

print('起点标号:', start_id, ',在储存结构中的索引:', start_node_index)
print('终点标号:', end_id, ',在储存结构中的索引:', end_node_index)
#print('两点之间的距离为', distance_list[end_node_index], '米')
print('两点之间的路径为', route_list_id)

在这里插入图片描述
完事儿
下一篇讲我和代码的辛酸故事,代码复现不了的原因,或许在后面
在这里插入图片描述

【老生谈算法】matlab实现基于蚁群算法的二维路径规划算法——路径规划算法 人们在观察蚂蚁搜索食物的时候发现,蚂蚁在寻找食物时,总在走过的路径上释放一种称为信息素的分泌物,信息素能够保留一段时间,使得在一定范围内的其他蚂蚁能够觉察到该信息素的存在。后继蚂蚁在选择路径时,会选择信息素浓度较高的路径,并且在经过时留下自己的信息素,这样该路径的信息素会不断增强,蚂蚁选择的概率也在不断增大。路径规划算法较多,大体上可分为全局路径规划算法和局部路径规划方法两类,其中,全局路径规划方法包括位形空间法、广义锥方法、顶点图像法、栅格划归法;本算法已经整理成文档如下,有需要的朋友可以点击进行下载。 阅读详情

相关推荐

如何处理动态语言(Python / JS)的“隐形”调用链?

本文揭示动态语言(Python/JS)中静态AST解析导致调用链“断链”的核心问题,提出通过运行时追踪补全图谱的解决方案。基于Code-Graph-RAG的cgr trace机制,分别利用pytest插件与V8 Profiler捕获真实调用路径,将动态边合并至静态图谱,并在权重体系中提升动态边优先级。实践表明,该方法可显著提升图谱覆盖率,实现“结构+行为”双视角理解代码,为MCP与Rerank系统提供可靠支持。

xianyinsuifeng的博客 419

关于栅格数据四兄弟-.osm文件、shp文件、node\link文件、json文件(下)

万丈高楼平地起,数据还得靠运气

吃饱了写的博客 2229

大疆OcuSync vs 传统2.4GHz:深度拆解无人机图传射频模块的硬件差异

本文深度对比了大疆OcuSync与传统2.4GHz无人机图传射频模块的硬件差异,涵盖芯片组、天线系统、PCB设计、散热方案及生产测试等核心环节。重点解析OcuSync的全定制SoC芯片、智能MIMO天线阵列及精密PCB布局如何实现革命性性能提升,为无人机图传技术发展提供专业参考。

u5v6w7的博客 806

以node / link文件表征的道路网络-----基于南京公路公开数据做路径规划(下)------dijkstra算法的一些简单花样

东北饺子要配卤猪蹄和凉拌土豆丝

吃饱了写的博客 327

麒麟系统下PaddleOCR的离线部署实战:从环境搭建到模型优化

本文详细介绍了在国产麒麟操作系统上离线部署百度PaddleOCR的完整实战流程。从系统环境准备、Conda虚拟环境搭建,到PaddlePaddle框架和PaddleOCR的离线安装,再到预训练模型的本地部署与优化技巧,提供了全面的文字识别解决方案。重点解决了离线环境下依赖包管理、模型量化加速等核心问题,并附带了批量处理与内存监控的进阶代码,适用于对数据安全有严格要求的政务、金融等场景。

docker7nomad的博客 963

车道线检测1.0(Python+Opencv基础版)

车道线检测是指在道路上自动检测和识别车道线的过程。车道线是道路上的标记,用于指示车辆行驶的方向和位置。 通过对车道线进行检测和识别,自动驾驶和智能驾驶系统可以实现车辆的自动导航、车道保持、车道偏离警告等功能。

Dream_orz的博客 4265

路径规划_路径

路径规划Absolute links are easy to create, since they include the full path to the resource. Local links are a little harder, in the sense that the full path is not required, but rather it is relative bet...

cungui5726的博客 255

【驭风计划 机器学习】实验6 基于集成学习的 Amazon 用户评论质量预测

¶随着电商平台的兴起,以及疫情的持续影响,线上购物在我们的日常生活中扮演着越来越重要的角色。在进行线上商品挑选时,评论往往是我们十分关注的一个方面。然而目前电商网站的评论质量参差不齐,甚至有水军刷好评或者恶意差评的情况出现,严重影响了顾客的购物体验。因此,对于评论质量的预测成为电商平台越来越关注的话题,如果能自动对评论质量进行评估,就能根据预测结果避免展现低质量的评论。本案例中我们将基于集成学习的方法对 Amazon 现实场景中的评论质量进行预测。

Mege1的博客 473

以node / link文件表征的道路网络-----dijkstra算法yyds-----基于南京公路公开数据做路径规划(依然是中)------Python实现的注意事项

葱油拌面,我大吃特吃!

吃饱了写的博客 326

风电功率预测项目技术白皮书:短期、超短期、中长期全尺度算法详解与工程落地

聚焦风电功率预测的时间尺度与算法:短期(0~72h)以XGBoost/LightGBM/CatBoost及深度学习为主,超短期(0~4h)采用ARMA+LSTM,中长期用LightGBM等,并涵盖概率预测、多气象源融合、AI大模型+物理模型混合策略、极端天气应对及工程运维要点。

算法工程师 326

ACC自适应巡航系统

ACC自适应巡航系统可在高速驾驶情况下,自动控制纵向跟车距离,减轻驾驶员的工作量。该功能主要依靠安装在车辆前挡风玻璃上的摄像头和布置在格栅附近的雷达进行融合实现。

未知艺术家的博客 206

本地化部署 DeepSeek,构建单细胞与空间转录组 AI 分析平台

本地化部署 DeepSeek,构建单细胞与空间转录组 AI 分析平台

weixin_53637133的博客 178

全功能tgbot/Telegram机器人多功能有后台版源码

trx兑换 闪兑 关键字监控 群管 usdt监控 余额查询 推广分享 等几乎常见的tg机器人功能都有。全功能tgbot/telegram机器人多功能有后台版源码-打包好的可以直接上手。

百创科技 2703

AI全栈实战 | 3.9-01 爬虫入门:requests 加 BeautifulSoup 三分钟跑通,但 90% 的人栽在这 4 个“礼貌“问题上

⚠️:本文内容仅用于。请遵守目标站点的服务条款与相关法律法规,不得对目标服务造成负担,不得采集、传播个人隐私数据。技术是中性的,边界在你手里。爬虫的入门技术(requests 发请求 + BeautifulSoup 解析)三分钟就能学会。真正区分"会用爬虫"和"会做爬虫的人"的,是这篇我们跑通"请求→解析→存储"的最小闭环,然后重点把"合规与礼貌"这根弦给你绷上。

源码获取 | 运行部署 | 定制二开修改,如果回复不及时请耐心等待,请见谅。 425

电机驱动器MP6540H应用设计

/ ... 其他初始化函数(SystemClock_Config, MX_GPIO_Init, MX_TIM1_Init, MX_TIM2_Init)需要你根据STM32CubeMX生成或手动编写。// 假设霍尔传感器引脚是 GPIO_PIN_8, GPIO_PIN_9, GPIO_PIN_10。// 低侧U相GPIO引脚。

zhusl6688的博客 665

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

从一段视频到可漫游的 4D 有声场景:思路拆解与最小复现手记

只需一段手机视频,你就能生成可"走进去"的 4D 有声场景:转头时狗叫声方向随之变化,走近时声音更清晰。本文拆解 Video-to-4DAVScene 的核心思路,手把手带你用几十行 Python 搭出最小管线,把视频中的运动物体变成带空间位置的声源,并附上三个真实踩坑的排障经验,代码可直接跑。🎧

helloagent的博客 241

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

【每天一个 Python 小案例30】Python 基础知识综合小项目:我的工具盒

作为系列收官,本篇把前 29 篇的知识点合成一个能直接用的命令行工具"我的工具盒":计算器(用 ast 解析表达式,不碰 eval)、单位换算与温度转换(一张换算表 + 特例分支)、记账与分类统计(Decimal + JSON 持久化)、以及用"字典当命令表"把菜单和业务逻辑解耦的主循环。文中对比了 eval 的安全隐患与 ast 白名单的做法,解释了 lambda 闭包在字典里的写法与晚绑定陷阱,并在最后给出整个系列的知识地图,把变量、数据结构、控制流、函数、类、异常、文件、标准库八块内容对应到具体篇目。

xinjiyaya的博客 427

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

yolo 和 deft 算法的区别

你应该是打错了:是,不是 defrat;

曾大强博客 257

二进制木马免杀-Python 分离免杀与 Web 挂马

二进制木马免杀-Python 分离免杀与 Web 挂马

2503_94637398的博客 269

两张表合并之后,行数悄悄多了一倍

pandas merge 行数异常膨胀源于右表键不唯一,导致数据静默复制。实测显示,未聚合的右表(756行)与左表合并后行数增至504行,合计膨胀3.5倍,但无报错。validate 参数仅在检查键唯一性时有效,one_to_one 和 many_to_one 可拦截问题,但需结合 duplicated() 前置检查。正确做法为先按键聚合右表,再合并,避免重复。建议合并前后核对行数、合计,并使用 indicator=True 排查匹配情况,确保数据一致性。

patrickstar231的博客 227

蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级 备考:莫队算法离线区间查询详解

备赛进行时:第十八届蓝桥杯软件赛报名已于 2026-10-08 10:00 开启、12-18 14:00 截止,省赛定在 2027-04-10(C/C++·Python 程序设计 9:00–13:00);中国电子学会 2026 年 12 月软件编程(C/C++ 一级至十级、Python 一级至六级)考级报名 9/23–12/2 16:00、统考 12-12;全国青少年信息素养大赛 2026—2027 赛季算法应用主题赛也已进入复盘练兵窗口。

IT_Scratch的博客 170

我用 200 行代码写了个“代码屎山检测器“,扫完公司的老项目后我沉默了

这个工具不能帮你把屎山铲平,但至少能让你知道自己面对的是多大的山,也能在代码评审时用数据说话——“这个 PR 把圈复杂度从 12 推到了 18,能不能拆一下?毕竟,不能量化的东西,就没法改进。

xixiaoyunya的博客 251

智慧农业实战:育秧车间秧盘计数与苗情分级的Python实现

首先,建立统一的数据结构,保存每盘秧苗的编号、批次、覆盖度、叶色得分和播种天数。A = "壮苗"B = "合格苗"C = "弱苗"@dataclassdays: int。

荆棘鸟智能的博客 125

智叟云集-手机证据抓取系统的工程结构与应用入口

本文系统阐述手机证据抓取系统的工程结构与应用入口,涵盖四大层面:工程目录划分(Android、Python服务、Web页面、测试与构建工具);Android组件通过Manifest声明可启动页面,主界面由MainActivity管理;Python服务通过run.py解析参数并启动FastAPI应用,支持远程访问;浏览器页面采用HTML/CSS/JS分离架构,静态资源通过路径关联,实现动态交互。各模块分工明确,协同构建可运行的采集系统。

2301_77178996的博客 237

Java Arrays.asList 常见坑详解|UnsupportedOperationException、数组联动、基本类型 bug

解析 Arrays.asList 常见开发陷阱,演示 UnsupportedOperationException、底层数组引用共享、基本类型数组问题,区分 Arrays 内部 ArrayList 与 java.util.ArrayList,给出数组转 List 的各种场景正确代码。

weixin_42617033的博客 494

【随笔】KV缓存量化:省下的显存,要付出多少数值误差

用可运行量化器解释位宽、比例信息、分组和离群值的关系,核算KV缓存实际载荷,并给出Transformers配置与容量、延迟、质量验收方法。

code2cat的博客 470
上一篇: 以node / link文件表征的道路网络-----dijkstra算法yyds-----基于南京公路公开数据做路径规划(上)
下一篇: 以node / link文件表征的道路网络-----dijkstra算法yyds-----基于南京公路公开数据做路径规划(依然是中)------Python实现的注意事项
一顿四个菜
博客等级 码龄6年 202粉丝 21原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值