Source code for Met4FoF_redundancy_tutorials.redundancyAgents_tutorial_2

"""
Example 2 of using a Redundancy Agent.
A single signal is generated and supplied to the Redundancy Agent.
The Redundancy Agent uses the redundancy in the data vector together with some prior knowledge
in order to calculate the best consistent estimate taking into account the supplied uncertainties.
"""

import numpy as np
from agentMET4FOF.agents import AgentNetwork
from agentMET4FOF.metrological_agents import MetrologicalMonitorAgent

from Met4FoF_redundancy.agentMFred.metrological_streams_v2 import MetrologicalMultiWaveGenerator
from Met4FoF_redundancy.agentMFred.redundancyAgents1 import MetrologicalMultiWaveGeneratorAgent, RedundancyAgent


[docs]def demonstrate_redundancy_agent_onesignal(): """ At the start of the main module all important parameters are defined. Then the agents are defined and the network is started. The network and the calculated results can be monitored in a browser at the address http://127.0.0.1:8050/. """ # parameters batch_size = 20 n_pr = 20 fsam = 40 f1 = 6 f2 = 10 phi1 = 1 phi2 = 2 ampl1 = 230 ampl2 = 20 value_unc = 0.1 # standard uncertainty problim = 0.95 # start agent network server agent_network = AgentNetwork(dashboard_modules=True) # Initialize signal generating class outside of agent framework. signal1 = MetrologicalMultiWaveGenerator(sfreq=fsam, freq_arr=np.array([f1, f2]), ampl_arr=np.array([ampl1, ampl2]), phase_ini_arr=np.array([phi1, phi2]), value_unc=value_unc, time_unc=0.0) # signal1.init_parameters(batch_size1=batch_size) # Data source agents. source_name1 = "Sensor1" #signal1.metadata.metadata["device_id"] source_agent1 = agent_network.add_agent(name=source_name1, agentType=MetrologicalMultiWaveGeneratorAgent) source_agent1.init_parameters(signal=signal1, batch_size=batch_size) # Redundant data processing agent sensor_key_list = [source_name1] redundancy_name1 = "RedundancyAgent1" # Name cannot contain spaces!! redundancy_agent1 = agent_network.add_agent(name=redundancy_name1, agentType=RedundancyAgent) redundancy_agent1.init_parameters1(sensor_key_list=sensor_key_list, calc_type="lcss", n_pr=n_pr, problim=problim) # prior knowledge needed for redundant evaluation of the data redundancy_agent1.init_parameters2(fsam=fsam, f1=f1, f2=f2, ampl_ratio=ampl1 / ampl2, phi1=phi1, phi2=phi2) # Initialize metrologically enabled plotting agent. Agent name cannot contain spaces!! monitor_agent1 = agent_network.add_agent(name="MonitorAgent_SensorValues", agentType=MetrologicalMonitorAgent) monitor_agent2 = agent_network.add_agent(name="MonitorAgent_RedundantEstimate", agentType=MetrologicalMonitorAgent) # Bind agents. source_agent1.bind_output(monitor_agent1) source_agent1.bind_output(redundancy_agent1) redundancy_agent1.bind_output(monitor_agent2) # Set all agents states to "Running". agent_network.set_running_state() # Allow for shutting down the network after execution. return agent_network
if __name__ == "__main__": demonstrate_redundancy_agent_onesignal()