R 迭代寻找线性/二元规划问题的最佳k解
我正在解决一个最大化二进制规划问题(二进制规划与整数规划相同,但解决方案是0和1的向量)。我想找出最好的10个解决方案。我不是指所有10个目标函数值都必须相等的10个最佳解,而是:我希望第一个解是给定约束条件下的最优解;我希望第二个解决方案是最优的,如果第一个解决方案被排除;如果排除第一个和第二个解决方案,则第三个解决方案必须是最优的,依此类推 我在R中使用lpSolve包,它只提供单一的最佳解决方案。因此,我编写了一个脚本,试图迭代地找到最佳的k解决方案,如下所示:R 迭代寻找线性/二元规划问题的最佳k解,r,mathematical-optimization,linear-programming,lpsolve,integer-programming,R,Mathematical Optimization,Linear Programming,Lpsolve,Integer Programming,我正在解决一个最大化二进制规划问题(二进制规划与整数规划相同,但解决方案是0和1的向量)。我想找出最好的10个解决方案。我不是指所有10个目标函数值都必须相等的10个最佳解,而是:我希望第一个解是给定约束条件下的最优解;我希望第二个解决方案是最优的,如果第一个解决方案被排除;如果排除第一个和第二个解决方案,则第三个解决方案必须是最优的,依此类推 我在R中使用lpSolve包,它只提供单一的最佳解决方案。因此,我编写了一个脚本,试图迭代地找到最佳的k解决方案,如下所示: for (j going
for (j going from 1 to k){
(1) given the set of constraints, find the best solution, and record it
(2) add a new constraint (such that the solution found in (1) is invalid) to the set of constraints
}
我的脚本重复(1)
和(2)
k次,并报告k个解以及每个k个解的目标函数值
现在,我的问题是:
根据我的理解,对于最大化问题,第j个解的目标值必须始终小于或等于第(j-1)个解(对吗?),即目标值必须单调递减,因为第j个解和第(j-1)个解满足所有相同的约束,除了第j个解必须满足(j-1)个解不一定满足的附加约束之外
然而,我的脚本并非如此。肯定有下降趋势,但目标值不是单调递减的。以下是目标值与k的图表:
我想知道:LPS的问题解决了吗?我的脚本有问题吗?目标函数值应该是单调递减还是我的理解有偏差
更新:我成功地在另一个lpSolve接口中为R、lpSolveAPI复制了所描述的过程,并得到了预期的单调递减图。所以我认为lpSolve是有问题的 因此,通过一个API而不是另一个API,您成功地获得了预期的单调递减行为。这向我表明,要么是其中一个API有问题,要么是您如何使用其中一个API实现您的过程有问题,而不是lpSolve本身有问题。因此,您成功地通过一个API获得了预期的单调递减行为,而不是另一个API。这向我表明,要么是其中一个API存在问题,要么是您如何使用其中一个API实现您的过程,而不是lpSolve本身存在问题。