【问题标题】:Python library for large scale convex optimization用于大规模凸优化的 Python 库
【发布时间】: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

【问题讨论】:

标签: python-3.x mathematical-optimization


【解决方案1】:

这真的是一个 LP(线性规划)问题:

  min sum(i, p(i)*q(i)) + sum(i,cabs(i))
  cabs(i) >= c(i)
  cabs(i) >= -c(i)
   other constraints

其中cabs 是一个额外的正变量。

具有 108,575 个变量的模型对于 LP 来说并不是很大,因此任何好的 LP 求解器都可以。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-20
    • 1970-01-01
    • 1970-01-01
    • 2022-11-24
    相关资源
    最近更新 更多