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

📄 objectivevector.h

📁 moealib
💻 H
字号:
/*************************************************************************************** *                                                                                     * * -------------------------- MOEA ObjectiveVector Class  -----------------------------* *   -----------------PhenotypicVector class also defined here----------------------   * *                                                                                     * * ObjectiveVector is used to store objecitve scores of individual in multi-objective  * * evolutionary algorithm.                                                             * *                                                                                     * * The only difference between ObjectiveVector and VectorT<double> & PhenotypicVector  * * (defined below for phenotypic representation of genomes) is that the former is      * * added with static member mM, which indicate whether we are minimizing or maximizing.* * And consequently the compariosn relation is different from the latter too.          * *                                                                                     * *                                                          xianming Chen, Aug, 2000   * *                                                          modified on Jan 13, 2001   * ***************************************************************************************/#ifndef _ObjectiveVector_H#define _ObjectiveVector_H#include "Vector.h"#include "Pareto.h"/*  * "_double" is defined to enable that there are two static normalizer, * The original double type is  used for objective space (class ObjectiveVector below). * The defined class _double is used for decision(phenotypic) space. */class _double { public:  _double() { }  _double(double d) : dval(d) { }  _double operator= (const _double& rhs) { dval = rhs.dval; }  double convert2double() const { return dval; }  friend bool operator==(const _double& d1, const _double& d2) { return d1.dval == d2.dval; }  friend bool operator!=(const _double& d1, const _double& d2) { return d1.dval != d2.dval; }  friend bool operator>=(const _double& d1, const _double& d2) { return d1.dval >= d2.dval; }  friend bool operator<=(const _double& d1, const _double& d2) { return d1.dval <= d2.dval; }  friend bool operator> (const _double& d1, const _double& d2) { return d1.dval >  d2.dval; }  friend bool operator< (const _double& d1, const _double& d2) { return d1.dval <  d2.dval; }  friend double operator+ (const _double& d1, const _double& d2) { return d1.dval+d2.dval; }  friend double operator- (const _double& d1, const _double& d2) { return d1.dval-d2.dval; }  friend double operator* (const _double& d1, const _double& d2) { return d1.dval*d2.dval; }  friend double operator/ (const _double& d1, const _double& d2) { return d1.dval/d2.dval; }  friend ostream& operator<< (ostream& os, const _double d) { return os << d.dval; } private:  double dval;};typedef VectorT<_double>  PhenotypicVector;class ObjectiveVector : public dVector, public Pareto {  // dVector is VectorT<double> public:  ObjectiveVector() : dVector(dimens) { assert(dimens==dims); }  ObjectiveVector(const ObjectiveVector& org): dVector(org) { assert(dimens==dims); }  virtual  ~ObjectiveVector() { }  void    copy(const ObjectiveVector& org)              { dVector::copy(org); }  virtual ObjectiveVector* clone() { ObjectiveVector* p = new ObjectiveVector(*this); return p; }  const   ObjectiveVector& operator= (const ObjectiveVector& rhs) { copy(rhs); return *this; }  pRel compare(const ObjectiveVector & other) const;  /*+++++++++++++++++++++++ NOTE: != means indifferent. ++++++++++++++++++++++++++++++*/  bool operator!= (const ObjectiveVector &r) { return compare(r)==INDIFFERENT ? true:false; }  bool operator>  (const ObjectiveVector &r) { return compare(r)==DOMINATING ? true:false; }  bool operator<  (const ObjectiveVector &r) { return compare(r)==DOMINATED  ? true:false; }  bool operator== (const ObjectiveVector &r) { return compare(r)==SAME        ? true:false; }  bool operator>= (const ObjectiveVector &r) { return *this > r || *this == r ; }  bool operator<= (const ObjectiveVector &r) { return *this < r || *this == r ; }};inline Pareto::pRel ObjectiveVector::compare(const ObjectiveVector& other) const {  switch(dVector::compare(other)) {  case SMALLER: return mM==MIN?  DOMINATING : DOMINATED; break;  case BIGGER : return mM==MAX?  DOMINATING : DOMINATED; break;  case EQUAL  : return SAME;     break;  default     : return INDIFFERENT;  }}#endif

⌨️ 快捷键说明

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