Исследование задачи распределения ресурса времени на испытание двигателей

Автор: Пользователь скрыл имя, 17 Ноября 2014 в 16:40, курсовая работа

Краткое описание

Производятся испытания авиационного двигателя на 10 режимах работы . Задан общий ресурс времени , отводимого на испытания Т. При испытании i–го режима работы двигателей мы отлаживаем i –й агрегат двигателя , тем самым уменьшаем вероятность его отказа в реальной работе .

Файлы: 1 файл

эвм есипов.docx

— 129.86 Кб (Скачать)

Министерство образования и науки российской федерации

федеральное государственное бюджетное 
образовательное учреждение высшего 
профессионального образования 
«САМАРСКИЙ ГОСУДАРСТВЕННЫЙ АЭРОКОСМИЧЕСКИЙ 
УНИВЕРСИТЕТ имени академика С.П. КОРОЛЕВА 
(национальный исследовательский университет)» 
(сгау)

Факультет информатики

Кафедра информационных систем и технологий

 

 

Курсовая работа по дисциплине

«Теория принятия решений»

 

По теме:

«Исследование задачи распределения ресурса времени на испытание двигателей»

Вариант №57

 

 

 

Выполнила:

студентка гр. 6313 Б 300 
Черненко О.А.

 

Проверил:

     Есипов Б. А.

                                                                                      

 

Самара 2013 

СОДЕРЖАНИЕ

 

 

1. Задание

Производятся испытания авиационного двигателя на 10 режимах работы . Задан общий ресурс времени , отводимого на испытания Т. При испытании  i–го режима работы двигателей мы отлаживаем i –й агрегат двигателя , тем самым уменьшаем вероятность его отказа в реальной работе . Зависимость надежности qi–го агрегата от времени его испытания  ti имеет вид:

qi=1-ai*e-λiti

 

Выход одного агрегата из строя выводит из строя весь двигатель . Известно . что при плане ресурса времени на испытание в i–м режиме , в среднем фактически тратится  bi*ti.

Распределить общий ресурс времени на испытание двигателя так , чтобы надежность двигателя была максимальной .

 

Таблица 1

 

Значение коэффициентов траты ресурсов bi по режимам испытаний

 

b1

b2

b3

b4

b5

b6

b7

b8

b9

b10

0,9

0,8

0,85

0,85

0,7

0,65

0,6

0,65

0,75

0,85


 

Таблица 2

 

Значение коэффициентов ai по агрегатам двигателя

 

a1

a2

a3

a4

a5

a6

a7

a8

a9

a10

0,2

0,2

0,3

0,5

0,1

0,1

0,4

0,1

0,2

0,3


 

Таблица 3

Интенсивность отказов агрегатов λi ,1/час

 

 

λ1

λ2

λ3

λ4

λ5

λ6

λ7

λ8

λ9

Λ10

Общий ресурс Т, час

0,1

0,2

0,1

0,05

0,1

0,2

0,3

0,1

0,01

0,01

100


 

 

2. Моделирование задачи

Данная задача относится к классу задач нелинейного программирования (в дальнейшем НЛП).

 

Задача НЛП – такая задача, в которой либо целевая функция, либо функции ограничений, либо они вместе представляют собой нелинейные функции.

 

Определим управляемые переменные. Таковыми будут являться время испытания i-го узла ti.

 

Определим неуправляемые переменные. В данной задаче неуправляемыми переменными являются значения коэффициентов траты ресурсов bi режимам испытаний, ai по агрегатам двигателя и интенсивность отказов агрегатов λi.

 

Количество агрегатов - 10.

Общий ресурс времени T = 100.

 

Зависимость надежности qi–го агрегата от времени его испытания  ti имеет вид: 

qi=1-ai*e^(-λi*ti)

 

Вероятность правильной работы всех агрегатов:

 Q== → max

 

Ограничение времени испытаний:

 

 

Математическая модель сформулирована. Данная модель описывает задачу НЛП, т.к. целевая функция нелинейная, а все переменные действительные числа.

 

3. Обоснование и выбор метода решения

Для решения данной задачи был выбран метод динамического программирования (ДП). Это особый метод, который специально приспособлен для оптимизации динамических задач, в которых операция состоит из элементов, сильно влияющих друг на друга. ДП связано с именем Ричарда Беллмана, который сформулировал принцип оптимальности Беллмана. Он позволяет существенно сократить перебор решений в многоэтапных нелинейных задачах.

Назовем состоянием системы S один или несколько параметров  системы. Обозначим управление на i-м шаге Ui – это некоторое воздействие, которое испытывает система и изменяет свое состояние S. Если перед i-м шагом состояние системы S и мы принимаем управление Ui, то за i-й шаг мы можем получить некоторый выигрыш, который обозна- чается ωi(Si, Ui), при этом состояние S переходит в S’: S  →S’= ϕi(S, Ui). 

Величина ωi(Si, Ui) должна быть известна до начала динамического про- граммирования. Если состояние перед i-м шагом было S и мы приняли какое- то управление Ui, то система перейдёт в новое состояние ϕi(S, Ui). Эта функция должна быть так же известна. Если эти функции не заданы, то их надо сформулировать. Введём функцию Wi(S) - условный оптимальный выигрыш. Это выигрыш на всех этапах от i до конца, если i-й шаг начинается с состояния S. Рассмотрим m шагов. Пусть с (i+1)-го шага мы системой управляем оптимально, тогда величина выигрыша будет такая - W(i+1)(S'). Применим на i-м шаге произвольное управление Ui, тогда (s) - неоптимальный выигрыш, т. к. на i-м шаге мы применяем  неоптимальное управление Ui. Чтобы от i-го шага и до конца получить оптимальный выигрыш, нужно изменять Ui  так, чтобы 

Это функциональное уравнение Беллмана. Для использования уравнения Беллмана начинают с конца: 

1. i=m,

2. i=m - 1

Итак, идя от конца к началу, мы получаем последовательно:

Придя в начальное состояние W1(S), мы можем подставить S=S0 и W1(S0)=Wmax - это безусловный выигрыш. Теперь необходимо получить безусловные оптимальные уравнения, идя от начала к концу по цепочке:

В результате получаем оптимальное решение:

Основанием для выбора в качестве метода решения данной задачи является тот факт, что принцип оптимальности Беллмана ставит вопрос о том, что такое оптимальность отдельного элемента системы с точки зрения оптимальности всей системы. Принимая решение на отдельном этапе, мы должны выбирать управление на этом этапе с прицелом на будущее, т. к. нас интересует результат в целом за все шаги.

 

4. Программная реализация метода динамического программирования

При рассмотрении решения задачи через метод Беллмана, можно составить следующие выражения:

S ~ T - текущий ресурс времени (оставшийся)

Ui ~ ti - время, выделяемое на i-й агрегат

wi(Si,Ui) ~ (1 - ai*), ti ≤ T

Таким образом, условный оптимальный выигрыш на i-м шаге:

[T] =

Для программирования решения данной задачи заводим 3 массива bi, ai, и двумерный массив массивов для хранения оптимального выигрыша на i-м шаге wi.

В цикле, начиная с конца, заполняем wi по формуле оптимального выигрыша. Затем, дойдя до начального состояния w0, смотрим, при каком времени тестирования агрегатов двигателя надежность получается максимальной.

В процессе работы было разработано консольное приложение на языке c# (приложение 1).

Результат работы программы:

 

Итог: вероятность безотказной работы системы равна 0,311588, при этом время, затраченное на каждый i-й агрегат в сумме дают 100 и, как видно из таблиц констант, образуют оптимальную систему решения.

 

5. Решение задачи с использованием стандартных компьютерных средств

Проверка полученного решения производится с помощью программы GINO. GINO позволяет решать задачи НЛП. Входные параметры могут быть загружены с внешнего текстового файла.

Этапы решения задачи:

  1. Ввод математической модели задачи в текстовый файл.

Итоговый текстовый файл:

MODEL:

      1) MAX = (1-0.2/(exp(t1*0.9*0.1)))*(1-0.2/(exp(t2*0.8*0.2)))*(1-0.3/(exp(t3*0.85*0.1)))*((1-0.5/(exp(t4*0.85*0.05)))*(1-0.1/(exp(t5*0.7*0.1)))*(1-0.1/(exp(t6*0.65*0.2))))*((1-0.4/(exp(t7*0.6*0.3)))*(1-0.1/(exp(t8*0.65*0.1)))*(1-0.2/(exp(t9*0.75*0.01))))*(1-0.3/(exp(t10*0.85*0.01)));

       2) t1+t2+t3+t4+t5+t6+t7+t8+t9+t10 < 101;

       3) t1 > 0;

       4) t2 > 0;

       5) t3 > 0;

       6) t4 > 0;

       7) t5 > 0;

       8) t6 > 0;

       9) t7 > 0;

       10) t8 > 0;

       11) t9 > 0;

       12) t10 > 0;

    END

LEAVE

  1. Запуск программы GINO и загрузка файла с математической моделью при помощи команды take, запуск программы на выполнение при помощи команды go.

 Итоговый результата выполнения  программы:

Таким образом, оптимальное значение целевой функции равно 0,323928

Решение, полученной программой GINO совпадает с решением, полученным при программной реализации метода Беллмана.

 

Приложение 1

листинг программы

        double[] b = { 0.9, 0.8, 0.85, 0.85, 0.7, 0.65, 0.6, 0.65, 0.75, 0.85 };

            double[] a = { 0.2, 0.2, 0.3, 0.5, 0.1, 0.1, 0.4, 0.1, 0.2, 0.3 };

            double[] l = { 0.1, 0.2, 0.1, 0.05, 0.1, 0.2, 0.3, 0.1, 0.01, 0.01 };

            double[][,] w = new double[10][,];

            w[0] = new double[2, 100];

            w[1] = new double[2, 100];

            w[2] = new double[2, 100];

            w[3] = new double[2, 100];

            w[4] = new double[2, 100];

            w[5] = new double[2, 100];

            w[6] = new double[2, 100];

            w[7] = new double[2, 100];

            w[8] = new double[2, 100];

            w[9] = new double[2, 100];

            for (int T = 100; T > 0; T--)

            {

                int tn = 1;

                double wn = (1 - a[9] * Math.Exp(-l[9]));

                for (int t = 2; t <= T; t++)

                {

                    double r = (1 - a[9] * Math.Exp(-l[9] * t));

                    if (r > wn) { tn = t; wn = r; }

                }

                w[9] [0, T - 1] = tn; w[9] [1, T - 1] = wn;

            }

           for (int i = 8; i >= 0; i-- )

            {

                for (int T = 100; T > 0; T--)

                {

                    int tn = 1;

                    double wn = ((1 - a[i] * Math.Exp(-l[i])) * w[i+1][1, (int)(T - b[i])]);

                    for (int t = 2; t <= T; t++)

                    {

                        double r = ((1 - a[i] * Math.Exp(-l[i] * t)) * w[i+1][1, (int)(T - b[i] * t)]);

                        if (r > wn) { tn = t; wn = r; }

                    }

                    w[i][0, T - 1] = tn; w[i][1, T - 1] = wn;

                }

            }

            double ans = 0;

            for (int i = 8; i >= 0; i-- )

            {

               for (int j = 0; j < t; j++)

               {

                   ans = Math.Max(w[i][j - 1, j], ans);

               }

            }

            Console.WriteLine ("Answer = "+ ans));

           

            double x = w[0][1, 0];

            int y = 0;

            for (int i = 1; i < 100; i++)

            {

                if (w[0][1, i] > x) { x = w[0][1, i]; y = i; }

            }

            Console.WriteLine("t1 = " + w[0][0, y]);

            int To = 100;

            for (int i = 1; i < 10; i++)

            {

                To = To - (int)(w[i][0, y] * b[i]);

                y = To;

                Console.WriteLine("t" + (i + 1) + " = " + w[0][0, y]);

            }

 

6. Список использованной литературы

 

1. Б.А. Есипов. Методы исследования операций. Санкт-Петербург, Москва, Краснодар, 2010 – 248 с.

2. Таха Хэмди А. Введение в  исследование операций. 6-е изд. - М.: Изд. Дом «Вильямс», 2001. – 912 с.

3.Исследование операций в экономике: Учеб. пособие для втузов/ Н.Ш.Кремер, Б.А. Путко, И.М.Тришин, М.Н.Фридман; под  ред. проф. Н.Ш.Кремера. – М.: ЮНИТИ, 2006. – 407с.

4. Волков И.К., Загоруйко Е.А. Исследование  операций: Учеб. пособие для вузов. 2-е изд./ Под ред. В.С.Зарубина, А.П. Крищенко. – М.: Изд-во МГТУ им. Н.Э.Баумана, 2002. – 436 с.

5. Пантелеев А.В. Методы оптимизации  в примерах и задачах: Учеб. пособие / А.В.Пантелеев, Т.А. Летова – М.: Высш. шк., 2002.—544 с.

6. Акулич И.Л. Математическое программирование  в примерах и задачах: Учеб. пособие. – М.: Высш. шк., 1986. – 319 с.

 

 


Информация о работе Исследование задачи распределения ресурса времени на испытание двигателей