Автор: Пользователь скрыл имя, 17 Ноября 2014 в 16:40, курсовая работа
Производятся испытания авиационного двигателя на 10 режимах работы . Задан общий ресурс времени , отводимого на испытания Т. При испытании i–го режима работы двигателей мы отлаживаем i –й агрегат двигателя , тем самым уменьшаем вероятность его отказа в реальной работе .
Министерство образования и науки российской федерации
федеральное
государственное бюджетное
образовательное учреждение высшего
профессионального образования
«САМАРСКИЙ ГОСУДАРСТВЕННЫЙ АЭРОКОСМИЧЕСКИЙ
УНИВЕРСИТЕТ имени академика С.П. КОРОЛЕВА
(национальный исследовательский университет)»
(сгау)
Факультет информатики
Кафедра информационных систем и технологий
Курсовая работа по дисциплине
«Теория принятия решений»
По теме:
«Исследование задачи распределения ресурса времени на испытание двигателей»
Вариант №57
Выполнила:
студентка
гр. 6313 Б 300
Черненко О.А.
Проверил:
Есипов Б. А.
Самара 2013
СОДЕРЖАНИЕ
Производятся испытания авиационного двигателя на 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 |
Данная задача относится к классу задач нелинейного программирования (в дальнейшем НЛП).
Задача НЛП – такая задача, в которой либо целевая функция, либо функции ограничений, либо они вместе представляют собой нелинейные функции.
Определим управляемые переменные. Таковыми будут являться время испытания i-го узла ti.
Определим неуправляемые переменные. В данной задаче неуправляемыми переменными являются значения коэффициентов траты ресурсов bi режимам испытаний, ai по агрегатам двигателя и интенсивность отказов агрегатов λi.
Количество агрегатов - 10.
Общий ресурс времени T = 100.
Зависимость надежности qi–го агрегата от времени его испытания ti имеет вид:
qi=1-ai*e^(-λi*ti)
Вероятность правильной работы всех агрегатов:
Q== → max
Ограничение времени испытаний:
Математическая модель сформулирована. Данная модель описывает задачу НЛП, т.к. целевая функция нелинейная, а все переменные действительные числа.
Для решения данной задачи был выбран метод динамического программирования (ДП). Это особый метод, который специально приспособлен для оптимизации динамических задач, в которых операция состоит из элементов, сильно влияющих друг на друга. ДП связано с именем Ричарда Беллмана, который сформулировал принцип оптимальности Беллмана. Он позволяет существенно сократить перебор решений в многоэтапных нелинейных задачах.
Назовем состоянием системы 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 и, как видно из таблиц констант, образуют оптимальную систему решения.
Проверка полученного решения производится с помощью программы GINO. GINO позволяет решать задачи НЛП. Входные параметры могут быть загружены с внешнего текстового файла.
Этапы решения задачи:
Итоговый текстовый файл:
MODEL:
1) MAX = (1-0.2/(exp(t1*0.9*0.1)))*(1-
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
Итоговый результата
Таким образом, оптимальное значение целевой функции равно 0,323928
Решение, полученной программой GINO совпадает с решением, полученным при программной реализации метода Беллмана.
листинг программы
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]);
}
1. Б.А. Есипов. Методы исследования операций. Санкт-Петербург, Москва, Краснодар, 2010 – 248 с.
2. Таха Хэмди А. Введение в исследование операций. 6-е изд. - М.: Изд. Дом «Вильямс», 2001. – 912 с.
3.Исследование операций в
4. Волков И.К., Загоруйко Е.А. Исследование операций: Учеб. пособие для вузов. 2-е изд./ Под ред. В.С.Зарубина, А.П. Крищенко. – М.: Изд-во МГТУ им. Н.Э.Баумана, 2002. – 436 с.
5. Пантелеев А.В. Методы оптимизации в примерах и задачах: Учеб. пособие / А.В.Пантелеев, Т.А. Летова – М.: Высш. шк., 2002.—544 с.
6. Акулич И.Л. Математическое
Информация о работе Исследование задачи распределения ресурса времени на испытание двигателей