def test(): # get model object constructor = Constructor() model_file_path = "../../prism_model/smalltest.prism" constructor.parseModelFile(model_file_path) model = constructor.model # set day's value days = range(1, 365*5) # 运用parsed function计算出的结果 parsed_prbs = [] # 运用模型中的数据计算出的真实的结果 prbs = [] # [(sb_fail_prb, s3r_fail_prb)] for day_val in days: # compute the failure probability of modules # get the fail prob function and compute var_day = model.getLocalVar("day") var_day.setValue(day_val) prbs.append(fail_prob_of_model(model, constructor.parser.vfmap)) # get the parsed function and use it to compute the failure probability f_sb = constructor.parser.vfmap["sb_fail_prob"] f_s3r = constructor.parser.vfmap["s3r_fail_prob"] parsed_prbs.append((f_sb(), f_s3r())) # compare assert len(prbs) == len(parsed_prbs) for tuple1, tuple2 in zip(prbs, parsed_prbs): f1, f2 = tuple1 f3, f4 = tuple2 precision = 1e-8 # logger.info("f1={}, f3={}".format(f1, f3)) # logger.info("f2={}, f4={}".format(f2, f4)) assert fabs(f1 - f3) < precision, "day={}, f1={}, f3={}".format(day_val, f1, f3) assert fabs(f2 - f4) < precision, "day={}, f2={}, f4={}".format(day_val, f2, f4)
class Manager(object): def __init__(self): self.mdl_parser = ModelConstructor() self.model = None def input_file(self, file_path): self.model = self.mdl_parser.parseModelFile(file_path)
def get_parsed(self): constructor = ModelConstructor() model = constructor.parseModelFile("../../prism_model/smalltest.prism") return model
from compiler.PRISMParser import ModelConstructor constructor = ModelConstructor() mdl_fl_path = "../../prism_model/smalltest.prism" model = constructor.parseModelFile(mdl_fl_path) assert model.labels["failure"]() is False model.localVars["sb_status"].setValue(0) assert model.labels["failure"]() is True
def buildCommand(): constructor = Constructor() model = constructor.parseModelFile("../../prism_model/CommandTest.prism") return model.modules.values()[0].commands.values()[0]