数据与约束的可能组合

时间:2016-01-13 09:14:51

标签: excel vba excel-vba combinations

我正在使用行星齿轮组合。
价值条件如下:

s: min(20), max(40)  
p: min(20), max(40)  
r: s + 2*p

constraint:  
(s + r)/4>0 : true  
p + 2 < (s + p)*sin(180/4) : true

我想计算s,p和r的所有可能的偶数组合。
输出的例子:

s       p      r  
20     30     80  
40     20     80  
.  
.  

任何人都可以帮助我吗? 我一直在环顾四周,但尚未找到解决方案。

1 个答案:

答案 0 :(得分:0)

首先,您可以定义两个表示约束的私有布尔函数,这是第一个约束的示例:

Private Function constraint1(ByVal s As Integer, ByVal p As Integer, ByVal r As Integer) As Boolean
    If (s+r)/4 > 0 Then
        constraint1 = True
    Else
        constraint1 = True
    End If
End Function

然后,您可以为2040的{​​{1}}到s的所有数字定义循环,并验证是否遵守这三个约束:if所以,然后在工作表上打印值:

r

P.S。我不确定是否已经理解了所有偶数&#34;,但如果您真的希望For s = 20 To 40 For p = 20 To 40 r = s + 2*p If constraint1(s,p,r) And constraint2(s,p,r) Then 'it's a valid trio of (s,p,r), so you can print it on the sheet End If Next p Next s s只是偶数,那么您可以添加{ {1}}运算p周期,以使其始终均匀:

Step

如上所述,For将是For s = 20 To 40 Step 2 ,然后是s,然后是20(每个循环基本上是2步)。