为什么运行之后显示异常退出,也不报错
import numpy as np
import cvxpy as cp
import pandas as pd
a = pd.read_excel(r'wuyi.xlsx')
a1 = np.array(a)
a1 = a1.ravel()
A = a1.tolist()
X=cp.Variable((104),integer=True)
Y=cp.Variable((104),integer=True)
H=cp.Variable((104),integer=True)
J=cp.Variable((104),integer=True)
K=cp.Variable((104),integer=True)
obj=cp.Minimize(cp.sum(200*X+110*Y+10*H+5*J+10*K,axis=0))
con=[10*K>=Y,13-H[0]==A[0],50-J[0]-K[0]==4*A[0],1.25*J[1]>=50-J[0]-K[0],
X>=0,Y>=0,H>=0,J>=0,K>=0,4*(13-H[0])==(50-J[0]-K[0])]
con1 = [13 - H[i] + cp.sum(X[:i]) == A[i]+int(round(0.2*A[i-1])) for i in range(1,104)]
con2 = [50 - J[i] - K[i] +cp.sum(Y[:i]) == 4*(A[i]+int(round(0.2*A[i-1]))) for i in range(1,104) ]
con3 = [1.25*J[i+1] >= 50 - J[i] - K[i] + cp.sum(Y[:i]) for i in range(1,103)]
con4 = [4*(13 - H[i] + cp.sum(X[:i])) == 50 - J[i] -K[i] + cp.sum(Y[:i]) for i in range(1,104)]
con=con+con1+con2+con3+con4
prob=cp.Problem(obj,con)
prob.solve(solver='GLPK_MI',verbose=False,max_seconds=1000,tm_lim = 1000000000000)
print(prob.value)
print(X.value)
print(Y.value)
print(H.value)
print(J.value)
print(K.value)
代码中使用了cvxpy求解器来求解一个线性规划问题,可能出现了求解器无法找到最优解或超出了最大运行时间的情况,导致程序异常退出。
试试用这个异常处理代码来检查一下:
try:
prob.solve(solver='GLPK_MI',verbose=False,max_seconds=1000,tm_lim = 1000000000000)
except cp.SolverError as e:
print("SolverError:", e)
except cp.error.SolverError as e:
print("SolverError:", e)
except Exception as e:
print("Exception:", e)
else:
print(prob.value)
print(X.value)
print(Y.value)
print(H.value)
print(J.value)
print(K.value)
如果答案对您有所帮助,望采纳。
有时候我们的数据存在异常值,并且这种概率挺大的。这实际上会导致结果出现偏差。比如,统计中国家庭人均收入时,如果源数据里面,有王建林,马云等这种富豪,那么,人均收入的均值就会受到极大的影响,这个时候最好,绘制箱形图,看一看百分位数。
了解数据范围,设定最大值、最小值限度是很非常重要的。