Санкт-Петербургский политехнический университет Петра Великого Институт Информационных Технологий и Управления Кафедра компьютерных систем и программных технологий Курсовая работа Дисциплина: Методы оптимизации Тема: Формулировка и решение задачи выбора оптимального решения с использованием различных математических моделей Выполнил студент гр. 53501/3 С.А. Мартынов Руководитель, к.т.н.,доц. А.Г. Сиднев Санкт-Петербург 2015 Содержание 1 Варианты формализации многокритериальной задачи и их решение с использованием Optimization Toolbox системы Matlab. 3 1.1 Постановка задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2 Выделение главного критерия . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.2.1 Максимизация выручки . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.2.2 Максимизация прибыли . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.3 Свертка критериев . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.4 Максимин или минимакс . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.5 Метод последовательных уступок . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.6 Fgoalattain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.7 Задача стохастического программирования . . . . . . . . . . . . . . . . . . . 14 2 Решение задачи оценки показателей эффективности стохастической сети с использованием методики GERT. Выбор и использование математического пакета Matlab для решения сформулированной задачи. 17 2.1 Постановка задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.2 Ход работы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.3 Результат . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3 Поиск оптимальной стратегии принятия решений с использованием марковских моделей. 25 3.1 Постановка задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.2 Марковская модель принятия решений . . . . . . . . . . . . . . . . . . . . . . 25 3.3 Метод итерации по стратегиям . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.4 Метод линейного программирования . . . . . . . . . . . . . . . . . . . . . . . 28 4 Поиск оптимальных параметров сети систем массового обслуживания. 32 4.1 Постановка задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 4.2 Алгоритм решения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.3 Решение по алгоритму . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.4 Решение дискретным линейным методом программирования . . . . . . . . . 38 Список используемой литературы 39 2 1 Варианты формализации многокритериальной задачи и их решение с использованием Optimization Toolbox системы Matlab. 1.1 Постановка задачи Мебельная фабрика выпускает столы, стулья, бюро и книжные шкафы. При изготовлении используются два типа досок, причем фабрика имеет в наличии 1500 м досок первого типа и 1000 м досок второго типа. Кроме того, заданы трудовые ресурсы в количестве 800 чел/час. В таблице приводятся нормативы затрат каждого из видов ресурсов на изготовление 1 ед изделия и прибыль от реализации 1 ед изделия. Затраты на 1 ед изделия Ресурсы столы стулья бюро Книжные шкафы Доски первого типа, м 5 1 9 12 Доски второго типа, м 2 3 4 1 Трудовые ресурсы, чел/час 3 2 5 10 Прибыль, руб/шт 12 5 15 10 Таблица 1: Нормативы затрат ресурсов на единицу изделия По этим исходным данным решить задачу определения оптимальный ассортимент, максимизирующий прибыль (разность между выручкой и расходами.) и выручку при следующих ценах изготавливаемую мебель: ∙ стол – 32 руб; ∙ стул – 15 руб; ∙ бюро – 12 руб; ∙ книжный шкаф – 80 руб. В отчёте необходимо описать: 1. Осуществление перехода от многокритериальной задачи к однокритериальной с использованием различных подходов. 2. Решение задачи стохастического программирования для одной из однокритериальных задач, превратив детерминированное ограничение в вероятностное по схеме: 𝑛 ∑︀ 𝑃 ( 𝑎𝑖𝑗 𝑘𝑗 − 𝑏𝑗 ≤ 0) ≥ 𝛼𝑖 𝑗=1 3 Менять 𝛼𝑖 в следующем диапазоне 0.1 ≤ 𝛼𝑖 ≤ 0.9. Считать случайной величиной 𝑏𝑖 или элементы {𝑎𝑖𝑗 } 𝑖-й строки матрицы 𝐴 {𝑎𝑖𝑗 } (по выбору). 1.2 Выделение главного критерия Выбирается один из критериев, например 𝐶𝑖 , который наиболее полно отражает цель принятия решений. Остальные критерии учитываются только с точки зрения возможного указания их нижних границ 𝐶𝑗 (𝑎) ≥ 𝛾𝑖 , 𝑗 ̸= 𝑖. Таким образом, исходная задача многокритериального принятия решений заменяется однокритериальной задачей с критерием 𝐶𝑖 , т.е. 𝑎* = arg max 𝐶𝑖 (𝑎), при ограничениях 𝐶𝑘 (𝑎) ≥ 𝛾𝑖 , 𝑘 ̸= 𝑖. Критерии: ∙ 𝑚𝑎𝑥(12𝑥1 + 5𝑥2 + 15𝑥3 + 10𝑥4 ) (прибыль) ∙ 𝑚𝑎𝑥(32𝑥1 + 15𝑥2 + 12𝑥3 + 80𝑥4 ) (выручка) Ограничения: ∙ 5𝑥1 + 𝑥2 + 9𝑥3 + 12𝑥4 ≤ 1500 (доски первого типа) ∙ 2𝑥1 + 3𝑥2 + 4𝑥3 + 1𝑥4 ≤ 1000 (доски второго типа) ∙ 3𝑥1 + 2𝑥2 + 5𝑥3 + 1𝑥4 ≤ 800 (трудовые ресурсы) 1.2.1 Максимизация выручки Целевая функция: 𝑓 = 𝑚𝑖𝑛(−32𝑥1 − 15𝑥2 − 12𝑥3 − 80𝑥4 ) Начальные условия: ⎛ ⎞ 0 ⎜ ⎟ ⎜0⎟ ⎟ 𝑥0 = ⎜ ⎜0⎟ ⎝ ⎠ 0 Ограничения: 4 ⎛ 5 1 9 12 ⎞ ⎟ ⎜ ⎜2 3 4 1⎟ ⎟ ⎜ ⎟ ⎜ 2 5 1⎟ ⎜3 ⎟ ⎜ 𝐴=⎜ 0 0⎟ ⎟ ⎜−1 0 ⎟ ⎜ ⎜ 0 −1 0 0⎟ ⎟ ⎜ ⎟ ⎜0 0 −1 0 ⎠ ⎝ 0 0 0 −1 ⎛ ⎞ 1500 ⎜ ⎟ ⎜1000⎟ ⎜ ⎟ ⎜ ⎟ ⎜ 800 ⎟ ⎜ ⎟ ⎟ 𝑏=⎜ ⎜ 0 ⎟ ⎜ ⎟ ⎜ 0 ⎟ ⎜ ⎟ ⎜ 0 ⎟ ⎝ ⎠ 0 Листинг 1: Поиск оптимального решения для максимизация выручки 1 x0 = [ 0 ; 2 0; 3 0; 4 0]; 5 6 A=[5 1 9 1 2 ; 7 2 3 4 1; 8 3 2 5 1; 9 −1 0 0 0 ; 10 0 −1 0 0 ; 11 0 0 −1 0 ; 12 0 0 0 −1]; 13 14 b = [1500 , 1000 , 800 , 0 , 0 , 0 , 0 ] ; 15 16 [ x2 , f 2 ] = fmincon ( i n l i n e ( ’ −32*x ( 1 ) − 15* x ( 2 ) − 12* x ( 3 ) − 80* x ( 4 ) ’ ) , x0 , A, b ) 17 f 1 = −12*x2 ( 1 ) − 5* x2 ( 2 ) − 15* x2 ( 3 ) − 10* x2 ( 4 ) Результат: ∙ 𝑥1 = −0, 0000 5 ∙ 𝑥2 = 300, 0000 ∙ 𝑥3 = 0 ∙ 𝑥4 = 100, 0000 ∙ 𝑓 1 = −2500 ∙ 𝑓 2 = −12500 1.2.2 Максимизация прибыли Целевая функция: 𝑓 = 𝑚𝑖𝑛(−12𝑥1 − 5𝑥2 − 15𝑥3 − 10𝑥4 ) Начальные условия: ⎛ ⎞ 0 ⎜ ⎟ ⎜0⎟ ⎟ 𝑥0 = ⎜ ⎜0⎟ ⎝ ⎠ 0 Ограничения: ⎞ ⎛ 5 1 9 12 ⎟ ⎜ ⎜ 2 3 4 1 ⎟ ⎟ ⎜ ⎟ ⎜ ⎜ 3 2 5 1 ⎟ ⎟ ⎜ ⎜ −1 0 0 0 ⎟ ⎟ ⎜ 𝐴=⎜ ⎟ ⎟ ⎜ 0 −1 0 0 ⎟ ⎜ ⎟ ⎜ 0 −1 0 ⎟ ⎜ 0 ⎟ ⎜ ⎟ ⎜ 0 0 0 −1 ⎠ ⎝ −32 −15 −12 −80 ⎛ ⎞ 1500 ⎜ ⎟ ⎜ 1000 ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ 800 ⎟ ⎜ ⎟ ⎜ 0 ⎟ ⎜ ⎟ 𝑏=⎜ ⎟ ⎜ 0 ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ 0 ⎟ ⎜ ⎟ ⎜ 0 ⎟ ⎝ ⎠ −12500 6 Листинг 2: Поиск оптимального решения для максимизация прибыли 1 x0 = [ 0 ; 2 0; 3 0; 4 0]; 5 6 A=[5 1 9 1 2 ; 7 2 3 4 1; 8 3 2 5 1; 9 −1 0 0 0 ; 10 0 −1 0 0 ; 11 0 0 −1 0 ; 12 0 0 0 −1]; 13 14 b = [1500 , 1000 , 800 , 0 , 0 , 0 , 0 ] ; 15 16 [ x1 , f 1 ] = fmincon ( i n l i n e ( ’ −12*x ( 1 ) − 5*x ( 2 ) − 15* x ( 3 ) − 10* x ( 4 ) ’ ) , x0 , A, b ) 17 f 2 = −32*x1 ( 1 ) − 15* x1 ( 2 ) − 12* x1 ( 3 ) − 80* x1 ( 4 ) Результат: ∙ 𝑥1 = 261, 2903 ∙ 𝑥2 = 0 ∙ 𝑥3 = 0, 0000 ∙ 𝑥4 = 16, 1290 ∙ 𝑓 1 = −3296, 8 ∙ 𝑓 2 = −9651, 6 1.3 Свертка критериев Максимизируется критерий объединенной операции, получающийся в результате суммирования всех частных критериев: 𝑚 ∑︀ 𝐶(𝑎) = 𝑤𝑖 𝐶𝑖𝑛 (𝑎) 𝑖=1 7 𝐶𝑖𝑛 (𝑎) = 𝐶𝑖 (𝑎) 𝐶𝑖* 𝐶𝑖* - оптимальное решение задачи по каждому критерию в отдельности, 𝑤1 +𝑤2 +· · ·+𝑤𝑚 = 1. Листинг 3: Свертка критериев 1 x0 = [ 0 ; 2 0; 3 0; 4 0]; 5 6 A=[5 1 9 1 2 ; 7 2 3 4 1; 8 3 2 5 1; 9 −1 0 0 0 ; 10 0 −1 0 0 ; 11 0 0 −1 0 ; 12 0 0 0 −1]; 13 14 b = [1500 , 1000 , 800 , 0 , 0 , 0 , 0 ] ; 15 16 [ x1 , f 1 ] = fmincon ( i n l i n e ( ’ −12*x ( 1 ) − 5*x ( 2 ) − 15* x ( 3 ) − 10* x ( 4 ) ’ ) , x0 , A, b ) 17 f 2 = −32*x1 ( 1 ) − 15* x1 ( 2 ) − 12* x1 ( 3 ) − 80* x1 ( 4 ) 18 19 [ x2 , f 2 ] = fmincon ( i n l i n e ( ’ −32*x ( 1 ) − 15* x ( 2 ) − 12* x ( 3 ) − 80* x ( 4 ) ’ ) , x0 , A, b ) 20 f 1 = −12*x2 ( 1 ) − 5* x2 ( 2 ) − 15* x2 ( 3 ) − 10* x2 ( 4 ) 21 22 23 % Суммирование [ x3 , F ] = fmincon ( i n l i n e ( ’ −0.5*((12* x ( 1 ) + 5*x ( 2 ) + 15* x ( 3 ) + 10* x ( 4 ) ) / 3296) − 0 . 5 * ( ( 3 2 * x ( 1 ) + 15* x ( 2 ) +12*x ( 3 ) + 80* x ( 4 ) ) / 12 50 0) ’ ) , x0 ,A , b ) В fmincon передается сумма нормированных значений (первый критерий делится на f1, второй на f2), каждое из которых умножено на определенный весовой коэффициент. Результат: ∙ 𝑥1 = 166, 4573 ∙ 𝑥2 = 127, 8185 8 ∙ 𝑥3 = −0, 0000 ∙ 𝑥4 = 44, 9913 ∙ 𝑓 = −0, 9019 (суммарное) 1.4 Максимин или минимакс Максиминную свертку представим в следующем виде: 𝐶𝑖 (𝑎) = min 𝑤𝑖 𝐶𝑖 (𝑎) Решение 𝑎* является наилучшим, если для всех 𝑎 выполняется условие 𝐶(𝑎* ) ≥ 𝐶(𝑎), или 𝑎* = arg max 𝐶(𝑎) = arg max min 𝑤𝑖 𝐶𝑖 (𝑎). Решение задачи представлено как программа в среде Matlab, с использованием функции fminimax: 𝑓1 = ((12𝑥1 + 5𝑥2 + 15𝑥3 + 10𝑥4 )/3214)−1 ; 𝑓2 = ((32𝑥1 + 15𝑥2 + 12𝑥3 + 80𝑥4 )2 /12500)−1 ; Листинг 4: Содержание файла maxmin.m 1 x0 = [ 1 ; 2 1; 3 1; 4 1]; 5 6 A=[5 1 9 1 2 ; 7 2 3 4 1; 8 3 2 5 1; 9 −1 0 0 0 ; 10 0 −1 0 0 ; 11 0 0 −1 0 ; 12 0 0 0 −1]; 13 14 15 16 b = [1500 , 1000 , 800 , 0 , 0 , 0 , 0 ] ; 17 18 [ x , f ] = fminimax ( @funminmax , x0 , A, b ) 9 Листинг 5: Содержание файла funminmax.m 1 2 f u n c t i o n f = funminmax ( x ) %Крит ерии 3 f ( 1 ) = 1/ ( ( 12* x ( 1 ) + 5*x ( 2 ) + 15* x ( 3 ) + 10* x ( 4 ) ) / 3214) ; 4 f ( 2 ) = 1 / ( ( 3 2 * x ( 1 ) + 15* x ( 2 ) + 12* x ( 3 ) + 80* x ( 4 ) ) / 12500) ; Так как в среде Matlab реализована только функция fminimax, которая минимизирует наихудшие значения системы функций нескольких переменных, начиная со стартовой оценки (𝑥0 ), то для реализации максиминной свертки необходимо в fminimax передавать функции, возведенные в степень 1"(функция funminmax). Результат: ∙ 𝑥1 = 111, 6707 ∙ 𝑥2 = 201, 6612 ∙ 𝑥3 = −0, 0000 ∙ 𝑥4 = 61, 6654 ∙ 𝑓 1 = 1, 0840 ∙ 𝑓 2 = 1, 0840 1.5 Метод последовательных уступок Для решения данной задачи была выбрана уступка = 10%. Решение задачи представлено как программа в среде Matlab, с использованием функции fmincon. Целевые функции: ∙ 𝑓1 = −(12𝑥1 + 5𝑥2 + 15𝑥3 + 10𝑥4 ) ∙ 𝑓2 = −(32𝑥1 + 15𝑥2 + 12𝑥3 + 80𝑥4 ) Для первого критерия: 10 ⎛ 5 1 9 12 ⎞ ⎟ ⎜ ⎜2 3 4 1⎟ ⎟ ⎜ ⎟ ⎜ 2 5 1⎟ ⎜3 ⎟ ⎜ 𝐴=⎜ 0 0⎟ ⎟ ⎜−1 0 ⎟ ⎜ ⎜ 0 −1 0 0⎟ ⎟ ⎜ ⎟ ⎜0 0 −1 0 ⎠ ⎝ 0 0 0 −1 ⎛ ⎞ 1500 ⎜ ⎟ ⎜1000⎟ ⎜ ⎟ ⎜ ⎟ ⎜ 800 ⎟ ⎜ ⎟ ⎟ 𝑏=⎜ ⎜ 0 ⎟ ⎜ ⎟ ⎜ 0 ⎟ ⎜ ⎟ ⎜ 0 ⎟ ⎝ ⎠ 0 Результат: ∙ 𝑥1 = 261, 29 ∙ 𝑥2 = 0 ∙ 𝑥3 = 0 ∙ 𝑥4 = 16, 13 ∙ 𝑓 1 = 3297 ∙ 𝑓 2 = 9651 3297 – 329,7 = 2967,3 (10%) Для второго критерия: ⎛ ⎞ 5 1 9 12 ⎜ ⎟ ⎜2 ⎟ 3 4 1 ⎜ ⎟ ⎜ ⎟ ⎜3 2 5 1 ⎟ ⎜ ⎟ ⎜−1 0 ⎟ 0 0 ⎜ ⎟ 𝐴=⎜ ⎟ ⎜ 0 −1 0 ⎟ 0 ⎜ ⎟ ⎜ ⎟ 0 −1 0 ⎟ ⎜0 ⎜ ⎟ ⎜0 ⎟ 0 0 −1 ⎝ ⎠ −5 −1 −9 −12 11 ⎞ ⎛ 1500 ⎟ ⎜ ⎜ 1000 ⎟ ⎟ ⎜ ⎟ ⎜ ⎜ 800 ⎟ ⎟ ⎜ ⎟ ⎜ 0 ⎟ ⎜ 𝑏=⎜ ⎟ ⎟ ⎜ 0 ⎟ ⎜ ⎟ ⎜ 0 ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ 0 ⎠ ⎝ −2967, 3 Результат: ∙ 𝑥1 = 112, 7 ∙ 𝑥2 = 200, 3 ∙ 𝑥3 = 0 ∙ 𝑥4 = 61, 4 ∙ 𝑓 1 = 2967 ∙ 𝑓 2 = 11519 1.6 Fgoalattain fgoalattain решает задачу достижения цели, которая является одной из формулировок задач для векторной оптимизации. x = fgoalattain(fun, 𝑥0 , goal, weight): ∙ fun – целевая функция, ∙ 0 – начальные значения, ∙ goal – целевые значения, ∙ weight – веса. Решение задачи представлено как программа в среде Matlab, с использованием функций fminicon и fgoalattain. Целевые значения: Goal =(15855000 10240038400036 68000000 38080000 4900000) 12 Веса: weight=abs(goal) – для того, чтобы приближение к критериям было одинаково Листинг 6: Содержание файла fgoalattain.m 1 x0 = [ 1 ; 2 1; 3 1; 4 1]; 5 6 A=[5 1 9 1 2 ; 7 2 3 4 1; 8 3 2 5 1; 9 −1 0 0 0 ; 10 0 −1 0 0 ; 11 0 0 −1 0 ; 12 0 0 0 −1]; 13 14 b = [1500 , 1000 , 800 , 0 , 0 , 0 , 0 ] ; 15 16 %Первый крит ерий 17 clc 18 clear 19 20 % Ис ходные данные 21 x0 = [ 0 ; 22 0; 23 0; 24 0]; 25 26 A=[5 1 9 1 2 ; 27 2 3 4 1; 28 3 2 5 1; 29 −1 0 0 0 ; 30 0 −1 0 0 ; 31 0 0 −1 0 ; 32 0 0 0 −1]; 33 13 34 b = [1500 , 1000 , 800 , 0 , 0 , 0 , 0 ] ; 35 36 [ x1 , f 1 ] = fmincon ( i n l i n e ( ’ −12*x ( 1 ) −5*x ( 2 ) −15*x ( 3 ) −10*x ( 4 ) ’ ) , x0 , A, b) 37 38 [ x2 , f 2 ] = fmincon ( i n l i n e ( ’ −32*x ( 1 ) −15*x ( 2 ) −12*x ( 3 ) −80*x ( 4 ) ’ ) , x0 , A , b) 39 40 goal = [0 0 ] ; 41 goal (1) = f1 ; 42 goal (2) = f2 ; 43 44 we ig ht = abs ( g o a l ) ; 45 46 [ x , f3 , a t t a i n f a c t o r ] = f g o a l a t t a i n ( @myfun , x0 , g o a l , weight , A, b ) Результат: ∙ 𝑥1 = 207, 81 ∙ 𝑥2 = 72, 08 ∙ 𝑥3 = 0 ∙ 𝑥4 = 32, 4 ∙ 𝑓 1 = 3178 ∙ 𝑓 2 = 10324 ∙ 𝐴𝑡𝑡. = 0, 1741 1.7 Задача стохастического программирования Требуется найти такие 𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 для которых выполняться следующие ограничения: ∙ 5𝑥1 + 𝑥2 + 9𝑥3 + 12𝑥4 ≤ 1500 ∙ 2𝑥1 + 3𝑥2 + 4𝑥3 + 1𝑥4 ≤ 1000 ∙ 3𝑥1 + 2𝑥2 + 5𝑥3 + 1𝑥4 ≤ 800 Перейдем от последнего ограничения к вероятностному по схеме: 𝑃 ( 𝑛 ∑︀ 𝑗=1 14 𝑎𝑖𝑗 𝑘𝑗 − 𝑏𝑗 ≤ 0) ≥ 𝛼𝑖 И будем менять 𝛼𝑖 в диапазоне 0.1 ≤ 𝛼𝑖 ≤ 0.9, и возьмём коэффициенты 𝑎𝑖 за случайные величины. 𝑃 (0, 6𝑥1 + 0, 8𝑥2 + 1, 0𝑥3 + 1, 2𝑥4 ≤ 100) ≥ 𝛼𝑖 Пользуясь формулой: 3 ∑︀ 𝑎𝑖𝑗 𝑥𝑗 − 𝑏 + 𝐾𝛼 𝜎𝐴 ≤ 0 𝑗=1 получим вероятностное ограничение для задачи, где a = 0,6, 0,8, 1,0, 1,2, b = 100 – взяты √︀ из первоначального вида ограничения, 𝜎𝐴 = 𝑥 cov(a) 𝑥𝑇 . По таблице функции распределения стандартного нормального закона находим коэффициенты 𝐾𝛼 (0, 5 ≤ 𝛼 ≤ 0, 9): ∙ 𝐾0,5 = 0 ∙ 𝐾0,6 = 0, 253 ∙ 𝐾0,7 = 0, 520 ∙ 𝐾0,8 = 0, 841 ∙ 𝐾0,9 = 1, 282 1 lb = [0 0 0 0 ] ; 2 ub = [ 1 0 0 100 100 1 0 0 ] ; 3 x0 =[0 0 0 0 ] ; 4 5 6 7 o p t i o n s = o p t i m s e t ( ’ Algorithm ’ , ’ i n t e r i o r −p o i n t ’ ) ; % для каждо г о крит ерия по отдельно с ти : [ x , f v a l ] = fmincon ( i n l i n e ( ’ −12*x ( 1 ) −5*x ( 2 ) −15*x ( 3 ) −10*x ( 4 ) ’ ) , x0 , [ ] , [ ] , [ ] , [ ] , lb , ub , @constrStoh , o p t i o n s ) 1 f u n c t i o n [ sigma ] = p r o b a b i l i t y C o n s t r ( x ) 2 covH=x * [ 0 . 6 ; 0 . 8 ; 1 . 0 ; 1 . 2 ] * t r a n s p o s e ( x ) ; 3 sigma = s q r t ( covH ) ; 4 end 1 f u n c t i o n [ c , ceq ] = c o n s t r S t o h ( x ) 2 ceq = 0 ; 3 4 5 6 7 sigma = p r o b a b i l i t y C o n s t r ( x ) ; K= 1 . 2 8 2 ; c = [ % вв еденно е в ероятно с тно е о граничение 15 0 . 6 * x ( 1 ) + 0 . 8 * x ( 2 ) + 1 * x ( 3 ) + 1 . 2 * x ( 4 ) − 100 + K* sigma ; 8 9 10 −0.2*x ( 1 ) − 0 . 3 * x ( 2 ) − 0 . 4 * x ( 3 ) − 0 . 5 * x ( 4 ) + 3 5 ; 11 −0.6*x ( 1 ) − 0 . 4 * x ( 2 ) − 0 . 3 * x ( 3 ) − 0 . 2 * x ( 4 ) + 4 2 ; % у словия из "бывших" крит ерие в 12 −12*x ( 1 ) − 5*x ( 2 ) − 15* x ( 3 ) − 10* x ( 4 ) ] ; 13 14 end K 0 0,253 0,52 0,841 1,282 𝑥1 100 29,2780 27,7214 30,0887 25,4234 𝑥2 0 28,7760 25,8883 26,9406 22,6038 𝑥3 40 28,4840 24,8369 25,4863 21,2327 𝑥4 0 15,4300 12,8728 0,5164 1,1430 𝑓 1800 1076,8 963,4 883,2 748 Таблица 2: Результаты Видно, что задача чувствительна к выбранному ограничению, т.к. для различных K получились разные результаты. Так же следует отметить, что значения функций соответствуют нормальному закону распределения, что соответствует теории. 16 2 Решение задачи оценки показателей эффективности стохастической сети с использованием методики GERT. Выбор и использование математического пакета Matlab для решения сформулированной задачи. 2.1 Постановка задачи Дано: 1. Граф GERT-сети (рисунок 1). 2 0,5 0,1 1 5 0,5 0,2 4 0,6 0,3 0,4 3 6 0,4 Рис. 1: Граф GERT-сети. 2. Каждой дуге-работе (𝑖, 𝑗) поставлены в соответствие следующие данные: (a) Закон распределения времени выполнения работы. Будем считать его нормальным. (b) Параметры закона распределения (математическое ожидание 𝑀 и дисперсия 𝐷). (c) Вероятность 𝑃𝑖𝑗 выполнения работы, показанная на графе. Найти: 1. Вероятность выхода в завершающий узел графа (для всех вариантов узел 6). 17 Начальная вершина Конечная вершина 𝑀 𝐷 1 2 12 9 1 4 28 16 2 5 14 9 3 1 11 4 3 3 33 16 4 2 11 4 4 3 33 25 4 5 45 25 4 6 23 16 5 6 43 25 Таблица 3: Параметры закона распределения для дуг графа 2. Математическое ожидание. 3. Дисперсию времени выхода процесса в завершающий узел графа. Перечислить все петли всех порядков, обнаруженные на графе, выписать уравнение Мейсона, получить решение для 𝑊𝐸 (𝑠) и найти требуемые параметры. Примерно так, как это сделано в примере на стр. 403 – 409 книги Филипса и Гарсиа «Методы анализа сетей» 2.2 Ход работы Решение: Замкнём граф дугой из вершины 6 в вершину 1 (рисунок 2). Петли первого порядка: ∙ 𝑊12 𝑊25 𝑊56 𝑊1𝐸 ∙ 𝑊14 𝑊42 𝑊25 𝑊56 𝑊1𝐸 ∙ 𝑊14 𝑊43 𝑊31 ∙ 𝑊14 𝑊45 𝑊56 𝑊1𝐸 ∙ 𝑊14 𝑊46 𝑊1𝐸 ∙ 𝑊33 Петли второго порядка: 18 2 0,5 0,1 1 5 0,5 0,2 4 0,6 0,3 0,4 1 𝑊𝐸 3 6 0,4 Рис. 2: Замкнутый граф GERT-сети. ∙ 𝑊33 и 𝑊12 𝑊25 𝑊56 𝑊1𝐸 ∙ 𝑊33 и 𝑊14 𝑊42 𝑊25 𝑊56 𝑊1𝐸 ∙ 𝑊33 и 𝑊14 𝑊45 𝑊56 𝑊1𝐸 ∙ 𝑊33 и 𝑊14 𝑊46 𝑊1𝐸 Петель третьего порядка нет. 19 Выпишем уравнение Мейсона: 𝐻 = 1 − 𝑊12 𝑊25 𝑊56 1 𝑊𝐸 − 𝑊14 𝑊42 𝑊25 𝑊56 1 𝑊𝐸 − 𝑊14 𝑊43 𝑊31 − 𝑊14 𝑊45 𝑊56 − 𝑊14 𝑊46 1 𝑊𝐸 1 𝑊𝐸 − 𝑊33 + 𝑊33 𝑊12 𝑊25 𝑊56 1 𝑊𝐸 + 𝑊33 𝑊14 𝑊42 𝑊25 𝑊56 + 𝑊33 𝑊14 𝑊45 𝑊56 + 𝑊33 𝑊14 𝑊46 1 𝑊𝐸 1 𝑊𝐸 1 =0 𝑊𝐸 Отсюда выведем 𝑊𝐸 (𝑆): 1 − 𝑊14 𝑊43 𝑊31 − 𝑊33 = (𝑊12 𝑊25 𝑊56 + 𝑊14 𝑊42 𝑊25 𝑊56 + 𝑊14 𝑊45 𝑊56 + 𝑊14 𝑊46 − 𝑊33 𝑊12 𝑊25 𝑊56 − 𝑊33 𝑊14 𝑊42 𝑊25 𝑊56 − 𝑊33 𝑊14 𝑊45 𝑊56 − 𝑊33 𝑊14 𝑊46 ) 𝑊𝐸 (𝑆) = 1 𝑊𝐸 (𝑊12 𝑊25 𝑊56 + 𝑊14 𝑊42 𝑊25 𝑊56 + 𝑊14 𝑊45 𝑊56 + 𝑊14 𝑊46 − 𝑊33 𝑊12 𝑊25 𝑊56 − 𝑊33 𝑊14 𝑊42 𝑊25 𝑊56 − 𝑊33 𝑊14 𝑊45 𝑊56 − 𝑊33 𝑊14 𝑊46 )/ (1 − 𝑊14 𝑊43 𝑊31 − 𝑊33 ) Далее рассчитаем W-функции дуг. Далее вычислим математическое ожидание и дисперсию: 𝑀𝐸 (𝑠) = 1 при 𝑠 = 0 Поскольку 𝑊𝐸 (𝑠) = 𝑝𝐸 𝑀𝐸 (𝑠), то 𝑝𝐸 = 𝑊𝐸 (0), откуда следует, что 𝑀𝐸 (𝑠) = 𝑊𝐸 (𝑠) 𝑝𝐸 = 𝑊𝐸 (𝑠) 𝑊𝐸 (0) Вычисляя первую и вторую производные по 𝑠 функции 𝑀𝐸 (𝑠), и полагая 𝑠 = 0, находим математическое ожидание: 𝜇1𝐸 = 𝜕𝑀𝐸 (𝑠) |𝑠 𝜕𝑠 =0 и дисперсию: 𝜎 2 = 𝜇2𝐸 − [𝜇1𝐸 ]2 . 20 Начальная вершина Конечная вершина Вес ребра (𝑝𝑖𝑗 ) 𝑀 𝐷 W-функция 1 2 0,5 12 9 0, 5 * 𝑒𝑥𝑝(12𝑠 + 92 𝑠2 ) 1 4 0,5 28 16 0, 5 * 𝑒𝑥𝑝(28𝑠 + 2 5 1 14 9 3 1 0,6 11 4 3 3 0,4 33 16 4 2 0,1 11 4 4 3 0,3 33 25 4 5 0,2 45 25 4 6 0,4 23 16 5 6 1 43 25 16 2 𝑠) 2 𝑒𝑥𝑝(14𝑠 + 29 𝑠2 ) 0, 6 * 𝑒𝑥𝑝(11𝑠 + 42 𝑠2 ) 0, 4 * 𝑒𝑥𝑝(33𝑠 + 16 𝑠2 ) 2 0, 1 * 𝑒𝑥𝑝(11𝑠 + 42 𝑠2 ) 0, 3 * 𝑒𝑥𝑝(33𝑠 + 25 𝑠2 ) 2 0, 2 * 𝑒𝑥𝑝(45𝑠 + 25 𝑠2 ) 2 𝑠2 ) 0, 4 * 𝑒𝑥𝑝(23𝑠 + 16 2 𝑒𝑥𝑝(43𝑠 + 25 𝑠2 ) 2 Таблица 4: Производящие функции моментов Вероятность выхода в завершающий узел графа: 𝑝𝐸 = 𝑊𝐸 (0). Для моделирования работы был написан скрипт, представленный в листинге 7. Листинг 7: Код для вычисления заданных выражений 1 %Ис ходные данные : 2 %М − мат ематиче ско е ожидание 3 %D − дисперсия 4 %P − в ероятно с ть 5 M12 = 1 2 ; D12 = 9 ; P12 = 0 . 5 ; 6 M14 = 2 8 ; D14 = 1 6 ; P14 = 0 . 5 ; 7 M25 = 1 4 ; D25 = 9 ; P25 = 1 8 M31 = 1 1 ; D31 = 4 ; P31 = 0 . 6 ; 9 M33 = 3 3 ; D33 = 1 6 ; P33 = 0 . 4 ; 10 M42 = 1 1 ; D42 = 4 ; P42 = 0 . 1 ; 11 M43 = 3 3 ; D43 = 2 5 ; P43 = 0 . 3 ; 12 M45 = 4 5 ; D45 = 2 5 ; P45 = 0 . 2 ; 13 M46 = 2 3 ; D46 = 1 6 ; P46 = 0 . 4 ; 14 M56 = 4 3 ; D56 = 2 5 ; P56 = 1 ; ; 15 16 syms s ; 17 %W − функции 18 W12 = P12 * exp (M12 * s + D12/2 * s ^2) ; 21 19 W14 = P14 * exp (M14 * s + D14/2 * s ^2) ; 20 W25 = P25 * exp (M25 * s + D25/2 * s ^2) ; 21 W31 = P31 * exp (M31 * s + D31/2 * s ^2) ; 22 W33 = P33 * exp (M33 * s + D33/2 * s ^2) ; 23 W42 = P42 * exp (M42 * s + D42/2 * s ^2) ; 24 W43 = P43 * exp (M43 * s + D43/2 * s ^2) ; 25 W45 = P45 * exp (M45 * s + D45/2 * s ^2) ; 26 W46 = P46 * exp (M46 * s + D46/2 * s ^2) ; 27 W56 = P56 * exp (M56 * s + D56/2 * s ^2) ; 28 29 WE = (W12*W25*W56 + W14*W42*W25*W56 + W14*W45*W56 + W14*W46 − W33* W12*W25*W56 − W33*W14*W42*W25*W56 − W33*W14*W45*W56 − W33*W14*W46 ) / ( 1 − W14*W43*W31 − W33) 30 31 We = s i m p l i f y (WE) 32 We0 = subs (We, ’ s ’ , 0 ) % We( 0 ) 33 34 % Нахождение мат . ожидания и дисперсии 35 Me = We / We0 ; 36 37 % Нахождение произ водной 1−г о порядка при s = 0 38 m1 = d i f f (Me, ’ s ’ ) ; 39 % Замена символа s на 0 в выражении m1 40 m1 = subs (m1, ’ s ’ , 0 ) 41 42 % Нахождение произ водной 2−г о порядка при s = 0 43 m2 = d i f f (Me, ’ s ’ , 2 ) ; 44 % Замена символа s на 0 в выражении m2 45 m2=subs (m2, ’ s ’ , 0 ) 46 47 % Нахождение дисперсии времени выхода проце с с а в з ав ершающий у з ел гр афа 48 D = m2 − (m1) ^2 22 Результаты работы представлены в листинге 8. Листинг 8: Результат работы скрипта 1 >> main 2 3 WE = 4 5 −(( exp (8* s ^2 + 23* s ) * exp (8* s ^2 + 28* s ) ) /5 − (2* exp (8* s ^2 + 23* s ) * exp (8* s ^2 + 28* s ) * exp (8* s ^2 + 33* s ) ) /25 + ( exp ( ( 9 * s ^2) /2 + 12* s ) * exp ( ( 9 * s ^2) /2 + 14* s ) * exp ( ( 2 5 * s ^2) /2 + 43* s ) ) /2 + ( exp (8* s ^2 + 28* s ) * exp ( ( 2 5 * s ^2) /2 + 43* s ) * exp ( ( 2 5 * s ^2) /2 + 45* s ) ) /10 + ( exp (2* s ^2 + 11* s ) * exp ( ( 9 * s ^2) /2 + 14* s ) * exp (8* s ^2 + 28* s ) * exp ( ( 2 5 * s ^2) /2 + 43* s ) ) /20 − ( exp ( ( 9 * s ^2) /2 + 12* s ) * exp ( ( 9 * s ^2) /2 + 14* s ) * exp (8* s ^2 + 33* s ) * exp ( ( 2 5 * s ^2) /2 + 43* s ) ) /5 − ( exp (8* s ^2 + 28* s ) * exp (8* s ^2 + 33* s ) * exp ( ( 2 5 * s ^2) /2 + 43* s ) * exp ( ( 2 5 * s ^2) /2 + 45* s ) ) /25 − ( exp (2* s ^2 + 11* s ) * exp ( ( 9 * s ^2) /2 + 14* s ) * exp (8* s ^2 + 28* s ) * exp (8* s ^2 + 33* s ) * exp ( ( 2 5 * s ^2) /2 + 43* s ) ) /50) / ( ( 2 * exp (8* s ^2 + 33* s ) ) /5 + (9* exp (2* s ^2 + 11* s ) * exp (8* s ^2 + 28* s ) * exp ( ( 2 5 * s ^2) /2 + 33* s ) ) /100 − 1 ) 6 7 8 We = 9 10 −(exp (16* s ^2 + 51* s ) *(50* exp ( ( 1 1 * s ^2) /2 + 18* s ) − 8* exp (8* s ^2 + 33* s ) + 5* exp (11* s ^2 + 45* s ) − 20* exp ( ( 2 7 * s ^2) /2 + 51* s ) + 10* exp (17* s ^2 + 65* s ) − 2* exp (19* s ^2 + 78* s ) − 4* exp (25* s ^2 + 98* s ) + 20 ) ) /(40* exp (8* s ^2 + 33* s ) + 9* exp ( ( 4 5 * s ^2) /2 + 72* s ) − 100) 11 12 13 We0 = 14 1 15 16 17 18 m1 = 19 20 88.4706 21 23 22 23 m2 = 24 1 . 0 2 9 9 e+04 25 26 27 28 D = 29 2 . 4 7 2 3 e+03 30 31 32 >> 2.3 Результат По итогам проведённых расчётов были получены следующие результаты: 1. Вероятность выхода в завершающий узел графа равна 100% (𝑝 = 𝑊𝐸 = 1). 2. Математическое ожидание 88,46. 3. Дисперсия времени выхода процесса в завершающий узел графа 2472,3. 24 3 Поиск оптимальной стратегии принятия решений с использованием марковских моделей. 3.1 Постановка задачи Пусть имеется машина (станок), которая обслуживается периодически один раз в час. В каждый момент она может находиться в одном из двух состояний: рабочем (состояние 1) и нерабочем (состояние 2). Если машина на некотором шаге проработала непрерывно 1 час, то доход равен 3 рублям. При этом вероятность остаться на следующем шаге в состоянии 1 равна 0,7, а вероятность перейти в состояние 2 равна 0,3. Если машина отказала на некотором шаге, то её можно отремонтировать двумя способами. Первый является ускоренным, требует затрат в 2 рубля (доход равен -2 рубля) и обеспечивает переход в состояние 1 с вероятностью в 0,6. Второй, обычный способ требует затрат в 1 рубль и обеспечивает переход в состояние 1 с вероятностью 0,4. Найти оптимальную стратегию для 𝑁 = ∞ методом итераций по стратегиям, и перечислить все стационарные стратегии; построить марковскую модель принятия решений. 3.2 Марковская модель принятия решений Матрицы переходных вероятностей (𝑃1 и 𝑃2 ) и матрицы доходов (𝑟1 и 𝑟2 ) имеют следующий вид: (︃ 𝑃1 = 0, 7 0, 3 (︃ 𝑃2 = 0, 6 0, 4 (︃ 𝑟1 = )︃ 3 0 )︃ 0, 4 0, 6 (︃ 𝑟2 = −2 0 Модель представлена на рисунке 3. После работы, машина можем: ∙ Остаться в исправном состоянии 𝑓 1 = ⟨1; 1⟩ ∙ Перейти в неисправное состояние 𝑓 2 = ⟨1; 2⟩ 25 0, 7 0, 3 3 0 −1 0 )︃ )︃ 0,7 𝑆1 0,6 0,4 𝐷1 𝐷2 0,3 0,4 0,6 2 1 𝑆2 Рис. 3: 𝑆1 и 𝑆2 состояния системы; 𝐷1 и 𝐷2 принимаемые решения; красные рёбра - траты, чёрные - вероятность перехода Таким образом, возможны следующие стационарные стратегии: 𝜋1𝑁 = (𝑓 1 , 𝑓 1 ) 𝜋2𝑁 = (𝑓 1 , 𝑓 2 ) 𝜋3𝑁 = (𝑓 2 , 𝑓 1 ) 𝜋4𝑁 = (𝑓 2 , 𝑓 2 ) 3.3 Метод итерации по стратегиям Этап оценивания параметров. Выбираем произвольную стратегию 𝜏 = (𝑋𝑗1 , 𝑋𝑗2 , . . . ,𝑗𝑚 )𝑇 . Используя соответствующие стратегии 𝜏 , матрицу переходных вероятностей 𝑃 (𝜏 ) = (𝑝𝑖𝑘 (𝜏 )) и матрицу доходов 𝑅(𝜏 ) = (𝑟𝑗𝑘 (𝜏 )) и полагая 𝐹𝜏 (𝑚) = 0, решаем систему линейных 𝑚 ∑︀ алгебраических уравнений 𝐸𝜏 + 𝐹𝜏 (𝑗) − 𝑝𝑗𝑘 (𝜏 )𝐹𝜏 (𝑘) = 𝑣𝑗 (𝜏 ), 𝑗 = 1, 𝑚, относительно 𝑘=1 𝐸𝜏 , 𝐹𝜏 (1), . . . , 𝐹𝜏 (𝑚 − 1). Этап улучшения стратегии. Для каждого состояния 𝑆𝑗 , находим допустимое решение 𝑚 ∑︀ 𝑋*𝑗 , на котором достигается max(𝑋𝑖 ∈𝐺) (𝑣𝑗 (𝑋𝑖 ) + 𝑝𝑗𝑘 (𝑋𝑖 )𝐹𝜏 (𝑘)) 𝑘=1 Эти оптимальные решения образуют новую стратегию 𝑡 = (𝑋*1 , 𝑋*2 , . . . 𝑋*𝑚 )𝑇 . Если 𝑡 = 𝜏 , то стратегия 𝜏 и является оптимальной. В противном случае нужно обозначить стратегию t через 𝜏 и вернуться к первому этапу. 26 Воспользовавшись матрицами 𝑃1 , 𝑃2 , 𝑟1 , 𝑟2 и их независимостью от номера этапа, вычислим ожидаемые доходы, при различных вариантах допустимых решений: 𝑣1 (𝑋1 ) = 0, 7 * 3 + 0, 3 * 0 = 2, 1 𝑣2 (𝑋1 ) = 0, 6 * (−2) + 0, 4 * 0 = −1, 2 𝑣1 (𝑋2 ) = 0, 7 * 3 + 0, 3 * 0 = 2, 1 𝑣2 (𝑋2 ) = 0, 4 * (−1) + 0, 6 * 0 = −0, 4 В качестве произвольной стратегии 𝜏 используем стратегию номер два. В этом случае на этапе оценивания параметров, учитывая, что 𝐹𝜏 (2) = 0, получаем систему линейных алгебраических уравнений ⎧ ⎨ 𝐸𝜏 + (1 − 0, 7)𝐹𝜏 (1) = 2, 1 ⎩ 𝐸𝜏 − 0, 6 = −1, 2 которая имеет единственное решение: 𝐸𝜏 = 0, 78, 𝐹𝜏 (1) = 3, 3. Результаты соответствующих вычислений приведены в табл. 5. 𝑆𝑗 𝜙(𝑋𝑖 ) = 𝑣𝑗 (𝑋𝑘 ) + 𝑝𝑗 1(𝑋𝑖 ) * 𝐹𝑖 (1) max 𝜙𝑗 𝑋*𝑗 2,1+0,7*3,3=4,41 4,41 𝑋2 -0,4+0,4*3,3=0,92 0,78 𝑋2 i=1 i=2 1 2,1+0,7*3,3=4,41 2 -1,2+0,6*3,3=0,78 Таблица 5: Решение с оценочными параметрами Новая стратегия 𝑡 = (𝑋2 , 𝑋2 )𝑇 отличается от стратегии 𝜏 , поэтому нужно на этап оценивания параметров, полагая 𝜏 = (𝑋2 , 𝑋1 )𝑇 . Новой стратегии t соответствует следующая система линейных алгебраических уравнений: ⎧ ⎨ 𝐸𝜏 + (1 − 0, 7)𝐹𝜏 (1) = 2, 1 ⎩ 𝐸𝜏 − 0, 4 = −0, 4 которая имеет единственное решение: 𝐸𝜏 = 0, 85, 𝐹𝜏 (1) = 3, 125. Результаты соответствующих вычислений приведены в табл. 6. Новая стратегия совпала с предыдущей, таким образом оптимальная стратегия определена: оптимальное использовать более дешевый ремонт с меньшей гарантией успешного завершения. 27 𝑆𝑗 𝜙(𝑋𝑖 ) = 𝑣𝑗 (𝑋𝑘 ) + 𝑝𝑗 1(𝑋𝑖 ) * 𝐹𝑖 (1) i=1 i=2 1 2,1+0,7*3,125=4,2875 2,1+0,7*3,125=4,2875 2 -1,2+0,6*3,125=0,675 -0,4+0,4*3,125=0,85 max 𝜙𝑗 𝑋*𝑗 4,2875 𝑋2 0,85 𝑋2 Таблица 6: Проверочное решение 3.4 Метод линейного программирования Все параметры посчитаны, мы можем сформулировать задачу в виде задачи линейного программирования, для проверки ранее полученных результатов. ⎧ ⎪ 2, 1𝑤11 + 2, 1𝑤12 − 1, 2𝑤21 − 0, 4𝑤22 − > max ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ 0, 3𝑤11 + 0, 3𝑤12 − 0, 6𝑤21 − 0, 4𝑤22 = 0 ⎪ ⎨ −0, 3𝑤11 − 0.3𝑤12 + 0, 6𝑤21 + 0, 4𝑤22 = 0 ⎪ ⎪ ⎪ 2 ∑︁ 2 ⎪ ∑︁ ⎪ ⎪ ⎪ 𝑤𝑖𝑗 = 1, 𝑤𝑖𝑗 ≥ 0 ⎪ ⎩ 𝑗=1 𝑖=1 Код скрипта представлен в листинге 9. Листинг 9: Код для вычисления задачи линейного программирования 1 x0 = [ 0 ; 0 ; 0 ; 0 ] 2 A=[−1 0 0 0 ; 0 −1 0 0 ; 0 0 −1 0 ; 0 0 0 −1] 3 b=[0; 0; 0; 0] 4 Aeq = [ 0 . 3 0 . 3 −0.6 −0.4; 5 −0.3 −0.3 0 . 6 0 . 4 ; 6 1 1 1 1]; 7 8 9 beq = [ 0 ; 0 ; 1 ] ; %Максимизирование функции [ x , f v a l ] = fmincon ( i n l i n e ( ’ −(2.1* x ( 1 ) +2.1* x ( 2 ) −1.2*x ( 3 ) −0.4*x ( 4 ) ) ’ ) , x0 , A, b , Aeq , beq ) 10 11 q11 = x ( 1 ) / ( x ( 1 )+x ( 2 ) ) 12 q21 = x ( 2 ) / ( x ( 1 )+x ( 2 ) ) 13 q12 = x ( 3 ) / ( x ( 3 )+x ( 4 ) ) 14 q22 = x ( 4 ) / ( x ( 3 )+x ( 4 ) ) 28 Результат выполнения в листинге 10. Листинг 10: Результат работы скрипта линейного программирования 1 >> l i n e a r 2 3 x0 = 4 5 0 6 0 7 0 8 0 9 10 11 A = 12 13 −1 0 0 0 14 0 −1 0 0 15 0 0 −1 0 16 0 0 0 −1 17 18 19 b = 20 21 0 22 0 23 0 24 0 25 26 L o c a l minimum found t h a t s a t i s f i e s t he c o n s t r a i n t s . 27 28 O p t i m i z a t i o n completed b e c a u s e t h e o b j e c t i v e f u n c t i o n i s non− decreasing in 29 f e a s i b l e d i r e c t i o n s , t o w i t h i n t h e d e f a u l t v a l u e o f th e f u n c t i o n tolerance , 30 and c o n s t r a i n t s a r e s a t i s f i e d t o w i t h i n t he d e f a u l t v a l u e o f t h e constraint tolerance . 31 32 <s t o p p i n g c r i t e r i a d e t a i l s > 29 33 34 35 A c t i v e i n e q u a l i t i e s ( t o w i t h i n o p t i o n s . TolCon = 1e −06) : lower upper ineqlin ineqnonlin 3 36 37 38 x = 39 40 0.2857 41 0.2857 42 0 43 0.4286 44 45 46 fval = 47 48 −1.0286 49 50 51 q11 = 52 53 0.5000 54 55 56 q21 = 57 58 0.5000 59 60 61 q12 = 62 63 0 64 65 66 q22 = 67 68 1 69 30 70 >> Таким образом, оптимальной стратегии снова стало использование дешевого ремонта, как и в предыдущем случае с итерации по стратегиям. 31 4 Поиск оптимальных параметров сети систем массового обслуживания. 4.1 Постановка задачи Минимизировать стоимость ССМО при ограничении на среднее число заявок в сети 𝑚𝑖𝑛{𝐹 (𝑢) = 𝑛𝑗 𝑛 ∑︁ ∑︁ 𝑓𝑗𝑘 𝑢𝑗𝑘 = 𝑗=1 𝑘=1 𝐿(𝑢) = 𝑛 ∑︀ 𝑛𝑗 𝑛 ∑︁ ∑︁ (𝑚𝑗𝑘 * 𝜇𝑗𝑘 ) * 𝑢𝑗𝑘 } 𝑗=1 𝑘=1 𝐿𝑗𝑘 𝑢𝑗𝑘 , 𝑗=1 𝑢𝑗𝑘 = ⎧ ⎨0, , ⎩1 Дано многоканальная сеть Джексона: {𝜆0 , {𝑗𝑘} − набор альтернатив, 𝑄 = {𝑞𝑖𝑗 }𝑖=0,𝑛,𝑗=0,𝑛 , 𝐿(𝑢)} 𝐿(𝑢) = 4, (предельное число заявок в сети) 𝜆0 = 6, 0 0,2 0,7 0 0,1 0,1 0 0,1 0,2 0,6 0,1 0 0,2 0,2 . 0 0,2 0,8 0 0 0,3 0,2 0,2 0,3 0 𝑄 = {𝑞𝑖𝑗 }𝑖=0,𝑛,𝑗=0,𝑛 = 0,5 Самостоятельно сформировать набор альтернатив (по 2 альтернативы на каждый узел, обеспечивающих установивший режим в узле). Решить задачу 5 двумя способами: ∙ В соответствии с алгоритмом 5 ∙ Как задачу дискретного линейного программирования (например, с использованием Матлабовской команды Linprog). 32 4.2 Алгоритм решения 1. Найти 𝜆𝑖 , 𝑗 = 1. . . . , 𝑚 – скорость прихода задач в узел 𝑗. 𝑛 ∑︀ 𝜆𝑖𝑗 = 𝜆𝑖 𝑞𝑖𝑗 𝜆𝑗 = 𝜆0𝑗 + 𝑞𝑖𝑗 𝜆𝑖 , при 𝑗 = 1, . . . , 𝑛 𝑖=1 2. Возьмем произвольный набор альтернатив для каждого узла. [(𝑚1𝑗 , 𝜇1𝑗 ), (𝑚1𝑗 , 𝜇1𝑗 ), . . . , (𝑚𝑘𝑗 , 𝜇𝑘𝑗 )] 3. 𝑝𝑗 рассчитывается по следующей формуле 𝑝𝑗 = 𝜆𝑗 𝜇𝑗 𝑚 𝑗 4. Вычислим 𝐸(𝑊𝑞𝑗 ): 𝐸(𝑊𝑞𝑗 ) = (𝑚𝑗 𝑝𝑗 )𝑚𝑗 𝜋(0) , 𝜇𝑗 𝑚𝑗 (1−𝑝𝑗 )2 𝑚𝑗 ! где 𝜋(0) = { 𝑚∑︀ 𝑗 −1 𝑡=0 (𝑚𝑗 𝑝𝑗 )𝑡 𝑡! + (𝑚𝑗 𝑝𝑗 )𝑚 𝑗 }−1 (1−𝑝𝑗 )𝑚𝑗 ! 5. Найдем 𝐿𝑗 – число заявок в j-ом узле по формуле: 𝐿𝑗 = [𝐸(𝑊𝑞𝑗 + 𝐸(𝑆𝑗 )]𝜆𝑖 , где 𝐸(𝑆𝑗 ) = 4.3 1 𝜇 Решение по алгоритму Первый шаг алгоритма По первой формуле из первого шага алгоритма найдем вектор 𝜆0𝑗 . 𝜆0𝑗 = (1, 2 4, 2 0 0, 6) Используя вектор 𝜆0𝑗 , составим систему уравнений по второй формуле из шага 1. ⎧ ⎪ 𝜆0 ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ 𝜆 ⎪ ⎪ ⎨ 1 𝜆2 ⎪ ⎪ ⎪ ⎪ ⎪ 𝜆3 ⎪ ⎪ ⎪ ⎪ ⎩𝜆 4 = 6 = 1, 2 + 0, 2 * 𝜆0 + 0, 1 * 𝜆2 + 0, 2 * 𝜆3 + 0, 2 * 𝜆4 = 4, 2 + 0, 7 * 𝜆0 + 0, 1 * 𝜆1 + 0, 8 * 𝜆3 + 0, 2 * 𝜆4 = 0, 2 * 𝜆1 + 0, 2 * 𝜆2 + 0, 3 * 𝜆4 = 0, 6 + 0, 1 * 𝜆0 + 0, 6 * 𝜆1 + 0, 2 * 𝜆2 В результате решения системы методом Гаусса был получен следующий результат: ∙ 𝜆0 = 6; ∙ 𝜆1 = 7, 44; ∙ 𝜆2 = 17, 06; ∙ 𝜆3 = 7, 63; 33 ∙ 𝜆4 = 37, 65. Теперь вычислим остальные 𝜆𝑖𝑗 , используя следующий скрипт. Здесь и в дальнейшем используется странное ограничение на предельное число заявок в сети – 4 шт. вместе с нулевой. % Исходные данные Q = [0 0.2 0.7 0 0.1; 0.1 0 0.1 0.2 0.6; 0.5 0.1 0 0.2 0.2; 0 0.2 0.8 0 0; 0.3 0.2 0.2 0.3 0]; % Значение лямбды каждого узла lambdaj=[6;7.44;17.06;7.63;37.65]; N=4; % Число узлов вместе с нулевой. % Вычисление лямбда ij lambdaij=[]; for i = 1:N for j = 1:N lambdaij(i,j) = lambdaj(i)*Q(i, j); end end lambdaij Результаты вычисления представлены в таблице 7. i\j 1 2 3 4 1 0 1.2000 4.2000 0 2 0.7440 0 0.7440 1.4880 3 8.5300 1.7060 0 3.4120 4 0 1.5260 6.1040 0 Таблица 7: Результат вычисления всех значений 𝜆𝑖𝑗 Второй шаг алгоритма Далее сформируем набор альтернатив (по 2 альтернативы на каждый узел, обеспечивающих установивший режим в узле): ∙ 𝑚1𝑗 =(4 8 3 4); ∙ 𝜇1𝑗 =(2 3 7 9); 34 ∙ 𝑚2𝑗 =(5 8 3 6); ∙ 𝜇2𝑗 =(9 13 10 4); Третий шаг алгоритма Для расчета вероятности 𝑝𝑗 воспользуемся следующим скриптом: K=2; % Задаем альтернативы muj = [4 8 3 4; 2 3 7 9]; mj = [5 8 3 6; 9 13 10 4]; % Расчёт вероятностей pj = []; for i = 1:N-1 for k = 1:K pj(k,i) = lambdaj(i+1)/(muj(k,i)*mj(k,i)); end end pj Результаты занесены в таблицу 8. k\j 1 2 3 1 0.3720 0.2666 0.8478 2 0.4133 0.4374 0.1090 Таблица 8: Результат расчёта вероятностей Четвертый шаг алгоритма Расчет вектора 𝜋𝑗 (0). % Расчет начальной вероятности для каждого узла. pij0 = []; for i = 1:N-1 for k=1:K sum = 0; for t = 0:mj(k,i)-1 35 sum = sum + ((mj(k,i)*pj(k,i))^t)/factorial(t); end sum = sum + ((mj(k,i)*pj(k,i))^mj(k,i))/ ((1-pj(k,i))*factorial(mj(k,i))); pij0(k,i)=sum^(-1); end end pij0 Результаты расчета начальной вероятности узлов занесены в таблицу 9. k\j 1 2 3 1 0.1549 0.1185 0.0403 2 0.0242 0.0034 0.3362 Таблица 9: Расчет начальной вероятности узлов Пятый шаг алгоритма Рассчитаем 𝐸(𝑊𝑞𝑗 ). % E(Wqj) для каждого узла. EWqj = []; for i = 1:N-1 for k=1:K EWqj(k,i) = (((mj(k,i)*pj(k,i))^mj(k,i))*pij0(k,i))/ (muj(k,i)*mj(k,i)*((1-pj(k,i))^2)*factorial(mj(k,i))); end end EWqj Результаты занесены в таблицу 10. k\j 1 2 3 1 0.0036 0.0000 0.5304 2 0.0015 0.0003 0.0000 Таблица 10: Расчет вектора 𝐸(𝑊𝑞𝑗 ) для k=1 и k=2 Теперь найдем 𝐸(𝑆𝑗 ) для каждого узла. 36 % Найдем E(sj) для каждого узла. Esj = []; for i = 1:N-1 for k=1:K Esj(k,i) = 1/muj(k,i); end end Esj Результаты занесены в таблицу 11. k\j 1 2 3 1 0.2500 0.1250 0.3333 2 0.5000 0.3333 0.1429 Таблица 11: Расчет 𝐸(𝑆𝑗 ) для каждого узла. Теперь не составит труда посчитать 𝐿𝑗 – число заявок в j-ом узле, для каждой альтернативы. % Найдем Lj Lj = []; for i = 1:N-1 for k=1:K Lj(k,i) = lambdaj(i+1)*(EWqj(k,i)+Esj(k,i)); end end Lj Результаты занесены в таблицу 12. k\j 1 2 3 1 1.8871 2.1331 6.5900 2 3.7309 5.6916 1.0900 Таблица 12: Расчет числа заявок в каждом узле. Таким образом, сеть не загружена и простаивает. 37 4.4 Решение дискретным линейным методом программирования Для решения задачи воспользуемся функцией bintprog. %Зададим входные параметры A = [1 0 0 1 0 0; 0 1 0 0 1 0; 0 0 1 0 0 1]; f = [4 4 5 5 2 31]; b = [1 1 1]; Aeq = A; beq = [1;1;1]; [x, fval] = bintprog(f,A,b,Aeq,beq) %параметры A,b,Aeq,beq будут как для прошлой задачи %дополнительно введем ограничения на значение lb и ub lb=zeros(1,(N-1)*2); ub=ones(1,(N-1)*2); %решаем задачу [x,fval] = linprog(f,A,b,Aeq,beq,lb,ub) Результаты представлены в таблице 13. k 𝑢1𝑘 𝑢2𝑘 𝑢3𝑘 1 1 1 1 2 0 0 0 Таблица 13: Результат использования linprog. Получаем следующий выбор альтернатив: (𝑢11 , 𝑢21 , 𝑢31 ). 38 Список используемой литературы 1. Колесников Д.Н., Бендерская Е.Н., Лупин А.В., Пахомова В.И., Сиднев А.Г., Цыган В.Н. «Системный анализ и принятие решений». СПб.: Издательство Политехнический университет, 2008. - 468с. 2. Макаров И.М., и др. Теория выбора и принятия решений. М. Наука. 1982. — 328 с. 3. Вишневский В.М. «Теоретические основы проектирования компьютерных сетей». — М. : Техносфера, 2003. - 512 с 39