РАЗРАБОТКА МАТЕМАТИЧЕСКОГО АЛГОРИТМА

Федеральное агентство по образованию РФ

Государственное образовательное учреждение

высшего профессионального образования

“Ижевский государственный технический университет”

Кафедра «Мехатронные системы»

 

Курсовая работа

Дисциплина: «Системный анализ и принятие решений»

 

Вариант №8

 

 

                                      

Выполнил: 

студент гр. 7-05-3

                                                                     Сувырина К.А.

                                                                       Проверил: 

преподаватель

Кравченко О.Е.

 

Ижевск 2011

СОДЕРЖАНИЕ

 

Техническое задание………………………...…………………………………..3

Введение…………………...…………………...………………………………...4

1. Разработка математического алгоритма…….………………………………7

2. Разработка схемы алгоритма ………..…………………………….………..11

3. Разработка программы……………..………………………………………..12

4. Сценарий диалога…………….…….………………………..…………........14

Заключение…………………………..…………………………………….........16

Литература…………………………..……………………..……………............16

Приложение А (обязательное) ………………………………………...............17

Приложение Б (обязательное)…………....…………………………………….24

Приложение В (обязательное)...…………………………………………..........25

 

 

 

 

ТЕХНИЧЕСКОЕ ЗАДАНИЕ

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

Типовой темой курсовой работы является разработка модели, алгоритма и программы для определения технического состояния объекта по его признакам.

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

 

 

ВВЕДЕНИЕ

Системный анализ — научный метод познания, представляющий собой последовательность действий по установлению структурных связей между переменными или элементами исследуемой системы. Опирается на комплекс общенаучных, экспериментальных, естественнонаучных, статистических, математических методов.

Системный анализ возник в эпоху разработки компьютерной техники. Успех его применения при решении сложных задач во многом определяется современными возможностями информационных технологий. Н.Н. Моисеев приводит, по его выражению, довольно узкое определение системного анализа: «Системный анализ — это совокупность методов, основанных на использовании ЭВМ и ориентированных на исследование сложных систем — технических, экономических, экологических и т.д. Результатом системных исследований является, как правило, выбор вполне определенной альтернативы: плана развития региона, параметров конструкции и т.д. Поэтому истоки системного анализа, его методические концепции лежат в тех дисциплинах, которые занимаются проблемами принятия решений: теории операций и общей теории управления».

Существо системного анализа

Ценность системного подхода состоит в том, что рассмотрение категорий системного анализа создает основу для логического и последовательного подхода к проблеме принятия решений. Эффективность решения проблем с помощью системного анализа определяется структурой решаемых проблем.

Классификация проблем

Согласно классификации, все проблемы подразделяются на три класса:

хорошо структурированные (well-structured), или количественно сформулированные проблемы, в которых существенные зависимости выяснены очень хорошо;

· неструктурированные (unstructured), или качественно выраженные проблемы, содержащие лишь описание важнейших ресурсов, признаков и характеристик, количественные зависимости между которыми совершенно неизвестны;

· слабо структурированные (ill-structured), или смешанные проблемы, которые содержат как качественные элементы, так и малоизвестные, неопределенные стороны, которые имеют тенденцию доминировать.

Для решения хорошо структурированных количественно выражаемых проблем используется известная методология исследования операций, которая состоит в построении адекватной математической модели (например, задачи линейного, нелинейного, динамического программирования, задачи теории массового обслуживания, теории игр и др.) и применении методов для отыскания оптимальной стратегии управления целенаправленными действиями.

Процедура принятия решений

Для решения слабо структурированных проблем используется методология системного анализа, системы поддержки принятия решений (СППР). Рассмотрим технологию применения системного анализа к решению сложных задач.

Процедура принятия решений согласно включает следующие основные этапы:

1. формулировка проблемной ситуации;

2. определение целей;

3. определение критериев достижения целей;

4. построение моделей для обоснования решений;

5. поиск оптимального (допустимого) варианта решения;

6. согласование решения;

7. подготовка решения к реализации;

8. утверждение решения;

9. управление ходом реализации решения;

10. проверка эффективности решения.

Для многофакторного анализа, алгоритм можно описать и точнее:

1. описание условий (факторов) существования проблем, И, ИЛИ и НЕ связывание между условиями;

