Как стать автором
Обновить

Сбалансированный рацион питания

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров28K

В сети существует много материалов из серии «ешьте то… не ешьте это… и будете здоровее». Проблема в том, что эти материалы часто противоречат друг другу, обрывочны и бессистемны. Поэтому мне стало интересно разобраться с тем, какие же всё-таки продукты включать в рацион, чтобы одновременно:

  • получать все требуемые элементы в минимально необходимых нормах,

  • не превышать безопасные нормы элементов,

  • оптимизировать меню относительно некоторого показателя, например цены, или относительной «вкусности», или др.

Такая постановка задачи соответствует задаче линейного программирования, реализация которой есть, например, в библиотеке scipy функция linprog.

Для решения этой задачи потребовались данные:

  • Матрица содержания элементов в различных продуктах, (взяты с FoodNutrients.ru)

  • Вектор минимальных значений потребления элементов в день, (собраны из различных источников, ВОЗ и т.д.)

  • Вектор максимальных значений потребления элементов в день, (собраны из различных источников, ВОЗ и т.д.)

  • Вектор цен единицы продуктов, (собраны самостоятельно, на основе цен FMCG ритейлеров)

Интерпретация параметров функции linprog для нашей задачи

linprog(c,                  #Цены продуктов
        A_ub,               #Матрица содержания элементов в продуктах
        b_ub,               #Вектор норм потребления элементов, таких что A_ub @ x <= b_ub
        bounds=(lb, ub),    #Список кортежей с парами - верхняя и нижняя граница количества продукта 
        method='highs'      #Метод оптимизации
       )

# Минимизируется скалярное произведение: 
# c @ x
# где x - искомый вектор количества продуктов

# При выполнении ограничений:
# A_ub @ x <= b_ub      Количество каждого элемента не больше требуемого (а также не меньше требуемого, см примечание ниже)
# lb <= x <= ub         Количество каждого продукта может ограничено в диапазоне от lb до ub (None - неограничено).

# Примечание:
# Условие A_ub @ x <= b_ub реализует верхнюю границу нормы (количество элементов не больше заданного). 
# Чтобы этим же условием, реализовать и нижнюю границу нормы (количество элементов не меньше заданного), 
# требуется дополнить матрицу A_ub её копией с отрицательными значениями и также 
# дополнить b_ub его копией с отрицательными значениями (т.к., если a>=b, то -a<=-b).

По итогам предварительных расчётов, стало ясно, что требуется заложить возможность использования добавок витаминов. Витамины введены в виде вырожденных продуктов, единица которых, содержит дневную норму данного витамина и больше ничего. Чтобы модель оптимизации использовала витамины в последнюю очередь, цены на них выставлены заградительно высокими. Исключение составляют Омега 3 и Фтор, на которые цены выставлены приближенные к реальности.

Расчёты показывали, что практически невозможно достичь минимально необходимой нормы по Омега 3 и не превысить нормы других элементов, используя обычные продукты. Фтор же, обычно потребляется из воды, которая везде очень разная, поэтому этот компонент также вынесен в витамины. По той же причине вода рассматривается без минералов, ведь минерализация везде может быть очень разной.

Сбалансированный дневной рацион с оптимизацией стоимости продуктов в рублях

Таблица 1. Продукты в сбалансированном дневном рационе с оптимизацией по стоимости продуктов в рублях

Из таблицы 1 видно, что стоимость сбалансированного рациона, оптимизированного по деньгам, составляет всего ~362 р, большую часть по стоимости составляют рыбные продукты.

Показатель «Удорожание оптимального рациона без продукта» говорит о том, насколько трудно заменим данный продукт, т.е. как сильно изменится стоимость сбалансированного рациона, если бы данный продукт не мог быть включён в рацион. Продукт трудно заменимый, если после его исключения, стоимость рациона сильно растёт.

Здесь, видны на первый взгляд, странные значения, без свеклы, стоимость сбалансированного рациона увеличилась бы в десятки раз! Причина - бетаин, который требуется в количестве 600 мг и который, есть в достаточной относительной концентрации, почти только в свекле (неудивительно, ведь свекла на латинском beta). Оказалось, что бетаин может синтезироваться в организме человека, например из холина, поэтому, если учитывать взаимозаменяемость элементов, то свекла не настолько безальтернативна, но модель не учитывает возможности взаимозаменяемости элементов.

Другим трудно заменимым продуктом оказался витамин Омега-3, без него стоимость сбалансированного рациона увеличилась бы на 69%, за счёт большого количества оливкового масла. Причём чтобы получить достаточно Омега-3 из оливкового масла, придётся получить слишком много мононенасыщенных жиров, что тоже нехорошо.

Разнообразить сбалансированный рацион, увеличив количество продуктов в решении и уменьшив порцию каждого из них, можно установив ограничения на максимальное количество каждого из продуктов, с помощью параметра «bounds=(lb, ub)» функции linprog. Эту опцию также можно использовать если какие-то продукты просто не нравятся. Здесь, для краткости, такие ограничения не вводились, хотя функционал позволяет.

