AI-система оптимизации рецептур пищевых продуктов
Разработка пищевых рецептур — многокритериальная задача: вкус, текстура, срок хранения, состав по нутриентам, стоимость и технологичность должны соответствовать требованиям одновременно. AI ускоряет эту работу в 3–5 раз по сравнению с лабораторным перебором.
Суррогатные модели свойств рецептуры
Предсказание органолептических свойств:
Вкус, запах, текстуру нельзя вычислить аналитически — только измерить экспериментально. Суррогатная ML-модель предсказывает органолептику по составу:
import pandas as pd
import numpy as np
from sklearn.gaussian_process import GaussianProcessRegressor
from sklearn.gaussian_process.kernels import Matern, WhiteKernel
class RecipeSurrogateModel:
"""
Surrogate model органолептических свойств рецептуры.
Обучается на экспериментальных данных дегустаций.
"""
def __init__(self, sensory_attributes):
"""sensory_attributes: ['sweetness', 'saltiness', 'texture', 'color', ...]"""
self.attributes = sensory_attributes
self.models = {}
for attr in sensory_attributes:
kernel = Matern(length_scale=1.0, nu=2.5) + WhiteKernel(noise_level=0.1)
self.models[attr] = GaussianProcessRegressor(
kernel=kernel,
n_restarts_optimizer=10,
normalize_y=True,
random_state=42
)
def fit(self, ingredient_compositions, sensory_scores):
"""
ingredient_compositions: (n_recipes, n_ingredients) — доли ингредиентов
sensory_scores: (n_recipes, n_attributes) — оценки дегустаторов 0–10
"""
for i, attr in enumerate(self.attributes):
self.models[attr].fit(ingredient_compositions, sensory_scores[:, i])
return self
def predict_with_uncertainty(self, composition):
"""
Предсказание свойств новой рецептуры с оценкой неопределённости.
Высокая неопределённость → приоритет для лабораторного теста.
"""
X = np.array(composition).reshape(1, -1)
predictions = {}
for attr, model in self.models.items():
mean, std = model.predict(X, return_std=True)
predictions[attr] = {'mean': float(mean[0]), 'std': float(std[0])}
return predictions
Оптимизация состава
Multi-objective Optimization:
Три конкурирующие цели: стоимость минимальна, нутриентный профиль оптимален, органолептика максимальна:
from scipy.optimize import minimize, LinearConstraint
import numpy as np
def optimize_recipe(
surrogate_model,
ingredient_costs, # руб/кг каждого ингредиента
nutrient_targets, # {'protein_pct': (min, max), 'fat_pct': ...}
sensory_targets, # {'sweetness': min_value, 'texture': min_value}
ingredient_limits, # (min_pct, max_pct) для каждого ингредиента
w_cost=0.4, w_sensory=0.6
):
"""
Поиск рецептуры, минимизирующей стоимость при соблюдении
нутриентных и органолептических требований.
"""
n_ingr = len(ingredient_costs)
def objective(x):
cost = np.dot(x, ingredient_costs) # стоимость
sensory = surrogate_model.predict_with_uncertainty(x)
# Штраф за несоответствие органолептическим требованиям
sensory_penalty = sum(
max(0, target - sensory[attr]['mean']) ** 2
for attr, target in sensory_targets.items()
)
return w_cost * cost + w_sensory * sensory_penalty * 10
# Ограничения
constraints = [
{'type': 'eq', 'fun': lambda x: np.sum(x) - 1.0}, # сумма = 100%
]
for attr, (min_val, max_val) in nutrient_targets.items():
# Добавить нутриентные ограничения (через композиционные таблицы)
pass
bounds = ingredient_limits
x0 = np.array([0.5 / n_ingr] * n_ingr) # равномерный старт
result = minimize(objective, x0, method='SLSQP',
bounds=bounds, constraints=constraints)
return result.x, result.fun
Bayesian Optimization для итеративной разработки
Активный эксперимент:
Вместо перебора — умный выбор следующего эксперимента:
- Начальный DoE: 20–30 рецептур по Simplex-Centroid дизайну
- Обучить GP-суррогат
- Expected Improvement выбирает наиболее информативную следующую точку
- Лаборатория тестирует → обновить суррогат
- Сходимость за 50–100 итераций (vs. 200–500 при случайном поиске)
Направленная вариация:
Разработчик задаёт направление оптимизации словами:
- «Сделать более сладким без увеличения сахара» → заменить часть сахара на стевию/эритрит
- «Снизить жирность при сохранении кремовой текстуры» → функциональные крахмалы
- LLM предлагает альтернативные ингредиенты → GP-суррогат оценивает эффект
Стабильность и shelf life
Прогноз срока годности:
Кинетические модели порчи (Arrhenius): скорость химических реакций при разных температурах:
- Окисление жиров (TBARS, пероксидное число) → прогноз для разных условий хранения
- Микробиологическая порча: модели роста (Baranyi, Modified Gompertz)
- ML-поправки на конкретный состав рецептуры
Ускоренные испытания:
Q10 закон: при +10°C скорость реакций удваивается:
- Хранение при 45°C × 3 недели ≈ хранение при 25°C × 6 месяцев
- ML-модель конверсии ускоренных данных в реальный срок хранения
Срок разработки: 3–5 месяцев для системы оптимизации рецептур с GP-суррогатом, Bayesian Optimization и прогнозом shelf life.







