Векторная оптимизация с программированием в среде MathCAD при комплексировании машин и агрегатов

Автор: Богатырев Владимир Анатольевич, Булыгин Кирилл Александрович, Пинкевич Василий Юрьевич

Журнал: Технико-технологические проблемы сервиса @ttps

Рубрика: Методические основы совершенствования проектирования и производства технических систем

Статья в выпуске: 4 (18), 2011 года.

Бесплатный доступ

Рассматриваются возможности использования средств программирования в системе математических расчетов Mathcad для создания набора функций, направленного на поддержку решения задач целочисленной векторной оптимизации. В качестве объекта оптимизации рассматривается комплекс машин и агрегатов, предусматривающих многоэтапный процесс выполнения работ.

Целочисленной векторной оптимизации, программирование, аддитивный критерий, надежность, среднее время пребывания

Короткий адрес: https://sciup.org/148185956

IDR: 148185956

Текст научной статьи Векторная оптимизация с программированием в среде 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 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

.            ,                         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, которая выводит в окно отладки строку с нужными переменными при включенной опции ToolsDebugToggle 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, предлагаемый подход позволяет найти целочисленное решение, в том числе, если искомые переменные (параметры оптимизации) находятся над знаком суммы.

Статья научная