⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 knapsacksproblem.cpp

📁 利用遗传算法解决背包问题
💻 CPP
字号:
#include "GAonKP.h"
#include <iostream>
using namespace std;
void main()
{
	FILE* fp;
	CGAonKP gakp;
	int scale;             //种群规模
	double MaxWeight;      //背包允许最大财宝质量
	double pc;             //杂交概率
	double pm;             //变异概率
	int maxgen;            //最大进化代数
	char filename[256];
	

	cout<<"遗传算法解决背包问题程序使用说明:"<<endl;
	cout<<"1、该背包问题采用遗传算法"<<endl;
	cout<<"2、0-1编码的方法,其中1代表选中所对应的物品,0代表不选中该物品"<<endl;
	cout<<"3、背包允许最带重量,种群规模(解空间大小),";
	cout<<"杂交概率,变异概率,最大进化代数需自己给";
	cout<<"定,程序会提示输入"<<endl;
	cout<<"4、程序提供一个输入示例"<<endl;
	cout<<"5、输入文件可加单行或多行注释"<<endl;
	cout<<"例如:#添加单行注释内容#"<<endl;
	cout<<"例如:#添加多行注释内容"<<endl;
	cout<<"             添加多行注释内容#"<<endl;
	cout<<"6、输入文件头位置需指定物品个数为int型数据。物品重量,和物品价值为double型"<<endl;
	cout<<"7、程序运行结果会输出到output.txt文件中"<<endl;
	
	cout<<endl;
	cout<<endl;
	cout<<"如果你想使用示例文件进行演示请输入Y"<<endl;
	cout<<"如果你想使用示例文件进行演示请输入N"<<endl;
	cin>>filename;
	if (filename[0]=='Y')
	{
		if(!(fp=fopen("example.txt","r")))
		{
			cout<<"请确认example.txt是否背删除了!"<<endl;
		}
		cout<<"演示文件中example.txt的输入参数:"<<endl;
		cout<<"背包允许最带重量:100"<<endl;
		cout<<"种群规模:30"<<endl;
		cout<<"杂交概率:0.5"<<endl;
		cout<<"变异概率:0.1"<<endl;
		cout<<"最大进化代数:50"<<endl;
		gakp.GetSolute(100,0.5,0.2,30,50,fp);
		fclose(fp);

	}
	else if (filename[0]=='N')
	{
		while (1)
		{
			cout<<"请输入要读取的文件名(注意扩展名也要输入):"<<endl;
			cin>>filename;
			if(!(fp=fopen(filename,"r")))//最后要修改一下
			{
				cout<<"请确认该文件名所对应的输入文件是否存在!"<<endl;
			}
			else break;
		}
	
		cout<<"请输入背包允许最带重量:"<<endl;
		cin>>MaxWeight;
		cout<<"请输入种群规模:"<<endl;
		cin>>scale;
		cout<<"请输入杂交概率:"<<endl;
		cin>>pc;
		cout<<"请输入变异概率:"<<endl;
		cin>>pm;
		cout<<"请输入最大进化代数:"<<endl;
		cin>>maxgen;
		gakp.GetSolute(MaxWeight,pc,pm,scale,maxgen,fp);
		fclose(fp);
	}
	else
	{
		cout<<"请确认你输入正确性!"<<endl;
		exit(0);
	}

	cout<<"请输入任意内容结束程序运行"<<endl;
	cin>>filename;


}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -