# 遗传算法和神经网络实现小车的局部路径规划
使用遗传算法和神经网络,非监督的训练小车,让它自己学会躲避障碍物,走出迷宫!还可以自己绘制地图,设定小车的数量。
![image-20200427005548039](https://github.com/a82647041/ImgLib/blob/master/image-20200427005548039.png?raw=true)
## 关于项目
+ 构建项目工具:Gradle
+ IDE:Android Studio
+ LibGDX游戏引擎(不了解的戳这个https://libgdx.badlogicgames.com/documentation/)
+ BOX2D物理引擎(不了解的戳这个https://box2d.org/documentation/)
+ Lua脚本语言(不了解的戳这个https://www.runoob.com/lua/lua-tutorial.html)
+ 遗传算法的基本知识(网上很多)
+ 神经网络的基本知识(网上很多)
## 项目要点
### 目录结构
+ desktop:项目的启动模块
+ core:项目核心模块
+ assets:资源文件夹
### 入口点
在`desktop`模块下面的`DesktopLauncher.java`中
### 渲染逻辑
在core模块下面的`MyGdxGame`中
### 神经网络
神经网络计算在`NN.java`中,以下是用来计算神经网络权重和偏移的核心代码
```java
public void updateWeight(double[] tar){
int l=layer.length-1;
for(int j=0;j<layerErr[l].length;j++)
layerErr[l][j]=layer[l][j]*(1-layer[l][j])*(tar[j]-layer[l][j]);
while(l-->0){
for(int j=0;j<layerErr[l].length;j++){
double z = 0.0;
for(int i=0;i<layerErr[l+1].length;i++){
z=z+l>0?layerErr[l+1][i]*layer_weight[l][j][i]:0;
layer_weight_delta[l][j][i]= mobp*layer_weight_delta[l][j] [i]+rate*layerErr[l+1][i]*layer[l][j];//隐含层动量调整
layer_weight[l][j][i]+=layer_weight_delta[l][j][i];//隐含层权重调整
if(j==layerErr[l].length-1){
layer_weight_delta[l][j+1][i]= mobp*layer_weight_delta[l][j+1][i]+rate*layerErr[l+1][i];//截距动量调整
layer_weight[l][j+1][i]+=layer_weight_delta[l][j+1][i];//截距权重调整
}
}
layerErr[l][j]=z*layer[l][j]*(1-layer[l][j]);//记录误差
}
}
}
```
### 配置文件
配置文件为`Config.java`
```java
static public boolean isMove = true;
//小车是否可以移动
static public boolean initMap = true;
//小车初始化数量(种群数量)
public static int popSize = 120;
//是否显示小车的视野
public static boolean sight = true;
//用何种碰撞模式
public static int hitMode = 1;
//地图名字
public static String mapName = "map-hard";
//·视线·数量
public static int versionNum = 5;
//小车移动速度
public static float speed = 10;
//小车角速度
public static float angle_speed = 4;
//视线长度
public static float sight_length = 300;
//神经网络参数文件
public static String branFile = "\\gene\\self1";
//是否使用神经网络(不用的话,就是从头开始训练)
public static boolean useGeneFile = true;
```
### Lua相关
lua对应Java中的静态类
```lua
config = luajava.newInstance("com.mygdx.game.Entity.Config");
--main = luajava.newInstance("com.mygdx.game.MyGdxGame");
main = luajava.bindClass("com.mygdx.game.MyGdxGame")
nn = luajava.bindClass("com.mygdx.game.Entity.NN")
util = luajava.bindClass("com.mygdx.game.Util.MyUtil")
pop = luajava.bindClass("com.mygdx.game.Entity.Population")
--print 'helloworld';
```
## 最后
移动小车的项目到这里就告了一段落,接下来要做的是用遗传算法+神经网络去让AI自己玩马里奥!!
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
基于神经网络和遗传算法的机器人路径规划实现.zip (183个子文件)
gradlew.bat 2KB
MyGdxGame.class 13KB
MyUtil.class 11KB
Robot.class 8KB
Population.class 7KB
EditText.class 6KB
MyButton.class 4KB
NN.class 4KB
Console.class 4KB
Test.class 4KB
FileHelper.class 4KB
Drawer.class 3KB
EditBoard.class 3KB
ToolBar.class 3KB
Dialog.class 3KB
Main.class 3KB
MyGdxGame$1.class 2KB
Line.class 2KB
MyGdxGame$7.class 2KB
Main.class 2KB
Main1.class 2KB
MyStage.class 2KB
RayCastInfo.class 2KB
CompoentButton.class 1KB
Robot$1.class 1KB
DesktopLauncher.class 1KB
MyGdxGame$5.class 1KB
MyGdxGame$6.class 999B
MyGdxGame$4.class 996B
BodyInfo.class 978B
MyGdxGame$2.class 965B
MyGdxGame$3.class 928B
Config.class 862B
MyUtil$2.class 799B
Trace.class 798B
Dialog$1.class 739B
MyUtil$1.class 605B
Main$1.class 535B
Main$1.class 478B
UserData.class 368B
ClickListener.class 201B
.gitattributes 66B
.gitignore 203B
.gitignore 7B
build.gradle 2KB
build.gradle 978B
build.gradle 847B
build.gradle 151B
settings.gradle 36B
gradlew 5KB
gradle-wrapper.jar 53KB
MyGdxGame.java 13KB
Robot.java 11KB
MyUtil.java 11KB
Population.java 7KB
NN.java 5KB
EditText.java 4KB
Drawer.java 3KB
Test.java 3KB
FileHelper.java 3KB
EditBoard.java 3KB
MyButton.java 3KB
ToolBar.java 3KB
Console.java 2KB
Main.java 2KB
Dialog.java 2KB
Main1.java 2KB
MyStage.java 2KB
Line.java 2KB
Main.java 1KB
RayCastInfo.java 1021B
CompoentButton.java 970B
DesktopLauncher.java 723B
ExampleInstrumentedTest.java 695B
Config.java 675B
Trace.java 569B
BodyInfo.java 409B
ExampleUnitTest.java 373B
Main.java 140B
ClickListener.java 104B
UserData.java 101B
badlogic.jpg 67KB
badlogic.jpg 67KB
trace.json 1.05MB
trace.json 1.05MB
map-hard.json 19KB
map-hard.json 19KB
map-mid.json 10KB
map-mid.json 10KB
self2.json 7KB
self2.json 7KB
self1.json 7KB
self1.json 7KB
sefl1.json 7KB
sefl1.json 7KB
best5.json 7KB
best5.json 7KB
best4.json 7KB
best4.json 7KB
best3.json 6KB
共 183 条
- 1
- 2
资源评论
好家伙VCC
- 粉丝: 2058
- 资源: 9145
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- redis可视化工具:RedisDesktopManager
- 众数问题-使用python的scipy库解决众数问题.md
- 众数问题-使用python的collections库解决众数问题.md
- 众数问题-使用纯python代码解决众数问题.md
- asm-西电微机原理实验
- 第三阶段模块一-数字排序
- 解决ubuntu23.10安装向日葵失败,使用apt install -f无法解决依赖问题
- Screenshot_20241117_024114_com.huawei.browser.jpg
- .turing.dat
- shopex升级补丁只针对 485.78660版本升级至485.80603版本 其它版本的请勿使用!
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功