Я работаю над реализацией проблемы Brachistochrone в Pyomo, используя оптимизацию Чебышева, как определено в эта статья.
Начальные условия задачи утверждают, что x (0) = y (0) = 0.
Однако как только я запускаю код, я получаю следующую ошибку
Ошибка при оценке ограничения 1: невозможно оценить sqrt '(0).
Я записал свои переменные как
def x_initialize (model,i):
return 0.5*(i/value(m.n))
m.x = Var(m.N, within = NonNegativeReals, initialize = x_initialize)
def y_initialize (model,i):
return 0.5*((i)/value(m.n))
m.y = Var(m.N, within = NonNegativeReals, initialize = y_initialize)
и
def f_x_definition(model, i):
return m.f_x[i] == sqrt(2*g*m.y[i])*cos(m.angle[i])
m.f_x_const = Constraint(m.N, rule = f_x_definition)
def f_y_definition(model, i):
return m.f_y[i] == sqrt(2*g*m.y[i])*sin(m.angle[i])
m.f_y_const = Constraint(m.N, rule = f_y_definition)
Я попытался добавить небольшое число в def x_initialize (model, i): и def y_initialize (model, i): для компенсации, но затем программа вернула ошибку сбоя восстановления. Другая попытка заключалась в использовании ** (1/2) вместо sqrt, но это тоже не сработало.
Я не могу придумать другого решения этой проблемы.
С Уважением.