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

📄 hitsengine.cpp

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

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

#include "HitsEngine.h"
#include "HitsMessage.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

HitsEngine::HitsEngine(AbstractInitializer &i, Evaluator &e,
                       Vector(AbstractOperation*) &o, 
                       AbstractStoppingCriteria &s, 
                       Keeper &keep, Context &context) 
  : Engine(i, e, o, s), keeper(keep), c(context),
    lastfc(0)
{
}

HitsEngine::~HitsEngine()
{
}

void HitsEngine::hook(Population & p, int generation)
{
  bool changed = false;
  int nchanged = 0;
  
  Evaluator * meval = dynamic_cast(Evaluator*, &eval);
    
  // update keeplist
  //    SDebug.p("doing keep...");
  for(int i = 0; i < p.size(); i++){
    Individual * ind = p[i];
    bool ins = keeper.keep(ind,ind->fitness) == 0;
    changed |= ins;
    if(ins)
      nchanged++;
  }
  c.keep_changed = changed;
  if(c.parameters.report_gen){
    if(c.parameters.debug)
      p.print(cerr);
    char buf[BUFSIZ];
    sprintf(buf, "%d %f %f %f %d %d %d %d %f %d",
            generation, 
            p.avg_fitness, 
            p.min_fitness,
            p.max_fitness,
	    nchanged,
	    p.size(),
	    ((*meval).fitness->eval_count - lastfc),
            (*meval).fitness->eval_count, keeper.low(), keeper.size());
    HitsMessage::warn(buf);
  }
  lastfc = (*meval).fitness->eval_count;
  // + "\n population:\n" + p);
#ifdef _SAVHACK
  if(c.parameters.is_interruptible) {
#endif
		if (generation % 10 == 0) { // Added 990526 by Aleksander 豩rn.
			Message message;          // Added 990526 by Aleksander 豩rn.
			interrupted = !message.Progress("Calculating, at generation " + String::Format(generation) + "...");
		}
#ifdef _SAVHACK
  }
#endif
}

⌨️ 快捷键说明

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