2. отрицание условий, нахождение любых технически возможных путей. Для решения нужен хотя бы один единственный путь. Все И меняются на ИЛИ, ИЛИ меняются на И, а НЕ меняются на подтверждение, подтверждение меняется на НЕ-связывание;

3. рекурсивный анализ вытекающих проблем из найденных путей, т.е. п.1 и п.2 заново для каждой подпроблемы;

4. оценка всех найденных путей решений по критериям исходящих подпроблем, сведенным к материальной или иной общей стоимости.

 

 

РАЗРАБОТКА МАТЕМАТИЧЕСКОГО АЛГОРИТМА

Выделено полное пространство предпосылок Х из m = 5 факторов (причин), вызывающих неисправность электропривода, и полное пространство заключений Y – из n = 4 симптомов (проявлений) неисправностей электропривода: ; .

Между  и  существуют нечёткие причинные отношения . Все нечёткие отношения можно представить в виде матрицы R c 5 строками и 4 столбцами, т. е. существует матрица нечётких отношений

Конкретные входы (предпосылки) и выходы (заключения) системы можно рассматривать как нечёткие множества А и В на пространствах Х и Y. Обозначим отношения этих множеств как , где R – матрица, отражающая знания эксперта (экспертов) о влиянии факторов на симптомы; «°» - есть правило композиции нечётких выводов. Направление выводов является обратным к направлению входов для правил. То есть в случае диагностики R (знания эксперта) наблюдаются выходы В (симптомы) и определяются входы А (факторы).

Знания эксперта имеют вид:

          Пусть, например, ,

где первый столбец соответствует симптому ; второй столбец – симптому ; третий столбец – симптому , четвертый – симптому .

При этом причиной появления, например, симптома , является первый столбец факторов X ( ). Значения степеней соответствия напоминают собой вероятности (классические), но при этом не требуется, чтобы , т. е. сумма не должна обязательно равняться единице, как в классической теории вероятностей.

Пусть в результате поверхностного осмотра места аварии на некотором участке коммуникаций ГИК состояние этого участка оценивается экспертом как , т. е. симптом ,  имеет место со степенью соответствия . Например,

Требуется определить причину такого состояния:

Представим формулы для В и А в виде строк:

 

где  

Тогда

Формулу  можно представить в виде

или

или, транспонируя, в виде нечётких векторов-столбцов

где « » - операция максиминной (max-min) свёртки.

При этом вычисляется «произведение» вектора А и матрицы R, но вместо операции умножения выполняется операция взятия минимума (« » - min), а вместо операции сложения – выполняется операция взятия максимума (« » - max) соответственно.

Тогда (1) можно привести к виду:

 

Решим систему (2)-(5). В уравнении (2):

Из (3) получим:

    Из (4) получим:

Из (5) получим:

Таким образом, получаем решение:

т. е. лучше устранить фактор  (  – параметр, характеризующий проявление фактора  - параметр, характеризующий проявление фактора ).

Таким образом, задачу диагностики можно рассматривать как моделирование с помощью системы уравнений 1-го порядка, где дизъюнкция заменяется на максимум, а конъюнкция – на минимум.

На практике m и n могут принимать значения от нескольких единиц до нескольких десятков. Можно использовать несколько правил композиции нечётких выводов и могут быть построены 2- и 3-каскадные нечёткие системы принятия решений.

При этом решение будет получено как значение на отрезке (10), в результате чего можно предположить максимальное  и минимальное  решение.

В общем случае очевидно, что для композиции максимум-минимум существует единственное максимальное и несколько «меньших» решений. Таким образом, решение – это вектор значений, каждое из которых принадлежит некоторому отрезку (лежащему в интервале от 0 до 1).

Аналогичная модель может быть построена и для определения предпосылок, приводящих к появлению факторов (причин) предложенной выше модели диагностики. Например, можно выявить из-за чего возникает коррозия, разрыв трубы, построить соответствующую матрицу бинарных отношений R и снова применить правило композиции нечётких выводов.

Довольно часто из-за проявления субъективного человеческого фактора (незначительных ошибок эксперта) при оценивании состояния участка ГИК не удаётся получить точное решение для системы . В этом случае предлагается найти ближайшее («минимальное по сумме абсолютных отклонений от нуля для каждого из уравнений указанной выше системы) приближённое решение (или решения) системы  и принять или отклонить полученное приближённое (одно из приближенных решений).

