Изменение параметра 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)
Другие вопросы по тегам