Сравнивайте варианты по нескольким критериям, задавайте веса, исследуйте результат на радарной или столбчатой диаграмме и сохраняйте таблицы в 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-дистрибутивах устанавливается отдельным системным пакетом.
Требуется Python 3.9 или новее.
Проверьте установленную версию:
python3 --versionВ Windows вместо python3 обычно используется команда:
py --versionПроверить доступность Tkinter можно так:
python3 -m tkinterЕсли открылось небольшое тестовое окно, графическая библиотека готова к работе.
Через Git:
git clone https://github.com/ajuia-m/Decision-Matrix.git
cd Decision-MatrixЛибо откройте страницу репозитория, выберите Code → Download ZIP и распакуйте архив.
Windows:
py -3 matrix.pymacOS и Linux:
python3 matrix.pyОтдельная установка зависимостей и создание виртуального окружения не нужны.
Debian / Ubuntu:
sudo apt update
sudo apt install python3-tkFedora:
sudo dnf install python3-tkinterArch Linux:
sudo pacman -S tkПосле установки повторите python3 -m tkinter, а затем запустите приложение.
- Включите флажок «Редактирование».
- Добавьте варианты кнопкой «+ Решение».
- Добавьте параметры сравнения кнопкой «+ Критерий».
- Укажите вес каждого критерия в строке «Вес (%)».
- Введите исходные оценки вручную или задайте их ползунками.
- Нажмите «⚖ 100%», если нужно привести сумму весов к 100%.
- Отключите режим редактирования — решения будут отсортированы по итоговому баллу.
- Переключайте тип графика и видимость отдельных критериев на панели над диаграммой.
- Сохраните видимую часть матрицы кнопкой «↑ Экспорт».
Исходные оценки могут использовать любую согласованную числовую шкалу. Ползунки работают в диапазоне 0–100, но можно вводить другие числовые значения вручную: перед итоговым расчётом данные всё равно нормализуются отдельно по каждому критерию.
Важно: перетаскивание решения за маркер
⠿в режиме просмотра не просто меняет порядок строк. Программа также подбирает новые исходные оценки между соседними решениями, используя случайные значения, и сохраняет результат. Для безопасного просмотра не перетаскивайте строки.
Для каждого видимого критерия программа находит минимальную и максимальную исходные оценки среди видимых решений:
normalized = (score - min_score) / (max_score - min_score) × 10
Лучшее значение получает 10, худшее — 0, остальные располагаются между ними. Если все заполненные оценки по критерию одинаковы, каждая из них получает нейтральное значение 5.
Это относительная нормализация: скрытие решения или изменение одной оценки может изменить нормализованные баллы остальных решений.
Вес критерия делится на сумму весов всех видимых критериев:
normalized_weight = weight / sum_of_visible_weights
Если сумма весов равна нулю, все видимые критерии получают одинаковый вес.
Итог — средневзвешенное нормализованных оценок:
total = Σ(normalized_score × normalized_weight) / Σ(used_weights)
Диапазон результата — от 0 до 10.
Для пустых ячеек предусмотрены два режима:
- по умолчанию пустая оценка исключается, а оставшиеся веса пересчитываются;
- при включённом флажке «∅ Пустые = 0» она участвует в расчёте как ноль.
Доступны три режима:
| Режим | Поведение |
|---|---|
| Авто | радар при трёх и более критериях, иначе столбцы |
| Радар | профили решений по критериям и, при необходимости, итоговый балл |
| Столбцы | сгруппированные значения критериев и итогов |
Критерии и серию «Итого» можно независимо включать и отключать. Панель графика можно полностью скрыть и затем вернуть кнопкой «📊 График».
Настройки видимости и типа графика действуют только до закрытия приложения.
Экспортируемый файл имеет следующую структуру:
Решение,Стоимость,Качество,Скорость,Итого
Вес,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.backupWindows 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
Основные компоненты:
DataManagerуправляет критериями, решениями, CSV, сохранением и расчётами;StyleManagerхранит визуальные параметры и историю оформления;ChartSettingsсодержит временные настройки диаграммы;CanvasChartрисует графики средствамиtk.Canvas;ChartControlPanelуправляет видом диаграммы;DecisionMatrixAppсвязывает интерфейс, данные, стили и пользовательские события.
Decision-Matrix/
├── matrix.py # всё приложение
└── README.md # документация
- Это локальное настольное приложение, а не веб-сервис.
- Совместная работа, облачная синхронизация и учётные записи отсутствуют.
- JSON-файлы не шифруются — не храните в матрице секреты и чувствительные персональные данные.
- Истории изменений матрицы и общей команды Undo нет.
- При импорте CSV текущие данные заменяются.
- Перемещение строк изменяет оценки, а не только визуальную сортировку.
- Готовые установщики
.exe,.appи системные пакеты пока не предоставляются.
Установите Tkinter для вашей системы или переустановите Python с поддержкой Tcl/Tk.
Приложению требуется графический рабочий стол. Оно не запускается в обычной безэкранной серверной сессии. В WSL потребуется WSLg или другой настроенный графический сервер.
Убедитесь, что у пользователя есть право записи в домашний каталог и в .decision_matrix_cache.