如何在 python 中增加 scipy.optimize.linprog 函数的迭代次数?
How to increase iterations for scipy.optimize.linprog function in python?
我正在尝试检查火车数据是否线性可分。为此,我使用以下代码。
try:
import os
import random
import traceback
import numpy as np
import scipy.io as sio
from scipy.optimize import linprog
os.system('cls')
dicA = sio.loadmat('A.mat')
A = dicA.get('A')
lengthA = int(len(A)/1000)
aRange = range(0,lengthA)
selectedIndexes = random.sample(aRange,lengthA)
A1 = A[selectedIndexes]
del A
b = -1*np.ones(len(A1),np.int64)
c = np.zeros(11,np.int64)
del dicA
res = linprog(c, A_ub=A1, b_ub=b, bounds=(-float('inf'), float('inf')),options={"disp": True})
print(res)
except:
print('exception')
tb = traceback.format_exc()
print(tb)
finally:
print('reached finally')
我正在使用 link 中提到的等式。当我 运行 脚本时,我得到以下输出。
Iteration limit reached.
fun: -0.0
message: 'Iteration limit reached.'
nit: 1000
status: 1
success: False
x: nan
reached finally
那么,达到迭代限制是否意味着数据不可线性分离,如果不是那么我如何增加限制。
我认为你可以在选项中添加 maxiter。
options = {"disp": True, "maxiter": 5000}
res = linprog(c, A_ub=A1, b_ub=b, bounds=(None, None), options=options)
根据文档,您可以在 bounds
中使用 None
来指定在给定方向上没有边界。
我正在尝试检查火车数据是否线性可分。为此,我使用以下代码。
try:
import os
import random
import traceback
import numpy as np
import scipy.io as sio
from scipy.optimize import linprog
os.system('cls')
dicA = sio.loadmat('A.mat')
A = dicA.get('A')
lengthA = int(len(A)/1000)
aRange = range(0,lengthA)
selectedIndexes = random.sample(aRange,lengthA)
A1 = A[selectedIndexes]
del A
b = -1*np.ones(len(A1),np.int64)
c = np.zeros(11,np.int64)
del dicA
res = linprog(c, A_ub=A1, b_ub=b, bounds=(-float('inf'), float('inf')),options={"disp": True})
print(res)
except:
print('exception')
tb = traceback.format_exc()
print(tb)
finally:
print('reached finally')
我正在使用 link 中提到的等式。当我 运行 脚本时,我得到以下输出。
Iteration limit reached.
fun: -0.0
message: 'Iteration limit reached.'
nit: 1000
status: 1
success: False
x: nan
reached finally
那么,达到迭代限制是否意味着数据不可线性分离,如果不是那么我如何增加限制。
我认为你可以在选项中添加 maxiter。
options = {"disp": True, "maxiter": 5000}
res = linprog(c, A_ub=A1, b_ub=b, bounds=(None, None), options=options)
根据文档,您可以在 bounds
中使用 None
来指定在给定方向上没有边界。