资源简介
遗传算法 CVRP VRP 使用遗传算法求解带容量的路径选择问题源代码
代码片段和文件信息
/*
Name: GA算法实现 车辆的CVRP问题
Copyright:
Author: GCJ NEW NEU Labotatry
Date: 12/11/17 20:49
Description: 本文件和附加的参数capacity.txt和data.txt文档放在一个工程下即可,
然后修改readTxt()函数内部的路径即可运行成功
*/
#include
#include“time.h“
#include
#include
#include
/*--------------------------------参数配置区---------------------------------------------------*/
#define CLIENT_NUM 50 //客户数量 为50 1个配送中心
#define CAPACITY 160 //车的容量为160
#define Population_size 50 //种群大小
#define iterations 50 //迭代次数
#define ISGA_crossover 1 //是否可交叉 1:交叉 0:不交叉
#define PC 0.7 //配置交叉率
#define ISmutate 1 //是否可变异 1: 变异 0:不变异
#define PM 0.1 //变异率
#define IsChampionShip 1 //锦标赛参数是否可调节(默认值为0.1倍的种群大小) 1:可调 0:不可调
/*--------------------------------宏配置区---------------------------------------------------*/
#define Min(xy) ( ( (x) < (y) ) ?(x):(y) )
#define Max(xy) ( ( (x) > (y) ) ?(x):(y) )
#define f(x) (x -1) //用f宏 作为index 因为在找商店的序号跟二维数组之间相差1 所以用f表示两者之间的映射
/*---锦标赛参数设置区---*/
#ifdef ChampionShip
double championShip = 0.2; //自己可随意设置成0-1之间的小数 但是最好不要超过0.5
#endif
typedef int ElementType;
using namespace std;
ElementType **Distance; //存储商店之间的距离
ElementType * Capacity; //存储车容量
typedef struct _rand{
int flag;
ElementType num;
}Rand;
class Chromosome
{
public:
Chromosome();
Chromosome(int len ); //length表示染色体的长度
virtual~Chromosome(); //析构函数
Chromosome(const Chromosome&a); //自定义拷贝构造函数
const Chromosome &operator =(const Chromosome & o ) ;
void initialize() ; //初始化染色体 调用newRandom函数 产生1- length 的随机数
int newRandom(int lowint high ); //随机产生 0- num 个不重复的数字
void evaluate();
#if ISmutate
void mutate(); //采用逆转变异算子
#endif
//查看染色体内容的调试函数
void toprint(){
int i;
// cout<<“染色体内容“< for( i =0 ; i cout< }
}
void printpath(); //打印最后的车辆安排路径
ElementType getFitness(){return this->fitness;} //返回染色体适应值
int getLength(){ return length; } //获取染色体长度
int getCar(){return carNum; } //获取车的数量
int *codespace = NULL; //编码空间 代表2-51商店的标号
private:
int length; //染色体的长度
ElementType fitness; //方便之后的数据的扩展
int carNum; //车数量
};
typedef struct _Cross{
ElementType one;
ElementType two;
int flag1 ; //标记找到的one
int flag2 ; //标记找到的two
_Cross():flag1(0)flag2(0){}
}Cross; //部分交叉映射需要用到的结构 记录映射关系
class GA
{
public:
GA(){};
GA(int popnumint max); //popnum 种群大小,max表示迭代次数
virtual~GA();
GA(const GA&o); //自定义拷贝构造函数 把指针的情况考虑进去了
const GA &operator =(const GA & o ); //自定义赋值函数
//成员函数
void initializePop(); //初始化种群
void GArun(); //运行GA算法
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 336 2018-05-23 07:22 capacity.txt
文件 22060 2017-11-12 21:55 GA.cpp
文件 495 2018-05-23 07:22 position.txt
文件 74 2018-05-23 07:21 readme.txt
- 上一篇:空间两坐标系转换的7参数求解
- 下一篇:MDPI_template.zip
相关资源
- 这里运用了鲸鱼算法和遗传算法的结
- RAGA_PPC投影程序
- 基于遗传算法的任务分配与调度
- 蜂群算法求解VRPTW
- 基于遗传算法优化的模糊控制仿真研
- 遗传算法优化BP神经网络权值和阈值
- 基于遗传算法的SVM方法
- 遗传算法求TSP问题
- 遗传算法最优保留
- 解决车辆路径问题时所要用的vrp程序
- 遗传算法 NSGA II
- 实值编码遗传算法源程序.txt
- 遗传算法用于机械臂运动规划
- 整数规划问题的遗传算法
- NSGA-III代码
- 基于遗传算法的控制系统的系统辨识
- 结合遗传算法优化BP神经网络的结构和
- 基于遗传算法的机组组合
- 基于遗传算法的作业车间调度优化
- 遗传算法解决TSP问题全
- 基于遗传算法的小波神经网络交通流
- 三维装箱问题的模型与改进遗传算法
- 基于改进免疫遗传算法的矩形件排样
- vrPlus地址
- 基于最短路算法和遗传算法的配电网
- unity_神经网络_遗传算法_简易框架
- 多目标遗传算法源代码
- 基于遗传算法的分支覆盖测试用例自
- 遗传算法优化bp神经网络.zip
- 回溯法、遗传算法、CSP最小冲突法解
评论
共有 条评论