当我运行GEKKO优化时,出现了“ FileNotFoundError” - python

当我运行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(tags / v3.7.2:9a3ffc0492,2018年12月23日,23:09:28)[MSC
v.1916 64位(AMD64)]在win32上
运行文件('C:/Users/chldj/EOJIN/VPP_test.py',wdir ='C:/ Users / chldj / EOJIN')
后端TkAgg是交互式后端。打开交互模式。
C:/Users/chldj/EOJIN/VPP_test.py:91:DeprecationWarning:逐元素比较失败;将来会出现错误。
model.Equation(vary [i] == variant_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(vary [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'

这是否意味着解决方案是无限的?
我认为第一次迭代的sum(W)将为0。因此它可以使目标函数“无穷大”。
我该如何解决?

参考方案

函数variancecovariance不在Gekko库中。您将需要删除这些函数,而是使用任何Gekko库函数。某些Numpy函数也允许用于矩阵运算,例如numpy.dot。您可以使用功能组合,例如Gekkonumpy

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)

这是一个list of Gekko functions:

abs(x)绝对值| x |
MPCC的abs2(x)绝对值
abs3(x)绝对值,带有用于开关的二进制变量
acos(x)反余弦,cos ^ -1(x)
acosh(x)反双曲余弦cosh ^ -1(x)
Array(type,size) GEKKO对象的数组
arx自回归外生输入(时间序列)模型
asin(x)反正弦,sin ^ -1(x)
asinh(x)反双曲正弦,sinh ^ -1(x)
atan(x)反正切,tan ^ -1(x)
atanh(x)反双曲正切,tanh ^ -1(x)
bspline bspline用于2D数据
cos(x)余弦
一维数据的cspline三次样条
erf(x)错误功能
erfc(x)互补误差函数
exp(x) e ^ x
if3(cond,x1,x2)在x1(cond = 0)之间切换
log(x) log_e(x),自然对数
log10(x) log_10(x),以10为底的日志
MPCC的max2(x1,x2)最大值
max3(x1,x2)最大值,带有用于开关的二进制变量
MPCC的min2(x1,x2)最小值
min3(x1,x2)最小值,带有用于开关的二进制变量
periodic周期性(初始=最终),用于解决动态问题
pwl分段线性函数
具有MPCC的sign2(x)信号运算符
sign3(x)符号运算符,带有用于开关的二进制变量
sin(x)正弦
sinh(x)双曲正弦
sqrt(x)平方根
state_space连续/离散和密集/稀疏状态空间
sum列表或numpy数组中元素的总和
tan(x)切线
tanh(x)双曲正切
vsum(x)数据方向上单个变量的垂直和

其他函数,例如variancecovariance不在函数库中。

R'relaimpo'软件包的Python端口 - python

我需要计算Lindeman-Merenda-Gold(LMG)分数,以进行回归分析。我发现R语言的relaimpo包下有该文件。不幸的是,我对R没有任何经验。我检查了互联网,但找不到。这个程序包有python端口吗?如果不存在,是否可以通过python使用该包? python参考方案 最近,我遇到了pingouin库。

Python:传递记录器是个好主意吗? - python

我的Web服务器的API日志如下:started started succeeded failed 那是同时收到的两个请求。很难说哪一个成功或失败。为了彼此分离请求,我为每个请求创建了一个随机数,并将其用作记录器的名称logger = logging.getLogger(random_number) 日志变成[111] started [222] start…

Python-Excel导出 - python

我有以下代码:import pandas as pd import requests from bs4 import BeautifulSoup res = requests.get("https://www.bankier.pl/gielda/notowania/akcje") soup = BeautifulSoup(res.cont…

Python:如何根据另一列元素明智地查找一列中的空单元格计数? - python

df = pd.DataFrame({'user': ['Bob', 'Jane', 'Alice','Jane', 'Alice','Bob', 'Alice'], 'income…

Python pytz时区函数返回的时区为9分钟 - python

由于某些原因,我无法从以下代码中找出原因:>>> from pytz import timezone >>> timezone('America/Chicago') 我得到:<DstTzInfo 'America/Chicago' LMT-1 day, 18:09:00 STD…