亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? chrome.h

?? wang xiao ping 版遺傳算法
?? H
字號:
// Copyright Andy Singleton, 1993,1994
// This code is released for non-commercial use only
// For questions or upgrades contact:
// Andy Singleton, Creation Mechanics Inc.
// PO Box 248, Peterborough, NH 03458
// Internet: p00396@psilink.com
// Compuserve 73313,757
// Phone: (603) 563-7757

// GPQUICK
// C++ prefix stack implementation
// Divides GP system into classes:
//    Chrome-Function  - representation of the genetic program
//    Pop - Runs the GA
//    Problem - fitness and primitive functions


#ifndef _CHROME_H
#define _CHROME_H


#include "selector.h"

// uniform argument and return type for "closure"
typedef float retval ;

// Define this if you do multiple evals, one Chrome at a time
// It speeds up the EVAL calls significantly
// Penalties are:  Time to expand the chrome once before evaluations
//                 Uses globals, so only one Chrome at a time
#define FASTEVAL


#ifdef FASTEVAL
		// evaluation code with global pointers
	typedef retval (*EVALFUNC)();
#else
		// evaluation code with pointer passing
	typedef retval (*EVALFUNC)(class Chrome*);
#endif



	// two byte instruction node, 8 bits function index, 8 bits operand index
typedef struct {unsigned char op; unsigned char idx;} node;  // node type
	// eval node with pointers for direct function calls
typedef struct {EVALFUNC ef; unsigned char op; unsigned char idx;} evalnode;  // node type

	// Grab the function index
#define FUNCNUM(c) (c.op)
	// argument count for the current function
#define ARGNUM() (funclist[FUNCNUM(expr[ip])]->argnum)
#define PARGNUM(ip) (funclist[ip->op]->argnum)
	// Grab the operand
#define VARNUM(c) (c.idx)
#define PVARNUM(ip) (ip->idx)
	// Build a node "c"
#define SETNODE(c,o,v) c.op=o;c.idx=v
#define SETEVALNODE(ip,o,v) ip->op=o;ip->idx=v;ip->ef=funclist[o]->evalfunc


	// Function evaluation stuff
	// These macros may change internal form for faster evaluation.
	// Arguments will be removed.  Use them.
#ifdef FASTEVAL

		//Define an EVALFUNC with no arguments
#define OPDEF(Op) retval Op()
		//Get a pointer to the chrome being evaluated
#define CHROMEP ChromeGlobal
		//current instruction pointer
#define IP IpGlobal
		// get its argument
#define GETIDX (IP->idx)
		// traverse an unused argument in an eval
#define TRAVERSE() CHROMEP->TraverseGlobal()
		//Evaluate the next expression
#define EVAL ((++IP)->ef)()
#else
		//Define an EVALFUNC
#define OPDEF(Op) retval Op(Chrome* curchrome)
		//Get a pointer to the chrome being evaluated
#define CHROMEP curchrome
		//current instruction pointer
#define IP CHROMEP->ip
		// get its argument
#define GETIDX (CHROMEP->expr[IP].idx)
		// traverse an unused argument in an eval
#define TRAVERSE() CHROMEP->Traverse()
		//Evaluate the next expression
#define EVAL CHROMEP->eval()
#endif

		//function and memory arrays
#define FUNCARRAYSIZE 100
#define CONSTARRAYSIZE 256

// cut numeric overflows.  Bound returns to 10^15
#define BIGFLOAT ( (retval) 1.0e15 )
#define SMALLFLOAT ( (retval) 1.0e-15 )

#define BOUNDF(f) (f==0? f : (f>0 ?((f)>BIGFLOAT ? BIGFLOAT : ((f)<SMALLFLOAT? SMALLFLOAT : (f))) : ((f)<-BIGFLOAT ? -BIGFLOAT : ((f)>-SMALLFLOAT? -SMALLFLOAT : (f))) ))


