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

📄 hitsinit.cpp

📁 粗糙集应用软件
💻 CPP
字号:
// HitsInit.cpp: implementation of the HitsInit class.
//
//////////////////////////////////////////////////////////////////////

#include <stdafx.h> // Added 980901 by Aleksander 踙rn.
#include "../copyright.h" // Added 000323 by Aleksander 豩rn.

#include "HitsInit.h"
#include "HitsMessage.h"
#include "../ea/Rand.h"
#include <kernel/system/assert.h>
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

HitsInit::HitsInit(Context &context) : c(context)
{

}

HitsInit::~HitsInit()
{

}

Population & HitsInit::init()
{
	for(int i = 0; i < c.parameters.population_size; i++){
    EABitset * v = new EABitset(c.elems_used);
		assert(v->size() == c.elems_used);
    for(int j = 0; j < c.nsets; j++){
			if(c.setsize[j] == 0){
				continue;
			}
      int e = Rand::i() % c.setsize[j];
			// pick the e'th element in that set
			const Bits * set = c.sets[j];
			int l = 0;
			int elm;
			int real_index = 0;
			for(int k = 0; k < set->GetSize(); k++){		
				if(set->GetState(k))
					if(l++ == e){
						elm = real_index;
						break;
					}		
				if(c.elements_used.GetState(k))
					real_index++;
			}
      v->set(elm, true);
		}
		assert(v->size() == c.elems_used);
    p.population.push_back(v);
	}

	return p;
}

⌨️ 快捷键说明

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