когда я запускаю оптимизацию GEKKO, я получаю 'FileNotFoundError' - PullRequest
3 голосов
/ 12 марта 2020

когда я запускаю оптимизацию GEKKO, я получил 'FileNotFoundError', пожалуйста, дайте мне знать, как с этим справиться. Есть ли проблема в моем коде? Y - двоичная целочисленная переменная решения.

#initialize gekko
model = GEKKO(remote=False)
#APOPT is an Mixed Integer Nonlinear Problem solver
model.options.SOLVER = 1
model.time
#optional solver settings with APOPT
model.solver_options = ['minlp_maximum_iterations 500', \
                    # minlp iterations with integer solution
                    'minlp_max_iter_with_int_sol 10', \
                    # treat minlp as nlp
                    'minlp_as_nlp 0', \
                    # nlp sub-problem max iterations
                    'nlp_maximum_iterations 50', \
                    # 1 = depth first, 2 = breadth first
                    'minlp_branch_method 1', \
                    # maximum deviation from whole number
                    'minlp_integer_tol 0.05', \
                    # covergence tolerance
                    'minlp_gap_tol 0.01']

#parameter
X = total_PV_set
k = len(X)
eq = model.Param(value=len(X))
eq1 = model.Param(value=1)

#Decision Variable
# N = model.Var(value=1, lb=1, ub=k, integer=True)
N = 3
Y = model.Array(model.Var, (N, k), lb=0, ub=1, integer=True)
V = model.Array(model.Var, (N, 1))
W = model.Array(model.Var, (N, 1))
vary = model.Array(model.Var, (N, 1))
covary = model.Array(model.Var, (N, 1))

#Constraints
for i in range(N):
    vary_buff = 0
    for j in range(k):
        vary_buff += model.Intermediate(variance(X[j]) * Y[i][j])
    model.Equation(vary[i] == vary_buff)
for i in range(N):
    covary_buff = 0
    for j in range(k):
        for e in range(k-1):
            if j < (e+1):
                covary_buff += model.Intermediate(2*covariance(X[j], X[e+1])*Y[i][j]*Y[i][e+1])
    model.Equation(covary[i] == covary_buff)
for i in range(N):
    model.Equation(V[i] == model.Intermediate(vary[i]+covary[i]))
for i in range(N):
    model.Equation(W[i] == model.Intermediate(model.sum(Y[i][:])))
model.Equation(model.sum(Y) == eq)
for i in range(k):
    model.Equation(model.sum(Y[:, i]) == eq1)


cc = model.Intermediate(model.sum([(W[i]*V[i]) for i in range(N)]))
model.Obj(cc/model.sum(W))

#minimize objective
# model.options.IMODE = 3
# model.options.MEAS_CHK = 0
model.solve()

#Print the results
print ('--- Results of the Optimization Problem ---')
print('Y: '+str(Y))
print('N: '+str(N))
print('V: '+str(V))
print('W: '+str(W))
print('Objective: '+str(model.options.objfcnval))

Python 3.7.2 (теги / v3.7.2: 9a3ffc0492, De c 23 2018, 23:09:28) [MSC v .1916 64 бит (AMD64)] в run32-файле win32 ('C: / Users / chldj / EOJIN / VPP_test.py', wdir = 'C: / Users / chldj / EOJIN') Backend TkAgg является интерактивным бэкэндом. Включение интерактивного режима. C: / Users / chldj / EOJIN / VPP_test.py: 91: DeprecationWarning: поэлементное сравнение не удалось; это вызовет ошибку в будущем. model.Equation (var [i] == var_buff) C: / Users / chldj / EOJIN / VPP_test.py: 98: DeprecationWarning: поэлементное сравнение не удалось; это вызовет ошибку в будущем. model.Equation (covary [i] == covary_buff) C: / Users / chldj / EOJIN / VPP_test.py: 100: DeprecationWarning: поэлементное сравнение не удалось; это вызовет ошибку в будущем. model.Equation (V [i] == model.Intermediate (var [i] + covary [i])) C: / Users / chldj / EOJIN / VPP_test.py: 102: DeprecationWarning: поэлементное сравнение не удалось; это вызовет ошибку в будущем. model.Equation (W [i] == model.Intermediate (model.sum (Y [i] [:]))) ---------------------- ------------------------------------------ APMonitor, версия 0.9.2 Оптимизация APMonitor Люкс ------------------------------------------------- ---------------

