Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
отчет1.doc
Скачиваний:
2
Добавлен:
25.08.2019
Размер:
752.13 Кб
Скачать

1. Постановка задачи.

Постановка задачи. Задача о диете состоит в подборке наиболее экономного (дешевого) корма для животных, удовлетворяющего определённым медицинским требованиям.

Имеется n видов продуктов питания. Обозначим эти продукты как , Известна стоимость единицы каждого продукта Сi. Из этих продуктов необходимо составить пищевой рацион, который должен содержать m видов полезных элементов (белки, жиры, углеводы и т.п.) , причем количество каждого элемента в рационе должно быть не менее Bj. Обозначим эти компоненты через Для каждой единицы i-го продукта известно содержание j-го вида элемента - aij . Требуется так составить пищевой рацион, чтобы обеспечить заданные условия при минимальной стоимости рациона.

Составим таблицу, указывающую, какое количество каждого компонента содержится в единице веса каждого типа продуктов :

Матрица называется матрицей питательности.

Рацион - это количество единиц -го продукта, которое скармливается животному за определённый срок. К рациону предъявляются определённые требования:

  1. должны быть выполнены определённые медицинские требования, которые заключаются в том, что за указанный срок животное должно получить не менее определённого количества единиц каждого компонента. Обозначим через то минимальное количество j-го компонента, которое должно получить животное. Тогда рацион должен удовлетворять ограничениям:

;

2) очевидно что ;

3) стоимость рациона должна быть минимальной: ,

где z – целевая функция

– цена компонента

4) ограничения на количество объема каждого продукта .

В итоге математическая модель такая, что:

Или в векторной форме:

Где .

Так как целевая функция и ограничения являются линейными, то задача решается методами линейного программирования и называется двойственной задачей линейного программирования.

Двойственную задачу можно привести к исходной задаче линейного программирования.

Где

2. Описание алгоритма

Введем в задачу (4) балансовые переменные . Вектор называется балансовым вектором, а переменные - балансовые переменные.

Тогда система ограничений задачи (4) перепишется так:

В целевую функцию балансовые переменные входят с нулевыми коэффициентами:

Или в векторной форме:

И так вместо задачи (1)-(3) решается задача (5)-(7).

Геометрически система равенств (5) представляет выпуклый многогранник в . В ходе решения симплекс-методом перебираются пересечения граней этого многогранника (крайние точки) в направлении увеличения значения целевой функции.

В начале считаем, что переменные - свободные, а - базисные.

Введем обозначения:

- вектор, составленный из коэффициентов при переменной ;

- вектор, составленный их коэффициентов вектора , которые соответствуют текущим базисным переменным;

- симплексные разности для k-ой крайней точки

Шаг 1: Для каждой крайней точки строится симплекс-таблица по указанным выше правилам:

Базис

С

1) Если для k-ой крайней точки все симплексные разности , то эта точка оптимальна. Конец решения. Вектор решения получаем отбросив балансовые переменные в векторе .

2) Если есть столбец, в котором симплексная разность , а все элементы столбца , то задача решения не имеет, т.к. целевая функция неограниченна сверху.

3) В остальных случаях переходим к Шагу 2.

Шаг 2: Находим - направляющий столбец. Это такой столбец, в котором самая минимальная симплексная разность среди отрицательных разностей:

.

Находим - направляющую строку из условия:

.

Тогда направляющий элемент - .

Шаг 3: Теперь вводится новая базисная переменная вместо . Выполняется один шаг метода Гаусса: вектор заменяется на единичный вектор, с единицей на -ом месте.

– новые элементы направляющей строки: ; – новые значения остальных элементов матрицы: ;

– новые значения симплексных разностей: ; – вычисляем

Так получаем новую (k+1)-ую крайнюю точку. Переходим к Шагу 1.