资源简介
遗传算法进行车辆路径规划算法 蚁群算法-车辆路径问题
代码片段和文件信息
#include “StdAfx.h“
#include “.\ant.h“
CAnt::CAnt(void)
{
memset(m_nPath0sizeof(m_nPath));
m_nPathCount=0; //路径里的点个数
}
CAnt::~CAnt(void)
{
}
//初始化
void CAnt::Init()
{
//=== 随机生成发车顺序 ==============================================
//先设置成按循序发车
for (int i=0;i {
m_CarOrderAry[i]=i;
}
//然后随机交换数组中两个位置的车辆,打乱发车顺序
int nTemp1=0;
int nTemp2=0;
int nTemp=0;
for (int i=0;i {
nTemp1=rnd(0CAR_COUNT);
nTemp2=rnd(0CAR_COUNT);
if (nTemp1 != nTemp2)
{
nTemp=m_CarOrderAry[nTemp1];
m_CarOrderAry[nTemp1]=m_CarOrderAry[nTemp2];
m_CarOrderAry[nTemp2]=nTemp;
}
}
//==设置每辆车已经走过的长度、已经配载的重量、发车次数、行程时间为0===============================================
for (int i=0;i {
m_CarAry[i].dbMovedLength=0.0;
m_CarAry[i].dbMovedWeight=0.0;
m_CarAry[i].dbMovedTime=0.0;
m_CarAry[i].nSendCount=0;
}
//==设置当前车队中的第1辆车进行派送====================================
m_nCurCarIndex=0;
//==设置全部城市为没有去过===============================================
for (int i=0;i<=CITY_COUNT;i++)
{
m_AllowedCity[i]=1;
}
//==设置路径为空===============================================
for (int i=0;i<=N_MAX_PATH;i++)
{
m_nPath[N_MAX_PATH]=0;
}
m_nPath[0]=m_CarOrderAry[0]+1+CITY_COUNT; //把第1辆车的编号加入路径
m_nPathCount=1; //路径里的点个数为1,因为配送站为开始点
//==设置走过的城市数量为0===============================================
m_nCityCount=0;
//==设置当前所在城市为0 (0代表配送站)===============================================
m_nCurCity=0;
//==设置走过的路径长度为最大值===============================================
m_dbPathLength=DB_MAX;
//==设置选择策略===========================================================
m_dbQ=Q_Max; //先设置为最大值,每次搜索完成,这个值都会动态改变的
//改变原则为,随着迭代次数的增加,由大变小再变大,就是初期大,中间小,后期大
//==搜索失败标志置假===========================================================
m_blSearchFail=false;
}
//为当前汽车,选择下一个城市
//注意!编号为0的城市是配送站,不列在选择范围内
//返回值 为城市编号
//如果返回为0,表示当前车需要返回配送站,重新派车队中的下一辆车
int CAnt::ChooseNextCity()
{
int nSelectedCity=-1; //返回结果,先暂时把其设置为-1
int nCarNo=m_CarOrderAry[m_nCurCarIndex]; //得到当前那辆车在派送
//==============================================================================
//计算当前城市和没去过的城市之间的信息素总和
double dbTotal=0.0;
double prob[N_MAX_CITY_COUNT+1]; // 保存城市被选中的概率
for (int i=1;i<=CITY_COUNT;i++)
{
if (m_AllowedCity[i] == 1) //城市没去过
{
//如果有硬时间窗限制,检查一下是否把该城市列入选择对象
if (g_nHTW == 1)
{
//如果车辆从当前城市达到该城市,超过时间窗限制,则设置其选择概率值为0,不进行选择
if (m_CarAry[nCarNo].dbMovedTime+g_distance[m_nCurCity][i]/g_CarAry[nCarNo].dbSpeed > g_CityAry[i].dbTE)
{
prob[i]=0.0;
}
else
{
prob[i]=g_Prob[m_nCurCity][i]/g_CityAry[i].dbTE; //加入时间窗的影响
}
}
else
{
prob[i]=g_Prob[m_nCurCity][i]; //先使用查表法,得到从当前城市到该城市的选择概率值
//两两城市间的选择概率值,已经在每次更新完环境信息素后计算好
}
dbTotal=dbTotal+prob[i]; //累加信息素,
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 78815 2017-05-04 20:21 蚁群-路径规划-代码文件\物流配送蚁群算法_邮件\01_可执行文件\anthelp.chm
文件 110592 2017-05-04 20:21 蚁群-路径规划-代码文件\物流配送蚁群算法_邮件\01_可执行文件\CANT.exe
文件 1105920 2017-05-04 20:53 蚁群-路径规划-代码文件\物流配送蚁群算法_邮件\01_可执行文件\mfc80.dll
文件 632656 2017-05-04 20:21 蚁群-路径规划-代码文件\物流配送蚁群算法_邮件\01_可执行文件\msvcr80.dll
文件 536576 2017-05-04 20:21 蚁群-路径规划-代码文件\物流配送蚁群算法_邮件\01_可执行文件\XTP1031Lib.dll
文件 10279 2017-05-04 20:21 蚁群-路径规划-代码文件\物流配送蚁群算法_邮件\02_算法实现部分源代码\Ant.cpp
文件 1781 2017-05-04 20:21 蚁群-路径规划-代码文件\物流配送蚁群算法_邮件\02_算法实现部分源代码\Ant.h
文件 2696 2017-05-04 20:21 蚁群-路径规划-代码文件\物流配送蚁群算法_邮件\02_算法实现部分源代码\Common.cpp
文件 4621 2017-05-04 20:21 蚁群-路径规划-代码文件\物流配送蚁群算法_邮件\02_算法实现部分源代码\common.h
文件 25580 2017-05-04 20:21 蚁群-路径规划-代码文件\物流配送蚁群算法_邮件\02_算法实现部分源代码\TSP.cpp
文件 2186 2017-05-04 20:21 蚁群-路径规划-代码文件\物流配送蚁群算法_邮件\02_算法实现部分源代码\TSP.h
文件 2266 2017-05-04 20:21 蚁群-路径规划-代码文件\物流配送蚁群算法_邮件\03_测试数据\eil51.ini
文件 3432 2017-05-04 20:21 蚁群-路径规划-代码文件\物流配送蚁群算法_邮件\03_测试数据\vrptw25.ini
文件 507750 2017-05-04 20:21 蚁群-路径规划-代码文件\物流配送蚁群算法_邮件\04_算法文档\基于改进蚁群算法的物流配送路径优化.pdf
目录 0 2017-05-04 20:53 蚁群-路径规划-代码文件\物流配送蚁群算法_邮件\01_可执行文件
目录 0 2017-05-04 20:21 蚁群-路径规划-代码文件\物流配送蚁群算法_邮件\02_算法实现部分源代码
目录 0 2017-05-04 20:21 蚁群-路径规划-代码文件\物流配送蚁群算法_邮件\03_测试数据
目录 0 2017-05-04 20:21 蚁群-路径规划-代码文件\物流配送蚁群算法_邮件\04_算法文档
目录 0 2017-05-04 20:21 蚁群-路径规划-代码文件\物流配送蚁群算法_邮件
目录 0 2017-05-04 20:21 蚁群-路径规划-代码文件
----------- --------- ---------- ----- ----
3025150 20
- 上一篇:Unity数据处理
- 下一篇:ACS800提升机应用程序
评论
共有 条评论