// Compatibility stuff
#define BOOL int
#define UINT unsigned int



// All primitives in a problem are subclasses of this FUNCTION object

class Function {
public:
	int serial;             // serial number in universal function list (not implemented)
	char name[30];                  // Function name
	int argnum;             // number of arguments
	int varnum;                             // number of variables in variable table of opcode
	int weight;             // selection frequency relative to other functions
	Function() {};
	Function(int a,int v,int w,EVALFUNC e,char* n)
		{argnum=a;varnum=v;weight=w;evalfunc=e;strcpy(name,n);}; 
	virtual char* getprint(class Chrome* st);       // Printed name may differ
	char* getname() {return name;};
	EVALFUNC evalfunc;                      // pointer to evaluation code.  Not a virtual for speed reasons
#ifndef FASTEVAL
	retval eval(class Chrome* st) {return (evalfunc)(st);};       // active ingredient
#else
	retval eval() {return (evalfunc)();};
#endif
};

//******************* Parameters
enum {
pMaxExpr,          // Maximum expression size in nodes
pInitExpr,           // Maximum initial expression depth

pMuteRate,          // Node mutation rate per 1000
pCrossSelf,         // Allow self crossover?
pUnRestrictWt,         // any point crossover per 100

pCrossWt,         // Crossover weight on generate
pMuteWt,         // overall Mutation weight on generate
pMuteNodeWt,         // Normal-Mutation weight on generate
pMuteConstWt,         // C-Mutation weight on generate
pMuteShrinkWt,         // Shrink-Mutation weight on generate
pAnnealMuteWt,                 // Mut. Annealing weight
pAnnealCrossWt,         // Crossover Annealing weight
pCopyWt,         // Copy weight on generate

pSelectMethod,         // can be tournament, ranked, proportional
pTournSize,         // tournament size 2-10
pMateRadius,         // mating radius.  0 for panmictic
pGaussRegion,         // 0 for flat selection in region, 1 for gaussian
pRepeatEval,         // repeat evaluation on copy?  For sampled evals

pKillTourn,         // number for anti-tournament
pMaxAge,         // age to start killing off a good guy
pParsimony,

pFitnessCases,     // number of fitness cases
pPopSize,         // population size
PARAM_COUNT }; // total number of parameters

class ChromeParams {    // parameter set for initializing a chrome
public:
	int params[PARAM_COUNT];
	static char *pnames[];                  // names are added in the constructor
	int varcount;
	int funccount;

	ChromeParams();
	virtual ~ChromeParams();
	virtual void Edit() {};                 // Put your own edit code here

};

// Carrier for fitness values.
// Feel free to subclass this if you want to track your fitness cases more closely (by adding data)
// or minimize instead of maximize (by redefining IsBetter)
// or combine multiple scores
class FitnessValue {
public:
	float fvalue;			// Always provide this for reporting reasons
	virtual BOOL IsBetter(FitnessValue* fv) {return fvalue>fv->fvalue;};
	virtual BOOL IsBetter(float fv) {return fvalue>fv;};
	virtual void Copy(FitnessValue* fv) {memcpy(this,fv,sizeof(FitnessValue));};
	operator float() {return fvalue;};
	operator >(FitnessValue& fv) {return IsBetter(&fv);};
	operator <(FitnessValue& fv) {return fv.IsBetter(this);};
};

#define EXPRLEN 1000             // maximum length of expression
enum {LOAD_OK,LOAD_BADFILE,LOAD_BADFUNC,LOAD_TOOFEW,LOAD_TOOMANY,LOAD_BADCONST,LOAD_TOOLONG};   // subload error values
enum {PRETTY_NONE,PRETTY_PARENS,PRETTY_NOPARENS};       // source listing options



// The Chrome is the carrier for a program expression
// It includes the eval, initialization, reading, mutation, crossover, reading and writing

