Круговая диаграмма принятия решений (паутинная диаграмма)

Контрольная работа - Компьютеры, программирование

Другие контрольные работы по предмету Компьютеры, программирование

 

 

 

 

 

 

 

 

 

 

 

 

 

Пояснительная записка

по дисциплине Теория принятия решений

Тема: Круговая диаграмма принятия решений (Паутинная диаграмма)

 

Оглавление

 

1. Постановка задачи

. Краткие теоретические сведения

. Реализация программного средства

.1 Проектирование

.2 Листинг программного кода

. Пример работы программы

Выводы

Используемые программные средства

 

1. Постановка задачи

 

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

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

 

2. Краткие теоретические сведения

 

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

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

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

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

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

программа паутинный диаграмма

3. Реализация программного средства

 

Среда разработки: Visual Studio 2008

Язык программирования: C#

 

3.1 Проектирование

 

При проектировании программного средства будем использовать объектно-ориентированный подход.

Список классов с кратким описанием:

1)Form.cs - это главное окно, служит для ввода данных, запуска работы программы, вывода диаграмм, ввода настроек, содержит метод подсчета площади многоугольников.

2)Reader.cs - это класс содержит методы, реализующие сохранение данных в файл.

3)Settings.cs - класс настроек визуализации программы.

4)Writer.cs - класс содержит методы реализующие чтение данных из файла.

 

3.2 Листинг программного кода

class Settings

{bool legend;bool axis;bool pipki;int pipkiSize;bool countSum;

Settings()

{= false;= false;= false;= 0;= false;

}Settings(bool leg, bool ax, bool pip, int pipSize, bool sum)

{= leg;= ax;= pip;= pipSize;= sum;

}

bool getCountSum()

{countSum;

}void setCountSum(bool sum)

{= sum;

}int getPipSize()

{pipkiSize;

}void setPipSize(int size)

{= size;

}bool getPipki()

{pipki;

}void setPipki(bool pip)

{= pip;

}bool getLegend()

{legend;

}bool getAxis()

{axis;

}void setLegend(bool leg)

{= leg;

}void setAxis(bool ax)

{= ax;

}

 

public class Reader

{string fileName;string[] inputTxt;double[,] matrix;double[,] table;int rows;int cols;System.Globalization.NumberFormatInfo numberFormat;

Reader(string name)

{= name;

}

void ReadTable(out double[,] table)

{= new System.Globalization.NumberFormatInfo();.CurrencyDecimalSeparator = ".";

//забираем весь текст из файла по строкам[] fullText = File.ReadAllLines(fileName);

 

//забираем первую строку в массив по строкам разделенным пробелом[] aloneString = fullText[0].Split(new char[] { ' ' });

 

//массив куда будут помещены значения файла= new double[fullText.Length, aloneString.Length];

//double[,] temp = new double[fullText.Length, aloneString.Length];

(int i = 0; i < aloneString.Length; i++)

{[0, i] = double.Parse(aloneString[i], numberFormat);

}

(int i = 1; i < fullText.Length; i++)

{= fullText[i].Split(new char[] { ' ' });(int j = 0; j < aloneString.Length; j++)

{[i, j] = double.Parse(aloneString[j], numberFormat);

}

 

}

}

 

}

 

public static class Writer

{static string fileName;static string[] inputTxt;static double[,] matrix;

static int rows;static int cols;static System.Globalization.NumberFormatInfo numberFormat;

Writer()

{= new System.Globalization.NumberFormatInfo();.CurrencyDecimalSeparator = ".";

}

static void WriteTable(string nameFile, double[,] table)

{.fileName = nameFile;.matrix = table;

(Writer.matrix != null)

{= matrix.GetLength(0);= matrix.GetLength(1);= new string[rows];

(int i = 0; i < rows; i++)

{(int j = 0; j < cols; j++)

{[i] += matrix[i, j].ToString("0.0000", numberFormat);(j < cols - 1)

{[i] += " ";

}

}

}.WriteAllLines(nameFile, inputTxt);

}

}

 

}

public partial class Form1 : Form

{

 

bm;

bool goodGo = false;

//число кусков (критериев)float countOfPie;

//угол для кусковfloat degrees;

//число целейint aims;

//таблица весовDouble[,] tables;double[,] fromFileTable;static int rows;static int cols;

//не верно заполненные рядыint[] wrongRows;cR = 0, cG =0, c