根据理想的解决方案评分结果

时间:2018-01-12 16:27:52

标签: algorithm schedule

我正在寻找大量可能的结果,虽然我可能找不到完美的结果,但我想对各种结果进行评分,看看它们与理想结果有多接近。 (我想想我在谈论某种加权评分,但是如果我完全偏离基础,不要让这影响你的答案。)

对于某些情况,我正在制作各种工作时间表,并希望得到每个结果,以便我不必单独查看它们(这是一种蛮力的方法,并且有数十亿的解决方案)确定一个人是否比任何一个更好或更差。

输入方面,对于每个生成的时间表,我有一个3x14阵列,其中包含计划在任何给定日期每个班次工作的总人数(即,在两周时间内的每一天,那天工作日,秋千和中转的人们。)

到目前为止,我已经尝试过:

A)对每行中的值求和,然后将每个和(行)乘以权重(例如,行0和* 1,行1总和* 2,行2总和* 3等),最后加在一起加权和

function calcScore(a)
    dim iCol, iTotalD, iTotalM, iTotalS

    for iCol = 0 to 13
        iTotalD = iTotalD + a(0)(iCol)
        iTotalS = iTotalS + a(1)(iCol)
        iTotalM = iTotalM + a(2)(iCol)
    next

    calcScore = iTotalD + iTotalS * 2 + iTotalM * 3
end function

B)将每行中的每个值乘以权重(例如,行0(0)* 1,行0(1)* 2,行0(2)* 3等),然后对加权值求和每一行

function calcScore(a)
    dim iCol, iTotalD, iTotalM, iTotalS

    for iCol = 0 to 13
        iTotalD = iTotalD + a(0)(iCol) * (iCol + 1)
        iTotalS = iTotalS + a(1)(iCol) * (iCol + 1)
        iTotalM = iTotalM + a(2)(iCol) * (iCol + 1)
    next

    calcScore = iTotalD + iTotalS + iTotalM
end function

以下是一些理想和非理想的样本输入(时间表)。请注意,在我的理想示例中,每一行都是相同的(例如,所有4个或全部3个),但在实际使用中不一定是这种情况。我的计划是为我的理想日程安排得分,并将其他日程安排的分数与之比较。

 Ideal:
        Su Mo Tu We ...
   Day: 4  4  4  4  ...
 Swing: 3  3  3  3  ...
   Mid: 2  2  2  2  ...

 Not Ideal:
        Su Mo Tu We ...
   Day: 3  4  4  4  [D(0) is not 4]
 Swing: 3  3  3  3
   Mid: 2  2  2  2

 Not Ideal:
        Su Mo Tu We ...
   Day:  4  4  4  4
 Swing:  3  3  4  3  [S(2) is not 3]
   Mid:  0  2  2  2  [M(0) is not 2]

1 个答案:

答案 0 :(得分:0)

将我的评论总结为答案。

因此,您拥有最佳/理想/完美的解决方案,并希望与其他解决方案进行比较。在这种情况下,您可以计算(平方)误差的总和。如果您需要分数,可以反转错误。

具体而言,您必须通过查看矩阵的每个条目并计算差异来计算解与最优之间的(平方)差的总和。将这些(平方)差异相加并得出错误。

对于您给出的错误总和的示例如下:

E(Ideal, Not Ideal 1) = 1
E(Ideal, Not Ideal 2) = 3

平方误差的总和将产生以下结果:

SQE(Ideal, Not Ideal 1) = 1
SQE(Ideal, Not Ideal 2) = 5

通常,使用平方误差之和来处理较大的错误而不是几个小错误。