class Chrome     {               // GP program structure
public:
	int ip;                          // Current instruction pointer
	node *expr;                                     // actual code
	int MaxExpr;                                    // expr size
	int ExprBytes;                                  // bytes in expr (MaxExpr * sizeof(node))
	//float lastfitness;                              // fitness on last eval
	INT32 birth;                                             // gencount when generated
	int depth;                                              // depth counter for recursive write

    class Problem* probl;
	CSelector* funcbag;                              // select functions by weight
    class FitnessValue* nfitness;                       // pointer to an allocated object holding the type of fitness
	Function** funclist;            // array of pointers to functions and operations
	int funccount;
	ChromeParams* params;
	retval* constlist;              // array of constants

	Chrome(ChromeParams* p,CSelector* cf,Problem* pr,Function** f,retval* c,BOOL doinit=TRUE);     // returns a randomly initialized condition
	virtual Chrome* Copy();                 // copy yourself.  Extend for subclasses, and call base.
	virtual void Dup(Chrome* source);  // make a copy without re-initializing.  Extend for subclass, and call base
	virtual ~Chrome();
	void SubInit(int argstogo,int maxlen,int full=FALSE);     // Initialize a subtree half full
	BOOL IsBetter(Chrome* chrome) {return nfitness->IsBetter(chrome->nfitness);};

#ifndef FASTEVAL
	retval eval() {ip++;return funclist[FUNCNUM(expr[ip])]->eval(this);} ;
#endif
	retval evalAll() ; // eval the whole expression anew
	void SetupEval();                         // expand expression for multiple evals
	void Traverse();              // Skips over next subtree
	void TraverseGlobal();

	Chrome* CrossTree(Chrome* mate);
	int GetIntNode();                                       // get an internal node for crossover
	int GetAnyNode();                               // get any node for crossover
	void Mutate();                                  // mutate nodes with rate r
	void MutateC();
	void MutateShrink();
	int SubLen(int startat=0)
	 {ip=startat;Traverse();return ip-startat;};    // return length of expression at startat

	void write(int pretty,ostream& ofile = cout)
	 {ip=-1;depth=0;SubWrite(ofile,pretty);};       // write the expression
	void SubWrite(ostream& ostr,int pretty = 0);
	int SubLoad(istream& istr,node* buf);   // load an expression.  Return 0 on success or error val
	int FindFunc(char* funcname);                   // find index of a function, or -1 if not found

	virtual int Load(istream& istr,int issource); // load from a stream.  Return success
};

class Problem {         // Sets up a particular GP problem.  GA independent.
					// contains function set, variables, and fitness function
protected:
	CSelector* funcbag;                              // select functions by weight
	retval* constlist;              // array of constants
	retval* varlist;                // array of variables
public:
	Function** funclist;                    // primitive functions

public:
	int funccount;

	Problem();     // allocate the arrays
	virtual ~Problem();
	void AddF(Function* f)          // add a function to the problem
	 {funclist[funccount++]=f;};
	Function** getfuncs() {return funclist;};
	retval* getconsts() {return constlist;};
	CSelector* getfuncbag() ;

	// User hooks
	virtual FitnessValue* GetFitnessObj();	// Can change behavior of FitnessValue
	virtual float fitness(Chrome* chrome);  // The active ingredient.  You add this.
};



class Pop {                     // a population for a particular GA.  Problem independent
					// controls the GA - selection, crossover, etc
public:
	Chrome** pop;           // allocated array holding the actual chromes
	ChromeParams* params;
	Problem* problem;
	UINT popsize;           // size of array
	INT32 gencount;          // number of individuals generated
	time_t start;           // starting time
	time_t elapsed;         // elapsed time for last go_until
	BOOL isAborted;

	FitnessValue* BestFitness;      // Best current fitness value
	int   BestMember;       // Index of best current member
	int initeval;           // Flag: Still evaluating initial population?
	UINT nexteval;          // Next initial pop member to evaluate

