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

Объектно-ориентированная реализация связной структуры данных для оптимизационных задач упаковки Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
154
37
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ЗАДАЧА УПАКОВКИ / ЗАДАЧА ОРТОГОНАЛЬНОЙ УПАКОВКИ / ОПТИМИЗАЦИЯ / СТРУКТУРА ДАННЫХ / СВЯЗНЫЙ СПИСОК / PACKING PROBLEM / ORTHOGONAL PACKING PROBLEM / OPTIMIZATION / DATA STRUCTURE / LINKED LIST

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Чеканин В.А., Чеканин А.В.

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

n paper is considered the multidimensional orthogonal packing problem. All the packing problems are related to a class of non-deterministic polynomial-time hard problems and they are classical problems of discrete optimization. Application of exact methods based on exhaustive search, is ineffective for these problems in practice because of the high cost of time resources. For packing problems are usually applied heuristic optimization algorithms, the efficiency of which depends substantially on the depth of the search, which in turn depends on the time destined for solving the problem. To estimate the quality of each of the intermediate solutions obtained using heuristic optimization algorithm, it is necessary to decode it and place all the objects from the obtained sequence. At a fixed time allocated to search for suboptimal solutions packing problem, the search depth can be increased by reducing the time spent on the placement of objects in the process of decoding of intermediate solutions. To increase the speed of placing objects in solving orthogonal packing problems is proposed multilevel linked data structure. Implemented using object-oriented programming technology data structure provides an automatic ordering of sets of coordinates at solving optimization cutting and packing problems of any dimension. The multilevel linked data structure is based on the idea of presenting a set of coordinates as a set of recursively embedded each to other linear linked lists, where the embedding depth coincides with the dimension of the problem being solved. The article contains a description of the classes realized the proposed data structure, as well as the implementation of methods provide the addition of new elements in the data structure. The efficiency of the multilevel linked data structure is shown at results of a computational experiment carried out on standard instances of three-dimensional orthogonal packing problems.

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

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

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

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

Литература

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:

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

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Ш< ~ (1)

Tl =

2

= Dnt,

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

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

_ Р(п +

TM =

2

(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-системе

i Надоели баннеры? Вы всегда можете отключить рекламу.