Очевидно, что приемлемое приближенное решение должно незначительно (на 0.1-0.3 по сумме абсолютных отклонений) отличаться от точного решения системы . Если суммарное отклонение довольно большое (с точки зрения эксперта), следует предложить самому эксперту снова оценить состояние участка ГИК, так как очевидно, что при первом оценивании он ввёл противоречивые оценки состояния ГИК.

 

 

РАЗРАБОТКА СХЕМЫ АЛГОРИТМА

Блок - схема алгоритма работы программы представлена на рисунке 1.

 

Рисунок 1 – Блок - схема алгоритма работы программы.


РАЗРАБОТКА ПРОГРАММЫ

    Данная программа написана на языке программирования С++ в среде разработки MFC. MFC - это базовый набор (библиотека) классов, написанных на языке С++ и предназначенных для упрощения и ускорения процесса программирования для Windows. Библиотека содержит многоуровневую иерархию классов, насчитывающую около 200 членов. Они дают возможность создавать Windows-приложения на базе объектно-ориентированного подхода. С точки зрения программиста, MFC представляет собой каркас, на основе которого можно писать программы для Windows.

Одним из основных преимуществ работы с MFC является возможность многократного использования одного и того же кода. Так как библиотека содержит много элементов, общих для всех Windows-приложений, нет необходимости каждый раз писать их заново. Вместо этого их можно просто наследовать (говоря языком объектно-ориентированного программирования). Кроме того, интерфейс, обеспечиваемый библиотекой, практически независим от конкретных деталей, его реализующих. Поэтому программы, написанные на основе MFC, могут быть легко адаптированы к новым версиям Windows (в отличие от большинства программ, написанных обычными методами).

Еще одним существенным преимуществом MFC является упрощение взаимодействия с прикладным программным интерфейсом (API) Windows. Любое приложение взаимодействует с Windows через API, который содержит несколько сот функций. Внушительный размер API затрудняет попытки понять и изучить его целиком. Зачастую даже сложно проследить, как отдельные части API связанны друг с другом! Но поскольку библиотека MFC объединяет (путем инкапсуляции) функции API в логически организованное множество классов, интерфейсом становится значительно легче управлять.Поскольку MFC

представляет собой набор классов, написанных на языке С++, поэтому программы, написанные с использованием MFC, должна быть в то же время программами на С++. Для этого необходимо владеть соответствующими знаниями. Для начала необходимо уметь создавать собственные классы, понимать принципы наследования и уметь переопределять виртуальные функции. Хотя программы, использующие библиотеку MFC, обычно не содержат слишком специфических элементов из арсенала С++, для их написания тем не менее требуются солидные знания в данной области.

Программа является графическим редактором, в котором можно рисовать графические примитивы, открывать и сохранять файлы и накладывать фильтры на изображение. Текст программы построения представлен в приложении А.

 

СЦЕНАРИЙ ДИАЛОГА

    После запуска приложения появится диалоговое окно, через которое осуществляется связь программы с пользователем. Пользователь вводит в нем экспертную матрицу, выбирает один из анализируемых параметров. Виды диалоговых окон представлены на рисунке 2,3,4.


Рисунок 2 – Вариант диалоговое окна №1


Рисунок 3 – Вариант диалоговое окна №2


Рисунок 4 – Вариант диалоговое окна №3

ЗАКЛЮЧЕНИЕ

        В ходе выполнения данного курсового проекта была разработана алгоритм и программа для определения технического состояния объекта по его признакам. В соответствии с этой моделью был разработан алгоритм реализации этой модели программными средствами, в результате чего написана программа на языке С++ с применением библиотек классов MFC. Разработанная программа соответствует заданным на этапе проектирования требованиям. В ходе проведения вычислительного эксперимента программа сбоев не давала, результаты подтверждались проверочными расчетами. Ехе-файл проекта занимает 184 Кб.

 

ЛИТЕРАТУРА

1. Дэн Гукин С ,2-е издание. – М.: Диалектика, 2006. – 355с.

2. Каев Артем «MFC. Шаг за шагом» – http://www.firststeps.ru/

3. Никитин Ю.Р. Методическое пособие к выполнению курсовой работы по дисциплине «Системный анализ и принятие решений»: Учеб. пособие. – Ижевск: Изд-во ИжГТУ, 2009.- 8 с.

 

4. ГОСТ 19.504-79 (СТ СЭВ 2095-80). Руководство программиста. Требования к содержанию и оформлению.

