Стоят ли "фабрики по обмену ходом"? - PullRequest
0 голосов
/ 08 февраля 2012

Я заметил, что для таких проблем, как Cloudbalancing, существуют фабрики ходов, которые генерируют ходы и свопы. «Move Move» передает облачный процесс с одного компьютера на другой. «swap move» меняет любые два процесса с соответствующих компьютеров.

Я разрабатываю приложение для составления расписания.

  1. A subjectTeacherHour (комбинация предмета и учителя) только подмножество из Period s, которому они могут быть назначены. Если Джейн преподает 6 часов в классе, есть 6 subjectTeacherHour с каждый, которые должны быть выделены Period, из возможных 30 Period с этого класса, в отличие от примера облачного баланса, где процесс может перейти к любой компьютер.
  2. Только один subjectTeacherHour может быть выделен Period (естественно).

Он пытается поместить subjectTeacherHour в допустимое значение Periods, пока не будет найдена оптимальная комбинация.


Плюсы

Руководство , кажется, рекомендует его.

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

... `[версия с большими ходами] оценивает гораздо менее выполнимо решения, которые позволяют ему превзойти и превзойти простые версия ....

... Как правило, рекомендуется использовать несколько селекторов, хорошо смешивая мелкозернистые ходы и ход зернистых ходов: ...

Хотя для Period может быть выделен только один subjectTeacher, решатель должен временно снять такое ограничение, чтобы обнаружить, что замена двух определенных Period распределений приводит к лучшему решению. Своп-ход «удаляет эту кирпичную стену» между этими двумя состояниями.

Таким образом, замена свопа может привести к лучшим решениям намного быстрее .

Против

A subjectTeacher имеют только подмножество из Period с, которому они могут быть назначены. Таким образом, найти пересекающиеся (общие) часы между любыми двумя subjectTeacher с немного сложно (но выполнимо изящно: Хороший алгоритм / метод для поиска перекрывающихся значений из свойств объектов? ).

Это даст мне лишь небольшой выигрыш во времени и оптимальность?

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

1 Ответ

1 голос
/ 08 февраля 2012

Своп ходы имеют решающее значение.

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

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

...