python - 如何增加 python 中 scipy.optimize.linprog 函数的迭代次数?

标签 python scipy linear-programming

我正在尝试检查火车数据是否线性可分。为此,我使用以下代码。

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 来指定给定方向上没有边界。

关于python - 如何增加 python 中 scipy.optimize.linprog 函数的迭代次数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45852798/

相关文章:

python 数字长度验证器

Python:如何找到二维点分布的第 n 个分位数

java - 线性规划-如何将变量设置为0或1?

linear-programming - ampl/cplex 的函数 (a/b) 的线性形式

python - 如何根据色标给 voronoi 上色?以及每个单元格的面积

python - Python 中的虚拟对象

python - Matlab 到 Python 稀疏矩阵转换,克服零索引问题

python - 使用 bool 数组索引 SciPy 稀疏矩阵

java - 如何快速找到给出最大值的点?请使用 Java 或 C++ 代码

python - 在 Python 中导入模块时运行函数