Почему выходные данные модели Gekko ARX не совпадают с выходными данными регрессии SysId?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Почему выходные данные модели Gekko ARX не совпадают с выходными данными регрессии SysId?

Сообщение Anonymous »

*Отредактировано 23.09.24 с целью добавления дополнительной информации.
  • Я запустил это снова после перезапуска своего блокнота Jupyter, и он вернул результаты. Я ожидал. Однако если я запущу полный сценарий, указанный в ссылке ниже, который включает пошаговый тест, а затем попытаюсь снова запустить процедуру проверки, я получу ошибочные результаты, описанные ниже. Может ли это иметь какое-то отношение к тому, как инициализируется модель и остаточные настройки?
Я пытаюсь проверить модель динамического процесса, созданную с использованием Однако результаты, которые я вижу, не имеют смысла или, по крайней мере, не соответствуют моим ожиданиям.
Чтобы продемонстрировать результаты, которые я получаю, Я буду использовать пример из руководств APMonitor:
https://apmonitor.com/do/index.php/Main ... earControl
Я запускаю пример и использую выходные данные. процедуры sysid для создания словаря коэффициентов p и выходных данных регрессии y. Затем я создаю модель arx, используя p, и определяю входные данные (u) такими же, как входные данные, используемые для генерации p и y. После запуска решателя я ожидал, что прогнозируемый результат yc будет таким же, как y, но вместо этого я получаю нечто совершенно иное.
Что-то я делаю неправильно?
Вот код, используемый для генерации исходного вывода, и словарь коэффициентов, стр.

Код: Выделить всё

# load data and parse into columns
url = 'http://apmonitor.com/do/uploads/Main/cstr_step_tests.txt'
data = pd.read_csv(url)
print(data.head())

# generate time-series model
t = data['Time']
u = data['Tc']
y = data['T']
m = GEKKO(remote=False)

# system identification
na = 2 # output coefficients
nb = 2 # input coefficients
yp,p,K = m.sysid(t,u,y,na,nb,shift='init',scale=True,objf=100,diaglevel=1)

# plot results of fitting
plt.figure()
plt.subplot(2,1,1)
plt.plot(t,u)
plt.legend([r'$T_c$'])
plt.ylabel('MV')
plt.subplot(2,1,2)
plt.plot(t,y)
plt.plot(t,yp)
plt.legend([r'$T_{meas}$',r'$T_{pred}$'])
plt.ylabel('CV')
plt.xlabel('Time')
plt.savefig('sysid.png')
Изображение

Я тогда запустите код пошагового теста:

Код: Выделить всё

# step test model
yc,uc = m.arx(p)

# rename MV and CV
Tc = uc[0]
T = yc[0]

# steady state initialization
m.options.IMODE = 1
Tc.value = 300
m.solve(disp=False)

# dynamic simulation (step test validation)
m.time = np.linspace(0,2,21)
m.options.IMODE = 4
Tc.value = np.ones(21)*300
Tc.value[5:] = 305
m.solve(disp=False)

plt.figure()
plt.subplot(2,1,1)
plt.title('Step Test')
plt.plot(m.time,Tc.value,'b-',label='Cooling Jacket')
plt.ylabel(r'$T_c (K)$')
plt.legend()
plt.subplot(2,1,2)
plt.plot(m.time,T.value,'r-',label='Reactor')
plt.ylabel('T (K)')
plt.xlabel('Time (min)')
plt.legend()

plt.show()
И, наконец, я запускаю следующий код, используемый для проверки коэффициентов с помощью исходных входных данных:

Код: Выделить всё

# step test model
yc,uc = m.arx(p)

# rename MV and CV
Tc = uc[0]
T = yc[0]

# steady state initialization
m.options.IMODE = 1
Tc.value = 300
m.solve(disp=False)

# dynamic simulation
m.time = np.linspace(0,50,501)
Tc.value = data['Tc'].values
m.options.IMODE = 4
m.solve(disp=False)

plt.figure()
plt.subplot(2,1,1)
plt.title('Step Test')
plt.plot(m.time,Tc.value,'b-',label='Cooling Jacket')
plt.ylabel(r'$T_c (K)$')
plt.legend()
plt.subplot(2,1,2)
plt.plot(m.time,T.value,'r-',label='Reactor')
plt.ylabel('T (K)')
plt.xlabel('Time (min)')
plt.legend()

plt.show()
Изображение

Как вы Как видите, выходные данные «проверки» не совпадают с выходными данными регрессии на этапе идентификации системы.
Если я пропущу код пошагового теста, я получу выходные данные, которые соответствует исходному предсказанию. Почему выполнение пошагового теста приводит к ошибочным результатам?

Подробнее здесь: https://stackoverflow.com/questions/790 ... ion-output
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Почему выходные данные модели Gekko ARX не совпадают с выходными данными регрессии SysId?
    Anonymous » » в форуме Python
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Почему выходные данные модели Gekko ARX не совпадают с выходными данными регрессии SysId?
    Anonymous » » в форуме Python
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Почему выходные данные модели Gekko ARX не совпадают с выходными данными регрессии SysId?
    Anonymous » » в форуме Python
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Почему выходные данные модели Gekko ARX не совпадают с выходными данными регрессии SysId?
    Anonymous » » в форуме Python
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Gekko зависает при моделировании модели ARX
    Anonymous » » в форуме Python
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»