Ю.А. Олейник1, А.А. Зуенко1
1 Институт информатики и математического моделирования ФИЦ КНЦ РАН
ГЛОБАЛЬНЫЕ ОГРАНИЧЕНИЯ ПРИ МОДЕЛИРОВАНИИ И РЕШЕНИИ ЗАДАЧ В РАМКАХ ПАРАДИГМЫ CONSTRAINT PROGRAMMING*
Аннотация
На настоящий момент технология программирования ограничений является мощным инструментом решения задач комбинаторного поиска и комбинаторной оптимизации. Для применения данной технологии любая задача должна быть сформулирована как задача удовлетворения ограничений. Роль концепции глобальных ограничений при моделировании и решении прикладных задач в рамках парадигмы программирования ограничений трудно переоценить. Процедуры, реализующие алгоритмы фильтрации глобальных ограничений, являются теми элементарными "кирпичиками", из которых строится модель конкретной прикладной задачи. Алгоритмы фильтрации глобальных ограничений, как правило, подкреплены соответствующими развитыми теориями, позволяющими организовывать высокопроизводительные вычисления. Выбор той или иной программной библиотеки, прежде всего, обуславливается тем, насколько набор и способ реализации глобальных ограничений соответствует уровню современных исследований в данной области. Основное внимание в настоящей статье сосредоточено на обзоре глобальных ограничений, которые реализованы в рамках наиболее популярных библиотек программирования в ограничениях: Choco, GeCode, JaCoP, MiniZinc.
Ключевые слова:
программирование ограничений, задача удовлетворения ограничений, глобальные ограничения, алгоритмы фильтрации ограничений.
Yu.A. Oleynik1, A.A. Zuenko1
1 Apatity, Institute for Informatics and Mathematical Modelling, KSC RAS
GLOBAL CONSTRAINTS IN MODELING AND SOLVING PROBLEMS WITHIN THE CONSTRAINT PROGRAMMING PARADIGM
Abstract
At the moment, constraint programming technology is a powerful tool for solving combinatorial search and combinatorial optimization problems. To use this technology, any task must be formulated as a task of satisfying constraints. The role of the concept of global constraints in modeling and solving applied problems within the framework of the constraint programming paradigm can hardly be overestimated. The procedures that implement the algorithms of filtering global constraints are the elementary "building blocks" from which the model of a specific applied problem is built. Algorithms for filtering global constraints, as a rule, are supported by the corresponding developed theories that allow organizing high-performance computing. The choice of a particular software library is primarily determined by the extent to which the set and method of implementing global constraints corresponds to the level of modern research in this area. The main focus of this article is focused on an overview of global constraints that
* Исследование выполнено при финансовой поддержке РФФИ в рамках научных проектов №№ 18-07-00615-а, 19-07-00359-а, 20-07-00708-а.
Keywords:
constraint programming, constraint satisfaction problem, global constraints, constraint filtering algorithms.
Введение
На настоящий момент технология программирования ограничений (Constraint Programming - CP) является мощным инструментом решения задач комбинаторного поиска и комбинаторной оптимизации. Для применения данной технологии любая задача должна быть сформулирована как задача удовлетворения ограничений (CSP - Constraint Satisfaction Problem).
Задача удовлетворения ограничений состоит из трех компонент: < X, D, C>.X- множество переменных {Xi,X2, ...,Xn}. D - множество доменов {Di, D2, ..., Dn}, где Di является доменом (областью определения) переменнойX. C -множество ограничений {Ci, C2, ..., Cm}, которые предписывают допустимые комбинации значений переменных. Каждый домен Di описывает множество допустимых значений {vi, ..., Vk} для переменной X. Под ограничением понимается любое соотношение между переменными предметной области. В качестве ограничений могут выступать арифметические выражения; логические формулы; таблицы; выражения, формулируемые на языке специализированных теорий.
Решением задачи CSP является полное присваивание, которое удовлетворяет всем ограничениям. В некоторых случаях необходимо получить все решения. Иногда требуется найти такое решение, в котором значения переменных оптимизировали бы некоторый заданный функционал. CSP-задачи принадлежат классу NP-полных задач.
Технология программирования в ограничениях предоставляет мощные и гибкие методы, алгоритмы решения задач комбинаторного поиска. Особенности технологии:
1. С точки зрения конечного пользователя задача CSP формулируется в декларативном виде, на языке близком к языку математики. Порядок задания ограничений несущественен.
2. Любой алгоритм удовлетворения ограничений должен содержать две обязательных компоненты: а) компоненту, реализующую вывод (распространение); б) компоненту, реализующую поиск.
3. Вывод (распространение) реализуется как целенаправленное сужение изначально заданных областей определения переменных.
4. Эвристики, используемые в процедурах поиска, разрабатываются не под конкретную задачу, а являются универсальными.
5. Благодаря архитектуре систем программирования в ограничениях, появляется возможность совместно обрабатывать количественные и качественные ограничения.
6. Обеспечивается возможность сопровождать модели, отрытые для оперативных модификаций, то есть развивающиеся модели. При добавлении/удалении из модели ограничений нет необходимости писать новые методы решения задачи.
7. Библиотеки программирования в ограничениях содержат высокоэффективные алгоритмы вывода для обработки, так называемых, глобальных ограничений. Знания подобных ограничений позволяет конструировать, как из кирпичиков, модель решаемой задачи.
Программирование в ограничениях особенно полезно там, где нет возможности получить удовлетворительное/адекватное решение средствами «обычной» математики. Оно используется при решении задач планирования, проектирования, прогнозирования, в инженерных и экономических расчетах, при создании графических интерфейсов, в системах понимания естественного языка и др.
Процесс решения задач удовлетворения ограничений строится на применении алгоритмов трех основных типов [1]:
• Алгоритмы фильтрации - алгоритмы, сокращающие домены переменных, участвующих в одном ограничении.
• Алгоритмы распространения - алгоритмы передающие (распространяющие) изменения доменов переменных, произошедшие в рамках одного ограничения, на другие ограничения задачи.
• Алгоритмы поиска - алгоритмы, находящие конкретные решения задачи путем присваивания конкретных значений переменным с последующим распространением внесенных изменений.
Иногда алгоритмы первых двух типов называют алгоритмами-распространителями или алгоритмами-пропагаторами.
Архитектура систем программирования в ограничениях напоминает архитектуру вычислительных машин (рис. 1). В качестве своеобразной шины данных в системах программирования в ограничениях выступает так называемое хранилище ограничений, представляющее собой, список пар «переменная -перечень значений переменной, которые она может принимать на текущем этапе вывода». Аналогом центрального процессора выступает алгоритм - дирижер (управляющая подпрограмма), реализующий базовую стратегию поиска. В случае систематического поиска данный алгоритм выбирает переменную и присваиваемое значение переменной. Далее начинается работа алгоритмов распространения, которые должны установить порядок вызова тех или иных процедур фильтрации. Как правило, априорно задаются приоритеты обработки тех или иных ограничений.
В качестве сопрограмм выступают подпрограммы, реализующие вывод на ограничениях, - алгоритмы фильтрации ограничений. Для различных типов ограничений и типов областей определения переменных разрабатываются различные алгоритмы фильтрации. Продолжая аналогию с архитектурой вычислительных машин, процедуры-фильтрации соотносятся с дополнительными устройствами (оперативная память, жесткий диск и т.п.), достаточно гибко подключаемыми через шину данных. Кроме стандартных типов ограничений и алгоритмов-распространителей, в рамках библиотек программирования в ограничениях существует возможность создания пользовательских типов ограничений и соответствующих процедур распространения.
Основное внимание в настоящей статье сосредоточено на обзоре глобальных ограничений, которые реализованы в рамках наиболее популярных библиотек Constraint Programming: Choco, GeCode, JaCoP, MiniZinc.
Рис. 1. Архитектура системы программирования в ограничениях
1. Концепция глобальных ограничений
Строгого определения понятия глобального ограничения не существует. Далее на примерах приводится описание концепции глобальных ограничений.
Пусть даны переменные X Е {0, ..., 8}, У Е {1, ..., 6} и 2 Е {2, 3} и ограничения над ними:
Си X < У; Съ У < 2.
Алгоритм фильтрации ограничения С1 сократит домен переменной X до {0, ..., 5}, поскольку любые другие значения из домена не будут удовлетворять ограничению С1. Точно так же алгоритм фильтрации ограничения С2 сократит домен переменной У до {1, 2}. Далее в дело вступает алгоритм распространения, передающий в ограничение С1 информацию об изменении домена переменной У, в результате чего вновь запускается алгоритм фильтрации этого ограничения, сокращающий домен переменной X до {0, 1}. Таким образом, домены переменных сократились до X Е {0, 1}, У Е {1, 2} и Ъ Е {2, 3}, и дальше их
сократить сами по себе алгоритмы фильтрации и распространения не могут, поэтому задействуется алгоритм поиска. Данный алгоритм перебирает возможные присваивания переменным значений из оставшихся доменов. Таким образом получаются решения:
X = 0, У = 1, 2 = 2;
X = 1, У = 2, 2 = 3.
В реальных задачах количество ограничений очень велико, и любое самое незначительное изменение домена на этапе фильтрации в каком-либо ограничении запустит целый каскад вызовов алгоритмов распространения и фильтрации для других ограничений. Поэтому наиболее эффективно было бы максимизировать сокращения доменов именно на этапе фильтрации, чтобы минимизировать количество вызовов алгоритмов.
Рассмотрим теперь аналогичную задачу для переменных с теми же начальными доменами, но заданную с помощью одного ограничения:
X <У <г.
В этом случае до этапа поиска домены переменных сократятся до тех же значений X 6 {0, 1}, У 6 {1, 2} и 2 6 {2, 3}, однако это произойдет уже на этапе фильтрации, без задействования алгоритмов распространения, что существенно эффективнее.
На самом деле, чем проще ограничение, тем меньше возможностей у алгоритма фильтрации для анализа и последующего сокращения доменов участвующих в нем переменных. Поэтому набор однотипных ограничений оказалось эффективнее объединять в одно ограничение, для которого разрабатываются эффективные алгоритмы фильтрации. Такие составные ограничения называют глобальными. Количество однотипных простых ограничений, объединенных в глобальное, чаще всего не ограничено, что дает другое определение глобального ограничения, как ограничение, описывающее отношение на неограниченном количестве переменных [2].
Для иллюстрации преимуществ глобальных ограничений рассмотрим одно из самых популярных ограничений аШ^егеШ. Ограничение аПЛ//егеМ(Х\, Х2, ..., Хы) определяет, что значения переменных Х1, Х2, ..., Хы должны быть различны между собой и равносильно множеству соответствующих попарных неравенств. Для примера рассмотрим аШ\//егеШХ, У, 2) дляХ 6 {1, 2}, У 6 {1, 2} и г 6 {1, 2, 3}, что равносильноХф У, Хф 2, У ф 2.
В случае рассмотрения каждого неравенства отдельно, не получится сократить домены переменных вплоть до этапа поиска, когда какой-то из переменных будет присвоено конкретное значение. С другой стороны, алгоритм фильтрации глобального ограничения позволит сократить домен переменной 2 до {3}, существенно снизив тем самым количество рассматриваемых на этапе поиска комбинаций значений переменных (пространство поиска решений).
Также следует отметить, что одно ограничение аШ^егеШ для N переменных заменяет Ы(Ы-1)/2 простейших неравенств. Аналогичная тенденция прослеживается и для других глобальных ограничений, таким образом глобальные ограничения упрощают описание задач удовлетворения ограничений.
Ряд популярных глобальных ограничений и примеры задач с ними приведен ниже.
2. Обзор глобальных ограничений наиболее популярных библиотек программирования в ограничениях
ШАШ^, У, DX, ВУ) - ограничение задает условие, что прямоугольники, заданные координатами угла (Х'],УИ) и длинами сторон ВХ'] и ВУ[/] не перекрываются [3].
Пример 1: Пусть X Е {1, 2, 3}, X2 Е {1, 2, 3}, Xз Е {1, 2}, X4 Е {1, 2, 3}, DX= {2, 3, 1, 4}, У1 Е {1, 2, 3}, У2 Е {2, 3}, Уз Е {1, ..., 4}, У4 Е {1, 2, 3}, ВУ = {3, 2, 4, 1}, тогда всеми решениями, удовлетворяющими ограничению ШЦАп^, X2, Xз, X4},{Уl, У2, У3, У4}, DX, ВУ) будут (рис. 1):
1. X = 1, X2 = 3, Xз = 1, X4 = 3, У = 1, У2 = 2, У3 = 4, У4 = 1.
2. X = 1, X2 = 3, Xз = 2, X4 = 3, У = 1, У2 = 2, У3 = 4, У4 = 1.
3. Xl = 1,X2 = 3,X = 1,X. = 3, У = 1, У2 = 3, Уз = 4, У4 = 1.
4. X = 1, X2 = 3, X = 1, X4 = 3, У = 1, У2 = 3, Уз = 4, У4 = 2.
5. X = 1,X2 = 3,X = 2,X4 = 3, У = 1, У2 = 3, Уз = 4, У = 1.
6. X = 1, X2 = 3, X = 2, X4 = 3, У = 1, У2 = 3, Уз = 4, У4 = 2.
Рис. 2. Визуализация решений задачи
Это ограничение имеет реализацию в популярных системах(библиотеках) программирования в ограничениях (таблица 1).
Таблица 1.
Реализация ограничения diffn в популярных библиотеках Constraint Programming
Библиотека Choco GeCode JaCoP MiniZinc
Имя ограничения diffN nooverlap diffldiff 2 diffn
among(n, V, Т) - ровно п переменных из множества переменных Vдолжны принимать значения из множества значений Т [3].
Пример 2: Пусть К: 6 {1, ..., 5}, V2 6 {3, ..., 9}, Vз 6 {5, 6}, V4 6 {2, 3}, тогда всеми решениями, удовлетворяющими ограничению атощ(3, {V1, К2, Кз, К4}, {2, 4}) будут:
1. VI = 2, К2 = 4, Кз = 5, К4 = 2.
2. V = 2, = 4, Кз = 6, К4 = 2.
3. V = 4, = 4, Кз = 5, К4 = 2.
4. = 4, = 4, Уз = 6, К4 = 2.
Это ограничение имеет реализацию в популярных системах(библиотеках) программирования в ограничениях (таблица 2).
Таблица 2.
Реализация ограничения among в популярных библиотеках Constraint
Programming
Библиотека Choco GeCode JaCoP MiniZinc
Имя ограничения among count among among
а(_1еа$1(п, К, 7) - минимум п переменных из множества переменных К должны принимать значения из множества значений Т.
Пример 3: Пусть ^ 6 {3, 4 ,5}, К2 6 {1, 2}, Кз 6 {5, 6}, К4 6 {7, 8, 9}, тогда всеми решениями, удовлетворяющими ограничению at_least(2, {^^^з^}, 5) будут:
i. Fi = 5, F2 = i, F3 = 5, F4 = 7
2. Fi = 5, F2 = i, F3 = 5, F4 = 8
3. Fi = 5, F2 = i, F3 = 5, F4 = 9
4. Fi = 5, F2 = 2, F3 = 5, F4 = 7
5. Fi = 5, F2 = 2, F3 = 5, F4 = 8
6. Fi = 5, F2 = 2, F3 = 5, F4 = 9
Это ограничение имеет реализацию в популярных системах(библиотеках) программирования в ограничениях (таблица 3).
Таблица 3.
Реализация ограничения at_least в популярных библиотеках Constraint
Programming
Библиотека Choco GeCode JaCoP MiniZinc
Имя ограничения occurenceMin count/atleast count atleast
at_most(n, К, Т) - максимум п переменных из множества переменных V должны принимать значения из множества значений Т.
Пример 4: Пусть ^ 6 {1, 2}, К2 6 {2, 3}, Кз 6 {5, 6}, К4 6 {2, 3}, тогда всеми решениями, удовлетворяющими ограничению at_most(1, К2, Кз, К4}, 2) будут:
1. = 1, К2 = 2, Кз = 5, К4 = 3.
2. = 1, К2 = 2, Кз = 6, К4 = 3.
3. = 1, К2 = 3, Кз = 5, К4 = 2.
4. = 1, К2 = 3, Кз = 5, К4 = 3.
5. Vl = 1, V2 = 3, Vз = 6, Vл = 2.
6. Vl = 1, V2 = 3, Vз = 6, V4 = 3.
7. Vl = 2, V2 = 3, Vз = 5, V4 = 3.
8. Vl = 2, V2 = 3, Vз = 6, = 3.
Это ограничение имеет реализацию в популярных системах(библиотеках) программирования в ограничениях (таблица 4).
Таблица 4.
Реализация ограничения at_most в популярных библиотеках Constraint Programming
Библиотека Choco GeCode JaCoP MiniZinc
Имя ограничения occurenceMax count/atmost count at most
count(y, V, R, c) - количество переменных из множества V, принимающих значение у, должно быть R (R е {=, >=, >, <=, <, !=}) значению c [4]. Является обобщением предыдущих ограничений. Так, count(y, V, =, c) равносильно among(c, V, y); count(y, V, >=, c) равносильно at_least(c, V, y); count(y, V, <=, c) равносильно at_most(c, V, y). Либо count можно представить комбинацией ограничеений: count(y, V, R, c) <=> among(t, V, y) && (t R c), где R е {=, >=, >, <=, <, !=} Это ограничение имеет реализацию в популярных системах(библиотеках) программирования в ограничениях (таблица 5).
Таблица 5.
Реализация ограничения count в популярных библиотеках Constraint Programming
Библиотека Choco GeCode JaCoP MiniZinc
Имя ограничения occurence count count count
global_cardinality(V, С, N - количество переменных из множества V, принимающих значение С[/], должно быть равно N[7] [5].
Пример 5: Пусть V Е {3, 4}, V2 Е {2, 3}, Vз Е {1, 2}, V4 Е {2, 3, 4}, V5 Е {2, 3}, V6 Е {1, 2}, С = {1, 2, 3, 4}, N1 Е {1}, N2 Е {2, 3}, N3 Е {0, 1}, N4 Е {2, 3}, тогда всеми решениями, удовлетворяющими ограничению
global_cardinaШy({Vl, V2, Vз, V4, V5, V6}, С, {N1, N2, N3, N4}) будут:
1. Vl = 4, V2 = 2, Vз = 1, V4 = 4, V5 = 2, V6 = 2, N1 = 1, N2 = 3, N3 = 0, N4 = 2.
2. Vl = 4, V2 = 2, Vз = 1, V4 = 4, V5 = 3, V6 = 2, N1 = 1, N2 = 2, N3 = 1, N4 = 2.
3. Vl = 4, V2 = 2, Vз = 2, V4 = 4, V5 = 2, V6 = 1, N1 = 1, N2 = 3, N3 = 0, N4 = 2.
4. Vl = 4, V2 = 2, Vз = 2, V4 = 4, V5 = 3, V6 = 1, N1 = 1, N2 = 2, N3 = 1, N4 = 2.
5. Vl = 4, V2 = 3, Vз = 1, V4 = 4, V5 = 2, V6 = 2, N1 = 1, N2 = 2, N3 = 1, N4 = 2.
6. Vl = 4, V2 = 3, Vз = 2, V4 = 4, ^5 = 2, V6 = 1, N1 = 1, N2 = 2, N3 = 1, N4 = 2. Это ограничение имеет реализацию в популярных системах(библиотеках)
программирования в ограничениях (таблица 6).
Библиотека Choco GeCode JaCoP MiniZinc
Имя ограничения globalCardinality count Gcc globalcardinality
all_different(У) - значения переменных из множества К должны быть различны между собой [6].
Пример 6: Пусть ^ 6 {2, 3, 4}, К2 6 {2, 3}, Кз 6 {1, ..., 6}, Кл 6 {2, ..., 5}, К5 6 {2, 3}, К6 6 {1, ..., 6}, тогда всеми решениями, удовлетворяющими ограничению all_different({Уl, К2, Кз, К4, К5, К6}) будут:
1. = 4, К2 = 2, Кз = 1, К4 = 5, К5 = 3, К6 = 6.
2. = 4, К2 = 2, Кз = 6, К4 = 5, К5 = 3, К6 = 1.
3. = 4, К2 = 3, Кз = 1, К4 = 5, К5 = 2, К6 = 6.
4. = 4, К2 = 3, Кз = 6, К4 = 5, К5 = 2, К6 = 1.
Это ограничение имеет реализацию в популярных системах(библиотеках) программирования в ограничениях (таблица 7).
Таблица 7.
Реализация ограничения all_different в популярных библиотеках Constraint
Programming
Библиотека Choco GeCode JaCoP MiniZinc
Имя ограничения allDifferent Linear alldifferentl alldiffl alldistinct alldifferent
alldifferent_except_0(У) - значения переменных из множества К должны быть различны, за исключением элементов, равных 0 [6].
Пример 7: Пусть ^ 6 {0, ..., 4}, К2 6 {1, 2}, Кз 6 {1, 2}, К4 6 {0, 1}, тогда всеми решениями, удовлетворяющими ограничению
alldifferent_except_0({Уl, К2, Кз, К4}) будут:
1. = 0, К2 = 1, Кз = 2, К4 = 0.
2. = 0, К2 = 2, Кз = 1, К4 = 0.
3. = 3, К2 = 1, Кз = 2, К4 = 0.
4. = 3, К2 = 2, Кз = 1, К4 = 0.
5. = 4, = 1, Кз = 2, К4 = 0.
6. = 4, = 2, Кз = 1, К4 = 0.
Это ограничение имеет реализацию в популярных системах(библиотеках) программирования в ограничениях (таблица 8).
Библиотека Choco GeCode JaCoP MiniZinc
Имя ограничения alldifferent_ except 0 alldifferente xcept 0 alldifferentexcept0 alldifferent_ except 0
all_equal(V) - значения переменных из множества V должны быть одинаковы [7].
Пример 8: Пусть V Е {0, ..., 6}, V2 Е {0, 1, 2}, Vз Е {0, 1, 2}, V4 Е {1, ..., 4}, тогда всеми решениями, удовлетворяющими ограничению all_equal({V1, V2, V3, V;}) будут:
1. Vl = 1, V? = 1, Vз = 1, V4 = 1.
2. Vl = 2, V2 = 2, Vз = 2, V4 = 2.
Это ограничение имеет реализацию в популярных системах(библиотеках) программирования в ограничениях (таблица 9).
Таблица 9.
Реализация ограничения all_equal в популярных библиотеках Constraint
Programming
Библиотека Choco GeCode JaCoP MiniZinc
Имя ограничения atMostNValue Rel allequal all equal
nvalue(n, V) - количество непересекающихся значений в множестве переменных V должно быть равно п [8].
Пример 9: Пусть п Е {1, 2}, V Е {2, 3, 4}, V2 Е {1, 2}, Vз Е {2, 3, 4}, тогда всеми решениями, удовлетворяющими ограничению nvalue(n, {VI, V, V}) будут:
i. n = 1, Vi = 2, V2 = 2, V3 = 2
2. n = 2, Vi = 2, V2 = i, V3 = 2
3. n = 2, Vi = 2, V2 = 2, V3 = 3
4. n = 2, Vi = 2, V2 = 2, V3 = 4
5. n = 2, Vi = 3, V2 = i, V3 = 3
6. n = 2, Vi = 3, V2 = 2, V3 = 2
7. n = 2, Vi = 3, V2 = 2, V3 = 3
8. n = 2, Vi = 4, V2 = i, V3 = 4
9. n = 2, Vi = 4, V2 = 2, V3 = 2
10. n = 2, Vi = 4, V2 = 2, V3 = 4
Это ограничение имеет реализацию в популярных системах(библиотеках) программирования в ограничениях (таблица 10).
Библиотека Choco GeCode JaCoP MiniZinc
Имя ограничения n Values Nvalues - nvalue
decreasing(V) - ограничение задает условие, что массив переменных V отсортирован по убыванию.
Пример 10: Пусть ^ 6 {0, ..., 3}, К2 6 {0, 1, 2}, Кз 6 {1, 2}, Кл 6 {1, 2}, тогда всеми решениями, удовлетворяющими ограничению decreasing({У1, Кз, Кл}) будут:
i. Vi = з, V2 = 2, Vз = 2, V4 = 2
2. Vi = з, V2 = 2, Vз = 2, V4 = i
з. Vi = з, V2 = 2, Vз = i, V4 = i
4. Vi = з, V2 = i, Vз = i, V4 = i
S. Vi = 2, V2 = 2, Vз = 2, V4 = 2
б. Vi = 2, V2 = 2, Vз = 2, V4 = i
T. Vi = 2, V2 = 2, Vз = i, V4 = i
s. Vi = 2, V2 = i, Vз = i, V4 = i
9. Vi = i, V2 = i, Vз = i, V4 = i
Это ограничение имеет реализацию в популярных системах(библиотеках) программирования в ограничениях (таблица 11).
Таблица 11.
Реализация ограничения decreasing в популярных библиотеках Constraint
Programming
Библиотека Choco GeCode JaCoP MiniZinc
Имя ограничения - Rel - decreasing
increasing(V) - ограничение задает условие, что массив переменных V отсортирован по возрастанию.
Пример 11: Пусть ^ 6 {1, 2, 3}, К2 6 {0, 1, 2}, Кз 6 {1, 2}, Кл 6 {1, 2}, тогда всеми решениями, удовлетворяющими ограничению increasing({Уl, Кз, Кл}) будут:
1. = 1, К2 = 1, Кз = 1, Кл = 1.
2. = 1, К2 = 1, Кз = 1, Кл = 2.
3. = 1, К2 = 1, Кз = 2, Кл = 2.
4. = 1, К2 = 2, Кз = 2, Кл = 2.
5. = 2, К2 = 2, Кз = 2, Кл = 2.
Это ограничение имеет реализацию в популярных системах(библиотеках) программирования в ограничениях (таблица 12).
Библиотека Choco GeCode JaCoP MiniZinc
Имя ограничения sort rel - increasing
sort(У, 5) - ограничение задает условие, что значения переменных из массива V совпадают со значениями переменных массива 5, но при этом массив 5 отсортирован по возрастанию [9].
Пример 12: Пусть У 6 {2, 3}, У2 6 {2, 3}, Уз 6 {1, 2}, У4 6 {4, 5}, Уз 6 {2, 3, 4}, 51 6 {2, 3}, 52 6 {2, 3}, 5з 6 {1, 2, 3}, 54 6 {4, 5}, 5з 6 {2, ..., 5}, тогда всеми решениями, удовлетворяющими ограничению
sort({Уl, У2, У3, У4, Уз}, {51,52,53, 54, 5з}) будут:
i. Vi = 2, V2 = 2, V3 = 2, V4 = 4, V5 = 4, 5i = 2, 52 = 2, 53 = 2, 54 = 4, 55 = 4
2. Vi = 2, V2 = 2, V3 = 2, V4 = 5, V5 = 4, 5i = 2, 52 = 2, 53 = 2, 54 = 4, 55 = 5
3. Vi = 2, V2 = 3, V3 = 2, V4 = 4, V5 = 4, 5i = 2, 52 = 2, 53 = 3, 54 = 4, 55 = 4
4. Vi = 2, V2 = 3, V3 = 2, V4 = 5, V5 = 4, 5i = 2, 52 = 2, 53 = 3, 54 = 4, 55 = 5
5. Vi = 3, V2 = 2, V3 = 2, V4 = 4, V5 = 4, 5i = 2, 52 = 2, 53 = 3, 54 = 4, 55 = 4
6. Vi = 3, V2 = 2, V3 = 2, V4 = 5, V5 = 4, 5i = 2, 52 = 2, 53 = 3, 54 = 4, 55 = 5
7. Vi = 3, V2 = 3, V3 = 2, V4 = 4, V5 = 4, 5i = 2, 52 = 3, 53 = 3, 54 = 4, 55 = 4
8. Vi = 3, V2 = 3, V3 = 2, V4 = 5, V5 = 4, 5i = 2, 52 = 3, 53 = 3, 54 = 4, 55 = 5
Это ограничение имеет реализацию в популярных системах(библиотеках) программирования в ограничениях (таблица 13).
Таблица 13.
Реализация ограничения sort в популярных библиотеках Constraint Programming
Библиотека Choco GeCode JaCoP MiniZinc
Имя ограничения sort sorted - sort
bin_packing(c, V, W) - ограничение задает условие, каждый предмет i с весом W[i] должен быть помещен в корзину V[i], при этом вес каждой корзины не должен превышать с [10].
Пример 13: Пусть Vi 6 {1, 2}, V 6 {1, 2}, У3 6 {1, 2}, W = {4, 3, 1}, c = 5 тогда всеми решениями, удовлетворяющими ограничению bin_packing(c, {V1, V2, V3, V4}, W) будут:
1. V1 = 1, V2 = 2, V3 = 1.
2. V1 = 1, V2 = 2, V3 = 2.
3. V1 = 2, V2 = 1, V3 = 1.
4. V1 = 2, V2 = 1, V3 = 2.
Это ограничение имеет реализацию в популярных системах(библиотеках) программирования в ограничениях (таблица 13).
Библиотека Choco GeCode JaCoP MiniZinc
Имя ограничения binPacking binpacking Binpacking bin packing
bin_packing_capa(C, У, Ж) - ограничение задает условие, каждый предмет I с весом ЖЩ должен быть помещен в корзину УЩ, при этом вес каждой корзины не должен превышать С[] [10].
Пример 14: Пусть У 6 {1, 2}, У2 6 {1, 2}, Уз 6 {1, 2}, Ж = {4, 3, 1}, С = {4, 5} тогда всеми решениями, удовлетворяющими ограничению bin_packing_capa(C, {У1, У2, У3, У4}, Ж) будут:
1. У1 = 1, У2 = 2, Уз = 2.
2. У1 = 2, У2 = 1, Уз = 1.
3. У1 = 2, У2 = 1, Уз = 2.
Это ограничение имеет реализацию в популярных системах(библиотеках) программирования в ограничениях (таблица 14).
Таблица 14.
Реализация ограничения bin_packing_capa в популярных библиотеках Constraint
Programming
Библиотека Choco GeCode JaCoP MiniZinc
Имя ограничения binPacking binpacking Binpacking bin_packing_capa
cumulative(S, Б, Я, Ь) - ограничение задает условие, что в никакой момент времени, выполнение задач с временем начала S[/], продолжительностью Б[/], потреблением ресурсов Я[/] не превысит заданного порога Ь в потреблении ресурсов [10].
Пример 15: Пусть & 6 {1, ..., 5}, S2 6 {2, ..., 7}, Sз 6 {3, ..., 6}, S4 6 {1, ..., 8}, А 6 {4}, Б2 6 {6}, Бз 6 {3, ..., 6}, Б4 6 {2, з}, Я1 6 {2, ..., 6}, Я2 6 {з}, Яз 6 {1,
2}, R4 £ {3, 4}, b = 5, тогда всеми решениями, удовлетворяющими ограничению cumulative({Si, S2, S3, S4}, {Di, D2, D3, D4}, {Ri, R2, R3, R4}, b) будут:
1. Si = i, S2 = з, Sз = 5, S4 = i, Di = 4, D2 = 6, Dз = з, D4 = 2, Я1 = 2, Я2 = з,
Яз = 1, Я4 = з.
2. Si = i, S2 = з, Sз = 5, S4 = i, Di = 4, D2 = 6, Dз = з, D4 = 2, Я1 = 2, Я2 = з,
Яз = 2, Я4 = з.
з. Si = i, S2 = з, Sз = 5, S4 = i, Di = 4, D2 = 6, Dз = 4, D4 = 2, Я1 = 2, Я2 = з,
Яз = 1, Я4 = з.
4. Si = i, S2 = з, Sз = 5, S4 = i, Di = 4, D2 = 6, Dз = 4, D4 = 2, Я1 = 2, Я2 = з,
Яз = 2, Я4 = з.
5. Si = i, S2 = з, Sз = 6, S4 = i, Di = 4, D2 = 6, Dз = з, D4 = 2, Я1 = 2, Я2 = з,
Яз = 1, Я4 = з.
6. Si = i, S2 = з, Sз = 6, S4 = i, Di = 4, D2 = 6, Dз = з, D4 = 2, Я1 = 2, Я2 = з,
Яз = 2, R4 = 3.
7. 51 = 2, 52 = 3, 53 = 6, 54 = 1, А = 4, А = 6, А = 3, А = 2, Д1 = 2, Л2 = 3, Я3 = 1, Д4 = 3.
8. 51 = 2, 52 = 3, 53 = 6, 54 = 1, А = 4, А = 6, А = 3, А = 2, Д1 = 2, = 3, Д3 = 2, Я4 = 3.
Это ограничение имеет реализацию в популярных системах(библиотеках) программирования в ограничениях (таблица 15).
Таблица 15.
Реализация ограничения cumulative в популярных библиотеках Constraint
Programming
Библиотека Choco GeCode JaCoP MiniZinc
Имя ограничения cumulative cumulative cumulative cumulative
disjunctive(5, А) - ограничение задает условие, что задачи с временем начала 5[/] и продолжительностью А[/] не будут пересекаться по времени [11].
Пример 16: Пусть 51 6 {2, ..., 5}, 52 6 {2, 3, 4}, 53 6 {3, ..., 6}, 54 6 {2, ..., 7}, А 6 {2, 3, 4}, А 6 {1, ..., б}, А 6 {4}, А 6 {1, 2, 3}, тогда всеми решениями, удовлетворяющими ограничению disjunctive({51, 52, 53, 54}, {А, А, А, А}) будут:
1. 51 = 2, 52 = 4, 53 = 6, 54 = 5, А = 2, А = 1, А = 4, А = 1.
2. 51 = 3, 52 = 2, 53 = 6, 54 = 5, А = 2, А = 1, А = 4, А = 1.
3. 51 = 4, 52 = 2, 53 = 6, 54 = 3, А = 2, А = 1, А = 4, А = 1.
4. 51 = 4, 52 = 3, 53 = 6, 54 = 2, А = 2, А = 1, А = 4, А = 1.
Это ограничение имеет реализацию в популярных системах(библиотеках) программирования в ограничениях (таблица 16).
Таблица 16.
Реализация ограничения disjunctive в популярных библиотеках Constraint
Programming
Библиотека Choco GeCode JaCoP MiniZinc
Имя ограничения cumulative unary cumulative cumulative
knapsack(W, Р, У, м>т,рг) - ограничение задает условие, предметы с весами ЖИ, ценностью Р[/] в количестве У[/] должны быть упакованы в рюкзак с ограничениями по весу не более м>т и с максимизацией общей ценности рг [12].
Пример 17. Пусть У 6 {0, 1, 2}, У2 6 {0, 1, 2}, У3 6 {0, 1, 2}, Ж = {2, 3, 1}, Р = {3, 5, 2}, м>т < 8 тогда оптимальным решением, удовлетворяющим ограничению knapsack(W, Р, {У1, У2, У3}, wг, рг) будут: V = 0, У2 = 2, У3 = 2, wг = 8, рг = 14.
Это ограничение имеет реализацию в популярных системах(библиотеках) программирования в ограничениях (таблица 17).
Библиотека Choco GeCode JaCoP MiniZinc
Имя ограничения knapsack linear Knapsack knapsack
connected(FЯOM, ТО, N5", Е8) - ограничение задает условие, что в ориентированном графе, состоящем из 1 ребер ЯОМ[1], ТО[1]), подграф, описанный булевыми массивами ^ и ES, является связным.
dag(FЯOM, ТО, NS, ES) - ограничение задает условие, что в ориентированном графе, состоящем из 1 ребер ЯОМ[1], ТО[1]), подграф, описанный булевыми массивами ^ и ES, является ациклическим.
path(FЯOM, ТО, s, t, NS, ES) - ограничение задает условие, что в ориентированном графе, состоящем из 1 ребер ЯОМ[1], ТО[1]), есть путь из точки 5 в точку t. Путь описывается булевыми массивами ^ и ES, указывающими содержится ли NS[7] узел и ES[7] ребро графа в искомом пути.
tree(FЯOM, ТО, г, ES) - ограничение задает условие, что в
неориентированном графе, состоящем из 1 ребер ^ЯОМ[1], ТО[1]), подграф, описанный булевыми массивами ^ и ES, является древом с корнем г.
regular(У, /а) - ограничение задает условие, что последовательность значений переменных У соответствует условиям перехода, описанным в конечном автомате /а.
table(У, Т, а1£) - ограничение задает условие, что значения переменных У принимают значения одного из кортежей Т, если кортежи объявлены истинными, либо не должны их принимать, если кортежи объявлены ложными. Для этого ограничения разработан ряд алгоритмов фильтрации таких как СТ+, GAC3rm, GAC2001, GACSTR, GAC2001+, GAC3rm+, FC, STR2+ различной степени применимости и эффективности [13]. Параметр апозволяет выбрать один из них.
Пример 18: Пусть У 6 {0, 1}, У2 6 {0, 1}, Уз 6 {0, 1}, Т = {{0, 0}, {1, 1}}, тогда всеми решениями, удовлетворяющими ограничению taЫe({У\, У2}, Т, а1%) для истинных Т будут:
1. У1 = 0, У2 = 0, Уз = 0.
2. У1 = 0, У2 = 0, Уз = 1.
3. У1 = 1, У2 = 1, Уз = 0.
4. У1 = 1, У2 = 1, Уз = 1.
В случае, если Т объявлены ложными, решениями будут являться:
1. У1 = 0, У2 = 1, Уз = 0.
2. У1 = 0, У2 = 1, Уз = 1.
3. У1 = 1, У2 = 0, Уз = 0.
4. У1 = 1, У2 = 0, Уз = 1.
Это ограничение имеет реализацию в популярных системах(библиотеках) программирования в ограничениях (таблица 18).
Библиотека Choco GeCode JaCoP MiniZinc
Имя ограничения table extensional Table table
Заключение
Роль концепции глобальных ограничений при моделировании и решении задач в рамках парадигмы Constraint Programming трудно переоценить. Процедуры, реализующие алгоритмы фильтрации глобальных ограничений, являются теми элементарными "кирпичиками", из которых строится модель конкретной прикладной задачи. Алгоритмы фильтрации глобальных ограничений, как правило, подкреплены соответствующими развитыми теориями, позволяющими организовывать высокопроизводительные вычисления. Выбор той или иной программной библиотеки, прежде всего, обуславливается тем, насколько набор и способ реализации глобальных ограничений соответствует уровню современных исследований в данной области.
Литература
1. Régin, J. Global Constraints: A Survey. / J. Régin // Hybrid Optimization. Springer Optimization and Its Applications. - 2011. - vol.45. - pp. 63-134.
2. Rossi, F. Handbook of constraint programming / F. Rossi, P. van Beek, T. Walsh. -Boston, MA: Elsevier, 2006. - 955 p.
3. Beldiceanu, N. Introducing Global Constraints in CHIP / N. Beldiceanu, E. Contejean // Mathematical and Computer Modelling. - 1994. - vol.2. - iss.12. - pp. 97-123.
4. Carlsson, M. SICStus Prolog User's Manual / M. Carlsson // RISE Research Institutes of Sweden AB 17 November 2020 Available at http://www.sics.se/sicstus/.
5. Oplobedu, A. CHARME: Un langage industriel de programmation par contraintes, illustré par une application chez Renault / A. Oplobedu, J. Marcovitch, Y. Tourbier // Proceedings of the Ninth International Workshop on Expert Systems and their Applications. - 1989. - pp. 55-70.
6. Laurière, J.-L. Language and a Program for Stating and Solving Combinatorial Problems / J.-L. Laurière // Artificial Intelligence. - 1978. - vol. 10. - iss. 1. - P. 29-127.
7. Hebrard, E. A Soft Constraint of Equality: Complexity and Approximability / E. Hebrard, B. O'Sullivan, I. Razgon // Principles and Practice of Constraint Programming. CP 2008. Lecture Notes in Computer Science. - 2008. - vol.5202. - pp. 358-371.
8. Pachet, F. Automatic Generation of Music Programs / F. Pachet, P. Roy // Principles and Practice of Constraint Programming. CP 1999. Lecture Notes in Computer Science. - 1999. - vol.1713. - pp. 331-345.
9. Older, W. Getting to the Real Problem: Experience with BNR Prolog in OR / W. J. Older, G. M. Swinkels, M. H. van Emden // PAP 1995, the 3rd International Conference on the Practical Application of Prolog. - 1995. - pp. 465-478.
10.Aggoun, A. Extending CHIP in order to Solve Complex Scheduling and Placement Problems / A. Aggoun, N. Beldiceanu // Mathematical and Computer Modelling. -1993. - vol.17. - iss.7. - pp. 57-73.
11. Carlier, J. The one-machine sequencing problem / J. Carlier // European Journal of Operational Research. - 1982. - vol. 11. - iss.1. - pp. 42-47.
12. Borradaile, G. The knapsack problem with neighbour constraints / G. Borradaile, B. Heeringa, G. Wilfong // Journal of Discrete Algorithms. - 2012. - vol.16. - pp. 224-235.
13.Demeulenaere, J. Compact-Table: Efficient Filtering Table Constraints with Reversible Sparse Bit-Sets / J. Demeulenaere, R. Hartert, C. Lecoutre, G. Perez, L. Perron, J. Regin, P. Schaus // Proc. International Conference on Principles and Practice of Constraint Programming, CP 2016. - 2016. - pp. 207-223.
DOI: 10.37614/2307-5252.2020.8.11.007 УДК 004.5, 004.9
А.В. Трашкова1, А.В. Вицентий2
1 Филиал федерального государственного бюджетного образовательного учреждения высшего образования «Мурманский арктический государственный университет» в г. Апатиты
2 Апатиты, Институт информатики и математического моделирования ФИЦ КНЦ РАН
ВЫБОР СПОСОБА РЕАЛИЗАЦИИ ТРЕНАЖЕРА-СИМУЛЯТОРА ДЛЯ СИСТЕМЫ ТРЕХМЕРНОГО МОДЕЛИРОВАНИЯ ОТКРЫТЫХ ГОРНЫХ РАБОТ
Аннотация
В работе рассматривается современное состояние разработок тренажеров-симуляторов для обеспечения профессиональной подготовки кадров в области горных работ. Приведена краткая характеристика наиболее распространённых типов тренажеров-симуляторов. Сделан выбор в пользу реализации УР симулятора цифрового карьера. Кратко описано состояние разработки проекта системы трехмерного моделирования открытых горных работ «цифровой карьер» в настоящее время.
Ключевые слова:
система моделирования, симулятор, открытые горные работы, образование, цифровая модель рельефа, динамическая визуализация данных.
A.V. Trashkova1, A.V. Vicentiy2
1 Apatity, Murmansk Arctic State University
2 Apatity, Institute for Informatics and Mathematical Modelling, KSC RAS
CHOICE OF THE SIMULATOR IMPLEMENTATION METHOD FOR A THREE-DIMENSIONAL MODELING SYSTEM OF OPEN-PIT MINING OPERATIONS
Abstract
The paper discusses the current state of simulators development to provide professional training in mining. A brief description of the most common types of simulators is given. A choice has been made in favour of implementing a VR simulator for a digital career. A brief description of the current state of development of the project for a three-dimensional modeling system for open-pit mining operations is given.
Keywords:
modeling system, simulator, open-pit mining, education, digital elevation model, dynamic data visualization.