您当前的位置: 首页 >  算法
  • 0浏览

    0关注

    1477博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

蚁群算法 解决 0-1背包问题

软件工程小施同学 发布时间:2022-02-07 10:17:03 ,浏览量:0

                  蚁群算法实现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            
关注
打赏
1665320866
查看更多评论
0.0416s