本基于java+路径规划+CS架构实现的A星算法求解最短路径问题演示程序,系统采用多层C/S软件架构,采用java 编程语言开发技术实现A*算法求解地图中的最短路径问题,实时获取计算用户在地图中设置的障碍点信息,计算可以完成路径规划的最短路径,提供完分析最短路径长度,重置地图,查看程序运行报告等功能,并且在程序运行界面提供完善的规则说明等。

原文地址

一、程序设计

本次基于java+路径规划+CS架构实现的A星算法求解最短路径问题演示程序,主要内容涉及:

主要功能模块:地图模拟、A算法实现、障碍点设置、路近计算,项目报告,长度计算、报告文件等等
主要包含技术:Java编程语言,java2D,多线程,JavaSwing,CS架构编程
主要包含算法:路径规划算法,A
算法等

二、效果实现

障碍设置

路径规划

其他效果省略

三、核心代码

1.障碍设置
本系统障碍设置模块,主要采用java2D在地图中监听用户的点击操作,设置对应的点击位置变换颜色,标识当前位置为障碍点,纳入后续的最短路径规划计算中。

private class ChangeColor implements MouseListener {int i, j;private JPanel jp;public ChangeColor(JPanel jp, int i, int j) {this.jp = jp;this.i = i;this.j = j;}public void mousePressed(MouseEvent e) {if (jp.getBackground() == Color.WHITE) {jp.setBackground(Color.BLACK);pathMap.map[i][j].setreachable(false);} else {jp.setBackground(Color.WHITE);pathMap.map[i][j].setreachable(true);}}public void mouseEntered(MouseEvent e) {}public void mouseClicked(MouseEvent e) {}public void mouseReleased(MouseEvent e) {}public void mouseExited(MouseEvent e) {}}

2.A算法路径规划
本系统主要采用A
算法实现在充满障碍点的地图中完成最短路径的规划字段,主要核心算法实现如下。

    private ArrayList<PathNode> open = new ArrayList<PathNode>();private ArrayList<PathNode> close = new ArrayList<PathNode>();public double CaculategValue(PathNode pathNode) {if (pathNode.getFatherNode() == null) {pathNode.setgValue(0);} else {pathNode.setgValue(pathNode.getFatherNode().getgValue() + 40);}return pathNode.getgValue();}public double CaculatehValue(PathNode pathNode, PathNode endNode) {pathNode.sethValue((Math.abs(pathNode.getX() - endNode.getX()) + Math.abs(pathNode.getY() - endNode.getY())));return pathNode.gethValue();}public double CaculatefValue(PathNode pathNode) {pathNode.setfValue();return pathNode.getfValue();}public void addOpenList(PathNode pathNode, PathMap pathMap) {int i = pathNode.getNumber() / 10;int j = pathNode.getNumber() % 10;for (int x = -1; x < 2; x++) {for (int y = -1; y < 2; y++) {if ((Math.abs(x) + Math.abs(y)) == 1) {if ((i + x) >= 0 && (i + x) < 10 && (j + y) >= 0 && (y + j) < 10) {if (pathMap.map[i + x][j + y].isReachable() && !close.contains(pathMap.map[i + x][j + y])) {if (open.contains(pathMap.map[i + x][j + y])) {double gValue = pathNode.getgValue() + 40;if (gValue < pathMap.map[i + x][j + y].getgValue()) {pathMap.map[i + x][j + y].setFatherNode(pathNode);pathMap.map[i + x][j + y].setgValue(gValue);;pathMap.map[i + x][j + y].setfValue();}} else {pathMap.map[i + x][j + y].setFatherNode(pathNode);CaculategValue(pathMap.map[i + x][j + y]);CaculatehValue(pathMap.map[i + x][j + y], pathMap.map[9][9]);CaculatefValue(pathMap.map[i + x][j + y]);open.add(pathMap.map[i + x][j + y]);}}}}}}}

