Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основные методы решения ЗЛП_Методичка.doc
Скачиваний:
169
Добавлен:
19.05.2015
Размер:
3.26 Mб
Скачать

III. Построение линии уровня.

Замечание:

В связи с тем, что Maple является интерпретатором, следует учитывать, что после ввода и выполнения некоторой команды (группы) можно в любой момент времени вернуться на соответствующую строку, после чего по нажатию на <Enter> команда будет выполнена вновь. При этом в ряде случаев результат будет отличен от предыдущего, так как переменные и прочие конструкции (функции и т.д.) могут иметь уже другое значение.

Для того чтобы очистить значение переменной, необходимо присвоить ей свое собственное имя, записанное в одинарных кавычках.

Для моделирования движения семейства линий уровня выполняется построение множества параллельных прямых при различных значениях параметра с. Изменение параметра с возможно при помощи команды subs(<выражение 1>=<выражение 2>, <выражение 3>), которая позволяет подставлять в выражение 3 вместо выражения 1 выражение2.

  1. Очистите значение переменной;

> c:='c':

  1. Задайте целевую функцию, присвоив ей имя f1.

> f1:=x1+2*x2=c;

  1. Введите уравнение одной линии из семейства линий.

> L:=subs(c=2,f1);

  1. Постройте линию уровня, являющейся неявной функцией используя функцию implicitplot, входящую в библиотеку plots.

Для этого:

-графику первой линии уровня присвойте имя gr;

-построенный график не выводите на экран;

-используйте параметр linestyle, который используется для указания типа выводимой линии. Тип линии задается следующим образом linestyle=n, где n – целое число, по умолчанию – непрерывная линия при n=1.

> gr:=plots[implicitplot](L,x1=-2..8,x2=-2..8, color=black,thickness=2,linestyle=4):

  1. Визуализируйте область допустимых решений syst_ogr и линию уровня gr на одном чертеже (рис. 11) при помощи предложения.

> plots[display]({syst_ogr,gr});

Замечание:

Одним из преимуществ системы Maple по сравнению с другими математическими пакетами является возможность помещать в одну область построения разнотипные графики, используя функцию display библиотеки plots.

Рис. 11. Область допустимых решений, линия уровня при значении параметра c=2.

  1. Очистите значение переменной;

> c:='c':

IV. Нахождение оптимального плана и оптимального значения целевой функции

  1. Постройте другие линии уровня при различных параметрах. Выполняйте построение до тех пор, пока не найдется точка на многоугольнике решений, через которую проходит линия уровня функции f с наибольшим (если целевая функция максимизируется) или наименьшим (если она минимизируется) уровнем.

> f1:=x1+2*x2=c;

> L:=subs(c=7,f1);

> gr:=plots[implicitplot](L,x1=-2..8,x2=-2..8, color=black,thickness=2,linestyle=4):

> plots[display]({syst_ogr,gr});

Рис. 12. Область допустимых решений линия уровня при значении параметра c=7.

  1. Найдите прямые, пересечение которых соответствует точке выхода.

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

  1. Определите оптимальный план.

Для этого:

-очистите начения переменных x1 и x2;

> x1:='x1':x2:='x2':

-запишите целевую функцию, заданную по условию;

> f:=x1+2*x2;

-системе уравнений прямых, пересекающихся в точке оптимума, то есть системе уравнений первой и второй прямой, присвойте имя syst;

> syst:={-3*x1+14*x2=1, x1+x2=6};

-решите эту систему уравнений прямых, а полученное оптимальное решение запишите в переменную optimum.

Замечание:

Для аналитического решения системы алгебраических уравнений в Maple используется команда solve(<система уравнений>, <переменные>). Система уравнений записывается в фигурных скобках, при этом каждое уравнение разделяется запятыми. Результатом решения является множество, каждый элемент которого доступен определенным образом. В нашем случае система уравнений имеет имя syst и две переменных с именами x1, x2. и оптимальное значение целевой функции.

> optimum:=solve(syst,{x1,x2});

-отделите первую и вторую переменную из множества, используя команду subs.

> x1:=subs(optimum,x1);

> x2:=subs(optimum,x2);

  1. Найдите оптимальное значение целевой функции.

> fmax:=subs({x1=83/17,x2=19/17},f);