Подправлен README.md
This commit is contained in:
@@ -1,32 +1,130 @@
|
|||||||
# Планирование эксперимента и оптимизация смесей
|
# Mixture Optimizer
|
||||||
|
|
||||||
Программа для автоматизированного планирования эксперимента, построения регрессионных моделей, проверки значимости факторов и крутого восхождения (градиентного метода) для поиска оптимума в задачах со смесями.
|
**Интерактивная система для планирования эксперимента и оптимизации многокомпонентных смесей.**
|
||||||
|
|
||||||
|
Программа для автоматизированного планирования эксперимента, построения регрессионных моделей, проверки значимости факторов и градиентного поиска оптимума (крутое восхождение) в задачах со смесями.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Основные возможности
|
## Основные возможности
|
||||||
|
|
||||||
- **Редактор состава**: создание и изменение ингредиентов смеси (проценты, разбавление, плотность).
|
- Редактор состава смеси (проценты, плотность, разбавление)
|
||||||
- **Планирование эксперимента**: генерация различных планов:
|
- Генерация планов:
|
||||||
- Полный факторный план `2^k`
|
- Полный факторный `2^k`
|
||||||
- Центральный композиционный план (ЦКП) с возможностью дробного ядра
|
- Центральный композиционный план (ЦКП) с возможностью дробного ядра
|
||||||
- Дробный факторный план `2^(k-p)`
|
- Дробный факторный `2^(k-p)`
|
||||||
- План Плакетта-Бермана
|
- План Плакетта–Бермана
|
||||||
- План Бокса-Бенкена
|
- План Бокса–Бенкена
|
||||||
- **Ввод откликов**: добавление, редактирование, переименование и удаление откликов.
|
- Ввод и управление множественными откликами (добавление, редактирование, переименование, удаление)
|
||||||
- **Анализ значений**:
|
- Регрессионный анализ (МНК) с t-критерием, R², скорректированным R², F-критерием
|
||||||
- Построение линейной регрессии (МНК)
|
- Проверка дисперсии в центре, доверительные интервалы
|
||||||
- Проверка значимости коэффициентов по t-критерию с заданным уровнем α
|
- Исключение незначимых факторов с пересчётом модели
|
||||||
- R², скорректированный R², F-критерий
|
- Крутое восхождение (градиентный метод) с генерацией точек и возможностью установки нового состава
|
||||||
- Дисперсия в центре и доверительный интервал
|
- Экспорт таблиц в CSV и буфер обмена (TSV)
|
||||||
- Исключение незначимых факторов и пересчёт модели
|
|
||||||
- **Крутое восхождение**:
|
Все данные хранятся в едином JSON-файле. Сохранение – по команде пользователя (без автоматического сохранения).
|
||||||
- Расчёт коэффициентов модели для выбранного отклика
|
|
||||||
- Генерация точек вдоль градиента (максимизация или минимизация)
|
---
|
||||||
- Возможность установить выбранную точку как новый состав
|
|
||||||
- **Экспорт данных**: все таблицы можно сохранить в CSV или скопировать в буфер обмена (TSV).
|
## Технологии
|
||||||
|
|
||||||
|
- Python 3.8+
|
||||||
|
- NumPy – матричные вычисления
|
||||||
|
- SciPy – статистические функции (распределения, матрица Адамара)
|
||||||
|
- pyperclip – работа с буфером обмена (опционально)
|
||||||
|
|
||||||
|
Интерфейс – консольный, с удобной табличной печатью.
|
||||||
|
|
||||||
|
Разработано для химиков, биологов, технологов, инженеров и всех, кто занимается оптимизацией многокомпонентных систем.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Установка и запуск
|
## Установка и запуск
|
||||||
|
|
||||||
1. Клонируйте репозиторий:
|
1. Клонируйте репозиторий:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone <url>
|
git clone https://gitlab.artemkas.ru/artemiy/mixture_optimizer.git
|
||||||
cd experiment
|
cd mixture_optimizer
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Создайте виртуальное окружение (рекомендуется):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python -m venv venv
|
||||||
|
source venv/bin/activate # Linux / macOS
|
||||||
|
# или
|
||||||
|
venv\Scripts\activate # Windows
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Установите зависимости:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pip install -r requirements.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
4. Запустите программу:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python main.py
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Пример использования
|
||||||
|
|
||||||
|
1. В главном меню выберите **Редактор состава**, добавьте ингредиенты (например, Меласса, Глицерин, Этанол). Растворитель (Вода) пересчитывается автоматически.
|
||||||
|
2. Перейдите в **Планирование эксперимента**, задайте шаги для активных факторов (например, 1%, 0.5%, 0.5%) и сгенерируйте план (ЦКП, дробный факторный и т.д.).
|
||||||
|
3. В **Ввод откликов** добавьте название отклика (например, «Сухая НЦ») и введите значения для каждого опыта.
|
||||||
|
4. В **Анализ значений** выберите отклик, задайте уровень значимости α (например, 0.05) – получите регрессионную модель, значимость коэффициентов, дисперсию в центре и доверительный интервал. При необходимости исключите незначимые факторы.
|
||||||
|
5. В **Крутое восхождение** выберите тот же отклик, укажите шаг движения и количество шагов – программа покажет точки градиента. Выберите лучшую точку и установите её как новый состав.
|
||||||
|
6. Повторяйте цикл, пока не достигнете оптимума.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Структура проекта
|
||||||
|
|
||||||
|
```text
|
||||||
|
mixture_optimizer/
|
||||||
|
├── main.py # Главное меню
|
||||||
|
├── editor.py # Редактор состава
|
||||||
|
├── plan.py # Планирование эксперимента
|
||||||
|
├── response.py # Ввод откликов
|
||||||
|
├── analysis.py # Анализ значений
|
||||||
|
├── ascent.py # Крутое восхождение
|
||||||
|
├── table.py # Вывод таблиц
|
||||||
|
├── core/
|
||||||
|
│ ├── classes.py # Классы Ingredient, Mixture
|
||||||
|
│ ├── fs.py # Сохранение/загрузка проекта (JSON)
|
||||||
|
│ ├── doe.py # Генерация планов
|
||||||
|
│ ├── experiment.py # Класс ExperimentDesign
|
||||||
|
│ ├── statistics.py # Статистические функции
|
||||||
|
│ └── table_io.py # Экспорт таблиц
|
||||||
|
├── requirements.txt
|
||||||
|
├── README.md
|
||||||
|
└── .gitignore
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Сохранение данных
|
||||||
|
|
||||||
|
Все данные (состав, план, отклики) хранятся в файле `project.json`. Сохранение **не автоматическое** – вы сами решаете, когда сохранить изменения через пункты «Сохранить» в соответствующих подменю. Это защищает от случайной перезаписи.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Лицензия
|
||||||
|
|
||||||
|
Проект распространяется под **проприетарной лицензией с открытым исходным кодом (Source Available)**.
|
||||||
|
|
||||||
|
Вы можете использовать, копировать, модифицировать и распространять код для **некоммерческих целей** при сохранении уведомления об авторских правах. **Коммерческое использование** запрещено без явного письменного разрешения автора.
|
||||||
|
|
||||||
|
Подробности см. в файле `LICENSE`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Контакты и вклад
|
||||||
|
|
||||||
|
По вопросам коммерческого использования, предложений и сообщений об ошибках обращайтесь по адресу: [ваш email].
|
||||||
|
|
||||||
|
Приветствуются сообщения об ошибках и предложения по улучшению через Issues и Merge Requests (для некоммерческих изменений).
|
||||||
|
|||||||
Reference in New Issue
Block a user