资源简介
ACO实现0-1背包问题,算法简单易懂且有实验报告。

代码片段和文件信息
#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 ij;
// ************** 读数据 *************************//
string filestring;
cout<<“请输入测试文件名: “;
cin>>filestring;
ifstream inFile(filestring.c_str());
//报告错误
if(!inFile)
{
cerr<<“不能打开测试文件:“< exit(-1);
}
inFile>>n;
inFile>>w_limit;
value[0]=0;
weight[0]=0;
for (i=1; i<=n; i++)
{
inFile >> weight[i];
}
for (i=1; i<=n; i++)
{
inFile >> value[i];
}
//************************* 信息素矩阵初始化 ********************//
for(i=0;i<=n;i++)
inf[i][0]=0;
for(i=0;i<=n;i++){
for(j=1;j<=n;j++){
inf[i][j]=1;
}
}
//************************ 数据输出 ****************************//
cout<<“物品总数为:“< cout<<“背包重量限制为:“<
cout<<“各物品重量分别为:“< for(i=0;i<=n;i++)
cout<< weight[i]<<“ “;
cout<
cout<<“各物品价值分别为:“< for(i=0;i<=n;i++)
cout<< value[i]<<“ “;
cout< /*
cout<<“信息素矩阵初始化为:“< for(i=0;i<=n;i++){
for(j=0;j<=n;j++){
cout< }
cout< }
*/
srand((int)time(0)); //初始化随机种子
bool mark[MAX];
int no_modify=0;
for(int k=1;k<=max_circle && no_modify<100 ;k++){//外循环
// for(int k=1;k<=max_circle ;k++){//外循环
for(i=1;i<=M;i++){
antRoute[i][0]=0;
int Cur_n=0; //已选取物品个数
int Cur_w=0; //已选取物品总重量
int Cur_v=0; //已选取物品总价值
int Cur_ps=0; //记录当前选取物品的标号
for(j=1;j<=n;j++)
mark[j]=false; //作为物品是否选取的标志
bool finish=false;
int ok[MAX];
while(finish==false){
if(Cur_n==n){
antRoute[i][++Cur_n]=0;
antValue[i]=Cur_v;
finish=true;
}
else{
int ok_n=0;
for(j=1;j<=n;j++){
if(mark[j]==false &&(Cur_w+weight[j])<=w_limit){
ok[ok_n++]=j; //该数组用于存储满足条件的物品的标号
}
}
if(ok_n==0){ //无满足条件的物品
antRoute[i][++Cur_n]=0;
antValue[i]=Cur_v;
finish=true;
}
else{
//有满足条件的物品:按信息素来进行随机选取
float total=0;
float rate[MAX];
for(j=0;j float total=total+inf[Cur_ps][ok[j]];
}
for(j=0;j rate[j]=(inf[Cur_ps][ok[j]]/total);
bool choose=false;
while(choose==false){
double r=(double)(rand() % 1001) * 0.001f;
int u=(int)(rand()%ok_n);
if(rate[u]>r){
antRoute[i][++Cur_n]=ok[u];
Cur_ps=ok[u];
Cur_w+=weight[ok[u]];
Cur_v+=value[ok[u]];
mark[ok[u]]=true;
choose=true;
break;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4381 2008-07-10 16:12 ACO解01背包问题\ACO解01背包问题.dsp
文件 555 2008-07-10 15:32 ACO解01背包问题\ACO解01背包问题.dsw
文件 50176 2008-07-11 18:59 ACO解01背包问题\ACO解01背包问题.ncb
文件 48640 2008-07-11 18:59 ACO解01背包问题\ACO解01背包问题.opt
文件 923 2008-07-11 18:43 ACO解01背包问题\ACO解01背包问题.plg
文件 553044 2008-07-11 18:43 ACO解01背包问题\Debug\ACO解01背包问题.exe
文件 817036 2008-07-11 18:43 ACO解01背包问题\Debug\ACO解01背包问题.ilk
文件 1147904 2008-07-11 18:43 ACO解01背包问题\Debug\ACO解01背包问题.pdb
文件 352329 2008-07-11 18:43 ACO解01背包问题\Debug\main.obj
文件 123904 2008-07-11 18:47 ACO解01背包问题\Debug\vc60.idb
文件 110592 2008-07-11 18:43 ACO解01背包问题\Debug\vc60.pdb
文件 4612 2008-07-11 18:43 ACO解01背包问题\main.cpp
文件 122 2008-07-11 14:35 ACO解01背包问题\readme.txt
文件 65 2008-07-09 21:10 ACO解01背包问题\test1.txt
文件 126 2008-07-09 21:10 ACO解01背包问题\test2.txt
文件 18 2008-07-11 14:29 ACO解01背包问题\test3.txt
文件 27 2008-07-11 14:30 ACO解01背包问题\test4.txt
文件 27 2008-07-11 14:34 ACO解01背包问题\test5.txt
文件 157696 2011-01-19 20:29 ACO解01背包问题\蚁群算法实现0.doc
目录 0 2011-01-19 20:27 ACO解01背包问题\Debug
目录 0 2011-01-19 20:29 ACO解01背包问题
----------- --------- ---------- ----- ----
3372177 21
- 上一篇:基于web的毕业设计管理系统的设计与开发
- 下一篇:反激式变换器的系统设计
相关资源
- 2018全国大学生计算机博弈大赛 棋谱
- IAR-Keygen-2019+附使用教程.zip
- 清翔电子MCS51开发板资料_新版 01_开发
-
Windows em
bedded Compact 2013 应用开发调 - LenovoTinkPad; Marker 5.01
- porting.RTEMS移植指南.双语.V20131224.pdf
- 2017款解码软件v1.0.0.6
- 飞思卡尔单片机MC9S12XS12G128驱动(硬件
- DXperienceUniversal 10.1.6(2010年8月13日版
- CAD2010注册机32bit and 64bit
- ado数据库MFC图书管理系统vs2010
- NRF24L01实现51与STM32双向通讯
- [免费]MW310R V4.0升级软件20140123
- STM32F103RBT6驱动UC1698控制芯片的160160黑
- 2003-2013全国电赛历年真题
- HDU 1010-2500解题报告
- pctolcd2002完美版460701
- windows下制作macOS安装U盘,绝对简单好
- CY7C68013A固件程序(用于摄像机采集)
- 基于DSP2812的以太网调试程序
- 提取各种NEMA0183格式数据的类
- visual studio 2010 黑色主题,保护你的眼
- Origin2019最新中文版用户入门使用手册
- 图文手把手教你一步步用VC 2010编写通
- 图文手把手教你一步步用VC 2010编写通
- caxa实体设计2019破解补丁
-
解决安装vs2012后vs2010 li
nk : fatal er - Homogenization of Monotone Systems of Non-coer
- SX1301 +sx1255 GATEWAY.zip
- 大数据中的云网络Cloud Networking for B
评论
共有 条评论