Векторная оптимизация с программированием в среде MathCAD при комплексировании машин и агрегатов
Автор: Богатырев Владимир Анатольевич, Булыгин Кирилл Александрович, Пинкевич Василий Юрьевич
Журнал: Технико-технологические проблемы сервиса @ttps
Рубрика: Методические основы совершенствования проектирования и производства технических систем
Статья в выпуске: 4 (18), 2011 года.
Бесплатный доступ
Рассматриваются возможности использования средств программирования в системе математических расчетов Mathcad для создания набора функций, направленного на поддержку решения задач целочисленной векторной оптимизации. В качестве объекта оптимизации рассматривается комплекс машин и агрегатов, предусматривающих многоэтапный процесс выполнения работ.
Целочисленной векторной оптимизации, программирование, аддитивный критерий, надежность, среднее время пребывания
Короткий адрес: https://sciup.org/148185956
IDR: 148185956 | УДК: 51-73;64-83;64.069.8
Vector optimisation with programming in the environment of MathCAD at комплексировании cars and units
Possibilitiesof use of means of programming in system of mathematical calculations Mathcad for the creation of a set of functions directed on support of the decision of problems of integervector optimisation. As object of optimisation the complex of cars and the units providing многоэтапный process of performance of works.
Текст научной статьи Векторная оптимизация с программированием в среде MathCAD при комплексировании машин и агрегатов
Проектирование машин, агрегатов и их комплексирование в системы требует решения задачи оптимизации структуры с целью максимизации надежности и производительности системы при минимизации затрат на ее построение и эксплуатацию.
Задача оптимизации является векторной, её сложность обусловлена тем, что одно решение (альтернатива) может превосходить другую по одним показателям и уступать по другим [1].
В статье рассматривается задача векторной оптимизации при построении резервированных комплексов машин и агрегатов, реализующих многоэтапный процесс выполнения работ [2,3].
Эффективность поиска наилучших решений по реализации структуры исследуемых многоуровневых систем во многом зависит от выбора инструментальных средств оптимизации и эффективности их использования.
Решение оптимизационной задачи с использованием встроенных функций Minimize ( f , x 1, x 2,…)/ Maximize ( f , x 1, x 2,…) системы Mathcad сопряжено с трудностями получения целочисленного решения и определения параметров оптимизации над знаком суммы целевой функции [2-11].
В предлагаемой статье рассматриваются возможности использования средств программирования в системе математических расчетов Mathcad для со- здания набора функций, направленного на поддержку решения задач целочисленной векторной оптимизации.
Постановка задачи оптимизации
В качестве объекта оптимизации рассмотрим комплекс машин и агрегатов, предусматривающих многоэтапный процесс выполнения работ. Для повышения надежности и производительности системы предусматривается резервирование машин, реализующих различные этапы процесса обработки.
Требуется найти число (кратность резервирования) машин, реализующих каждый этап обработки ( mx , m 2,..., mM ) , при котором обеспечивается максимум надежности системы, минимум среднего времени пребывания в ней запросов, а стоимость реализации системы не должна превышать выделенных на это средств:
P(m1,m2,...,mM) max
T ( m 1 ,m 2 ,...,mM ) —> min , при
M
C ( mx,m2,...,т м ) = ^<С 0 .
i1
Возможна также другая постановка задачи. Требуется найти число машин, реализующих каждый этап обработки, при котором стоимость реализации системы минимальна и обеспечиваются требуемые технические показатели системы:
C ( m1,m 2 ,..., m M ) —> min , при
P ( m 1 ,m 2 ,..., m M )> P и
T ( mx,m 2 ,..., mM ) < T .
При этом Т 0 , P 0 , C о - предельно допустимые значения среднего времени реализации процесса обработка, надежности и стоимости системы.
При оптимизации будем считать заданными:
-
• интенсивность входного потока запросов X;
m 1 m 2 m 3
-
1, m2, m3,..., mM ) ...
машин и агрегатов показатели надежности машин (вероятности безотказной работы) Pi,р2,рз,...,Pm ;
-
• средние времена выполнения запросов машинами на этапах обработки
-
v i , v 2 , v 3 ,..., v m ;
-
• стоимости машин, выполняющих соответствующие этапы процесса обработки c , c 2, c 3,..., cM .
Решение рассматриваемых задач векторной оптимизации, как правило, включает поиск области Парето и выработку решающего правила, основанного на компромиссе между значениями компонент векторного показателя.
Оценка частных показателей качества
Возможности системы по обработке запросов определим по среднему времени пребывания запросов в системе и по ее надежности [4, 10] . В простейшем случае каждый узел представим системой массового обслуживания типа M/M/1. Считая, что каждый запрос последовательно обслуживается одним из исправных узлов на каждом уровне системы, среднее время пребывания запросов в системе оценим как:
Mv
Надежность системы оценим по вероятности сохранения работоспособности, которая зависит от формулировки условия отказа (сохранения функционирования Y).
Если система работоспособна, когда исправно не менее чем d i узлов на i -м уровне системы, то надежность системы оценим как [5, 6]:
mM kM
M
Ck1Ck2Ck3 ...C m1 m2 m3 ... m
Особенность представленной функции заключается в том, что искомые параметры оптимизации находятся над знаком суммы, что затрудняет использование встроенных функций оптимизации Minimize / Maximize системы Mathcad [5,11]. Программирования функций поиска целочисленного оптимума отдельных критериев ранее рассматривалось в работах [6, 11], в представленной же статье предлагается взаимосвязанный набор функций поддержки решения задач целочисленной векторной оптимизации .
Функции оценки частных показателей качества в системе Mathcad
Определим функцию для расчёта времени пребывания заявки в системе [12], интерпретируя каждый узел исследуемой структуры системой массового обслуживания типа M/M/1 , как:
Эта функция принимает два аргумента: интенсивность входного потока заявок и вектор числа элементов на каждом уровне. Кроме этого, она учитывает значения вектора а, определяющего коэффициенты передач (сколько раз заявка попадает в узел каждого типа). Функция для расчёта вероятности работоспособного состояния системы включает вычисление числа сочетаний из n по к (для этого используется треугольник Паскаля):
Combins := pascal _triangle(max(my) (Combins,„=Cf г <—1
for j EOJast(p)
p^) ■= C <— Combins^
r^f [c, -(^ )' -(1-^ )v']
r .
Функции для нахождения интен- сивности максимального входного потока, выдерживаемого системой, и её стоимости имеют вид:
T (2, k ):=
ki i return oo if p > 1
b rr i i X-p
.
_ х . NA Л ( N ):=min - ,
C ( N ):= N-c .
r
Функция, формирующая множество допустимых систем, из которых потом выбирается наилучшая со вспомогательными функциями :
Crits ( N ) := stack ( P ( N ), T (2, N ), A( N ), C ( N ), format ("{0},{1},{2}", N , N , N ))
is _ valid ( Crits ) := ( Crits^ > P 0) л ( Critsx< T 0) л ( Crits . < C 0)
i ^0
for n 0 e s 0 .. m 0
for n g s..m, for n2 e s2 ..m2
N <- stack ( n 0, nx , n 2) Crits _ N <— Crits ( N ) if is _ valid ( Crits ( n )
RN^ i <—i +1 RNT Здесь Crits(N) и is_valid(Crit) -вспомогательные функции, которые используются при вычислении значения матрицы RN. Crits(k) вычисляет значения всех критериев данной системы (которая задаётся вектором к - число элементов на каждом уровне), в том числе имя системы (которое будет критерием для лица, принимающего решение) в виде строки . is_valid(Crit) принимает вектор критериев и проверяет, удовлетворяют ли критерии заданным условиям (возвращает 1 или 0 - «да» или «нет»). Матрица RN создаётся при помощи вложенных циклов for (число циклов соответствуе числу уровней системы) и состоит из векторов k (то есть системы) с числом устройств на каждом уровне от необходимого (здесь « 1 ») до максималь- Векторная оптимизация с программированием в среде Mathcad при комплексировании машин и агрегатов ного, которое можно использовать, не превысив бюджет (ограничение C0). Далее при помощи вспомогательных функций для каждой системы вычисляются значения критериев и проверяется, удовлетворяют ли эти значения ограничениям. При удовлетворении весь вектор критериев помещается в матрицу RN - матрицу допустимых решений. В итоге формируется матрица, строками которой являются вектора критериев (Results) с именами решений (Names). Дальше определяются вспомогательные функции для отделения от этой матрицы столбца (вектора) имён и собственно матрицы критериев, которыми оперируют функции методов многокритериальной оптимизации. rn 2 n (RN) := RN W. ; rn2r(RN) := submatriXRN, 0, rows(RN)-... ...-1, 0, cols(RN) —2). если критерий, индекс которого передается как параметр, имеет смысл «чем меньше, тем лучше», иначе возвращается 0 («ложь»): P и Л мы максимизируем, а T и C - минимизируем. fill_vector возвращает вектор указанной длины, заполненный нужным значением. Функция normalize нормализует значения по столбцам, поскольку в них находятся значения одного и того же критерия для разных систем. C Ri Cmin ■<— min(C; Cmax <— max(C; fill_vector(0.5, length(C))... C Cmin otherwise Cmax Cmin C<— 1 - C if is _ less _ better^i) R^ <- C. Функции нахождения областиПарето Для нахождения области Парето определим следующие вспомогательные функции: is _ member( z, V ) := fill_ vector(value, length): V value V Функция is_member(z, V) служит для проверки, является ли значение z элементом множества V (заданного в виде вектора). is_less_better возвращает 1 («истина»), Далее определены функции, упрощающие нахождение области Парето: Функция is_pareto_worse(V, W, nV, nW) определяет, доминирует ли по Парето вектор W над вектором V, то есть, является ли вектор V однозначно худшим, чем W. Функция is_pareto_bad(V, Cols, nV, N) находит, доминирует ли по Парето над вектором V хоть один другой вектор, то есть лишний ли вектор V в матрице Cols. Функции для нахождения области Парето, принимающие нормализованные значения (все критерии имеют вид «чем больше, тем лучше») : . , return 1 if is pareto worse(V, Cols^, is pareto bad(V,Cols,nV,N):= _ . _ _ ... nV, N) Cols RT i _ good <- 0 pareto _ names( R, N) := V Cols i N<—"bad" if is _ pareto_bad(V, Cols, N, N) otherwise N _ goodi_ good <- Ni i _ good <— i _ good+1 N _ good. filter_ names(R,N,N_new) :=... ... = if is _ member(N, N _ new) Cols new_nw<— Col^'i ^^^^^^^ i newt—i new+1 ^^^^^^^ ^^^^^^^ Cols newT Функция pareto_names(R, N) по заданной матрице критериев (R) и вектору имен систем (N) отбирает в новый вектор имена систем, входящих в область Парето. Функция filter_names (R, N, N_new) по этому вектору составляет матрицу критериев (“R_new”) систем, входящих в область Парето. Функции для решения задач векторной оптимизации Для нахождения оптимального решения при векторной оптимизации могут использоваться: минимаксный критерий; аддитивный критерий; мультипликативный критерий; метод отклонения от идеала; метод главного критерия; метод последовательных уступок и др. Приведём определение функции для нахождения оптимального решения по аддитивному критерию. Cols RT max value ^^^^" name<—"" additiveR, N, W): value W Cols i if value max_value max value value ^^^^" name N name машин и агрегатов вается с максимальным на данный момент значением и, если новое значение больше максимального, то оно само становится максимальным, а его имя запоминается как возможный ответ. После перебора всех систем в переменной name оказывается имя системы с максимальным значением аддитивного критерия. Здесь trace - встроенная функция Mathcad, которая выводит в окно отладки строку с нужными переменными при включенной опции Tools > Debug > Toggle debugging. Функция требует нормализованных значений, то есть в качестве аргумента R ей должна передаваться матрица критериев в области Парето, обработанная функцией normalize. Кроме того, в функцию передаётся вектор имён систем, которым принадлежат эти критерии, и вектор весов критериев W. Для удобства матрица критериев R представляется так, чтобы каждый столбец содержал характеристики одной системы. Функция ска-лярно умножает каждый столбец (вектор критериев системы) на вектор весов, получая значение аддитивного критерия для данной системы. После этого полученное Пример оптимизации Начальные условия задачи можно задать в таком виде: b := stack(1, 4, 2) - время обслуживания; p := stack(0.99, 0.9, 0.92) - надёжность; c := stack(1, 5, 6) - стоимость. После генерации матрицы с характеристиками решений и применения к ней функций нормализации и области Парето, можно найти параметры оптимальных систем (число машин на каждом уровне системы) при использовании разных методов: значение аддитивного критерия сравни- r minimax(R _ pn, N _ pn) f "2,8,4") additiveR _ pn, N_ pn, Weights) "4,6,3" multiplicative(R _ pn, N_ pn, Weights) "4,6,3" RateNames := divergent^R, N, Weights') = "1,6,5" main _ crit(R, N) "1,4,2" seq _ concessionsR _ pn, N _ pn) "3,3,3" \ stem(R _ pn, N _ pn, stem _ mins) / I "3,4,2" J Определим значения критериев у выбранных систем, чтобы можно было сравнить их и принять окончательное решение. Для этого определим функцию, возвращающую матрицу критериев систем по вектору имён этих систем. names2crits(Names, R, N) :=... ... = j <— match(Namest, N)0 Crits i Cols j CritsT . Получим характеристики выбранных систем: P 1 8.889 0.999 9.028 0.999 9.028 names2crits(RateNames, R, N) : 0.99 9.289 0.984 10 0.998 9.905 0.993 9.643 T л C 2 66 минимаксный 1.5 52 аддитивный 1.5 52 мультиплик ативный 1 61 отклонения от идеала 1 33 главного критерия 0.75 36 последовательной уступки 1 35 J STEM Заключение Таким образом, предложен набор функций для решения оптимизационной целочисленной задачи проектирования систем резервированных машин и агрегатов в среде Mathcad. В отличие от использования для оптимизации встроенных в Mathcad функций Minimize/Maximize, предлагаемый подход позволяет найти целочисленное решение, в том числе, если искомые переменные (параметры оптимизации) находятся над знаком суммы.
return 0 if nW ="bad"
is worse <— 0
for i g 0..last(V)
is_pareto_worse(V,W,nV,nW) :=
return 0 if V. > W
ii
is worse <— 1 if V, < W.
ii
trace('' is _ pareto _ worse:
{0} is worse than {1}",nV,nW) if is_worse
is worse.
^^■i^^*
for i g 0..cols(Cols) -1