示例#1
0
def run_simulator(seed, num_days):
    """
    Runs the simulator once.
    Configures the num_days and seed parameter of the simulator.

    :param seed for the random number generator, used by the simulator
    :param num_days the number of days (steps) the simulator needs to run.
    """

    simulator = Simulation()
    simulator.loadRunConfig("../config/run_default_nolog.xml")
    set_influenza(simulator)
    simulator.runConfig.setParameter("rng_seed", seed)
    simulator.run()
示例#2
0
def runBaseline():
    """
        Execute the baseline case.
    """
    sim = Simulation()
    # Set parameters
    sim.runConfig.setParameter("output_prefix", "Baseline")
    sim.runConfig.setParameter("num_days", 60)

    sim.runConfig.setParameter("disease_config_file",
                               "data/disease_measles.xml")
    sim.runConfig.setParameter("r0", 11)
    sim.runConfig.setParameter("seeding_rate", 0)
    sim.runConfig.setParameter("seeding_age_min", 1)
    sim.runConfig.setParameter("seeding_age_max", 99)

    sim.runConfig.setParameter("population_file", "data/pop_flanders600.csv")
    sim.runConfig.setParameter("output_persons", "false")
    sim.runConfig.setParameter("num_participants_survey", 10000)
    sim.runConfig.setParameter("age_contact_matrix_file",
                               "data/contact_matrix_flanders_subpop.xml")
    sim.runConfig.setParameter("log_level", "SusceptibleContacts")
    sim.runConfig.setParameter("start_date", "2017-01-01")
    sim.runConfig.setParameter("holidays_file", "data/holidays_none.json")

    # immunity_profile
    # vaccine_profile
    # vaccine_link_probability
    # immunity_rate
    # vaccine_rate

    sim.runConfig.setParameter("local_information_policy",
                               "NoLocalInformation")
    sim.runConfig.setParameter("global_information_policy",
                               "NoGlobalInformation")
    sim.runConfig.setParameter("belief_policy/name", "NoBelief")
    sim.runConfig.setParameter("behaviour_policy", "NoBehaviour")

    sim.runConfig.setParameter("rng_seed", 1)

    # Register callbacks
    sim.RegisterCallback(measureSusceptiblesClustering)
    sim.RegisterCallback(seedInfection)

    # TODO run forks with varying parameters (itertools.product(...))
    # Run simulation
    sim.run()
from pystride.Simulation import Simulation

if not len(sys.argv) == 2:
    sys.exit(
        "Please add the amount of runs as an argument: \npython3 runExperimentsBatchRuns.py 100"
    )

t_start = time.perf_counter()

try:
    amount_of_runs = int(sys.argv[1])
except ValueError:
    sys.exit("amount of runs is not a number.")

# Configure simulation
simulation = Simulation()
simulation.loadRunConfig("../config/run_batchruntests1.xml")
simulation.runConfig.setParameter("output_prefix", "BatchRunsTesting")

# Create forks with different values for RNG
RNG_values = []
for i in range(amount_of_runs):
    RNG_values.append(random.randint(0, 4294967294))

for rng in RNG_values:
    # Create fork
    fork = simulation.fork("rng_" + str(rng))
    fork.runConfig.setParameter("rng_seed", rng)

# Run all forks
simulation.runForks()
示例#4
0
import pystride

from pystride.Simulation import Simulation

pystride.workspace = "simulations"


def checkFinished(sim, timestep):
    pop = sim.GetSimulator().GetPopulation()
    infected = pop.GetInfectedCount()
    print("Amount infected: ", infected)
    if infected >= 4000:
        sim.Stop()


# Configure simulation
simulation = Simulation()
simulation.loadRunConfig("../config/run_default.xml")
simulation.runConfig.setParameter("generate_person_file", 0)
simulation.registerCallback(checkFinished)

simulation.run()
示例#5
0
import itertools

import pystride
from pystride.Simulation import Simulation

# Set the workspace (default = .)
pystride.workspace = "simulations"

# Configure simulation
simulation = Simulation()
simulation.loadRunConfig("../config/run_default.xml")
simulation.runConfig.setParameter("num_days", 10)

# Create forks with varying parameters
for b0, ir in list(itertools.product([14, 10, 5], [0.2, 0.4, 0.6])):
    # Create fork
    fork = simulation.fork("b0_" + str(b0) + "-ir_" + str(ir))
    fork.diseaseConfig.setParameter("transmission/b0", b0)
    fork.runConfig.setParameter("immunity_rate", ir)

    fork.runConfig.setParameter("r0", 15)

