繁体   English   中英

GEKKO - 超时错误 - ImportError: No solution or server unreachable

[英]GEKKO - timeout error - ImportError: No solution or server unreachable

我正在尝试使用 GEKKO 解决 MINLP 问题。 我的代码类似于Gekko 中的代码:MINLP - Error options.json file not found 它一直运行良好,直到今天早上似乎找不到解决方案。 我收到以下错误:(我在 Windows 上工作)

回溯(最后一次调用):文件“C:\Users\Zineb\AppData\Local\Programs\Python\Python37\lib\urllib\request.py”,第 1350 行,在 do_open encode_chunked=req.has_header('Transfer- encoding')) 文件“C:\Users\Zineb\AppData\Local\Programs\Python\Python37\lib\http\client.py”,第 1277 行,在请求中 self._send_request(method, url, body, headers, encode_chunked ) 文件“C:\Users\Zineb\AppData\Local\Programs\Python\Python37\lib\http\client.py”,第 1323 行,_send_request self.endheaders(body, encode_chunked=encode_chunked) 文件“C:\Users \Zineb\AppData\Local\Programs\Python\Python37\lib\http\client.py”,第 1272 行,在 endheaders self._send_output(message_body, encode_chunked=encode_chunked) 文件“C:\Users\Zineb\AppData\Local\ Programs\Python\Python37\lib\http\client.py”,第 1032 行,在 _send_output self.send(msg) 文件“C:\Users\Zineb\AppData\Local\Programs\Python\Python37\lib\http\client .py”,第 972 行,在发送 self.connect() 文件“C:\Users\Zineb\AppData\Local\Program s\Python\Python37\lib\http\client.py”,第 944 行,在连接(self.host,self.port),self.timeout,self.source_address)文件“C:\Users\Zineb\AppData\Local \Programs\Python\Python37\lib\socket.py",第 728 行,在 create_connection 中引发错误文件 "C:\Users\Zineb\AppData\Local\Programs\Python\Python37\lib\socket.py",第 716 行,在 create_connection sock.connect(sa) TimeoutError: [WinError 10060] Une tentative de connexion a échoué car le parti connecté n'a pas répondu convenablement au-delà d'une certaine durée ou une connexion établie a échoué car l'hôte de connexion n'a pas répondu 在处理上述异常期间,发生了另一个异常: Traceback(最近一次调用最后一次):File "C:\Users\Zineb\AppData\Local\Programs\Python\Python37\lib\site-packages\gekko \gekko.py",第 2190 行,求解结果 = byte2str(get_file(self._server,self._model_name,'results.json')) 文件“C:\Users\Zineb\AppData\Local\Programs\Python\Python37 \lib\site-packages\gekko\apm.py",第 154 行,在 get_file Z957B527BC FBAD2E80F58D20683931435Z = get_ip(server) File "C:\Users\Zineb\AppData\Local\Programs\Python\Python37\lib\site-packages\gekko\apm.py",第 144 行,在 get_ip f = urllib.request.urlopen (url_base) 文件“C:\Users\Zineb\AppData\Local\Programs\Python\Python37\lib\urllib\request.py”,第 222 行,在 urlopen 返回 opener.open(url, data, timeout) 文件“C :\Users\Zineb\AppData\Local\Programs\Python\Python37\lib\urllib\request.py",第 525 行,打开响应 = self._open(req, data) 文件“C:\Users\Zineb\AppData \Local\Programs\Python\Python37\lib\urllib\request.py",第 543 行,在 _open '_open',req) 文件 "C:\Users\Zineb\AppData\Local\Programs\Python\Python37\lib\ urllib\request.py”,第 503 行,在 _call_chain 结果 = func(*args) 文件“C:\Users\Zineb\AppData\Local\Programs\Python\Python37\lib\urllib\request.py”,第 1378 行,在 http_open 返回 self.do_open(http.client.HTTPConnection, req) 文件“C:\Users\Zineb\AppData\Local\Programs\Python\Python37\lib\urllib\request.py”,第 1352 行,在 do_open 中引发 URLError ( err) urllib.error.URLError: <urlopen error [WinError 10060] Une tentative de connexion a échoué car le parti connecté n'a pas répondu convenablement au-delà d'une certaine durée ou une connexion établie a échoué car l'hôte de connexion n'a pas répondu> 在处理上述异常期间,发生了另一个异常: Traceback(最近一次调用最后一次):文件“recent_issue_gekko.py”,第 242 行,在 Optimise_G(t,ob, jofbuses, q, qc, s , oa, k, l, T, G_previous, C, Y, G_previous, G_max, G_min) 文件“recent_issue_gekko.py”,第 134 行,在 Optimise_G sol = MINLP(xinit, A, B, A_eq, B_eq, LB,UB , t, ob, jofbuses, q, qc, s, oa, k, l, T, G_previous, C, Y, G_previous) 文件“recent_issue_gekko.py”,第 190 行,在 MINLP m_IPOPT.solve(disp = True) 文件中“C:\Users\Zineb\AppData\Local\Programs\Python\Python37\lib\site-packages\gekko\gekko.py”,第 2208 行,在求解中使用 m.solve(disp=True) 显示错误。\ n'+\ ImportError: No solution or server unr 可以的。 使用 m.solve(disp=True) 显示错误。 尝试使用 m=GEKKO(remote=False) 进行本地求解。

