我正在使用CPLEX来解决巨大的优化模型(超过100k变量)现在我想看看我是否能找到一个开源替代品,我解决了混合整数问题(MILP)和CPLEX工作得很好但是如果我们这样做很贵想要扩展所以我真的需要找到一个替代方案或开始编写我们自己的ad-hoc优化库(这将是痛苦的)
任何建议/见解将不胜感激
mathematical-optimization linear-programming convex-optimization cplex
有谁知道这样一个执行数学优化的库(线性编程,凸优化或更一般类型的问题)?我正在寻找像MATLAB这样的东西,但能够处理更大的问题.我是否必须编写自己的实现,或者购买其中一种商业产品(CPLEX等)?
mathematical-optimization linear-programming convex-optimization cplex gurobi
我正在尝试解决整数编程问题.我试过使用SCIP和LPSolve
例如,给定A和B的最终值,我想在以下C#代码中求解valA:
Int32 a = 0, b = 0;
a = a*-6 + b + 0x74FA - valA;
b = b/3 + a + 0x81BE - valA;
a = a*-6 + b + 0x74FA - valA;
b = b/3 + a + 0x81BE - valA;
// a == -86561, b == -32299
Run Code Online (Sandbox Code Playgroud)
我以lp格式实现了这个整数程序(截断分区导致一些复杂化):
min: ;
+valA >= 0;
+valA < 92;
remAA_sign >= 0;
remAA_sign <= 1;
remAA <= 2;
remAA >= -2;
remAA +2 remAA_sign >= …Run Code Online (Sandbox Code Playgroud) mathematical-optimization cplex scip gurobi integer-programming
我正在使用IBM cplex优化器来解决优化问题,我不希望优化器执行所有终端打印.是否有成员在IloCplex或IloModel类中关闭此功能?这些是关于剪切和迭代的打印.打印到终端是昂贵的,我的问题最终将是数百万变量的数量级,我不想浪费时间与这些多余的输出.谢谢.
在Python PuLP中,线性编程约束可以变成弹性子问题.
http://www.coin-or.org/PuLP/pulp.html?highlight=lpsum#elastic-constraints
解决子问题可以优化距目标值的距离.
当然,目标值是这个子问题的最佳解决方案,但弹性化的全部意义在于我们认为这种解决方案可能是不可行的.
如何将子问题纳入整体问题?我尝试按照添加约束的方式将其添加到问题中,这会引发类型错误.我尝试将它放在目标函数中,这也不起作用.
我在上面的文档或此处托管的示例中找不到任何内容:
https://code.google.com/p/pulp-or/wiki/OptimisationWithPuLP?tm=6
这是我制定的子问题:
capacity = LpConstraint(e=lpSum([ x[m][n] * len(n.items) for n in N ]),
sense=-1, rhs=30, name=str(random.random()))
stretch_proportion = 30/50
elasticCapacity = capacity.makeElasticSubProblem(penalty=50,
proportionFreeBoundList=[1,stretch_proportion])
Run Code Online (Sandbox Code Playgroud)
以下是我认为必须将其纳入LP目标的最接近的事情:
def sub(m):
capacity = LpConstraint(e=lpSum([ x[m][n] * len(n.items) for n in N ]),
sense=-1, rhs=30, name=str(random.random()))
stretch_proportion = 30/50
elasticCapacity = capacity.makeElasticSubProblem(penalty=50,
proportionFreeBoundList=[1,stretch_proportion])
elasticCapacity.solve()
return elasticCapacity.isViolated()
Run Code Online (Sandbox Code Playgroud)
...
prob += lpSum( [ x[m][n] * reduce(op.add, map(D2, [i.l for i in n.items], [j.l for j in n.items]))\
for n in N …Run Code Online (Sandbox Code Playgroud) 我正在使用Pulp建模器与python来解决整数编程问题.我使用IBM CPLEX作为解算器.当我运行我的Python程序时,我在控制台中有很多输出消息,如:
CPLEX Optimizers将解决多达1000个变量和1000个约束的问题.IBM ILOG CPLEX Optimization Studio预览版可以再使用48天......
我在互联网上寻找解决方案,我解决了这个问题.所以我通过写msg=0如下来禁用显示:
from coinor.pulp import *
# ...
prob = LpProblem("MyProblem", LpMaximize)
# ...
prob.solve(CPLEX(msg=0))
Run Code Online (Sandbox Code Playgroud)
Python说,昨天我从我的计算机上删除了一些软件,当我尝试运行我的Python程序时cannot run cplex.exe.我发现我的环境变量出了问题(路径中的所有环境变量都被删除).所以我重新安装了CPLEX解算器,我运行完全相同的程序,但我现在仍然有输出消息msg=0.
您认为这个问题是什么?如何禁用输出消息?
这是我在 CPLEX 12.7.0 中解决的小规模混合整数线性优化问题中获得的引擎日志输出的一部分
Nodes Cuts/
Node Left Objective IInf Best Integer Best Bound ItCnt Gap
0 0 280.0338 78 280.0338 72
0 0 428.8558 28 Cuts: 89 137
0 0 429.5221 34 Cuts: 2 142
0 0 429.7745 34 MIRcuts: 2 143
* 0+ 0 460.9166 429.7745 6.76%
0 2 429.7745 34 460.9166 429.8666 143 6.74%
Elapsed time = 0.49 sec. (31.07 ticks, tree = 0.01 MB, solutions = 1)
* 35 8 integral 0 438.1448 435.6381 211 0.57% …Run Code Online (Sandbox Code Playgroud) 我正在尝试在我的 M1 上运行 cplex。我希望我可以让它在 python 3.8/9 上运行,因为我还需要运行tensorflow(我通过 miniconda for M1 运行)。当我尝试在 miniconda python 环境中 pip install 时,出现以下错误:
ERROR: Could not find a version that satisfies the requirement cplex (from versions: none)
ERROR: No matching distribution found for cplex
Run Code Online (Sandbox Code Playgroud) 我在网上看到,人们可以将旅行商问题写成线性表达式,并使用CPLEX for java等软件进行计算.
我有1000个城镇,需要找一小段距离.我计划将这1000个城镇划分为约100个城镇的集群,并在这些单独的集群上执行一些线性规划算法.
我的问题是,我究竟如何将其表示为线性表达式.
所以我有100个城镇,我相信每个人都知道TSP是如何工作的.
我完全不知道如何编写满足TSP的线性约束,目标和变量.
有人可以向我解释这是如何完成的,或者给我一个清楚解释它的链接,因为我一直在研究很多,似乎找不到任何东西.
编辑:
我找到了一些额外的信息:
我们用数字0到n标记城市并定义矩阵:

这会为5个城镇产生以下矩阵吗?

限制是:
i)每个城市都来自其他城市
ii)从每个城市出发前往另一个城市
iii)该路线不会分成不同的岛屿.
同样,这对我来说是完全合理的,但我仍然无法将这些约束写为线性表达式.显然它是一个简单的矩阵.
谢谢你的帮助 !
algorithm linear-algebra linear-programming traveling-salesman cplex
我没有ABAP编程的经验,我想知道是否可以从SAP应用程序中调用带有C编程语言接口的第三方库.
更确切地说,目标是在SAP应用程序内使用IBM CPLEX Optimizer(在本地计算机上运行).Optimizer是一个库,具有适用于C++,Java和.NET(C#,VB.NET)的API.我想这是一个DLL文件.
那么你能告诉我是否可以从ABAP应用程序中调用DLL的功能?
cplex ×10
gurobi ×2
pulp ×2
python ×2
abap ×1
algorithm ×1
apple-m1 ×1
c++ ×1
ilog ×1
optimization ×1
python-3.8 ×1
python-3.9 ×1
python-3.x ×1
sap ×1
scip ×1