Шестаков В.С. Расчет на ЭВМ нефтегазового оборудования. Учебное пособие для МНГ-2015 (811778), страница 32
Текст из файла (страница 32)
5.3).YСразу четко уясним себе, что в начале оптимизации в действительности графика и соответственно значений, по которому можно график Yminпостроить, нет, иначе проведениеXвсех расчетов будет бессмысленXоптным, мы можем сразу показать наРис. 5.3. Изображение графикаминимальное значение и опредефункции при оптимизациилить соответствующее значение аргумента.Запишем все возможные предложения.1.
Необходимо взять производную функции Y по переменной X,приравнять ее нулю, и решив полученное уравнение, найти Хопт.2. Необходимо просчитать функцию, при изменении аргументаот минимального значения до максимального с равным шагом.На первом занятии обычно других «здравых» предложений невозникает. Попробуйте самостоятельно дополнить этот список, прежде чем перейти к изучению следующих страниц. Возможно, Вам удастся самостоятельно разработать один или все далее описываемые методы.Если других предложений к указанному списку не последовало,то проводим анализ. Первый метод применялся нами ранее при поиске экстремумов функций при решении математических задач.
Длятехнических задач, как отмечалось в первом разделе, он не всегдаприменим, так как обычно для целевых функций не может быть получена производная.Второе предложение, на первый взгляд, не имеет недостатков.Действительно, по такому алгоритму имеется метод, который называется методом прямого перебора.Метод одномерной поисковой оптимизации прямого перебораСуть метода прямого (некоторые авторы называют полного) пе183ребора заключается в том, что интервал возможного изменения проектного параметра делится на равные части. Значение целевой функции вычисляется для всех полученных значений переменной проектирования. В результате сравнения определяется интервал параметрапроектирования, на которомцелевая функция принимаетунаибольшее(наименьшее)значение.
Длина этого интервала равна двум частям, накоторые делится начальныйинтервал поиска. Изобразимэто описание графическиYminх(рис. 5.4). Интервал [Xmin,ΔXXmax] принято называть наXmaxXminXоптчальным интервалом поиска.Для некоторых инженерныхРис. 5.4. Иллюстрация алгоритмазадач, примеры которых расметода прямого переборасмотрены далее, установление границ интервала не вызывает затруднений, для других же, когдаустановка границ представляет сложность, можно использовать такойприем. Из каких-то соображений (можно даже сказать «наугад») устанавливаем границы, проводим оптимизацию, и если окажется, что оптимальное решение будет на границе принятого начального интервала, то сдвигаем начальный интервал в сторону этой границы.Алгоритм метода состоит из этапов:1.
Устанавливаются границы возможного изменения переменнойоптимизации [Xmin, Хmax], т. е. начальный интервал поиска.2. Задается количество участков деления начального интервала Nи вычисляется x= (Хmax – Xmin)/N.3. Переменной оптимизации присваивают минимальное значениеx=Хmin.4. Вычисляется значение целевой функции y=f(x).5.
Переменная оптимизации меняется на шаг x=x+Х.6. Пункты 4, 5 повторяют до тех пор, пока переменная не достигнет максимального значения, т. е. пока x<=Xmax. В процессе изменения переменной и вычисления функции запоминается наилучшее(наименьшее или наибольшее) значение функции Yo и соответствующее значение переменной Xo.1847. После достижения максимального значения переменной определяется интервал, внутри которого находится оптимальное значениепеременнойХо.min=Хо- x, Хо.max=Хо+ x.Особенностью методов поисковой оптимизации является то, чтоопределяется не оптимальная точка, а интервал, внутри которого лежит эта точка.
Длина этого интервала равна двум частям, на которыеделится начальный интервал поиска. Два участка берутся исходя изтого, что оптимальная точка может лежать как правее найденной точки, в которой функция имеет"наилучшее" из вычисленных1Xmin, Xmax, Nзначений, так и левее. Еслиразделить начальный интервалΔx=(Xmax-Xmin)/N 2на большее число отрезков, тополучится интервал меньшегоYo=1010 x= Xmin 3размера. Это нужно учитыватьпри выборе точности при поy=f(x)4иске оптимального решения.Если требуется получить точДа 5Нетность, равную 0.1[Xmax-Xmin],y<Yoто потребуется разделить ис6Yo=y, Xо=хходный интервал [Xmax,Xmin] на20 отрезков и вычислить (сучетом вычислений по краямx = x+x7отрезка) 21 раз функцию.Достоинстваметода:НетДа8x<=Xmaxпростота алгоритма, нахождение в результате оптимизации9Xo.min=Xo-Δx, Xo.max=Xo+Δxглобального оптимума дажедля функций с несколькимиэкстремумами.
Недостатком10Xo.min , Xo.max , Yoметода можно считать необходимость проведения больРис. 5.5. Блок-схема алгоритма методашого числа вычислений дляоптимизации прямого перебораполучения высокой точности.Программа, реализующая метод на языке Visual Basic, будет представлена ниже в примере решения задачи.185Особенностью инженерного творчества является то, что послеобнаружения недостатков в создаваемом объекте, по возможности пытаются их исключить.
Как же можно исключить указанный недостаток метода оптимизации?При задании такого вопроса обычно кто-нибудь предлагает следующее решение. Вначале необходимо провести решение, поделивначальный интервал на сравнительно большие отрезки (я рекомендуюподелить на 20). Затем повторить поиск оптимального решения с использованием найденного интервала [Хо.min, Хо.max] в качестве начального интервала поиска.Алгоритм метода, приведенный выше, позволяет уяснить метод,но непосредственно составлять программу для ЭВМ по нему затруднительно.
Принято алгоритм для программы представлять в виде схемы с использованием общепринятых условных обозначений. Изображение алгоритма может иметь несколько вариантов, порядок составления алгоритмов рассмотрен в третьем разделе пособия. Алгоритм ввиде блок-схемы показан на рис. 5.5.Блок-схема составлена для последующей реализацией ее в видеподпрограммы. Для восприятия алгоритма в элементе 1 указанывходные параметры подпрограммы, а в 10 – выходные.
Введение параметров в элементы начала и конца подпрограммы является некоторым отступлением от стандарта (в стандарте принято использоватьдля начального элемента надпись «начало», а для последнего – «конец»), но очень помогает написанию подпрограмм и проверке передачи данных между подпрограммами.
Для подпрограммы, приведенныев 1 и 10-м элементах параметры, используются в качестве аргументов.Из блок-схем сразу видно, какие параметры куда передаются. Элементом 3 реализовано начало изменения переменной, непосредственно изменение – 7, а с помощью элемента 8 – проверка достижениямаксимального значения и организация цикла по просчету всех значений. Вычисление функции показано в элементе 4. При реализации впрограмме этот элемент может быть реализован оператором вызоваподпрограммы-функции. С помощью элементов 3,5,6 реализован алгоритм поиска минимума, но отличием от известного алгоритма здесьявляется то, что одновременно с запоминанием наименьшего значенияфункции здесь обеспечивается запоминание значения переменной,при котором достигается минимум функции.
Элемент 9 реализует вычисление интервала, в котором находится оптимальное значение переменной.186При составлении программы по приведенному алгоритму необходимо организовать проверку правильности алгоритма и программы.Для этого обычно используются специально разработанные тесты.Для рассматриваемого варианта в качестве тестового задания можетбыть использована целевая функция с известным оптимальным решением.Кпримеру,можноприменитьфункцию2y=(x-5) . При х=5 будет наименьшее значение функции, y=0.По приведенному алгоритму и выбранной тестовой функции составим программу.
На листе «ПП» книги Excel расположим исходныеданные и на него же выведем результаты расчета. Программное обеспечение разобьем на блоки по выполняемым самостоятельным функциям: ввод, оптимизация, расчет функции, вывод. Приведенная подпрограмма метода оптимизации может быть использована для поискаоптимального решения задачи, в которой оптимум соответствует минимуму функции. При решении других задач необходимо ввести соответствующую целевую функцию и ввести требуемые исходные данные.Option Explicit ‘Основная подпрограммаSub Оптимизация_методом_прямого_перебора()Dim Xmin As Single, Xmax As Single, N As Integer, Xomin As SingleDim Xomax As Single, Yo As SingleCall Ввод(Xmin, Xmax, N)Call Мет_прям_переб(Xmin,Xmax,N,Xomin,Xomax,Yo) ‘1-й вызовCall Мет_прям_переб(Xоmin,Xоmax,N,Xomin,Xomax,Yo) ’2-й вызовCall Вывод(Xomin, Xomax, Yо)End Sub‘Подпрограмма ввода данных с листа “ПП”Sub Ввод(Xmin As Single, Xmax As Single, N As Integer)Xmin=Worksheets(“ПП”).Range(“D3”)Xmax=Worksheets(“ПП”).Range(“D4”)N=Worksheets(“ПП”).Range(“D5”)End Sub' Подпрограмма оптимизации методом прямого перебораSub Мет_прям_переб(Xmin As Single, Xmax As Single, N As Integer, _Xomin As Single, Xomax As Single, Yo As Single)Dim I As Integer, Y As Single, X As SingleYo = 1.0E+10dx= (Xmax - Xmin)/N187For X = Xmin To Xmax Step dx'Цикл до максимального значения XY = Fx(X)'Вызов подпрограммы расчета функцииIf Y < Yo Then'Запоминание минимального значения функции иYo = Y'соответствующего значения аргументаXo = XEnd IfNext xXomin= Xo-dxXomax= Xo+dx:End SubFunction Fx(X As Single) As Single ‘Процедура расчета целевой функцииFx = (X-5)^2'Расчет функцииEnd FunctionSub Вывод(Xomin As Single, Xomax As Single, Yo As Single)Worksheets("ПП”).Range(“D7”)= XominWorksheets("ПП”).Range(“D8”)= XomaxWorksheets("ПП”).Range(“D9”)= YoEnd SubВ основной процедуре дважды выполнен вызов подпрограммыметода оптимизации.