Система поддержки принятия решений по выбору тура

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

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 29.09.2016
Размер файла 986,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

//

InputClientValues();

// Рассчитываем веса для критериев

//

CalculateCriteriaWeights();

// Рассчитываем веса для значений критериев

//

foreach (Criteria criteria in _criterias)

{

CalculateValueWeights(criteria);

Console.WriteLine(string.Format("Вес критерия {0}: {1}", criteria.Name, criteria.Weight.ToString() + Environment.NewLine));

foreach (CriteriaValue cvalue in criteria.Values)

{

Console.WriteLine(string.Format("Вес значения {0}: {1}", cvalue.Name, cvalue.Weight.ToString() + Environment.NewLine));

}

}

_alternatives.Sort(new AlternativeComparer());

Console.WriteLine("____________________________________________________" + Environment.NewLine);

for (int i = _alternatives.Count-1; i >= 0; i--)

{

Altarnative alt = _alternatives[i];

CalculateAlternativeWeight(alt);

Console.WriteLine(string.Format("Альтернатива {0} | Вес {1}", alt.Name, alt.Weight.ToString() + Environment.NewLine));

}

Console.WriteLine("Нажмите любую кнопку для выхода из программы");

Console.ReadLine();

}

/// <summary>

/// Посчитать вес альтернативы

/// </summary>

/// <param name="alt">Альтернатива</param>

static void CalculateAlternativeWeight(Altarnative alt)

{

for (int i = 0; i < alt.Values.Count; i++)

{

Criteria criteria = _criterias[i];

decimal v = FindValue(alt.Values[i], criteria);

alt.Weight += (criteria.Weight * v);

}

}

static decimal FindValue(string alternativeValue, Criteria criteria)

{

foreach (CriteriaValue cv in criteria.Values)

{

if (cv.Name.ToUpper() == alternativeValue.ToUpper())

{

return cv.Weight;

}

}

return -1;

}

static string GetNameByValueForCoastAlternative(int val)

{

if (val > 0 && val <= 5000) return "до 5 тыс. руб.";

if (val > 5000 && val <= 10000) return "до 10 тыс. руб.";

if (val > 10000 && val <= 20000) return "до 20 тыс. руб.";

if (val > 20000 && val <= 30000) return "до 30 тыс. руб.";

if (val > 30000) return "более 30 тыс. руб.";

return val.ToString();

}

static string GetNameByValueForDurationAlternative(double val)

{

if (val > 0 && val < 1) return "менее суток";

if (val > 1 && val <= 4) return "1-4 дней";

if (val > 4 && val <= 10) return "5-10 дней";

if (val > 10) return "от 10 дней";

return val.ToString();

}

static string GetNameByValueForTripDurationAlternative(int val)

{

if (val > 0 && val <= 3) return "0-3 часа";

if (val > 3 && val <= 6) return "3-6 часов";

if (val > 6 && val <= 12) return "6-12 часов";

if (val > 12 && val <= 24) return "12-24 часа";

if (val > 24) return "Более суток";

return val.ToString();

}

/// <summary>

/// Считать альтернативы из БД

/// </summary>

static void ReadAlternatives()

{

_alternatives = new List<Altarnative>();

SetConnection();

if (_connection.State == ConnectionState.Open)

{

OleDbCommand com = new OleDbCommand("SELECT * FROM Таблица1", _connection);

OleDbDataReader reader = com.ExecuteReader();

while (reader.Read())

{

Altarnative alt = new Altarnative();

alt.Name = reader[1].ToString();

alt.Values.Add(reader[2].ToString());

alt.Values.Add(GetNameByValueForCoastAlternative(Int32.Parse(reader[3].ToString())));

alt.Values.Add(reader[4].ToString());

alt.Values.Add(reader[5].ToString());

alt.Values.Add(GetNameByValueForDurationAlternative(Double.Parse(reader[6].ToString())));

alt.Values.Add(GetNameByValueForTripDurationAlternative(Int32.Parse(reader[7].ToString())));

alt.Values.Add(reader[8].ToString());

alt.Values.Add(reader[9].ToString());

alt.Values.Add(reader[10].ToString());

alt.Values.Add(reader[11].ToString());

_alternatives.Add(alt);

}

}

}

/// <summary>

/// Установить соединение с БД

/// </summary>

static void SetConnection()

{

_connection = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=.\альтернативы.accdb");

_connection.Open();

}

/// <summary>

/// Считать из файла список критериев

/// </summary>

static void ReadCriteria()

