mirror of
https://github.com/gsi-upm/soil
synced 2024-11-13 06:52:28 +00:00
81 lines
2.3 KiB
Python
81 lines
2.3 KiB
Python
from models import *
|
|
from nxsim import NetworkSimulation
|
|
import numpy
|
|
from matplotlib import pyplot as plt
|
|
import networkx as nx
|
|
import settings
|
|
import models
|
|
import math
|
|
import json
|
|
|
|
settings.init() # Loads all the data from settings
|
|
models.init() # Loads the models and network variables
|
|
|
|
####################
|
|
# Network creation #
|
|
####################
|
|
|
|
if settings.network_type == 0:
|
|
G = nx.complete_graph(settings.number_of_nodes)
|
|
if settings.network_type == 1:
|
|
G = nx.barabasi_albert_graph(settings.number_of_nodes,3)
|
|
if settings.network_type == 2:
|
|
G = nx.margulis_gabber_galil_graph(settings.number_of_nodes, None)
|
|
# More types of networks can be added here
|
|
|
|
##############
|
|
# Simulation #
|
|
##############
|
|
|
|
sim = NetworkSimulation(topology=G, states=init_states, agent_type=SISaModel,
|
|
max_time=settings.max_time, num_trials=settings.num_trials, logging_interval=1.0)
|
|
|
|
|
|
sim.run_simulation()
|
|
|
|
###########
|
|
# Results #
|
|
###########
|
|
x_values = []
|
|
y_values = []
|
|
|
|
for time in range(0, settings.max_time):
|
|
value = settings.sentiment_about[0]
|
|
real_time = time * settings.timeout
|
|
for x in range(0, settings.number_of_nodes):
|
|
if "sentiment_enterprise_BBVA" in models.networkStatus["agente_%s" % x]:
|
|
if real_time in models.networkStatus["agente_%s" % x]["sentiment_enterprise_BBVA"]:
|
|
value += models.networkStatus["agente_%s" % x]["sentiment_enterprise_BBVA"][real_time]
|
|
|
|
x_values.append(real_time)
|
|
y_values.append(value)
|
|
|
|
plt.plot(x_values,y_values)
|
|
#plt.show()
|
|
|
|
|
|
#################
|
|
# Visualization #
|
|
#################
|
|
|
|
|
|
for x in range(0, settings.number_of_nodes):
|
|
for empresa in models.networkStatus["agente_%s"%x]:
|
|
emotionStatusAux=[]
|
|
for tiempo in models.networkStatus["agente_%s"%x][empresa]:
|
|
prec = 2
|
|
output = math.floor(models.networkStatus["agente_%s"%x][empresa][tiempo] * (10 ** prec)) / (10 ** prec) #Para tener 2 decimales solo
|
|
emotionStatusAux.append((output,tiempo,None))
|
|
attributes = {}
|
|
attributes[empresa] = emotionStatusAux
|
|
G.add_node(x, attributes)
|
|
|
|
|
|
print("Done!")
|
|
|
|
with open('data.txt', 'w') as outfile:
|
|
json.dump(models.networkStatus, outfile, sort_keys=True, indent=4, separators=(',', ': '))
|
|
|
|
nx.write_gexf(G,"test.gexf", version="1.2draft")
|
|
|