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()

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()

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()

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'>)

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'>)

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()

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)

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.

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'>)

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()

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)

mdlhist.plot_trajectories('flows.pos.s.x', 'flows.pos.s.y')
(<Figure size 400x400 with 1 Axes>, <Axes: xlabel='x', ylabel='y'>)

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))

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)

fig.savefig("nocon_trajectories.pdf", format="pdf", bbox_inches = 'tight', pad_inches = 0)
fig, ax = hists.plot_line('flows.psfs.s.attention')

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)

fig.savefig("nocon_trajectories_sine.pdf", format="pdf", bbox_inches = 'tight', pad_inches = 0)
fig, ax = hists.plot_line('flows.psfs.s.attention')

fig.savefig("nocon_attention_sine.pdf", format="pdf", bbox_inches = 'tight', pad_inches = 0)