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

📄 support.cc

📁 c++编写的并行拉马克遗传算法的程序。实现分析对接程序
💻 CC
📖 第 1 页 / 共 2 页
字号:
#ifdef DEBUG   (void)fprintf(logFile, "support.cc/void Genotype::write(unsigned char value=%c, int gene_number=%d)\n",value,gene_number);#endif /* DEBUG */   modified = 1;   rep_vector[lookup[gene_number].vector]->write(value, lookup[gene_number].index);}void Genotype::write(FourByteLong value, int gene_number){#ifdef DEBUG   (void)fprintf(logFile, "support.cc/void Genotype::write(FourByteLong value=%ld, int gene_number=%d)\n",value, gene_number);#endif /* DEBUG */   modified = 1;   rep_vector[lookup[gene_number].vector]->write(value, lookup[gene_number].index);}void Genotype::write(double value, int gene_number){#ifdef DEBUG   (void)fprintf(logFile, "support.cc/void Genotype::write(double value=%lf, int gene_number=%d)\n",value,gene_number);#endif /* DEBUG */   modified = 1;   rep_vector[lookup[gene_number].vector]->write(value, lookup[gene_number].index);}void Genotype::write(const Representation &value, int gene_number){#ifdef DEBUG   (void)fprintf(logFile, "support.cc/void Genotype::write(const Representation &value, int gene_number=%d)\n",gene_number);#endif /* DEBUG */   modified = 1;//   *rep_vector[lookup[gene_number].vector] = value;   *(rep_vector[gene_number]) = value;}//  Maybe we should evaluate the Phenotype?Phenotype::Phenotype(unsigned int init_number_of_dimensions, Representation **init_value_vector): number_of_dimensions(init_number_of_dimensions), value_vector(init_value_vector),  value(0.0), evalflag(0){   register int i, j, k;#ifdef DEBUG   (void)fprintf(logFile, "support.cc/Phenotype::Phenotype(unsigned int init_number_of_dimensions=%d, Representation **init_value_vector)\n",init_number_of_dimensions);#endif /* DEBUG */   number_of_points = 0;   for (i=0; i<number_of_dimensions; i++) {      number_of_points += value_vector[i]->number_of_points();   }   i = 0;   lookup = new Lookup[number_of_points];   for (j=0; j<number_of_dimensions; j++) {      for (k=0; k<value_vector[j]->number_of_points(); k++) {         lookup[i].vector = j;         lookup[i].index = k;         i++;      }   }}Phenotype::Phenotype(const Phenotype &original){   register int i;#ifdef DEBUG   (void)fprintf(logFile, "support.cc/Phenotype::Phenotype(const Phenotype &original)\n");#endif /* DEBUG */   number_of_dimensions = original.number_of_dimensions;   number_of_points = original.number_of_points;   evalflag = original.evalflag;   value = original.value;   if (original.value_vector!=NULL) {      value_vector = new Representation *[number_of_dimensions];      lookup = new Lookup[number_of_points];   } else {      value_vector = NULL;      lookup = NULL;   }   for (i=0; i<number_of_dimensions; i++) {      value_vector[i] = original.value_vector[i]->clone();   }      for (i=0; i<number_of_points; i++) {      lookup[i] = original.lookup[i];   }}Phenotype &Phenotype::operator=(const Phenotype &original){   register int i;#ifdef DEBUG   (void)fprintf(logFile, "support.cc/Phenotype &Phenotype::operator=(const Phenotype &original)\n");#endif /* DEBUG */   //  Do the destructors get called on each element of value_vector?   if (value_vector!=NULL) {      for (i=0; i<number_of_dimensions; i++) {         delete value_vector[i];      }      delete [] value_vector;      delete [] lookup;   }   number_of_dimensions = original.number_of_dimensions;   number_of_points = original.number_of_points;   value = original.value;   evalflag = original.evalflag;   if (original.value_vector!=NULL) {      value_vector = new Representation *[number_of_dimensions];      lookup = new Lookup[number_of_points];   } else {      value_vector = NULL;      lookup = NULL;   }   for (i=0; i<number_of_dimensions; i++) {      value_vector[i] = original.value_vector[i]->clone();   }   for (i=0; i<number_of_points; i++) {      lookup[i] = original.lookup[i];   }   return(*this);}Phenotype::~Phenotype(void){   register int i;#ifdef DEBUG   (void)fprintf(logFile, "support.cc/Phenotype::~Phenotype(void)\n");#endif /* DEBUG */   if (value_vector!=NULL) {      for (i=0; i<number_of_dimensions; i++) {           delete value_vector[i];      }      delete [] value_vector;      delete [] lookup;   }}void Phenotype::write(Element value, int gene_number){#ifdef DEBUG   (void)fprintf(logFile, "support.cc/void Phenotype::write(Element value, int gene_number=%d)\n",gene_number);#endif /* DEBUG */   evalflag = 0;   value_vector[lookup[gene_number].vector]->write(value, lookup[gene_number].index);}void Phenotype::write(unsigned char value, int gene_number){#ifdef DEBUG   (void)fprintf(logFile, "support.cc/void Phenotype::write(unsigned char value=%c, int gene_number=%d)\n",value,gene_number);#endif /* DEBUG */   evalflag = 0;   value_vector[lookup[gene_number].vector]->write(value, lookup[gene_number].index);}void Phenotype::write(FourByteLong value, int gene_number){#ifdef DEBUG   (void)fprintf(logFile, "support.cc/void Phenotype::write(FourByteLong value=%ld, int gene_number=%d)\n",value,gene_number);#endif /* DEBUG */   evalflag = 0;   value_vector[lookup[gene_number].vector]->write(value, lookup[gene_number].index);}void Phenotype::write(double value, int gene_number){#ifdef DEBUG   (void)fprintf(logFile, "support.cc/void Phenotype::write(double value=%lf, int gene_number=%d)\n",value,gene_number);#endif /* DEBUG */   evalflag = 0;   value_vector[lookup[gene_number].vector]->write(value, lookup[gene_number].index);}void Phenotype::write(const Representation &value, int gene_number){#ifdef DEBUG   (void)fprintf(logFile, "support.cc/void Phenotype::write(const Representation &value, int gene_number=%d)\n",gene_number);#endif /* DEBUG */   evalflag = 0;//   *(value_vector[lookup[gene_number].vector]) = value;   *(value_vector[gene_number]) = value;}double Phenotype::evaluate(EvalMode mode){ #ifdef DEBUG   (void)fprintf(logFile, "support.cc/double Phenotype::evaluate(EvalMode mode)\n");#endif /* DEBUG */   switch(mode)   {      case Always_Eval:         value = ::evaluate(value_vector);         evalflag = 1;         break;      case Normal_Eval:         if (!evalflag) {            value = ::evaluate(value_vector);            evalflag = 1;         }         break;      case Reset:         evalflag = 0;         break;      default:         (void)fprintf(logFile,"Unknown Evaluation Mode!\n");         break;   }   return(value);}State Phenotype::make_state(int ntor){   State retval;#ifdef DEBUG   (void)fprintf(logFile, "support.cc/State Phenotype::make_state(int ntor=%d)\n",ntor);#endif /* DEBUG */   retval.ntor = ntor;   make_state_from_rep(value_vector, &retval);   return(retval);}Individual &Population::operator[](int ind_num){#ifdef DEBUG   (void)fprintf(logFile, "support.cc/Individual &Population::operator[](int ind_num=%d)\n",ind_num);#endif /* DEBUG */   if ((ind_num<0)||(ind_num>=size)) {      (void)fprintf(logFile,"ERROR: support.cc/Trying to access %d, an out of bounds individual! (0<i<%d)\n",ind_num,size);      return(heap[0]);   } else {      return(heap[ind_num]);   }}State Individual::state(int ntor){#ifdef DEBUG   (void)fprintf(logFile, "support.cc/State Individual::state(int ntor=%d)\n",ntor);#endif /* DEBUG */   return(phenotyp.make_state(ntor));}Molecule * Individual::getMol(void){// Converts phenotype to mol's state and returns this individual's mol data.    State molState;    Molecule returnedMol;    molState = phenotyp.make_state(mol->S.ntor);    returnedMol = copyStateToMolecule(&molState, mol);    return(&returnedMol);}void Individual::printIndividualsState(FILE *filePtr, int ntor) {#ifdef DEBUG   (void)fprintf(logFile, "support.cc/void Individual::printIndividualsState(FILE *filePtr, int ntor=%d)\n",ntor);#endif /* DEBUG */    printState( filePtr, state(ntor), 0 ); }void Individual::incrementAge(void){    ++age;}Population &Population::operator=(const Population &original){   register int i;#ifdef DEBUG   (void)fprintf(logFile, "support.cc/Population &Population::operator=(const Population &original)\n");#endif /* DEBUG */   if (heap!=NULL) {      delete [] heap;   }   size = original.size;   heap = new Individual[size];   lhb = original.lhb;   for (i=0; i<size; i++) {      heap[i] = original.heap[i];   }   return(*this);}

⌨️ 快捷键说明

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