Как сделать код gekko более эффективнымPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как сделать код gekko более эффективным

Сообщение Anonymous »

Мне нужно решить следующую проблему
Изображение

Я переписал задачу в Gekko на непрерывную оптимизацию вот так:

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

pt_values = dataframe.select("pt").to_numpy().ravel()
rt_values= dataframe.select("rt").to_numpy().ravel()
number_periods = df.shape[0]
# initialize gekko
m = GEKKO(remote=True)
# set time periods
m.time = np.linspace(0, number_periods-1, number_periods )
# Variables
kt =m.SV(value=ks,lb=0,ub=k_overline,integer=True)
rev_t =m.SV(value=revs)
zt = m.Var(value=zs, lb=-k_overline, ub=r_overline, integer=False)
pt = m.Param(value=pt_value)
rt = m.Param(value=rt_value)

#equations
m.Equation(kt.dt()==m.if3(rt-zt,m.max2(rt-zt,-hr),m.min2(m.min2(k_overline-kt+kt.dt(), rt-zt), hr)))
m.Equation(rev_t.dt()==zt*pt)
#restrictions on zt
m.Equation(kt-kt.dt()+rt>=zt)
p = np.zeros(number_periods)
p[-1] = 1.0
final = m.Param(value=p)

m.Maximize(rev_t*final)
m.options.IMODE = 6
m.solve(disp=False, debug=0)
Проблема в том, что мой df.shape[0]=8000. Это очень много. По этой причине я перешел на сплошные выражения. Дискретная настройка очень быстро выходит из строя. Однако это все еще проблема. Жду предложений, как улучшить. Я готов перейти на другие пакеты оптимизации.

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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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