|
МГТУ им. , кафедра МТ-1 (“Металлорежущие станки”)
http://sergeykin. *****
*****@***ru
28 октября 2001 г.
Рассматриваются различные способы наложения взаимосвязей типа «A < B» между переменными проекта при оптимизации конструкций в программе ANSYS. Указан способ наложения таких ограничений без введения дополнительных переменных состояния.
Введение
При назначении какого-либо параметра в программе ANSYS в качестве переменной проекта (design variable) задание максимального и минимального значений параметра не представляет собой особой проблемы. Для того чтобы задать такие ограничения для какого-либо параметра A, нужно ввести соответствующие значения (Amin и Amax) при назначении параметра A в качестве переменной проекта:
OPVAR, A,DV, AMIN, AMAX
Однако в некоторых случаях введение ограничений такого рода оказывается недостаточным. Например, рассмотрим конструкцию, показанную на рис. 1. Предположим, что параметры M, N и R являются переменными проекта. Очевидно, что в данном случае для сохранения топологии конструкции в процессе оптимизации (окружность не должна пересекаться с отрезками) нужно наложить условия R < M и R < N, т. е. недостаточно задать максимальные и минимальные значения параметров.
В данной статье рассмотрены два способа наложения таких ограничений: первый – рекомендованный в документации к программе ANSYS и второй – альтернативный, кажущийся автору более удобным, чем первый.
Способ, рекомендованный в документации к программе ANSYS
Данный способ наложения зависимостей типа «A < B» между параметрами рекомендован в ANSYS Theory Reference (Chapter 20 – Design Optimization, p. 20-3), он предусматривает введение для этой цели дополнительной переменной состояния (state variable). Ниже приведено его описание.
1. Определяем параметр A (в analysis file)
2. Определяем параметр B (в analysis file)
3. Определяем параметр C = B - A (в analysis file)
4. Назначаем параметр A в качестве переменной проекта
5. Назначаем параметр B в качестве переменной проекта
6. Назначаем параметр C в качестве переменной состояния и накладываем на нее ограничение C > 0
Команды ANSYS, соответствующие данному способу, выглядят следующим образом:
A=A0
B=B0
C=B-A
...
OPVAR, A,DV, AMIN, AMAX
OPVAR, B,DV, BMIN, BMAX
OPVAR, C,SV,0,,
Однако, данный способ имеет недостатки, заключающиеся в следующем:
1. На начальных итерациях вполне возможно нарушение условия A < B, даже если в исходной конструкции оно было соблюдено. Его выполнение наступит только при приближении к сходимости. Это может вызвать проблемы со сходимостью. Кроме того, если A и B являются какими-либо геометрическими параметрами и условие A < B вызвано геометрической конфигурацией модели, то процесс оптимизации вообще может остановиться с сообщением о невозможности построить геометрический примитив №...
2. Введение дополнительной переменной состояния вызывает наложение дополнительной штрафной функции на целевую функцию, что также вызывает дополнительные трудности со сходимостью.
3. Возникает вопрос о том, какой допуск нужно наложить на ограничение C > 0. Если допуск уменьшить, то ухудшиться сходимость, а если увеличить, то ограничение C > 0 будет выполняться неточно.
Альтернативный способ
Т. к. недостатки приведенного выше способа ограничивают его применение, то хотелось бы найти другой способ наложения условия A < B, свободный от данных недостатков. В качестве такого способа можно использовать следующий:
1. Определяем параметр B (в analysis file)
2. Определяем параметр D (в analysis file)
3. Определяем параметр A = D*(B-Amin)+Amin (в analysis file), где Amin - минимальное значение параметра A
4. Назначаем параметр B в качестве переменной проекта
5. Назначаем параметр D в качестве переменной проекта, имеющей минимальное значение Dmin = 0 и максимальное значение Dmax = 1
Параметр A напрямую не участвует в оптимизации ни в качестве переменной проекта, ни в качестве переменной состояния, однако условие A < B будет соблюдаться.
Т. к. при использовании данного способа не вводятся дополнительные переменные состояния, то отсутствуют и проблемы, описанные выше.
Команды ANSYS, соответствующие данному способу:
B=B0
D=D0
A = D*(B-AMIN)+AMIN
...
OPVAR, B,DV, BMIN, BMAX
OPVAR, D,DV,0,1
Следует отметить, что данный способ напрямую невозможно применить для наложения на параметр A двух или более условий такого типа. Т. е. если, например, поочередно наложить на параметр A два условия A < B и A < C, то при оптимизации будет учтено только то из этих условий, которое было наложено последним.
Для того чтобы при оптимизации были учтены оба этих условия (A < B и A < C), нужно поступить следующим образом:
1. Определяем параметр B (в analysis file)
2. Определяем параметр C (в analysis file)
3. Определяем параметр D (в analysis file)
4. Определяем параметр A = D*[min(B, C)-Amin]+Amin (в analysis file), где Amin - минимальное значение параметра A
5. Назначаем параметр B в качестве переменной проекта
6. Назначаем параметр C в качестве переменной проекта
7. Назначаем параметр D в качестве переменной проекта, имеющей минимальное значение Dmin = 0 и максимальное значение Dmax = 1
Использование данной процедуры при любых значениях параметров будет обеспечивать наложение на параметр A верхнего ограничения исходя из наименьшего значения параметров B и C.
Соответствующая данной процедуре последовательность команд ANSYS приведена ниже. Выражение [(B+C)-|B-C|]/2 эквивалентно выражению min(B, C) (в программе ANSYS отсутствует операция нахождения минимума для двух чисел). Аналогичным способом можно накладывать любое количество ограничений на параметр.
B=B0
C=C0
D=D0
A = D*(((B+C)-ABS(B-C))/2-AMIN)+AMIN
...
OPVAR, B,DV, BMIN, BMAX
OPVAR, C,DV, CMIN, CMAX
OPVAR, D,DV,0,1
Заключение
Таким образом, указан способ наложения взаимосвязей типа «A < B» между переменными проекта в программе ANSYS, не требующий введения дополнительных переменных состояния. Применение данного способа кажется автору наиболее целесообразным по сравнению со способом, описанным в документации к программе ANSYS, поскольку введение дополнительных переменных состояния затрудняет процесс оптимизации.


