Human Failure Representation

This paper covers the exploration and analysis of error producing conditions by a human operator in the rover model.

from examples.rover.rover_model_human import RoverHuman
from examples.rover.rover_model import plot_map

import fmdtools.sim.propagate as prop
import fmdtools.analyze as an
from fmdtools.sim.sample import ParameterSample, ParameterDomain, FaultSample, FaultDomain

import numpy as np
import matplotlib.pyplot as plt

Visualizing Rover Structure

mdl = RoverHuman()
mdl.fxns
{'power': power Power
 - t=Time(time=-0.1, timers={})
 - s=PowerState(charge=100.0, power=0.0)
 - m=PowerMode(mode='off', faults=set(), sub_faults=False)
 - ee_15=EE(s=(v=0.0, a=0.0))
 - ee_5=EE(s=(v=0.0, a=0.0))
 - ee_12=EE(s=(v=0.0, a=0.0))
 - switch=Switch(s=(power=False)),
 'perception': perception Perception
 - t=Time(time=-0.1, timers={})
 - m=PerceptionMode(mode='off', faults=set(), sub_faults=False)
 - pos=Pos(s=(x=0.0, y=0.0, vel=0.0, ux=1.0, uy=0.0))
 - pos_signal=Pos(s=(x=0.0, y=0.0, vel=0.0, ux=1.0, uy=0.0))
 - ground=Ground(s=(in_bound=True), c=(), ga=())
 - ee=EE(s=(v=0.0, a=0.0))
 - video=Video(s=(lin_ux=1.0, lin_uy=0.0, lin_dx=0.0, lin_dy=0.0, quality=1.0)),
 'communications': communications Communications
 - t=Time(time=-0.1, timers={})
 - ee_12=EE(s=(v=0.0, a=0.0))
 - comms=Comms(s=(pos=PosState(x=0.0, y=0.0, vel=0.0, ux=1.0, uy=0.0), ctl=ControlState(rpower=0.0, lpower=0.0), video...
 - pos_signal=Pos(s=(x=0.0, y=0.0, vel=0.0, ux=1.0, uy=0.0))
 - video=Video(s=(lin_ux=1.0, lin_uy=0.0, lin_dx=0.0, lin_dy=0.0, quality=1.0)),
 'operator': operator Operator
 - t=Time(time=-0.1, timers={})
 - m=Mode(mode='nominal', faults=set(), sub_faults=False)
 - switch=Switch(s=(power=False))
 - control=Control(s=(rpower=0.0, lpower=0.0))
 - pos_signal=Pos(s=(x=0.0, y=0.0, vel=0.0, ux=1.0, uy=0.0))
 - comms=Comms(s=(pos=PosState(x=0.0, y=0.0, vel=0.0, ux=1.0, uy=0.0), ctl=ControlState(rpower=0.0, lpower=0.0), video...
 - video=Video(s=(lin_ux=1.0, lin_uy=0.0, lin_dx=0.0, lin_dy=0.0, quality=1.0))
 - psfs=PSFs(s=(attention=10.0))
 - ground=Ground(s=(in_bound=True), c=(), ga=())
 - aa=HumanActions(m=(mode='nominal', faults=set(), sub_faults=False)),
 'plan_path': plan_path PlanPath
 - t=Time(time=-0.1, timers={})
 - m=PlanPathMode(mode='standby', faults=set(), sub_faults=False)
 - s=PlanPathState(u_self=array([0., 0.]), u_lin=array([0., 0.]), u_lin_dev=array([0., 0.]), rdiff=0.0, vel_adj=1.0)
 - video=Video(s=(lin_ux=1.0, lin_uy=0.0, lin_dx=0.0, lin_dy=0.0, quality=1.0))
 - pos_signal=Pos(s=(x=0.0, y=0.0, vel=0.0, ux=1.0, uy=0.0))
 - ground=Ground(s=(in_bound=True), c=(), ga=())
 - control=Control(s=(rpower=0.0, lpower=0.0))
 - fault_sig=FaultSig(s=(transfer=1.0, friction=0.0, drift=0.0)),
 'override': override Override
 - t=Time(time=-0.1, timers={})
 - m=OverrideMode(mode='off', faults=set(), sub_faults=False)
 - comms=Comms(s=(pos=PosState(x=0.0, y=0.0, vel=0.0, ux=1.0, uy=0.0), ctl=ControlState(rpower=0.0, lpower=0.0), video...
 - ee=EE(s=(v=0.0, a=0.0))
 - motor_control=Control(s=(rpower=0.0, lpower=0.0))
 - auto_control=Control(s=(rpower=0.0, lpower=0.0)),
 'drive': drive Drive
 - t=Time(time=-0.1, timers={})
 - m=DriveMode(mode='nominal', faults=set(), sub_faults=False)
 - s=FaultStates(transfer=1.0, friction=0.0, drift=0.0)
 - fault_sig=FaultSig(s=(transfer=1.0, friction=0.0, drift=0.0))
 - ground=Ground(s=(in_bound=True), c=(), ga=())
 - pos=Pos(s=(x=0.0, y=0.0, vel=0.0, ux=1.0, uy=0.0))
 - motor_control=Control(s=(rpower=0.0, lpower=0.0))
 - ee_in=EE(s=(v=0.0, a=0.0))}
#%matplotlib qt
#an.graph.set_pos(mdl, gtype='fxnflowgraph')
#%matplotlib inline
g = mdl.as_modelgraph()
fig, ax = g.draw()
../../../_images/c9ef399fe5d3b754706f948e7d1707321d91406ad56dbd02490310bcd49e8340.png
fig.savefig("rover_structure.pdf", format="pdf", bbox_inches = 'tight', pad_inches = 0)

Visualizing Action Sequence Graph for the Controller

from examples.rover.rover_model_human import asg_pos
ag = mdl.fxns['operator'].aa.as_modelgraph()
ag.set_pos(**asg_pos)
fig, ax = ag.draw()
../../../_images/4a58774b49ce7a1d6c67ec0f3c40251e7892351c24eee36283f4f973399ccf47.png
fig.savefig("action_graph.pdf", format="pdf", bbox_inches = 'tight', pad_inches = 0)

Testing behavioral simulation

Execution order

g.set_exec_order(mdl)
fig, ax = g.draw()
../../../_images/3fe9b10520df55f2e474451bda005203462b1671447a3d70df8f2b6fb931d61d.png

Performance on turn

mdl = RoverHuman(p={'ground': 'turn'})
endresults, mdlhist = prop.nominal(mdl)
plot_map(mdl, mdlhist)
(<Figure size 400x400 with 1 Axes>, <Axes: xlabel='x', ylabel='y'>)
../../../_images/f32d4665471ee7933feff2bb6e91489b13f56efe32be1429eae084e1eddb00cf.png

Performance on sine map

mdl = RoverHuman()
endresults, mdlhist = prop.nominal(mdl)
plot_map(mdl, mdlhist)
(<Figure size 400x400 with 1 Axes>, <Axes: xlabel='x', ylabel='y'>)
../../../_images/cb03e795be4eca1b24db638376c18c20665183f156835a0d50aad5bf47b820db.png
from fmdtools.analyze.phases import from_hist
pm = from_hist(mdlhist)
pm
{'power': PhaseMap({'off': [0.0, 0.0], 'supply': [1.0, 109.0]}, {'off': {'off'}, 'supply': {'supply'}}),
 'perception': PhaseMap({'off': [0.0, 1.0], 'feed': [2.0, 109.0]}, {'off': {'off'}, 'feed': {'feed'}}),
 'look': PhaseMap({'nominal': [0.0, 109.0]}, {'nominal': {'nominal'}}),
 'percieve': PhaseMap({'nominal': [0.0, 0.0], 'no_action': [1.0, 1.0], 'nominal1': [2.0, 109.0]}, {'nominal': {'nominal1', 'nominal'}, 'no_action': {'no_action'}}),
 'comprehend': PhaseMap({'nominal': [0.0, 109.0]}, {'nominal': {'nominal'}}),
 'project': PhaseMap({'nominal': [0.0, 109.0]}, {'nominal': {'nominal'}}),
 'decide': PhaseMap({'nominal': [0.0, 109.0]}, {'nominal': {'nominal'}}),
 'reach': PhaseMap({'nominal': [0.0, 109.0]}, {'nominal': {'nominal'}}),
 'plan_path': PhaseMap({'standby': [0.0, 4.0], 'drive': [5.0, 109.0]}, {'standby': {'standby'}, 'drive': {'drive'}}),
 'override': PhaseMap({'off': [0.0, 1.0], 'override': [2.0, 109.0]}, {'off': {'off'}, 'override': {'override'}})}
phase_fig = pm['override'].plot()
../../../_images/41171fafa5d7b40f07f79c2e7e38d3388fb2aa73a6744a1ef85c86afccf29c99.png

Testing Faults

#app=SampleApproach(mdl, faults='Controller', phases={'drive':phases['Operations']['drive']})

fd = FaultDomain(mdl)
fd.add_all_fxn_modes('operator')
fd
FaultDomain with faults:
 -('roverhuman.fxns.operator.aa.acts.look', 'failed_no_action')
 -('roverhuman.fxns.operator.aa.acts.percieve', 'failed_no_action')
 -('roverhuman.fxns.operator.aa.acts.percieve', 'not_visible')
 -('roverhuman.fxns.operator.aa.acts.percieve', 'wrong_position')
 -('roverhuman.fxns.operator.aa.acts.comprehend', 'failed_no_action')
 -('roverhuman.fxns.operator.aa.acts.project', 'failed_fast')
 -('roverhuman.fxns.operator.aa.acts.project', 'failed_no_action')
 -('roverhuman.fxns.operator.aa.acts.project', 'failed_slow')
 -('roverhuman.fxns.operator.aa.acts.project', 'failed_turn_left')
 -('roverhuman.fxns.operator.aa.acts.project', 'failed_turn_right')
 -...more
fs = FaultSample(fd, phasemap = pm['override'])
fs.add_fault_phases('override')
fs
FaultSample of scenarios: 
 - roverhuman_fxns_operator_aa_acts_look_failed_no_action_t56p0
 - roverhuman_fxns_operator_aa_acts_percieve_failed_no_action_t56p0
 - roverhuman_fxns_operator_aa_acts_percieve_not_visible_t56p0
 - roverhuman_fxns_operator_aa_acts_percieve_wrong_position_t56p0
 - roverhuman_fxns_operator_aa_acts_comprehend_failed_no_action_t56p0
 - roverhuman_fxns_operator_aa_acts_project_failed_fast_t56p0
 - roverhuman_fxns_operator_aa_acts_project_failed_no_action_t56p0
 - roverhuman_fxns_operator_aa_acts_project_failed_slow_t56p0
 - roverhuman_fxns_operator_aa_acts_project_failed_turn_left_t56p0
 - roverhuman_fxns_operator_aa_acts_project_failed_turn_right_t56p0
 - ... (19 total)
fs.scenarios()
[SingleFaultScenario(sequence={56.0: Injection(faults={'roverhuman.fxns.operator.aa.acts.look': ['failed_no_action']}, disturbances={})}, times=(56.0,), function='roverhuman.fxns.operator.aa.acts.look', fault='failed_no_action', rate=1.0, name='roverhuman_fxns_operator_aa_acts_look_failed_no_action_t56p0', time=56.0, phase='override'),
 SingleFaultScenario(sequence={56.0: Injection(faults={'roverhuman.fxns.operator.aa.acts.percieve': ['failed_no_action']}, disturbances={})}, times=(56.0,), function='roverhuman.fxns.operator.aa.acts.percieve', fault='failed_no_action', rate=1.0, name='roverhuman_fxns_operator_aa_acts_percieve_failed_no_action_t56p0', time=56.0, phase='override'),
 SingleFaultScenario(sequence={56.0: Injection(faults={'roverhuman.fxns.operator.aa.acts.percieve': ['not_visible']}, disturbances={})}, times=(56.0,), function='roverhuman.fxns.operator.aa.acts.percieve', fault='not_visible', rate=1.0, name='roverhuman_fxns_operator_aa_acts_percieve_not_visible_t56p0', time=56.0, phase='override'),
 SingleFaultScenario(sequence={56.0: Injection(faults={'roverhuman.fxns.operator.aa.acts.percieve': ['wrong_position']}, disturbances={})}, times=(56.0,), function='roverhuman.fxns.operator.aa.acts.percieve', fault='wrong_position', rate=1.0, name='roverhuman_fxns_operator_aa_acts_percieve_wrong_position_t56p0', time=56.0, phase='override'),
 SingleFaultScenario(sequence={56.0: Injection(faults={'roverhuman.fxns.operator.aa.acts.comprehend': ['failed_no_action']}, disturbances={})}, times=(56.0,), function='roverhuman.fxns.operator.aa.acts.comprehend', fault='failed_no_action', rate=1.0, name='roverhuman_fxns_operator_aa_acts_comprehend_failed_no_action_t56p0', time=56.0, phase='override'),
 SingleFaultScenario(sequence={56.0: Injection(faults={'roverhuman.fxns.operator.aa.acts.project': ['failed_fast']}, disturbances={})}, times=(56.0,), function='roverhuman.fxns.operator.aa.acts.project', fault='failed_fast', rate=1.0, name='roverhuman_fxns_operator_aa_acts_project_failed_fast_t56p0', time=56.0, phase='override'),
 SingleFaultScenario(sequence={56.0: Injection(faults={'roverhuman.fxns.operator.aa.acts.project': ['failed_no_action']}, disturbances={})}, times=(56.0,), function='roverhuman.fxns.operator.aa.acts.project', fault='failed_no_action', rate=1.0, name='roverhuman_fxns_operator_aa_acts_project_failed_no_action_t56p0', time=56.0, phase='override'),
 SingleFaultScenario(sequence={56.0: Injection(faults={'roverhuman.fxns.operator.aa.acts.project': ['failed_slow']}, disturbances={})}, times=(56.0,), function='roverhuman.fxns.operator.aa.acts.project', fault='failed_slow', rate=1.0, name='roverhuman_fxns_operator_aa_acts_project_failed_slow_t56p0', time=56.0, phase='override'),
 SingleFaultScenario(sequence={56.0: Injection(faults={'roverhuman.fxns.operator.aa.acts.project': ['failed_turn_left']}, disturbances={})}, times=(56.0,), function='roverhuman.fxns.operator.aa.acts.project', fault='failed_turn_left', rate=1.0, name='roverhuman_fxns_operator_aa_acts_project_failed_turn_left_t56p0', time=56.0, phase='override'),
 SingleFaultScenario(sequence={56.0: Injection(faults={'roverhuman.fxns.operator.aa.acts.project': ['failed_turn_right']}, disturbances={})}, times=(56.0,), function='roverhuman.fxns.operator.aa.acts.project', fault='failed_turn_right', rate=1.0, name='roverhuman_fxns_operator_aa_acts_project_failed_turn_right_t56p0', time=56.0, phase='override'),
 SingleFaultScenario(sequence={56.0: Injection(faults={'roverhuman.fxns.operator.aa.acts.decide': ['failed_fast']}, disturbances={})}, times=(56.0,), function='roverhuman.fxns.operator.aa.acts.decide', fault='failed_fast', rate=1.0, name='roverhuman_fxns_operator_aa_acts_decide_failed_fast_t56p0', time=56.0, phase='override'),
 SingleFaultScenario(sequence={56.0: Injection(faults={'roverhuman.fxns.operator.aa.acts.decide': ['failed_no_action']}, disturbances={})}, times=(56.0,), function='roverhuman.fxns.operator.aa.acts.decide', fault='failed_no_action', rate=1.0, name='roverhuman_fxns_operator_aa_acts_decide_failed_no_action_t56p0', time=56.0, phase='override'),
 SingleFaultScenario(sequence={56.0: Injection(faults={'roverhuman.fxns.operator.aa.acts.decide': ['failed_slow']}, disturbances={})}, times=(56.0,), function='roverhuman.fxns.operator.aa.acts.decide', fault='failed_slow', rate=1.0, name='roverhuman_fxns_operator_aa_acts_decide_failed_slow_t56p0', time=56.0, phase='override'),
 SingleFaultScenario(sequence={56.0: Injection(faults={'roverhuman.fxns.operator.aa.acts.decide': ['failed_turn_left']}, disturbances={})}, times=(56.0,), function='roverhuman.fxns.operator.aa.acts.decide', fault='failed_turn_left', rate=1.0, name='roverhuman_fxns_operator_aa_acts_decide_failed_turn_left_t56p0', time=56.0, phase='override'),
 SingleFaultScenario(sequence={56.0: Injection(faults={'roverhuman.fxns.operator.aa.acts.decide': ['failed_turn_right']}, disturbances={})}, times=(56.0,), function='roverhuman.fxns.operator.aa.acts.decide', fault='failed_turn_right', rate=1.0, name='roverhuman_fxns_operator_aa_acts_decide_failed_turn_right_t56p0', time=56.0, phase='override'),
 SingleFaultScenario(sequence={56.0: Injection(faults={'roverhuman.fxns.operator.aa.acts.reach': ['failed_no_action']}, disturbances={})}, times=(56.0,), function='roverhuman.fxns.operator.aa.acts.reach', fault='failed_no_action', rate=1.0, name='roverhuman_fxns_operator_aa_acts_reach_failed_no_action_t56p0', time=56.0, phase='override'),
 SingleFaultScenario(sequence={56.0: Injection(faults={'roverhuman.fxns.operator.aa.acts.press': ['failed_left']}, disturbances={})}, times=(56.0,), function='roverhuman.fxns.operator.aa.acts.press', fault='failed_left', rate=1.0, name='roverhuman_fxns_operator_aa_acts_press_failed_left_t56p0', time=56.0, phase='override'),
 SingleFaultScenario(sequence={56.0: Injection(faults={'roverhuman.fxns.operator.aa.acts.press': ['failed_right']}, disturbances={})}, times=(56.0,), function='roverhuman.fxns.operator.aa.acts.press', fault='failed_right', rate=1.0, name='roverhuman_fxns_operator_aa_acts_press_failed_right_t56p0', time=56.0, phase='override'),
 SingleFaultScenario(sequence={56.0: Injection(faults={'roverhuman.fxns.operator.aa.acts.press': ['no_press']}, disturbances={})}, times=(56.0,), function='roverhuman.fxns.operator.aa.acts.press', fault='no_press', rate=1.0, name='roverhuman_fxns_operator_aa_acts_press_no_press_t56p0', time=56.0, phase='override')]
ecs, hists = prop.fault_sample(mdl, fs)
SCENARIOS COMPLETE: 100%|██████████| 19/19 [00:08<00:00,  2.21it/s]
fig, ax = plot_map(mdl, hists)
../../../_images/375d9645a2df388713442e0a0aa5a998b039f61bf884da58645f231177a14389.png
fig, ax = plot_map(mdl, hists)
ax.set_xlim(10, 20)
ax.set_ylim(-5, 5)
(-5.0, 5.0)
Ignoring fixed x limits to fulfill fixed data aspect with adjustable data limits.
../../../_images/260d5a80cca7580ec9710cf4ce47a328c0458e393b7d3807278e36c54953af99.png
fig.savefig("rover_map.pdf", format="pdf", bbox_inches = 'tight', pad_inches = 0)

Below shows the impact of each fault:

tab = an.tabulate.result_summary_fmea(ecs, hists,
                                      *mdl.flows, *mdl.fxns,
                                      metrics = ["in_bound", "at_finish", "end_dist", "faults", "classification", "end_x", "end_y"])
tab
degraded faulty in_bound at_finish end_dist faults classification end_x end_y
nominal [] [] True True 0.0 [] nominal mission 29.254775 -0.782764
roverhuman_fxns_operator_aa_acts_look_failed_no_action_t56p0 ['ground', 'psfs', 'pos_signal', 'pos', 'video... ['operator'] False False 13.663813 [look.failed_no_action] incomplete mission faulty 15.24424 -0.529458
roverhuman_fxns_operator_aa_acts_percieve_failed_no_action_t56p0 [] [] True True 0.0 [] nominal mission 29.254775 -0.782764
roverhuman_fxns_operator_aa_acts_percieve_not_visible_t56p0 [] [] True True 0.0 [] nominal mission 29.254775 -0.782764
roverhuman_fxns_operator_aa_acts_percieve_wrong_position_t56p0 [] [] True True 0.0 [] nominal mission 29.254775 -0.782764
roverhuman_fxns_operator_aa_acts_comprehend_failed_no_action_t56p0 ['ground', 'psfs', 'pos_signal', 'pos', 'video... ['operator'] False False 13.663813 [percieve.not_visible, comprehend.failed_no_ac... incomplete mission faulty 15.24424 -0.529458
roverhuman_fxns_operator_aa_acts_project_failed_fast_t56p0 ['ground', 'pos_signal', 'pos', 'ee_15', 'vide... ['operator'] False False 12.955107 [percieve.not_visible, project.failed_fast] incomplete mission faulty 16.023518 0.480458
roverhuman_fxns_operator_aa_acts_project_failed_no_action_t56p0 ['ground', 'psfs', 'pos_signal', 'pos', 'video... ['operator'] False False 13.663813 [percieve.not_visible, project.failed_no_action] incomplete mission faulty 15.24424 -0.529458
roverhuman_fxns_operator_aa_acts_project_failed_slow_t56p0 ['psfs', 'pos_signal', 'pos', 'ee_15', 'video'... ['operator'] True False 9.31949 [project.failed_slow] incomplete mission faulty 19.740872 0.81243
roverhuman_fxns_operator_aa_acts_project_failed_turn_left_t56p0 ['ground', 'pos_signal', 'pos', 'video', 'auto... ['operator'] False False 14.057688 [percieve.not_visible, project.failed_turn_left] incomplete mission faulty 14.862043 -0.251773
roverhuman_fxns_operator_aa_acts_project_failed_turn_right_t56p0 ['ground', 'pos_signal', 'pos', 'video', 'auto... ['operator'] False False 13.693675 [percieve.not_visible, project.failed_turn_right] incomplete mission faulty 15.363988 1.140047
roverhuman_fxns_operator_aa_acts_decide_failed_fast_t56p0 ['psfs', 'pos_signal', 'pos', 'ee_15', 'video'... ['operator'] True False 14.2601 [decide.failed_fast] incomplete mission faulty 14.759409 0.904491
roverhuman_fxns_operator_aa_acts_decide_failed_no_action_t56p0 ['ground', 'psfs', 'pos_signal', 'pos', 'video... ['operator'] False False 13.663813 [percieve.not_visible, decide.failed_no_action] incomplete mission faulty 15.24424 -0.529458
roverhuman_fxns_operator_aa_acts_decide_failed_slow_t56p0 ['psfs', 'pos_signal', 'pos', 'ee_15', 'video'... ['operator'] True False 14.2601 [decide.failed_slow] incomplete mission faulty 14.759409 0.904491
roverhuman_fxns_operator_aa_acts_decide_failed_turn_left_t56p0 ['psfs', 'pos_signal', 'pos', 'ee_15', 'video'... ['operator'] True False 14.2601 [decide.failed_turn_left] incomplete mission faulty 14.759409 0.904491
roverhuman_fxns_operator_aa_acts_decide_failed_turn_right_t56p0 ['psfs', 'pos_signal', 'pos', 'ee_15', 'video'... ['operator'] True False 14.2601 [decide.failed_turn_right] incomplete mission faulty 14.759409 0.904491
roverhuman_fxns_operator_aa_acts_reach_failed_no_action_t56p0 ['ground', 'psfs', 'pos_signal', 'pos', 'video... ['operator'] False False 13.663813 [percieve.not_visible, reach.failed_no_action] incomplete mission faulty 15.24424 -0.529458
roverhuman_fxns_operator_aa_acts_press_failed_left_t56p0 ['operator'] ['operator'] True True 0.0 [press.failed_left] faulty 29.254775 -0.782764
roverhuman_fxns_operator_aa_acts_press_failed_right_t56p0 ['operator'] ['operator'] True True 0.0 [press.failed_right] faulty 29.254775 -0.782764
roverhuman_fxns_operator_aa_acts_press_no_press_t56p0 ['operator'] ['operator'] True True 0.0 [press.no_press] faulty 29.254775 -0.782764
tab.sort_values('end_dist', ascending=False)
degraded faulty in_bound at_finish end_dist faults classification end_x end_y
roverhuman_fxns_operator_aa_acts_decide_failed_turn_right_t56p0 ['psfs', 'pos_signal', 'pos', 'ee_15', 'video'... ['operator'] True False 14.2601 [decide.failed_turn_right] incomplete mission faulty 14.759409 0.904491
roverhuman_fxns_operator_aa_acts_decide_failed_fast_t56p0 ['psfs', 'pos_signal', 'pos', 'ee_15', 'video'... ['operator'] True False 14.2601 [decide.failed_fast] incomplete mission faulty 14.759409 0.904491
roverhuman_fxns_operator_aa_acts_decide_failed_slow_t56p0 ['psfs', 'pos_signal', 'pos', 'ee_15', 'video'... ['operator'] True False 14.2601 [decide.failed_slow] incomplete mission faulty 14.759409 0.904491
roverhuman_fxns_operator_aa_acts_decide_failed_turn_left_t56p0 ['psfs', 'pos_signal', 'pos', 'ee_15', 'video'... ['operator'] True False 14.2601 [decide.failed_turn_left] incomplete mission faulty 14.759409 0.904491
roverhuman_fxns_operator_aa_acts_project_failed_turn_left_t56p0 ['ground', 'pos_signal', 'pos', 'video', 'auto... ['operator'] False False 14.057688 [percieve.not_visible, project.failed_turn_left] incomplete mission faulty 14.862043 -0.251773
roverhuman_fxns_operator_aa_acts_project_failed_turn_right_t56p0 ['ground', 'pos_signal', 'pos', 'video', 'auto... ['operator'] False False 13.693675 [percieve.not_visible, project.failed_turn_right] incomplete mission faulty 15.363988 1.140047
roverhuman_fxns_operator_aa_acts_reach_failed_no_action_t56p0 ['ground', 'psfs', 'pos_signal', 'pos', 'video... ['operator'] False False 13.663813 [percieve.not_visible, reach.failed_no_action] incomplete mission faulty 15.24424 -0.529458
roverhuman_fxns_operator_aa_acts_comprehend_failed_no_action_t56p0 ['ground', 'psfs', 'pos_signal', 'pos', 'video... ['operator'] False False 13.663813 [percieve.not_visible, comprehend.failed_no_ac... incomplete mission faulty 15.24424 -0.529458
roverhuman_fxns_operator_aa_acts_project_failed_no_action_t56p0 ['ground', 'psfs', 'pos_signal', 'pos', 'video... ['operator'] False False 13.663813 [percieve.not_visible, project.failed_no_action] incomplete mission faulty 15.24424 -0.529458
roverhuman_fxns_operator_aa_acts_look_failed_no_action_t56p0 ['ground', 'psfs', 'pos_signal', 'pos', 'video... ['operator'] False False 13.663813 [look.failed_no_action] incomplete mission faulty 15.24424 -0.529458
roverhuman_fxns_operator_aa_acts_decide_failed_no_action_t56p0 ['ground', 'psfs', 'pos_signal', 'pos', 'video... ['operator'] False False 13.663813 [percieve.not_visible, decide.failed_no_action] incomplete mission faulty 15.24424 -0.529458
roverhuman_fxns_operator_aa_acts_project_failed_fast_t56p0 ['ground', 'pos_signal', 'pos', 'ee_15', 'vide... ['operator'] False False 12.955107 [percieve.not_visible, project.failed_fast] incomplete mission faulty 16.023518 0.480458
roverhuman_fxns_operator_aa_acts_project_failed_slow_t56p0 ['psfs', 'pos_signal', 'pos', 'ee_15', 'video'... ['operator'] True False 9.31949 [project.failed_slow] incomplete mission faulty 19.740872 0.81243
roverhuman_fxns_operator_aa_acts_press_failed_right_t56p0 ['operator'] ['operator'] True True 0.0 [press.failed_right] faulty 29.254775 -0.782764
roverhuman_fxns_operator_aa_acts_press_failed_left_t56p0 ['operator'] ['operator'] True True 0.0 [press.failed_left] faulty 29.254775 -0.782764
nominal [] [] True True 0.0 [] nominal mission 29.254775 -0.782764
roverhuman_fxns_operator_aa_acts_percieve_wrong_position_t56p0 [] [] True True 0.0 [] nominal mission 29.254775 -0.782764
roverhuman_fxns_operator_aa_acts_percieve_not_visible_t56p0 [] [] True True 0.0 [] nominal mission 29.254775 -0.782764
roverhuman_fxns_operator_aa_acts_percieve_failed_no_action_t56p0 [] [] True True 0.0 [] nominal mission 29.254775 -0.782764
roverhuman_fxns_operator_aa_acts_press_no_press_t56p0 ['operator'] ['operator'] True True 0.0 [press.no_press] faulty 29.254775 -0.782764
print(tab.to_latex())
\begin{tabular}{llllllllll}
\toprule
 & degraded & faulty & in_bound & at_finish & end_dist & faults & classification & end_x & end_y \\
\midrule
nominal & [] & [] & True & True & 0.000000 & [] & nominal mission & 29.254775 & -0.782764 \\
roverhuman_fxns_operator_aa_acts_look_failed_no_action_t56p0 & ['ground', 'psfs', 'pos_signal', 'pos', 'video', 'auto_control', 'motor_control', 'comms', 'power', 'operator', 'plan_path'] & ['operator'] & False & False & 13.663813 & ['look.failed_no_action'] & incomplete mission faulty & 15.244240 & -0.529458 \\
roverhuman_fxns_operator_aa_acts_percieve_failed_no_action_t56p0 & [] & [] & True & True & 0.000000 & [] & nominal mission & 29.254775 & -0.782764 \\
roverhuman_fxns_operator_aa_acts_percieve_not_visible_t56p0 & [] & [] & True & True & 0.000000 & [] & nominal mission & 29.254775 & -0.782764 \\
roverhuman_fxns_operator_aa_acts_percieve_wrong_position_t56p0 & [] & [] & True & True & 0.000000 & [] & nominal mission & 29.254775 & -0.782764 \\
roverhuman_fxns_operator_aa_acts_comprehend_failed_no_action_t56p0 & ['ground', 'psfs', 'pos_signal', 'pos', 'video', 'auto_control', 'motor_control', 'comms', 'power', 'operator', 'plan_path'] & ['operator'] & False & False & 13.663813 & ['percieve.not_visible', 'comprehend.failed_no_action'] & incomplete mission faulty & 15.244240 & -0.529458 \\
roverhuman_fxns_operator_aa_acts_project_failed_fast_t56p0 & ['ground', 'pos_signal', 'pos', 'ee_15', 'video', 'auto_control', 'motor_control', 'comms', 'power', 'operator', 'plan_path'] & ['operator'] & False & False & 12.955107 & ['percieve.not_visible', 'project.failed_fast'] & incomplete mission faulty & 16.023518 & 0.480458 \\
roverhuman_fxns_operator_aa_acts_project_failed_no_action_t56p0 & ['ground', 'psfs', 'pos_signal', 'pos', 'video', 'auto_control', 'motor_control', 'comms', 'power', 'operator', 'plan_path'] & ['operator'] & False & False & 13.663813 & ['percieve.not_visible', 'project.failed_no_action'] & incomplete mission faulty & 15.244240 & -0.529458 \\
roverhuman_fxns_operator_aa_acts_project_failed_slow_t56p0 & ['psfs', 'pos_signal', 'pos', 'ee_15', 'video', 'auto_control', 'motor_control', 'comms', 'power', 'operator', 'plan_path'] & ['operator'] & True & False & 9.319490 & ['project.failed_slow'] & incomplete mission faulty & 19.740872 & 0.812430 \\
roverhuman_fxns_operator_aa_acts_project_failed_turn_left_t56p0 & ['ground', 'pos_signal', 'pos', 'video', 'auto_control', 'motor_control', 'comms', 'power', 'operator', 'plan_path'] & ['operator'] & False & False & 14.057688 & ['percieve.not_visible', 'project.failed_turn_left'] & incomplete mission faulty & 14.862043 & -0.251773 \\
roverhuman_fxns_operator_aa_acts_project_failed_turn_right_t56p0 & ['ground', 'pos_signal', 'pos', 'video', 'auto_control', 'motor_control', 'comms', 'power', 'operator', 'plan_path'] & ['operator'] & False & False & 13.693675 & ['percieve.not_visible', 'project.failed_turn_right'] & incomplete mission faulty & 15.363988 & 1.140047 \\
roverhuman_fxns_operator_aa_acts_decide_failed_fast_t56p0 & ['psfs', 'pos_signal', 'pos', 'ee_15', 'video', 'auto_control', 'motor_control', 'comms', 'power', 'operator', 'plan_path'] & ['operator'] & True & False & 14.260100 & ['decide.failed_fast'] & incomplete mission faulty & 14.759409 & 0.904491 \\
roverhuman_fxns_operator_aa_acts_decide_failed_no_action_t56p0 & ['ground', 'psfs', 'pos_signal', 'pos', 'video', 'auto_control', 'motor_control', 'comms', 'power', 'operator', 'plan_path'] & ['operator'] & False & False & 13.663813 & ['percieve.not_visible', 'decide.failed_no_action'] & incomplete mission faulty & 15.244240 & -0.529458 \\
roverhuman_fxns_operator_aa_acts_decide_failed_slow_t56p0 & ['psfs', 'pos_signal', 'pos', 'ee_15', 'video', 'auto_control', 'motor_control', 'comms', 'power', 'operator', 'plan_path'] & ['operator'] & True & False & 14.260100 & ['decide.failed_slow'] & incomplete mission faulty & 14.759409 & 0.904491 \\
roverhuman_fxns_operator_aa_acts_decide_failed_turn_left_t56p0 & ['psfs', 'pos_signal', 'pos', 'ee_15', 'video', 'auto_control', 'motor_control', 'comms', 'power', 'operator', 'plan_path'] & ['operator'] & True & False & 14.260100 & ['decide.failed_turn_left'] & incomplete mission faulty & 14.759409 & 0.904491 \\
roverhuman_fxns_operator_aa_acts_decide_failed_turn_right_t56p0 & ['psfs', 'pos_signal', 'pos', 'ee_15', 'video', 'auto_control', 'motor_control', 'comms', 'power', 'operator', 'plan_path'] & ['operator'] & True & False & 14.260100 & ['decide.failed_turn_right'] & incomplete mission faulty & 14.759409 & 0.904491 \\
roverhuman_fxns_operator_aa_acts_reach_failed_no_action_t56p0 & ['ground', 'psfs', 'pos_signal', 'pos', 'video', 'auto_control', 'motor_control', 'comms', 'power', 'operator', 'plan_path'] & ['operator'] & False & False & 13.663813 & ['percieve.not_visible', 'reach.failed_no_action'] & incomplete mission faulty & 15.244240 & -0.529458 \\
roverhuman_fxns_operator_aa_acts_press_failed_left_t56p0 & ['operator'] & ['operator'] & True & True & 0.000000 & ['press.failed_left'] &  faulty & 29.254775 & -0.782764 \\
roverhuman_fxns_operator_aa_acts_press_failed_right_t56p0 & ['operator'] & ['operator'] & True & True & 0.000000 & ['press.failed_right'] &  faulty & 29.254775 & -0.782764 \\
roverhuman_fxns_operator_aa_acts_press_no_press_t56p0 & ['operator'] & ['operator'] & True & True & 0.000000 & ['press.no_press'] &  faulty & 29.254775 & -0.782764 \\
\bottomrule
\end{tabular}

As shown, most modes now have an effect.

Examining Performance Shaping Factors

from examples.rover.rover_model_human import RoverHumanParam
pd = ParameterDomain(RoverHumanParam)
#pd.add_constant('ground.linetype', 'sine')
#pd.add_constant('ground.amp', 4)
pd.add_variable('psfs.fatigue', var_lim=(0, 11))
pd.add_variable('psfs.attention', var_lim=(0, 11))
pd
ParameterDomain with:
 - variables: {'psfs.fatigue': (0, 11), 'psfs.attention': (0, 11)}
 - constants: {}
 - parameter_initializer: RoverHumanParam
ps = ParameterSample(pd)
ps.add_variable_ranges(comb_kwargs={'resolution': 1})
ps
ParameterSample of scenarios:
 - rep0_range_0
 - rep0_range_1
 - rep0_range_2
 - rep0_range_3
 - rep0_range_4
 - rep0_range_5
 - rep0_range_6
 - rep0_range_7
 - rep0_range_8
 - rep0_range_9
 - ... (144 total)
ps.scenarios()
[ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 0, 'attention': 0}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 0, 1: 0}, rangeid='', name='rep0_range_0'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 0, 'attention': 1}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 0, 1: 1}, rangeid='', name='rep0_range_1'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 0, 'attention': 2}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 0, 1: 2}, rangeid='', name='rep0_range_2'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 0, 'attention': 3}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 0, 1: 3}, rangeid='', name='rep0_range_3'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 0, 'attention': 4}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 0, 1: 4}, rangeid='', name='rep0_range_4'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 0, 'attention': 5}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 0, 1: 5}, rangeid='', name='rep0_range_5'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 0, 'attention': 6}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 0, 1: 6}, rangeid='', name='rep0_range_6'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 0, 'attention': 7}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 0, 1: 7}, rangeid='', name='rep0_range_7'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 0, 'attention': 8}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 0, 1: 8}, rangeid='', name='rep0_range_8'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 0, 'attention': 9}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 0, 1: 9}, rangeid='', name='rep0_range_9'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 0, 'attention': 10}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 0, 1: 10}, rangeid='', name='rep0_range_10'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 0, 'attention': 11}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 0, 1: 11}, rangeid='', name='rep0_range_11'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 1, 'attention': 0}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 1, 1: 0}, rangeid='', name='rep0_range_12'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 1, 'attention': 1}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 1, 1: 1}, rangeid='', name='rep0_range_13'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 1, 'attention': 2}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 1, 1: 2}, rangeid='', name='rep0_range_14'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 1, 'attention': 3}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 1, 1: 3}, rangeid='', name='rep0_range_15'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 1, 'attention': 4}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 1, 1: 4}, rangeid='', name='rep0_range_16'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 1, 'attention': 5}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 1, 1: 5}, rangeid='', name='rep0_range_17'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 1, 'attention': 6}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 1, 1: 6}, rangeid='', name='rep0_range_18'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 1, 'attention': 7}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 1, 1: 7}, rangeid='', name='rep0_range_19'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 1, 'attention': 8}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 1, 1: 8}, rangeid='', name='rep0_range_20'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 1, 'attention': 9}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 1, 1: 9}, rangeid='', name='rep0_range_21'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 1, 'attention': 10}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 1, 1: 10}, rangeid='', name='rep0_range_22'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 1, 'attention': 11}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 1, 1: 11}, rangeid='', name='rep0_range_23'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 2, 'attention': 0}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 2, 1: 0}, rangeid='', name='rep0_range_24'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 2, 'attention': 1}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 2, 1: 1}, rangeid='', name='rep0_range_25'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 2, 'attention': 2}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 2, 1: 2}, rangeid='', name='rep0_range_26'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 2, 'attention': 3}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 2, 1: 3}, rangeid='', name='rep0_range_27'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 2, 'attention': 4}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 2, 1: 4}, rangeid='', name='rep0_range_28'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 2, 'attention': 5}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 2, 1: 5}, rangeid='', name='rep0_range_29'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 2, 'attention': 6}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 2, 1: 6}, rangeid='', name='rep0_range_30'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 2, 'attention': 7}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 2, 1: 7}, rangeid='', name='rep0_range_31'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 2, 'attention': 8}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 2, 1: 8}, rangeid='', name='rep0_range_32'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 2, 'attention': 9}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 2, 1: 9}, rangeid='', name='rep0_range_33'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 2, 'attention': 10}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 2, 1: 10}, rangeid='', name='rep0_range_34'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 2, 'attention': 11}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 2, 1: 11}, rangeid='', name='rep0_range_35'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 3, 'attention': 0}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 3, 1: 0}, rangeid='', name='rep0_range_36'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 3, 'attention': 1}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 3, 1: 1}, rangeid='', name='rep0_range_37'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 3, 'attention': 2}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 3, 1: 2}, rangeid='', name='rep0_range_38'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 3, 'attention': 3}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 3, 1: 3}, rangeid='', name='rep0_range_39'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 3, 'attention': 4}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 3, 1: 4}, rangeid='', name='rep0_range_40'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 3, 'attention': 5}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 3, 1: 5}, rangeid='', name='rep0_range_41'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 3, 'attention': 6}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 3, 1: 6}, rangeid='', name='rep0_range_42'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 3, 'attention': 7}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 3, 1: 7}, rangeid='', name='rep0_range_43'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 3, 'attention': 8}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 3, 1: 8}, rangeid='', name='rep0_range_44'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 3, 'attention': 9}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 3, 1: 9}, rangeid='', name='rep0_range_45'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 3, 'attention': 10}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 3, 1: 10}, rangeid='', name='rep0_range_46'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 3, 'attention': 11}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 3, 1: 11}, rangeid='', name='rep0_range_47'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 4, 'attention': 0}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 4, 1: 0}, rangeid='', name='rep0_range_48'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 4, 'attention': 1}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 4, 1: 1}, rangeid='', name='rep0_range_49'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 4, 'attention': 2}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 4, 1: 2}, rangeid='', name='rep0_range_50'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 4, 'attention': 3}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 4, 1: 3}, rangeid='', name='rep0_range_51'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 4, 'attention': 4}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 4, 1: 4}, rangeid='', name='rep0_range_52'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 4, 'attention': 5}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 4, 1: 5}, rangeid='', name='rep0_range_53'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 4, 'attention': 6}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 4, 1: 6}, rangeid='', name='rep0_range_54'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 4, 'attention': 7}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 4, 1: 7}, rangeid='', name='rep0_range_55'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 4, 'attention': 8}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 4, 1: 8}, rangeid='', name='rep0_range_56'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 4, 'attention': 9}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 4, 1: 9}, rangeid='', name='rep0_range_57'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 4, 'attention': 10}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 4, 1: 10}, rangeid='', name='rep0_range_58'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 4, 'attention': 11}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 4, 1: 11}, rangeid='', name='rep0_range_59'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 5, 'attention': 0}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 5, 1: 0}, rangeid='', name='rep0_range_60'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 5, 'attention': 1}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 5, 1: 1}, rangeid='', name='rep0_range_61'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 5, 'attention': 2}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 5, 1: 2}, rangeid='', name='rep0_range_62'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 5, 'attention': 3}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 5, 1: 3}, rangeid='', name='rep0_range_63'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 5, 'attention': 4}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 5, 1: 4}, rangeid='', name='rep0_range_64'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 5, 'attention': 5}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 5, 1: 5}, rangeid='', name='rep0_range_65'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 5, 'attention': 6}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 5, 1: 6}, rangeid='', name='rep0_range_66'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 5, 'attention': 7}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 5, 1: 7}, rangeid='', name='rep0_range_67'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 5, 'attention': 8}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 5, 1: 8}, rangeid='', name='rep0_range_68'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 5, 'attention': 9}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 5, 1: 9}, rangeid='', name='rep0_range_69'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 5, 'attention': 10}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 5, 1: 10}, rangeid='', name='rep0_range_70'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 5, 'attention': 11}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 5, 1: 11}, rangeid='', name='rep0_range_71'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 6, 'attention': 0}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 6, 1: 0}, rangeid='', name='rep0_range_72'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 6, 'attention': 1}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 6, 1: 1}, rangeid='', name='rep0_range_73'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 6, 'attention': 2}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 6, 1: 2}, rangeid='', name='rep0_range_74'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 6, 'attention': 3}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 6, 1: 3}, rangeid='', name='rep0_range_75'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 6, 'attention': 4}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 6, 1: 4}, rangeid='', name='rep0_range_76'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 6, 'attention': 5}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 6, 1: 5}, rangeid='', name='rep0_range_77'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 6, 'attention': 6}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 6, 1: 6}, rangeid='', name='rep0_range_78'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 6, 'attention': 7}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 6, 1: 7}, rangeid='', name='rep0_range_79'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 6, 'attention': 8}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 6, 1: 8}, rangeid='', name='rep0_range_80'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 6, 'attention': 9}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 6, 1: 9}, rangeid='', name='rep0_range_81'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 6, 'attention': 10}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 6, 1: 10}, rangeid='', name='rep0_range_82'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 6, 'attention': 11}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 6, 1: 11}, rangeid='', name='rep0_range_83'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 7, 'attention': 0}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 7, 1: 0}, rangeid='', name='rep0_range_84'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 7, 'attention': 1}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 7, 1: 1}, rangeid='', name='rep0_range_85'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 7, 'attention': 2}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 7, 1: 2}, rangeid='', name='rep0_range_86'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 7, 'attention': 3}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 7, 1: 3}, rangeid='', name='rep0_range_87'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 7, 'attention': 4}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 7, 1: 4}, rangeid='', name='rep0_range_88'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 7, 'attention': 5}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 7, 1: 5}, rangeid='', name='rep0_range_89'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 7, 'attention': 6}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 7, 1: 6}, rangeid='', name='rep0_range_90'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 7, 'attention': 7}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 7, 1: 7}, rangeid='', name='rep0_range_91'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 7, 'attention': 8}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 7, 1: 8}, rangeid='', name='rep0_range_92'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 7, 'attention': 9}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 7, 1: 9}, rangeid='', name='rep0_range_93'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 7, 'attention': 10}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 7, 1: 10}, rangeid='', name='rep0_range_94'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 7, 'attention': 11}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 7, 1: 11}, rangeid='', name='rep0_range_95'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 8, 'attention': 0}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 8, 1: 0}, rangeid='', name='rep0_range_96'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 8, 'attention': 1}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 8, 1: 1}, rangeid='', name='rep0_range_97'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 8, 'attention': 2}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 8, 1: 2}, rangeid='', name='rep0_range_98'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 8, 'attention': 3}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 8, 1: 3}, rangeid='', name='rep0_range_99'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 8, 'attention': 4}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 8, 1: 4}, rangeid='', name='rep0_range_100'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 8, 'attention': 5}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 8, 1: 5}, rangeid='', name='rep0_range_101'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 8, 'attention': 6}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 8, 1: 6}, rangeid='', name='rep0_range_102'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 8, 'attention': 7}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 8, 1: 7}, rangeid='', name='rep0_range_103'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 8, 'attention': 8}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 8, 1: 8}, rangeid='', name='rep0_range_104'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 8, 'attention': 9}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 8, 1: 9}, rangeid='', name='rep0_range_105'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 8, 'attention': 10}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 8, 1: 10}, rangeid='', name='rep0_range_106'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 8, 'attention': 11}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 8, 1: 11}, rangeid='', name='rep0_range_107'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 9, 'attention': 0}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 9, 1: 0}, rangeid='', name='rep0_range_108'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 9, 'attention': 1}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 9, 1: 1}, rangeid='', name='rep0_range_109'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 9, 'attention': 2}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 9, 1: 2}, rangeid='', name='rep0_range_110'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 9, 'attention': 3}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 9, 1: 3}, rangeid='', name='rep0_range_111'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 9, 'attention': 4}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 9, 1: 4}, rangeid='', name='rep0_range_112'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 9, 'attention': 5}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 9, 1: 5}, rangeid='', name='rep0_range_113'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 9, 'attention': 6}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 9, 1: 6}, rangeid='', name='rep0_range_114'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 9, 'attention': 7}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 9, 1: 7}, rangeid='', name='rep0_range_115'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 9, 'attention': 8}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 9, 1: 8}, rangeid='', name='rep0_range_116'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 9, 'attention': 9}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 9, 1: 9}, rangeid='', name='rep0_range_117'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 9, 'attention': 10}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 9, 1: 10}, rangeid='', name='rep0_range_118'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 9, 'attention': 11}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 9, 1: 11}, rangeid='', name='rep0_range_119'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 10, 'attention': 0}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 10, 1: 0}, rangeid='', name='rep0_range_120'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 10, 'attention': 1}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 10, 1: 1}, rangeid='', name='rep0_range_121'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 10, 'attention': 2}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 10, 1: 2}, rangeid='', name='rep0_range_122'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 10, 'attention': 3}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 10, 1: 3}, rangeid='', name='rep0_range_123'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 10, 'attention': 4}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 10, 1: 4}, rangeid='', name='rep0_range_124'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 10, 'attention': 5}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 10, 1: 5}, rangeid='', name='rep0_range_125'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 10, 'attention': 6}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 10, 1: 6}, rangeid='', name='rep0_range_126'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 10, 'attention': 7}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 10, 1: 7}, rangeid='', name='rep0_range_127'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 10, 'attention': 8}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 10, 1: 8}, rangeid='', name='rep0_range_128'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 10, 'attention': 9}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 10, 1: 9}, rangeid='', name='rep0_range_129'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 10, 'attention': 10}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 10, 1: 10}, rangeid='', name='rep0_range_130'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 10, 'attention': 11}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 10, 1: 11}, rangeid='', name='rep0_range_131'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 11, 'attention': 0}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 11, 1: 0}, rangeid='', name='rep0_range_132'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 11, 'attention': 1}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 11, 1: 1}, rangeid='', name='rep0_range_133'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 11, 'attention': 2}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 11, 1: 2}, rangeid='', name='rep0_range_134'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 11, 'attention': 3}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 11, 1: 3}, rangeid='', name='rep0_range_135'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 11, 'attention': 4}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 11, 1: 4}, rangeid='', name='rep0_range_136'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 11, 'attention': 5}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 11, 1: 5}, rangeid='', name='rep0_range_137'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 11, 'attention': 6}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 11, 1: 6}, rangeid='', name='rep0_range_138'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 11, 'attention': 7}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 11, 1: 7}, rangeid='', name='rep0_range_139'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 11, 'attention': 8}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 11, 1: 8}, rangeid='', name='rep0_range_140'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 11, 'attention': 9}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 11, 1: 9}, rangeid='', name='rep0_range_141'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 11, 'attention': 10}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 11, 1: 10}, rangeid='', name='rep0_range_142'),
 ParameterScenario(sequence={}, times=(), p={'psfs': {'fatigue': 11, 'attention': 11}}, r={}, sp={}, prob=0.006944444444444444, inputparams={0: 11, 1: 11}, rangeid='', name='rep0_range_143')]
ers, hists = prop.parameter_sample(mdl, ps)
SCENARIOS COMPLETE:   0%|          | 0/144 [00:00<?, ?it/s]
SCENARIOS COMPLETE: 100%|██████████| 144/144 [02:22<00:00,  1.01it/s]
plot_map(mdl, hists)
(<Figure size 400x400 with 1 Axes>, <Axes: xlabel='x', ylabel='y'>)
../../../_images/98d1b96d0832421cb459dc2160a9adffed5e8357cc1052aaf7a96b321c4f1801.png
ers.get_values("end_x")
rep0_range_0.tend.classify.end_x: 29.254775331608617
rep0_range_1.tend.classify.end_x: 29.254775331608617
rep0_range_2.tend.classify.end_x: 29.254775331608617
rep0_range_3.tend.classify.end_x: 29.254775331608617
rep0_range_4.tend.classify.end_x: 29.254775331608617
rep0_range_5.tend.classify.end_x: 29.254775331608617
rep0_range_6.tend.classify.end_x: 29.254775331608617
rep0_range_7.tend.classify.end_x: 29.254775331608617
rep0_range_8.tend.classify.end_x: 29.254775331608617
rep0_range_9.tend.classify.end_x: 29.254775331608617
rep0_range_10.tend.classify.end_x: 29.254775331608617
rep0_range_11.tend.classify.end_x: 29.254775331608617
rep0_range_12.tend.classify.end_x: 29.254775331608617
rep0_range_13.tend.classify.end_x: 29.254775331608617
rep0_range_14.tend.classify.end_x: 29.254775331608617
rep0_range_15.tend.classify.end_x: 29.254775331608617
rep0_range_16.tend.classify.end_x: 29.254775331608617
rep0_range_17.tend.classify.end_x: 29.254775331608617
rep0_range_18.tend.classify.end_x: 29.254775331608617
rep0_range_19.tend.classify.end_x: 29.254775331608617
rep0_range_20.tend.classify.end_x: 29.254775331608617
rep0_range_21.tend.classify.end_x: 29.254775331608617
rep0_range_22.tend.classify.end_x: 29.254775331608617
rep0_range_23.tend.classify.end_x: 29.254775331608617
rep0_range_24.tend.classify.end_x: 29.254775331608617
rep0_range_25.tend.classify.end_x: 29.254775331608617
rep0_range_26.tend.classify.end_x: 29.254775331608617
rep0_range_27.tend.classify.end_x: 29.254775331608617
rep0_range_28.tend.classify.end_x: 29.254775331608617
rep0_range_29.tend.classify.end_x: 29.254775331608617
rep0_range_30.tend.classify.end_x: 29.254775331608617
rep0_range_31.tend.classify.end_x: 29.254775331608617
rep0_range_32.tend.classify.end_x: 29.254775331608617
rep0_range_33.tend.classify.end_x: 29.254775331608617
rep0_range_34.tend.classify.end_x: 29.254775331608617
rep0_range_35.tend.classify.end_x: 29.254775331608617
rep0_range_36.tend.classify.end_x: 29.254775331608617
rep0_range_37.tend.classify.end_x: 29.254775331608617
rep0_range_38.tend.classify.end_x: 29.254775331608617
rep0_range_39.tend.classify.end_x: 29.254775331608617
rep0_range_40.tend.classify.end_x: 29.254775331608617
rep0_range_41.tend.classify.end_x: 29.254775331608617
rep0_range_42.tend.classify.end_x: 29.254775331608617
rep0_range_43.tend.classify.end_x: 29.254775331608617
rep0_range_44.tend.classify.end_x: 29.254775331608617
rep0_range_45.tend.classify.end_x: 29.254775331608617
rep0_range_46.tend.classify.end_x: 29.254775331608617
rep0_range_47.tend.classify.end_x: 29.254775331608617
rep0_range_48.tend.classify.end_x: 29.254775331608617
rep0_range_49.tend.classify.end_x: 29.254775331608617
rep0_range_50.tend.classify.end_x: 29.254775331608617
rep0_range_51.tend.classify.end_x: 29.254775331608617
rep0_range_52.tend.classify.end_x: 29.254775331608617
rep0_range_53.tend.classify.end_x: 29.254775331608617
rep0_range_54.tend.classify.end_x: 29.254775331608617
rep0_range_55.tend.classify.end_x: 29.254775331608617
rep0_range_56.tend.classify.end_x: 29.254775331608617
rep0_range_57.tend.classify.end_x: 29.254775331608617
rep0_range_58.tend.classify.end_x: 29.254775331608617
rep0_range_59.tend.classify.end_x: 29.254775331608617
rep0_range_60.tend.classify.end_x: 29.254775331608617
rep0_range_61.tend.classify.end_x: 29.254775331608617
rep0_range_62.tend.classify.end_x: 29.254775331608617
rep0_range_63.tend.classify.end_x: 29.254775331608617
rep0_range_64.tend.classify.end_x: 29.254775331608617
rep0_range_65.tend.classify.end_x: 29.254775331608617
rep0_range_66.tend.classify.end_x: 29.254775331608617
rep0_range_67.tend.classify.end_x: 29.254775331608617
rep0_range_68.tend.classify.end_x: 29.254775331608617
rep0_range_69.tend.classify.end_x: 29.254775331608617
rep0_range_70.tend.classify.end_x: 29.254775331608617
rep0_range_71.tend.classify.end_x: 29.254775331608617
rep0_range_72.tend.classify.end_x: 29.254775331608617
rep0_range_73.tend.classify.end_x: 29.254775331608617
rep0_range_74.tend.classify.end_x: 29.254775331608617
rep0_range_75.tend.classify.end_x: 29.254775331608617
rep0_range_76.tend.classify.end_x: 29.254775331608617
rep0_range_77.tend.classify.end_x: 29.254775331608617
rep0_range_78.tend.classify.end_x: 29.254775331608617
rep0_range_79.tend.classify.end_x: 29.254775331608617
rep0_range_80.tend.classify.end_x: 29.254775331608617
rep0_range_81.tend.classify.end_x: 29.254775331608617
rep0_range_82.tend.classify.end_x: 29.254775331608617
rep0_range_83.tend.classify.end_x: 29.254775331608617
rep0_range_84.tend.classify.end_x: 29.254775331608617
rep0_range_85.tend.classify.end_x: 29.254775331608617
rep0_range_86.tend.classify.end_x: 29.254775331608617
rep0_range_87.tend.classify.end_x: 29.254775331608617
rep0_range_88.tend.classify.end_x: 29.254775331608617
rep0_range_89.tend.classify.end_x: 29.254775331608617
rep0_range_90.tend.classify.end_x: 29.254775331608617
rep0_range_91.tend.classify.end_x: 29.254775331608617
rep0_range_92.tend.classify.end_x: 29.254775331608617
rep0_range_93.tend.classify.end_x: 29.254775331608617
rep0_range_94.tend.classify.end_x: 29.254775331608617
rep0_range_95.tend.classify.end_x: 29.254775331608617
rep0_range_96.tend.classify.end_x: 29.254775331608617
rep0_range_97.tend.classify.end_x: 29.254775331608617
rep0_range_98.tend.classify.end_x: 29.254775331608617
rep0_range_99.tend.classify.end_x: 29.254775331608617
rep0_range_100.tend.classify.end_x: 29.254775331608617
rep0_range_101.tend.classify.end_x: 29.254775331608617
rep0_range_102.tend.classify.end_x: 29.254775331608617
rep0_range_103.tend.classify.end_x: 29.254775331608617
rep0_range_104.tend.classify.end_x: 29.254775331608617
rep0_range_105.tend.classify.end_x: 29.254775331608617
rep0_range_106.tend.classify.end_x: 29.254775331608617
rep0_range_107.tend.classify.end_x: 29.254775331608617
rep0_range_108.tend.classify.end_x:  0.0
rep0_range_109.tend.classify.end_x:  0.0
rep0_range_110.tend.classify.end_x:  0.0
rep0_range_111.tend.classify.end_x:  0.0
rep0_range_112.tend.classify.end_x:  0.0
rep0_range_113.tend.classify.end_x:  0.0
rep0_range_114.tend.classify.end_x:  0.0
rep0_range_115.tend.classify.end_x:  0.0
rep0_range_116.tend.classify.end_x:  0.0
rep0_range_117.tend.classify.end_x:  0.0
rep0_range_118.tend.classify.end_x:  0.0
rep0_range_119.tend.classify.end_x:  0.0
rep0_range_120.tend.classify.end_x:  0.0
rep0_range_121.tend.classify.end_x:  0.0
rep0_range_122.tend.classify.end_x:  0.0
rep0_range_123.tend.classify.end_x:  0.0
rep0_range_124.tend.classify.end_x:  0.0
rep0_range_125.tend.classify.end_x:  0.0
rep0_range_126.tend.classify.end_x:  0.0
rep0_range_127.tend.classify.end_x:  0.0
rep0_range_128.tend.classify.end_x:  0.0
rep0_range_129.tend.classify.end_x:  0.0
rep0_range_130.tend.classify.end_x:  0.0
rep0_range_131.tend.classify.end_x:  0.0
rep0_range_132.tend.classify.end_x:  0.0
rep0_range_133.tend.classify.end_x:  0.0
rep0_range_134.tend.classify.end_x:  0.0
rep0_range_135.tend.classify.end_x:  0.0
rep0_range_136.tend.classify.end_x:  0.0
rep0_range_137.tend.classify.end_x:  0.0
rep0_range_138.tend.classify.end_x:  0.0
rep0_range_139.tend.classify.end_x:  0.0
rep0_range_140.tend.classify.end_x:  0.0
rep0_range_141.tend.classify.end_x:  0.0
rep0_range_142.tend.classify.end_x:  0.0
rep0_range_143.tend.classify.end_x:  0.0
from fmdtools.analyze.tabulate import NominalEnvelope
na = NominalEnvelope(ps, ers, 'at_finish', 'p.psfs.fatigue', 'p.psfs.attention', func= lambda x: x)
fig, ax = na.plot_scatter()
../../../_images/5a7d9532b8711c16e6cd120a8eeb548f1329419d924a7012a30a435b559ed891.png
fig.savefig("nominal_psfs.pdf", format="pdf", bbox_inches = 'tight', pad_inches = 0)
mdl = RoverHuman(p={'ground': {'linetype': 'turn'}})
endresults, mdlhist = prop.one_fault(mdl, 'operator.aa.acts.look', 'failed_no_action', time=15)
endresults
nominal.tend.classify.rate:          1.0
nominal.tend.classify.cost:            0
nominal.tend.classify.prob:          1.0
nominal.tend.classify.expected_cost:   0
nominal.tend.classify.in_bound:     True
nominal.tend.classify.at_finish:    True
nominal.tend.classify.line_dist:       1
nominal.tend.classify.num_modes:       0
nominal.tend.classify.end_dist:      0.0
nominal.tend.classify.tot_deviation: 0.005246344989065292
nominal.tend.classify.faults:   array(0)
nominal.tend.classify.classification: nominal mission
nominal.tend.classify.end_x: 29.813614084369863
nominal.tend.classify.end_y: 17.26588133276667
nominal.tend.classify.endpt:    array(2)
operator_aa_acts_loo                 1.0
operator_aa_acts_loo                   0
operator_aa_acts_loo                 1.0
operator_aa_acts_loo                   0
operator_aa_acts_loo               False
operator_aa_acts_loo               False
operator_aa_acts_loo                   1
operator_aa_acts_loo                   1
operator_aa_acts_loo  23.466067426611588
operator_aa_acts_loo  0.2759017544282031
operator_aa_acts_loo            array(1)
operator_aa_acts_looincomplete mission faulty
operator_aa_acts_loo   13.33333333333334
operator_aa_acts_loo                 0.0
operator_aa_acts_loo            array(2)
traj_fig = plot_map(mdl, mdlhist)
../../../_images/527170bab1edb4eda4275c457de94d80328af1c7f43a2b8d7371910bd8985133.png
mdlhist.plot_trajectories('flows.pos.s.x', 'flows.pos.s.y')
(<Figure size 400x400 with 1 Axes>, <Axes: xlabel='x', ylabel='y'>)
../../../_images/a1009b4bc7853f3e9a9bc67b9fdf78906bb90587456104fa43728f7a1280512a.png
mdlhist.plot_line('flows.pos.s.vel', 'flows.pos.s.ux', 'flows.pos.s.uy')
(<Figure size 600x400 with 4 Axes>,
 array([<Axes: title={'center': 'flows.pos.s.vel'}, xlabel=' '>,
        <Axes: title={'center': 'flows.pos.s.ux'}, xlabel='time'>,
        <Axes: title={'center': 'flows.pos.s.uy'}, xlabel='time'>,
        <Axes: >], dtype=object))
