连续模型
连续模型
如果您希望使用Gurobi参数调优连续模型上的性能,我们提供以下指导方针。
选择LP或QP的方法
求解LP或QP时最重要的参数是方法
.默认设置(-1)使用并发优化器LP和QP的平行势垒求解器。手机万博登录虽然默认方法通常是一个不错的选择,但在一些情况下,您可能需要选择不同的方法。
如果内存紧张,您应该考虑使用对偶单纯形方法(方法= 1
)而不是默认值。默认值将调用barrier方法,它可能比dual占用更多的内存。此外,LP的默认情况下会同时尝试多个算法,每个算法都需要原始模型的一个副本。通过选择dual simplex,您将只使用模型的一个副本。
另一种应该更改默认值的情况是,每次运行程序时都必须获得相同的最佳基。对于LP模型,默认的并发求解器在多核系统上同时调用多个算法,从最先完成的算法手机万博登录返回最优的基础。在极少数情况下,一个算法可能在一次运行中先完成,而另一个算法在另一次运行中先完成。这可能会导致不同的备选最佳解决方案。选择任何其他方法,包括确定性并发求解器,将避免这种可能性。手机万博登录但是请注意,确定性并发求解器可能比默认的并发求解器慢得多。手机万博登录
最后,如果您面临一个困难的LP模型,您应该试验不同的方法选项。虽然默认的选择很少比最佳选择慢很多,但您可能会发现其中一个选项对您的模型来说始终更快或更健壮。没有简单的规则来预测哪种方法对特定的模型最有效。
如果你正在解决QCP或SOCP模型,请注意障碍算法是你唯一的选择。
并行解决方案
在影响连续模型的其余参数中,您通常想要调整的唯一参数是线程
,它控制用于并发和并行barrier算法的线程数。默认情况下,concurrent和barrier将使用机器中所有可用的内核。注意,单纯形求解器只能使用一个线程,所以这个手机万博登录参数对它们没有影响。
在使用并发优化器解决LP模型时,如果您想尝试不同于默认策略的不同策略,我们提供了方法C,c++,Java,net,Python允许您创建和配置并发环境。
不可行的或无界模型
如果遇到不可行的或无边界LP,可以在设置时获得额外的详细信息InfUnbdInfo
参数。对于无边界的模型,设置此参数允许您检索无边界的射线(使用UnbdRay
属性)。对于不可行的模型,设置此参数允许您检索Farkas不可行的证明(使用FarkasDual
和FarkasProof
属性)。
对于barrier算法,您应该设置BarHomogeneous当您怀疑模型不可行或无界时,参数为1。该算法更适合于诊断不可行性或无界性。
特殊结构
如果您希望解决一个变量比约束多得多的LP模型,您可能希望尝试筛选算法。筛选实际上是在我们的双单形求解器中实现的,所以要选择筛选,设置手机万博登录方法
参数设置为1(选择dual),然后设置筛选
参数设置为正值。你可以使用SiftMethod
参数选择算法,用于解决筛选算法中出现的子问题。一般来说,筛选只有在变量和约束之间的比率非常大(100比1或更多)时才有效。注意,默认值筛选
设置允许Gurobi优化器在问题具有适当结构时自动选择筛选,因此通常不需要手动选择。
额外的参数
的ScaleFlag
参数可用于修改在模型上执行的缩放。默认缩放值(1)通常是最有效的选择,但完全关闭缩放值(0)有时可以减少对原始模型的约束违反,而应用更积极的缩放值(2)有时可以改善缩放模型的数值属性。的ObjScale
参数允许您只缩放目标。当目标包含非常大的值时,目标缩放是有用的,但它也可能导致严重的双重违规,所以应该谨慎使用。
的SimplexPricing
参数确定用于选择单形轴的方法。默认值通常是最好的选择。的NormAdjust
参数允许您选择备用的单一定价规范。同样,默认通常是最好的。的四
参数允许您强制单工求解器使用(或不使用)四精度。手机万博登录虽然四精度可以帮助数字困难的模型,默认设置通常会自动识别这种情况。的PerturbValue
参数允许您调整单形扰动的大小(用于克服简并)。同样,默认值通常是有效的。
其他的Gurobi参数控制着势垒解算器的细节。手机万博登录的BarConvTol
和BarQCPConvTol参数允许您调整屏障终止。虽然您可以要求比默认值更高的精度,但通常很快就会遇到双精度算术的限制。该参数通常用于表明您愿意接受比默认值更不准确的答案。的BarCorrectors
参数允许您调整应用于每次屏障迭代的中心校正的数量。更多的修正通常会导致在每个迭代中更向前的进展,但代价是更昂贵的迭代。的BarOrder
参数允许您选择屏障排序方法。默认方法通常工作良好,但您可以手动选择成本较低的近似最小度排序选项(BarOrder = 0
),如果你发现订购时间太长。