5. ГОСТ 19.701-90 (ИСО 5807-85). Схемы алгоритмов, программ, данных и систем.

 

ПРИЛОЖЕНИЕ А

(обязательное)

Текст программы

 

// dlkDlg.cpp : файл реализации

#include "stdafx.h"

#include "dlk.h"

#include "dlkDlg.h"

#include "afxdialogex.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#endif

 

// Диалоговое окно CAboutDlg используется для описания сведений о приложении

 

class CAboutDlg : public CDialogEx

{

public:

CAboutDlg();

 

// Данные диалогового окна

enum { IDD = IDD_ABOUTBOX };

 

protected:

virtual void DoDataExchange(CDataExchange* pDX); // поддержка DDX/DDV

 

// Реализация

protected:

DECLARE_MESSAGE_MAP()

};

 

CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD)

{

}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)

{

CDialogEx::DoDataExchange(pDX);

}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)

END_MESSAGE_MAP()

// диалоговое окно CdlkDlg

CdlkDlg::CdlkDlg(CWnd* pParent /*=NULL*/)

: CDialogEx(CdlkDlg::IDD, pParent)

, m_x11(0)

, m_x12(0)

, m_x13(0)

, m_x21(0)

, m_x14(0)

, m_x22(0)

, m_x23(0)

, m_x24(0)

, m_x31(0)

, m_x32(0)

, m_x33(0)

, m_x34(0)

, m_x41(0)

, m_x42(0)

, m_x43(0)

, m_x44(0)

, m_x51(0)

, m_x52(0)

, m_x53(0)

, m_x54(0)

, m_r1(0)

, m_r2(0)

, m_r3(0)

, m_r4(0)

{

m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

}

 

void CdlkDlg::DoDataExchange(CDataExchange* pDX)

{

CDialogEx::DoDataExchange(pDX);

DDX_Text(pDX, IDC_EDIT8, m_x11);

DDX_Text(pDX, IDC_EDIT12, m_x12);

DDX_Text(pDX, IDC_EDIT16, m_x13);

DDX_Text(pDX, IDC_EDIT20, m_x21);

DDX_Text(pDX, IDC_EDIT10, m_x14);

DDX_Text(pDX, IDC_EDIT14, m_x22);

DDX_Text(pDX, IDC_EDIT18, m_x23);

DDX_Text(pDX, IDC_EDIT22, m_x24);

DDX_Text(pDX, IDC_EDIT9, m_x31);

DDX_Text(pDX, IDC_EDIT13, m_x32);

DDX_Text(pDX, IDC_EDIT17, m_x33);

DDX_Text(pDX, IDC_EDIT21, m_x34);

DDX_Text(pDX, IDC_EDIT7, m_x41);

DDX_Text(pDX, IDC_EDIT11, m_x42);

DDX_Text(pDX, IDC_EDIT15, m_x43);

DDX_Text(pDX, IDC_EDIT19, m_x44);

DDX_Text(pDX, IDC_EDIT23, m_x51);

DDX_Text(pDX, IDC_EDIT24, m_x52);

DDX_Text(pDX, IDC_EDIT25, m_x53);

DDX_Text(pDX, IDC_EDIT26, m_x54);

DDX_Text(pDX, IDC_EDIT4, m_r1);

DDX_Text(pDX, IDC_EDIT6, m_r2);

DDX_Text(pDX, IDC_EDIT5, m_r3);

DDX_Text(pDX, IDC_EDIT3, m_r4);

}

 

BEGIN_MESSAGE_MAP(CdlkDlg, CDialogEx)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_BN_CLICKED(IDOK, &CdlkDlg::OnBnClickedOk)

ON_BN_CLICKED(IDC_BUTTON1, &CdlkDlg::OnBnClickedButton1)

END_MESSAGE_MAP()

 

// обработчики сообщений CdlkDlg

 

BOOL CdlkDlg::OnInitDialog()

{

CDialogEx::OnInitDialog();

 

// Добавление пункта "О программе..." в системное меню.

 

// IDM_ABOUTBOX должен быть в пределах системной команды.

ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX < 0xF000);

 

CMenu* pSysMenu = GetSystemMenu(FALSE);

if (pSysMenu != NULL)

{

       BOOL bNameValid;

       CString strAboutMenu;

       bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);

       ASSERT(bNameValid);

       if (!strAboutMenu.IsEmpty())

       {

             pSysMenu->AppendMenu(MF_SEPARATOR);

             pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);

       }

}

// Задает значок для этого диалогового окна. Среда делает это автоматически,

// если главное окно приложения не является диалоговым

SetIcon(m_hIcon, TRUE);       // Крупный значок

SetIcon(m_hIcon, FALSE);      // Мелкий значок

 

// TODO: добавьте дополнительную инициализацию

 

return TRUE; // возврат значения TRUE, если фокус не передан элементу управления

}

 

void CdlkDlg::OnSysCommand(UINT nID, LPARAM lParam)

{

if ((nID & 0xFFF0) == IDM_ABOUTBOX)

{

       CAboutDlg dlgAbout;

       dlgAbout.DoModal();

}

else

{

       CDialogEx::OnSysCommand(nID, lParam);

}

}

 

// При добавлении кнопки свертывания в диалоговое окно нужно воспользоваться приведенным ниже кодом,

// чтобы нарисовать значок. Для приложений MFC, использующих модель документов или представлений,

// это автоматически выполняется рабочей областью.

 

void CdlkDlg::OnPaint()

{

if (IsIconic())

{

       CPaintDC dc(this); // контекст устройства для рисования

 

       SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

 

       // Выравнивание значка по центру клиентского прямоугольника

       int cxIcon = GetSystemMetrics(SM_CXICON);

       int cyIcon = GetSystemMetrics(SM_CYICON);

       CRect rect;

       GetClientRect(&rect);

       int x = (rect.Width() - cxIcon + 1) / 2;

       int y = (rect.Height() - cyIcon + 1) / 2;

 

       // Нарисуйте значок

       dc.DrawIcon(x, y, m_hIcon);

}

else

{

       CDialogEx::OnPaint();

}

}

 

// Система вызывает эту функцию для получения отображения курсора при перемещении

// свернутого окна.

HCURSOR CdlkDlg::OnQueryDragIcon()

{

return static_cast<HCURSOR>(m_hIcon);

}

void CdlkDlg::OnBnClickedOk()