这是我的代码:

import numpy as np 
from gekko import GEKKO

# Define matrices A,A_eq, and vectors b, b_eq for the optimization

def Optimise_G(t,ob, jofbuses, q, qc, s, oa, k, l, T, G_next, C, Y, G_previous, G_max, G_min):
    Mbig_1 = T*C
    Mbig_2 = C
    nb_phases = len(G_next)
    b_max = len(t)
    no_lanegroups = len(q)

    A_eq = np.zeros(((nb_phases+1)*b_max + 1, (3*nb_phases+3)*b_max+nb_phases))
    for i in range(nb_phases):
        A_eq[0][i] = 1

    B_eq = np.zeros((nb_phases+1)*b_max + 1)
    B_eq[0] = C - sum(Y[0:nb_phases])

    counter_eq = 0

    # G(i)=Ga(i,b)+Gb(i,b)+Gc(i,b)
    for b in range(b_max):
        for i in range(nb_phases):
            counter_eq = counter_eq + 1
            A_eq[counter_eq][i] = 1
            A_eq[counter_eq][nb_phases*(b+1)+ i] = -1
            A_eq[counter_eq][nb_phases*b_max + nb_phases*(b+1) + i] = -1
            A_eq[counter_eq][2*nb_phases*b_max + nb_phases*(b+1) + i] = -1


    # ya(b)+y(b)+y(c)=1
    for b in range(b_max):
        counter_eq = counter_eq + 1
        A_eq[counter_eq][3*nb_phases*b_max + nb_phases + b] = 1
        A_eq[counter_eq][(3*nb_phases+1)*b_max + nb_phases + b] = 1
        A_eq[counter_eq][(3*nb_phases+2)*b_max + nb_phases + b] = 1
        B_eq[counter_eq] = 1


    A = np.zeros((no_lanegroups + (2*3*nb_phases+4)*b_max, (3*nb_phases+3)*b_max+nb_phases))
    B = np.zeros(no_lanegroups + (2*3*nb_phases+4)*b_max)

    counter = -1

    # Sum Gi (i in Ij)>=Gj,min
    for j in range(no_lanegroups):
        counter = counter + 1
        for i in range(k[j], l[j]+1):
            A[counter][i-1] = -1
        B[counter] = -C*qc[j]/s[j]

    # ya(b)G_lb(i)<=Ga(i,b), yb(b)G_lb(i)<=Gb(i,b), yc(b)G_lb(i)<=Gc(i,b)
    for b in range(b_max): 
        for i in range(nb_phases):
            counter = counter + 1
            A[counter][nb_phases*(b+1)+i] = -1
            A[counter][3*nb_phases*b_max + nb_phases + b] = G_min[i]
            B[counter] = 0
    
            counter = counter + 1
            A[counter][nb_phases*b_max + nb_phases*(b+1) + i] = -1
            A[counter][(3*nb_phases+1)*b_max + nb_phases + b] = G_min[i]
            B[counter] = 0
    
            counter = counter + 1
            A[counter][2*nb_phases*b_max + nb_phases*(b+1) +i] = -1
            A[counter][(3*nb_phases+2)*b_max + nb_phases + b] = G_min[i]
            B[counter] = 0
    
    # ya(b)Gmax(i)>=Ga(i,b), yb(b)Gmax(i)>=Gb(i,b), yc(b)Gmax(i)>=Gc(i,b)
    for b in range(b_max):
        for i in range(nb_phases):
            counter = counter + 1
            A[counter][nb_phases*(b+1) +i] = 1
            A[counter][3*nb_phases*b_max + nb_phases + b] = -G_max[i]
            B[counter] = 0
    
            counter = counter + 1
            A[counter][nb_phases*b_max + nb_phases*(b+1) + i] = 1
            A[counter][(3*nb_phases+1)*b_max + nb_phases + b] = -G_max[i]
            B[counter] = 0
    
            counter = counter + 1
            A[counter][2*nb_phases*b_max + nb_phases*(b+1) +i] = 1
            A[counter][(3*nb_phases+2)*b_max + nb_phases + b] = -G_max[i]
            B[counter] = 0  
    
    # (1-yc(b))t(b)<=(T-1)C+sum(Gi(1:l(jofbuses(b))))+sum(Y(1:l(jofbuses(b))-1))
    for b in range(b_max):
        counter = counter + 1
        A[counter][0:l[jofbuses[b]-1]] = -np.ones((1,l[jofbuses[b]-1]))
        A[counter][(3*nb_phases+2)*b_max+nb_phases+b] = -t[b]
        B[counter] = -t[b] + (T-1)*C + sum(Y[0:l[jofbuses[b]-1]-1])

    # (T-1)C+sum(Gi(1:l(jofbuses(b))))+sum(Y(1:l(jofbuses(b))-1))<=yc(b)t(b)+(1-yc(b))Mbig_1
    for b in range(b_max):
        counter = counter + 1
        A[counter][0:l[jofbuses[b]-1]] = np.ones((1,l[jofbuses[b]-1]))
        A[counter][(3*nb_phases+2)*b_max+nb_phases+b] = -t[b] + Mbig_1
        B[counter] = Mbig_1 - (T-1)*C - sum(Y[0:l[jofbuses[b]-1]-1])


    # -Mbig_2(1-yb(b))<=db(b)=right-hand side of Equation (6)
    for b in range(b_max):
        counter = counter + 1
        constant = q[jofbuses[b]-1]/s[jofbuses[b]-1]*(t[b] - (T-1)*C + sum(G_previous[l[jofbuses[b]-1]:nb_phases]) + sum(Y[l[jofbuses[b]-1] -1:nb_phases]))+ (T-1)*C + sum(Y[0:k[jofbuses[b]-1]-1]) - t[b]  
        A[counter][0:k[jofbuses[b]-1]-1] = -np.ones((1,k[jofbuses[b]-1]-1))
        A[counter][(3*nb_phases+1)*b_max + nb_phases + b] = Mbig_2
        B[counter] = constant + Mbig_2


    # db(b)<=Mbig_2 yb(b)
    for b in range(b_max):
        counter = counter + 1
        constant = q[jofbuses[b]-1]/s[jofbuses[b]-1]*(t[b] - (T-1)*C +sum(G_previous[l[jofbuses[b]-1]:nb_phases]) + sum(Y[l[jofbuses[b]-1] -1:nb_phases]))+ (T-1)*C + sum(Y[0:k[jofbuses[b]-1]-1]) - t[b]  
        A[counter][0:k[jofbuses[b]-1]-1] = np.ones((1,k[jofbuses[b]-1]-1))
        A[counter][(3*nb_phases+1)*b_max + nb_phases + b] = -Mbig_2
        B[counter] = -constant

    #Lower Bound LB
    LB_zeros = np.zeros(3*b_max*(nb_phases+1))
    G_min = np.array(G_min)
    LB = np.append(G_min, LB_zeros)

    #Upper Bound UB
    UB = np.ones(3*b_max)
    G_max = np.array(G_max)
    for i in range(3*b_max+1):
        UB = np.concatenate((G_max,UB))

    xinit = np.array([(a+b)/2 for a, b in zip(UB, LB)])
    sol = MINLP(xinit, A, B, A_eq, B_eq, LB ,UB, t, ob, jofbuses, q, qc, s, oa, k, l, T, G_previous, C, Y, G_previous)

def objective_fun(x, t, ob, jofbuses, q, qc, s, oa, k, l, T, G_next, C, Y, G_previous):
    nb_phases = len(G_next)
    b_max = len(t)
    no_lanegroups = len(q)
    obj = 0
    obj_a = 0
    obj_b = 0

    G = x[0:nb_phases]

    for j in range(no_lanegroups):
        delay_a = 0.5*q[j]/(1-q[j]/s[j]) * (pow((sum(G_previous[l[j]:nb_phases]) + sum(G[0:k[j]-1]) + sum(Y[l[j]-1:nb_phases]) + sum(Y[0:k[j]-1])),2) + pow(sum(G[l[j]:nb_phases]) + sum(G_next[0:k[j]-1]) + sum(Y[l[j]-1:nb_phases]) + sum(Y[0:k[j]-1]),2))   

        obj = obj + oa*delay_a
        obj_a = obj_a + oa*delay_a
     
    for b in range(b_max): 

        delay_b1 = x[(3*nb_phases+1)*b_max + nb_phases + b]*(q[jofbuses[b]-1]/s[jofbuses[b]-1] * (t[b] - (T-1)*C + sum(G_previous[l[jofbuses[b]-1]:nb_phases]) + sum(Y[l[jofbuses[b]-1] -1:nb_phases])) + (T-1)*C - t[b] + sum(Y[0:k[jofbuses[b]-1]-1])) 
        delay_b2 = x[(3*nb_phases+2)*b_max + nb_phases + b-1]*(q[jofbuses[b]-1]/s[jofbuses[b]-1] * (t[b] - (T-1)*C - sum(Y[0:l[jofbuses[b]-1]-1])) + T*C + sum(G_next[0:k[jofbuses[b]-1]-1]) + sum(Y[0:k[jofbuses[b]-1]-1]) - t[b]) 
        delay_b3 = sum(x[nb_phases*b_max + nb_phases*b:nb_phases*b_max + nb_phases*b+k[jofbuses[b]-1]-1]) - q[jofbuses[b]-1]/s[jofbuses[b]-1]*sum(x[2*nb_phases*b_max + nb_phases*b:2*nb_phases*b_max + nb_phases*b +l[jofbuses[b]-1]])
        delay_b = delay_b1+delay_b2 +delay_b3 

        obj = obj + delay_b*ob[b]
        obj_b = obj_b + delay_b*ob[b]
    return obj
 
