49 lines
1.6 KiB
C++
49 lines
1.6 KiB
C++
#ifndef FUZZY_H
|
|
#define FUZZY_H
|
|
#include <vector>
|
|
#include "A.h"
|
|
#include "Method.h"
|
|
#include "Param.h"
|
|
|
|
using namespace std;
|
|
|
|
class Fuzzy : public Method {
|
|
private:
|
|
vector<A> a; // íàáîð ôóíêöèé ïðèíàäëåæíîñòè
|
|
int countFuzzyParts;// êîëè÷åñòâî èíòåðâàëîâ óíèâåðñóìà
|
|
vector<vector<int>> rulesIn; // âõîäíàÿ ÷àñòü ïðàâèë
|
|
vector<int> rulesOut; // âûõîäíàÿ ÷àñòü
|
|
int countRulesIn; // êîëè÷åñòâî âõîäíûõ ïåðåìåííûõ
|
|
double universumMin;
|
|
double universumMax;
|
|
vector<int> fuzzyTs; // íå÷åòêèé âðåìåííîé ðÿä
|
|
string trendType;
|
|
string seasonType;
|
|
double alpha; // ïàðàìåòð ñãëàæèâàíèÿ
|
|
double gamma; // ïàðàìåòð ñãëàæèâàíèÿ òðåíäà
|
|
double delta; // ïàðàìåòð ñãëàæèâàíèÿ ñåçîííîé êîìïîíåíòû
|
|
int p; // ïåðèîä ñåçîííîñòè
|
|
double phi; // ïàðàìåòð äåìïèíãà
|
|
|
|
void defineUniversum(); // îïðåäåëèòü óíèåðñóì äëÿ âðåìåííîãî ðÿäà
|
|
void createRules(); // ñîçäàòü ïðàâèëà, ïàðàìåòð çàäàåò êîëè÷åñòâî âõîäíûõ ïåðåìåííûõ
|
|
int fuzzyfication(double); // ïîëó÷èòü íå÷åòêèé âðåìåííîé ðÿä â âèäå ïîñëåäîâàòåëüíîñòè íå÷åòêèõ ìíîæåñòâ
|
|
double defuzzyfication(int); // ïîëó÷èòü íå÷åòêèé âðåìåííîé ðÿä â âèäå ïîñëåäîâàòåëüíîñòè íå÷åòêèõ ìíîæåñòâ
|
|
vector<int> searchRules(vector<int>);
|
|
vector<int> searchRulesForSeason(int);
|
|
|
|
|
|
public:
|
|
Fuzzy(string, string, vector<double>, int);
|
|
~Fuzzy(void);
|
|
vector<double> getForecast();
|
|
void init();
|
|
void createModel();
|
|
void createModelForEstimation();
|
|
void setParam(string, double);
|
|
double calcEstimation(Aic *);
|
|
Param* optimize(Estimation *); // ìåòîä îïòèìèçàöèè îäíîãî ïàðàìåòðà
|
|
int getNamberParam();
|
|
};
|
|
|
|
#endif |