?? knapsacksproblem.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 + -