{

// TODO: добавьте свой код обработчика уведомлений

UpdateData(true);

double A[6], mas[6],res[6],var[6],max;int i,n,j,n_max=1,V;

if(IsDlgButtonChecked(IDC_RADIO1))

{

mas[0]=m_x11;mas[1]=m_x21;mas[2]=m_x31;mas[3]=m_x41;mas[4]=m_x51;

max=mas[0];n=0;

for(i=0;i<4;i++)

{

           

       if(mas[i]<mas[i+1])

       {n=i;}

}

res[0]=mas[n];

mas[0]=m_x12;mas[1]=m_x22;mas[2]=m_x32;mas[3]=m_x42;mas[4]=m_x52;

max=mas[0];n=0;

for(i=0;i<4;i++){

           

       if(mas[i]<mas[i+1])

       {n=i;}

}

res[1]=mas[n];

mas[0]=m_x13;mas[1]=m_x23;mas[2]=m_x33;mas[3]=m_x43;mas[4]=m_x53;

max=mas[0];n=0;

for(i=0;i<4;i++)

{          

       if(mas[i]<mas[i+1])

       {n=i;}

}

res[2]=mas[n];

mas[0]=m_x14;mas[1]=m_x24;mas[2]=m_x34;mas[3]=m_x44;mas[4]=m_x54;

max=mas[0];n=0;

for(i=0;i<4;i++) {

           

       if(mas[i]<mas[i+1])

       {n=i;}

}

res[3]=mas[n];

 

var[0]=m_x11;var[1]=m_x12;var[2]=m_x13;var[3]=m_x14;

for(i=0;i<4;i++)

{

if(var[i]<res[i])

       {res[i]=var[i];}       

}    

for(j=0,V=0;j<3;j++)

       { if(res[V]<res[j+1])

             {V=j+1;}

       }

m_r1=res[0];

m_r2=res[1];

m_r3=res[2];

m_r4=res[3];

V++;

}

if(IsDlgButtonChecked(IDC_RADIO2))

{

mas[0]=m_x11;mas[1]=m_x21;mas[2]=m_x31;mas[3]=m_x41;mas[4]=m_x51;

max=mas[0];n=0;

for(i=0;i<4;i++)

{

           

       if(mas[i]<mas[i+1])

       {n=i;}

}

res[0]=mas[n];

mas[0]=m_x12;mas[1]=m_x22;mas[2]=m_x32;mas[3]=m_x42;mas[4]=m_x52;

max=mas[0];n=0;

for(i=0;i<4;i++) {

           

       if(mas[i]<mas[i+1])

       {n=i;}

}

res[1]=mas[n];

mas[0]=m_x13;mas[1]=m_x23;mas[2]=m_x33;mas[3]=m_x43;mas[4]=m_x53;

max=mas[0];n=0;

for(i=0;i<4;i++)

{

           

       if(mas[i]<mas[i+1])

       {n=i;}

}

res[2]=mas[n];

mas[0]=m_x14;mas[1]=m_x24;mas[2]=m_x34;mas[3]=m_x44;mas[4]=m_x54;

max=mas[0];n=0;

for(i=0;i<4;i++) {

           

       if(mas[i]<mas[i+1])

       {n=i;}

}

res[3]=mas[n];

var[0]=m_x21;var[1]=m_x22;var[2]=m_x23;var[3]=m_x24;

for(i=0;i<4;i++)

{

       if(var[i]<res[i])

       {res[i]=var[i];}       

}    

for(j=0,V=0;j<3;j++)

       { if(res[V]<res[j+1])

             {V=j+1;}

       }

m_r1=res[0];

m_r2=res[1];

m_r3=res[2];

m_r4=res[3];

V++;

}

if(IsDlgButtonChecked(IDC_RADIO3))

{

mas[0]=m_x11;mas[1]=m_x21;mas[2]=m_x31;mas[3]=m_x41;mas[4]=m_x51;

max=mas[0];n=0;

for(i=0;i<4;i++)

{          

       if(mas[i]<mas[i+1])

       {n=i;}

}

res[0]=mas[n];

mas[0]=m_x12;mas[1]=m_x22;mas[2]=m_x32;mas[3]=m_x42;mas[4]=m_x52;

max=mas[0];n=0;

for(i=0;i<4;i++)

{    

       if(mas[i]<mas[i+1])

       {n=i;}

}

res[1]=mas[n];

mas[0]=m_x13;mas[1]=m_x23;mas[2]=m_x33;mas[3]=m_x43;mas[4]=m_x53;

max=mas[0];n=0;

for(i=0;i<4;i++)

{

           

       if(mas[i]<mas[i+1])

       {n=i;}

}

res[2]=mas[n];

mas[0]=m_x14;mas[1]=m_x24;mas[2]=m_x34;mas[3]=m_x44;mas[4]=m_x54;

max=mas[0];n=0;

for(i=0;i<4;i++)

{

       if(mas[i]<mas[i+1])

       {n=i;}

}

res[3]=mas[n];

 

     

 

var[0]=m_x31;var[1]=m_x32;var[2]=m_x33;var[3]=m_x34;

for(i=0;i<4;i++)

{

       if(var[i]<res[i])

       {res[i]=var[i];}       

}    

for(j=0,V=0;j<3;j++)

       {    

              if(res[V]<res[j+1])

             {V=j+1;}

       }

m_r1=res[0];

m_r2=res[1];

m_r3=res[2];

m_r4=res[3]; V++;

}

if(IsDlgButtonChecked(IDC_RADIO4))

{

       mas[0]=m_x11;mas[1]=m_x21;mas[2]=m_x31;mas[3]=m_x41;mas[4]=m_x51;

max=mas[0];n=0;

for(i=0;i<4;i++)

{

       if(mas[i]<mas[i+1])

       {n=i;}

}

res[0]=mas[n];

mas[0]=m_x12;mas[1]=m_x22;mas[2]=m_x32;mas[3]=m_x42;mas[4]=m_x52;

max=mas[0];n=0;

for(i=0;i<4;i++)

{

       if(mas[i]<mas[i+1])

       {n=i;}

}

res[1]=mas[n];

mas[0]=m_x13;mas[1]=m_x23;mas[2]=m_x33;mas[3]=m_x43;mas[4]=m_x53;

max=mas[0];n=0;

for(i=0;i<4;i++)

{

       if(mas[i]<mas[i+1])

       {n=i;}

}

res[2]=mas[n];

mas[0]=m_x14;mas[1]=m_x24;mas[2]=m_x34;mas[3]=m_x44;mas[4]=m_x54;

max=mas[0];n=0;

for(i=0;i<4;i++)

{

       if(mas[i]<mas[i+1])

       {n=i;}

}

res[3]=mas[n];

var[0]=m_x41;var[1]=m_x42;var[2]=m_x43;var[3]=m_x44;

for(i=0;i<4;i++)

{

       if(var[i]<res[i])

       {res[i]=var[i];}       

}    

for(j=0,V=0;j<3;j++)

       { if(res[V]<res[j+1])

             {V=j+1;}

       }

m_r1=res[0];

m_r2=res[1];

m_r3=res[2];

m_r4=res[3]; V++;

}

if(IsDlgButtonChecked(IDC_RADIO5))

{

       mas[0]=m_x11;mas[1]=m_x21;mas[2]=m_x31;mas[3]=m_x41;mas[4]=m_x51;

max=mas[0];n=0;

for(i=0;i<4;i++)

{          

       if(mas[i]<mas[i+1])

       {n=i;}

}

res[0]=mas[n];

mas[0]=m_x12;mas[1]=m_x22;mas[2]=m_x32;mas[3]=m_x42;mas[4]=m_x52;

max=mas[0];n=0;

for(i=0;i<4;i++)

{

       if(mas[i]<mas[i+1])

       {n=i;}

}

res[1]=mas[n];

mas[0]=m_x13;mas[1]=m_x23;mas[2]=m_x33;mas[3]=m_x43;mas[4]=m_x53;

max=mas[0];n=0;

for(i=0;i<4;i++)

{

       if(mas[i]<mas[i+1])

       {n=i;}

}

res[2]=mas[n];

mas[0]=m_x14;mas[1]=m_x24;mas[2]=m_x34;mas[3]=m_x44;mas[4]=m_x54;

max=mas[0];n=0;

for(i=0;i<4;i++)

{

       if(mas[i]<mas[i+1])

       {n=i;}

}

res[3]=mas[n];

var[0]=m_x51;var[1]=m_x52;var[2]=m_x53;var[3]=m_x54;

for(i=0;i<4;i++)

{

       if(var[i]<res[i])

       {res[i]=var[i];}       

}    

for(j=0,V=0;j<3;j++)

       { if(res[V]<res[j+1])

             {V=j+1;}

       }

m_r1=res[0];

m_r2=res[1];

m_r3=res[2];

m_r4=res[3];

V++;

}

UpdateData(false);

OnPaint();

}

