pyFMI Python模拟不同数量的输出点

时间:2018-11-16 14:07:19

标签: python optimization modelica dymola fmi

如何精确控制模型输出的数量

我根据不同的输入参数获得不同数量的输出点:

@Injectable({ providedIn: 'root' })

foo是将参数转换为righ格式的函数 thetaInit是参数的初始值

model = load_fmu("Trial.fmu") # 64 Bit generated FMU with Dymola+Buildsyspro 
tstart = model.get_default_experiment_start_time() #### START TIME 
tstop  =  model.get_default_experiment_stop_time() #### STOP TIME
opts = model.simulate_options () # Setting the output number of outputs
opts['ncp']=194 ## Want to have exactly 194 data points

通过将它们乘以0.9来更改初始参数值

results=model.simulate(input=foo(thetaInit),options=opts, start_time=tstart, final_time=tstop)

len(results['DC_Power')
267

对于校准问题,我需要具有相同数量的输出点。如果有人知道如何控制它。

1 个答案:

答案 0 :(得分:4)

正如汉斯指出的那样,额外的分数可能是由于默认情况下存储在ncp顶部的事件引起的。可以使用以下方法来禁用事件点的存储:

model = load_fmu(...)
opts = model.simulate_options()
opts["CVode_options"]["store_event_points"] = False

res = model.simulate(options=opts)