void Chromosome::init (int _length) { length = _length; lengthLong = quotientLong(length)+1; if (gene != NULL) delete []gene; gene = new unsigned long [lengthLong]; gene[lengthLong-1] = 0; evaluated = false; }
void FastCounting::init (int n_length) { length = n_length; lengthLong = quotientLong(length)+1; if (gene != NULL) delete []gene; gene = new unsigned long [lengthLong]; gene[lengthLong-1] = 0; }
unsigned int FastCounting::getInt (int start, int length) const { assert (length < (int) sizeof(unsigned int) * 8); int q = quotientLong(start); int r = remainderLong(start); if ( r + length <= (int) sizeof(unsigned long) * 8) { // with in one long unsigned long mask = (~(0lu)) >> (sizeof(unsigned long) * 8 - length); mask <<= r; return (unsigned int) ((gene[q] & mask) >> r); }
void Chromosome::init0 (int _length) { length = _length; lengthLong = quotientLong(length)+1; if (gene != NULL) delete []gene; gene = new unsigned long [lengthLong]; for (int i=0; i<lengthLong; ++i) gene[i] = 0; key = 0; evaluated = false; }
void Chromosome::initR (int _length) { length = _length; lengthLong = quotientLong(length)+1; if (gene != NULL) delete []gene; gene = new unsigned long [lengthLong]; gene[lengthLong-1] = 0; key = 0; for (int i=0; i<length; ++i) { int val = myRand.flip(); setValF(i, val); if (val == 1) key ^= zKey[i]; } evaluated = false; }