Проблем с диетата.

Кристиан Дейвид Соса Агире.

Математически инженерни модели - магистърска програма по електротехника. Технологичен университет в Перейра.

mie-001

Резюме - В този документ ще намерите информация за решението на пример за диетичен проблем, който е проблем с линейно програмиране, за който се използва AMPL. Показват се резултатите, програмният код и общото обяснение на проблема.

ВЪВЕДЕНИЕ

А. Линейно програмиране.

Линейното програмиране е вид програмиране, което има за цел да решава математически модели, които са само линейни по своята същност, от своя страна целта е да може да се оптимизира всеки проблем или чрез намиране на минималната или максималната стойност на целевата функция, която се анализира.

Задача за математическо програмиране изисква 4 основни компонента:

  • Набор от данни.
  • Набор от включени променливи и техните домейни.
  • Набор от ограничения (приложим регион).
  • Целева функция.

Б. Проблемът с диетата.

„Проблемът с диетата се състои в определянето на количествата различни храни, които трябва да се приемат, за да се осигурят определени хранителни условия и да се сведе до минимум разходите за закупуване на храна. По-точно, да предположим, че хранителното съдържание на някои храни, техните цени и препоръчителното минимално дневно количество хранителни вещества са известни. Проблемът се състои в определянето на количеството на всеки артикул, който трябва да бъде закупен, така че да се спазят минималните препоръчителни цени и да се достигне минимална обща цена. [1].

Математическият модел, описан по символичен начин, е представен на фигура 1.

Фиг. 1. Математически модел на диетичния проблем.

Параметрите на модела са описани по-долу:

Фигура 2. Параметри на модела.

II. ПРИЛОЖЕНИЕ УПРАЖНЕНИЕ

За да разберете проблема с диетата, е представен следният пример за приложение, със съответното му решение, програмирано в AMPL.

Има 5 храни и всяка от тях има 4 хранителни вещества, а количеството хранително вещество i за храна j, има и минималното количество хранително вещество i, което трябва да се консумира, от своя страна са представени съответните цени за всяка храна j. Целта е да се намери количеството храна на най-ниската цена, която задоволява, поне минималните количества хранителни вещества си заслужават излишъка.

Храните са; Царевица А, овес, царевица Б, трици и ленено семе.

Хранителните вещества са; DN, DP (те са смилаеми протеини), Ca (калций) и Ph (фосфор).

Следващата фигура представя обобщената информация:

Фигура 3. Параметри на упражняване на приложението.

За да се реши моделът, се използва следната конвенция за храните:

  • Царевица А е номер 1.
  • Овесена каша, това е номер 2.
  • Царевица В е номер 3.
  • Запазено, това е номер 4.
  • Ленено семе, това е номер 5.

Конвенцията за хранителните вещества е следната: - DN, е номер 1. - DP, е номер 2. - Ca, е номер 3. - Ph, е номер 4

Решаване на модела в AMPL. AMPL е език за програмиране, чиято функция е да решава проблеми с оптимизацията.Предимството, което предлага тази среда е, че моделът може да бъде описан символично, тоест, както е показано на фигура 1. Трябва обаче да бъдат изпълнени определени критерии:

Познавайте програмната среда.

За да се реши всеки проблем, трябва да се генерира a.mod файл, където моделът е описан символично.

Трябва да се генерира .dat файл, там се посочват параметрите на модела.

По желание може да бъде избран решавачът за решаване на проблема, но той избира такъв по подразбиране, като в това трябва да се внимава, тъй като някои решаващи устройства са изключителни за един тип програмиране и не са толкова ефективни при решаване на друг тип програмиране.

По-долу е даден кодът, написан в AMPL за решаване на упражнението на приложението и резултатите от него.