Антиплагиат (1222542), страница 7
Текст из файла (страница 7)
На рисунке 2.7 красным ц ветом показаныэ лементы МИТ, которые программа определит, как граничащ ие, но не являющ иеся таковыми.Для исключения подобных э лементов из расчета в программе задается дополнительное условие. При нахож дении э лемента,граничащ его с единственным недоступным ЭУ, определяется число недоступных ЭУ, являющ имися соседними с текущ имучастком. Элемент МИТ исключается из матриц ы aseP, если э то число превышает значение «три». В таком случае точкаявляться граничной не будет.Рисунок 2.7 – Определение э лементов МИТ, не являющ имися граничащ имиПомимо координат найденных э лементов матриц а aseP хранит в себе идентификаторы использования э лементов, которыеиспользуются при построении маршрута.
Граничащ ий э лемент мож ет находиться в одном из нескольких состояний:– доступен для построения маршрута, идентификатор 0;– проверен алгоритмом, не использован при построении маршрута, идентификатор 1;– использован при построении маршрута, идентификатор 2;– не удовлетворяет условиям построения маршрута, идентификатор 3.После заполнения матриц ы aseP выполняется расчет данных по формулам (2.2-2.4). Рассчитывается длина ЭУ, исходя изданных о размерах исследуемой территории и размерности МИТ.Определение оптимального располож ения обогатительной фабрики производится по следующ ему алгоритму.
Выбираетсяэ лементМИТ, с идентификатором 1 (доступный участок местности), в начале матричной карты и помечается какпредполагаемое оптимальное место размещ ения ОФ. Программа определяет кратчайшие пути от месторож дений довыбранного э лемента и рассчитывает рентабельность фабрики при ее размещ ении в указанном э лементе. После э тоговыбирается следующ ий э лемент с идентификатором 1, для которого по тому ж е принц ипу определяется рентабельностьфабрики при ее размещ ении в выбранном э лементе. Выполняется расчет всех доступных участков местности. После расчетавыбираетсяэ лементМИТсмаксимальнымпоказателемрентабельности,которыйявляетсянаиболееоптимальнымрасполож ением ОФ.Описанный алгоритм выполняет основной модуль программы.
Обход всех доступных участков выполняется с помощ ьюпеременных X и Y, представляющ их собой координаты текущ его ЭУ, которые последовательно изменяются в ходе работымодуля. Вводится дополнительный ц икл для обработки всех исходных месторож дений. В начале ц икла выполняется проверкатекущ его э лемента на доступность, идентификатор э лемента принимает значение 3, исходная МИТ записывается в матриц уMesh, которая хранит информац ию о построенных маршрутах к текущ ему ЭУ, в матриц е aseP обнуляется строка состоянийграничных э лементов, все э лементы становятся доступными для построения маршрута, обнуляется массив istM, формирующ ийсписок расстояний от исходной точки маршрута к контрольным точкам, обнуляется переменная dist, хранящ ая значение длиныпостроенного маршрута.
Таким образом происходит очистка переменных от результатов предыдущ их вычислений.В переменную Point, которая хранит координаты текущ его полож ения, записываются координаты первого месторож дения,принимающ иеся за начало отсчета. Переменная Point2 хранит в себе координаты предыдущ его полож ения и необходима длярасчета длины маршрута. Для фиксирования контрольных точек при построении маршрута используются переменные СРХ иСРУ, которые хранят в себе координаты последней контрольной точки, массив CtrP, формирующ ий список контрольных точек,и переменная count – число контрольных точек.В начале алгоритма триггер устанавливается в первое полож ение.
В качестве триггера выступает переменная cnd,принимающ ая в начале ц икла значение 1. В переменные СРХ и СРУ записываются координаты месторож дения – начальнойконтрольной точки. Для выхода из алгоритма используется переменная Cond, которая в начале ц икла принимает значение 0.http://dvgups.antiplagiat.ru/ReportPage.aspx?docId=427.24090627&repNumb=123/3420.06.2016АнтиплагиатАлгоритм заканчивает свою работу, когда Cond принимает значение 1.В каж дой точке выполняется проверка алгоритма на завершенность. Если координаты текущ его полож ения совпадают скоординатами э лемента с идентификатором 3, то переменная Cond принимает значение 1 и алгоритм завершает своюработу.Поскольку в начале работы алгоритма триггер установлен в полож ение 1, то программа пытается построить маршрут отместорож дения к конечной точке (текущ ему э лементу) прямым путем.
Для э того используется массив Lng, который хранит всебе значения координат э лементов, соседних с текущ им э лементом, и значения расстояний от э тих э лементов до конечнойточки.Перед выбором точки маршрута в переменные Рх и Ру записываются x- и у-координаты текущ его полож ения соответственнодля проверки условия построения маршрута.
Среди э лементов массива Lng, которые являются доступными, и которые не былиранее использованы для построения маршрута, находится тот, расстояние до конечной точки которого минимально.Координаты найденного э лемента записываются в Point, в матриц е Mesh идентификатор соответствующ его э лементапринимает значение 2, рассчитывается расстояние меж ду Point и Point2 и прибавляется к переменной dist. Алгоритмпереходит к новой точке.Если после расчета координаты Point совпадают с координатами Рх и Ру, то э то означает, что алгоритм не нашел очередногоэ лемента для построения маршрута, и к заданной точке невозмож но построить прямой маршрут.
В э том случае триггер cndпринимает значение 0, и выполняется следующ ий алгоритм.После провала построения прямого маршрута, алгоритм выполняет поиск граничного э лемента из матриц ы aseP, максимальноприближ енного к конечной точке маршрута. Идентификатор найденного э лемента принимает значение 1. Выполняется откатпроизведенных операц ий: в переменную Point записываются координаты СРХ и СРУ последней контрольной точки, в матриц уMesh записываются данные из матриц ы Mesh2, которая хранит в себе информац ию о построенных маршрутах в ходе работыалгоритма. Триггер cnd принимает значение 2.
В начале работы алгоритма, при отсутствии построенных маршрутов, в матриц уMesh записывается исходная МИТ.После выбора максимально приближ енного к конечной точке маршрута граничного э лемента, алгоритм пытается построитьпрямой маршрут из контрольной точки к нему. Построение выполняется аналогично начальному алгоритму, с использованиеммассива Lng, переменных Point2, dist, Px и Ру. Если алгоритму удалось построить прямой маршрут к э лементу, то он становитсяконтрольной точкой общ его маршрута. Идентификатор э лемента в матриц е aseP принимает значение 2, триггер cndпринимает значение 1, в переменные СРХ и СРУ и в массив CtrP записываются координаты э лемента, в массив istMзаписывается длина построенного маршрута, Значение переменной count увеличивается на единиц у.
В матриц у Mesh2записываются данные по построенному маршруту из матриц ы Mesh. Помимо э того для каж дой i-й контрольной точкиформируется матриц а KMeshi, в которую записываются данные по построенным маршрутам в момент ее фиксирования.Идентификаторы матриц ы aseP, принимавшие значение 1, обнуляются для дальнейшего расчета.При провале попытки построить прямой маршрут к выбранному граничному э лементу, триггер cnd снова принимает значение0. Программа выполняет откат произведенных операц ий, производит поиск нового э лемента из матриц ы aseP, максимальноприближ енного к конечной точке, и производит попытку построить прямой маршрут до него.
Идентификатор граничногоэ лемента, к которому алгоритм не смог построить прямой маршрут, при э том не изменяет своего значения и остается равнымединиц е. Таким образом, он помечается алгоритмом как проверенный и исключается из дальнейшего поиска контрольныхточек маршрута.При выборе контрольных точек и построении маршрута возникает ситуац ия, когда алгоритм строит маршрут, который неявляется кратчайшим. Построение кратчайшего маршрута является главным требованием к алгоритму, поскольку значениерасстояния от месторож дения до предполагаемого оптимального располож ения ОФ напрямую влияет на рассчитываемуюрентабельность.
Построениенеоптимальногомаршрутасвязанососпец ифичностьювыбораконтрольныхточекнатерриториях с большим количеством недоступных участков. На рисунке 2.8 приведен пример построения неэ ффективногомаршрута.Рисунок 2.8 – Построение неоптимального маршрутаЗеленым ц ветом показано месторож дение, синим – предполагаемое место ОФ, ж елтым – пролож енный маршрут, красным –контрольные точки, выбранные в ходе построения маршрута. Как видно из рисунка, алгоритм построил неоптимальныймаршрут, продвигаясь к контрольным точкам 1 и 2. При э том очевидно построение маршрута от месторож дения доконтрольной точки 2.Для построения оптимального маршрута, в алгоритм вводится следующ ая проверка.
При нахож дении очередной контрольнойточки производится попытка построить прямой маршрут от месторож дения до найденной точки. Для э того в переменную Pointзаписываются координаты исходногоместорож дения, в матриц у Mesh записывается исходная МИТ, переменная distобнуляется и триггер cnd принимает значение 0.При невозмож ности пролож ить прямой маршрут от месторож дения до контрольной точки программа возвращ ает исходныезначения.
Триггер cnd принимает значение 1, в переменную Point записываются координаты текущ ей контрольной точки,матриц а Mesh принимает значение матриц ы KMesh, соответствующ ей текущ ей контрольной точке, переменная distпринимает значение расстояния из массива istM.При успешном построении прямого маршрута необходимо зафиксировать новый, более оптимальный маршрут и изменитьсоответствующ ие переменные. Поскольку число контрольных точек в данном случае становится равным единиц е, то значениепеременной count становится равным 1. В матриц ы KMesh1 и Mesh2 записывается пролож енный маршрут, массивы CtrP и istMобнуляются. В массив CtrP записываются координаты текущ ей контрольной точки, в массив istM записывается длина текущ егопостроенного маршрута.















