Батенко А.П. Системы терминального управления (1984) (1246767), страница 24
Текст из файла (страница 24)
Для этого используются текущие значения фазовых координат системы, содер- жащиеся в массиве УР (): УР (!) = 1, УР (2) = х„УР (3) хв...„ 114 Р (16) = ВЕТ()кЧ ЕМР Ниже приводится текст подпрограммы )2К. Ее длина — 23 оператора. „. 50ваОПТХИЕ НК(ни ООпьсе Раес1510и Саин)и ТОТ()Е),ч 01МЕН510И оч (тй) А(1) =Н/2-0Е а(2) =а(1) А(З) =Н а (4) =н а(5) =а()) 00 т 1=1иНРОН ОТ(1) =й -О Е т ТР(1)итот(1) 00 2 )и(ГЬ сасс Рпсй Во=а()+1) сС=А(х) 00 2 1=1 иИРОН ОТ(1) =ОТ(1) +ВВ*Р 2 ТР(1)=ТОТ(1)+СС* 00 5 1=1РМРОН 5 ТОТ(1) =ТОТ(1)+оч Йетпаи Ено ЬРОагра(Н) ЧОтиТРиЕгочилгигВВгСС Р(тв)г Р(та) а()) (1) Л -ОВ Т(1) П!СА ОДНОВХОДОВАЯ ТАБЛИЦА С ЛИНЕЙНОЙ ИНТЕРПОЛЯЦИЕЙ Подпрограмма используется прн моделированвн, когда характеристики управляемого объекта задаются графически.
Пусть на рис. П1.2 изображена кривая у (х). С помощью подпрограммы ТАЗ~ зту функцию можно кусочно 115 !' Р ()!РОТ() = х . Вычисленные правые части в подпрограмме Рч(СН засылают- ~ и и массив и" (): г" (1) = 1., Р (2) = х,, Г (3) = хе, ..., Р ()(РОР) = хг. Массивы УОТ (), УР () и Л () описываются в подпрограмме РЯС!ч оператором СОММО!и'. Кроме перечисленных общих массивов подпрограмма )2К использует массив!)У () размерности А(РОК, в ячейки которого засылает приращения функций бг, бхм бхз, ..., охг. Массив А (5) используется для собственных нужд подпрограммы, и его размерность не зависит от числа уравнений системе (ПХ.В.1). Приведенная ниже подпрограмма )2К предназначена для интегрирования истем, содержащих не более 10 дифференциальных уравнений.
Если необходимо интегрировать систему, состоящую, например, из 15 дифференциальных уравнений, то требуется изменить размерность четырех массивов: УОТ (15), УР (!5), и (15) н Х)У (15). Точность интегрирования — порядка М, где й — шаг интегрирования, выраженный в секундах. Подпрограмма использует подпрограмму Рч(СН, вычисляющую правые части дифференциальных уравнений.
Подпрограмма РЛС!! должна быть оформлена следующим образом: 5(1ВВО!)Т1НЕ РВСН Х)01)ВЕЕ РАДЕС!510Ы ч'ОТ, УР, Р,... СОММОМ ТОТ (16), г'Р (16), Р (16), ... Р (1) = !.!) 6 Р (2) = у(х) Рис. П1.2 интерполировать и достаточно точиозаменить ломаной линней, соединяющей соседние точки. Пусть интересующие иас значения ! ! функции расположены в следующем интервале изменения аргумента; х ц„ ( ( х и, хюах. Разобьем интервал на А( ! равных отрезков. В этом интервале на оси абсцисс будет ИТ = А! + ! точек с координатами х,, хз, хз, ...,х;ч Ь!.
Каж- (!) (2) (1) (!) О( (б( (1( (у) (я) !! (у дой точке соответствует свое значение зюп Х „функции: у, (х,), у„(х,), уз (хз), уж+! (хм+!). подпрограмма вычисляет значение у (х) при любом х, паходнщемся в интервале междухп,<п и хюах. При выходе х за указанные пределы подпрограмма выдает граничные значения Функции у (хт<п) прн х ( хт<п н у (ха~ах) прн х ) хюах. Обрзщение к подпрограмме САЕС ТАВ( (Х, )г, Х1, ХА, А(Т, )гТ). Здесь Х вЂ” текущее значение аргумента х; К вЂ” вычисленное значение функ. ции у (х); Х1 — минимальное значение аргумента х,п<„', ХА — л!аксимальное значение аргумента хи~ах! 1(Т вЂ” количество точек в интервале х,п<„— хюах, считая н крайние точки; г'Т ((УТ) — массив размерности [т* Т, в котором помещены значения фуниции у< (х ), чз (хз) уэ (хз) "' ун4.! (хм!!)' Подпрограмлиа работает с одинарной точностью.
Если она используетсн в програмя!е, работающей с двойной точностью, то перед обращениел! к подпрограмме ТАВС аргумент функции необходимо преобразовать к Ю(А<ОЕВ РКЕС1- 5(ОА<. а при выходе из подпрограммы функцию г' следует преобразовать к РО(1ВСВ РВВС13(ОИ. Эти преобразования производятся присвоениями Х= 2 САЬ<. ТАВЕ (Х, У, Х1, ХЛ, МТ, УТ) Г= 'г' где Х, г', Х1, ХА, г'Т вЂ” переиенные и конставты одинарной точности; 2, Г— аргумент функции и функция — переменные двойной точности.
Длина подпрограммы — 19 операторов. Ниже приводится ее текст. 5пйяООт[нЕ ТАВС<х~Т,Х1~ХА~н[~ТТ С!НЕН510Н ТТ<11 Нс<ХА-Х1!/<НТ 1! [Г <Х-ХА! ! в2 е2 1 1С<Х-Х[!5 5 4 4 Нзиу" 1 СО 6 [п1<и Хтвк! Нп[ 11<к-Хт!б Т,б б СОНТ[НОЕ 5 ТвТТ<1! СО ТО 5 2 ТятТ<НТ! СО ТО 5 7 тяП<!ь1! СО ТО 5 б Тату<11,<Х-Х[.ив<1-1!<п<тт<!ь[[-ТТ<1!!АН 5 ЯЕТОЯП Е»0 1!6 П1.3. ПОДПРОГРАММА ОГРАНИЧЕНИЯ ИНТЕГРИРУЕМЫХ ПЕРЕМЕННЫХ При интегрировании дифференциальных уравнений иногда возкнкает потребность ограничить переменную какими-либо пределами. Пусть, например, перемещение управляющего органа описывается дифференциальным уравнением 6= К (и — 6), (П1.8.1) причем 6 имеет нижнее и верхнее ограничения: бш<„( 6 ( 6шах. Ограничение переменной производится с помощью йодпрограээмы, обращение к которой имеет вид САЕТ.
1.1М1Т (ХМАХ, ХМ1)Ч, ХОТ<1, ХРРОМ, РХУ, РХ). Здесь ХМАХ вЂ” верхнее ограничекие х; ХМ1М вЂ” нижнее ограничение эл ХОТУ вЂ” ячейка из массива эгОТ, выделенная для функции х и используе<э,эээ подпрограммой <1К; ХРРОМ вЂ” ячейка из массива ээ'Р, выделенная для э!эункции х и используемая подпрограммой 1!К; РХ)э — рабочая ячейка, в коэ,эрую засылается вычисленное неограниченное значение производной х; РХ— нчсйка из массива Р правых частей, выделенная для х и используемая подпрограммой РК. При нарушении ограничений подпрограмма 1.1М1Т засылает в нэс нудь.
Пример. Пусть для решения уравнения (П!.8.1) выделены ячейки УОТ (3) !'Р (3) и Р (3), используемые подпрограммой АэК. Ограничим функцию 6 в пределах 2 — 1О с помощью подпрограммы 61М1Т: РХУ= Кь (" 6) ХМДХ = 18.ОВ ХМ1Н = 2.09 САП. 1.1М1Т (ХМАХ, ХМ1М, УОТ (3), УР (3), РХУ, Р (3)) Подпрограмма имеет длину 14 операторов. Она используется в подпрограм. мс Рксн, вычисляющей правые части дифференциальных уравнений для подпрограммы ЙК (П!.6). Ниже приводится текст 1.1М1Т. Биййоит<КЕ Е(й!Т<дйадэХК!К,ХОТУ,ХРВОН,РХЧЭРХ! ВООВЕЕ РВЕО1510й Хйахэхй!йэХОТЧ<ХРйпйэйхчэрх !Е<ХРЯОК ХйАХ!Еэ!э! 1Е<ЕХЧ!4э4э5 5 ХотчзХКАХ ЕХзй,па СО ТО В 1Е<ХРЯОН-Хй!й!аэбэ4 б !Е<ЕХЧ)тэ4э4 Т ХОТЧвХй<й СО ТО 5 4 ЕХвЕХЧ В ЯЕТОйй Ейй П<ха ПОДПРОГРАММА ПОИСКА БЕЗУСЛОВНОГО ЭКСТРЕМУМА ФУНКЦИИ МНОГИХ ПЕРЕМЕННЫХ Подпрограмма производит поиск безусловного экстремума функции многих переменных Р (х„хз..,., х ) при наличии ограничений, наложенных иак на искомые переменные, так и на некоторые функции от них.
Ограничения ммеют внд: !17 «1 пл!и » ~«л «х! плах «2 ш!а - «л «2 шах «Зппп «3 «~«Залах' 1! злгп «1! («!. ла хл) «» 1! плах 12 в!а «1а (х! хз лз)» 12 ~пах 1злп!и ~«1з (х! хз «з)»(1з злах. (П1.9,1) САЕК ОРТ1М (Е, Х, У, )М, )?М, КОС, СУ, СД(, ОР)?, РОС)?). Здесь Š— размерность пространства параметров; Х () — пачалшия точка поиска (л!ассив разллерпости Е или больше); У вЂ” значение функции в точке (вычисляется подпрограмллой ОРцВ ?М (4), )?М (9) — массивы параметров, определяющих рабату подпрограммы; КОС вЂ” количества проверяемых огрзпнчепий (П1.9.1) (КОС = 6)! ОУ ( ) — массив размерности КОС, а который помещалотся верхние границы; С)У ( ) — массив размерности КОС, в который помещалотся нижние границы; ОР)? — ил!я подпраграмллы-функции, вычисляющей значение ллинимизируемой функции; РОС)? — имя подпрограмл!ы, проверя!ошей выполнение ограничений.
В операторе ЕХТЕКР?АТ. в основной программе указываются реальные иллена подпрограмм, выполняющих раль подпрограмм с формальными именами ОРлс и РОС)?. Описание массивов ?М и ЯМ: гМ (1) = КУ вЂ” число итераций для проверки астапова; 1М (2) = КР— число удачных итераций, через которое происходит изменение плотности распределения; ?М (3) = КР! — максимальное число итераций, через которое происходит изменение плотности распределения; ?М (4) = Д(Р— шаг печати в процессе поиска (число итераций, по прошествии которых происходит печать]; 118 Теоретическое обоснование работоспособности алгоритма н математические соотношения, которые он реализует, содержатся в [БО, 52, 53[. Перед обращением к подпрограмме задается ряд параметров, определяющих ее работу.
Чтобы понять назначение этих параметров, вкратце опишем алгоритм поиска минимума, реализованный в подпрограмме. Пусть необходимо найти минимум функции Ь переменных. Задаются начальные значения этих переменных (х„«з, хз, ..., хь)е.
В Е-мерном простршштве существует вектор, соединяющий начало координат с заданной начальной точкой. Вычисляется начальное значение функционала Р„соответствующее этой точке. Затем к начальному вектору прибавляется случайный Е-ллерный вектор и получается новая точка в пространстве искомых переменных («,, хз, «з, ... «),. Осуществляется проверка: удовлетворяет ли новая точка ограннчениял! (П1.9.1)? Если не удовлетворяет, то она отбрасывается как неудачная п генерируется новая.
Если точка удовлетворяет ограничениям, то вычисляется новое значение функционала Рл, соответствующее этой точке. Если значение оказалось меньше Р„, то попытка считается успешной и вся процедура повторяется из новой точки. Если Р, в Ре, то попытка неуспешна, новая точка отбрасывается и процедура повторяется из старой точки.
Модуль н направление случайного вектора, который генерируется про. граммой, зависят от шага поиска и плотности распределения генерируеллых слу. чайных точек на сфере единичного радиуса. Как шаг, так и плотность распределения точек в адаптивной процедуре меняются в процессе поиска. Основное пра. вила такое: чем ближе к экстремуму — тем меньше шаг, чем больше успешных попыток в данном направлении — тем больше плотность распределения случайных точек в данном секторе единичной сферы. Механизм адаптации регулируется двумя коэффициентами: С! и О!БР.
Поиск прекращается, если за последние К итераций траектория, пройденная в й-мерном пространстве точкой искомых параметров, будет меньше зду, заданной пользователем. Обращение к подпрограмме //М (1) = А„' — начальный шаг; /(М (2) = ЕКУ вЂ” минимальная длина пш егории за последние КУ итераций, при которой происходит останов алгого«мз;2//М (3) = О1 — «ькоэффнциентфУвелнченни шага Уг пРн Удачном шаге; !'!! !!.. Р— средняя вероятность удачи (коэффнциент уменьшения шага Г ~ — Р у, е~ и неудачном шаге выбирается согласно соотношению у,ук — !); ЙМ (5) =* .1М/Л~ — минимальная величина шага /1М (6) = о/оцР— коэффициент и ч«нсння плотности распределения случайных векторов; ЙМ (7) = ЕВ'— минимальное смещение для направленной деформации плотности распределении; КМ (3) = 11 ЕМ„(9) = 1 — начальные значения параметров датчика слу.