{

_criterias = new List<Criteria>();

FileStream stream = new FileStream("Criterias.xml", FileMode.Open);

XmlDocument doc = new XmlDocument();

doc.Load(stream);

XmlElement root = doc.DocumentElement;

foreach (XmlNode node in root.ChildNodes)

{

Criteria criteria = new Criteria();

criteria.Name = node.Attributes[0].Value;

foreach (XmlNode childNode in node.ChildNodes)

{

foreach (XmlAttribute attr in childNode.Attributes)

{

CriteriaValue criteriaValue = new CriteriaValue();

criteriaValue.Name = attr.Value;

criteria.Values.Add(criteriaValue);

}

}

_criterias.Add(criteria);

}

}

/// <summary>

/// Ввести предпочтения клиента по критериям и их значениям

/// </summary>

static void InputClientValues()

{

foreach (Criteria criteria in _criterias)

{

Console.WriteLine(string.Format("Введите оценку по десятибалльной шкале для критерия {0}", criteria.Name));

bool isCorrectInput = false;

// Получаем значимость текущего критерия

//

while (!isCorrectInput)

{

isCorrectInput = Int32.TryParse(Console.ReadLine(), out criteria.ClientValue) && criteria.ClientValue >= 1 && criteria.ClientValue <= 10;

if (!isCorrectInput)

Console.WriteLine("Неверный ввод!");

}

foreach (CriteriaValue val in criteria.Values)

{

Console.WriteLine(string.Format("Введите оценку по десятибалльной шкале для значения {0}", val.Name));

isCorrectInput = false;

while (!isCorrectInput)

{

isCorrectInput = Int32.TryParse(Console.ReadLine(), out val.ClientValue) && val.ClientValue >= 1 && val.ClientValue <= 10;

if (!isCorrectInput)

Console.WriteLine("Неверный ввод!");

}

}

}

}

/// <summary>

/// Произвести расчет весов критериев

/// </summary>

static void CalculateCriteriaWeights()

{

foreach (Criteria criteria in _criterias)

{

PreCulculateCriteriaWeight(criteria);

}

decimal criteriaSumm = CulculateCriteriaSumm();

if (criteriaSumm > 0)

{

foreach (Criteria criteria in _criterias)

{

criteria.Weight = criteria.TempCriteriaWeight / criteriaSumm;

}

}

}

static void CalculateValueWeights(Criteria criteria)

{

foreach (CriteriaValue val in criteria.Values)

{

PreCulculateValueWeight(criteria, val);

}

decimal valueSumm = CulculateValueSumm(criteria);

if (valueSumm > 0)

{

foreach (CriteriaValue val in criteria.Values)

{

val.Weight = val.TempValueWeight / valueSumm;

}

}

}

/// <summary>

/// Произвести расчет веса

/// </summary>

/// <param name="criteria"></param>

static void PreCulculateCriteriaWeight(Criteria criteria)

{

decimal summ = 0;

foreach (Criteria c in _criterias)

{

summ += GetValueFromInterval(criteria.ClientValue, c.ClientValue);

}

criteria.TempCriteriaWeight = (decimal)Math.Pow((double)summ, (double)1 / _criterias.Count);

}

static void PreCulculateValueWeight(Criteria criteria, CriteriaValue val)

{

decimal summ = 0;

foreach (CriteriaValue v in criteria.Values)

{

summ += GetValueFromInterval(val.ClientValue, v.ClientValue);

}

val.TempValueWeight = (decimal)Math.Pow((double)summ, (double)1 / criteria.Values.Count);

}

static decimal CulculateCriteriaSumm()

{

decimal summ = 0;

foreach (Criteria criteria in _criterias)

summ += criteria.TempCriteriaWeight;

return summ;

}

static decimal CulculateValueSumm(Criteria criteria)

{

decimal summ = 0;

foreach (CriteriaValue val in criteria.Values)

summ += val.TempValueWeight;

return summ;

}

static decimal GetValueFromInterval(int k1, int k2)

{

double res = k1 / k2;

if (res >= 0 && res < 0.25) return 1 / 9;

if (res >= 0.25 && res < 0.45) return 1 / 7;

if (res >= 0.45 && res < 0.65) return 1 / 5;

if (res >= 0.65 && res < 0.85) return 1 / 3;

if (res >= 0.85 && res < 1.5) return 1;

if (res >= 1.5 && res < 3.5) return 3;

if (res >= 3.5 && res < 5.5) return 5;

if (res >= 5.5 && res < 7.5) return 7;

if (res >= 7.5 && res < 10) return 9;

return -1;

}

}

}

