德洲网站建设,wordpress底部栏如何编辑,厦门开发网站公司,自己网站wordpress主题怎么在模型计算中#xff0c;由于浮点计算的存在#xff0c;包括数学建模当中常用的大M法等#xff0c;都可能会使得结果存在轻微偏离预期的情况。然而#xff0c;对于一些一定范围内的轻微偏移#xff0c;我们常常是能够接受的#xff0c;因为这些轻微的偏移能通过简单的调整…在模型计算中由于浮点计算的存在包括数学建模当中常用的大M法等都可能会使得结果存在轻微偏离预期的情况。然而对于一些一定范围内的轻微偏移我们常常是能够接受的因为这些轻微的偏移能通过简单的调整变成合理的结果且这些允许的轻微偏移往往能够使得求解器的效率更高。
在求解器中对可行解最优解等都会有一个容忍误差这个误差使得结果的轻微偏移并不改变相应的性质这种对精度的放松也是求解器提高效率的一个技巧以下对求解器的几种容忍误差进行解释
整数值的容忍误差倘若一个变量 x x x 被要求是整数类型则容忍该变量值在取整数值的一定小的范围内视为是整数。公式为满足 a b s ( x − f l o o r ( x 0.5 ) ) ≤ I n t e a s T o l abs(x-floor(x0.5))\leq InteasTol abs(x−floor(x0.5))≤InteasTol 时视变量为整数值可行解的容忍误差满足所有约束的解为可行解但仅轻微地违背部分约束的解有时也可以被视为可行解这取决于对约束违背量的容忍度例如对于约束 a x ≤ b ax\leq b ax≤b则只要 a x − b ≤ F e a s i b i l i t y T o l ax-b\leq FeasibilityTol ax−b≤FeasibilityTol则视为约束是成立的在这个范围内的解也被视为是可行的如下例子所示用Gurobi求解一个明显无可行解的问题但求解器最终还是给出了一个“可行解” min 0 s . t . x ≤ 0 x ≥ 1 0 − 10 \begin{aligned} \min0\\ s.t. x\leq 0\\ x\geq 10^{-10} \end{aligned} mins.t.0x≤0x≥10−10
import gurobipy as grbmodel grb.Model()
x model.addVar(vtypegrb.GRB.INTEGER, namex)
model.addConstr(x 0)
model.addConstr(x 10e-10)
model.setObjective(0, sensegrb.GRB.MINIMIZE)
model.optimize()Solution count 1: 0Optimal solution found (tolerance 1.00e-04)
Best objective 0.000000000000e00, best bound 0.000000000000e00, gap 0.0000%
目标函数值 0.0
参数 x -0.0最优值的容忍误差根据强对偶定理线性问题取到最优解时原问题的最优值 c c c 和对偶问题的最优值 a y ay ay 是重合的对于最小化的优化问题 a y ≤ c ay\leq c ay≤c当两个值的差距达到容忍误差范围内时认为达到了最优即 a y − c ≤ O p t i m a l i t y T o l ay-c\leq OptimalityTol ay−c≤OptimalityTol。
这些容忍误差使得在搜索空间中存在一个模糊的区域这些区域的值基于一定的误差被我们接受甚至于稍微不可行的解也可以被视为是可行的因此对于不同的求解器而言可能存在不同的容忍水平使得问题的求解结果出现一定的差异。