BS1036-基于java+路径规划+CS架构实现的A星算法求解最短路径问题演示程序相关推荐

  1. 基于JAVA大学生规划平台计算机毕业设计源码+系统+lw文档+部署

    基于JAVA大学生规划平台计算机毕业设计源码+系统+lw文档+部署 基于JAVA大学生规划平台计算机毕业设计源码+系统+lw文档+部署 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开 ...

  2. C#,人工智能,机器人,路径规划,A*(AStar Algorithm)算法、源代码及计算数据可视化

    Peter Hart Nils Nilsson Bertram Raphael 参考: C#,人工智能(AI)机器人路径规划(Path Planning)的ARA*(Anytime Replannin ...

  3. java可以做cs架构吗_cs架构能用云服务器么(常用cs架构应用)

    我看了不少云服务器都是支持PHP要不就是java的,那支持C++开发的cs架构. 如你所述,据我所知 新浪的SAE的云服务器只支持php,python和jsp这三种脚本语言.目前需要付月租费的腾讯云服 ...

  4. 无人驾驶之路径规划:Dijkstra , A*, D*, D* Lite算法

    无人驾驶系统概述 上图为一无人驾驶车辆的简易系统框图.无人车辆首先通过摄像头,雷达之类的传感器来感知外部的信息,借助GPS/IMU等设备来确定自车在地理上的绝对位置以及姿态.紧接着,软件算法层面会将这 ...

  5. 左上角到右下角的路径 oj_【机器人路径规划】快速扩展随机树(RRT)算法

    内容无关:最近的课题内容和机器人运动规划方法有关,我把学习的内容整理成为工具箱上传到了我的github仓库,稍后将会发一篇说明介绍使用方法. XM522706601/robotics_tutorial ...

  6. python蚁群算法路径规划_使用python实现蚁群算法

    此次使用python实现蚁群算法是仿照蚁群优化算法的JAVA实现中的蚁群算法实现方法,使用的也是其中的数据(此处为上传数据),如需更深一步了解蚁群算法原理和具体实现过程,请参考蚁群优化算法的JAVA实 ...

  7. NLP-基础任务-中文分词算法(2)-基于词典:基于N-gram语言模型的分词算法【基于词典的分词方法】【利用维特比算法求解最优路径】【比机械分词精度高】【OOV:基于现有词典,不能进行新词发现处理】

    例子:"经常有意见分歧" 词典:["经常","有","意见","意","见",& ...

  8. 【智能优化算法】基于分段权重和变异反向学习的蝴蝶优化算法求解单目标优化问题附matlab代码

    1 简介 针对原始蝴蝶优化算法容易陷入局部最优解,收敛速度慢及寻优精度低等问题,提出分段权重和变异反向学习的蝴蝶优化算法.通过飞行引领策略来矫正邻域内蝴蝶的自身飞行,降低盲目飞行,增强算法跳出局部最优 ...

  9. 【优化求解】基于收敛因子和黄金正弦指引机制的蝴蝶优化算法求解单目标优化问题matlab代码(AGSABOA)

    1 简介 针对蝴蝶优化算法(butterfly optimization algorithm,BOA)中存在的局部开采和全局探索能力不均衡,易陷入局部最优值,收敛精度低等缺陷,提出收敛因子和黄金正弦指 ...

最新文章

  1. MySQL数据库半同步复制
  2. C++和 C 的区别
  3. 冯诺依曼架构的 IO 鸿沟,谁能来填补?
  4. java io内存泄露_java内存泄露和OutOfMemory
  5. RS485数据光端机产品特点及技术参数介绍
  6. php为什么搜不到字段,php-通过多个字段搜索.有时一个领域,有时不止一个领域
  7. 前端三大框架Angular React Vue
  8. Macaca-iOS入门那些事2
  9. PyCharm中脚本文件无法识别相对路径
  10. MYSQL 调优和使用必读
  11. Tomcat加载类机制 - 我们到底能走多远系列(14)
  12. 为什么不推荐使用BeanUtils属性转换工具,老程序员都不使用!
  13. 深度神经网络为何很难训练
  14. 解决Cannot resolve com.lowagie:itext:2.1.7.js6以及.net.jf.jasperresport下com.lowagie:itext标红的问题
  15. SQL正则表达式的应用 case的灵活应用
  16. iOS【UIDynamic重力、弹性碰撞吸附等现象】
  17. 最新如何将b站视频下载到电脑上不用插件
  18. 买iPhone担心买到翻新机?教你一招,轻松鉴别各个版本
  19. python编程语言与html5-派森(Python)编程有什么用?
  20. python 教程 w3 school_python爬取w3shcool的JQuery课程并且保存到本地

热门文章

  1. 向量三重积的等式推导证明
  2. c++指针当做数组用
  3. win10 cmd open camera
  4. 阿里云ECS建网站(建站)超详细全套完整图文教程! [
  5. 火车头采集:高效数据采集工具的介绍
  6. html如何在文字后加直线,CSS3 标题文本后的横线
  7. HTML5(七)表格-table标签、tr标签、td标签
  8. 图像压缩小波变换原理
  9. git如何选择性合并_Git分支合并选择
  10. ARM机器使用netdata监控