示例#1
0
void Planet::findPosition()
{
	Point2D a;
	for ( int j = 0; j <getPopulation(); j++)
	{
		for (int k = j + 1; k < getPopulation(); k++)
		{
			if (a.getDistance(population[j]->getPosition(), population[k]->getPosition()) < 5)
			{
				int random = rand() % 2 + 1;
				switch (random)
				{
				case 1:
					population[j]->Attack(*population[j]);
					break;
				case 2:
					addPopulation(entity, 1);

				}
			}
			else if (a.getDistance(population[j]->getPosition(), population[k]->getPosition()) == 0)
			{
				movePopulation();
			}
		}
	}
}
示例#2
0
void CPSORSwarm::createSubswarms( ){

	m_clst.setNormalizationFlag(false);
	m_clst.setSpace(0);
	m_clst.initialize(m_pop,m_popsize);
	m_clst.roughClustering(m_subSize);

	for(int k=0;k< m_clst.getSize();k++){			
		CPSORSubSwarm *s=new CPSORSubSwarm(m_clst[k]);
		s->updateCurRadius(true);
		addPopulation(*s);
	}
	m_clst.clear_();
	remove(m_popsize);

	measureMultiPop();
}