资源简介
AStarAlgorithm算法组成类
AStarAlgorithm类:提供核心查找算法的调用函数
Node类:保存路径节点的相关信息
NodeComparator类:提供节点比较功能
仿真模拟实现类组成
AvoidBlock类:程序入口
Robot类:接收栅格化后的二维数组地图输入,模拟避障运动
MyEnvl类:接收地图数据,执行模拟环境的初始化和全局路径规划算法的调用

代码片段和文件信息
package example;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class AStarAlgorithm {
private int[][] map;//地图(1可通过 0不可通过)
private List openList;//开启列表
private List closeList;//关闭列表
private final int COST_STRAIGHT = 10;//垂直方向或水平方向移动的路径评分
private int row;//行
private int column;//列
public AStarAlgorithm (int[][] mapint rowint column){
this.map=map;
this.row=row;
this.column=column;
openList=new ArrayList();
closeList=new ArrayList();
}
//查找坐标(-1:错误,0:没找到,1:找到了)
public int search(int x1int y1int x2int y2){
if(x1<0||x1>=column||x2<0||x2>=column||y1<0||y1>=row||y2<0||y2>=row){
return -1;
}
if(map[x1][y1]==0||map[x2][y2]==0){
return -1;
}
Node sNode=new Node(x1y1null);
Node eNode=new Node(x2y2null);
openList.add(sNode);
List resultList=search(sNode eNode);
if(resultList.size()==0){
return 0;
}
for(Node node:resultList){
map[node.getX()][node.getY()]=-1;
}
System.out.println(“路径长度:“+resultList.size());
return 1;
}
//查找核心算法
private List search(Node sNodeNode eNode){
List resultList=new ArrayList();
boolean isFind=false;
Node node=null;
while(openList.size()>0){
//取出开启列表中最低F值,即第一个存储的值的F为最低的
node=openList.get(0);
//判断是否找到目标点
if(node.getX()==eNode.getX()&&node.getY()==eNode.getY()){
isFind=true;
break;
}
//上
if((node.getY()-1)>=0){
checkPath(node.getX()node.getY()-1node eNode COST_STRAIGHT);
}
//下
if((node.getY()+1)
checkPath(node.getX()node.getY()+1node eNode COST_STRAIGHT);
}
//左
if((node.getX()-1)>=0){
checkPath(node.getX()-1node.getY()node eNode COST_STRAIGHT);
}
//右
if((node.getX()+1) checkPath(node.getX()+1node.getY()node eNode COST_STRAIGHT);
}
//从开启列表中删除
//添加到关闭列表中
closeList.add(openList.remove(0));
//开启列表中排序,把F值最低的放到最底端
Collections.sort(openList new NodeFComparator());
}
if(isFind){
getPath(resultList node);
}
return resultList;
}
//查询此路是否能走通
private boolean checkPath(int xint yNode parentNodeNode eNodeint cost){
Node node=new Node(x y parentNode);
//查找地图中是否能通过
if(map[x][y]==0){
closeList.add(node);
return false;
}
//查找关闭列表中是否存在
if(isListCo
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3788 2013-01-01 12:26 Robot.java
文件 6825 2013-01-02 11:30 AStarAlgorithm.java
文件 1480 2013-01-02 10:41 AvoidBlock.java
文件 2349 2013-01-03 14:24 MyEnv.java
文件 1063 2012-12-27 11:11 Node.java
文件 220 2012-12-27 11:13 NodeFComparator.java
----------- --------- ---------- ----- ----
15725 6
- 上一篇:基于51单片机的时钟汇编程序
- 下一篇:cadence 17.0 网盘链接
相关资源
- 北航人工智能原理课大作业源代码,
- A*算法的2D演示(带源码)
- 简单A*算法罗马尼亚度假问题
- A*算法和基于深度优先的八数码问题
- A*算法解决旅行商问题
- A*算法旅行商问题实验报告和代码
- A*算法的具体思想我见过的写的最好的
- A*算法 计算九宫格数字移动问题
- 基于A*算法的路径规划
- 传教士和野人问题(MC问题)的A*算法
- 通过alpha-belta剪枝的极大极小值算法实
- 人工智能_滑动积木块—A*算法
- A_StarSearch.rar
- A*算法解决传教士与野人过河问题可运
- 非常完整的A*算法具体代码
- A*算法实现迷宫问题
- A星算法详解包含测试
- 实验报告三
- A*算法 js实现
- 基于A*算法的3*3拼图
- A*算法的实现 路径规划
- Dijstra算法与A*算法的比较
- 八数码 A*算法 附报告
- 基于A-StarA*算法的机器人路径规划
- A*算法源码
- 分别用宽度优先、深度优先、贪婪算
- A算法和A*算法
- A*算法整个代码
- 人工智能实验报告超完整版 含宽度、
评论
共有 条评论