【发布时间】:2019-03-08 08:58:07
【问题描述】:
给定一个在动态建模实验室 (Dymola) 中触发模拟的 Python 脚本。
我的目标是获取模拟轨迹的数据,但采样间隔不同。例如。我希望从 0 秒到 1000 秒的瞬态部分以 1 秒的间隔进行采样,从 1000 秒到 100000 秒的稳态部分以 100 秒的间隔进行采样 ,而不必执行两个具有不同开始时间、停止时间和输出的模拟间隔。
触发瞬态部分模拟的代码摘录:
[result, simulation_result] = dymola.simulateExtendedModel(problem=problem,
initialNames=["input1", "input2", "input3"],
initialValues=[input1, input2, input3],
finalNames=output_names,
outputInterval=1,
startTime=0,
stopTime=1000,
resultFile=result_filename)
trajectory_size_transient = dymola.readTrajectorySize("simulation_result_python.mat")
sim_res_transient = np.array(dymola.readTrajectory("simulation_result_python.mat",
output_names,
trajectory_size_transient))
模拟稳态的代码:
[result, simulation_result] = dymola.simulateExtendedModel(problem=problem,
initialNames=["input1", "input2", "input3"],
initialValues=[input1, input2, input3],
finalNames=output_names,
outputInterval=100,
startTime=1000,
stopTime=10000,
resultFile=result_filename)
trajectory_size_steady = dymola.readTrajectorySize("simulation_result_python.mat")
sim_res_steady = np.array(dymola.readTrajectory("simulation_result_python.mat",
output_names,
trajectory_size_steady))
值“outputInterval”是结果写入轨迹的间隔。正如所见,我必须执行两次模拟并稍后将结果堆叠起来。我宁愿用两个不同的“outputInterval”值进行一个模拟并设置
startTime=0
stopTime=10000
这样我就可以从一个模拟中获得两条轨迹。
有人知道这是否可能吗?或者也许有其他方法?
【问题讨论】: