UC1:
    number:
        Use Case 5.1
    title:        
        Run and Solve ExperimentProtocol
    description:    
        SimulationRunner runs a single ExperimentProtocol using the ODESolver and stores the results in the map of Results
    actor:
        System    
    level:
        system
    preconditions:  
        - SimulationRunner has been initialized
        - Experiment has validated the MarkovModel and ExperimentProtocol 
    postconditions: 
        The SimulationRunner will use the ODESolver to simulate the MarkovModel over the ExperimentProtocol and save the results in the map of Results, keyed by the ExperimentProtocol's name
    steps:
        - The Experiment class calls runExperimentProtocol() on the SimulationRunner, and passes a reference to the MarkovModel and the ExperimentProtocol as arguments
        - The SimulationRunner calculates the steady state probablilites of the MarkovModel under the ExperimentProtocol's conditions
        - For each VoltageProtocolIteration in the ExperimentProtocol, the SimulationRunner brings the model to steady state, updates the probabilities using the ODESolver, updates the StateOfTheWorld, and updates the MarkovModel's transition matrix using the StateOfTheWorld until the simulation has completed
        - The results for each iteration are saved
        - After all VoltageProtocolIteration's have been run, the accumulated results are stored in the map of Results
        - The method returns
    extensions:    
