packages = ["numpy", "matplotlib", "pysd", "pandas",] source = "# netCDF4" with open('netCDF4.py', 'w') as f: f.write(source)

PyML with PySD System Dynamics Demonstrations

target = "sim_output" import pysd import matplotlib.pyplot as plot def model_init(start, stop, dt): global xmile_header, model, model_specs xmile_header = f"""
Ray Madachy Battle Simulator PyML .20 dev
""" model_specs = f""" {stop} {start}
{dt}
""" model = "" build_model() def add_stock(name, initial, flows): global model model += f""" {name} "{flows}" {initial} """ build_model() def add_flow(name, equation): global model model += f""" {name} {equation} """ build_model() def add_auxiliary(name, equation): global model model += f""" {name} {equation} """ build_model() def build_model(): global xmile_string xmile_closing = """
""" model_string = """ """ + f"{model}" + """ """ xmile_string = xmile_header + model_specs + model_string + xmile_closing with open('test.xmile', 'w') as f: f.write(xmile_string) def model_run(): import pysd global output model = pysd.read_xmile('./test.xmile') output = model.run(progress=False) return(output) #PyScript.write(target, output, append=True) def plot_output(*outputs): pyscript.write('plot_output', '', append=False) global fig for var in outputs: fig, axis = plot.subplots(figsize=(5, 4)) axis.set(xlabel = 'Time', ylabel = var) axis.plot(output.index, output[var].values, label=var) axis.legend(loc="best", ) # plot.show() pyscript.write('plot_output', fig, append=True) #xmile_string = "" model_init(start=0, stop=5, dt=.2) add_stock("x", 1000, "x_attrition") add_flow("x_attrition", "y*y_lethality") add_auxiliary("x_lethality", .8) add_stock("y", 800, "y_attrition") add_flow("y_attrition", "x*x_lethality") add_auxiliary("y_lethality", .9) model_run() #output plot_output('x', 'y') #model = pysd.read_xmile('test.xmile') #output = model.run(progress=True) #output