You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+282Lines changed: 282 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -71,6 +71,288 @@ yarn start
71
71
72
72
# FASOW Architecture
73
73
74
+
The FASOW architecture is based on the idea of the reflection tower, and is composed by
75
+
3 principal modules, the `Experiment`, the `TowerHandler` and the `DataHandler`. Thus, FASOW provides us
76
+
a way to implement and create a simulation of an Agent Based model of a Word of Mouth campaign on a Social
77
+
Network Site (SNS), managing a flexible architecture easy to learn (easy to reach more users?) and an output generator.
78
+
79
+

80
+
# DataHandler
81
+
# TowerHandler
82
+
83
+
## Reflective Tower
84
+
85
+
The idea of the reflection tower is present in programming languages and allow us to segment a
86
+
software architecture by abstraction levels of different granularity. On this case, the FASOW architecture
87
+
is segmented by 4 levels (Experiment, Environment, Agent and Actions), where each one handles a specific concern of
88
+
the Agent Based Models.
89
+
90
+
### FASOW Levels
91
+
92
+
A level in FASOW is an abstraction that handles a specific concern of the ABMs and is composed principally
93
+
by three modules or more.
94
+
95
+

96
+
97
+
* MetaLevel Interface: A Metaprogramming interface that exposes the implementation of the base interface. The MetaLevel interface
98
+
provides methods to managed, define or interact with the instantiation of the particularities of the level on execution time, and provides
99
+
the capability to register a new particularity component for the level.
100
+
101
+
* MetaLevel Config: Is a Meta-Configuration object which communicate and connect the MetaLevel Interface with the BaseLevel Interface.
102
+
This objects had certain information that is required to pass through the particularity constructor when we will instantiate them
103
+
on execution time.
104
+
105
+
* BaseLevel Interface: A Base Interface, that can be abstract or not, but that defines the base functionality for the level,
106
+
this interface is the entity that the MetaLevel Interface will instantiate on execution time.
107
+
108
+
* ParticularityLevel Modules: These modules are entities that extends the functionality that provides the base level interface,
109
+
and allows to users to implements other requirements that cant be provided by the base level interface.
110
+
111
+
by this way, and by adding levels with less particularity knowledge we can start to see the Reflection Tower!
112
+
which connect and centralize all MetaInterfaces on the TowerHandler.
113
+
114
+

115
+
116
+
### 1.Experiment Level
117
+
118
+
The experiment level manage the `experiments` on FASOW, and represents the model to study, implement and simulate,
119
+
this level is composed by the `ExperimentAPI`, the `MetaExperimentConfig` and the Abstract `Experiment` class
120
+
with his extended particularities modules.
121
+
122
+
The `Experiments` allow us to introduce the input the model and define strategy to follow during the simulation
123
+
on FASOW, however, to do that as previous step we need to register all modules that will being used on the simulation by using the use of the TowerHandle.
124
+
```typescript
125
+
126
+
abstractclassExperiment {
127
+
name:string;
128
+
description:string;
129
+
repetition:number;
130
+
maxRepetitions:number;
131
+
132
+
strategy():void;
133
+
run();
134
+
setConfig(config:MetaExperimentConfig):void;
135
+
loadConfig():void;
136
+
//..getters and setters
137
+
}
138
+
```
139
+
The `ExperimentAPI` manages the `Experiments` by handling his registration and creation, also allow us to set and change
140
+
the configuration on the MetaExperimentConfig, which represents part of the information required to instantiate and
//Todo: Maybe replace the undefined for nulls, because if the response had undefined, then that response key will be removed instead of been returned with null value
0 commit comments