Изменение параметра pyFMI не меняет вывод симуляции
Я изменяю исходные значения 2 параметров (в диапазоне возможных значений) с помощью pyFMI и моделирую реакцию модели. Я вижу, что на мой ответ влияет только 1 изменение переменной, но не другое, но если я моделирую модель только с По второй переменной (которая не изменяется при начальном моделировании) я отчетливо вижу влияние на реакцию модели.
model.reset()
model=load_fmu('Series_0Resistance.fmu')
tstart = model.get_default_experiment_start_time() #### start time of the model
tstop = model.get_default_experiment_stop_time() #### Stop time of the model
Rshunt=0.09141 # Initial values of parameters ( not affecting the simulation response while simulated with the second parameter)
Rserie=0.00012 # Initial values of parameters (affecting the simulation response)
Rserie_traj = np.array([[tstart,Rserie]])
Rshunt_traj = np.array([[tstart,Rshunt]])
input_object = ('champPV.param2diodes.Rserie',Rserie_traj,
'champPV.param2diodes.Rshunt',Rshunt_traj)
opts = model.simulate_options ()
opts['ncp']=266### The number of output points
opts["CVode_options"]["store_event_points"] = True
model_try=model.simulate(options=opts, input=input_object,final_time=tstop )
results=(model_try['champPV.Pmpp_DC'])
plt.plot(results)
Но если я смоделирую реакцию модели только с помощью параметра (который не влияет на отклик моделирования в приведенном выше случае), я смогу увидеть четкие различия отклика модели. Приветствуются любые подсказки, как решить эту проблему.
global model
model.reset()
model=load_fmu('Series_0Resistance.fmu')
tstart = model.get_default_experiment_start_time() #### start time of the model
tstop = model.get_default_experiment_stop_time() #### Stop time of the model
Rshunt=0.9141 # Initial values of parameters
Rshunt_traj = np.array([[tstart,Rshunt]])
input_object = ('champPV.param2diodes.Rshunt',Rshunt_traj)
opts = model.simulate_options ()
opts['ncp']=266### The number of output points
opts["CVode_options"]["store_event_points"] = True
model_try=model.simulate(options=opts, input=input_object,final_time=tstop )
results=(model_try['champPV.Pmpp_DC'])
plt.plot(results)
1 ответ
Входной объект не определен правильно, он должен быть:
traj = np.array([[tstart,Rserie, Rshunt]])
input_object = (['champPV.param2diodes.Rserie', 'champPV.param2diodes.Rshunt],traj)
Тем не менее, в вашем случае это не нужно, так как вы хотите установить только два параметра, поэтому я бы посоветовал вам просто удалить входной объект и перед вызовом симуляции:
model.set('champPV.param2diodes.Rserie', Rserie)
model.set('champPV.param2diodes.Rshunt', Rshunt)