Балансировка эвристики (для задачи расписания) - PullRequest
0 голосов
/ 09 июня 2010

Я пишу генетический алгоритм для генерации расписаний.

В настоящее время я использую эти две эвристики:

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

Я хочу сбалансировать эти две эвристики, поэтому алгоритм не предпочтет ни одну.Каков наилучший способ добиться этого?

Ответы [ 2 ]

1 голос
/ 09 июня 2010

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

total_score = 0.4 * hours_score + 0.7 * holes_score

Вы можете даже сделать весы настраиваемыми пользователем.

0 голосов
/ 09 июня 2010
  1. Разработать функцию оценки для оценки качества сгенерированных расписаний. У вас есть идея для этого в ваших двух эвристиках.

  2. Создание некоторых случайных задач расписания.

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

  4. выберите новый набор весов баланса (т. Е. Вокруг района с лучшим выбором из прошлого раза) и повторите

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...