Объектно-ориентированная реализация связной структуры данных для оптимизационных задач упаковки

среди всех участников команды для получения хороших результатов, объективных мнений и реализации всех полученных знаний на следующем этапе разработки. Это одно из преимуществ данного метода - постоянные объективные мнения и улучшения. Руководитель проекта завершает начальное планирование, а бизнес-аналитик определяет и дает приоритеты элементам разрабатываемого продукта вместе с клиентом и специалистами.

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

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

Литература

1. Gruber T.R. A translation approach to portable ontologies / Knowledge Acquisition, 5(2):199-220,1993.

2. Wiig К. Knowledge management is no illusion! / Proc. of the First International Conference on Practical Aspects of Knowledge Management. - Zurich, Switzerland: Swiss Information Society, 1996.

3. Гаврилова ТА., Хорошевский В.Ф., 2000. Базы знаний интеллектуальных систем / Учебник для вузов. - СПб, Изд-во «Питер», 2000.

4. Колоденкова А.Е. Задачи программного инжиниринга сложных систем на основе критерия жизнеспособности проекта / Журнал Вестник Уфимского государственного авиационного технического университета. - г. Уфа, 2011

5. Кошкидько А.В. «Метод контрольных точек в гибких методологиях разработки программного обеспечения» / Материалы десятой юбилейной ежегодной научной конференции студентов и аспирантов базовых кафедр Южного научного центра РАН. - г. Таганрог, 2014 г.

УДК 004.94

ОБЪЕКТНО-ОРИЕНТИРОВАННАЯ РЕАЛИЗАЦИЯ СВЯЗНОЙ СТРУКТУРЫ ДАННЫХ ДЛЯ ОПТИМИЗАЦИОННЫХ ЗАДАЧ УПАКОВКИ

Чеканин Владислав Александрович, к.т.н., доцент, ФГБОУ ВО «МГТУ «СТАНКИН», Москва,

Россия, vladchekanin@rambler.ru Чеканин Александр Васильевич, д.т.н., профессор, ФГБОУ ВО «МГТУ «СТАНКИН», Москва,

Россия, avchekanin@rambler.ru

Введение

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

оптимизации, в том числе задач прямоугольного раскроя материалов, заполнения контейнеров грузами, распределения трафика, компоновки оборудования, объемно-календарного планирования и многих других задач [1-3]. Широкий спектр областей практического применения решений задач упаковки делает актуальной проблему поиска способов и методов оптимизации их решения [4-8]. В статье предлагается связная структура данных, обеспечивающая возможность быстрого управления свободными пространствами ортогональных контейнеров в процессе заполнения их объектами.

1. Структура данных для задач упаковки

При решении задач упаковки необходимо использовать модели, обеспечивающее эффективное размещение объектов и реализующие быстрый доступ к произвольным областям контейнеров в процессе загрузки их объектами. Для описания контейнеров выбрана модель потенциальных контейнеров [9-10]. Эта модель, применимая при решении задач ортогональной упаковки и прямоугольного раскроя, описывает свободное пространство каждого контейнера в виде набора ортогональных объектов, называемых потенциальными контейнерами (ПК). ПК представляют собой ортогональные объекты с наибольшими габаритными размерами, которые могут быть размещены в свободных областях заполняемого контейнера. В общем случае при решении задачи произвольной Р -мерной ортогональной упаковки каждый ПК к характеризуется двумя векторами - вектором

\р\;ррР}, содержащим габаритные размеры ПК к и вектором —;хР},

содержащий координаты некоторой точки, определяющей положение этого ПК. В задачах ортогональной упаковки размерности выше трех размерность задачи, как правило, повышена за счет непространственных величин, таких как время, стоимость и др. [4, 11].

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

осей Ьр ={?1;12;.; }, где I1 е{1,...,Р}, причем V Ф V VI Ф . Для загрузки контейнера в

заданном направлении выбор ПК осуществляется в порядке, определенном в приоритетном списке Ьр . При размещении некоторого объекта внутри контейнера изменяется набор ПК, описывающих его свободное пространство, при этом для обеспечения условия размещения объектов в заданном направлении загрузки необходимо после размещения в контейнере каждого очередного объекта переупорядочивать все его ПК. В качестве примера рассмотрим

