Linear programming 线性规划中障碍求解后避免交叉的缺点

Linear programming 线性规划中障碍求解后避免交叉的缺点,linear-programming,solver,cplex,gurobi,Linear Programming,Solver,Cplex,Gurobi,我正在运行一个大型LP(大约500万个非零),我希望加快求解过程。我尝试了并行求解来测试哪种算法最快地解决了我的问题,我发现barrier方法是明确的赢家(solver=Xpress MP,但我猜对于其他解算器也是如此) 不过,我想进一步加快速度。我注意到,真正的屏障求解只需不到总求解时间的1%。剩余的时间用于交叉(约40%)和原始解(在新基中找到角点解)(约60%)。不幸的是,我找不到一个设置来告诉解算器进行双交叉(Cplex中有一个,但我没有Cplex的许可证)。因此,我无法比较这是否会更快

我正在运行一个大型LP(大约500万个非零),我希望加快求解过程。我尝试了并行求解来测试哪种算法最快地解决了我的问题,我发现barrier方法是明确的赢家(solver=Xpress MP,但我猜对于其他解算器也是如此)

不过,我想进一步加快速度。我注意到,真正的屏障求解只需不到总求解时间的1%。剩余的时间用于交叉(约40%)和原始解(在新基中找到角点解)(约60%)。不幸的是,我找不到一个设置来告诉解算器进行双交叉(Cplex中有一个,但我没有Cplex的许可证)。因此,我无法比较这是否会更快

因此,我试图关闭交叉,这将产生一个巨大的速度增加,但有一些缺点,根据文件。到目前为止,我所知道的缺点是:

  • 屏障解决方案往往是中面解决方案
  • 没有交叉的屏障不会产生基本解决方案(尽管解算器设置提到“无论是否使用交叉,都可以使用完整的原始和双重解决方案”)。
    • 如果没有基础,您将无法使用高级启动信息反复优化相同或类似的问题
    • 如果没有基础,您将无法获得用于执行敏感性分析的范围信息
我的问题很简单。其他哪些缺点对于证明非常低效的交叉步骤是重要的(Cplex和Xpress MP都将交叉作为默认设置启用)。或者,我的问题是否异常?在其他问题中,交叉步骤是否非常快?最后,使用中间面解决方案有什么错(这意味着角点优化也不是唯一的)

资料来源:

  • (屏障算法高级理论)
  • (Xpress MP解算器设置)
  • (第87页)

主要缺点:解决方案将是“丑陋的”,即解决方案值中有许多0.000001和0.999999。其次,你可能会得到一些不同的对偶。最后,快速“热启动”需要一个基础。加速大型模型的一种可能方法是使用单纯形法,并使用代表性基本运行的高级基础。

你所说的“稍微不同的对偶”是什么意思?此外,你所说的基础到底是什么意思。原始约束上的边点?只有当你想进行原始或双重热启动时才会出现这种情况,对吗?就像原始解决方案一样,双重有点不同。还考虑简并性。有时二元论比预期的更不一样。基的概念是线性规划的一个重要基础。任何关于LP的书都会告诉你很多。我不熟悉边点这个术语,我想这是一个角点或基本解。原始单工和双单工都可以从高级基础上进行热启动,但存在一些与可行性相关的技术差异。在实践中:试着看看哪个更快。你可以通过设置crossover和CrossoverBasis参数来改变Gurobi crossover的行为;我相信Crossover=2或4会满足您的需求。此外,将BarConvTol设置为较小的值可能会使交叉更容易。