Dump and Load Model

DIDPPy allows a user to extract a Model object as strings or YAML files.

Dump and Load String Representation

Users can extract the string representation of a Model object with the method dump_to_str(). The method returns two strings: a domain string and a problem string, and they can be loaded back into a Model object with the method load_from_str().

Example:

import didppy as dp
model = dp.Model()
v = model.add_int_var(target=0)
model.add_transition(dp.Transition(name="increase", effects=[(v, v+1)]))
model.add_base_case([v >= 10])
domain, problem = model.dump_to_str()
reloaded_model = dp.Model.load_from_str(domain, problem)

The above example shows the dump and load process of a simple model. To successfully load a meaningful model, the domain string and the problem string must contain information of state variables, transitions, and base cases. Both the domain string and the problem string have the YAML syntax, and they can be directly written into YAML files.

Dump and Load YAML Files

If the user wants to store the string representation of a Model object as files, it can be achieved by calling dump_to_files() directly. Similarly, the files can be loaded back into a Model object with the method load_from_files().

Example:

import didppy as dp

model = dp.Model()
v = model.add_int_var(target=0)
model.add_transition(dp.Transition(name="increase", effects=[(v, v+1)]))
model.add_base_case([v >= 10])
model.dump_to_files("domain.yaml", "problem.yaml")
reloaded_model = dp.Model.load_from_files("domain.yaml", "problem.yaml")

Notice the method dump_to_files() works exactly same as getting the domain string and problem string from dump_to_str(), then write the domain string into the file “domain.yaml” and write the problem string into the file “problem.yaml”.

The method load_from_files() works exactly same as reading the file “domain.yaml” as a single domain string and reading the file “problem.yaml” as a single problem string, then load the model using the method load_from_str() with the domain string and problem string.

Generated YAML files can be used with didp-yaml, a command line tool to run DIDP solvers. A user also can write YAML files following the syntax and load them into a Model object.