资源简介
遗传算法解决0-1背包问题,C++,VS2013
代码片段和文件信息
#include “Genetic_Algorithm.h“
int calculate_total_volume()//计算物品的总容量
{
int t_volume = 0;
for (int i = 0; i < NUM; i++)
t_volume += volume[i];
return t_volume;
}
int calculate_total_value()//计算物品的总价值
{
int t_value = 0;
for (int i = 0; i < NUM; i++)
t_value += value[i];
return t_value;
}
void output_volume()//输出每一件物品的体积
{
cout << “每一件物品的体积:“ << endl;
for (int i = 0; i < NUM; i++)
cout << volume[i] << “ “;
cout << endl;
}
void output_value()//输出每一件物品的价值
{
cout << “每一件物品的价值:“ << endl;
for (int i = 0; i < NUM; i++)
cout << value[i] << “ “;
cout << endl;
}
GA::GA()
{
for (int i = 0; i < NP; i++)
{
for (int j = 0; j < NUM; j++)
{
individual[i].chromosome[j] = 0;
best_individual.chromosome[j] = 0;
}
individual[i].total_volume = 0;
individual[i].total_value = 0;
best_individual.total_volume = 0;
best_individual.total_value = 0;
}
for (int j = 0; j < NUM; j++)
chr[j] = false;
max_value = 0;
max_volume = 0;
}
void GA::initial_population()//产生初始种群
{
for (int i = 0; i < NP; i++)
{
for (int j = 0; j < NUM; j++)
{
bool k = (rand() % 10 < 5) ? 0 : 1;//随机产生0或1
individual[i].chromosome[j] = k;//初始化染色体编码
individual[i].total_volume += k*volume[j];//计算初始种群中每一个个体的体积
individual[i].total_value += k*value[j];//计算初始种群中每一个个体的价值
}
if (individual[i].total_volume > PACK_MAX_V)//如果个体体积超过最大的承受值,重新选择
{
individual[i].total_volume = 0;
individual[i].total_value = 0;
i--;
}
}
for (int i = 0; i < NP; i++)//比较,选出初始最优解,即装入背包物品的价值最大
{
if (individual[i].total_value >= max_value)
{
max_volume = individual[i].total_volume;
max_value = individual[i].total_value;
best_individual = individual[i];
}
}
}
void GA::calculate_fitness_value()//计算适应值
{
for (int i = 0; i < NP; i++)
{
individual[i].total_volume = 0;
individual[i].total_value = 0;
for (int j = 0; j < NUM; j++)
{
individual[i].total_volume += individual[i].chromosome[j] * volume[j];
individual[i].total_value += individual[i].chromosome[j] * value[j];
}
if (individual[i].total_volume > PACK_MAX_V)//如果个体体积超过最大的承受值,用初始最优解取代
{
individual[i] = best_individual;
}
}
for (int i = 0; i < NP; i++)
{
for (int j = 0; j < NUM; j++)
{
if (individual[i].total_value >= max_value)//更新最优解
{
max_volume = individual[i].total_volume;
max_value = individual[i].total_value;
best_individual = individual[i];//保存当前最优解
chr[j] = individual[i].chromosome[j];//记录当前最优解的初始01序列
}
}
}
return;
}
void GA::select_operator()//选择
{
int sum_of_fitness = 0;
double selected[NP];
double r;
Individual new_[NP];//新种群
for (int i = 0; i < NP; i++)//计算种群中所有个体的适应值的和
sum_of_fitness += individual[i].total_volume;
for (int i = 0; i < NP; i++)//染色体i被选中的概率
{
selected[i] = (double)individual[i].total_volume / (double)sum_of_fitness;
}
for (int i = 1; i < NP; i++)//概率的累积
{
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-04-19 20:16 遗传算法解决0-1背包问题\
目录 0 2018-04-15 18:36 遗传算法解决0-1背包问题\Debug\
文件 73728 2018-04-19 17:22 遗传算法解决0-1背包问题\Debug\遗传算法解决0-1背包问题.exe
文件 1101520 2018-04-19 17:22 遗传算法解决0-1背包问题\Debug\遗传算法解决0-1背包问题.ilk
文件 1575936 2018-04-19 17:22 遗传算法解决0-1背包问题\Debug\遗传算法解决0-1背包问题.pdb
目录 0 2018-04-19 17:21 遗传算法解决0-1背包问题\遗传算法解决0-1背包问题\
文件 7471104 2018-04-19 20:16 遗传算法解决0-1背包问题\遗传算法解决0-1背包问题.sdf
文件 1045 2018-04-14 16:07 遗传算法解决0-1背包问题\遗传算法解决0-1背包问题.sln
文件 31744 2018-04-19 20:16 遗传算法解决0-1背包问题\遗传算法解决0-1背包问题.v12.suo
目录 0 2018-04-15 18:06 遗传算法解决0-1背包问题\遗传算法解决0-1背包问题txt\
文件 6423 2018-04-15 14:50 遗传算法解决0-1背包问题\遗传算法解决0-1背包问题txt\Genetic_Algorithm_cpp.txt
文件 1194 2018-04-15 14:50 遗传算法解决0-1背包问题\遗传算法解决0-1背包问题txt\Genetic_Algorithm_h.txt
文件 527 2018-04-15 14:50 遗传算法解决0-1背包问题\遗传算法解决0-1背包问题txt\main.txt
文件 10724 2018-04-15 18:06 遗传算法解决0-1背包问题\遗传算法解决0-1背包问题txt\参考代码.txt
目录 0 2018-04-19 17:22 遗传算法解决0-1背包问题\遗传算法解决0-1背包问题\Debug\
文件 166382 2018-04-19 17:22 遗传算法解决0-1背包问题\遗传算法解决0-1背包问题\Debug\Genetic_Algorithm.obj
文件 155560 2018-04-19 17:04 遗传算法解决0-1背包问题\遗传算法解决0-1背包问题\Debug\main.obj
文件 363520 2018-04-19 17:22 遗传算法解决0-1背包问题\遗传算法解决0-1背包问题\Debug\vc120.idb
文件 356352 2018-04-19 17:22 遗传算法解决0-1背包问题\遗传算法解决0-1背包问题\Debug\vc120.pdb
文件 1720 2018-04-19 17:22 遗传算法解决0-1背包问题\遗传算法解决0-1背包问题\Debug\遗传算法解决0-1背包问题.log
目录 0 2018-04-19 17:22 遗传算法解决0-1背包问题\遗传算法解决0-1背包问题\Debug\遗传算法解决0-1背包问题.tlog\
文件 1158 2018-04-19 17:22 遗传算法解决0-1背包问题\遗传算法解决0-1背包问题\Debug\遗传算法解决0-1背包问题.tlog\cl.command.1.tlog
文件 25230 2018-04-19 17:22 遗传算法解决0-1背包问题\遗传算法解决0-1背包问题\Debug\遗传算法解决0-1背包问题.tlog\CL.read.1.tlog
文件 1642 2018-04-19 17:22 遗传算法解决0-1背包问题\遗传算法解决0-1背包问题\Debug\遗传算法解决0-1背包问题.tlog\CL.write.1.tlog
文件 1266 2018-04-19 17:22 遗传算法解决0-1背包问题\遗传算法解决0-1背包问题\Debug\遗传算法解决0-1背包问题.tlog\li
文件 2822 2018-04-19 17:22 遗传算法解决0-1背包问题\遗传算法解决0-1背包问题\Debug\遗传算法解决0-1背包问题.tlog\li
文件 558 2018-04-19 17:22 遗传算法解决0-1背包问题\遗传算法解决0-1背包问题\Debug\遗传算法解决0-1背包问题.tlog\li
文件 183 2018-04-19 17:22 遗传算法解决0-1背包问题\遗传算法解决0-1背包问题\Debug\遗传算法解决0-1背包问题.tlog\遗传算法解决0-1背包问题.lastbuildstate
文件 5103 2018-04-19 17:21 遗传算法解决0-1背包问题\遗传算法解决0-1背包问题\Genetic_Algorithm.cpp
文件 1901 2018-04-19 17:04 遗传算法解决0-1背包问题\遗传算法解决0-1背包问题\Genetic_Algorithm.h
文件 689 2018-04-15 17:04 遗传算法解决0-1背包问题\遗传算法解决0-1背包问题\main.cpp
............此处省略2个文件信息
- 上一篇:C语言课设,学生证管理系统
- 下一篇:C++STL源码剖析 中文高清非扫描版
相关资源
-
ob
jectArx2017+AutoCAD2017+VS2015二次开发及 - 华西期货上期CTP程序化交易C++高效策
- 基于多态的职工管理系统VS2017可运行
- VS2017实现Tcp socket多线程通信C++
- VS-Vrep-813Vrep.rar
- MFC 实时曲线绘制
- 基于VS2010的MFC对话框计算器程序
- opengl/c++贪吃蛇.rar
- VS2010 Addin插件学习小Demo C++版本
- VS平台下的MFC版坦克大战
- vs2012 mfc程序用Socket实现两台计算机间
- MFC仿QQ局域网聊天软件
- VAssistX软件破解版
- VS2013写的简单小游戏俄罗斯方块
- 番茄助手 Visual Assist X 2302
- VS2010+MFC 使用WinAPI实现串口通信
- opencv 车牌识别 vs2010 mfc
- 利用MFC的Picture控件显示图像和视频
- mfc socket编程实现聊天与文件传输vs2
- MFC socket编程 简易聊天工具及文件
- VS2010 C++ MFC 登陆界面设计
- 基于vs 2010 mfc实现对excel数据的读取,
- CEF:MFC 对话框 DemoVS2013
- MFC多语言界面切换
- 牛哥推荐很好的CMFCOutlookBar
- 基于C++的三菱机床实时数据采集可运
- MFC+VS2013+OPENCV3.0打开摄像头,拍照并处
- vs c++写的贪吃蛇
- vc6.0调用vs2008 CImage类
- VS2015大漠注册找图
评论
共有 条评论