ИИ-сомелье: алгоритм создания недельного меню для винодельни
Современное виноделие — это не только ферментация и выдержка, но и гастрономический сервис. ИИ позволяет автоматизировать баланс между винными позициями и блюдами, учитывая сезонность, остатки на складе и предпочтения гостей. Ниже — практическая методика из 5 шагов с точными параметрами.
Шаг 1. Сбор данных и нормализация
Соберите три массива данных: винная карта (крепость, танинность, кислотность, сладость по 10-балльной шкале), склад (остатки в бутылках и срок годности), история продаж (блюда и вина за 90 дней). Нормализуйте значения в диапазон [0,1] — это ускорит обучение модели.
Шаг 2. Матрица сочетаемости
Создайте матрицу 10×10, где строки — категории блюд (мясо, рыба, сыры, десерты), столбцы — типы вин (красное сухое, белое сухое, розовое, игристое). Заполните коэффициенты от 0 (конфликт) до 1 (идеально). Пример для красного сухого с танинностью 8/10: говядина — 0.9, тунец — 0.3, шоколад — 0.6.
Шаг 3. Генерация меню через оптимизацию
Используйте генетический алгоритм с целевой функцией: F = 0.5*сочетаемость + 0.3*рентабельность + 0.2*разнообразие. Параметры: популяция — 50 вариантов меню, мутация — 10% (случайная замена блюда), скрещивание — 60% (обмен позициями между вариантами), 200 итераций. Ограничения: не более 2 блюд с одним вином, минимум 3 разных типа вин в день.
Шаг 4. Валидация и корректировка
Проверьте результат на 3 критериях: сезонность (июль — больше белых и розовых), остатки (вино с остатком > 30 бутылок получает приоритет +0.1 к коэффициенту), аллергены (исключите орехи, если в базе гостей есть аллергия). Если модель выдала конфликт — вручную скорректируйте через веса.
Шаг 5. Автоматизация и обратная связь
Загрузите меню в POS-систему и CRM. Ежедневно фиксируйте продажи и возвраты. Раз в неделю пересчитывайте матрицу сочетаемости: если блюдо X с вином Y продаётся на 20% лучше среднего — повысьте коэффициент на 0.05. Это создаёт самообучающийся цикл.
Сравнительная таблица: ручной подход vs ИИ
| Критерий | Ручной (сомелье) | ИИ-алгоритм |
|---|---|---|
| Время на недельное меню | 4–6 часов | 15–20 минут |
| Учёт остатков | Частично, вручную | Автоматически, в реальном времени |
| Адаптация к спросу | Раз в месяц | Ежедневно |
| Ошибки сочетаемости | 5–10% | 1–3% |
Сравнение алгоритмов оптимизации
| Метод | Скорость (итераций) | Качество (F-мера) | Сложность внедрения |
|---|---|---|---|
| Генетический | 200 | 0.87 | Средняя |
| Симуляция отжига | 500 | 0.82 | Низкая |
| Жадный поиск | 50 | 0.74 | Минимальная |
Совет: начните с жадного поиска для быстрого прототипа, затем переходите на генетический алгоритм. Используйте Python-библиотеки scikit-opt или deap — они уже содержат готовые реализации.
Практический рецепт: пример для 7 дней
- Понедельник: устрицы + Шардоне (кислотность 7/10) — коэффициент 0.95.
- Вторник: ягнёнок + Каберне Совиньон (танинность 9/10) — 0.98.
- Среда: ризотто с грибами + Пино Нуар (лёгкое, 5/10) — 0.88.
- Четверг: фуа-гра + Сотерн (сладость 9/10) — 0.92.
- Пятница: стейк рибай + Мальбек (танинность 8/10) — 0.96.
- Суббота: овощное рататуй + Розе (сухое) — 0.85.
- Воскресенье: шоколадный фондан + Портвейн (сладость 10/10) — 0.90.
Параметры для каждого дня: температура подачи вина (красное — 16–18°C, белое — 8–10°C), время декантации (для танинных — 30–60 минут), порция (150 мл).