трехмерный ортогональный контейнер, содержащий набор из десяти ПК, вектора {х\;-к2;хк}, к е[1,...,10] которых заданы в табл. 1. В табл. 2 приведен набор ПК из табл. 1, упорядоченный в соответствии с направлением загрузки контейнера Ьр = {1; 2; 3}.

Таблица 1. Исходные координаты потенциальных контейнеров

Порядковый номер ПК 1 2 3 4 5 6 7 8 9 10

Координата 1 0 2 2 2 4 0 4 0 4 2

Координата 2 1 3 7 9 1 2 1 2 1 7

Координата 3 0 1 5 6 2 1 3 3 1 2

Таблица 2. Упорядоченные координаты потенциальных контейнеров для направления загрузки Ьр = {1;2;3}

Порядковый номер ПК 1 2 3 4 5 6 7 8 9 10

Координата 1 0 0 0 2 2 2 2 4 4 4

Координата 2 1 2 2 3 7 7 9 1 1 1

Координата 3 0 1 3 1 2 5 6 1 2 3

Необходимость сортировки набора координат после размещения каждого объекта в контейнере повышает временную сложность используемого алгоритма упаковки. Для

эффективного управления наборами ПК предлагается использовать новую структуру данных - многоуровневую связную структуру, в основу которой положена идея представления набора координат в виде рекурсивно вложенных линейных связных списков.

.2. .О'

Набор К ПК,

в точках

{к;х^;...;хк\ к е К контейнера,

расположенных

представляется в виде многоуровневых рекурсивно вложенных друг в друга линейных связных списков, содержащих упорядоченные элементы (рис. 1). Каждый элемент ] списка

>1 Р Р,

гплргтж-ИТ тпппинято с.^. "

списка

г на уровне вложенности Р содержит координату яр ^ = хр такого потенциального

выполняется неравенство:

контейнера к, что внутри каждого связного

< е Lр. е{1.....О}. Упорядочивание элементов в многоуровневой связной

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

Р.

Р Р

^...^^ ^-

р.

d+1

г,1

^ ... ^ я

р

d +2

г. 1 I

СР1+2 ъ] .1

^ ...

^... ^ я

1.к

^ ...

Рис. 1 - Многоуровневая связная структура данных для задачи ортогональной упаковки объектов

произвольной размерности

На рис. 2 показана многоуровневая связная структура данных, полученная для направления загрузки Ьр = {1;2;3}.

0

I

1

» 2

I I

01

2 I

3

- 4

9 1

II

3 1 2 — 5 6 1 — 2 — 3 Рис. 2 - Структура данных для направления загрузки Ь р = {1; 2; 3}

2. Программная реализация многоуровневой связной структуры данных

При реализации многоуровневой связной структуры данных был использован объектно-ориентированный алгоритмический язык программирования высокого уровня С++. Каждый элемент структуры представляется в виде класса СУо^, который содержит ссылки на следующий и предыдущий элементы, а также ссылки на вышележащий и нижележащий уровни (рис. 3). Класс элемента структуры включает ссылку на класс ПК CVpoint, которая является пустой на всех уровнях, за исключением самого нижнего.

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

р.

р

р

7

Рис. 3 - Реализация многоуровневой связной структуры данных

class CVpoint {

int d; // размерность задачи public:

long *p; // положение ПК long *v; // габаритные размеры ПК CVpoint(int d); ~CVpoint(); }; // класс ПК

class CVobj {

int d; int vd; public:

int count; CVobj *first; CVobj *next;

// размерность задачи (число вложенных уровней) // текущий уровень вложенности

CVobj *prev; CVobj *parent; CVobj *vobj;

// число узлов // ссылка на первый узел // ссылка на следующий узел // ссылка на предыдущий узел // ссылка на родительский уровень // ссылка на нижележащий уровень CVpoint *vpoint; // ПК (положение и габаритные размеры) CVobjList *vlist; // ссылка на структуру данных, содержащую этот узел CVobj(int vd,int d,CVobjList *vlist); ~CVobj();

CVobj* Add(int x,CVobjList *vlist); void Del(void); void Print(void); // класс узла (уровня) многоуровневой связной структуры

class CVobjList {

int d; public:

CVobj *vobj; CVobj *cur; CContainer *cont; int *pr;

// размерность задачи // вложенный уровень

// текущий просматриваемый элемент списка // ссылка на содержащий структуру контейнер // список последовательности выбора осей еоп"Ь,1п" *рг);

CVobjList(CContainer ~CVobjList(); void Print(void);

CVobj* Add(CVpoint *vp); // добавление нового ПК

CVobj* Next(void); // получение следующего ПК

CVobj* First(void); // получение первого ПК в списке

int Count(void); // возврат общего числа ПК

}; // класс многоуровневой связной структуры данных

3. Вычислительный эксперимент

Реализация структуры данных для задач упаковки должна обеспечивать возможность оперативного изменения содержимого описываемого контейнера за счет включения и исключения элементов из используемой структуры данных. Такую функциональность наилучшим образом реализуют связные списки [12]. Эффективность применения разработанной структуры данных анализировалась путем сравнения с обычным линейным связным списком, обеспечивающим возможность быстрого добавления и удаления элементов. Вычислительный эксперимент проводился с использованием разработанного прикладного программного обеспечения, предназначенного для оптимизации распределения ортогональных ресурсов [13, 14].

Усредненные результаты проведенного вычислительного эксперимента на восьми классах тестовых задач трехмерной ортогональной упаковки, предложенных Martello S., Pisinger D. и Vigo D. [15], приведены в табл. 3, где относительная временная эффективность показывает, во сколько раз скорость формирования упаковки при использовании многоуровневой связной структуры данных выше, чем при использовании одномерного упорядоченного линейного связного списка.

Таблица 3. Относительная временная эффективность многоуровневой связной структуры данных

Число объектов 50 100 150 200

Относительная временная эффективность 1,157 1,400 1,566 1,739

При увеличении числа размещаемых объектов повышается эффективность применения многоуровневой связной структуры данных, причем значение относительной временной эффективности стремится к двум. Докажем справедливость этого утверждения. В общем случае при размещении п объектов в Р -мерном ортогональном контейнере образуется не более 2Бп ПК [9]. Среднее время доступа к отдельному ПК при использовании одномерного линейного связного списка равно:

2Ш< ~

Tl =

2

= Dnt,

где t - время, затрачиваемое на переход к следующему ПК.

Многоуровневый связный список состоит из одномерных линейных связных списков, содержащих только уникальные координаты. При решении задачи плотной упаковки все объекты должны касаться соседних объектов, т.е. общее число неповторяющихся координат вдоль каждой координатной оси гарантированно не будет превышать значения п +1. Поэтому для доступа к ПК в Р -мерной многоуровневой связной структуре требуется время, равное

_ Р(п +

TM =

2

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

21

определена как отношение значений T^ к Tm , которое равно к 2n /(n +1). Результаты проведенного вычислительного эксперимента на тестовых задачах трехмерной упаковки (см. табл. 3) подтверждают полученный вывод.

Заключение

Программная реализация многоуровневой связной структуры данных, выполненная независимо от размерности решаемой задачи, делает эту структуру универсальной и применимой при решении различных типов задач раскроя и упаковки. Проведенный вычислительный эксперимент показал, что относительная временная эффективность применения многоуровневой связной структуры данных возрастает с увеличением числа размещаемых объектов. Эффективность применения предложенной структуры данных подтверждается ее практическим использованием при решении задач прямоугольного раскроя и ортогональной упаковки объектов. Многоуровневая связная структура данных может быть также полезна при решении других задач, требующих частой сортировки координат.

Литература

1. Bortfeldt A., Wascher G. Constraints in container loading - A state-of-the-art review // European

Journal of Operational Research. 2013. Vol. 229. N. 1. P. 1-20.

2. Wascher G., Haubner H., Schumann H. An improved typology of cutting and packing problems //

European Journal of Operational Research. 2007. Vol. 183, N. 3. P. 1109-1130.

3. Оптимизационные проблемы транспортной логистики: оперативное размещение контейнеров

при транспортировке грузов / Мухачева Э.А. [и др.] // Информационные технологии. 2008. № 7. С. 17-22.

4. Fekete S.P., Schepers J., van der Veen J.C. An exact algorithm for higher-dimensional orthogonal

packing // Operations Research. 2007. Vol. 55. N. 3. P. 569-587.

5. Филиппова А.С. Моделирование эволюционных алгоритмов решения задач прямоугольной

упаковки на базе технологии блочных структур // Информационные технологии. 2006. № 6. Приложение.

6. Чеканин В.А., Чеканин А.В. Алгоритм решения задач ортогональной упаковки объектов на

основе мультиметодной технологии // Информационные технологии. 2013. № 7. С. 17-21.

7. Чеканин В.А., Чеканин А.В. Исследование генетических методов оптимизации распределения

прямоугольных ресурсов // Современное машиностроение. Наука и образование: Материалы 2-й Международной научно-практической конференции / Под ред. М.М. Радкевича и А Н. Евграфова. - СПб.: Изд-во Политехн. ун-та, 2012. - C. 798-804.

8. Чеканин В.А., Чеканин А.В. Эвристический алгоритм оптимизации решений задачи

прямоугольного раскроя // Вестник МГТУ «Станкин». 2014. № 4. С. 210-213.

9. Chekanin A.V., Chekanin V.A. Improved packing representation model for the orthogonal packing

problem // Applied Mechanics and Materials. 2013. Vol. 390. P. 591-595.

10. Чеканин В.А., Чеканин А.В. Модели конструирования ортогональной упаковки объектов // Информационные технологии и вычислительные системы. 2014. № 2. С. 37-45.

11. Гребенник И.В., Панкратов А.В., Чугай А.М., Баранов А.В. Упаковка n-мерных параллелепипедов с возможностью изменения их ортогональной ориентации в n-мерном параллелепипеде // Кибернетика и системный анализ. 2010. № 5. С. 122-131.

12. Седжвик Р. Фундаментальные алгоритмы на C++. Части 1-4. Анализ. Структуры данных. Сортировка. Поиск. К.: Издательство «ДиаСофт», 2001. - 688 с.

13. Чеканин В.А., Чеканин А.В. Объектно-ориентированная библиотека классов для решения оптимизационных задач распределения ресурсов // Объектные системы - 2015: материалы X Международной научно-практической конференции (Ростов-на-Дону, 10-12 мая 2015 г.) / Под общ. ред. П.П. Олейника. - Ростов-на-Дону: ШИ (ф) ЮРГПУ (НПИ) им. М.И. Платова, 2015. - С. 41-44.

14. Чеканин А.В., Чеканин В.А. Инновационный подход к решению оптимизационных задач распределения ресурсов в промышленности // Инновации. № 8. 2015. С. 76-81.

15. Martello S., Pisinger D., Vigo D. The three-dimensional bin packing problem // Operations Research. 2000. Vol. 48. N 2. P. 256-267.

УДК 004.4'236

РЕАЛИЗАЦИЯ ПРИНЦИПОВ НАСЛЕДОВАНИЯ И АГРЕГАЦИИ В МУОРБД

Микляев Иван Александрович, к.ф-м.н., доцент кафедры информационных систем и технологий, Филиал Северного (Арктического) федерального университета имени М. В. Ломоносова в г. Северодвинске Институт судостроения и морской арктической техники (Севмашвтуз), Россия,

Северодвинск, ivanmia 1@rambler.ru Жирнова Марина Анатольевна, студент, Филиал Северного (Арктического) федерального университета имени М. В. Ломоносова в г.Северодвинске Институт судостроения и морской арктической техники (Севмашвтуз), Россия, Северодвинск, таг) па2Ы rnova@yandex.ru

Введение

Теория ООП выделяет три основных отношения между классами:

1. Ассоциация.

2. Агрегация и композиция.

3. Обобщение/Расширение (наследование).

Рис. 1 - Реализация принципов наследования и агрегации в ORM системе ADO.NET Entity Framework

a) Физическая модель фрагмента реляционной БД документооборота; b) Диаграмма классов Фрагмент кода реализации иерархии классов документооборота в ORM-системе