在不同的简单算法下,影子价格是不同的

时间:2017-04-29 15:09:34

标签: .net algorithm gurobi

我正在使用列生成算法来解决一些问题,例如多商品流。我使用 gurobi .net api 。当我试图获得约束的影子价格时,我发现它们与不同的单纯形算法不同,例如原始单纯形算法和双单纯形算法。在gurobi .net api中,我设置如下:

GRBEnv env = new GRBEnv();
    env.Set(GRB.IntParam.Method, GRB.METHOD_PRIMAL);//primal   
    or env.Set(GRB.IntParam.Method, GRB.METHOD_DUAL);//DUAL

而且,对于预先解决而不是预先解决影子价格的结果也会有所不同,我的设置如下:

 env.Set(GRB.IntParam.Presolve, 0);//turn off presolve
    env.set(GRB.IntParam.presolve,1);//with presolve

我困惑的问题是:

  1. 在列生成算法中,我应该使用哪个单纯形算法,原始一个还是双一个?我应该关闭预解算吗?

  2. 我分别测试了这两种算法,我发现没有预解的双单纯形算法中的影子价格更合理。因此,我将GRBEnv设置为双单纯形算法并关闭预求解,但在列生成迭代期间,通常在第3次迭代中,阴影价格将是原始单纯形算法的结果。因为我将continue lp模型写入* .lp文件重新读取模型并用两种算法求解,原始结果与列生成迭代结果相同,那么为什么在迭代过程中,双单纯形算法会转向原始算法。

  3. 有没有人可以帮助我,提前谢谢你。

0 个答案:

没有答案