资源简介
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的毕业设计管理系统的设计与开发
- 下一篇:反激式变换器的系统设计
相关资源
- ISO IEC 20000-1 2011 中文版
- vivado2018.1证书
- dxflib在VS2013的使用
- 3dmax 2012破解文件
- LM2901中文资料
- 2018年国际会议列表人工智能大类
- 2012年数学建模A题及附件
- intel_sdk_for_opencl_2017
- 国网376.1-2009、376.1-2013主站与采集终端
- 1019Win7版本转换.rar
- 2019年武汉大学国中复试试题参考.do
- 2019年网络工程师中级知识点汇总 超详
- 易语言源码QQ2012PC协议易语言源码.r
- Lua 5.1 for delphi 2010-XE4
- slickedit pro 2018 v23(亲测可用)
- 2018年中国研究生数学建模竞赛E题
- 2011-2017年全国大学生电子设计竞赛综
- 正规式1(0|1)*101相应的DFA.doc
- Vivado 2016.1 License文件多IP核
- 2018-SDN大赛-初赛题目
- PTHC2017解压密码.txt
- PTHC2015解压密码.txt
- PTHC2016解压密码.txt
- codeblocks16.01汉化包
- office 2016卸载工具
- [VIP] 优启通 v3.5.2019.07242019.07.30 发布
- 2018年中国城市分级完整名单包含338个
-
ob
jectARXWizards2016.msi - RAD Studio Delphi 2010 3615破解包
- SharePoint Server 2016 Enterprise Key
评论
共有 条评论