支持百万级变量的Python大规模凸优化库咨询(CVXOPT溢出)
大规模变量规模凸优化求解相关问题
优化问题形式
待求解的凸优化问题完整形式为:
- 目标函数:
min p^T*q + |c| - 决策变量边界约束:
lower_bound < q < upper_boundlower_bound < c < upper_bound
- 等式约束:
A*q + B*c = b - 线性边界约束:
lower_bound < Rq < upper_bound
当前实现与问题
目前基于cvxopt.modeling的核心建模代码如下:
from cvxopt.modeling import variable, op, sum q = variable(numb_prod, 'q') c = variable(numb_capacity, 'c') prod_price = p.trans() * q problem = op(sum(prod_price) + 1e-6*sum(abs(c)), [constraints]) problem.solve(format='sparse', solver='glpk', options={'glpk':{'msg_lev':'GLP_MSG_OFF'}})
参数说明:p、b为向量,A、B、R为稀疏矩阵,q、c为决策变量。
当前构建的优化问题共包含108575个变量,已超出cvxopt框架的处理能力。经排查,报错并非底层求解器导致,而是cvxopt框架内部实现触发的溢出错误,完整报错栈如下:
Traceback (most recent call last): File "C:\Users\OsRas\AppData\Local\Continuum\anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 3325, in run_code exec(code_obj, self.user_global_ns, self.user_ns) File "", line 489, in q, c, total_cost_x, water_values, list_numb_of_capacity_variables = solution(demand, price_purchase_power, supply) File "", line 391, in solution test = problem.solve(format='sparse', solver='glpk', options={'glpk':{'msg_lev':'GLP_MSG_OFF'}}) File "C:\Users\OsRas\AppData\Local\Continuum\anaconda3\lib\site-packages\cvxopt\modeling.py", line 2600, in solve t = self._inmatrixform(format) File "C:\Users\OsRas\AppData\Local\Continuum\anaconda3\lib\site-packages\cvxopt\modeling.py", line 2479, in _inmatrixform for v in variables: vmap[v] = x[vslc[v]] File "C:\Users\OsRas\AppData\Local\Continuum\anaconda3\lib\site-packages\cvxopt\modeling.py", line 240, in __getitem__ return (+self).__getitem__(key) File "C:\Users\OsRas\AppData\Local\Continuum\anaconda3\lib\site-packages\cvxopt\modeling.py", line 931, in __getitem__ f._linear = self._linear[l] File "C:\Users\OsRas\AppData\Local\Continuum\anaconda3\lib\site-packages\cvxopt\modeling.py", line 1385, in __getitem__ for v,c in iter(self._coeff.items()): OverflowError: Python int too large to convert to C long
核心诉求
- 寻找可支持百万级变量规模的Python凸优化库,匹配上述问题的求解需求
- 评估是否必须切换至其他开发语言,才能支撑该规模的优化任务运行
内容的提问来源于stack exchange,提问作者Olba12
相关产品推荐
相关产品推荐

