Leviathan_no_group
LevApproximation.h
1 #ifndef LEVAPPROXIMATION_H
2 #define LEVAPPROXIMATION_H
3 #include <vector>
4 #include "Leviathan.h"
5 
6 //--------------------------------------------------TEMPLATE VECTOR
7 
8 template<int D, typename T>
9 struct NVector : public std::vector<NVector<D - 1, T>> {
10  static_assert(D >= 1, "Vector dimension must be greater than zero!");
11  template<typename... Args>
12  NVector(int n = 0, Args... args) : std::vector<NVector<D - 1, T>>(n, NVector<D - 1, T>(args...)) {
13  }
14 };
15 
16 template<typename T>
17 struct NVector<1, T> : public std::vector<T> {
18  NVector(int n = 0, const T& val = T()) : std::vector<T>(n, val) {
19  }
20 };
21 
22 //--------------------------------------------------CLASS
23 
27 {
28 public:
29 
30 //ATTRIBUTS
31 //Parameters
32  float delta;
33  float sigma;
34  unsigned int gossip;
36 //Informations
37  unsigned int nbStep;
38  std::vector<float> startReputation;
41 //use for approximation
46  float delta2Sur3;
50 //CONSTRUCTOR
58  LevApproximation(float delta_,float sigma_,unsigned int nbAgents_,unsigned int nbGossips_,float rangeInitOpinions_=0);
59 
60 //METHODS
63  void updateInflus();
66  void averageInteraction();
70  void writeOpinions(std::string fileName);
71 
74  inline unsigned int getNbAgents(){return opinions[0].size();};
75 
78  float z(IdAgent i, IdAgent j);
79  float influCircum(IdAgent i,IdAgent j);
80  float F(IdAgent i,IdAgent j);
81  float F2(IdAgent i,IdAgent j);
82  float G(IdAgent i,IdAgent j);
83  float G2(IdAgent i,IdAgent j);
84  float FG_ijji(IdAgent i,IdAgent j);
85  float Fx(IdAgent i,IdAgent j,IdAgent k,IdAgent l);
86  float Gx(IdAgent i,IdAgent j,IdAgent k,IdAgent l);
87  float J(IdAgent i,IdAgent j,IdAgent g);
88  float J2(IdAgent i,IdAgent j,IdAgent g);
89  float Jx(IdAgent i,IdAgent j,IdAgent g,IdAgent k,IdAgent l);
90  float JJ(IdAgent i,IdAgent j,IdAgent g,IdAgent k,IdAgent l,IdAgent m);
91 };
92 
93 #endif // LEVAPPROXIMATION_H
LevApproximation::averageInteraction
void averageInteraction()
Definition: LevApproximation.cpp:105
LevApproximation::startReputation
std::vector< float > startReputation
Definition: LevApproximation.h:38
LevApproximation::influences
NVector< 2, float > influences
Definition: LevApproximation.h:43
LevApproximation::deltaOpinions
NVector< 2, float > deltaOpinions
Definition: LevApproximation.h:45
LevApproximation::gossip
unsigned int gossip
Definition: LevApproximation.h:34
LevApproximation::delta
float delta
Definition: LevApproximation.h:32
LevApproximation::LevApproximation
LevApproximation(float delta_, float sigma_, unsigned int nbAgents_, unsigned int nbGossips_, float rangeInitOpinions_=0)
Definition: LevApproximation.cpp:15
LevApproximation::getNbAgents
unsigned int getNbAgents()
Definition: LevApproximation.h:74
LevApproximation::equi
NVector< 2, float > equi
Definition: LevApproximation.h:48
LevApproximation::nbStep
unsigned int nbStep
Definition: LevApproximation.h:37
LevApproximation::writeOpinions
void writeOpinions(std::string fileName)
Definition: LevApproximation.cpp:190
LevApproximation::opinions
NVector< 3, float > opinions
Definition: LevApproximation.h:39
LevApproximation::z
float z(IdAgent i, IdAgent j)
Definition: LevApproximation.cpp:36
LevApproximation::sigma
float sigma
Definition: LevApproximation.h:33
NVector< 4, float >
LevApproximation::updateInflus
void updateInflus()
Definition: LevApproximation.cpp:27
LevApproximation::dInfluences
NVector< 2, float > dInfluences
Definition: LevApproximation.h:44
LevApproximation::delta2Sur3
float delta2Sur3
Definition: LevApproximation.h:46
LevApproximation
Definition: LevApproximation.h:27
LevApproximation::avgMulti
NVector< 4, float > avgMulti
Definition: LevApproximation.h:42