//CDialogEx::OnOK();

//}

void CdlkDlg::OnBnClickedButton1()

{

// TODO: добавьте свой код обработчика уведомлений

MessageBox(_T("Программа разработана студентом гр.7-05-3 Сувыриной Ксенией Андреевной"));

}

 

ПРИЛОЖЕНИЕ Б

(обязательное)

РУКОВОДСТВО ОПЕРАТОРА

    Программа представляет собой графический редактор. Исполняемый файл называется «kurs_saipr.exe». При запуске программы перед вами возникает диалоговое окно. Окна представлены на рисунках 2,3.

1) Для запуска программы нужно запустить файл kurs_saipr.exe.

2) Данные вводятся в поле экспертной матрицы.

3) Далее выбирается один из исследуемых факторов, для этого нужно отметить какой-либо из «радиобаттонов».

4) Для проведения расчета нужно нажать на кнопку «ОК».

5) Если все сделано верно, на экране отобразятся результаты.

6) Чтобы узнать информацию о разработчике программы, необходимо нажать на кнопку «Разработчик».

7) Для завершения работы следует нажать кнопку “Отмена”.

 

ПРИЛОЖЕНИЕ В

(обязательное)

РУКОВОДСТВО ПРОГРАММИСТА

    Данная программа предназначена для расчета балок определенно типа. Программа разработана в Microsoft Visual Studio 2010 в среде программирования MFC (Microsoft Foundation Classes), и предназначена для операционной системы Microsoft Windows 98/XP/Vista/ 7, с предустановленной Microsoft .NET Framework 2.0. Программа имеет диалоговый интерфейс.

Описание функций:

1. OnPaint ();

Создание хендела  окна.

Входные параметры: нет

Выходные параметры: нет.

Связи: функции API.

Результат: создание области рисования.

2. OnBnClickedOk ();

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

Входные параметры: экспертная матрица.

Выходные параметры: данные о вероятности проявления симптомов.

Связи: нет.

Результат: получение по выходным параметрам входных.

 


Дата добавления: 2018-04-04; просмотров: 294; Мы поможем в написании вашей работы!

Поделиться с друзьями:




Мы поможем в написании ваших работ!