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

📄 gagenome.cpp

📁 遗传算法工具箱C++
💻 CPP
字号:
// $Header$/* ----------------------------------------------------------------------------  genome.C  mbwall 19apr95  Copyright (c) 1995 Massachusetts Institute of Technology                     all rights reserved DESCRIPTION:  Definitions for genome base class.  See the header file for completedocumentation for deriving new classes.  Comments here are implementation-specific details about base class member functions.---------------------------------------------------------------------------- */#include "GAGenome.h"//   These are the default genome operators.// None does anything - they just post an error message to let you know that no// method has been defined.  These are for the base class (which has no // function by itself). void GAGenome::NoInitializer(GAGenome & c){   GAErr(GA_LOC, c.className(), "initializer", gaErrOpUndef); }int GAGenome::NoMutator(GAGenome & c, float){   GAErr(GA_LOC, c.className(), "mutator", gaErrOpUndef); return 0; }float GAGenome::NoComparator(const GAGenome& c, const GAGenome&){   GAErr(GA_LOC, c.className(), "comparator", gaErrOpUndef); return -1.0; }GAGenome::GAGenome(Initializer i, Mutator m, Comparator c){  if(i==0) i=NoInitializer;  if(m==0) m=NoMutator;  if(c==0) c=NoComparator;  _score=_fitness=0.0; _evaluated=gaFalse; _neval=0;  ga=0; ud=0; eval=0; evd=0;  init=i; mutr=m; cmp=c;  sexcross = 0;  asexcross = 0;}GAGenome::GAGenome(const GAGenome & orig){  evd=0; _neval=0;  GAGenome::copy(orig);}GAGenome::~GAGenome(){  delete evd;}GAGenome*GAGenome::clone(CloneMethod) const {  GAErr(GA_LOC, className(), "clone", gaErrOpUndef);  return new GAGenome(*this);}// The eval count is not copied from the other genome - that would inflate the// count.voidGAGenome::copy(const GAGenome & orig){  if(&orig == this) return;  _score=orig._score; _fitness=orig._fitness; _evaluated=orig._evaluated;  ga=orig.ga; ud=orig.ud; eval=orig.eval;  init=orig.init; mutr=orig.mutr; cmp=orig.cmp;  sexcross=orig.sexcross; asexcross=orig.asexcross;  _neval = 0;  if(orig.evd){    if(evd) evd->copy(*orig.evd);    else evd = orig.evd->clone();  }				// don't delete if c doesn't have one}float GAGenome::evaluate(GABoolean flag) const {  if(_evaluated == gaFalse || flag == gaTrue){    GAGenome *This = (GAGenome*)this;    if(eval){ This->_neval++; This->_score = (*eval)(*This); }    This->_evaluated = gaTrue;  }  return _score; }

⌨️ 快捷键说明

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