-N ПРИКЛАДНАЯ ИНФОРМАТИКА
№ 2 (50) 2014 ' -
А. А. Емельянов, докт. экон. наук, профессор Национального исследовательского университета «МЭИ»,
г. Москва, Смоленск, [email protected]
Н. З. Емельянова, канд. экон. наук, доцент Национального исследовательского университета «МЭИ»,
г. Москва, [email protected]
выявление принадлежности точек к объектам территорий в имитационных моделях Actor Pilgrim
Имитационное моделирование сложных процессов, динамику которых необходимо апробировать не только во времени, но и в пространстве, невозможно без применения топографического информационного обеспечения моделей и точной привязки всех исследуемых пунктов к сложным пространственным объектам на поверхности Земли. Определение площади такого объекта — самая простая задача, она решается с помощью вычислительных методов геометрии. Однако распознавание точек, появляющихся в процессе моделирования, на принадлежность к этим объектам — это динамическая задача, для решения которой не существует универсальных методов. Ниже рассматриваются решения некоторых таких задач.
Ключевые слова: вычислительная геометрия, пространственная имитация, А^г Pilgrim, метод Монте-Карло.
введение
Имитационное моделирование стало применяться около 30 лет назад для решения задач оперативного планирования с динамической идентификацией точек на принадлежность к пространственным объектам со сложной геометрической конфигурацией благодаря развитию вычислительной базы и разработке соответствующего программного обеспечения для целей моделирования [1, 2]. Такие задачи возникают в энергетике, в сельском хозяйстве, в деятельности МЧС, в службах контроля загрязнений в связи с авариями на опасных объектах в России и за рубежом, в военном деле.
В электроэнергетике в связи с развитием и реорганизацией отрасли возникают задачи размещения как отдельных объектов, так и распределенных систем.
В экономике сельского хозяйства территориальные объекты (поля, угодья) могут иметь как несложные, так и замысловатые границы. В связи с развитием передовых
стран — производителей продовольствия и необходимостью управления их обширными по площади полевыми ресурсами возникли задачи передислокации некоторых объектов: полевых баз (в России «полевых станов»), пунктов приема зерна, производства кормов, передислокации животноводческих ферм и изменения всей сельскохозяйственной логистики.
Внезапные экстремально высокие загрязнения территории могут возникнуть по разным причинам, в том числе из-за техногенных аварий с аварийными выбросами радиоактивных и химических опасных веществ. Если, например, после выброса зона заражения образуется в результате выпадения мелкодисперсного аэрозоля или осаждения туманного (воздушно-капельного) облака, то ее границы в первый небольшой отрезок времени могут напоминать эллипс, в одном из фокусов которого был выброс, а второй фокус задан направлением ветра. Но далее границы зоны усложняются во времени в связи с метеоусловиями.
88 у
№ 2 (50) 2014
В военном деле соответствующие задачи возникают в связи с действиями либо на учебном полигоне, либо на занимаемом войсками полигоне-плацдарме. Причем граница полигона и принадлежность точки полигону принципиально важны: по одну сторону границы гипотетически расположены «дружественные» части, а по другую — подразделения «потенциального противника».
Ниже речь пойдет о применении в имитационном моделировании особого аппарата — вычислительной геометрии, раздела дискретной математики, в котором рассматриваются алгоритмы для решения геометрических задач, таких как триангуляция, построение выпуклой оболочки, определение принадлежности одного объекта другому, поиск их пересечений. Вычислительная геометрия используется также в распознавании образов, машинной графике, инженерном и экономическом проектировании.
идентификация точки на принадлежность территориальному объекту
Существуют различные подходы к распознаванию факта принадлежности точки к поверхности геометрической фигуры на поверхности Земли, включая линию границы. Задача идентификации существенно упрощается, если существует каноническое уравнение этой фигуры (например, эллипс). Для многоугольников и более сложных фигур общих алгоритмов нет, но существуют способы, разделяющиеся на два принципиальных подхода.
1. Сканирование всей линии границы плоской фигуры без самопересечений из точки m, принадлежность которой мы проверяем исходящим из нее лучом, касающимся границы фигуры в исходной точке M0, которая может быть сколь угодно сложной, выпукло-вогнутой и даже с извилистыми «фьордами». Если после полного прохождения луча в одном направлении и возврата в исходную точку M0 суммарный угол его
поворота равен 2п радиан, точка принадлежит территории.
В противном случае суммарный угол поворота равен 0 радиан, а это означает, что точка находится за пределами границы территории. Данный способ достаточно понятен, и его корректность легко доказывается, но он крайне сложен при компьютерной реализации, если требуется высокая точность результатов. Например, принадлежность некоторой заданной точки сухопутной части Норвегии с использованием крупномасштабных карт в рамках их погрешности может распознаваться на современном компьютере несколько дней, и нет гарантии, что в итоге погрешность будет приемлемой. Обозначим Т, время, затраченное на идентификацию этим методом (в безразмерных единицах, например в тактах), которое довольно ресурсоемко, поскольку при одном элементарном перемещении придется умножать векторы-лучи, вычислять квадратные корни и арккосинусы.
2. Использование «бесконечной» горизонтали /, проходящей через точку, принадлежность которой проверяется, и через все границы фигуры (правило Франко П. Препарата и Михаэля Я. Шеймоса [3], применяемое для решения задач геометрического поиска). Если и слева от точки т, и справа от нее линия / пересечет границы нечетное число раз, то точка находится внутри границ этой фигуры. О вычислительной трудоемкости этого метода можно сказать только следующее: если обозначить Тр — время определения принадлежности точки с использованием правила Препарата-Шеймо-са, то справедливо неравенство Тр ^ (в тех же безразмерных единицах).
Правило Препарата-Шеймоса нельзя назвать методом, поскольку в нем не раскрыты два важнейших взаимосвязанных вопроса:
• не определено отношение точек границы как геометрического места точек к самой фигуре, а при наличии на границе углов — отношение вершин этих углов к фигуре;
• нет разграничения между двумя принципиально разными понятиями, такими как
I
со §
2
89
-ч ПРИКЛАДНАЯ ИНФОРМАТИКА
№ 2 (50) 2014 ' -
пересечение границы и касание границы (соприкосновение с ней).
связь с имитационным моделированием и методом Монте-карло
Имитационное моделирование — это научное направление, связанное с компьютерным воспроизведением процессов поведения сложных систем. Его характерные особенности следующие:
• случайный или детерминированный временной дрейф параметров;
• запланированные или случайные структурные изменения исследуемого процесса.
Статистическое моделирование — это методика исследования свойств объектов различной природы, основанная на описании правил функционирования отдельных элементов в их взаимосвязи с целью полу-2= чения множества частных результатов, под-.<5 лежащих обработке методами математической статистики для получения объективных | результатов. В основе статистического мо-§ делирования лежит метод статистических 5 испытаний — метод Монте-Карло1, создан-| ный с применением аналоговой вычисли-| тельной техники. На цифровой ЭВМ он был Е реализован позднее. Хотя имитационное | моделирование часто является статистическим, оно принципиально другое — это бо-^ лее широкое понятие, связанное с динамике кой, и метод Монте-Карло является лишь ¡и одним из возможных компонентов в наборе Ц инструментальных методов имитационного ^ моделирования.
Метод Монте-Карло не имеет своего ап-^ парата системного анализа структурных из-| менений и поведения исследуемого процесса. Единственное, что этот метод имитиру-| ет, — это последовательность случайных г§ чисел. Кроме того, для компьютерной реа-
^ лизации он требует существенных знаний
( --
~ ' Условное название методу присвоено в Лос-Ала-
:§ мосе в 1947 году учеными-атомщиками («Проект Ман-
§ хэттен»), и оно ничего общего не имеет с княжест-
5 вом Монако на берегу Средиземного моря и с казино
о§ в Монте-Карло. — Прим. авт.
программирования. В связи с простотой он иногда используется в качестве самостоятельного аппарата численных расчетов для вычисления определенных интегралов, для определения площадей и объемов очень сложных конфигураций, когда нет точных формул для вычислений.
Вместе с тем метод Монте-Карло удачно сопрягается со многими системами имитационного моделирования в качестве важного компонента. Если решена задача принадлежности произвольной точки к сложной геометрической фигуре независимо от конфигурации ее границы, то автоматически в имитационной модели решается вопрос вычисления площади фигуры именно методом Монте-Карло. Это очень важно при моделировании процессов, где границы территории изменяются в течение виртуального модельного времени.
Далее перейдем к рассмотрению двух задач: первой — учебной, когда территория является эллиптической, и второй — практической, когда территория представляет собой очень сложный полигон.
Учебная задача: принадлежность точки эллипсу и расчет площади
Эллипс (греч. еААег^гс;) — геометрическое место М точек т, т е М, на Евклидовой плоскости, для которых сумма расстояний I до двух точек F1 и F2, называемых фокусами, постоянна [4]:
I { ^ т} +1 ^ т} = 2а , (1)
где а — большая полуось эллипса, причем I{ ^ F2}< 2а (рис. 1).
Другие основные параметры эллипса (их основные соотношения приведены в табл. 1, собранной из разных справочных источников):
Ь — малая полуось эллипса; с — фокальное расстояние («полурасстояние» между фокусами); р — фокальный параметр;
№ 2 (50) 2014
I
со §
¡I
Рис. 1. Эллипс как геометрическое место точек
х = a■cos ф y = b ■ sin ф
, где ф 6 [0, 2п).
гр — перифокусное расстояние (минималь- или в параметрическом виде ное расстояние от фокуса до точки на границе эллипса);
га — апофокусное расстояние (максимальное расстояние от фокуса до точки на эллипсе).
Замечание 1. Эллипсом называют также и плоскую фигуру внутри геометрического места точек «эллипс».
Замечание 2. Окружность — это частный случай эллипса.
Эксцентриситет е характеризует вытяну-тость эллипса:
(3)
Формула (3) следует из определения эллипса (1).
В практике расчетов также полезны соотношения
c
b
e = - = 4/i-b- , 0 < e < 1.
Чем эксцентриситет ближе к нулю, тем эллипс больше напоминает окружность, и наоборот, чем е ближе к единице, тем он более вытянут.
Канонические уравнения эллипса. Любой эллипс с центром в начале координат, оси которого совпадают с осями координат (см. рис. 1), описывается каноническим уравнением
2 2 Х-+У- = 1
a2 b2 '
(2)
a¿ = b2 + c2; e = - =, 1 - —, 0 < e < 1; a a2
b2
p = a
Как было отмечено, метод Монте-Карло удачно вписывается в некоторые системы имитационного моделирования в качестве важного компонента. В моделях Actor Pilgrim соответствующие статистические испытания обычно выполняются автоматически в одном из узлов типа term (терминатор), когда ликвидируется актор, выполнивший все действия в имитационной модели.
Не будем углубляться в рассмотрение логически сложных проблемно-ориентированных моделей. Рассмотрим статистическое моделирование на самом простом примере (см. рис. 2), в котором модель состо-
91
a
№ 2 (50) 2014
Таблица 1
Основные соотношения между параметрами эллипса
ja ¡E
S
и ^
is
S §
S
й
i
0 §
S
1
1
ï s
SO
<u
чз
о *
s
о
u
I Ü
i S
ит только из двух узлов: генератора actor и терминатора term. Ее назначение — только генерация акторов и случайных чисел: генератор как бы «бомбардирует» акторами площадку — пространственный объект в терминаторе.
ния фактов принадлежности или непринадлежности всех анализируемых точек т этой геометрической фигуре, если площадь Smon эллипса, полученная методом Монте-Карло, удовлетворяет условию
Запуск акторов
Учет попаданий
S - s < р
neo mon — '
(5)
Рис. 2. Схема простейшей модели для решения задачи методом Монте-Карло
Замечание 3. Конечно, создавать модель для расчета площади эллипса практически нецелесообразно, поскольку его площадь Sg определяется точно по известной геометрической формуле
Sneo =П a Ь.
(4)
Но с помощью формулы (4) можно проводить проверку правильности распознава-
где e — допустимое отклонение.
Рассмотрим структуру и текст модели, показанной на рис. 2.
Замечание 4. Желающие могут достроить эту модель любым количеством узлов и создать свою проблемно-ориентированную имитационную модель поведения сложной системы для решения конкретной задачи.
Операторы Actor Pilgrim, такие как forward, actor, agent, fault, modbeg, modend, network, parametr04, place, term и top, известны из литературы [5, 6]:
Actor — генератор акторов с бесконечной емкостью;
92
№ 2 (50) 2014
Листинг 1
I
« §
S
.Si
finclude <Pilgrim.h>
double Smon; double Sgeo; double Xm; double Ym; double Nyes; double Nno; double A = 2.0; double B = 1.0;
// Площадь, рассчитанная методом Монте Карло // Площадь, рассчитанная по формуле (4) // Координата x случайной точки ш в прямоугольнике // Координата у случайной точки ш в прямоугольнике // Счетчик попаданий случайной точки ш в эллипс // Счетчик промахов случайной точки ш мимо эллипса // Большая полуось эллипса // Малая полуось эллипса
forward // Начало моделирования
{
Syes = 0.0; Sno = 0.0;
modbeg ("Монте-Карло", 2, 10000000.0, (long)time(NULL), none, none,
none, none, 6);
actor ("Запуск акторов", 1, none, none, 1.0, zero, zero, 2 );
network (dummy,standard)
{
top(2): term ("Учет попаданий");
agent {
Xm = unifrm(0,A); // Датчик: матожидание 0; отклонение ±a Ym = unifrm(0,B); // Датчик: матожидание 0; отклонение ±b if ( ( (Xm*Xm)/(A*A) + (Ym*Ym)/(B*B) ) > 1.0 ) // Каноническое уравнение
Nno = Nno + 1; // Не попали в эллипс else
Nyes = Nyes + 1; // Попали в эллипс (хотя бы на границу) }
place;
fault (123);
}
modend ("0T4eT.doc", 1, 24, page);
Smon = (2*A)*(2*B) Sgeo = pi*A*B;
kNyes/(Nno + Nyes)
// Расчет методом Монте-Карло // По геометрической формуле
paramert04;
return 1; }
// Корректировка параметров и вывод результатов
Agent — выполнить агентный программный блок в узле модели;
Fault — функция-индикатор логической ошибки пользователя;
Forward — первый оператор модели;
Modbeg — оператор первоначальной настройки;
Modend — оператор завершения моделирования;
parametr04 — штатное средство настройки и отображения параметров модели;
place — последний оператор узла модели;
term — терминатор, удаляющий лишние акторы из модели;
top — метка-функция входа актора в узел модели.
Операторы modbeg и actor показывают только то, что последовательно генерируются 10 млн акторов, которые направляются в терминатор. Временно'й интервал генерации акторов равен 1 ед. виртуального (мо-
№ 2 (50) 2014
¿а ¡С
S
и ^
I §
5 Й IE
0 §
is
1
со
1
6
I
5
<и
чз о
Ьс *
is
о
U
I i
i S
дельного) времени (на самом деле нулю — в смысле астрономического времени).
Первый прямоугольник в листинге выделяет исходные данные и переменные модели. Смысл их понятен.
Второй прямоугольник рассмотрим подробнее, поскольку он выделяет агентный модуль, выполняющий статистические испытания. Каждый актор при входе в этот модуль сначала получает координаты хт и ут новой точки в пределах прямоугольника размером 2а х 2Ь , окаймляющего эллипс:
хгп е [-а, а] Ут е [-Ь, ЬУ
причем используется программный датчик равномерного распределения ит^т.
Далее посредством канонического уравнения эллипса (2) и проверяется условие
Smon = (2a х 2b)
(2 2 Л
X y
m . У m > 1
va2 b2 > '
nno = nno +1;
(6)
else
nyes = nyes + 1
Если условие (6) выполняется, то точка т не попала в эллипс, и счетчик промахов пП0 увеличивается на 1. В противном случае точка т попала в эллипс (хотя бы на его границу), и счетчик попаданий пуе8 увеличивается на 1.
В третьем прямоугольнике рассчитывается площадь эллипса Sгn0Jrl методом Монте-Карло:
Нэстройкэ 4 параметров модели
Пл„ + nw
(7)
Далее полученную величину Smon можно сравнить с точным расчетом площади по формуле (4), где задействовано число п (Пи). Величина Пи =3,14 в три значащих цифры является источником недопустимой погрешности, поэтому используется точная системная константа п (pi) из файла Pilgrim. h:
const double pi = (double) (3.1415926535897 932384626433832795).
Результаты показаны на рис. 3 (получены штатным средством parametr04):
Желающие могут увеличить число знаков после запятой и использовать для проверки формулу (5). Однако в нашем случае это не требуется, поскольку совпадение в первых четырех знаках очевидно.
Рассмотренную учебную задачу удалось сравнительно просто решить только потому, что для эллипса как геометрического места точек существуют канонические уравнения. Далее рассмотрим более сложный реальный пример.
Практическое определение площади полигона с произвольной конфигурацией
Большинство земельных участков (земельных владений, муниципальных территорий, сельскохозяйственных полей), занятых для проживания людей, деятельности объектов производства, энергетики и армей-
Паракетры
|2.сао 1.000
|5.283 |S.283
Назначение
1. Большая полуось эллипса
2. Малая полуось эллипса
3. Площадь: подсчитана нетопом Монте Карло
4. Площадь: рассчитана по геометрической формуле
Управление
Настрой"] Пропуск
Рис. 3. Вывод результатов
94
№ 2 (50) 2014
ских подразделений, имеют очень сложные границы, и редко их конфигурация совпадает с простейшими геометрическими фигурами.
Полигон (греч. пoAuYюvo) — геометрическое место точек, являющееся выпукло-вогнутым многоугольником (рис. 5.4), граница которого — замкнутая линия, состоящая из соединенных отрезков прямых, подчиняющаяся только двум правилам [3]:
• линия не образует петель, иначе это более чем один полигон;
• в контуре невозможны «перехлесты» линии (аналогично).
Число отрезков прямых, их длины и величины углов между ними — в общем случае величины произвольные. Число вершин углов полигона Np. Нумеровать их будем для определенности от 0 до NГJ - 1 (полигон на рис. 4 имеет 11 вершин). При решении реальных задач число вершин может составлять десятки-сотни. Точка-вершина М0 характерна тем, что проводить границу полигона начнем в этой точке и в нее же вернемся.
На практике используется два способа описания полигона.
Способ 1. Полуавтоматически при просмотре крупномасштабной топографической карты (например, в Actor Pilgrim) формируется файл, когда одним щелчком левой кнопки мыши в файл снимаются две географические координаты одной точки — вершины полигона. Далее после просмотра карт, на которых обозначены вершины, их координаты программно переводятся в декартовы.
Способ 2. Используется простое описание двумерного массива в виде пар декартовых координат, расставленных в порядке возрастания номеров углов полигона, например, для полигона на рис. 4 это выглядит так:
double P [] [2] = { {18,6}, {10,11}, {8,8}, {5,7}, {4,12}, {0,8}, {3,0}, {6,0}, {7,2}, {14,6}, {12,0}};.
Такое, например, описание имеет полигон P на рис. 4. Обычно так полигоны строятся для учебных целей, поскольку этот способ намного проще, и, кроме того, крупномасштабные карты (даже электронные, а не бумажные) — это довольно дорогой ресурс.
I
со §
2
У 10
м5
мА
Полигон Р
г ¡Mi "1 т г М0
м2
мъ м9: /
;
п п 7
г/\ 1 i—►
м8 \
/
\ Мб M7¡ Мю \
х5 хтх6 х4 х3 Х1 х& х2 Х1 *10 х9 0 5 10 15 х
Рис. 4. Полигон со сложной конфигурацией на прямоугольном участке местности размером
18 х 12 = 216 км2
95
№ 2 (50) 2014
ja ¡E
S
u ^
I
¡5 §
i
0
n
E
1
со
<r
! §
SO
<u o
o
u
l ¡
i
S
Правила определения принадлежности точки m полигону. Таких правил несколько. Все они сложны в реализации в виде алгоритмов и трудоемки в аспекте компьютерного ресурса (быстродействие процессора, объем памяти) при оценке площадей. Ниже рассмотрим программную модификацию правила Препарата-Шеймоса в Actor Pilgrim применительно к полигонам. Свои задачи Ф. П. Препарата и М. Я. Шей-мос не связывали напрямую с топографической наукой, поскольку топография имеет дело со сферической геометрией Кра-совского, с использованием эллипсоидов вращения.
Предложенное ими правило работает однозначно в следующих случаях:
• все пересекаемые стороны наклонны (не вертикальны и не горизонтальны);
• точка m находится строго внутри полигона (не на границах и не в вершинах полигона).
В связи с такими неоднозначностями ниже это правило конкретизировано дополнительными условиями, чтобы получить расчетный метод.
Алгоритм. Допустим, что с помощью генератора случайных величин сгенерирована случайная точка m с координатами хт, ym (на рис. 4 хт = 2,5 и ym = 4,0). Через эту точку проводится неограниченная справа и слева горизонтальная линия l. Принадлежность точки m определяется в три этапа, где последовательно проверяются следующие условия.
Этап 1. Условия точного попадания
в вершину или в сторону.
Условие 1. Если точка находится точно в вершине одного из углов полигона, то она принадлежит полигону. Для наглядности введем в рассмотрение булевскую переменную M_v_vershine, соответствующую нахождению точки m в вершине. Тогда условие принадлежности можно сформулировать следующим образом, использую нотацию языка программирования С:
if (Х == Хт, && У == Угп )
Условие 2. Если точка т находится на вертикальной или горизонтальной стороне полигона, то она принадлежит полигону, причем
если ( ( (yi - 1 > ym && ym > y) II II (У - 1 < уг && уГ < у)) && (Х- 1 ==хт== х))
then St Vert = 1,
(9)
где булевская переменная St_Vert в значении «1» соответствует ситуации, когда сторона строго вертикальна и точка т находится на ней; и
если ( ( (х- 1 >хт && хт > х) II II (х- 1 <хт && хт <х)) && (y- 1 ==yrn== y))
then St Goriz = 1,
(10)
then M v vershine=1.
(8)
где булевская переменная St_Goriz в значении «1» соответствует ситуации, когда сторона строго горизонтальна и точка т находится на ней.
Этап 2. Условия, отличающие понятия пересечение и касание:
Условие 3. Если горизонтальная линия I проходит точно через вершину, то она пересекает границу полигона только в том случае, если стороны углов расходятся в разных направлениях: либо одна вверх, другая вниз, либо наоборот — одна вниз, другая вверх. Но если обе стороны идут из вершины в одном направлении: либо обе вниз, либо обе вверх, то горизонталь I только касается вершины, не пересекая границы.
Условие 4. Если линия I проходит точно через горизонтальную сторону полигона (например, через М6 — М7 на рис 5.4), то она пересекает границу полигона только в том случае, если стороны правого и левого углов на этой линии расходятся в разных направлениях: либо одна вверх, другая вниз, либо наоборот — одна вниз, другая вверх. Но если обе стороны идут из правой и левой вершины в одном направлении: либо обе вниз, либо обе вверх, то горизонталь I только касается границы полигона, не пересекая ее.
Этап 3. Определение нахождения точки внутри полигона. Этап можно выполнять только тогда, когда принадлежность точки
96
№ 2 (50) 2014
полигону не выявлена на этапах 1 и 2. Правило Препарата-Шеймоса формулируется в виде условий 5 и 6.
Условие 5. Если неограниченная слева и справа горизонталь I, проходящая через точку т, слева от нее пересечет стороны полигона нечетное число раз, и справа от нее — тоже нечетное число раз, то т принадлежит полигону. Условие пересечения стороны полигона М1 - ! - М1 горизонталью I в этом случае можно записать так:
если ( (у, - ! > угп && угп > у) II 11 (У,- 1 < Ут && Ут < У)), то пересечение есть; е^е
пересечения нет. (11)
Координата точки пересечения хср определяется по формуле
Х-1+тгттг^x-x >х'-1' у>у
yi y/-1
xcp =
/-11 y/-1 y[n(x/-x-m>x-i' у ;<у/-1'
x, ,+■
У/-1- y i
x,+■
4xi-rxi )■ xi <x/-1' У < У/-
У/-1-Ут (
/'y,-1-у, (x/-1 w
x+y;::y"m(x/-1-x,)' x^ у >у,-1 ■
y/ y/-1
(12)
Далее выполняется анализ:
• если координата точки пересечения хср меньше координаты точки хт точки т, то точка пересечения слева;
• но если координата точки хср больше координаты точки хт, то точка пересечения справа;
• если же координаты равны, т. е. хср = хт, то точка т находится точно на границе, т. е. принадлежит полигону.
Условие 6. Если эта горизонталь I пересечет и в левом, и в правом направлениях стороны полигона по четному числу раз или в каком-то одном направлении или в обоих направлениях не пересечет ни разу, то точка т не принадлежит полигону.
Правило Препарата-Шеймоса удобно для практических задач имитационного моделирования сложных процессов на местности с учетом расстояний, площадей и конфигураций — благодаря свойству нормальной конической проекции крупномасштабных топографических карт: начиная с масштаба 1:50 000 и крупнее, отрезок параллели длиной до 20 км в средних широтах представляет собой практически горизонтальную линию.
При разработке новых алгоритмов работы с полигонами полезно использовать рабочие матричные таблицы (табл. 2).
Таблица 2
Матрица для распознавания принадлежности точки m полигону
Вершины полигона М1
Сторона полигона М, , - М, М0 М, М2 М3 М4 М5 М6 М7 Ма М9 М 10
Х0 Уо x1 У, Х2 У2 Х3 Уз Х4 У4 Х5 У5 x6 Уб Х7 У7 Х8 У8 У9 Х10 У10
М0 - М1 18 6 10 11
М1 - М2 10 11 8 8
М2 - М3 8 8 5 7
М3 - М4 5 7 4 12
М4 - М5 4 12 0 8
М5 - М6 0 8 3 0
М6 - М7 3 0 6 0
М7 - М8 6 0 7 2
М8 - М9 7 2 14 6
М9 - М,0 14 6 12 0
Si
Щ
со Эй
еа §
¡1 .Si
97
№ 2 (50) 2014
Составление программной модели. В качестве прототипа используем предыдущую модель для определения принадлежности точек эллипсу и расчета площади эллипса (см. листинг 1). Однако программная реализация агентного блока анализа попаданий акторов в полигон на порядок сложнее, нежели для аналогичного по задачам блока в учебном примере с эллипсом, поскольку, к сожалению, существенные затраты на программирование при реализации сложных расчетов — это свойство метода Монте-Карло.
Состав переменных модели показан ниже (листинг 2). Он соответствует первому прямоугольнику в рассмотренном ранее прототипе (см. листинг 1).
При работе с полигонами желательно использовать высокоточные датчики случайных числовых последовательностей. Чем сложнее детали граничной линии полигона, чем больше требуется случайных чисел для тестирования. Для работы с эллипсом было достаточно 10 млн испытаний, чтобы достаточно точно определить его площадь. Такое число испытаний обеспечивает лю-
бой 32-разрядный конгруэнтный программный датчик. Но с полигоном, даже таким несложным, как на рис. 4, при таком количестве испытаний погрешность e появляется уже в четвертом знаке. Но это означает, что в данном конкретном случае гарантирована точность только в 1 км2. Иногда такая точность является недопустимо низкой.
Повышение точности связано с увеличением числа испытаний. Но конгруэнтные датчики плохо работают при приближении числа испытаний к 100 млн из-за ограниченности периода последовательности генерируемых чисел. Практика показывает, что иногда необходимо от 1 до 10 млрд испытаний и более, что требует до нескольких часов работы компьютера, причем качество равномерности базового распределения должно быть очень высоким (иначе появится вторая причина погрешности — некачественный датчик, который дает большой период, но распределение «не совсем равномерное»). Качественными датчиками с периодом более 1032 оснащен пакет Actor Pilgrim [7].
Ниже приведен программный текст агент-ного блока анализа попаданий акторов в по-
Листинг2
Ü
сС а
U g
S §
5 ö I
0
И
Е
1
со
1
6
I
S
IS
<u
43 о
Ьс *
s
о
U
I
! s
S
// Переменные модели
double P[][2] = {{18,6},{10,11},{8,8},{5,7},{4,12},{0,8},{3,0},{6,0},{7,2},{14,6},
{12,0}} ; // Полигон Р
double Spol; // Площадь полигона, рассчитанная методом Монте Карло
double Xm; // Координата х случайной точки в т прямоугольнике А х В
double Ym; // Координата у случайной точки в т прямоугольнике А х В
double Syes; // Счетчик попаданий случайной точки т в полигон Р
double Sno; // Счетчик промахов случайной точки т мимо полигона Р
double Xmax; // Рабочий X максимум
double Xmin; // Рабочий X минимум
double Ymax; // Рабочий Y максимум
double Ymin; // Рабочий Y минимум
double A; // Ширина окаймляющего прямоугольника
double B; // Высота окаймляющего прямоугольника
double Xcp; // Координата х точки пересечения сторооны горизонталью L
long Np; // Число вершин полигона Р
long Clef; // Число пересечений слева от точки m
long Crig; // Число пересечений справа от точки m
long I; // Рабочая
long J; // Рабочая
long K; // Рабочая
long L; // Рабочая
bool Inpoly; // Подтверждение принадлежности точки m полигону P: true
№ 2 (50) 2014
Листинг 3
I
со §
¡1 .Si
// Координата x точки ш
// Координата у точки ш
// Принадлежность не обнаружена
// Пересечения слева
// Пересечения справа
Ym )
// Точка m принадлежит вершине
// Агентный блок анализа попаданий акторов в полигон P
agent {
Xm = unifrm(Xmin+A/2.0, A/2.0 ) Ym = unifrm(Ymin+B/2.0, B/2.0 ) Inpoly = false; Clef = 0; Crig = 0;
for(I=0; I < Np; I++)
if ( P[I][0] == Xm && P[I][1 {
Syes = Syes + 1.0;
Inpoly = true; }
if (Inpoly == false)
for(I=0; I < Np; I++) {
J = (I+1) % Np; if (((P[I][1]>Ym && Ym>P[J][1
[0]==Xm && Xm==P[J][0]))
{
Syes = Syes + 1.0;
Inpoly = true; }
}
if (Inpoly == false)
for(I=0; I < Np; I++) {
J = (I+1) % Np; if (((P[I][0]>Xm && Xm>P[J][0
[1]==Ym && Ym==P[J][1]))
{
Syes = Syes + 1.0;
Inpoly = true; }
}
if (Inpoly == false)
for(I=0; I < Np; I++) {
J = (I+1) % Np; K = (J+1) % Np;
if (Ym == P[J][1] && (P[I][1]<Ym {
if (P[J][0] < Xm)
Clef = Clef + 1;
слева от m
if (P[J][0] > Xm)
Crig = Crig + 1;
справа от m
}
}
if (Inpoly == false)
for(I=0; I < Np; I++) {
J = (I+1) % Np;
(P[I][1]<Ym && Ym<P[J][1]
&& (P[I]
// Точка m принадлежит горизонтальной стороне
(P[I][0]<Xm && Xm<P[J][0]
&& (P[I]
// Точка m принадлежит вертикальной стороне
Ym<P[K][1]
// Линия L пересекает границу через вершину
// Линия L пересекает границу через вершину
99
№ 2 (50) 2014
Продолжение листинга 3
K = (J+1) % Np; L = (K+1) % Np;
if ( (P[J][1]== Ym && Ym== P[K][1]) && ((P[I][1] > Ym && Ym > P[L][1])
(P[I][1] < Ym && Ym < P[L][1])) ) {
if (P[K][0] < Xm)
Clef = Clef + 1; // Линия L пересекает по горизонтальной стороне
слева от m
if (Р№[0] > Хт)
Crig = Crig + 1; // Линия L пересекает по горизонтальной стороне
справа от m
}
}
// Правило Препарата-Шеймоса (начало)
if (Inpoly == false)
for(I=0; I < Np; I++) {
J = (I+1) % Np;
if ( (P[I][1]>Ym && Ym>P[J][1] ) || (P[I][1]<Ym && Ym<P[J][1] ) ) { // Пересечение есть
if ( P[J][0] > P[I][0] && P[J][1] > P[I][1]) {
Xcp = P[I][0] + ((P[J][1] - Ym)/(P[J][1] - P[I][1]))*(P[J][0]
J»
<E
fi u
I
S §
S й IE
0
is
il со
1 и
!
S SO
<u
мз
о *
S
о
U
I i
i
s
P[I][0]
P[I][0]
P[J][0]
if (Xcp < Xm)
Clef = Clef + 1; if (Xcp > Xm)
Crig = Crig + 1;
if (Xcp == Xm) {
Syes = Syes + 1.0;
Inpoly = true; }
}
if ( P[J][0] > P[I][0] && P[J][1] < P[I][1]) {
Xcp = P[I][0] + ((P[I][1] - Ym)/(P[I][1] - P[J][1]))*(P[J][0
// Линия L пересекает сторону слева от т // Линия L пересекает сторону справа от т
// Точка т принадлежит наклонной стороне
if (Xcp < Xm)
Clef = Clef + 1; if (Xcp > Xm)
Crig = Crig + 1;
if (Xcp == Xm) {
Syes = Syes + 1.0;
Inpoly = true; }
}
if ( P[J][0] < P[I][0] && P[J][1] < P[I][1]) {
Xcp = P[J][0] + ((P[I][1] - Ym)/(P[I][1] - P[J][1]))*(P[I][0
// Линия L пересекает сторону слева от т // Линия L пересекает сторону справа от т
// Точка т принадлежит наклонной стороне
if (Xcp < Xm)
Clef = Clef + 1; if (Xcp > Xm) Crig = Crig + 1;
// Линия L пересекает сторону слева от т // Линия L пересекает сторону справа от т
100
№ 2 (50) 2014
Окончание листинга 3
P[J][0]
if (Xcp == Xm) {
Syes = Syes + 1.0;
Inpoly = true; }
}
if ( P[J][0] < P[I][0] && P[J][1] > P[I][1 {
Xcp = P[J][0] + ((P[J][1] - Ym)/(P[J][1
// Точка m принадлежит наклонной стороне
P[I][1]
(P[I][0]
if (Xcp < Xm)
Clef = Clef + 1; if (Xcp > Xm) Crig = Crig + 1;
if (Xcp == Xm) {
Syes = Syes + 1.0;
Inpoly = true; }
}
// Линия L пересекает сторону слева от ш // Линия L пересекает сторону справа от ш
// Точка ш принадлежит наклонной стороне
}
}
if (Inpoly == false) // Правило Препарата-Шеймоса (окончание)
if ( (Clef % 2) > 0 && (Crig % 2) > 0) {
Syes = Syes + 1.0;
Inpoly = true; // Точка m находится внутри полигона
}
else
Sno = Sno + 1; // Точка m находится за границей полигона
}
лигон (листинг 3). Он соответствует второму прямоугольнику в прототипе (см. листинг 1).
Универсальных формул для распознавания принадлежности точки полигону не существует. Но есть методы точного расчета площади полигона:
• метод трапеций (используется в численном интегрировании);
• метод триангуляции (применяется топографами-профессионалами).
При использовании этих методов и неудачном сочетании параметров полигона иногда требуется диалоговое вмешательство специалиста в работу программы расчета. Проверку правильности работы рассмотренного выше алгоритма проще всего провести, рассчитав площадь полигона методом трапеций. В данном конкретном случае погрешность появляется только
в шестом знаке, что является следствием правильности работы предложенного алгоритма распознавания и качественным свойством программных датчиков Actor Pilgrim (рис. 5).
Достаточно близкие значения площадей показывают, что распознавание точек
Результат;
Моте-Карло; 105.998 Расчётом: 106.000
ОК
Рис. 5. Результаты расчета площади полигона
л 101
№ 2 (50) 2014
ja ¡E
S
и ^
I §
5 Й
i
0
и
Е
1
со
IS
<г
! §
SO
<u
43 о
о
U
I
I
i
S
на принадлежность полигону проходило успешно, а алгоритм не имеет методических ошибок.
Заключение
Решение задач по распознаванию взаимосвязей объектов экономической, природоохранной и военной деятельности с конкретными особенностями территорий невозможно без инструментальных средств распознавания принадлежности точек местности заданному объекту территории.
Многие территории по внешнему виду можно свести к полигону. Но существуют ситуации, когда это влечет за собой появление незапланированных погрешностей, и поэтому на практике возникает потребность в разрабатывании новых алгоритмов.
Метод Монте-Карло как самостоятельное инструментальное средство численного интегрирования и расчетов площадей в настоящее время используется редко в связи с развитием быстродействия и повышением точности (разрядности) цифровой вычислительной техники, появлением более точных методов численной математики и соответствующего программного обеспечения.
Однако как вспомогательное средство этот метод по-прежнему удобно использовать в имитационных моделях для нестандартных решений, поскольку необходимый
программный аппарат, обеспечивающий получение высококачественных последовательностей случайных величин с длительным периодом, автоматически доступен вычислительным блокам в таких моделях.
Список литературы
1. Девятков В. В., Назмеев М. М., Власов С. А. Имитационная экспертиза: опыт применения и перспективы // Прикладная информатика. 2014. № 1 (49). С. 66-74.
2. Емельянов А. А., Емельянова Н. З. Технология работ с топографической информацией в имитационных моделях Actor Pilgrim // Прикладная информатика. № 4 (46). С. 65-91.
3. Препарата Ф. П., Шеймос М. Я. Вычислительная геометрия: Введение. М.: Мир, 1989. — 478 с.
4. Корн Г., Корн Т. Справочник по математике для научных работников и инженеров. М.: Наука, 1973. — 832 с.
5. Емельянов А. А., Власова Е. А., Дума Р. В., Емельянова Н. З. Компьютерная имитация экономических процессов / Под ред. А. А. Емельянова. М.: Маркет ДС, 2010. — 464 с.
6. Емельянов А. А., Власова Е. А., Прокимнов Н. Н., Емельянова Н. З. Технология программного моделирования и управления моделями в системе Actor Pilgrim // Прикладная информатика. 2013. № 5 (47). С. 64-95.
7. Емельянов А. А. Лаг-генераторы для моделирования рисковых ситуаций в системе Actor Pilgrim // Прикладная информатика. 2011. № 5 (35). С. 98-117.
A. Emelyanov, Doctor of Economics, Professor, National Research University «MPEI»; Executive board member of NC «National Society for Simulation Modelling», St. Petersburg, [email protected]
N. Emelyanova, PhD in Economics, Associate Professor, National Research University «MPEI», Moscow, [email protected]
Identify points to belong to objects in simulations territories by means of Actor Pilgrim
The complex processes simulation, some dynamic characteristics of which are necessary to test not only in time but also in space, it is impossible without the use of topographical information providing models and precise positioning of all test points to complex spatial objects on the Earth's surface. The easiest task, which is solved by using computational geometry methods, is the definition of the object area. However, recognition of the items appearing in the modeling process belong to the list of these objects — is a dynamic task for which solving there are no universal methods. Below we consider some of such problems solutions.
Keywords: computational geometry, space simulation, Actor Pilgrim, Monte Carlo method.
102