📄 main.cpp
字号:
#include "global.h"
using namespace evo;
void crosstest();
void calValueTest();
void sortTest();
void evoTest();
void evolution();
void main()
{
srand(unsigned(time(0)));
evolution();
getchar();
}
void crosstest()
{
VectorInt vi;
for(int i=0;i<CITY_COUNT;i++)
vi.push_back(i);
Individual indi(vi);
Individual& indi1=indi.variate();
Individual& indi2=indi.variate();
int i=0;
int sametime=0;
while((++i<1000))
{
indi1=indi1.variate();
indi2=indi2.variate();
Individual& crossed=indi1.cross(indi2);
indi1.printIndividual(cout);
indi2.printIndividual(cout);
crossed.printIndividual(cout);
if(crossed==indi2)
{
sametime++;
}
}
cout<<endl<<sametime<<endl;
}
void calValueTest()
{
VectorInt vi;
for(int i=0;i<CITY_COUNT;i++)
vi.push_back(i);
Individual indi(vi);
cout<<indi.calValue();
}
void sortTest()
{
Group gp;
gp.printGroup(cout);
sort(gp.member.begin(),gp.member.end());
gp.printGroup(cout);
}
void evoTest()
{
ofstream groupout("group.txt");
Group gp0;
Group& gp=gp0;
Group& gp2=gp.evolute();
cout<<gp.calValue();
gp2==gp?cout<<"==":cout<<"!=";
cout<<gp2.calValue()<<endl;
gp.printGroup(cout);
gp2.printGroup(cout);
}
void evolution()
{
ofstream groupout("group.txt");
ofstream bestout("best.txt");
if(!groupout || !bestout)
{
cout<<"no file";
exit(0);
}
int loop=0;
int noevo=0;
Group gp0;
Group& parent=gp0;
Group& next=parent.evolute();
do
{
loop++;
next=parent.evolute();
next.printGroup(groupout);
next.printBestIndi(cout);
next.printBestIndi(bestout);
if(next==parent)
{
noevo++;
}
else
{
noevo=0;
}
if(noevo==NOEVOASST)
{
break;
}
parent=next;
}while(EVOTIMES);
cout<<"第"<<next.generation<<"代,适应值:"<<next.calValue()<<endl;
cout<<"具体演化过程见 group.txt";
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -