Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 迭代寻找线性/二元规划问题的最佳k解_R_Mathematical Optimization_Linear Programming_Lpsolve_Integer Programming - Fatal编程技术网

R 迭代寻找线性/二元规划问题的最佳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

我正在解决一个最大化二进制规划问题(二进制规划与整数规划相同,但解决方案是0和1的向量)。我想找出最好的10个解决方案。我不是指所有10个目标函数值都必须相等的10个最佳解,而是:我希望第一个解是给定约束条件下的最优解;我希望第二个解决方案是最优的,如果第一个解决方案被排除;如果排除第一个和第二个解决方案,则第三个解决方案必须是最优的,依此类推

我在R中使用lpSolve包,它只提供单一的最佳解决方案。因此,我编写了一个脚本,试图迭代地找到最佳的k解决方案,如下所示:

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本身存在问题。