source: cpp/f8-to-f1/geno_f8.h @ 30

Last change on this file since 30 was 30, checked in by mwajcht, 15 years ago

Added mutation which deletes a production.

File size: 3.2 KB
Line 
1/*
2 *  geno_f8.h
3 *  L-systemToF1
4 *
5 *  Created by Maciej Wajcht on 08-06-07.
6 *  Copyright 2008 __MyCompanyName__. All rights reserved.
7 *
8 */
9
10#ifndef _GENO_F8_H_
11#define _GENO_F8_H_
12
13#include "param.h"
14#include "sstring.h"
15#include "geno_fx.h"
16#include <vector>
17#include "conv_f8tof1.h"
18
19using namespace std;
20
21//indices in array with probabilities of mutation operators
22#define F8_CHANGE_BEGINNING_ARG 0
23#define F8_CHANGE_ARG 1
24#define F8_DELETE_COMMAND 2
25#define F8_INSERT_COMMANDS 3
26#define F8_ENCAPSULATE 4
27#define F8_CHANGE_CONDITION_SIGN 5
28//#define F8_REPLACE_COMMAND 6
29#define F8_ADD_PARAMETER 6
30#define F8_ADD_CONDITION 7
31#define F8_ADD_SUBPRODUCTION 8
32#define F8_CHANGE_ITERATIONS_NUMBER 9
33#define F8_DELETE_PARAMETER 10
34#define F8_DELETE_CONDITION 11
35#define F8_ADD_LOOP 12
36#define F8_DELETE_LOOP 13
37#define F8_DELETE_PRODUCTION 14
38#define F8_OPERATION_COUNT 15
39
40class ProductionInfo {
41public:
42        ProductionInfo() {};
43        ProductionInfo(SString name, int paramCount);
44        SString name;
45        int paramCount;
46        vector<SString> paramNames;
47        bool isFirstProduction;
48};
49
50class Geno_f8 : public Geno_fx {
51public:
52        Geno_f8();
53        ~Geno_f8();
54       
55        //probabilities of mutation operators
56        double operation[F8_OPERATION_COUNT];
57       
58        int checkValidity(const char * geno);
59        int validate(char * &geno);
60        int mutate(char *&g,float& chg, int &method);
61        int crossOver(char *&g1,char *&g2,float& chg1,float& chg2);
62        unsigned long style(const char *g, int pos);
63        char* getSimplest();
64       
65        SString testMutate(SString &in, int method);
66protected:
67        GenoConv_F8ToF1 *converter;
68        static const int maxTotalIterations = 200;
69        static const int maxNormalIterations = 100;
70       
71        vector<char> simpleCommandLetters;
72       
73        int getProductionsCount(const SString &in);
74        vector<ProductionInfo> getProductionsInfo(const SString &in);
75        bool checkProdNameExist(vector<ProductionInfo> info, SString name) const;
76        bool checkParamNameExist(vector<SString> names, SString name) const;
77        SString getOppositeCondition(const SString &c) const;
78        SString removeProductionCalls(const SString production) const;
79        SString mutateChangeBeginningArg(SString &in, float& chg);
80        SString mutateChangeArg(SString &in, float& chg);
81        SString mutateDeleteCommand(SString &in, float& chg);
82        SString mutateInsertCommands(SString &in, float& chg);
83        //SString mutateReplaceCommand(SString &in, float& chg);
84        //SString mutateInsertReplaceCommand(SString &in, float& chg, bool replace);
85        SString mutateEncapsulate(SString &in, float& chg);
86        SString mutateDeleteProduction(SString &in, float& chg);
87        SString mutateChangeConditionSign(SString &in, float& chg);
88        SString mutateAddParameter(SString &in, float& chg);
89        SString mutateAddCondition(SString &in, float& chg);
90        SString mutateDeleteParameter(SString &in, float& chg);
91        SString mutateDeleteCondition(SString &in, float& chg);
92        SString mutateAddLoop(SString &in, float& chg);
93        SString mutateDeleteLoop(SString &in, float& chg);
94        SString mutateAddSubproduction(SString &in, float& chg);
95        SString mutateChangeIterationsNumber(SString &in, float& chg);
96        SString addParameterToCalls(const SString line, SString &prodName);
97        SString deleteParameterFromCalls(const SString line, SString &prodName, int paramIdx);
98private:
99        RelationType getDifferentCondition(RelationType type);
100};
101
102#endif
103
Note: See TracBrowser for help on using the repository browser.