Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Decision Matrix

Настольная матрица взвешенных решений на Python

Python 3.9+ GUI Dependencies

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


Возможности

  • любое количество решений и критериев;
  • веса критериев с автоматической нормализацией до 100%;
  • min–max-нормализация оценок по шкале от 0 до 10;
  • итоговый взвешенный балл по шкале от 0 до 10;
  • два режима обработки пустых оценок: исключить или считать нулём;
  • автоматическая, радарная и столбчатая визуализация;
  • скрытие решений и критериев без удаления;
  • импорт и экспорт матрицы в CSV;
  • редактор цветов, шрифтов и размеров интерфейса;
  • локальное автосохранение данных и оформления;
  • работа без сервера, аккаунта, сети и сторонних Python-библиотек.

Технологии

Проект представляет собой однофайловое настольное приложение:

Компонент Назначение
Python 3.9+ логика приложения и расчёты
tkinter / ttk графический интерфейс
pathlib пути и локальное хранилище
json сохранение матрицы и настроек
csv импорт и экспорт таблиц
math геометрия радарной диаграммы
random пересчёт оценок при ручном перемещении решения

Зависимостей из PyPI нет: pip install не требуется. Tkinter входит в стандартную поставку Python, но в некоторых Linux-дистрибутивах устанавливается отдельным системным пакетом.

Установка

1. Установите Python

Требуется Python 3.9 или новее.

Проверьте установленную версию:

python3 --version

В Windows вместо python3 обычно используется команда:

py --version

Проверить доступность Tkinter можно так:

python3 -m tkinter

Если открылось небольшое тестовое окно, графическая библиотека готова к работе.

2. Скачайте проект

Через Git:

git clone https://github.com/ajuia-m/Decision-Matrix.git
cd Decision-Matrix

Либо откройте страницу репозитория, выберите Code → Download ZIP и распакуйте архив.

3. Запустите приложение

Windows:

py -3 matrix.py

macOS и Linux:

python3 matrix.py

Отдельная установка зависимостей и создание виртуального окружения не нужны.

Linux: если Tkinter отсутствует

Debian / Ubuntu:

sudo apt update
sudo apt install python3-tk

Fedora:

sudo dnf install python3-tkinter

Arch Linux:

sudo pacman -S tk

После установки повторите python3 -m tkinter, а затем запустите приложение.

Быстрый старт

  1. Включите флажок «Редактирование».
  2. Добавьте варианты кнопкой «+ Решение».
  3. Добавьте параметры сравнения кнопкой «+ Критерий».
  4. Укажите вес каждого критерия в строке «Вес (%)».
  5. Введите исходные оценки вручную или задайте их ползунками.
  6. Нажмите «⚖ 100%», если нужно привести сумму весов к 100%.
  7. Отключите режим редактирования — решения будут отсортированы по итоговому баллу.
  8. Переключайте тип графика и видимость отдельных критериев на панели над диаграммой.
  9. Сохраните видимую часть матрицы кнопкой «↑ Экспорт».

Исходные оценки могут использовать любую согласованную числовую шкалу. Ползунки работают в диапазоне 0–100, но можно вводить другие числовые значения вручную: перед итоговым расчётом данные всё равно нормализуются отдельно по каждому критерию.

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

Как рассчитывается результат

1. Нормализация оценки

Для каждого видимого критерия программа находит минимальную и максимальную исходные оценки среди видимых решений:

normalized = (score - min_score) / (max_score - min_score) × 10

Лучшее значение получает 10, худшее — 0, остальные располагаются между ними. Если все заполненные оценки по критерию одинаковы, каждая из них получает нейтральное значение 5.

Это относительная нормализация: скрытие решения или изменение одной оценки может изменить нормализованные баллы остальных решений.

2. Нормализация весов

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

normalized_weight = weight / sum_of_visible_weights

Если сумма весов равна нулю, все видимые критерии получают одинаковый вес.

3. Итоговая оценка

Итог — средневзвешенное нормализованных оценок:

total = Σ(normalized_score × normalized_weight) / Σ(used_weights)

Диапазон результата — от 0 до 10.

Для пустых ячеек предусмотрены два режима:

  • по умолчанию пустая оценка исключается, а оставшиеся веса пересчитываются;
  • при включённом флажке «∅ Пустые = 0» она участвует в расчёте как ноль.

Графики

Доступны три режима:

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

Критерии и серию «Итого» можно независимо включать и отключать. Панель графика можно полностью скрыть и затем вернуть кнопкой «📊 График».

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

Импорт и экспорт CSV

Экспортируемый файл имеет следующую структуру:

Решение,Стоимость,Качество,Скорость,Итого
Вес,30,40,30,
Вариант A,8,9,6,6.0
Вариант B,6,7,9,5.0
  • первая строка содержит названия критериев;
  • необязательная вторая строка содержит веса;
  • последующие строки содержат решения и исходные оценки;
  • последний столбец Итого вычисляется программой и при импорте не используется;
  • экспортируются только видимые решения и критерии;
  • импорт заменяет текущую матрицу данными из выбранного файла.

Перед импортом важных данных рекомендуется сделать экспорт текущей матрицы: отдельной команды отмены импорта нет.

Локальное хранение

Приложение создаёт каталог .decision_matrix_cache в домашней папке пользователя:

~/.decision_matrix_cache/
├── matrix_data.json   # критерии, решения, оценки и режим пустых ячеек
└── styles.json        # текущий стиль и до пяти предыдущих состояний

Изменения данных автоматически сохраняются с небольшой задержкой, а также при закрытии окна. Файлы хранятся локально в обычном JSON и никуда не отправляются.

Чтобы сбросить приложение без безвозвратного удаления данных, закройте его и переименуйте каталог:

macOS / Linux:

mv ~/.decision_matrix_cache ~/.decision_matrix_cache.backup

Windows PowerShell:

Rename-Item "$HOME\.decision_matrix_cache" ".decision_matrix_cache.backup"

При следующем запуске будут созданы демонстрационные критерии и решения.

Архитектура

flowchart TD
    App["DecisionMatrixApp<br/>окно и события"] --> Data["DataManager<br/>данные и расчёты"]
    App --> Style["StyleManager<br/>оформление"]
    App --> Settings["ChartSettings<br/>состояние графика"]
    Data --> Chart["CanvasChart<br/>визуализация"]
    Settings --> Chart
Loading

Основные компоненты:

  • DataManager управляет критериями, решениями, CSV, сохранением и расчётами;
  • StyleManager хранит визуальные параметры и историю оформления;
  • ChartSettings содержит временные настройки диаграммы;
  • CanvasChart рисует графики средствами tk.Canvas;
  • ChartControlPanel управляет видом диаграммы;
  • DecisionMatrixApp связывает интерфейс, данные, стили и пользовательские события.

Структура репозитория

Decision-Matrix/
├── matrix.py   # всё приложение
└── README.md   # документация

Ограничения

  • Это локальное настольное приложение, а не веб-сервис.
  • Совместная работа, облачная синхронизация и учётные записи отсутствуют.
  • JSON-файлы не шифруются — не храните в матрице секреты и чувствительные персональные данные.
  • Истории изменений матрицы и общей команды Undo нет.
  • При импорте CSV текущие данные заменяются.
  • Перемещение строк изменяет оценки, а не только визуальную сортировку.
  • Готовые установщики .exe, .app и системные пакеты пока не предоставляются.

Устранение проблем

ModuleNotFoundError: No module named '_tkinter'

Установите Tkinter для вашей системы или переустановите Python с поддержкой Tcl/Tk.

no display name and no $DISPLAY environment variable

Приложению требуется графический рабочий стол. Оно не запускается в обычной безэкранной серверной сессии. В WSL потребуется WSLg или другой настроенный графический сервер.

Настройки или данные не сохраняются

Убедитесь, что у пользователя есть право записи в домашний каталог и в .decision_matrix_cache.

About

Desktop weighted decision matrix with configurable criteria, visualization, CSV import/export, and local persistence.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages