Gurobi提供了一系列的参数来控制优化过程的细节,例如:
feasibility tolerance(可行性容忍度)
1.定义:允许约束条件被违反的程度
在实际问题中,由于数值计算的限制,有时不要求约束条件完全精确满足,而是允许存在一定的误差。可行性容忍度用于控制约束条件的松弛程度,即在求解过程中允许约束条件被违反的程度。
optimality tolerance(最优性容忍度)
1.定义:找到的解接近最优解的程度
实际求解中,不一定要达到的全局最优解,而是允许在一定程度上接近最优解。最优性容忍度确定求解器在何时停止迭代以判定找到的解是接近最优解的程度。
这两个参数通常徐根据具体问题由用户自己设置。较松的容忍度可能会导致较快的求解速度,但可能产生较大的数值误差;相反,较严格的容忍度可能会得到更精确的解,但需要消耗更多的计算时间和资源。
参考官方链接:Tolerances and user-scaling - Gurobi Optimization
算法
在Gurobi中,优化算法的选择通常取决于所求解的问题类型(如LP、QP、MIP等)或者初始根松弛问题的类型。
默认情况下设置为 Automatic (-1) ,Gurobi 会根据不同的问题类型选择默认的优化方法。
m.Params.Method = 2 # 设置求解过程的细节:选用2号算法来求解
具体来说:
-
对于线性规划(LP)问题:
- 默认情况下,Automatic (-1) 会选择非确定性并发算法 (Method=3)。
-
对于二次规划(QP)或二次约束规划(QCP)问题:
- 默认情况下,Automatic (-1) 会选择障碍法 (Method=2)。
-
对于混合整数规划(MIP)根松弛问题:
- 默认情况下,Automatic (-1) 会选择对偶算法 (Method=1)。
- 如果 MIP 根松弛问题的规模较大,通常会选择确定性并发算法 (Method=4)
补充初始根松弛(Initial Root Relaxation)的概念:
在混合整数规划问题中(MIP)中,求解器在求解过程中会构建一个搜索树,包含了不同的分支和节点。
定义:初始根松弛是指MIP求解器在开始搜索树结构之前,对整个问题的原始松弛问题(即将整个原始问题的整数变量松弛为连续变量)所作的第一个松弛求解。
过程:在初始根松弛阶段,求解器会考虑将所有的整数变量松弛为连续变量来求解一个松弛问题,通常是一个更加简单的问题。这个松弛问题可以看作是整个MIP问题的起点,在搜索过程中不断被改进和拓展。
因此,在MIP中求解,初始根松弛是一个非常重要的步骤,它提供了一个起点,影响了树搜索的方向和搜索空间的大小。
官方参考链接:Method - Gurobi Optimization