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

📄 ls.h

📁 c++编写的并行拉马克遗传算法的程序。实现分析对接程序
💻 H
字号:
//  These are the classes associated with the local search operator hierarchy.//  Notice that Local_Search is an abstract base class and as such cannot be//  instantiated.  For now, local search is just embodied by Solis & Wets //  Algorithms 1 & 2.//  rsh 07/08/95//  At the suggestion of Bruce Duncan, the Pseudo_Solis_Wets classes were//  added.  The major difference between these classes and the regular //  Solis_Wets classes is that the variance varies across the dimensions//  rsh 02/16/96#ifndef _LOCAL_SEARCH_H#define _LOCAL_SEARCH_H#include "support.h"#include "ranlib.h"class Local_Search{   public:      Local_Search(void);      virtual ~Local_Search(void);      virtual void reset(void) = 0;      virtual int terminate(void) = 0;      virtual int search(Individual &) = 0;};class Solis_Wets_Base : public Local_Search{   protected:      unsigned int size, max_its, max_successes, max_failures;      float expansion, contraction;      float search_frequency;      float *deviates, *bias;   public:      Solis_Wets_Base(void);      Solis_Wets_Base(unsigned int, unsigned int, unsigned int, unsigned int, float, float, float);      virtual ~Solis_Wets_Base(void);      virtual double gen_deviates(float) = 0;      virtual void SW(Phenotype &) = 0;      virtual void reset(void);      virtual int terminate(void);      int search(Individual &);};class Solis_Wets : public Solis_Wets_Base{   protected:      float rho, lower_bound_on_rho;   public:      Solis_Wets(void);      Solis_Wets(unsigned int, unsigned int, unsigned int, unsigned int, float, float, float, float, float);      virtual ~Solis_Wets(void);      virtual double gen_deviates(float) = 0;      void SW(Phenotype &);};class Pseudo_Solis_Wets : public Solis_Wets_Base{   protected:      float *rho, *lower_bound_on_rho;      float *temp_rho;   public:      Pseudo_Solis_Wets(void);      Pseudo_Solis_Wets(unsigned int, unsigned int, unsigned int, unsigned int, float, float, float);      Pseudo_Solis_Wets(unsigned int, unsigned int, unsigned int, unsigned int, float, float, float, float *, float *);      virtual ~Pseudo_Solis_Wets(void);      virtual double gen_deviates(float) = 0;      void SW(Phenotype &);};class Solis_Wets1 : public Solis_Wets{   public:      Solis_Wets1(void);      Solis_Wets1(unsigned int, unsigned int, unsigned int, unsigned int, float, float, float, float, float);      ~Solis_Wets1(void);      double gen_deviates(float);};class Solis_Wets2 : public Solis_Wets{   public:      Solis_Wets2(void);      Solis_Wets2(unsigned int, unsigned int, unsigned int, unsigned int, float, float, float, float, float);      ~Solis_Wets2(void);      double gen_deviates(float);};class Pseudo_Solis_Wets1 : public Pseudo_Solis_Wets{   public:      Pseudo_Solis_Wets1(void);      Pseudo_Solis_Wets1(unsigned int, unsigned int, unsigned int, unsigned int, float, float, float);      Pseudo_Solis_Wets1(unsigned int, unsigned int, unsigned int, unsigned int, float, float, float, float *, float *);      ~Pseudo_Solis_Wets1(void);      double gen_deviates(float);};class Pseudo_Solis_Wets2 : public Pseudo_Solis_Wets{   public:      Pseudo_Solis_Wets2(void);      Pseudo_Solis_Wets2(unsigned int, unsigned int, unsigned int, unsigned int, float, float, float);      Pseudo_Solis_Wets2(unsigned int, unsigned int, unsigned int, unsigned int, float, float, float, float *, float *);      ~Pseudo_Solis_Wets2(void);      double gen_deviates(float);};//  Inline Functionsinline Local_Search::Local_Search(void){}inline Local_Search::~Local_Search(void){}inline Solis_Wets_Base::Solis_Wets_Base(void):  size(0), max_its(10), max_successes(5), max_failures(5), expansion(2.0), contraction(0.5),   search_frequency(1.0), deviates(NULL), bias(NULL){}inline Solis_Wets_Base::Solis_Wets_Base(unsigned int init_size, unsigned int init_max_its,                                         unsigned int init_max_succ, unsigned int init_max_fail,                                         float init_expansion, float init_contraction, float init_search_freq):  size(init_size), max_its(init_max_its), max_successes(init_max_succ), max_failures(init_max_fail),   expansion(init_expansion), contraction(init_contraction), search_frequency(init_search_freq){   bias = new float[size];   deviates = new float[size];}inline Solis_Wets_Base::~Solis_Wets_Base(void){   if(deviates!=NULL)   {      delete [] deviates;   }   if(bias!=NULL)   {      delete [] bias;   }}inline void Solis_Wets_Base::reset(void){   //  Do nothing}inline int Solis_Wets_Base::terminate(void){   return(0);  //  Don't terminate}inline Solis_Wets::Solis_Wets(void):  Solis_Wets_Base(), rho(1.0), lower_bound_on_rho(0.0){}inline Solis_Wets::Solis_Wets(unsigned int init_size, unsigned int init_max_its, unsigned int init_max_succ,                               unsigned int init_max_fail, float init_rho, float init_lb_on_rho,                               float init_expansion, float init_contraction, float init_search_freq):  Solis_Wets_Base(init_size, init_max_its, init_max_succ, init_max_fail, init_expansion, init_contraction,                    init_search_freq), rho(init_rho), lower_bound_on_rho(init_lb_on_rho){}inline Solis_Wets::~Solis_Wets(void){}inline Pseudo_Solis_Wets::Pseudo_Solis_Wets(void):  Solis_Wets_Base(), rho(NULL), lower_bound_on_rho(NULL), temp_rho(NULL){}inline Pseudo_Solis_Wets::Pseudo_Solis_Wets(unsigned int init_size, unsigned init_max_its,                                             unsigned int init_max_succ, unsigned int init_max_fail,                                             float init_expansion, float init_contraction, float init_search_freq):  Solis_Wets_Base(init_size, init_max_its, init_max_succ, init_max_fail, init_expansion, init_contraction,                    init_search_freq), rho(NULL), lower_bound_on_rho(NULL), temp_rho(NULL){}inline Pseudo_Solis_Wets::Pseudo_Solis_Wets(unsigned int init_size, unsigned init_max_its,                                             unsigned int init_max_succ, unsigned int init_max_fail,                                             float init_expansion, float init_contraction, float init_search_freq,                                             float *init_rho, float *init_lb_on_rho):  Solis_Wets_Base(init_size, init_max_its, init_max_succ, init_max_fail, init_expansion, init_contraction,                    init_search_freq), rho(init_rho), lower_bound_on_rho(init_lb_on_rho){   temp_rho = new float[init_size];}inline Pseudo_Solis_Wets::~Pseudo_Solis_Wets(void){   if (rho!=NULL)   {      delete [] rho;   }   if (lower_bound_on_rho!=NULL)   {      delete [] lower_bound_on_rho;   }   if (temp_rho!=NULL)   {      delete [] temp_rho;   }}inline Solis_Wets1::Solis_Wets1(void): Solis_Wets(){}inline Solis_Wets1::Solis_Wets1(unsigned int init_size, unsigned int init_max_its, unsigned int init_max_succ,                                 unsigned int init_max_fail, float init_rho, float init_lb_on_rho,                                 float init_expansion, float init_contraction, float init_search_freq):  Solis_Wets(init_size, init_max_its, init_max_succ, init_max_fail, init_rho, init_lb_on_rho, init_expansion,               init_contraction, init_search_freq){}inline Solis_Wets1::~Solis_Wets1(void){}inline double Solis_Wets1::gen_deviates(float rho){   return(gennor(0.0, rho));}inline Solis_Wets2::Solis_Wets2(void):  Solis_Wets(){}inline Solis_Wets2::Solis_Wets2(unsigned int init_size, unsigned int init_max_its, unsigned int init_max_succ,                               unsigned int init_max_fail, float init_rho, float init_lb_on_rho,                               float init_expansion, float init_contraction, float init_search_freq):  Solis_Wets(init_size, init_max_its, init_max_succ, init_max_fail, init_rho, init_lb_on_rho, init_expansion,              init_contraction, init_search_freq){}inline Solis_Wets2::~Solis_Wets2(void){}inline double Solis_Wets2::gen_deviates(float rho){   return(genunf(-rho/2.0, rho/2.0));}inline Pseudo_Solis_Wets1::Pseudo_Solis_Wets1(void):  Pseudo_Solis_Wets(){}inline Pseudo_Solis_Wets1::Pseudo_Solis_Wets1(unsigned int init_size, unsigned int init_max_its,                                               unsigned int init_max_succ, unsigned int init_max_fail,                                                float init_expansion, float init_contraction,                                               float init_search_freq):  Pseudo_Solis_Wets(init_size, init_max_its, init_max_succ, init_max_fail, init_expansion,                     init_contraction, init_search_freq){}inline Pseudo_Solis_Wets1::Pseudo_Solis_Wets1(unsigned int init_size, unsigned int init_max_its,                                               unsigned int init_max_succ, unsigned int init_max_fail,                                                float init_expansion, float init_contraction,                                               float init_search_freq, float *init_rho,                                              float *init_lb_on_rho):  Pseudo_Solis_Wets(init_size, init_max_its, init_max_succ, init_max_fail, init_expansion,                     init_contraction, init_search_freq, init_rho, init_lb_on_rho){}inline Pseudo_Solis_Wets1::~Pseudo_Solis_Wets1(void){}inline double Pseudo_Solis_Wets1::gen_deviates(float rho){   return(gennor(0.0, rho));}inline Pseudo_Solis_Wets2::Pseudo_Solis_Wets2(void):  Pseudo_Solis_Wets(){}inline Pseudo_Solis_Wets2::Pseudo_Solis_Wets2(unsigned int init_size, unsigned int init_max_its,                                               unsigned int init_max_succ, unsigned int init_max_fail,                                                float init_expansion, float init_contraction,                                               float init_search_freq):  Pseudo_Solis_Wets(init_size, init_max_its, init_max_succ, init_max_fail, init_expansion,                     init_contraction, init_search_freq){}inline Pseudo_Solis_Wets2::Pseudo_Solis_Wets2(unsigned int init_size, unsigned int init_max_its,                                               unsigned int init_max_succ, unsigned int init_max_fail,                                                float init_expansion, float init_contraction,                                               float init_search_freq, float *init_rho,                                              float *init_lb_on_rho):  Pseudo_Solis_Wets(init_size, init_max_its, init_max_succ, init_max_fail, init_expansion,                     init_contraction, init_search_freq, init_rho, init_lb_on_rho){}inline Pseudo_Solis_Wets2::~Pseudo_Solis_Wets2(void){}inline double Pseudo_Solis_Wets2::gen_deviates(float rho){   return(genunf(-rho/2.0, rho/2.0));}#endif

⌨️ 快捷键说明

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