Job Shop Scheduling - проект класса - советы по ссылкам / алг. использовать для реализации и получения экспериментальных результатов

Я работаю над проектом по реализации и тестированию проблемы NP-Hard / Complete. У меня была общая идея сделать что-нибудь с расписанием, и я много читал о проблеме Job Shop. Я знаю, что есть известные тестовые примеры / тесты из библиотеки OR. У меня есть код (Java) для чтения в тестовом экземпляре и хранения его данных. Теперь я чувствую себя застрявшим в петле, пытаясь найти алгоритм / способ создания расписания, а затем представить оптимальное расписание. Я читаю много научных статей, но обычно немного теряюсь в них, особенно со сложной системой обозначений. Хотел бы я найти больше примеров псевдокода. Я знаю, что это классическая проблема, и мне интересно, есть ли у кого-нибудь предложения по прямым классическим решениям для работы магазина - особенно те, которые также имеют примеры псевдокода. Мне не нужно проводить оригинальные исследования для этого проекта. Мне просто нужно научиться применять известную технику для решения проблемы NP-Hard, написать код, запустить тест, представить экспериментальные результаты и прокомментировать их. Мы будем очень благодарны за любой совет или помощь.

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

Пример экземпляра проблемы:

Каждая строка в разделе данных задает задание 10 парами последовательных чисел. Каждая пара чисел определяет одну задачу задания, которая представляет обработку задания на машине. Для каждой пары первое число определяет машину, на которой она выполняется, а второе число - продолжительность. Порядок 10 пар определяет последовательность задач для работы.

«Экземпляр Лоуренса 10х10» (Таблица 6, экземпляр 4); также называется (seta4) или (A4) (Applegate and Cook; 1991) -10 машин с номерами 0-9-10 строк = 10 заданий - оптимально: 842

2 44 3 5 5 58 4 97 0 9 7 84 8 77 9 96 1 58 6 89

4 15 7 31 1 87 8 57 0 77 3 85 2 81 5 39 9 73 6 21

9 82 6 22 4 10 3 70 1 49 0 40 8 34 2 48 7 80 5 71

1 91 2 17 7 62 5 75 8 47 4 11 3 7 6 72 9 35 0 55

6 71 1 90 3 75 0 64 2 94 8 15 4 12 7 67 9 20 5 50

7 70 5 93 8 77 2 29 4 58 6 93 3 68 1 57 9 7 0 52

6 87 1 63 4 26 5 6 2 82 3 27 7 56 8 48 9 36 0 95

0 36 5 15 8 41 9 78 3 76 6 84 4 30 7 76 2 36 1 8

5 88 2 81 3 13 6 82 4 54 7 13 8 29 9 40 1 78 0 75

9 88 4 54 6 64 7 32 0 52 2 6 8 54 5 82 3 6 1 26


person lanakin    schedule 26.11.2012    source источник
comment
Разве для этого не подошел бы тег алгоритма вместо c ++ и java? Почему языки программирования?   -  person jogojapan    schedule 26.11.2012
comment
Ох, хорошо. не был уверен, что использовать. на самом деле не опубликовал много вопросов.   -  person lanakin    schedule 27.11.2012
comment
Что ж, я думаю, что я довольно далеко продвинулся с решением, которое использует простое построение начального расписания и использование базовой техники локального поиска для улучшения расписания. [email protected] для любых других, пытающихся решить эту проблему, таких как я, которые заинтересованы.   -  person lanakin    schedule 04.12.2012


Ответы (1)


Взгляните на алгоритмы, используемые в Drools Planner (среда Java с открытым исходным кодом для планирования этих вид проблем), они объясняются в подробное руководство.

person Geoffrey De Smet    schedule 26.11.2012