Алгоритм Планирования Best Fit
Я пишу программу планирования со сложной проблемой программирования. Существует несколько событий,каждое из которых имеет несколько встреч. Мне нужно найти такое расположение времени встречи, чтобы каждое расписание содержало любое данное событие ровно один раз, используя одно из нескольких встреч каждого события.
очевидно, я мог бы использовать грубую силу, но это редко лучшее решение. Я предполагаю, что это относительно базовая проблема информатики, о которой я узнаю, как только смогу начните посещать занятия по информатике. В то же время я бы предпочел любые ссылки, где я мог бы прочитать об этом, или даже просто имя, которое я мог бы Google.
4 ответов
Я думаю, вы должны использовать генетический алгоритм, так как:
- лучше всего подходит для больших случаев.
- это дает снижение сложности времени по цене неточного ответа (не самый лучший)
- вы можете легко указать ограничения и предпочтения, регулируя фитнес-наказания для не встреченных.
- вы можете задать ограничение по времени для выполнения программы.
-
качество решения зависит от того, сколько времени вы намерены потратить на решение программы..
Определение Генетических Алгоритмов
есть несколько способов сделать это
один подход заключается в программировании ограничений. Это частный случай динамического программирования, предложенного феанором. Полезно использовать специализированную библиотеку, которая может выполнять ограничение и ветвление для вас. (Google для" gecode "или" comet-online", чтобы найти библиотеки)
Если вы математически склонны, то вы также можете использовать целочисленное программирование для решения проблемы. Основная идея здесь заключается в том, чтобы перевести вашу проблему в множество линейных неравенств. (Google для "целочисленного планирования программирования", чтобы найти много примеров реальной жизни и google для "Abacus COIN-или" для полезной библиотеки)
Я предполагаю, что программирование ограничений является самым простым подходом, но целочисленное Программирование полезно, если вы хотите включить реальные переменные в свою проблему в какой-то момент.
ваше описание проблемы не совсем ясно, но если все, что вы пытаетесь сделать, это найти расписание, которое не имеет перекрывающихся событий, то это просто максимальное паросочетание
Это звучит так, как будто это может быть хорошим кандидатом на динамическое программирование решение, в частности, что-то похожее на интервал планирования