Шестаков В.С. Расчет на ЭВМ нефтегазового оборудования. Учебное пособие для МНГ-2015 (811778), страница 36
Текст из файла (страница 36)
Необходимо будет составить только подпрограмму расчета функции и основную подпрограмму для организации всех вычислений.При составлении сложных программ, кроме блок-схем алгоритмов, обычно составляется функциональная схема взаимодействия между собой процедур (см. рис.
5.15).207Основнаяподпрограмма:Dmin,Dmax,NDоmin,Dоmax,SminПодпрограмма методаоптимизацииVo, Dmin, Dmax,NПодпрограммаввода данныхVoxyПодпрограмма расчетацелевой функцииРис. 5.15. Схема построения программного обеспеченияМежду блоками-процедурами устанавливаются связи их вызова иуказываются передаваемые параметры.
Такие схемы позволяют просматривать передачу данных без излишней деталировки.Программа оптимизации цилиндрической емкости (для вводаданных и вывода результатов используется лист «Опт_емк»):Option ExplicitConst Pi = 3.141592654Dim Vo As Single, H As Single, Jt As IntegerSub Оптимизация_емкости()Dim N As IntegerDim Dmin As Single, Dmax As Single, Domin As Single, Domax As SingleDim So As Single, Ho As Single, DD As Single,D As SingleCall Ввод_оптим_емкости(Vo, Dmin, Dmax, N) 'вызов ввода данныхJt = 10'Начальная строка для вывода результатов расчетовCall Opt_PP(Dmin, Dmax, N, Domin, Domax, So)D = (Domin + Domax) / 2So = fx(D)'вызов функции для просчета оптимального НWorksheets("Опт_емк").Cells(24, 7).Value = DWorksheets("Опт_емк").Cells(25, 7).Value = HWorksheets("Опт_емк").Cells(26,7).Value = SoEnd SubSub Ввод_оптим_емкости(Vo, Dmin, Dmax, N) ‘ Ввод данных из листа ExelWith Worksheets("Опт_емк") 'Обращение к листу ExelVo = .Cells(5, 4).Value'Ввод Vo из 5 строки 4 столбцаDmin = .Cells(6, 4).Value'Ввод Dmin из 6 строки 4 столбцаDmax = .Cells(7, 4).Value'Ввод Dmax из 6 строки 4 столбцаN =20'Задание числа вычисленийEnd WithEnd Sub208Function fx(D)'Процедура расчета целевой функцииDim S As SingleH = 4 * Vo / (Pi * D * D) 'высота емкостиS = Pi * (D * D / 2 + D * H) 'ПлощадьWorksheets("Опт_емк").Cells(Jt, 1).Value = D 'ЗанесениеWorksheets("Опт_емк").Cells(Jt, 2).Value = H 'результатовWorksheets("Опт_емк").Cells(Jt, 3).Value = S 'на лист в таблJt = Jt + 1'изменение текущей строки выводаfx = SEnd Function' Подпрограмма алгоритма метода оптимизацииSub Opt_PP(Xmin, Xmax, N, Xomin, Xomax, Yo)Dim X As Single, Y As Single, Ymin As Single, Xo As Single, dx As SingleDim i As IntegerYmin = 10 ^ 5X = Xmindx = (Xmax - Xmin) / NFor i = 1 To N + 1Y = fx(X)If Y < Ymin ThenYmin = YXo = XEnd IfX = X + dxNext iXomin = Xo - dxXomax = Xo + dxEnd Sub5.5.
Пример определения точки крепления каната к мачтебурового станка при ее подъемеТакая задача решается при проектировании буровых установокнеглубокого бурения.Формулировка задачи оптимизации. Определить оптимальнуюточку крепления каната к мачте бурового станка при подъеме ее изтранспортного положения в рабочее, обеспечить минимально возможную нагруженность элементов мачты. Мачта ферменной конструкцииравного сечения, ее длина L, масса мачты М (без вращателя), на верхнем конце мачты расположен вращатель массой Мв. При подъеме мачта нижним концом шарнирно опирается на раму станка.209Анализ задачи. Расчетнаясхема мачты показана на рис.P5.16.
Распределенная нагрузка qопределяется по массе и длинеzxq=M g/L, где g-ускорение своLбодного падения (g=9.81).МmaxСосредоточенная сила Р,априложенная на конце мачты,равна весу вращателя Р=gМв.При изменении точки крепления каната к мачте х будет пробисходить изменение эпюры изгибающих моментов. Так, приМопвположении опоры по серединеМ maxбалки вид эпюры будет такой,как показан на рис.
5.16, б, приперемещении опоры на конецбалки эпюра будет такой, как наМоприс. 5.16, а.Рис. 5.16. Расчетная схема и эпюрыВ обоих этих случаях знаизгибающих моментов при различномчения изгибающего моментаположении точки креплениябудет большим и приведет кповышенным напряжениям изгиба. Если конструктор не предусмотрел такой вариант нагружения, то может даже произойти разрушениеконструкции. Значит, надо найти такую точку, при которой изгибающие моменты будут наименьшими, вид графика представлен на рис.5.16, в.Выбор критерия оптимизации.
В качестве критерия оптимизации для таких конструкций можно использовать стоимость или массукак параметры, имеющие очевидный эффект. Но в данной задаче этивеличины постоянны (мачта уже изготовлена) и не могут использоваться в качестве критерия.Чтобы выбрать критерий оптимизации для рассматриваемой задачи, надо определить, на какие выходные показатели влияет положение точки крепления каната. Как известно из курса «Сопротивлениематериалов», в зависимости от положения опор будет меняться видэпюры изгибающих моментов (рис.
5.16) и значение максимального изгибающего момента. Нагруженность металлоконструкции, работающей на изгиб, определяется напряжениями изгиба = Mмах/WиRAqRB210должно выполняться условие [],где Мmax - максимальное (по модулю) значение изгибающего момента по длине мачты, Нм;W - момент сопротивления сечения мачты, м3; - напряжение изгиба, Н/м2;[]- допустимое напряжение изгиба, Н/м2.В данной задаче момент сопротивления сечения мачты не меняется W=const, следовательно, напряжение изгиба будет зависеть толькоот максимального изгибающего момента. Для выполнения поставленной цели – достижения минимальной нагруженности, необходимо найти такую точку крепления каната к мачте, чтобы обеспечить минимумвсех возможных максимальных изгибающих моментов.
Максимальныйизгибающий момент по длине мачты и может быть принят в качествекритерия оптимальности.Переменные проектирования. Согласно заданию требуется определить оптимальное положение точки крепления каната, которое задается расстоянием от начала мачты. Это расстояние и будет переменной проектирования. На рис. 5.16 оно обозначено x (x=LAB).Ограничения. В данной задаче положение опоры не может выходить за балку. Ограничениями будут очевидные неравенстваx > 0; x < L,а также могут быть дополнительные ограничения, связанные с конкретной конструкцией, для которой определяются положения опор.Целевая функция.
Целевая функция должна содержать все выражения для расчета максимального изгибающего момента через переменную оптимизации Мmax = f (x).Для определения максимального изгибающего момента необходимо определять изгибающие моменты по длине мачты. Из рис. 5.16следует, что за опорой B изгибающий момент всегда меньше, чем наопоре, поэтому момент за опорой можно не вычислять. Максимальный момент определится по изгибающим моментам между опорамиМмах = Мz,где Мz - изгибающий момент между опорами;Мz= RA z – q z2/2;RA - реакция на опоре; z - расстояние от начала мачты до точки, в которой вычисляется изгибающий момент.Момент Мz берется по модулю, потому что он может быть какположительным, так и отрицательным, а напряжение рассчитываетсяпо наибольшему значению без учета знака.211Реакция на опоре АRА = [q x 2 / 2 – q (L-x)2 / 2 - P (L-x)] / x.Выбор метода оптимизацииВ данной задаче одна переменная оптимизации, поэтому можетбыть использован метод прямого перебора.
Одновременно с поискомоптимума данный метод позволяет получать таблицу данных для построения графика влияния переменной на критерий, что являетсявесьма важным для анализа.Разработка алгоритма решения для ЭВМУкрупненный алгоритм программного обеспечения показан нарис. 5.17.Алгоритм метода оптимизации рассмотрен выше. Алгоритмрасчета целевой функции показан на рис. 5.18.Основная процедураРасчет хmin=0.5L, хmах=L, N=40P,P,q,Lхmin,хmax,Nхo.minхo.maxq,ПроцедураданныхПроцедура методаоптимизацииMmaxхo.min,хo.max,MmaxLвводаxYПодпрограммарасчета целевойфункцииПроцедура выводарезультатовРис. 5.17.
Схема построения программного обеспечения212РазработкапрограммногоxL, q, PобеспеченияДля упрощения отладкиRA=[qx2/2-q(L-x)2/2-P(L-x)]/xпрограмма разделена на подпроz=0; Мmах=0граммы по условию - каждая выполняемая в программе функцияМmаxz<=xоформляется отдельной подпрограммой.Mz= RAz - qz2/2,Передача данных в подпрограмму метода оптимизации и изНетДаМz > Мmахнее, а также переменной оптимизации в целевую функцию выполМmах =Мzнена через аргументы.
Передачавсех остальных данных, необхоZ = z + 0.01 Lдимых для расчета функции, выполняется, минуя подпрограммуметода оптимизации, через глоРис. 5.18. Блок-схема алгоритмабальные переменные. Такой подрасчета целевой функцииход позволяет сделать подпрограмму метода оптимизации универсальной, не зависящей от конкретной задачи. В таком виде подпрограмму можно будет использовать для решения любой задачи. В программе реализовано фиксированное задание границ переменной оптимизации путем вычисления ихв операторе вызова: Xmin=0.5*L, a Xmax=L.Для построения графика зависимости максимального момента отположения опоры из подпрограммы расчета функции обеспечен вывод промежуточных результатов расчетов. Для заполнения таблицыприменена переменная Iviv.Программа определения оптимального положения точки крепления имеет вид:Option ExplicitDim L As Single, q As Single, P As Single, Iviv As IntegerSub Balka_1() ' Основная подпрограмма, вызываемая нажатием кнопкиDim N As Integer, Xopt As Single, X As Single, Mmax As SingleCall Ввод_Balka_1(L,q,P,N)Call мет_прям_переб (0.5 * L, L, N, Xopt, Mmax)Worksheets("Балка1").Range("E16") =Xopt 'Вывод оптимальногоWorksheets("Балка1").Range("E17") = Mmax ' решения213End SubSub Ввод_Balka_1(L,q,P,N) ' Процедура ввода данных с листа ExcelL = Worksheets("Балка1").Range("E12")q = Worksheets("Балка1").Range("E13")P = Worksheets("Балка1").Range("E14")N = 20 ' Число изменений переменной при оптимизацииIviv = 20 ' Начальная строка табл.
вывода результатовEnd Sub' Подпрограмма оптимизации методом прямого перебораSub мет_прям_переб(Xmin, Xmax, N, Xopt, Yo)Dim Y As SingleYo = 1.0E+10X = Xmindx= (Xmax- Xmin)/NFor X = Xmin To Xmax Step dx 'Цикл до максимального значенияY = Fx(X) 'Вызов процедуры расчета функции –изгибающего моментаIf Y < Yo Then 'Запоминание минимального значения функции и'соответствующего значения аргументаYo = YXopt = XEnd IfNext XEnd SubFunction Fx(X As Single) As Single 'П.п.