select2.cpp

来自「c++语言实现的遗传算法的例子,需要的快下啊」· C++ 代码 · 共 58 行

CPP
58
字号
// Select2.cpp: implementation of the Select2 class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Select2.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

Select2::Select2(int s):Select(s)
{
	proportion=new int[scale];
}

int Select2::SelectPop(Rand * r)
{
	int temp=r->randint(scale*(scale+1));
	int m=0;
	int i=0;
	while(temp>=m)
	{
		m=m+proportion[i];
		i++;
	}
	--i;
	return i;
}

void Select2::GetProportion(Popular * * pop)
{
	double * solution=new double[scale];
	int * temp=new int[scale];
	for(int i=0;i<scale;i++)
	{
		temp[i]=0;
		solution[i]=pop[i]->GetAdapt();
	}
	for(i=0;i<scale;i++)
		for(int j=0;j<i;j++)
		{
			if(solution[i]>solution[j])
				temp[i]+=1;
			else
				temp[j]+=1;
		}
	for(i=0;i<scale;i++)
		proportion[i]=2*(temp[i]+1);
	delete[] temp;
	delete[] solution;
}

Select2::~Select2()
{
	delete[] proportion;
}

⌨️ 快捷键说明

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