../../../_images/8e0c48b797d7ceb78ab3c90b97fbd2f77a363eb89794a01785161f74d0bb180d.png
fs = FaultSample(fd)
fs.add_fault_times([j for j in range(0, 30, 5)])
fs
FaultSample of scenarios: 
 - roverhuman_fxns_operator_aa_acts_look_failed_no_action_t0
 - roverhuman_fxns_operator_aa_acts_look_failed_no_action_t5
 - roverhuman_fxns_operator_aa_acts_look_failed_no_action_t10
 - roverhuman_fxns_operator_aa_acts_look_failed_no_action_t15
 - roverhuman_fxns_operator_aa_acts_look_failed_no_action_t20
 - roverhuman_fxns_operator_aa_acts_look_failed_no_action_t25
 - roverhuman_fxns_operator_aa_acts_percieve_failed_no_action_t0
 - roverhuman_fxns_operator_aa_acts_percieve_failed_no_action_t5
 - roverhuman_fxns_operator_aa_acts_percieve_failed_no_action_t10
 - roverhuman_fxns_operator_aa_acts_percieve_failed_no_action_t15
 - ... (114 total)
ers, hists = prop.fault_sample(mdl, fs)
SCENARIOS COMPLETE: 100%|██████████| 114/114 [01:24<00:00,  1.35it/s]
fig, ax = plot_map(mdl, hists)
../../../_images/6f6589a1ab7502efb3e5aa9ee32d26583478f57575ba1d6d44f9d8c88a0d5be5.png
fig.savefig("nocon_trajectories.pdf", format="pdf", bbox_inches = 'tight', pad_inches = 0)
fig, ax = hists.plot_line('flows.psfs.s.attention')
../../../_images/5f29b116ff4c984e529b16ad24870382727221549b7913f2d6ccfcb5cced2946.png
fig.savefig("nocon_attention.pdf", format="pdf", bbox_inches = 'tight', pad_inches = 0)
mdl = RoverHuman(p={'ground': {'linetype': 'sine', 'amp': 2, 'period': 2/3.14*30}})
ers, hists = prop.fault_sample(mdl, fs)
SCENARIOS COMPLETE: 100%|██████████| 114/114 [01:10<00:00,  1.63it/s]
fig, ax = plot_map(mdl, hists)
../../../_images/db936646c049f44e7e39859fbedc836b253ab9a96325f63b7eed1f523f0e9ebe.png
fig.savefig("nocon_trajectories_sine.pdf", format="pdf", bbox_inches = 'tight', pad_inches = 0)
fig, ax = hists.plot_line('flows.psfs.s.attention')
../../../_images/4406ea5fa68a0d9ac61fc3226303e0c2b110352c5708f2d73eee47ce23c4b3e9.png
fig.savefig("nocon_attention_sine.pdf", format="pdf", bbox_inches = 'tight', pad_inches = 0)