def MINLP(xinit, A, B, A_eq, B_eq, LB ,UB, t, ob, jofbuses, q, qc, s, oa, k, l, T, G_next, C, Y, G_previous):
    nb_phases = len(G_next)
    b_max = len(t)
    m_APOPT = GEKKO(remote = True)
    m_APOPT.options.SOLVER = 1 #(APOPT)
    # Array Variable
    rows  = nb_phases + 3*b_max*(nb_phases+1)
    x_initial = np.empty(rows,dtype=object)

    x = np.empty(rows,dtype=object)

    for i in range(3*nb_phases*b_max+nb_phases+1):
        x[i] = m_APOPT.Var(value = x_initial[i], lb = LB[i], ub = UB[i], integer = False)

    for i in range(3*nb_phases*b_max+nb_phases+1, (3*nb_phases+3)*b_max+nb_phases):
        x[i] = m_APOPT.Var(value = x_initial[i], lb = LB[i], ub = UB[i], integer = True)

    # Constraints
    m_APOPT.axb(A,B,x,etype = '<=',sparse=False) 

    m_APOPT.axb(A_eq,B_eq,x,etype = '=',sparse=False)

    # Objective Function
    f = objective_fun(x, t, ob, jofbuses, q, qc, s, oa, k, l, T, G_next, C, Y, G_previous)
    m_APOPT.Obj(f)

    #Solver
    m_APOPT.solve(disp = True)

    return x 

C = 60 
T = 2
G_base = [15,18,8,7]
G_min = [7,7,7,7]
G_previous = [15,18,8,7]
Y = [3,2,3,3,1]
jofbuses = [1,2]
k = [1,1,4,5]
l = [1,1,5,7]
oa = 1.25
ob = [42,32]
t = [99, 104]
q = [176,68,80,8]
qc = [220,85,100,10]
s = [3600,3600,5400,5400]

nb_phases = len(G_base)
G_max = []
for i in range(nb_phases):
    G_max.append(C - sum(Y[0:nb_phases]))

Optimise_G(t,ob, jofbuses, q, qc, s, oa, k, l, T, G_previous, C, Y, G_previous, G_max, G_min)

我还尝试使用 (remote = False) 进行本地解决,但出现以下错误:

错误:未找到“results.json”。 检查上面的其他错误详细信息 Traceback(最近一次调用最后一次):文件“stack_gekko.py”,第 212 行,在 Optimise_G(t,ob, jofbuses, q, qc, s, oa, k, l, T, G_previous, C , Y, G_previous, G_max, G_min) 文件“stack_gekko.py”,第 133 行,在 Optimise_G sol = MINLP(xinit, A, B, A_eq, B_eq, LB,UB, t, ob, jofbuses, q, qc, s , oa, k, l, T, G_previous, C, Y, G_previous) 文件“stack_gekko.py”,第 187 行,在 MINLP m_APOPT.solve(disp = True) 文件“C:\Users\Zineb\AppData\Local\ Programs\Python\Python37\lib\site-packages\gekko\gekko.py”,第 2222 行,在解决 self.load_JSON() 文件“C:\Users\Zineb\AppData\Local\Programs\Python\Python37\lib\ site-packages\gekko\gk_post_solve.py",第 13 行,在 load_JSON f = open(os.path.join(self._path,'options.json')) FileNotFoundError: [Errno 2] No such file or directory: ' C:\Users\Zineb\AppData\Local\Temp\tmp2dgyi354gk_model0\options.json'

非常感谢你的帮助 !

当用于远程解决这些问题的服务器崩溃或离线时,就会发生这种情况。 我最近也有同样的问题。

解决此问题的最简单方法是将 model 切换为在本地而不是远程解决。

m = GEKKO(remote=False)

如果您可以访问或设置一个服务器,另一种选择是切换到使用不同的服务器。 默认服务器位于http://byu.apmonitor.com/ ,但您可以按照说明在WindowsLinux上设置自己的服务器。

m = GEKKO(server="server address here")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM