Система поддержки принятия решений по выбору тура
Суть условий и ситуаций введение постановлений. Системы поддержки принятия решений с применением независимых витрин данных. Методы сравнения и оценки многокритериальных альтернатив в условиях определенности информации. Способ анализа платежной матрицы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 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