Вопрос:

Оценка результатов на основе идеального решения

algorithm schedule

38 просмотра

1 ответ

112 Репутация автора

Я ищу большое количество возможных результатов, и, хотя я не могу найти идеальный результат, я хотел бы оценить различные результаты, чтобы увидеть, насколько они близки к идеалу. (Я думаю, что я говорю о какой-то взвешенной оценке, но не позволяйте этому влиять на ваш ответ в случае, если я полностью вне базы.)

Для некоторого контекста я создаю множество рабочих графиков и хотел бы, чтобы каждый результат оценивался так, чтобы мне не приходилось смотреть на них по отдельности (это грубый метод, и есть буквально миллиарды решений), чтобы определить если один лучше или хуже, чем любой другой.

Что касается ввода, для каждого сгенерированного расписания у меня есть массив 3х14, в котором содержится общее количество людей, на которых запланирована работа в каждую смену в любой данный день (т. Е. Для каждого дня в двухнедельный период - количество рабочих дней). , качели и середины в этот день).

Пока что я пробовал:

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]
Автор: Brian Источник Размещён: 12.01.2018 04:27

Ответы (1)


0 плюса

2283 Репутация автора

Решение

Обобщая мои комментарии в ответ.

Таким образом, у вас есть оптимальное / идеальное / идеальное решение и вы хотите сравнить с ним другие решения. В этом случае вы можете, например, вычислить сумму ошибок (в квадрате). Если вам нужен счет, вы можете обратить ошибку.

В частности, вам нужно будет вычислить сумму разностей (в квадрате) между решением и оптимальным, посмотрев на каждую запись вашей матрицы и вычислив разницу. Суммируйте эти (квадратные) различия, и вы получите ошибку.

Для приведенных вами примеров сумма ошибок выглядит следующим образом:

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

Сумма квадратов ошибок даст следующее:

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

Обычно сумма квадратов ошибок используется для того, чтобы штрафовать большие ошибки больше, чем несколько мелких ошибок.

Автор: SaiBot Размещён: 22.01.2018 08:18
Вопросы из категории :
32x32