Error: Exception: Access Violation
At line 2391 of file custom_parse.f90
Traceback: not available, compile with -ftrace=frame or -ftrace=full
Error: 'results.json' not found. Check above for additional error details
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "C:\pycharm\PyCharm Community Edition 2019.2.2\helpers\pydev\_pydev_bundle\pydev_umd.py", line 197, in runfile
    pydev_imports.execfile(filename, global_vars, local_vars)  # execute the script
  File "C:\pycharm\PyCharm Community Edition 2019.2.2\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
    exec(compile(contents+"\n", file, 'exec'), glob, loc)
  File "C:/Users/chldj/EOJIN/VPP_test.py", line 114, in <module>
    model.solve()
  File "C:\python\lib\site-packages\gekko\gekko.py", line 2145, in solve
    self.load_JSON()
  File "C:\python\lib\site-packages\gekko\gk_post_solve.py", line 13, in load_JSON
    f = open(os.path.join(self._path,'options.json'))
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\chldj\\AppData\\Local\\Temp\\tmpdgnw5ovqgk_model0\\options.json'

Значит ли это, что решение - это бесконечность? Я думаю, что сумма 1-й итерации (W) будет равна 0., поэтому она может сделать целевую функцию «бесконечностью». как я могу это исправить?

1 Ответ

1 голос
/ 17 марта 2020

Функции variance и covariance отсутствуют в библиотеке Gekko. Вам нужно будет удалить эти функции и вместо этого использовать любую из библиотечных функций Gekko. Некоторые функции Numpy также разрешены для матричных операций, например numpy.dot. Вы можете использовать комбинацию функций, таких как Gekko и numpy.

from gekko import GEKKO
import numpy as np
m = GEKKO()
A = m.Array(m.Var,(4,3))
b = m.Array(m.Param,3,value=1)
x = np.dot(A,b)
[m.Minimize(x[i]**2) for i in range(4)]
m.solve(disp=False)
print(A)

Вот список функций Gekko :

  • abs(x) абсолютное значение | x |
  • abs2(x) абсолютное значение с MP CC
  • abs3(x) абсолютное значение с двоичной переменной для переключателя
  • acos(x) обратное косинус, cos ^ -1 (x)
  • acosh(x) обратная гиперболи c косинус, cosh ^ -1 (x)
  • Array(type,size) массив объектов GEKKO
  • arx модель авторегрессивного экзогенного ввода (временные ряды)
  • asin(x) обратный синус, грех ^ -1 (x)
  • asinh(x) обратная гиперболи c синус, sinh ^ -1 (x)
  • atan(x) обратная касательная, загар ^ -1 (x)
  • atanh(x) обратная гиперболи c касательная, загар ^ -1 (x)
  • bspline bspline для 2D данных
  • cos(x) косинус
  • cspline cubi c сплайн для 1D данных
  • erf(x) функция ошибок
  • erfc(x) дополнительная функция ошибок
  • exp(x) e ^ x
  • if3(cond,x1,x2) переключение между x1 (cond <0) и x2 (cond> = 0)
  • log(x) log_e (x), натуральный журнал
  • log10(x) log_10 (x), основание журнала 10
  • max2(x1,x2) максимальное значение с MP CC
  • max3(x1,x2) максимальное значение с двоичной переменной для переключателя
  • min2(x1,x2) минимальное значение с MP CC
  • min3(x1,x2) минимальное значение с двоичным переменная для переключателя
  • periodic periodi c (начальная = конечная) для динамических c задач
  • pwl кусочно-линейная функция
  • sign2(x) оператор signum с MP CC
  • sign3(x) оператор signum с двоичной переменной для переключателя
  • sin(x) синус
  • sinh(x) гипербол c синус
  • sqrt(x) квадрат root
  • state_space непрерывное / дискретное и плотное / разреженное пространство состояний
  • sum суммирование элементов в списке или numpy массив
  • tan(x) касательная
  • tanh(x) гиперболи c касательная
  • vsum(x) вертикальная сумма одной переменной в направлении данных

Другие функции, такие как variance и covariance, не включены библиотека функций.

...