# Run all forks
simulation.runForks()
示例#6
0
import random
import csv
import pystride
from pystride.Simulation import Simulation

# RNG types to test
# Note: Default (mrg2) -- See results from previous test
RNG_TYPES = ["lcg64", "yarn2", "lcg64_shift", "mrg3", "yarn3"]
# Amount of random values to test
amount_of_runs = 1

# Set the workspace (default = .)
pystride.workspace = "simulations"

# Configure simulation
simulation = Simulation()
simulation.loadRunConfig("../config/run_batch_measles.xml")
simulation.runConfig.setParameter("output_prefix", "BatchRngTypeTesting")

# Initialize the random values
rng_values = []
for i in range(amount_of_runs)):
    rng_values.append(random.randint(0, 4294967294))
## Create Forks
for rng_type in RNG_TYPES:
    for rng_value in rng_values:
        # measles_16
        fork16 = simulation.fork("measles_16_" + rng_type + "_" + str(rng_value))
        fork16.runConfig.setParameter("r0", 16)
        fork16.runConfig.setParameter("rng_type", rng_type)
        fork16.runConfig.setParameter("rng_seed", rng_value)
示例#7
0
from pystride.Simulation import Simulation

# Load run configuration
simulation = Simulation()
simulation.loadRunConfig("../config/run_default.xml")

# Run the simulation
simulation.run()
示例#8
0
if not len(sys.argv) == 2:
    sys.exit(
        "Please add the amount of runs as an argument: \npython3 runThreads_influenza.py 100"
    )

try:
    amount_of_runs = int(sys.argv[1])
except ValueError:
    sys.exit("amount of runs is not a number.")

# Set the workspace (default = .)
pystride.workspace = "simulations"

# Configure simulation
simulation = Simulation()
simulation.loadRunConfig("../config/run_batch_measles.xml")
simulation.runConfig.setParameter("output_prefix", "BatchThreadTesting")

## Create Forks
# measles_16
for i in range(0, amount_of_runs):
    fork = simulation.fork("measles_16_" + str(i))
    fork.runConfig.setParameter("rng_seed", random.randint(0, 4294967294))
    fork.runConfig.setParameter("r0", 16)
# measles_60
for i in range(0, amount_of_runs):
    fork = simulation.fork("measles_60_" + str(i))
    fork.runConfig.setParameter("rng_seed", random.randint(0, 4294967294))
    fork.runConfig.setParameter("r0", 60)
示例#9
0
#############################################################################
# Script for simulations with no-vaccination clustering                     #
# using Imitation belief policy.                                            #
#############################################################################

import itertools

import pystride
from pystride.Simulation import Simulation

# TODO callback to vaccinate + seed after x days

sim = Simulation()
sim.loadRunConfig("config/common.xml")

# Set parameters that are the same for all simulations
sim.runConfig.setParameter("output_prefix", "Imitation")
sim.runConfig.setParameter("seeding_rate", 0)

# TODO natural immunity?
sim.runConfig.setParameter("immunity_rate", 0)
sim.runConfig.setParameter("vaccine_rate", 0)

sim.runConfig.setParameter("local_information_policy", "LocalDiscussion")
sim.runConfig.setParameter("global_information_policy", "NoLocalInformation")
sim.runConfig.setParameter("belief_policy/name", "Imitation")
sim.runConfig.setParameter("belief_policy/accept_threshold", 0.95)
sim.runConfig.setParameter("belief_policy/no_accept_threshold", -0.95)
sim.runConfig.setParameter("behaviour_policy", "Vaccination")

seeds = list(range(10))
示例#10
0
import pystride
from pystride.Simulation import Simulation

simulation = Simulation()

# Load disease from configuration file
simulation.loadDiseaseConfig("../data/disease_influenza.xml")
simulation.diseaseConfig.setParameter("transmission/b0", 0.35)

