蚁群算法实现0-1背包问题实验报告
【实验内容】
用蚁群算法求解0-1背包问题。
【实验环境】
Microsoft Visual C++ 6.0
【基本理论】
蚁群算法是对自然界蚂蚁的觅食寻径方式进行模似而得出的一种仿生算法。先简要介绍一下蚂蚁搜寻食物的具体过程。研究表明:蚁群在觅食途中,会在所经过路径留下一种挥发性分泌物—信息素(pheromone) ,并能感知其存在和强度,朝着信息素浓度高的方向移动。与此同时释放出与路径长度有关的信息素。路径越长,释放的激索浓度越低。浓度越高的路径选择它的蚂蚁越多,越发增加该路径上的信息素浓度,这样又吸引更多的蚂蚁,从而形成一个正反馈。蚂蚁最终总能找到一条从食物到巢穴之间的最优路径。最优路径上的激索浓度越来越大。而其它路径上的激素浓度却会随着时间的流逝而消减。最终整个蚁群会找出觅食最优路径。
用人工蚂蚁来模仿自然蚂蚁,在走过的路径上留下信息素,为解决各种寻优问题提供了一种新的方法。该算法已经被成功地应用在很多复杂的组合优化问题上。Dorigo 首先将该方法用于求解TSP 问题,随后很多学者陆续使用了该算法解二次分配问题、皇后问题等。所解决的问题以TSP 问题为主,另外有函数优化问题、背包问题等,而且从离散空间扩展到了连续空间。在解决这些问题的性能方面,比之于传统的优化算法,蚂蚁优化算法表现出了良好的性能。
#include "iostream"
#include
#include
#include
using namespace std;
#define M 8//蚂蚁数
#define P 0.2//信息素挥发率
#define MAX 70
int BRoute[MAX];//最优解
int BValue=0;//最优解的总价值
int BWeight;//最优解的总重量
int max_circle=500;//外循环最大次数
int antRoute[9][MAX];
int antValue[9];
void main(){
int n;//物品个数
int w_limit;//背包重量限制
int value[MAX];//各物品价值
int weight[MAX];//各物品重量
float inf[MAX][MAX];//信息素矩阵
int i,j;
// ************** 读数据 *************************//
string filestring;
coutfilestring;
ifstream inFile(filestring.c_str());
//报告错误
if(!inFile)
{
cerr value[i];
}
//************************* 信息素矩阵初始化 ********************//
for(i=0;i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?