您知道是否有办法在已经解决的Cplex约束优化问题中更改某些约束,并再次求解,但结果尽可能接近以前的解决方案。
示例:
将任务分配给不同的资源。资源1具有任务A,B和B。 C,资源2有任务D,E& F。
当我添加资源3时,我希望新的分配类似于:
R1 = A & B
R2 = D & E
R3 = C & F
但是Cplex可能会返回类似的内容:
R1: F & E
R2: A & B
R3: C & D
或任何其他可能与初始解决方案完全不同的组合。
我认为这个问题叫做动态约束满意度问题。
我一直在做很多研究,但看起来并不是一个简单的方法。看起来我将不得不做自己的实现(这没关系)。在那种情况下,你如何建议我应该解决这个问题?
由于
答案 0 :(得分:2)
这些问题的类别在运筹学中通常被称为分配问题。
很简单,我们在特定约束下将任务分配给资源。 目标函数(目标)可以最大限度地降低此类分配的成本。一组约束确保将每个作业分配给资源。
您当然可以使用CPLEX(或任何LP解算器)来获得解决方案。特别是赋值问题“更容易”,因为您甚至不需要调用 Simplex 。一种称为匈牙利方法的方法将产生最佳解决方案。
具体而言,在您的情况下,由于您希望保留大部分现有解决方案,因此您可以分配成本或权重以激励某些任务。例如,在您的问题中,如果您分配 A & B 至 R1 非常低,最终解决方案将具有该功能,除非迫切需要更改该任务。
以下是Assignment Problem的一个参考。
同时查找The Hungarian Method in Wikipedia,其中有一个非常易于访问的部分,名为外行的解释。一旦这样做,您还可以阅读CPLEX中的灵敏度分析,其中您使用所谓的“热启动”来使用以前生成的解决方案。