	Pop(Problem* prob,ChromeParams* par, UINT size );       // set up a population for a particular problem
	Pop(Problem* prob,ChromeParams* par);   // stub for derived classes
	virtual ~Pop();
    Chrome* best();                         // return the current best chrome
	virtual Chrome* selectParent(int target); // select one parent. Return pointer to selected parent
						 // target identifies selection region in pop
	virtual Chrome* generate();     // generate a new chrome.  Return fitness
								// Alternate steady state GA code can go here
						// generate until reaching time max_time, evaluating maxevals individuals, or reaching maxfitness
	virtual Chrome* go_until(time_t max_time, int maxevals, float maxfitness);
	int GetTarget();                // get a target member to replace with anti-tournament
	int GetAnnealTarget();                  // get a target for annealing, with selection tournament
	virtual BOOL Aborted(){return isAborted;};
	virtual float Fitness(Chrome* chrome);   // Evaluate a member using the current problem
	void InsertMember(int slot,Chrome* NewChrome,int nodelete = FALSE);                     //insert a chrome and update BestMember values
};

// Function to call if there is an error allocating population
void NoMoreMem();

#endif          // #ifndef _CHROME_H
////////////////////////////////////////////////////////////

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一本色道久久综合精品竹菊| 中文字幕欧美国产| 成人免费毛片app| 蜜桃久久精品一区二区| 亚洲色图.com| 国产精品美女久久久久av爽李琼 | 国产精品一线二线三线| 日本91福利区| 免费在线观看成人| 五月婷婷色综合| 午夜精品爽啪视频| 亚洲第一狼人社区| 性久久久久久久久| 性久久久久久久| 视频一区二区欧美| 日韩中文字幕1| 人妖欧美一区二区| 久色婷婷小香蕉久久| 精品亚洲porn| 国产精品一区二区在线看| 国产美女主播视频一区| 国产成a人亚洲精| eeuss影院一区二区三区| av欧美精品.com| 色哟哟一区二区| 欧美性猛交xxxx黑人交| 欧美日韩精品欧美日韩精品 | 国产精品88888| 国产91丝袜在线观看| 国产丶欧美丶日本不卡视频| 高清在线观看日韩| 色综合久久精品| 欧美精品99久久久**| 日韩免费高清视频| 国产农村妇女精品| 亚洲人成精品久久久久| 亚洲一区自拍偷拍| 久久精品国产亚洲5555| 国产馆精品极品| 91国偷自产一区二区三区观看| 欧洲中文字幕精品| 精品国产免费久久| 综合中文字幕亚洲| 热久久久久久久| 成人一区二区三区中文字幕| 在线免费观看日本一区| 日韩欧美在线一区二区三区| 日本一区二区电影| 视频一区二区国产| 成人爱爱电影网址| 日韩一区二区高清| 亚洲天天做日日做天天谢日日欢| 日韩精品视频网| www.激情成人| 欧美一级高清大全免费观看| 欧美国产丝袜视频| 青青草国产精品97视觉盛宴| 国产 日韩 欧美大片| 欧美一区二区在线不卡| 国产精品无遮挡| 奇米777欧美一区二区| www.欧美色图| 久久精品综合网| 香蕉久久夜色精品国产使用方法| 国产成人夜色高潮福利影视| 欧美一区二区三区视频在线| 亚洲精品你懂的| 东方aⅴ免费观看久久av| 日韩一二三四区| 午夜精彩视频在线观看不卡| av在线播放不卡| 国产欧美日韩亚州综合 | 不卡的电影网站| 日韩精品在线一区| 午夜视频一区二区| 日本久久电影网| 亚洲图片你懂的| 国产成人精品一区二| 99这里只有精品| av亚洲精华国产精华精华| 日本精品一区二区三区高清 | 国产精品一区二区在线看| 7777精品伊人久久久大香线蕉经典版下载 | 2021中文字幕一区亚洲| 日韩电影在线观看电影| 欧美亚洲自拍偷拍| 一区二区三区在线视频免费 | 久久嫩草精品久久久精品| 免费欧美日韩国产三级电影| 9191精品国产综合久久久久久| 亚洲一区欧美一区| 欧美日韩在线播放三区四区| 一区二区欧美在线观看| 在线观看不卡一区| 亚洲一区二区成人在线观看| 欧美日韩在线观看一区二区 | 国产欧美一区二区精品久导航| 国产综合色产在线精品 | 国产一区久久久| 久久久久久**毛片大全| 国产成人精品午夜视频免费| 欧美经典一区二区三区| 不卡的av在线| 一个色妞综合视频在线观看| 欧美熟乱第一页| 欧美aa在线视频| 国产亚洲一区二区在线观看| 成人精品一区二区三区中文字幕| 一区免费观看视频| 欧美午夜精品理论片a级按摩| 亚洲一二三区不卡| 日韩久久免费av| 成人一区在线观看| 亚洲高清在线视频| 日韩美女一区二区三区四区| 丁香婷婷综合五月| 亚洲一级电影视频| 亚洲精品在线观看网站| 99国产精品一区| 日韩高清不卡在线| 久久久久久一级片| 欧美在线观看视频在线| 精品一区二区在线视频| 国产精品久久久久9999吃药| 欧美日韩一级二级| 国产精品一区二区男女羞羞无遮挡| 国产精品美女久久久久久久| 欧美丰满嫩嫩电影| 成人动漫一区二区在线| 青青草91视频| 亚洲日本免费电影| 日韩欧美激情四射| 色婷婷精品久久二区二区蜜臂av | 亚洲精品伦理在线| 精品国产91久久久久久久妲己| 91在线一区二区三区| 久久精品av麻豆的观看方式| 亚洲图片激情小说| 欧美精品一区二区三区蜜桃视频| 欧美视频中文字幕| av激情综合网| 国产精品亚洲一区二区三区妖精| 亚洲不卡av一区二区三区| 中文字幕第一区第二区| 精品国产一区二区三区av性色| 欧美性受xxxx黑人xyx| 成人在线视频一区二区| 国内精品免费**视频| 视频一区国产视频| 亚洲一级电影视频| 亚洲免费观看在线视频| 国产精品私人影院| 久久久国产精品不卡| 欧美xxxx在线观看| 久久综合久色欧美综合狠狠| 91原创在线视频| 成人短视频下载| 成人动漫中文字幕| 国产白丝精品91爽爽久久| 国内国产精品久久| 国内外成人在线视频| 麻豆91精品91久久久的内涵| 日本欧美在线看| 日韩激情在线观看| 日韩中文字幕一区二区三区| 香蕉影视欧美成人| 午夜精品久久久久久久蜜桃app| 亚洲精品精品亚洲| 亚洲最大色网站| 一区二区三区四区亚洲| 亚洲免费观看在线观看| 亚洲影院在线观看| 亚洲成a人片综合在线| 亚洲va欧美va人人爽午夜| 午夜精品久久久久久久99水蜜桃| 日韩主播视频在线| 毛片av中文字幕一区二区| 激情av综合网| 成人少妇影院yyyy| 91影院在线免费观看| 在线看日本不卡| 欧美日韩综合一区| 欧美男生操女生| 欧美大片日本大片免费观看| 久久久久国产免费免费| 国产精品美日韩| 亚洲国产日日夜夜| 久色婷婷小香蕉久久| 国产成人亚洲综合a∨婷婷| www.成人网.com| 欧美日韩一二三| 久久日韩精品一区二区五区| 中文字幕高清一区| 亚洲电影一区二区| 国产一区三区三区| 色婷婷久久一区二区三区麻豆| 51久久夜色精品国产麻豆| 久久人人超碰精品| 亚洲乱码中文字幕综合| 奇米777欧美一区二区|