在R中,基于约束为模型生成每个可能的解决方案

时间:2014-12-22 16:31:44

标签: r permutation

在R中,我正在尝试生成一个矩阵,该矩阵显示模型的结果和用于解决它们的值 - 所有这些都受到约束。每一种可能的解决示例模型:

  

模型= a ^ 2 + b ^ 2 + c ^ 2 + d ^ 2

     

其中:

     

20≤Model≤30

     

A = 1

     

2≤b≤3

     

2≤c≤3

     

3≤d≤4

我希望输出看起来像这样:

    [a] [b] [c] [d] [Model]
[1]  1   3   2   3    23
[2]  1   2   2   4    25
[3]  1   3   3   3    28
[4]  1   2   3   3    23

订单无关紧要。我只想要可行[整数]值的完全排列。任何包裹或帮助你可以指出我的方式?

在我的示例中,我想基于我设置的参数生成保持有效的所有可能输入(a,b,c,d)。我只希望输出方程(模型)中的值在20到30之间。在这种情况下,根据我设置的标准,只有4种解决方案是可能的。

1 个答案:

答案 0 :(得分:4)

假设您只是在寻找整数解,您可以使用expand.grid()

dd <- expand.grid(a=1, b=2:3, c=2:3, d=3:4)
m <- with(dd, a^2+b^2+c^2+d^2)
inside <- function(x, a,b) a<=x & x<=b
cbind(dd, m)[inside(m, 20, 30),]

#   a b c d  m
# 2 1 3 2 3 23
# 3 1 2 3 3 23
# 4 1 3 3 3 28
# 5 1 2 2 4 25
# 6 1 3 2 4 30
# 7 1 2 3 4 30

(你说你想要值&lt; = 30但你似乎在你的例子中省略了30,你可以改变你想要开放间隔的inside()函数)