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

📄 test_mutate.cpp

📁 我自己写的一个用于图编码的遗传算法
💻 CPP
字号:
#include "GraphGenome.h"
#include <utility>
using std::pair;
using std::make_pair;

double calculate3(Genome* genome)
{
	return 1.0;
}

#include "GAException.h"
#include <iostream>
using std::cout;
using std::endl;

#include "FlipMutator.h"
#include "SwapMutator.h"

void test_mutate()
{
	cout<<"\n基因变异实验....."<<endl;
	typedef pair<int,int> GraphGeneType;
	GraphGeneType genes[]={
		make_pair(0,1),
		make_pair(1,6),
		make_pair(0,1),
		make_pair(1,6),
		make_pair(0,1),
		make_pair(0,1),
		make_pair(0,1),
		make_pair(1,6),
		make_pair(0,1)
	};

	typedef Genome::Evaluator Evaluator;
	Evaluator eval=&calculate3;

	int num=sizeof(genes)/sizeof(genes[0]);

MyRandom::init((unsigned int)time(NULL));

	try
	{
		Genome* p1=new GraphGenome(genes,genes+num,eval);
		p1->randomAll();
		cout<<"p1: "<<p1->toString()<<endl;

		Genome* p2=p1->clone();
		p2->randomAll();
		cout<<"p2: "<<p2->toString()<<endl;

		Mutator* mutator=new FlipMutator();		
		cout<<"p1开始变异....."<<endl;
		mutator->applyMutate(p1,0.5);

		cout<<"变异后p1: "<<p1->toString()<<endl;

		cout<<"\np2开始变异...."<<endl;
		mutator->applyMutate(p2,0.005);

		cout<<"变异后p2: "<<p2->toString()<<endl;


		cout<<"\n现在开始进行交换变异(swap)操作....."<<endl;
		Mutator* mutator2=new SwapMutator();		
		cout<<"p1开始变异....."<<endl;
		mutator2->applyMutate(p1,0.5);

		cout<<"变异后p1: "<<p1->toString()<<endl;

		cout<<"\np2开始变异...."<<endl;
		mutator2->applyMutate(p2,0.005);

		cout<<"变异后p2: "<<p2->toString()<<endl;

	}
	catch(GAException& e)
	{
		cout<<e.what()<<endl;
	}
}

⌨️ 快捷键说明

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