R中的舍入公平性优化

R中的舍入公平性优化,r,mathematical-optimization,R,Mathematical Optimization,我有一个简单的问题,我想知道是否有一个聪明的解决方案,而不是粗略的计算 给定以下向量A,这里有一个使用百分比增加矩阵的方法。我把它放进一个函数中,取一个向量“x”和你想要添加的整数数“N”(解释见注释) 如果要查找领带,请使用: vec1 <- c(10,20,20,50,100) N <- 10 Allocate_Int(vec1,N)-Allocate_Int(vec1,N-1) [1] 0 0 0 1 1 vec1这是一种使用百分比增加矩阵的方法。我把它放进一个函数中,取一个

我有一个简单的问题,我想知道是否有一个聪明的解决方案,而不是粗略的计算


给定以下向量
A,这里有一个使用百分比增加矩阵的方法。我把它放进一个函数中,取一个向量“x”和你想要添加的整数数“N”(解释见注释)

如果要查找领带,请使用:

vec1 <- c(10,20,20,50,100)
N <- 10
Allocate_Int(vec1,N)-Allocate_Int(vec1,N-1)
[1] 0 0 0 1 1

vec1这是一种使用百分比增加矩阵的方法。我把它放进一个函数中,取一个向量“x”和你想要添加的整数数“N”(解释见注释)

如果要查找领带,请使用:

vec1 <- c(10,20,20,50,100)
N <- 10
Allocate_Int(vec1,N)-Allocate_Int(vec1,N-1)
[1] 0 0 0 1 1


vec1我不太清楚您所说的“将调整后元素的最大百分比变化最小化”是什么意思。也就是说,我希望每个要素的调整是“最公平的”。请详细说明您期望的结果,例如c(31,20151,51,31,71)或c(30,20155,50,30,70)。那领带呢?@RHA是对的,当你编辑这篇文章时,知道如何处理领带会非常有用。(如果列表中的6个部分都是相同的值怎么办)。我会编辑,谢谢你的建议。我认为这个问题已经结束了,这是一个很遗憾的问题,因为它可能是一个(非常)好的问题。我编辑它是为了寻求一个解决方案(而不是一个包)@dataquentious你能添加一些你用lpSolve尝试过的代码吗?@RHA:我还没有写任何代码,除了lpSolve的一个错误的开始是不正确的;因此,如果lpSolve真的不是问题的关键,那么我对备选方案的建议很感兴趣:)不过,如果我找到了一个合理的方法,我会更新这个问题。我还认为这实际上是一个有趣的问题,谢谢……我不太清楚你所说的“将调整后元素的最大百分比变化最小化”是什么意思。也就是说,我希望每个要素的调整是“最公平的”。请详细说明您期望的结果,例如c(31,20151,51,31,71)或c(30,20155,50,30,70)。那领带呢?@RHA是对的,当你编辑这篇文章时,知道如何处理领带会非常有用。(如果列表中的6个部分都是相同的值怎么办)。我会编辑,谢谢你的建议。我认为这个问题已经结束了,这是一个很遗憾的问题,因为它可能是一个(非常)好的问题。我编辑它是为了寻求一个解决方案(而不是一个包)@dataquentious你能添加一些你用lpSolve尝试过的代码吗?@RHA:我还没有写任何代码,除了lpSolve的一个错误的开始是不正确的;因此,如果lpSolve真的不是问题的关键,那么我对备选方案的建议很感兴趣:)不过,如果我找到了一个合理的方法,我会更新这个问题。我还认为这实际上是一个有趣的问题,谢谢……这是一个非常优雅的解决方案,它简洁直接。对于
x
1:N
中的大量元素而言,通过构造矩阵生成所有可能的解决方案组合可能有点昂贵,但在大多数对我重要的应用程序中
N
不会那么大,通常情况下。如果真的有必要(例如,单独计算
m1
中的每个逻辑行,并将
TRUE
值的数量相加),通过交换内存来减少矩阵也不难。谢谢@R中的数据矩阵运算速度很快,即使
Allocate\u Int(1:1000100)
也只需一秒钟。如果你觉得你的问题已经被回答了,那么请考虑通过点击答案的接受标记来接受答案。我确实认为答案是正确的,而且你的解决方案有助于看到一组潜在的解决方案是如何紧凑地被指定的。感谢大家帮助解决这个问题,非常感谢!这是一个非常优雅的解决方案,它紧凑而直接。对于
x
1:N
中的大量元素而言,通过构造矩阵生成所有可能的解决方案组合可能有点昂贵,但在大多数对我重要的应用程序中
N
不会那么大,通常情况下。如果真的有必要(例如,单独计算
m1
中的每个逻辑行,并将
TRUE
值的数量相加),通过交换内存来减少矩阵也不难。谢谢@R中的数据矩阵运算速度很快,即使
Allocate\u Int(1:1000100)
也只需一秒钟。如果你觉得你的问题已经被回答了,那么请考虑通过点击答案的接受标记来接受答案。我确实认为答案是正确的,而且你的解决方案有助于看到一组潜在的解决方案是如何紧凑地被指定的。感谢大家帮助解决这个问题,非常感谢!
Allocate_Int(c(1,1),3)
[1] 2 2
vec1 <- c(10,20,20,50,100)
N <- 10
Allocate_Int(vec1,N)-Allocate_Int(vec1,N-1)
[1] 0 0 0 1 1