Как называется этот алгоритм? - PullRequest
3 голосов
/ 24 февраля 2009

Я пытаюсь найти эту проблему, но я не знаю, как она называется. Предпосылка такая:

С учетом m машин и j заданий, где каждое задание может быть назначено только машинам с i по j, мне нужно назначить задания на машины, чтобы я мог максимизировать занятые машины одновременно. Меня интересует только то, как они назначаются в момент 0. Меня не интересует, как я планирую оставшиеся работы после завершения работы.

Как только задание и машина назначены друг другу, никакое другое задание или машина не могут действовать ни на один из участников.

Ответы [ 6 ]

17 голосов
/ 24 февраля 2009
3 голосов
/ 24 февраля 2009

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

1 голос
/ 25 февраля 2009

Эта проблема представляет собой вариант проблемы упаковки бункера, который содержит более широкий спектр литературы, чем планирование процессора.

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

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

1 голос
/ 24 февраля 2009

Как они сказали, вы в основном пишете «планировщик».

Поскольку ваши 'j' задания, кажется, имеют равный приоритет, возможно, вы смотрите на 'Алгоритм циклического нарезания по времени'.

0 голосов
/ 24 февраля 2009

Как уже говорили другие, это планировщик.

Это также классическая задача, используемая для демонстрации разработки OOPS, и, в частности, она использовалась в качестве очень распространенного примера приложения для программирования на Smalltalk.

0 голосов
/ 24 февраля 2009

Звучит как планировщик.

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