【发布时间】:2021-05-12 22:08:18
【问题描述】:
我正在尝试在 python 中找到一个可以处理大量变量和约束的凸优化库。
我的问题在于表格
min pT*q + |c|
lower bound < q < upper bound
lower bound < c < upper bound
A* q + B*c = b
lower bound < Rq < upper bound
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 变量 有关矩阵的更多信息,可以查看这里 https://math.stackexchange.com/questions/4018792/python-library-for-large-scale-convex-optimization?noredirect=1#comment8297384_4018792
目前我有 108575 个变量,对于 cvxopt 来说太大了。我正在跳跃运行一个可以处理数百万变量的优化......
有没有可以处理的库?还是需要研究另一种语言?
问题似乎在 cvxopt 内部,不一定是求解器 错误信息:
Traceback(最近一次调用最后一次): 文件“C:\Users\OsRas\AppData\Local\Continuum\anaconda3\lib\site-packages\IPython\core\interactiveshell.py”,第 3325 行,在 run_code 执行(code_obj,self.user_global_ns,self.user_ns) 文件“”,第 489 行,在 q,c,total_cost_x,water_values,list_numb_of_capacity_variables = 解决方案(需求,price_purchase_power,供应) 文件“”,第 391 行,在解决方案中 测试=问题.求解(格式='稀疏',求解器='glpk',选项={'glpk':{'msg_lev':'GLP_MSG_OFF'}}) 文件“C:\Users\OsRas\AppData\Local\Continuum\anaconda3\lib\site-packages\cvxopt\modeling.py”,第 2600 行,在求解 t = self._inmatrixform(格式) _inmatrixform 文件“C:\Users\OsRas\AppData\Local\Continuum\anaconda3\lib\site-packages\cvxopt\modeling.py”,第 2479 行 对于变量中的 v:vmap[v] = x[vslc[v]] getitem 中的文件“C:\Users\OsRas\AppData\Local\Continuum\anaconda3\lib\site-packages\cvxopt\modeling.py”,第 240 行 return (+self)。getitem(键) getitem 中的文件“C:\Users\OsRas\AppData\Local\Continuum\anaconda3\lib\site-packages\cvxopt\modeling.py”,第 931 行 f._linear = self._linear[l] getitem 中的文件“C:\Users\OsRas\AppData\Local\Continuum\anaconda3\lib\site-packages\cvxopt\modeling.py”,第 1385 行 对于 iter(self._coeff.items()) 中的 v,c: 溢出错误:Python int 太大而无法转换为 C long
【问题讨论】:
-
osqp.org/docs/index.html 来自同一个列表也是我想提出的问题
-
如果 |c|是绝对值,我认为这是一个LP。
-
是的,它的元素绝对值@ErwinKalvelagen
标签: python-3.x mathematical-optimization