亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? populationmo.cpp

?? 該算法是張青復(fù)與周愛民的基于RM-MEDA算法的程序
?? CPP
字號(hào):
//PopulationMO.cpp

#include <fstream>
#include "PopulationMO.h"

namespace az
{
namespace mea
{

//constructor
CPopulationMO::CPopulationMO(CParameter& par)
	:mbSort(true),pPar(&par)
{
	mvPop.empty();
}

//constructor
CPopulationMO::CPopulationMO(CPopulationMO& pop)
{
	*this = pop;
}

//deconstrutor
CPopulationMO::~CPopulationMO()
{
	Clear();
}

//set parameters
void CPopulationMO::P(CParameter& par)
{
	pPar = &par;
}

//see whether the individual is in the population
bool CPopulationMO::IsContain(IND_TYPE& ind)
{
	for(unsigned int i=0; i<Size(); i++) if(ind == In(i)) return true;
	return false;
}

//clear the population
void CPopulationMO::Clear()
{
	CLEAR(mvPop);
	mbSort = true;
}

//evaluate the population
void CPopulationMO::Evaluate()
{
	for(unsigned int i =0; i<Size(); i++) In(i).Evaluate();
	mbSort = false;
}

//shuffle the population
void CPopulationMO::Shuffle()
{
	for(unsigned int i=0; i<Size()-1; i++) Swap(i, rnd::rand(i, Size()));
	mbSort = false;
}

//resize the population
void CPopulationMO::Resize(unsigned int s)
{
	Clear();
	mvPop.resize(s);
	for(unsigned int i =0; i<s; i++) mvPop[i] = new IND_TYPE(P());
	mbSort = false;
}

//swap two individuals
void CPopulationMO::Swap(unsigned int i, unsigned int j)
{
	std::swap(mvPop[i], mvPop[j]);
	mbSort = false;
}

//erase individuals
void CPopulationMO::Erase(unsigned int i)
{
	for(unsigned int k=i; k<Size(); k++) if(mvPop[k]>0) delete mvPop[k];
	mvPop.erase(mvPop.begin()+i, mvPop.end());
}

//copy an individual to population
CPopulationMO& CPopulationMO::Copy(IND_TYPE*& pind)
{
	if(pind>0)
	{
		mvPop.push_back(new IND_TYPE(*pind));
		mbSort = false;
	}
	return *this;
}

//copy an individual to population
CPopulationMO& CPopulationMO::Copy(IND_TYPE& ind)
{
	mvPop.push_back(new IND_TYPE(ind));
	mbSort = false;
	return *this;
}

//copy a population to population
CPopulationMO& CPopulationMO::Copy(CPopulationMO& pop)
{
	for(unsigned int i=0; i<pop.Size(); i++) Copy(pop[i]);
	return *this;
}

//combine an individual to population
CPopulationMO& CPopulationMO::Combine(IND_TYPE*& pind)
{
	if(pind>0)
	{
		mvPop.push_back(pind);
		pind = 0;
		mbSort = false;
	}
	return *this;
}

//combine an individual to population
CPopulationMO& CPopulationMO::Combine(IND_TYPE& ind)
{
	mvPop.push_back(new IND_TYPE(ind));
	mbSort = false;
	return *this;
}

//combine a population to population
CPopulationMO& CPopulationMO::Combine(CPopulationMO& pop)
{
	for(unsigned int i=0; i<pop.Size(); i++) Combine(pop.At(i));
	pop.Clear();
	return *this;
}

//assign a population 
CPopulationMO& CPopulationMO::operator=(CPopulationMO& pop)
{
	Clear();
	mbSort	= pop.mbSort;
	pPar	= pop.pPar;
	Resize(pop.Size());
	for(unsigned int i=0; i<Size(); i++) In(i) = pop[i];
	return *this;
}

//get a sub-population with Rank = r
CPopulationMO& CPopulationMO::RankSub(CPopulationMO& pop, unsigned int r)
{
	unsigned int i,start,end;
	RankSize(r, start, end);
	pop.Clear();
	if(start>Size()) return pop;
	for(i=start; i<end; i++)
		pop.Copy(In(i));
	pop.IsSort(true);
	return pop;
}

//get the maximum rank value
unsigned int CPopulationMO::RankMax()
{
	RankSort();
	return In(Size()-1).Rank();
}

//get the sub-population size with Rank=r
unsigned int CPopulationMO::RankSize(unsigned int r, unsigned int& start, unsigned int& end)
{
	RankSort();
	start = 0;
	while(start<Size() && In(start).Rank()<r) start++;
	end = start;
	while(end<Size() && In(end).Rank() == r) end++;
	if(start>=Size()) return 0;
	else return end - start;
}

//assign rank value and sort population
void CPopulationMO::RankSort()
{
	//has been sorted before
	if(IsSort()) return;

	//only has one individual
	if(Size()<2) {IsSort(true);return;}

	int s, t,better; unsigned int i, j, minRank, curRank = 0, noAssign, size;

	//Step 0: Move all infeasible solutions to the tail of the sequence
	s=0; t=Size()-1;
	while(s<t)
	{
		while(s<int(Size()) && In(s).IsFeasible()) s++;
		while(t>=0 && !In(t).IsFeasible()) t--;
		if(s<t)	{Swap(s,t); s++; t--;}
	}
	size = s;

	std::vector<bool>						vAssign(size);	
	std::list<unsigned int>					v2Assign;
	std::vector<unsigned int>				vBeDom(size);
	std::vector< std::list<unsigned int> >	vDom(size); 
	std::list<unsigned int>::iterator it1,it2;	

	//Step 1: Initialize
	for(i=0; i<size; i++) vAssign[i] = false;

	//Step 2: MOGAFonseca flow
	for(i=0; i<size; i++)
	{
		for (j=i+1 ; j<size; j++)
		{
			better = In(i).Dominate(In(j)) ;
			//i is dominated by j
			if(better<0) { vBeDom[i]++; vDom[j].push_back(i); }
			//j is dominated by i
			else if(better>0) { vBeDom[j]++; vDom[i].push_back(j); }
		}	//end for
	}	// end for

	//Step 3: Assign rank to feasible solutions
	noAssign = size;
	while(noAssign > 0)
	{
		curRank++;

		minRank = size;
		//find the cluster to assign a rank value
		for (i=0; i<size; i++) if(!vAssign[i])
		{
			if(vBeDom[i]<minRank) 
			{
				minRank = vBeDom[i];
				v2Assign.clear(); v2Assign.push_back(i);
			}
			else if(vBeDom[i]==minRank) v2Assign.push_back(i);
		}

		//CHECK( v2Assign.size()>0, "CRankSort::Sort()" );

		//assign rank
		it1 = v2Assign.begin();
		while(it1!=v2Assign.end())
		{
			vAssign[*it1] = true; 
			In(*it1).Rank(curRank);
			it2 = vDom[*it1].begin(); 
			while(it2!=vDom[*it1].end()) vBeDom[*it2++]--;
			it1++; noAssign--;
		}//for
	}//end while

	//Step 4: Assign rank to infeasible solutions
	curRank++;
	for (i=size; i<Size(); i++) In(i).Rank(curRank);

	//Step 5: Sort the population by rank and constraint
	for(s=0; s<int(Size()-1); s++) for(t=s+1; t<int(Size()); t++) 
			if(In(t)<In(s)) Swap(s,t);

	IsSort(true);
}

//write the population to I/O stream
std::ostream& CPopulationMO::Write(std::ostream& os)
{
	//os<<std::scientific<<std::setprecision(10);
	//os<<Size()<<std::endl<<P().FSize()<<"\t"<<P().XSize()<<std::endl;
	//for(unsigned int i=0; i<Size(); i++) os<<In(i);
	//return os;

	RankSort();
	unsigned int i,s = 0;
	for( i=0; i<Size(); i++ ) if(In(i).Rank()==1) s++;
	os<<std::scientific<<std::setprecision(10);
	os<<s<<std::endl<<P().FSize()<<"\t"<<P().XSize()<<std::endl;
	for( i=0; i<Size(); i++ ) if(In(i).Rank()==1) os<<In(i);
	return os;
}

//write the population to a file
void CPopulationMO::Write(std::string name)
{
	std::ofstream file(name.c_str());	
	file<<*this;	
	file.close();
}

//write the population to a file
void CPopulationMO::Write(const char *name)
{
	std::ofstream file(name);	
	file<<*this;	
	file.close();
}

//write the population to I/O stream
std::ostream& operator<<(std::ostream& os, CPopulationMO& pop)
{
	return pop.Write(os);
}

//read population from I/O stream
std::istream& CPopulationMO::Read(std::istream& is)
{
	unsigned int size, x, y;
	is>>size>>y>>x;
	(*this).Resize(size);
	for(unsigned int i=0; i<Size(); i++) is >> In(i);
	return is;
}

//read population from a file
void CPopulationMO::Read(std::string name)
{	
	std::ifstream file(name.c_str());	
	if(file != 0)	file>>*this;	
	file.close();
}

//read population from a file
void CPopulationMO::Read(const char *name)
{
	std::ifstream file(name);	
	if(file != 0)	file>>*this;	
	file.close();
}

//read population from I/O stream
std::istream& operator>>(std::istream& is, CPopulationMO& pop)
{
	return pop.Read(is);
}

} //namespace mea
} //namespace az

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
av男人天堂一区| √…a在线天堂一区| 日韩欧美国产不卡| 91麻豆精品国产无毒不卡在线观看| 色综合天天综合给合国产| 99久久精品国产一区二区三区 | 欧美日韩一卡二卡| 色综合久久99| 欧美在线观看视频在线| 色综合亚洲欧洲| 在线欧美一区二区| 欧美亚州韩日在线看免费版国语版| 99久久精品国产一区二区三区| 99久久国产综合精品色伊| 不卡一区在线观看| 日本福利一区二区| 欧美性色黄大片手机版| 欧美日本在线看| 91精品婷婷国产综合久久| 欧美一区二区三区四区久久 | 亚洲成人动漫在线免费观看| 亚洲国产精品一区二区www| 日日欢夜夜爽一区| 久久99精品国产麻豆婷婷洗澡| 极品销魂美女一区二区三区| 国产精品一区在线| 成人av在线观| 欧美丝袜丝nylons| 91精选在线观看| 久久精品日韩一区二区三区| 国产精品久久777777| 中文字幕字幕中文在线中不卡视频| 曰韩精品一区二区| 久久99久久99精品免视看婷婷| 国产乱子伦一区二区三区国色天香| 丁香婷婷综合激情五月色| 91小视频免费观看| 91精品国产综合久久久蜜臀粉嫩 | 久久综合视频网| 国产精品拍天天在线| 亚洲一区二区三区四区五区黄| 午夜欧美一区二区三区在线播放| 麻豆成人久久精品二区三区小说| 国产成人夜色高潮福利影视| 91福利国产精品| 欧美成va人片在线观看| 最新高清无码专区| 日韩激情中文字幕| 成人av网站在线| 欧美美女bb生活片| 国产日产精品1区| 亚洲国产综合人成综合网站| 国产一区二区三区免费观看| 色婷婷综合五月| 精品国精品自拍自在线| 亚洲美女偷拍久久| 精品一区二区三区在线观看| 在线精品视频一区二区| 精品国产一区二区三区忘忧草| 亚洲精品中文字幕在线观看| 国产尤物一区二区| 欧美三区在线观看| 日本一区二区不卡视频| 男男视频亚洲欧美| 在线精品视频免费播放| 国产亚洲欧美一级| 婷婷丁香激情综合| 91网上在线视频| 国产丝袜美腿一区二区三区| 亚洲福中文字幕伊人影院| 成人激情免费电影网址| 日韩亚洲欧美一区二区三区| 亚洲欧美视频在线观看视频| 国产在线视视频有精品| 51精品秘密在线观看| 亚洲人吸女人奶水| 国产精品1区二区.| 欧美tickling挠脚心丨vk| 亚洲成av人片在www色猫咪| 成人高清av在线| 久久久精品tv| 久久99精品国产麻豆婷婷| 91精品国产综合久久久蜜臀粉嫩| 伊人性伊人情综合网| 白白色亚洲国产精品| 国产视频一区二区在线| 久久99久久99小草精品免视看| 欧美一区中文字幕| 亚洲.国产.中文慕字在线| 日本高清不卡视频| 亚洲男人电影天堂| 91久久一区二区| 亚洲精品成人在线| 色综合久久综合网欧美综合网| 欧美国产欧美亚州国产日韩mv天天看完整| 免费欧美在线视频| 日韩手机在线导航| 麻豆精品一区二区| 日韩视频一区二区在线观看| 免费成人av资源网| 日韩无一区二区| 老鸭窝一区二区久久精品| 欧美一区二区视频在线观看2022| 视频一区在线视频| 555www色欧美视频| 日本午夜精品视频在线观看 | 国产喂奶挤奶一区二区三区| 激情综合色综合久久| 欧美大白屁股肥臀xxxxxx| 精品一区二区免费在线观看| 日韩视频在线观看一区二区| 久久99国内精品| 久久久www成人免费毛片麻豆| 国产丶欧美丶日本不卡视频| 中文字幕不卡三区| 91蜜桃网址入口| 亚洲综合激情小说| 欧美日韩国产一级片| 日韩高清不卡在线| 久久久久久久久久久久久久久99| 国产99一区视频免费| 国产精品久久久久一区二区三区共 | 亚洲韩国精品一区| 日韩一级大片在线| 国产黑丝在线一区二区三区| 国产精品福利一区二区| 欧洲精品中文字幕| 日韩影院在线观看| 精品国产精品一区二区夜夜嗨| 国产又黄又大久久| 综合网在线视频| 欧美日韩一级黄| 国产在线精品不卡| 自拍视频在线观看一区二区| 欧美日韩一本到| 久久er99热精品一区二区| 国产精品久久久久久亚洲伦 | 亚洲欧美色综合| 在线成人免费观看| 国产精品123| 亚洲一卡二卡三卡四卡无卡久久 | 欧美优质美女网站| 欧美老肥妇做.爰bbww视频| 欧美性受极品xxxx喷水| 欧美伦理视频网站| 亚洲欧美一区二区久久| 国产欧美一区二区三区鸳鸯浴| 精品精品国产高清a毛片牛牛 | 久久亚洲私人国产精品va媚药| 国产一区 二区 三区一级| 国产精品护士白丝一区av| 欧美三级资源在线| 国产成人免费视频网站高清观看视频 | 欧美r级在线观看| 97精品超碰一区二区三区| 日本欧美大码aⅴ在线播放| 国产日韩精品一区二区三区在线| 欧美在线看片a免费观看| 国产老女人精品毛片久久| 亚洲综合视频在线| 国产午夜精品理论片a级大结局| 欧美色老头old∨ideo| 国产成人午夜精品5599 | 色中色一区二区| 久久成人免费日本黄色| 中文字幕日韩精品一区| 精品国产免费一区二区三区四区 | 国产精品午夜在线| 正在播放亚洲一区| 99精品热视频| 国产乱码一区二区三区| 首页国产丝袜综合| 亚洲精品第一国产综合野| 国产亚洲精品资源在线26u| 欧美日韩国产区一| 一本到一区二区三区| 国产成人精品1024| 激情综合色播五月| 青青草97国产精品免费观看 | 亚洲午夜激情网站| 国产精品久久久久久户外露出| 精品久久久久久久久久久久久久久 | 蜜臀va亚洲va欧美va天堂| 亚洲最新在线观看| 国产精品久久久久aaaa樱花| 久久麻豆一区二区| 欧美大尺度电影在线| 欧美精品日韩综合在线| 欧美中文字幕一区二区三区亚洲| 成人久久视频在线观看| 国产在线不卡一区| 激情综合色综合久久| 看国产成人h片视频| 天天色图综合网| 亚洲午夜免费电影| 一级特黄大欧美久久久| 综合婷婷亚洲小说| 亚洲人成人一区二区在线观看| 日本一区二区在线不卡| 国产色爱av资源综合区|