Планирование производственных операций

Последний пример данного раздела связан с планированием работ в производственном процессе. Множество ответов описываемой программы также подчинено циклическому закону, а количество фаз цикла равно числу станков, занятых в производственном процессе. Каждый ответ, Выдаваемый программой, является списком, который описывает местонахождение всех изготавливаемых изделий в конкретный момент времени.

Для простоты будем считать, что в производственном процессе участвуют только три станка - «станок1», «станок2» и «станокЗ». Предположим, что нужно изготовить три изделия - А, Б и В. За один интервал Времени станок может обработать только одно изделие. При переходе от одного интервала времени к другому все изделия перемещаются к следующим по производственному циклу станкам. До того, как изделие попадает на первый станок, оно считается не сделанным. После того как изделие пройдет полный цикл обработки, оно считается изготовленным Множество ответов изображено в табл. 4. 2.

Таблица 4. 2

Перемещение изделий с течением времени

изделие А

изделие Б

изделие В

интервал 1

не сделано

не сделано

не сделано

интервал 2

станок 1

не сделано

не сделано

интервал 3

станок 2

станок 1

не сделано

интервал 4

станок 3

станок 2

станок 1

интервал 5

изготовлено

станок 3

станок 2

интервал 6

изготовлено

изготовлено

станок 3

интервал 7

изготовлено

изготовлено

изготовлено

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

% От К

переход (не_сделано, не_сделано).

переход (не_сделано, станок 1).

переход (станок1, станок2).

переход (станок2, станокЗ).

переход (станок3, изготовлено).

переход (изготовлено, изготовлено).

Первый факт "переход" необходим для того, чтобы изделие могло находиться в состоянии «не_сделано» до тех пор, пока не освободится «станок I». Последний факт позволяет сохранить изделие в состоянии «изготовлено» после того, как оно пройдет весь цикл обработки. В процедуре "поток_изделий" первым аргументом является список изделий, а вторым - выходным - аргументом служит список структур "сост", описывающих местонахождение каждого изделия.

% имена переменных:

% А, В — изделия

%S1, S2 - станки

% Список изделий Местонахождение изделий

% + -

поток_изделий ([А, В| Остаток], [сост (А, S1), сост (В, S2); Изд]): -

переход (S2, S1),

поток_изделий ( [В| Остаток], [сост (В, S2) | Изд]).

% Последнее изделие в списке:

поток_изделий ([А], [сост (A, S1)):-

переход (_, S1).

Подцель "переход" осуществляет поиск с возвратом по фактам "переход", чтобы показать продвижение одного изделия по стадиям производственного процесса. Процедура "поток_изделий" рекурсивно выдвигает столько подцелей "переход", сколько насчитывается изделий во входном списке. Она также обеспечивает то, чтобы положение некоторого изделия в производственном цикле всегда отставало на одну стадию от положения другого изделия, стоящего во входном списке перед данным. В нижеследующем запросе представлены для обработки три изделия:

|?— поток_изделий ([изделиеА, изделиеБ, изделиеВ], Т).

Т = [сост(изделиеА, не_сделано), сост (изделие Б, не_сделано),

сост (изделиеВ, переделано)];

Т= [сост (изделие А, станок 1), сост (изделие Б, не_сделано),

сост (изделиеВ, не_сделано)];

Т= [сост (изделиеА, станок2}, сост (изделиеБ, станок1),

сост (изделиеВ, не_сделано)];

Т= [сост (изделиеА, станок3), сост (изделиеБ, станок2),

сост (изделиеВ, станок1)];

Т = [сост (изделиеА, изготовлено), сост (изделиеБ, станокЗ),

сост (изделиеВ, станок2)];

Т = [сост (изделиеА, изготовлено), соcт (изделиеБ, изготовлено),

сост (изделиеВ, станокЗ)];

Т= [сост (изделиеА, изготовлено), сост (изделиеБ, изготовлено),

сост (изделиеВ, изготовлено)];

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

Соседние файлы в папке Гл.0,1,2,3,4,5,Предисловие