mpm.hpp

来自「这是遗传算法的源代码」· HPP 代码 · 共 60 行

HPP
60
字号
// -*- c++ -*- 
//
//  File:         mpm.hpp
//
//  Description:  C++ interface to the class mpm.
//                mpm stands for Marginal Product Model (see Harik's paper).
//
//  Author:       Fernando Lobo
//
//  Date:         June/1999
//
//  Extended to deal with chi-ary problems by Luis de la Ossa
//  GCC 3.4 and 4 series compliance by Kumara Sastry 
//
//  Date:         March/2006

#ifndef _mpm_hpp
#define _mpm_hpp

#include <iostream>
#include <fstream>

#include "subset.hpp"
#include "population.hpp"


class mpm
{
  private:
    int     maxSets;      // maximum number of sets in the cache
    int     n_subsets;    // number of subsets
    subset  *subsets;     // the subsets
    double  mc;   // model complexity
    double  cpc;  // compressed population complexity

  public:
    mpm( int n_sets );
    ~mpm();
    int num_subsets() { return n_subsets; }
    subset & operator[](const int i) const { return subsets[i]; }
    void insert( subset &S );
    void remove( int i );
    void merge( int i, int j, subset &S );
    bool converged() { return mc==0; }
    friend std::ostream &operator<< (std::ostream &out, mpm &MPM);
 
    double MC() { return mc; }
    double CPC() { return cpc; }
    double CC() { return mc + cpc; }
    double modelComplexity();
    double compressedPopulationComplexity();
    void combinedComplexity();

    void model( population *pop, std::ofstream &outfile );
    void generate( population *oldpop, population *newpop );
};


#endif

⌨️ 快捷键说明

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