source: cpp/frams/genetics/genman.h @ 180

Last change on this file since 180 was 145, checked in by sz, 11 years ago

Genetics reorganization (affects ALL applications!):

  • Converters/Validators? are now configured/initialized in a more verbose but also less confusing way
  • At the same time, the PreconfiguredGenetics? object will help you avoid the increased complexity by creating the ready-to-use environment that is sufficient in 99% of cases (see the demos)
  • Format F genetics updated (work in progress)
  • Property svn:eol-style set to native
File size: 3.6 KB
Line 
1// This file is a part of the Framsticks GDK.
2// Copyright (C) 2002-2014  Maciej Komosinski and Szymon Ulatowski.  See LICENSE.txt for details.
3// Refer to http://www.framsticks.com/ for further information.
4
5#ifndef _GENMAN_H_
6#define _GENMAN_H_
7
8#include <common/nonstd.h>
9#include <common/nonstd_stl.h>
10#include <frams/param/mutableparam.h>
11#include <frams/param/mutparamlist.h>
12#include <frams/neuro/geneticneuroparam.h>
13#include "geno.h"
14#include "oper_fx.h"
15
16#define GENSTYLE_COMMENT GENSTYLE_RGBS(0,150,0,GENSTYLE_BOLD)
17
18struct GenoLink
19{
20        int count;
21        string g1, g2;
22        float chg;
23        float fit;
24};
25
26class GenMan : public GenoValidator
27{
28public:
29        GenMan();
30        ~GenMan();
31        void setDefaults();
32        /**
33        if canvalidate==false, returns GENOPER_NOOPER (cannot test), GENOPER_OK (\e g is valid), or 1-based error position.
34        if canvalidate==true, returns
35        - GENOPER_OK and canvalidate==false if \e g was already valid
36        - GENOPER_NOOPER and canvalidate==false if \e g was (probably) validated but couldn't checkValidity
37        - 1-based error position and canvalidate==false if \e g was invalid and couldn't validate
38        - 1-based error position and canvalidate==true if \e g was invalid and was validated successfully
39
40        Note: 1-based error position is always related to pure genotype (g.GetGene()), without the leading comment
41        */
42        int testValidity(Geno &g, bool &canvalidate);
43        int testGenoValidity(Geno& g); //class GenoValidator (geno.h)
44        Geno Validate(const Geno&); ///<returns validated (if possible) genotype
45        Geno Mutate(const Geno&); //returns mutated genotype or empty if errors
46        Geno CrossOver(const Geno&, const Geno&); //returns xover genotype ("child") or empty if errors
47        float Similarity(const Geno&, const Geno&); //returns GENOPER_NOOPER or normalized similarity (1: identical, 0: different)
48        unsigned long Style(const char* g, int pos); //returns Style (and validity) of a genotype char.
49        void GetFullStyle(const char *g, unsigned long *styletab); //optimized. Fills styletab with styles for all genotype chars. sizeof(*styletab) must be at least strlen(g).
50        SString HTMLize(const char *g); //returns colored genotype in HTML.
51        SString HTMLizeShort(const char *g); //returns colored genotype (abbreviated if needed) in HTML.
52        Geno GetSimplest(char format); ///<returns pointer to the simplest genotype of \e format or empty Geno()
53        const char *GetOpName(char format); ///<returns pointer to the active operator set for \e format
54        const vector<GenoOperators*>& GetOperators() const { return oper_fx_list; } ///<returns the list of available genetic operators
55private:
56        vector<GenoOperators*> oper_fx_list;
57        void saveLink(string prz, string pot, float& chg);
58        GenoOperators* getOper_f(char format);
59        SString HTMLize(const char *g, bool shorten);
60public:
61        vector<GenoLink> GenoLinkList;
62        int history; //remember history?
63        int hilite; //syntax highlighting (Style)
64        int extmutinfo; //extended info: the info field of the genotype will contain the name of the mutation method
65        int count; //# of the last genetic operation
66        int valid_m, valid_xo, validated_m, validated_xo, invalid_m, invalid_xo, failed_m, failed_xo;
67        double mutchg, xochg;
68        SListTempl<char> operformats; //the list of supported_format, in the same order as in seloperpar
69        int* seloper; //fields for seloperpar
70        Param localpar, localstats;
71        MutableParam seloperpar;
72        GeneticNeuroParam neuronsparam;
73        MutableParamList par;
74#define STATRICKCLASS GenMan
75        PARAMPROCDEF(p_clearStats);
76        PARAMPROCDEF(p_report);
77        PARAMPROCDEF(p_htmlize);
78        PARAMPROCDEF(p_htmlizeshort);
79        PARAMPROCDEF(p_validate);
80        PARAMPROCDEF(p_mutate);
81        PARAMPROCDEF(p_crossover);
82        PARAMPROCDEF(p_getsimplest);
83#undef STATRICKCLASS
84        void clearStats();
85        static void onDelGen(void*, long);
86};
87
88
89#endif
Note: See TracBrowser for help on using the repository browser.