Выпуск 3
3. Булавский В. А. О решении задач оптимального раскроя линейных материалов на ЭВМ / В. А. Булавский, М. А. Яковлева // Математические методы в технико-экономических расчетах: материалы науч. совещ. — М.: АН СССР, 1961. — Т. IV.
4. Информационные технологии в транспортной логистике: сб. материалов / сост. А. К. Тру-ханов. — М.: КИА центр, 2000. — 81 с.
5. Мухачева Э. А. Методы условной оптимизации в задаче рационального раскроя листового проката / Э. А. Мухачева // Оптимизация: сб. науч. тр. СО АН СССР. — 1978. — Вып. 22.
6. Мухачева Э. А. Рациональный раскрой промышленных материалов. Применение в АСУ /
Э. А. Мухачева. — М.: Машиностроение, 1984. — 176 с.
7. Мухачева Э. А. Рациональный раскрой прямоугольных листов на прямоугольные заготовки / Э. А. Мухачева // Сб. науч. тр. СО АН СССР. — 1966. — Вып. 6.
8. Мухачева А. С. Задачи двумерной упаковки: развитие генетических алгоритмов на базе смешанных процедур локального поиска оптимального решения / Э. А. Мухачева [и др.] // Прил. к журн. «Информационные технологии». — 2001. — № 9. — 24 с.
9. МухачеваЭ. А. Метод перестройки для решения задач прямоугольной упаковки / Э. А. Му-хачева, А. С. Мухачева // Информационные технологии. — 2000. — № 4.
УДК 681.322 В. Д. Чертовской,
РЕАЛИЗАЦИЯ ЗАДАЧИ ДИНАМИЧЕСКОГО ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ ПРИ ОПТИМАЛЬНОМ ПЛАНИРОВАНИИ СУДОСТРОИТЕЛЬНОГО ПРОИЗВОДСТВА
REALIZATION OF DYNAMIC LINEAR PROGRAMMING TASKBY OPTIMAL
MANUFACTURING PLANNING
Показана необходимость рассмотрения процедур перехода от задачи динамического линейного программирования к статическому линейному программированию и возможности ускорения расчетов адаптивных автоматизированных систем управления производством. Излагаются теоретические основы реализации и прикладное выполнение задач с использованием СУБД.
Necessity to consider procedures of transition from dynamic linear programming task to static linear programming task and computations accelerate convenience of adaptive automatized control of manufacturing are shown. Theoretical basis of realization and applied execution of tasks with application of Databases Control Sys-
Ключевые слова: адаптивные автоматизированные системы, реализация, задача динамического линейного программирования.
Key words: adaptive automatized system, realization, dynamic linear programming task.
д-р техн. наук, профессор,
СПГУВК
tems are set.
Введение. В современных организационных системах, например в судостроительных производствах, для процесса планирования все чаще [1, с. 123-128; 2] используют
задачу динамического линеиного программирования.
Постановка задачи. Задача ДЛП имеет следующий математический вид:
z(t) = Az(t1) + Bpj(t), Z(0) = Z0, (1) p(t) = Cz(t), (2)
Dpi(t) < b(t1), p(t) > 0, (3)
N
R(T) < Sp(t) < R+(T), (4)
t =1
N
G = FSp(t) ^ min, (5)
i=i
где R(T), R+(T) — нижнее и верхнее значения спроса; z, p — векторы планового незавершенного производства и ежедневного плана, p1 — вектор запуска комплектов материалов в производство, D — матрица норм расходов, b — вектор наличного количества ресурсов; F — прибыль от выпуска единицы продукции, A, B, C — матрицы соответствующей размерности, отражающие динамику процесса планирования; т, T (T = Nt, N — целое число) — минимальный интервал времени и время моделирования.
Трудность решения задачи ДЛП заключается в специфическом учете динамики выражениями (1) и (2). Для успешного решения задачи следует первоначально привести [2]
задачу ДЛП к задаче статического линейного программирования
G(p) = FP ^ max, (6)
b* < Dp < b*, (7)
d* < p < d*, (8)
где d*, d* — нижнее и верхнее ограничения плана.
В то же время в работе [2] показано, что задача (1)-(5) сводится к задаче
b*(i 1) < Dp(t) < b*(i 1), (9)
d*(0 < p(0 < d*(0, (10)
N
R(7) < Ep(0 < R+(T), (11)
i=1
N
G = -FSp(i) ^ min, (12)
i=1
Ограничения (9), (10) — локальные, ограничение (11) — глобальное. Нетрудно заметить, что задача (9)-(12) обладает значительно большей размерностью, чем задача (1)-(5).
База данных
Переменная р
Шифрв
План р
Значение п
Нижняяграница
Цена (прибыль)
Верхняяграница
т
т
Время
Шифрв
Назв в
Матрица D
Ресурс r
План p
Коэффициент
т
т
Ограничения
Шифрв
Ресурс r
Знак
Сверху
Снизу
l_J___________________________________________________________________________________________________________I
Алгоритм задачи (6)-(8) СЛП, по Р. Габасову
Выпуск 3
Выпуск3
В реализации задачи (9)-(12) возникают, таким образом, два затруднения: повышенная размерность и наличие глобального ограничения (11).
Решение задачи. Решение этой задачи возможно с применением стандартных пакетов (например, Excel, MatLab с программой Linprog). Повышенная размерность задачи требует ускорения ее решения. Это возможно сделать двумя путями: формированием более быстродействующих методов решения и приведением глобальной задачи (9)-(12) к системе локальных задач.
Использование быстродействующих методов. Более быстродействующим методом является адаптивный метод Р. Габасова [3]. Он программно реализован на языке программирования Pascal [3] и СУБД InterBase в среде
Бе1рЫ [2] в квазирежиме клиент-сервер. В то же время при значительных размерах задачи необходим полный режим клиент-сервер.
Решение задачи ДЛП предполагает следующие этапы: реализация системы таблиц, включая триггеры; формирование интерфейса пользователя; построение алгоритма приложения.
Первые два этапа стандартны и не требуют детального освещения. На третьем этапе следует выделить переход от задачи ДЛП (1)-(5) к задаче СЛП (6)-(8) и реализацию задачи СЛП в полном режиме клиент-сервер. Задача
(1)-(5) реализуется по схеме, приведенной на рис. 1
При решении задачи (9)-(12) может быть использована БД со схемой, представленной на рис. 2.
Состояние г
Шифр2
Назван г
х(І)
Шифрг
Шифрі;
Шифрг
Шифрг!
РесурсЬ
Шифрг
Назван г
ЦенаЬ
ш
ш
т
т
т
т
т
т
Шифрі
р(0
Шифр_р
Шифрі;
Рі(*)
т
Шифр_р
Шифрг
т
Ресурс Ь(Х)
Шифрі;
Шнфрг
Налич_Ь(ї)
Приход_ЛЬ(1;)
т
т
т
т
т
т
Выход_р
Шифрр
Спрос 11+(Т)
Спрос Я(Т)
ЦенаБ!
Назван_р
АВ
Шнфрг
Шифр_р
В
АпВ
В
Шифр/
Шифр_р
В
ЪВ
Норма_Б
Шифр_р
Шифрг
О
€
Выпуск 3
Выпуск 3
База данных для этой задачи представлена на рис. 3.
Преобразованная задача может быть представлена выражениями
J1( p1) = F(AKB)U ^ max, (13)
F. < U < F*, (14)
R1 < WU < R+1, (15)
где R1 = R CArz0; R 1 = R+ CArz0; W = C(AKB) — матрица; F/ = (b*(0) ... b*(N 1)); F*T = (b*(0) ... b*(N 1)); K = (N v 1; v =
0, N 1; UT = (p^O), p1(1), ..., p1(N 1,)); (AKB) = (AN 1B A(N 2B ... AB B).
Рассмотрим детальнее задачу перехода, спецификой которой является необходимость вычисления матриц AtB. Это вычисление значительно сложнее получения результата произведения двух матриц AB, которое осуществляется применением функции агрегации Sum и не представляет труда. Однако получение в одном запросе последующих степеней матрицы A затруднено, поскольку приходится искать результат для Sum(A{Sum(AtB)}) и т. д. Такую операцию СУБД выполнить не может и приходится искать другие пути решения. Чтобы их оперативно апробировать, используем первоначально СУБД Access.
Возможны следующие случаи постановки задачи.
1. Размерность задачи неизменна, меняются лишь числовые данные:
а) система таблиц строится в первый
раз;
б) система таблиц имеется, необходимо изменить числовые данные.
2. Размерность задачи меняется.
В силу сложности задачи обсудим первоначально ручной вариант ее решения.
Полагаем, что имеются две заполненные таблицы: МатрА (с полями а, б, A1) и МатрБ (а, б, Б1).
Начнем с рассмотрения случая 1, а. Схема его реализации (способ 1) представлена на рис. 3.
Сначала построим запрос А1Б
SELECT МатрА.а, МатрБ.б, Sum([A1]*^1]) AS А1Б
FROM МатрА INNER JOIN МатрБ ON МатрА.б = Мтр_Б.а GROUP BY МатрА.а, МатрБ.б;
Далее запрос А1Б трансформируем в таблицу МатрА1 Б
SELECT МатрА.а, МатрБ.б, Sum([A1]*^1]) AS В1 INTO МатрА 1Б FROM МатрА INNER JOIN Мтр_Б ON МатрА.б = МатрБ.а GROUP BY МатрА.а, МатрБ.б.
Аналогичным образом формируется запрос А2Б и таблица МатрА2Б. Процедура продолжается, пока не будет построена таблица МатрАпБ.
В случаях 1, б; 2 первоначально корректируются числовые данные таблиц МатрА и МатрБ, а затем с точки S (рис. 4) возможно применить макрос.
Недостатком способа 1 является наличие значительного количества запросов и таблиц (объектов), особенно при большой размерности задачи.
Способ 2 (рис. 5) позволяет сократить число объектов за счет использования цикла, который можно организовать с помощью макроса. Используются те же команды, что и в способе 1. Копия таблицы АгБ необходима как промежуточное запоминающее устройство, поскольку при формировании последующей таблицы А(г + 1)Б предыдущая таблица должна быть уничтожена, а без нее не будет существовать соответствующий запрос.
Способ 3, а (рис. 6) предполагает начальное получение таблицы АБ с последующим умножением на таблицу А и записью результата в специальную таблицу АпБ. Возможно (способ 3, б) и поэтапное получение значений Аг с последующим умножением на МатрБ и записью результата в специальную таблицу АпБ.
Пример реализации способа 3, а приведен в разделе «Моделирование и его результаты». Другие способы также успешно апробированы.
Приведение глобальной задачи к системе локальных задач. Задачу (6)-(9) возможно решить двумя способами.
1. «В лоб» как единую задачу. Однако потребуется найти решение для всех p(0, что связано с решением высокоразмерной задачи.
2. Если бы глобальное ограничение (8) удалось «разделить» на отдельные интервалы времени, то глобальная задача могла бы решаться как система локальных задач (отдельно для каждого интервала времени) значительно меньшей размерности. Глобальная задача в целом решалась бы быстрее.
Будем искать возможности преобразования глобальной задачи без потери оптимальности.
Выделим задачу, которую назовем задачей А, включим выражения (6), (7), (9) и будем иметь оптимальное решение pд(0. Обозначим оптимальное решение задачи (6)-(9) через pБ(0.
Рис. 5. Схема преобразования таблиц ДЛП в СЛП (способ 2)
Рис. 4. Схема преобразования таблиц ДЛП в СЛП (способ 1)
Рис. 6. Схема преобразования таблиц ДЛП в СЛП (способ 3)
Введем обозначение N
H(p(0) = £p(0, H(pA(0) = Rq.
При нахождении pB(0 через p^O возможны 4 случая, которые иллюстрируем числовым примером c RА = (0 15 3 0 15 3)T. R. = (0 30 6)T
1. H^^O) < R(T) < R0. Программа решения задачи в MatLab имеет вид
function x= nlp1m(f,A,b,lb); f=[-5; -4; -6; -5; -4; -6];
A=[1 1 1 0 0 0; 3 2 4 0 0 0; 3 2
0 0 0 0; 0 0 0 1 1 1; 0 0 0 3 2 4; 0 0
0 3 2 0; 0 -1 0 0 -1 0; 0 0 -1 0 0 -1;
0 1 0 0 1 0; 0 0 1 0 0 1];
b=[20; 42; 30; 20; 42; 30; -27; -
5; 30; 6];
lb=zeros (6,1);
[x]=linprog(f,A,b, [], [],lb);
Optimization terminated.
t=i
Выпуск 3
ans =
0.0000
15.0000
3.0000 0.0000
15.0000
3.0000
Иначе говоря, pB(0 = p^).
2. H^)) < R(T) > R0.
function x= nlp1m(f,A,b,lb); f=[-5; -4; -6; -5; -4; -6];
A= [ 1 1 1 0 0 0; 3 2 4 0 0 0; 3 2
0 0 0 0; 0 0 0 1 1 1; 0 0 0 3 2 4; 0 0
0 3 2 0; 0 -1 0 0 -1 0; 0 0 -1 0 0 -1;
0 1 0 0 1 0; 0 0 1 0 0 1];
b= [20; 42; 30; 20; 42; 30; -31; -
7; 32; 8];
lb=zeros (6,1);
[x]=linprog(f,A,b, [], [],lb);
Exiting: One or more of the residuals, duality gap, or total relative error has stalled:
the primal appears to be infeasible (and the dual unbounded).
(The dual residual < TolFun=1.00e-008.)
ans =
0.0000
15.0878
3.9718
0.0000
16.2057
3.4224
Задача несовместна.
3. H^O) < R+(T) < R0.
function x= nlp1m(f,A,b,lb); g f=[-5; -4; -6; -5; -4; -6];
I A= [ 1 1 1 0 0 0; 3 2 4 0 0 0; 3 2
“"Г 0 0 0 0; 0 0 0 1 1 1; 0 0 0 3 2 4; 0 0
0 3 2 0; 0 -1 0 0 -1 0; 0 0 -1 0 0 -1;
0 1 0 0 1 0; 0 0 1 0 0 1];
b= [20; 42; 30; 20; 42; 30; -27; -
4; 28; 5];
lb=zeros (6,1);
[x]=linprog(f,A,b, [], [],lb);
Optimization terminated.
ans =
0.6667
14.0000
2.5000
0.6667
14.0000
2.5000
Иначе говоря, pE(t) < pA(t).
4. H(pa(0) < R+(T) > Rq.
function x= nlp1m(f,A,b,lb);
f=[-5; -4; -6; -5; -4; -6];
A= [ 1 1 1 0 0 0; 3 2 4 0 0 0; 3 2
0 0 0 0; 0 0 0 1 1 1; 0 0 0 3 2 4; 0 0
0 3 2 0; 0 -1 0 0 -1 0; 0 0 -1 0 0 -1;
0 1 0 0 1 0; 0 0 1 0 0 1];
b=[20; 42; 30; 20; 42; 30; -27; -
4; 31; 7];
lb=zeros (6,1);
[x]=linprog(f,A,b, [], [],lb);
Optimization terminated.
ans =
0.0000
15.0000
3.0000
0.0000
15.0000
3.0000
Иначе говоря, pE(t) = pA(t).
Таким образом, может быть предложен следующий алгоритм решения задачи (6)-(9).
1. Решается N задач А. Находятся их решения pA(t), определяется вектор Rq.
2. Для случаев 1 и 4 решение найдено.
3. В случае 2 система несовместна и требуется определить условия совместности
4. В случае 3 следует решать задачу целиком. Правда, в [4] предложен другой вариант. Задача А трансформируется в двойственную. Добавляется условие (8) и решается двойственная задача. Однако здесь не-
обходим алгоритм двойственного симплекс-метода.
Моделирование и его результаты.
Проверим справедливость сказанного на числовых примерах в СУБД Access и InterBase.
СУБД Access. Для примера опишем более подробно реализацию способа 3 (рис. 6) в СУБД Access. Создаются таблицы A(/, j, val) = B(/, j, val). Для проверки работоспособности алгоритма принята матрица
A=
2
4
Запрос zapAB
SELECT B.i, Bj, B.val INTO AB FROM B;
на создание таблицы формирует копию таблицы A.
Запрос zapAB на создание таблицы AB имеет вид
SELECT A.i AS i, ABj, Sum([A].[val]*[AB].[val ]) AS val INTO proizved FROM A INNER JOIN AB ON Aj = AB.i GROUP BY A.i, AB j;
Рис. 6. Реализация способа 3
Матрица AnB, n порядок матрицы A, формируется запросом proizv на создание таблицы proizved
SELECT A.i, Bj, Sum([A].[val]*[B].[val]) AS val INTO AB
FROM T_A INNER JOIN B ON T_A j = B.i GROUP BY T_A.i, B j;
Запрос zapobr на создание таблицы AB сформирован так
SELECT proizved.i, proizved.j, proizved.val INTO AB FROM proizved;
Выпуск 3
Выпуск 3
Для упрощения интерфейса созданы два макроса. Макрос zapAB активизирует запрос zapAB.
Макрос multiple состоит из нескольких макросов: макросы proizv и zapobr запускают одноименные запросы.
Тогда получение выражения A” проводится в два этапа. Сначала запускается один раз макрос zapAB, а затем (n раз макрос multiple. Результат получается в таблице AB.
При изменении размерности необходимо следить за согласованием размерностей матриц A и B вручную или предусмотреть программное слежение.
Если бы в запросах proizv и zapobr можно было бы на каждом шаге менять название AB на AnB, то получилась бы таблица со всеми полями AnB. Эту таблицу можно было бы использовать для решения (по Р. Габасову) задачи СЛП, выполняя таким образом задачу ДЛП.
В то же время недостатками использования Access являются ручное формирование промежуточных таблиц и невозможность реализации полного режима клиент-сервер. Эти недостатки отсутствуют при применении СУБД InterBase, в работе с которыми используем опыт, накопленный в экспериментах с СУБД Access.
СУБД InterBase. Воспользуемся способом 2. В его реализации возможно выделить два случая: а) запрос и таблица с добавлением полей результирующей таблицы; б) вид с дополнением полей и преобразованием в таблицу.
Предпочтительным является первый случай.
Пусть имеются таблицы
Create table A (i integer, j integer, val integer);
Create table B (i integer, j integer,
B integer);
Create table AB (i integer, j integer,
B integer);
Формирование выходных таблиц осуществляется системой видов типа
CREATE VIEW PREOBRAZ2 ( I, J, S)
AS
select A.i, preobrazl.j, SUM(val*M) from A, preobrazl where A.j=preobraz1.i GROUP BY A.i, preobrazl.j;
Пример результата показан на рис 7. Недостатком данной реализации является необходимость формирования таблиц и видов с избыточным, порой не используемым количеством полей.
Properties for: PR2
PR 2
Properties 1 Metadata Permissions Data Dependencies
1 J VAL AB A2B A3B A4B I
► 1 1 1 7 37 1ЭЭ 1089
2 1 2 15 81 435 2337
_ 1 2 3 10 54 290 1558
_ 2 2 4 22 118 834 3408
_
Г'' ► ► I rf- г- С Commit & Refresh
С U sers\B 4 VD e: ktopVfl)/! Э 111 о ку м енты \Жигаленков 3\Матрица\НаЬа\.НАВ.і Views
Сделать А итераций для матриц размерностью (в матрице В [з ] элементов по горизонтали ) Заполните таблицу А: Заполните таблицу
1 3 г г
0 1 0 3
г г 1 3
3 3 3 1
г 5 1
е г 1
3 1 г
1 3 3
Построить Еычиишпь
А
1 3 2 2
0 1 0 3
2 2 1 3
3 3 3 1
А+А2
12 19 12 21
9 11 9 9
15 21 15 19
15 24 15 26
а+а2+а3
100 145 101 140
54 84 54 90
104 155 103 160
126 180 126 174
а+а2+а3+а4
723 1070 723 1080
432 625 432 615
792 1155 792 1145
903 1335 903 1345
в В+А^
2 5 1 30 24 15
6 2 1 15 13 11
3 1 2 25 25 17
1 3 3 35 30 18
197 178 119
126 105 66
223 190 125
246 219 150
1515 1316 868
870 764 517
1610 1414 947
1885 1641 1083
о
£ мэЛшяд
Рис. 8. Результаты решения
университета
водных
коммуникаций
Выпуск 3
Этот недостаток отсутствует при реализации в рамках 1ауа8спр1. Отсутствие базы данных компенсируется возможностью создания таблиц (рис. 8), доступ к которым при большом их количестве и размерности обеспечивается введением прокрутки.
Отметим универсальность задачи ДЛП. Она может быть использована не только для процесса планирования, как рассмотрено ранее, но и для процесса управления. В этом случае выражения (13)—(15), как показано в
[2], трансформируются к виду
ЛДО = С2Щ ^ тах, (16)
^ < U < Г, (17)
^ < WU < R+1, (18)
где R1 = R CA7z0; R+1 = R+ CA7z0; W = C(AKB) — матрица; F,,:г = (Ь*(0) ... Ь,(Ы 1)); F*T = (Ь*(0) ... Ь*(^ 1)); К = N V 1; V = 0, N 1; Ц" = Н0), u(1), ..., u(N 1,));
= (AN 1B A(N 2B ... AB B).
Выражения (13)—(18) определяют суть однородного метода интегрированного математического описания процессов планирования и управления в адаптивной автоматизированной системе управления производством.
Решенные автором задачи приводят к появлению новой, требующей решения задачи моделирования процесса планирования на уровне к = 2 (технологической линии). Линия
представляет собой последовательное соединение подразделений (цехов). Необходимо, следовательно, построить последовательную схему решения задач линейного программирования. Для решения задачи можно взять за основу программу генерации задач линейного программирования Р. Габасова [3].
Вместе с тем программу следует модернизировать с учетом особенностей процесса планирования.
Во-первых, элементы всех матриц и векторов должны быть неотрицательны.
Во-вторых, следует провести изменения в таких направлениях.
1. Задан выход (план), необходимо определить элементы матриц, входа (ресурсов) и целевой функции.
2. Задан вход (ресурсы), необходимо определить элементы матриц, выхода (плана) и целевой функции.
3. В направлениях 1, 2 сформировать коэффициенты целевых функций так, чтобы задачи соседних связанных подразделений были не согласованы. Это создает предпосылки для проверки алгоритма горизонтального согласования [1, с. 123-128].
Заключение. В работе представлен вариант повышения быстродействия при решении задачи ДЛП, показаны возможности преобразования задачи ДЛП в задачу СЛП, глобальной задачи СЛП в систему локальных задач, что позволяет повысить скорость решения глобальной задачи.
Список литературы
1. Чертовской В. Д. Информационные технологии в исследовании процесса управления производством / В. Д. Чертовской // Журнал университета водных коммуникаций. — 2010. — Вып. 1.
2. Чертовской В. Д. Интеллектуализация автоматизированного управления производством / В. Д. Чертовской. — СПб.: Изд-во С.-Петерб. ун-та, 2007. — 164 с.
3. Альсевич В. В. Оптимизация линейных экономических моделей. Статические задачи / В. В. Альсевич, Р. Габасов, В. С. Глушенков. — Минск: БГУ, 2000. — 210 с.
4. Ашманов С. А. Линейное программирование / С. А. Ашманов. — М.: Наука, 1981. —
340 с.