# Configure simulation
simulation.runConfig.setParameter("rng_seed", 1)
simulation.runConfig.setParameter("r0", 5)
simulation.runConfig.setParameter("seeding_rate", 0.002)
simulation.runConfig.setParameter("seeding_age_min", 1)
simulation.runConfig.setParameter("seeding_age_max", 99)
simulation.runConfig.setParameter("immunity_rate", 0.8)
simulation.runConfig.setParameter("immunity_profile", "None")
simulation.runConfig.setParameter("vaccine_profile", "Random")
simulation.runConfig.setParameter("vaccine_rate", 0.8)
simulation.runConfig.setParameter("vaccine_link_probability", 0)
simulation.runConfig.setParameter("population_file", "pop_antwerp.csv")
simulation.runConfig.setParameter("num_days", 10)
simulation.runConfig.setParameter("output_prefix", "simulation1")
simulation.runConfig.setParameter("output_persons", "true")
simulation.runConfig.setParameter("num_participants_survey", 10)
simulation.runConfig.setParameter("start_date", "2017-01-01")
simulation.runConfig.setParameter("holidays_file",
                                  "holidays_flanders_2017.json")
simulation.runConfig.setParameter("age_contact_matrix_file",
                                  "contact_matrix_flanders_subpop.xml")
simulation.runConfig.setParameter("log_level", "Transmissions")
示例#11
0
from pystride.Simulation import Simulation


def vaccinate(sim, timestep):
    if timestep == 20:
        print("Vaccinating everyone who is not yet infected")
        pop = sim.GetSimulator().GetPopulation()
        for pIndex in range(pop.size()):
            if pop[pIndex].GetHealth().IsSusceptible():
                pop[pIndex].GetHealth().SetImmune()


# Build simulation
simulation = Simulation()
simulation.loadRunConfig("../config/run_default.xml")

# Register the "vaccinate" callback
simulation.registerCallback(vaccinate)

simulation.run()
示例#12
0
from pystride.Simulation import Simulation

# The callback function
def printInfected(sim, timestep):
    if (timestep % 2)  == 0:
        print("Amount infected at timestep {}: {}".format(
            timestep, sim.GetSimulator().GetPopulation().GetInfectedCount()))

# Build simulation
simulation = Simulation()
simulation.loadRunConfig("../config/run_default.xml")

# Register callback
simulation.registerCallback(printInfected)

simulation.run()
示例#13
0
##########################################################
# Script to obtain number of cases for various RNG values #
##########################################################

import csv
import os
import time

import pystride
from pystride.Simulation import Simulation

t_start = time.perf_counter()

# Configure simulation
simulation = Simulation()
simulation.loadRunConfig("../config/run_default.xml")
simulation.runConfig.setParameter("output_prefix", "RNGRuns")

# Create forks with different values for RNG
RNG_values = [
    7432523, 4755593, 4830240, 5399722, 9682632, 988142, 3270739, 6738734,
    9510033
]

for rng in RNG_values:
    # Create fork
    fork = simulation.fork("rng_" + str(rng))
    fork.runConfig.setParameter("rng_seed", rng)

# Run all forks
simulation.runForks()
示例#14
0
import pystride
from pystride.Simulation import Simulation

# Set the workspace (default = .)
pystride.workspace = "simulations"

# Configure simulation
simulation = Simulation()
simulation.loadRunConfig("../config/run_default.xml")
simulation.runConfig.setParameter("num_days", 10)

# Create 5 identical forks except for the seed
for index in range(5):
    fork = simulation.fork("instance" + str(index))
    fork.runConfig.setParameter("rng_seed", index)

# Run all forks
simulation.runForks()
示例#15
0
if not len(sys.argv) == 2:
    sys.exit(
        "Please add the amount of runs as an argument: \npython3 runThreads_influenza.py 100"
    )

try:
    amount_of_runs = int(sys.argv[1])
except ValueError:
    sys.exit("amount of runs is not a number.")

# Set the workspace (default = .)
pystride.workspace = "simulations"

# Configure simulation
simulation = Simulation()
simulation.loadRunConfig("../config/run_batch_default.xml")
simulation.runConfig.setParameter("output_prefix", "BatchThreadTesting")

## Create Forks
# Influenza_a
for i in range(0, amount_of_runs):
    fork = simulation.fork("influenza_a_" + str(i))
    fork.runConfig.setParameter("rng_seed", random.randint(0, 4294967294))
# influenza_b
for i in range(0, amount_of_runs):
    fork = simulation.fork("influenza_b_" + str(i))
    fork.runConfig.setParameter("rng_seed", random.randint(0, 4294967294))
    fork.runConfig.setParameter("seeding_rate", 0)
# influenza_c
for i in range(0, amount_of_runs):