Таблица 2. Элементы в сбалансированном дневном рационе с оптимизацией по стоимости продуктов в рублях

Из таблицы 2 видно, что количество всех элементов находится между верхней и нижней границей, т.е. рацион сбалансированный. При этом в относительном дефиците (по нижней границе нормы) такие элементы как кальций, пролин, витамины А, D и некоторые другие. В относительном избытке (по верхней границе нормы): клетчатка, селен.

Показатель «Удешевление без элемента» говорит о том, насколько трудно выполнить требования по этому элементу, т.е. насколько процентов уменьшится стоимость сбалансированного рациона, если не нужно выполнять требования по данному элементу. Так, труднее всего выполнять требования по витамину D, если бы витамин D был не нужен, то сбалансированный рацион стал бы дешевле на 32%.

В последних шести колонках показаны топ-3 продукта (и их доли), из которых получается больше всего данного элемента, при данном рационе. Так витамин А получается в основном из моркови, витамин C из капусты, витамин D из рыбных продуктов, холестерин их яиц и т.д.

Сбалансированный дневной рацион с оптимизацией по субъективной «вкусности» продуктов

В качестве цены продуктов проставлены мои субъективные оценки «невкусности» продуктов от 1 (очень вкусно) до 5 (не вкусно).

Таблица 3. Продукты в сбалансированном дневном рационе с оптимизацией по субъективной «невкусности» продуктов

Из таблицы 3 видно, что стоимость сбалансированного рациона, оптимизированного по субъективной «невкусности» продуктов, составляет ~1200 р.

Рацион сильно поменялся по сравнению с оптимальным по деньгам, появились такие продукты как арбуз, зелёный горох, творог, ламинария, ржаной хлеб, кедровый орех, оливковое масло и др.

Совпадают с предыдущим рационом только вода, свекла, форель, подсолнечное масло и добавки фтор и омега-3. Причём добавки теперь используются не на 100%, часть удаётся получить из обычных продуктов.

Таблица 4. Элементы в сбалансированном дневном рационе с оптимизацией по субъективной «невкусности» продуктов

Из таблицы 4 видно, что количество всех элементов по-прежнему находится между верхней и нижней границей, т.е. и этот рацион сбалансированный. В относительном избытке (по верхней границе нормы): сахар. Любовь к арбузам даёт о себе знать, больше половины сахара здесь из арбузов.

Источники элементов изменились, например по незаменимым аминокислотам, теперь высока роль творога и свежего гороха, а не рыбы.

Выводы

  • Достичь сбалансированного рациона не просто, но возможно. Наличие витаминов упрощает эту задачу.

  • Существует множество вариантов сбалансированных рационов, из которых можно выбирать любой, например наиболее оптимальный по некоторому интересующему критерию.

  • Каждый может аналогично рассчитать для себя сбалансированный рацион, оптимальный в интересующем аспекте, и разнообразить его введя ограничения на максимальные количества продуктов.

  • Омега-3 обычно не хватает, нужно пить её добавки.

  • Глицин обычно гораздо выше минимальной нормы во всех экспериментах, не совсем понятно зачем вообще нужны его добавки.

  • Снижение нормы калорий, сильно снижает пространство оптимальных решений, поэтому лучше больше потреблять и больше тратить калорий, чем сидеть на диете и на диване.

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

Возникает предположение, что сильные дефициты элементов, могут приводить к отклонениям в пищевом поведении, например, к увеличению аппетита. Так, если в рационе много пустых калорий, то организму приходится добирать нужные элементы, увеличивая аппетит. Если это предположение верно, то сбалансированный рацион — это способ обуздать аппетит.

Заключение

Данное исследование не полное по следующим причинам:

  • Совсем не учитываются элементы НЕ необходимые, но вредные с определённой дозы, например такие как оксалаты и сотни других,

  • Не учитываются возможности организма по синтезу дефицитных элементов из избыточных элементов (например, холин -> бетаин) 

  • Включены не все необходимые элементы,

  • Используется не полный набор возможных продуктов,

  • Исходные данные, хоть и критически анализировались, но по большому счёту, взяты на веру из различных источников.

Кроме того, я не имею образования в области диетологии и не считаю себя экспертом в этой области, поэтому, полученные выводы, не должны восприниматься как руководство к действию )).

Теги:
Хабы:
Всего голосов 31: ↑30 и ↓1+36
Комментарии31

Публикации

Истории

Ближайшие события

19 августа – 20 октября
RuCode.Финал. Чемпионат по алгоритмическому программированию и ИИ
МоскваНижний НовгородЕкатеринбургСтавропольНовосибрискКалининградПермьВладивостокЧитаКраснорскТомскИжевскПетрозаводскКазаньКурскТюменьВолгоградУфаМурманскБишкекСочиУльяновскСаратовИркутскДолгопрудныйОнлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн
24 – 25 октября
One Day Offer для AQA Engineer и Developers
Онлайн
25 октября
Конференция по росту продуктов EGC’24
МоскваОнлайн
26 октября
ProIT Network Fest
Санкт-Петербург
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань