Технический контроль и диагностика систем ЛА

Автор работы: Пользователь скрыл имя, 04 Мая 2013 в 20:35, курсовая работа

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

Python поддерживает несколько парадигм программирования, в том числе структурное, объектно-ориентированное, функциональное, императивное и аспектно-ориентированное. Основные архитектурные черты — динамическая типизация, автоматическое управление памятью, полная интроспекция, механизм обработки исключений, поддержка многопоточных вычислений и удобные высокоуровневые структуры данных. Код в Питоне организовывается в функции и классы, которые могут объединяться в модули (которые в свою очередь могут быть объединены в пакеты).

Содержание

Программное обеспечение……………………………………………………………………………………………………3

Систематизация процесса контроля в условиях ограничений частичной упорядоченности……………………………………………………………………………………………………………………4
Теоретическая часть……………………………………………………………………………………………………..4
Практическая часть……………………………………………………………………………………………………….7
Выводы……………………………………………………………………………………………………………………….18

Определение количества повторных измерений контролируемых параметров оптимального по критерию максимума достоверности результатов……………………………….19
Теоретическая часть……………………………………………………………………………………………………19
Практическая часть…………………………………………………………………………………………………….20
Выводы……………………………………………………………………………………………………………………….24

Список используемой литературы………………………………………………………………………………………25

Вложенные файлы: 1 файл

Отчет.docx

— 426.45 Кб (Скачать файл)

 

Найти:

Необходимо  рассчитать оптимальное количество повторных измерений контролируемых параметров для двух задач.

    1. Суммарное время измерения контролируемых параметров не должно превышать 5 минут.
    2. Достоверность результатов контроля данного объекта должна быть не менее 0.992.

 

 

 

 

 

 

 

Решение:

Работоспособность объекта характеризуется пятью  параметрами, которые запишем в таблицу №7.

Таблица №7. Параметры, определяющие работоспособность объекта контроля

№ параметров

     

ti(c)

pi(1)

1

2

3

4

5

±5,0

±0,3

±0,2

±0,1

±0,5

±2,00

±0,03

±0,06

±0,05

±0,1

0.4

0.1

0.3

0.5

0.2

30

15

50

20

5

0,99419

0,99893

0,99634

0,99110

0,99784


 

Для каждого  параметра вычисляется значение Ψi (ni) по формуле:

 

 

Постоянно выбирается наибольшее значение Ψi (ni).

Для n1 все Ψi (n1) равны нулю.

На основании  таблицы №6 получим следующие  значения:

 

 

 

 

 

Наибольшим  является , поэтому далее вычислим

 

Следующим наибольшим является , поэтому далее вычислим

 

Все следующие  действия выполнялись с помощью программного алгоритма.

Результат представлен в таблице № 8.

 

 

Таблица № 8

ni

Ψ1 (ni)

N

Ψ2 (ni)

N

Ψ3 (ni)

N

Ψ4 (ni)

N

Ψ5 (ni)

N

1

-

-

-

-

-

-

-

-

-

-

2

0.0000838

3

0.0000247

11

0.0000283

8

0.0002134

1

0.0001503

2

3

0.0000264

10

-

 

-

 

0.0000623

4

0.0000541

5

4

0.0000124

15

-

 

-

 

0.0000286

7

0.0000300

6

5

-

 

-

 

-

 

0.0000211

12

0.0000280

9

6

-

 

-

 

-

-

0.0000120

16

0.0000160

13

7

-

 

-

 

-

-

-

-

0.0000160

14


 

Цифры в  графе N таблица №8 означают, на каком номере этапа должно быть добавлено одно повторное измерение i-го параметра.

Для каждого  этапа по формулам:

 

 

последовательно вычислим значения P(N) и T(N), которые впишем в таблицу №9.

 

Таблица №9

N

n1

n2

n3

n4

n5

Р(N)

T(N)

1

1

1

1

2

1

0.98274

2 мин 20 сек

2

1

1

1

2

2

0.98348

2 мин 25сек

3

2

1

1

2

2

0.98595

2 мин 55сек

4

2

1

1

3

2

0.98718

3 мин 15сек

5

2

1

1

3

3

0.98745

3 мин 20сек

6

2

1

1

3

4

0.98760

3 мин 25сек

7

2

1

1

4

4

0.98816

3 мин 45сек

8

2

1

2

4

4

