summaryrefslogtreecommitdiffstats
path: root/Master/Modellbildung_und_Simulation/Aufgabenblatt3/MLP/src/MLPConfig.h
blob: 0d7cd21ec8af9b61f6e7fa1083664083d90ca440 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
/*
 * MLPConfig.h
 *
 *  Created on: 09.06.2011
 *      Author: sven
 */

#ifndef MLPCONFIG_H_
#define MLPCONFIG_H_

#include <boost/cstdint.hpp>
#include <vector>
#include <fstream>

using namespace std;
using namespace boost;

typedef vector< vector<double> > Weights;

class MLPConfig {
public:
	MLPConfig();
	MLPConfig(const char* configfile);
	virtual ~MLPConfig();

    enum UPDATE_MODE
	{
		UPDATE_MODE_SINGLE,
		UPDATE_MODE_BATCH
	};
	enum OUTPUT_TRANSFER_FUNC
	{
		OUTPUT_TRANSFER_FUNC_NORMAL
	};

    double getLernrate() const
    {
        return mLernrate;
    }

    double getMomentum() const
    {
        return mMomentum;
    }

    uint32_t getNumHiddenNeurons() const
    {
        return mNumHiddenNeurons;
    }

    uint32_t getNumInputNeurons() const
    {
        return mNumInputNeurons;
    }

    uint32_t getNumOutputNeurons() const
    {
        return mNumOutputNeurons;
    }

    OUTPUT_TRANSFER_FUNC getOutputTransferFunc() const
    {
        return mOutputTransferFunc;
    }

    UPDATE_MODE getUpdateMode() const
    {
        return mUpdateMode;
    }

    void setLernrate(double mLernrate)
    {
        this->mLernrate = mLernrate;
    }

    void setMomentum(double mMomentum)
    {
        this->mMomentum = mMomentum;
    }

    void setNumHiddenNeurons(uint32_t mNumHiddenNeurons)
    {
        this->mNumHiddenNeurons = mNumHiddenNeurons;
    }

    void setNumInputNeurons(uint32_t mNumInputNeurons)
    {
        this->mNumInputNeurons = mNumInputNeurons;
    }

    void setNumOutputNeurons(uint32_t mNumOutputNeurons)
    {
        this->mNumOutputNeurons = mNumOutputNeurons;
    }

    void setOutputTransferFunc(OUTPUT_TRANSFER_FUNC mOutputTransferFunc)
    {
        this->mOutputTransferFunc = mOutputTransferFunc;
    }

    void setUpdateMode(UPDATE_MODE mUpdateMode)
    {
        this->mUpdateMode = mUpdateMode;
    }

    bool isValid(){
    	return mValid;
    }

    const Weights& getWeights() const {
    	return mWeights;
    }

    const double& getErrorThreshold() const {
    	return mErrorThreshold;
    }

    void setErrorThreshold(double e) {
    	mErrorThreshold = e;
    }

    const double& getConfigAcceptanceErrorThreshold() const {
    	return mConfigAcceptanceErrorThreshold;
    }

    void setConfigAcceptanceErrorThreshold(double e) {
    	mConfigAcceptanceErrorThreshold = e;
    }

    uint32_t getNumTrainingCycles() const {
    	return mNumTrainingCycles;
    }

    void setNumTrainingCycles(uint32_t c)
    {
    	mNumTrainingCycles=c;
    }

    void dump();
    void initWeights(bool);
    bool parseConfigfile(const char*);

private:
	uint32_t mNumInputNeurons;
	uint32_t mNumHiddenNeurons;
	uint32_t mNumOutputNeurons;
	UPDATE_MODE mUpdateMode;
	OUTPUT_TRANSFER_FUNC mOutputTransferFunc;
	double mLernrate;
	double mMomentum;
	Weights mWeights;
	bool mValid;
	double mErrorThreshold;
	uint32_t mNumTrainingCycles;
	double mConfigAcceptanceErrorThreshold;

	bool parseConfigfile(ifstream&);
	bool parseLine(string&);
	uint32_t toUint32(const string&);
	double toDouble(const string &);
	double getRandomWeight();
};

#endif /* MLPCONFIG_H_ */