当从部分解决方案开始时,gurobi是否会进行最小的更改(最小扰动)?

时间:2016-12-28 00:59:56

标签: linear-programming gurobi

我知道在gurobi中我可以从最初的解决方案开始。即在使用

解决LP之后
   m.optimize() 

对于模型m,我可以改变一些约束并使用

   m.reset()
   m.optimize() 

从头开始为LP找到新的解决方案或只是调用

   m.optimize() 

从初始解决方案中找到新的解决方案。

我的问题是,当gurobi从初始解决方案开始时,它是否会对获得新解决方案所做的最小变化(对变量)?

我认为这是一个微小的扰动问题。如果gurobi默认不这样做,是否有任何方式通知gurobi进行最小的更改?

进一步评论:  我知道热启动可能会更快,但变量的变化会很小。例如,目标函数是

  maximize(i1+i2+i3+i4)

并且初始约束集只有

  i1,i2 can be set as 1 and i3,i4 as 0.

现在约束发生变化,新解决方案(仍然只有2个变量可以设置为1)可以是

  i1, i3 as 1 (or) i3, i4 as 1.

gurobi优化器能否以最小的变化i1,i3为1来选择解决方案?

另外,如果是另一种解决方案

   i1,i2 as 1 

gurobi会选择那个解决方案与现有解决方案完全相同吗?

1 个答案:

答案 0 :(得分:1)

是的,这被称为热启动。大多数现代线性编程求解器(包括Gurobi Optimizer)在修改模型并调用optimize()函数时使用热启动。通过微小的变化,使用热启动来解决模型通常要快得多。但是,如果进行实质性更改,热启动可能比从头开始解决模型要慢。 Gurobi Optimizer也为MIP模型使用热启动。

使用Gurobi Optimizer,您还可以通过Start属性指定起始值,或者通过原始和双重启动属性(分别为PStartDStart)指定LP模型。< / p>