我有一个很大的MILP,我用vxpy构建,想用GUROBI解决。当我使用vxpy的solve()函数时,它花了非常非常非常长的时间来设置,并且在几个小时后才开始求解。当我这样做的时候,我的集群只使用了一个核心。100%使用。我想使用多个核心来构建模型,这样构建模型的过程就不会花那么长时间。运行grbprobe还表明,gurobi知道其他内核,并且为了解决问题,它使用多个内核。
我试过用不同的标志运行,即关闭和打开解决或给出要使用的线程数(这似乎我甚至没有解决。
我还减少了问题中的约束数量,它开始更快地解决,这意味着这绝对不是模型本身的问题。
问题在它的正常状态下应该有2200个约束,我把它减少到150,它花了几秒钟,直到它开始寻找一个解决方案。
问题是我没有看到任何东西,因为获取"设置用户名参数"与此同时,flag和我没有得到任何关于计算机的信息。
是否有一种方法可以告诉GUROBI或cvvxpy它可以使用更多的cpu进行构建?有别的办法解决这个问题吗?
对不起。求解的第一部分(cvpy模型生成、设置、解算、缩放、解根、预处理)几乎完全是串行的。并行部分是当它真正开始在分支定界树上工作的时候。对于许多问题来说,并行部分是迄今为止最昂贵的,但并非所有问题都是如此。
这不仅仅是对于Gurobi的情况。其他高端解算器也有相同的行为。
有一些选项可以减少解析和预处理。这可能会让你更早进入B&B。但是,通常情况下,最好不要碰这些选项。
运行verbose=True
可能会给你更多的信息。如果您有更详细的问题,您可能需要共享日志。