Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当我运行GEKKO优化时,我得到了一个';FileNotFoundError';_Python_Optimization_Mixed Integer Programming_Gekko - Fatal编程技术网

Python 当我运行GEKKO优化时,我得到了一个';FileNotFoundError';

Python 当我运行GEKKO优化时,我得到了一个';FileNotFoundError';,python,optimization,mixed-integer-programming,gekko,Python,Optimization,Mixed Integer Programming,Gekko,当我运行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.so

当我运行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))
#初始化gekko
模型=GEKKO(远程=假)
#APOPT是一个混合整数非线性问题求解器
model.options.SOLVER=1
模型时间
#APOPT的可选解算器设置
model.solver_options=['minlp_max_iterations 500'\
#整数解的minlp迭代
“minlp_max_iter_,带“int_sol 10”\
#将minlp视为nlp
“minlp_as_nlp 0”\
#nlp子问题最大迭代次数
“nlp_最大迭代次数50”\
#1=深度优先,2=宽度优先
“minlp_分支_方法1”\
#与整数的最大偏差
“最小整数0.05”\
#收敛容限
“最小间隙0.01”]
#参数
X=总光伏机组
k=len(X)
等式=模型参数(值=len(X))
eq1=模型参数(值=1)
#决策变量
#N=model.Var(值=1,lb=1,ub=k,整数=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))
#约束条件
对于范围(N)中的i:
变化_buff=0
对于范围(k)内的j:
vary_buff+=模型中间值(方差(X[j])*Y[i][j])
模型方程(vary[i]==vary\u buff)
对于范围(N)中的i:
covary_buff=0
对于范围(k)内的j:
对于范围(k-1)内的e:
如果j<(e+1):
协变量_buff+=模型中间值(2*协方差(X[j],X[e+1])*Y[i][j]*Y[i][e+1])
模型方程(covary[i]==covary_buff)
对于范围(N)中的i:
模型方程(V[i]==模型中间值(变化[i]+共变[i]))
对于范围(N)中的i:
模型.方程(W[i]==模型.中间(模型.求和(Y[i][:]))
模型方程(模型和(Y)=等式)
对于范围(k)内的i:
模型方程(模型和(Y[:,i])==eq1)
cc=中间模型(模型和([(W[i]*V[i]),适用于范围(N)]内的i)
模型Obj(cc/模型总和(W))
#最小化目标
#model.options.IMODE=3
#model.options.MEAS_CHK=0
model.solve()
#打印结果
打印('---优化问题的结果---')
打印('Y:'+str(Y))
打印('N:'+str(N))
打印('V:'+str(V))
打印('W:'+str(W))
打印('Objective:'+str(model.options.objfcnval))
Python 3.7.2(tags/v3.7.2:9A3FFC0492192018年12月23日23:09:28)[MSC v、 win32上的1916 64位(AMD64)] runfile('C:/Users/chldj/EOJIN/VPP_test.py',wdir='C:/Users/chldj/EOJIN') 后端TkAgg是交互式后端。打开交互模式。 C:/Users/chldj/EOJIN/VPP_test.py:91:DeprecationWarning:elementwise比较失败;这将在将来引发错误。 模型方程(vary[i]==vary\u buff) C:/Users/chldj/EOJIN/VPP_test.py:98:DeprecationWarning:elementwise比较失败;这将在将来引发错误。 模型方程(covary[i]==covary_buff) C:/Users/chldj/EOJIN/VPP_test.py:100:DeprecationWarning:elementwise比较失败;这将在将来引发错误。 模型方程(V[i]==模型中间值(变化[i]+共变[i])) C:/Users/chldj/EOJIN/VPP_test.py:102:DeprecationWarning:elementwise比较失败;这将在将来引发错误。 模型.方程(W[i]==模型.中间(模型.求和(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'
错误:异常:访问冲突
在文件custom_parse.f90的第2391行
回溯:不可用,使用-ftrace=frame或-ftrace=full编译
错误:找不到“results.json”。查看上面的其他错误详细信息
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“C:\pycharm\pycharm社区版2019.2.2\helpers\pydev\\u pydev\u bundle\pydev\u umd.py”,第197行,在runfile中
pydev_imports.execfile(文件名、全局变量、本地变量)#执行脚本
文件“C:\pycharm\pycharm社区版2019.2.2\helpers\pydev\\u pydev\u imps\\u pydev\u execfile.py”,第18行,在execfile中
exec(编译(内容+“\n”,文件,'exec'),全局,loc)
文件“C:/Users/chldj/EOJIN/VPP_test.py”,第114行,在
model.solve()
文件“C:\python\lib\site packages\gekko\gekko.py”,第2145行,在solve中
self.load_JSON()
文件“C:\python\lib\site packages\gekko\gk\u post\u solve.py”,第13行,在load\u JSON中
f=open(os.path.join(self.\u path,'options.json'))
FileNotFoundError:[Errno 2]没有这样的文件或目录:“C:\\Users\\chldj\\AppData\\Local\\Temp\\tmpdgnw5ovqgk\u model0\\options.json”
这是否意味着解是无穷大的? 我认为第一次迭代的和(W)将是0。因此,它可以使目标函数“无穷大”。
如何修复它?

Gekko库中没有函数
方差
协方差
。您需要删除这些函数,而不是使用任何Gekko库函数。一些Numpy函数也允许用于矩阵运算,如
Numpy.dot
。您可以使用诸如来自
Gekko
numpy
的函数组合

从gekko导入gekko
将numpy作为np导入
m=GEKKO()
A=m.Array(m.Var,(4,3))
b=m.Array(m.Param,3,value=1)
x=np.点(A,b)
[m.m.(x[i]**2)对于范围(4)内的i]
m、 求解(disp=False)
印刷品(A)
以下是一份:

  • abs(x)
    绝对值| x|
  • abs2(x)
    带MPCC的绝对值
  • abs3(x)
    开关用带二进制变量的绝对值
  • acos(x)
    反余弦,cos^-1(x)
  • acosh(x)
    反双曲余弦,cosh^-1(x)<