0.98956

4 мин 35сек

9

2

1

2

4

5

0.98970

4 мин 40сек

10

3

1

2

4

5

0.99048

5 мин 10сек

11

3

2

2

4

5

0.99085

5 мин 25сек

12

3

2

2

5

5

0.99127

5 мин 45сек

13

3

2

2

5

6

0.99135

5 мин 50сек

14

3

2

2

5

7

0.99143

5 мин 55сек

15

4

2

2

5

7

0.99180

6 мин 25сек

16

4

2

2

6

7

0.99203

6 мин 45сек


    1. Оптимальным количеством повторных измерений контролируемых параметров для задачи, в которой суммарное время измерений не должно превышать 5 минут, является следующий набор: n1=2, n2=1, n3=2, n4=4, n5=5, при этом максимальная достоверность результатов равна 0.98970, а суммарное измерение равно 4 мин 40сек.
    2. Оптимальным количеством повторных измерений контролируемых параметров для задачи, в которой достоверность результатов контроля должна быть не менее 0.992 является следующий набор: n1=4, n2=2, n3=2, n4=6, n5=7, при этом достоверность результатов контроля равна 0.99203, а суммарное время измерения равно 6 мин 45сек.

 

Таким образом, заданным ограничениям удовлетворяют  по времени набор параметров, соответствующих  строке 9, по достоверности – 16 в  таблице №9.

Наряду  с ручным расчетом, решение задачи реализовано с помощью программного алгоритма, написанного на языке  Python версии 2.7. Листинг программы представлен в приложении 2 (c. 53).

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

$ python main2.py

N      n     Ψ max

1       2       4       0.00021340

2       2       5       0.00015032

3       2       1       0.00008382

4       3       4       0.00006229

5       3       5       0.00005408

6       4       5       0.00003003

7       4       4       0.00002860

8       2       3       0.00002830

9       5       5       0.00002803

10      3       1       0.00002642

11      2       2       0.00002469

12      5       4       0.00002106

13      6       5       0.00001601

14      7       5       0.00001601

15      4       1       0.00001236

16      6       4       0.00001203

N       n1      n2      n3      n4      n5      P(N)            T(N)

1       1       1       1       2       1       0.98274         2 мин 20сек

2       1       1       1       2       2       0.98348         2 мин 25сек

3       2       1       1       2       2       0.98595         2 мин 55сек

4       2       1       1       3       2       0.98718         3 мин 15сек

5       2       1       1       3       3       0.98745         3 мин 20сек

6       2       1       1       3       4       0.98760         3 мин 25сек

7       2       1       1       4       4       0.98816         3 мин 45сек

8       2       1       2       4       4       0.98956         4 мин 35сек

9       2       1       2       4       5       0.98970         4 мин 40сек

10      3       1       2       4       5       0.99048         5 мин  10сек

11      3       2       2       4       5       0.99085         5 мин 25сек

12      3       2       2       5       5       0.99127         5 мин 45сек

13      3       2       2       5       6       0.99135         5 мин 50сек

14      3       2       2       5       7       0.99143         5 мин 55сек

15      4       2       2       5       7       0.99180         6 мин 25сек

16      4       2       2       6       7       0.99203         6 мин 45сек

n Ψ1(ni)  Ψ2(ni)  Ψ3(ni)  Ψ4(ni)  Ψ5(ni)

1 ---------  ---------  ---------  ---------  --------- 

2       0.0000838          0.0000247          0.0000283          0.0002134       0.0001503

3       0.0000264                ---------              ---------              0.0000623       0.0000541

4       0.0000124                ---------               ---------              0.0000286       0.0000300

5          ---------                   ---------               ---------              0.0000211       0.0000280

6            ---------                   ---------               ---------              0.0000120       0.0000160

7            ---------                   ---------               ---------                  ---------         0.0000160

 

 

 

 

 

 

Вывод

Спроектированная  таким образом система автоматизированного  контроля удовлетворяет требуемой  достоверности результатов контроля и времени проведения проверок.

Результаты  ручного решения задачи идентичны  результатам, полученным с помощью созданного программного алгоритма.

 

 

 

 

 

 

 

 

Список используемой литературы

  1. Пискунов В.А. Курс лекций и лабораторных работ по дисциплине “Контроль и диагностика систем ЛА”.
  2. Пискунов В.А. Учебное пособие “Комбинаторные методы дискретной оптимизации в прикладных задачах организации контроля систем ЛА”.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Приложение 1

Листинг программы на языке Python 2.7

# -*- coding: utf-8 -*-

import sys

import copy

import matplotlib.pyplot as plt

import networkx as nx

 

solve_table = ''

S = 0

 

class Node:

    """Узел графа"""

    def __init__(self, number, tau=0):

        self.number = number  # номер узла

        self.tau = tau  # вес узла

        self.Toc = 0

        self.childs = []  # узлы-потомки

        self.childs_numbers = []  # номер узлов-потомков

        self.parents = []  # узлы-родители

        self.parents_numbers = []  # номера узлов-родителей

 

    def set_child(self, child):  # mass - это t между узлами

        """Добавить к узлу потомков"""

        #TODO добавить проверку типа

 

        self.childs.append(child)  # добавляем потомка

        self.childs_numbers.append(child.number)  # добавляем номер потомка

        child.set_parent(self)  # добавляем потомку родителя

 

    def del_childs(self):

        self.childs = []

        self.childs_numbers = []

 

    def set_parent(self, parent):

        """Добавить к узлу родителя"""

        #TODO добавить проверку типа

        self.parents.append(parent)  # Добавляем родителя

        self.parents_numbers.append(parent.number)  # Добавляем номер родителя

 

def display_graph(graph):

    """Выводит граф на экран"""

    for node in graph:

        sys.stdout.write(

            "Number: " + str(node.number) + "\tTau: " + str(node.tau))

 

        sys.stdout.write("\tParents:")

        if len(node.parents):

            for parent in node.parents:

                sys.stdout.write("\t\t", parent.number)

        else:

            sys.stdout.write("\t\tNone")

 

        sys.stdout.write("\tChilds:")

        if len(node.childs):

            for child in node.childs:

                sys.stdout.write("\t\t", child.number)

        else:

            sys.stdout.write("\t\tNone")

 

def draw_graph(graph):

    gr = nx.Graph()

    for i in graph:

        for j in i.childs:

            gr.add_edge(str(i.number), str(j.number))

    pos = nx.spring_layout(gr)

    colors = range(20)

    nx.draw(gr, pos, node_size=700, node_color='#A0CBE2', width=4,

            edge_cmap=plt.cm.Blues, with_labels=True)

    file_name = "graph.png"

    plt.savefig(file_name)  # save as png

    sys.stdout.write('Рисунок ' + file_name + ' сохранен\n')

    # plt.show() # display

 

def make_tree(graph):

    """Функция для построения дерева"""

    tree = Node(0)

    tree.set_parent(Node(0))

    make_next_node(tree, graph)

    return tree

 

def make_next_node(tree, graph):

    """Рекурсивная функция для вычисления потомков узла"""

    possible_next_nodes = copy.copy(

        graph)  # с самого начала все узлы могут быть следующими

 

    for i in tree.parents_numbers:

        possible_next_nodes[i] = None  # отсекаем уже использованные узлы

 

    for possible_node in range(len(possible_next_nodes)):  # цикл по всем возможным следующим узлам

        if possible_next_nodes[possible_node] is not None:

            for parents_number in possible_next_nodes[possible_node].parents_numbers:  # цикл по всем родителям узла

                if not parents_number in tree.parents_numbers:  # если родитель узла еще не был в дереве, то мы этот узел пока использовать не можем

                    possible_next_nodes[possible_node] = None

                    break  # если хотя бы одного родителя нет, то дальше и проверять не стоит

 

    for possible_node in range(len(possible_next_nodes)):  # цикл по всем возможным следующим узлам

        if possible_next_nodes[possible_node] is not None:

            tree.set_child(Node(possible_node))

    for child in tree.childs:  # добавим каждому потомку родителей родителя

        child.parents = copy.copy(tree.parents)

        child.parents_numbers = copy.copy(tree.parents_numbers)

 

        child.set_parent(

            Node(child.number))  # не забываем добавить самого себя

    for child in tree.childs:

        make_next_node(child, graph)  # рекурсивно пробегаем по всем потомкам

 

def display_tree(tree, tab=0):

    """Функция вывода дерева"""

    sys.stdout.write(tab * '\t' + str(tree.number) + '\n')

    for i in tree.childs:

Информация о работе Технический контроль и диагностика систем ЛА