VBA - Error 2042



我要解决的问题是一个分区问题,我必须将n个权重分为k组,每个组的权重尽可能均匀。

我正在尝试将某种形式的启发式方法应用于我的初始解决方案,以尝试随机启动,但要遇到错误。

我的初始解决方案算法的基础是;选择下一个最大的未分类元素,然后将其放入其中重量最小的组中。注意:我已经将元素预定为尺寸顺序。

我从以下代码开始;

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 = 8,k = 3,w =(5,4,3,3,2,2,1,1(。

我的问题是在i = 6时出现的,我正在考虑重量2。l的值形成了错误。当我将l更改为一个变体时,将其值设置为错误2042,当它应为3时。这会导致错误代码"运行时错误'13':键入不匹配,因为错误2042无法用作索引。

预先感谢您

我找到了答案。如果我使用

l = Application.Match(j, mass, 0)

而不是

l = Application.Match(j, mass)

它有效。我不确定以前的错误是什么,但是这种新方法仅在第一次遇到匹配值并返回此索引时才考虑。

最新更新