// -----------------------------------------------------------------------

// <copyright file="Criteria.cs" company="">

// TODO: Update copyright text.

// </copyright>

// -----------------------------------------------------------------------

namespace DiplomProject

{

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

/// <summary>

/// TODO: Update summary.

/// </summary>

public class Criteria

{

public string Name;

public List<CriteriaValue> Values = new List<CriteriaValue>();

public int ClientValue;

public decimal TempCriteriaWeight;

public decimal Weight;

}

}

<criterias>

<criteria Name="Тип тура">

<criteriaValue Name="экскурсионный"></criteriaValue>

<criteriaValue Name="семейный"></criteriaValue>

<criteriaValue Name="пляжный"></criteriaValue>

<criteriaValue Name="спортивный"></criteriaValue>

<criteriaValue Name="лечебный"></criteriaValue>

<criteriaValue Name="охота\рыбалка"></criteriaValue>

</criteria>

<criteria Name="Стоимость">

<criteriaValue Name="до 5 тыс. руб."></criteriaValue>

<criteriaValue Name="до 10 тыс. руб."></criteriaValue>

<criteriaValue Name="до 20 тыс. руб."></criteriaValue>

<criteriaValue Name="до 30 тыс. руб."></criteriaValue>

<criteriaValue Name="более 30 тыс. руб."></criteriaValue>

</criteria>

<criteria Name="Размещение">

<criteriaValue Name="отель 5"></criteriaValue>

<criteriaValue Name="отель 4"></criteriaValue>

<criteriaValue Name="отель 3"></criteriaValue>

<criteriaValue Name="отель 2"></criteriaValue>

<criteriaValue Name="коттедж"></criteriaValue>

<criteriaValue Name="палатка"></criteriaValue>

<criteriaValue Name="без размещения"></criteriaValue>

</criteria>

<criteria Name="Питание">

<criteriaValue Name="Все включено"></criteriaValue>

<criteriaValue Name="Полный пансион"></criteriaValue>

<criteriaValue Name="Полупансион"></criteriaValue>

<criteriaValue Name="Завтраки"></criteriaValue>

<criteriaValue Name="Без питания"></criteriaValue>

</criteria>

<criteria Name="Время тура">

<criteriaValue Name="менее суток"></criteriaValue>

<criteriaValue Name="1-4 дней"></criteriaValue>

<criteriaValue Name="5-10 дней"></criteriaValue>

<criteriaValue Name="от 10 дней"></criteriaValue>

</criteria>

<criteria Name="Время в пути">

<criteriaValue Name="0-3 часа"></criteriaValue>

<criteriaValue Name="3-6 часов"></criteriaValue>

<criteriaValue Name="6-12 часов"></criteriaValue>

<criteriaValue Name="12-24 часа"></criteriaValue>

<criteriaValue Name="Более суток"></criteriaValue>

</criteria>

<criteria Name="Тип транспорта">

<criteriaValue Name="самолет"></criteriaValue>

<criteriaValue Name="поезд"></criteriaValue>

<criteriaValue Name="машина"></criteriaValue>

<criteriaValue Name="автобус"></criteriaValue>

<criteriaValue Name="корабль"></criteriaValue>

</criteria>

<criteria Name="Рельеф">

<criteriaValue Name="море"></criteriaValue>

<criteriaValue Name="горы"></criteriaValue>

<criteriaValue Name="лес"></criteriaValue>

<criteriaValue Name="река"></criteriaValue>

<criteriaValue Name="пещеры"></criteriaValue>

<criteriaValue Name="озера"></criteriaValue>

<criteriaValue Name="равнины"></criteriaValue>

</criteria>

<criteria Name="Культкрные достопримечательности">

<criteriaValue Name="да"></criteriaValue>

<criteriaValue Name="нет"></criteriaValue>

</criteria>

<criteria Name="Магазины/кафе">

<criteriaValue Name="да"></criteriaValue>

<criteriaValue Name="нет"></criteriaValue>

</criteria>

</criterias>

// -----------------------------------------------------------------------

// <copyright file="CriteriaValue.cs" company="">

// TODO: Update copyright text.

// </copyright>

// -----------------------------------------------------------------------

namespace DiplomProject

{

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

/// <summary>

/// TODO: Update summary.

/// </summary>

public class CriteriaValue

{

public string Name;

public int ClientValue;

public decimal TempValueWeight;

public decimal Weight;

Размещено на Allbest.ru

...

Подобные документы

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

    дипломная работа [1,9 M], добавлен 10.07.2017

  • Система поддержки принятия решений "Мыслитель" и метод, заложенный в её основу. Порядок работы в программе: новая задача, составление списка альтернатив, списка критериев их оценки, сравнение критериев по степени важности, попарное сравнение альтернатив.

    отчет по практике [719,2 K], добавлен 08.03.2016

  • Методы решения проблем, возникающих на стадиях и этапах процесса принятия решений, их реализация в информационных системах поддержки принятия решений (СППР). Назначение СППР, история их эволюции и характеристика. Основные типы СППР, области их применения.

    реферат [389,3 K], добавлен 22.11.2016

  • Обслуживание двух встречных потоков информации. Структура информационных систем. Разработка структуры базы данных. Режимы работы с базами данных. Четыре основных компонента системы поддержки принятия решений. Выбор системы управления баз данных.

    курсовая работа [772,0 K], добавлен 21.04.2016

  • Типы административных информационных систем: системы генерации отчетов, системы поддержки принятия решений, системы поддержки принятия стратегических решений. Сортировка и фильтрация списков в Microsoft Excel. Работа с базами данных в Microsoft Access.

    контрольная работа [6,0 M], добавлен 19.11.2009

  • Человеко-машинные комплексы, специально предназначенные для принятия решений. Процесс принятия решений и его этапы. Методы поиска новых вариантов решений: дерево решений, морфологические таблицы, конференции идей. Принцип математической оценки тенденций.

    курсовая работа [272,1 K], добавлен 30.07.2009

  • Концепция систем поддержки принятия решений. Диапазон применения Analytica 2.0. Программное обеспечение количественного моделирования. Графический интерфейс для разработки модели. Основные способы моделирования. Диаграмма влияния и дерево решений.

    контрольная работа [1,1 M], добавлен 08.09.2011

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

    дипломная работа [5,1 M], добавлен 19.01.2017

  • Теоретические аспекты функционирования Business intelligence - систем в сфере логистики. Анализ условий для разработки системы поддержки принятия решений. Характеристика процесса создания программного продукта, применение аналитической платформы QlikView.

    курсовая работа [2,5 M], добавлен 09.09.2017

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

    курсовая работа [1,4 M], добавлен 22.07.2014

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

    дипломная работа [943,0 K], добавлен 08.03.2011

  • Рассмотрение OLAP-средств: классификация витрин и хранилищ информации, понятие куба данных. Архитектура системы поддержки принятия решений. Программная реализация системы "Abitura". Создание Web-отчета с использованием технологий Reporting Services.

    курсовая работа [2,7 M], добавлен 05.12.2012

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

    дипломная работа [1,9 M], добавлен 11.04.2013

  • Описание предметной области автоматизации. Программа обследования и план-график выполнения работ на предпроектной стадии. Метод группового принятия решения с помощью кластеризации экспертных оценок альтернатив. Построение диаграммы потоков данных DFD.

    дипломная работа [375,8 K], добавлен 07.12.2014

  • Основные модели представления знаний. Системы поддержки принятия решений. Диаграмма UseCase. Разработка базы данных на основе трех моделей: продукционные правила, семантическая сеть, фреймовая модель. Программная реализация системы принятия решений.

    курсовая работа [715,1 K], добавлен 14.05.2014

  • Исследование технологического процесса по производству газобетона. Модель "как будет" процесса диагностирования состояния технологического процесса производства газобетона с учетом системы поддержки принятия решений. Прототипирование интерфейса СППР.

    дипломная работа [4,8 M], добавлен 17.06.2017

  • Рассмотрение понятия и истории возникновения систем поддержки принятия решения. Приспособленность информационных систем к задачам повседневной управленческой деятельности. Понятие термина "интеллектуальный анализ данных". Методика извлечения знаний.

    реферат [79,8 K], добавлен 14.04.2015

  • Требования к защите систем электронных платежей. Разновидности процедур, выполняемые лицом, принимающим решения. Методы иерархического упорядочивания альтернатив на заданном множестве критериев. Описание применения метода ОРКЛАСС, схема базы данных.

    дипломная работа [1,7 M], добавлен 02.03.2016

  • Изучение назначения и основных задач, которые решает Project Expert - система поддержки принятия решений (СППР), предназначенная для менеджеров, проектирующих финансовую модель нового или действующего предприятия. Программные приложения, этапы работы.

    реферат [30,7 K], добавлен 19.05.2010

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

    реферат [1,3 M], добавлен 25.03.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.