2016-01-13 80 views
-2

我正在使用行星齒輪組合。
值條件是如下:可能的數據組合與限制

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 
. 
. 

誰能幫助我?
我一直在環顧四周,但還沒有找到解決方案。

回答

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 

然後,你可以定義一個循環都去從20到數字40既爲sr和驗證,如果三個約束得到尊重:

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 

PS:如果是這樣,那麼你在紙張上打印值我不確定是否已經理解了「所有偶數」,但是如果您確實想要sp僅爲偶數,則可以將Step運算符添加到For循環中,以使其始終爲偶數:

For s = 20 To 40 Step 2 

上面一樣,s20,然後22,然後24(將2每個環路基本上工序)。