📄 moga2.h
字号:
#include <iostream.h>#include <stdio.h>#include <stdlib.h>#include <math.h>#include <fstream.h>#include <string.h>#include <malloc.h>#include <time.h>#include <sys/timeb.h>/*clase que em permite la generacion, y manipulacion de una generacion*/class Individuo{ public: double sumaValores; double *aptObj; double *aptObjEsc; int *genotipo; double apt; double valEsp; long rank; long loc;};class MallaAdap{ int posPARETO,tamPARETO; Individuo *PARETO; long *hipercubo; long hipercubosUtilizadosVar; int nObjs; int nDivs; long lMalla; double *tamDiv; double *inicioMalla; int iTot; double restPobNRem; bool restPobNRemb; bool restableceMemoriaVar; int bits; int sndElit; long NG; public: MallaAdap(int,int,int); void gPARETO(Individuo *ind); int dominaAPareto(Individuo *ind); void eliminaDominados(int *dominados); void copiaxxx(Individuo *ind,Individuo *ind2); int Domina(Individuo *ind1, Individuo *ind2); virtual int restricciones(int *){return 0;}; void copia(int *,int *, int); void copia(double *,double *, int); int *inicializa(); void actualizaLoc(); void inicializaDivisiones(); long cualLoc(Individuo *ind); void FunPARETO(Individuo *ind); int masPoblado(long mPoblado,long r); long hipercubosUtilizados(); long buscaMasPoblado(); long buscaIndConLoc(long mp); void ImprimeValores();};class Representacion{ protected: int nGenes; int *presicion;//y su presicion int bits;//numero de "bits" que se necesita. int *bitsXgene; double *lSup;//Liminte superior double *lInf;//limite infierior int Cantidad; int base;//base la cual me indica si sequiere una representacion binaria o numerica public://constructur Representacion(int b,int ngenes,double *linf, double *lsup, int *pres, int iguales=1); ~Representacion(); int retBits();//retorna el numero de bits que se utilizan int retBits(int i);//retorna el numero de bits por cada gen double decodifica (int gen,int *num);//decodifica un gen en su fenotipo int * genera();//genera un genotipo aleatorio int * inicializa();//genera un genotipo aleatorio void copia(int*,int*,int); void copia(double*,double*,int); int muta(int *,float);//muta un genotipo y regresa el numero de mutaciones void cruza(int *, int *,int,int);//cruza dos genotipos void cruza(int *, int *,int);//cruza dos genotipos void imprime(double *num,int n);//imprime el genotipo void imprime(int *num,int n);//imprime el genotipo int *gray_A_binario(int *g);//calculo de codigo Gray a binario};class MOGAII:public Representacion{ double sumaValores; Individuo *poblacion; Individuo *poblacionNueva; int *cadMasApto,M; double Pc,Pm; int Gmax; int *arrordenado; int q; int nObjs; int nGenes; long NMayor; double sigmaShare; MallaAdap *malla;public: MOGAII(int gmax,int m, double pc, double pm,int ngenes,int nobjs,double *linf, double *lsup, int *pres,int _q); virtual int restricciones(int *){return 0;}; int Domina(Individuo *,Individuo *); void AsignarJerarquia(); void AsignarAptitudLineal(); void CalculoSigmaShare(); void AsignarAptitudCompartida(); void EscalarApt(); void EvaluarPoblacion(); void evalua(int *,double *); void calculoSigmaShare(); void Seleccion(); void CruzaYMutacion(); void Algoritmo(); void GenerarPoblacionAleatoria(); void NuevaGeneracion(); void NuevaPoblacion(); void ImprimeValores();};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -