-1
我試圖解決的問題是分區問題,我必須將n個權重分爲k個組,每個組的權重應儘可能均勻。VBA - 錯誤2042
我想將一些啓發式的形式應用到我的初始解決方案中,嘗試改進隨機啓動但不斷遇到錯誤。
我的初始解法算法的基礎是;選擇下一個最大的未分類元素,並將其放置在權重最小的組中。注意:我已經將我的元素預先排列爲大小順序。
我已經開始使用下面的代碼;
Sub initialsolution(s() As Integer, n As Integer, k As Integer, w() As Long)
Dim i As Long, j As Long, l As long
ReDim mass(1 To k) As Long
For i = 1 To n
j = WorksheetFunction.Min(mass)
l = Application.Match(j, mass)
mass(l) = mass(l) + w(i)
Next i
End Sub
其中s()是當前從1空數組到n,我稍後填充,n是權重的數量,k是基的數目,並且w()是排序後的數組權重,在我的審判案例中,n = 8,k = 3,w =(5,4,3,3,2,2,1,1)。
我的問題出現時,我= 6,我正在考慮的重量2.質量有(6,6,5)的值,因此最小質量,j,是5。然而,在下一行,設置形成錯誤的值。當我將l更改爲變體時,它將其值設置爲錯誤2042,當它應該爲3.這會導致錯誤代碼「運行時錯誤'13':類型不匹配」由於錯誤2042無法用作索引。
謝謝你提前
你已經寫了很多關於背景的內容,然後似乎沒有發佈導致錯誤的代碼行...... VBA錯誤往往是相對通用的,所以有一個[可驗證的例子] (https://stackoverflow.com/help/mcve)。嘗試編輯您的問題,使其更容易回答特定的錯誤。 – Wolfie
你是如何傳遞你的論點的? – SJR
這是我的較大部分代碼中的代碼行,它運行子 「initialsolution s,n,k,w」其中所有參數已經預先定義 –