Державний вищий навчальний заклад «Українська академія банківської справи Національного банку України» Кафедра економічної кібернетики ЕКОНОМІКО-МАТЕМАТИЧНІ МЕТОДИ І МОДЕЛІ: ОПТИМІЗАЦІЙНІ МЕТОДИ І МОДЕЛІ РОЗВ’ЯЗАННЯ ЗАДАЧ НЕЛІНІЙНОГО ПРОГРАМУВАННЯ З ВИКОРИСТАННЯМ MS EXCEL Методичні вказівки щодо виконання лабораторної роботи Для студентів 6.030502 – «Економічна кібернетика», 6.030503 – «Міжнародна економіка», 6.030508 «Банківська справа» денної форми навчання Суми – 2013 Лабораторна робота №5 «РОЗВ’ЯЗАННЯ ЗАДАЧ НЕЛІНІЙНОГО ПРОГРАМУВАННЯ З ВИКОРИСТАННЯМ MS EXCEL» Мета роботи: Набути навички вирішення задач нелінійного програмування з використанням комп’ютерної техніки. Порядок виконання роботи: 1. Згідно номеру вашого варіанту (табл.1) обрати умову задачі. Використовуючи функцію Лагранжа, аналітично обчислити оптимальні значення задачі, продемонструвати викладачу. Таблиця 1 Номер варіанту 1 Цільова функція Обмеження Z x12 x22 2 x1 3x2 4 x1 2 x2 3 2 Z 3x12 x22 2 x1 4 x2 10 2 x1 2 x2 7 3 Z 5x12 x22 2 x1 4 x2 12 x1 2 x2 4 4 Z x12 2 x1 x2 4 x22 2 x1 4 x2 10 x1 2 x2 3 5 Z 2 x12 5x1 x2 3x22 2 x1 x2 4 x1 x2 5 6 Z 2 x1 x2 4 x22 x1 4 x2 17 3x1 2 x2 3 7 Z 2 x12 x22 2 x1 3 x 2 5 8 Z x12 x22 3x1 4x2 12 9 Z x1 12 x 2 32 2 x1 x2 5 10 Z x12 2 x 22 3x32 x1 2 x2 x3 8 11 Z x12 2 x1 x22 5x2 x1 3x2 6 12 Z 2 x12 5x1 x22 3x2 . x1 5x2 12 13 Z 4 x1 2 x12 x2 2 x22 3x1 4x2 12 14 Z 2 x1 x2 x22 . 2 x1 4 x2 8 15 Z 3x12 2 x22 3x1 1 . x12 x22 4 16 Z 2x1 1 2 3x 2 3 2 17 Z x12 x22 x1 x2 5 x1 x2 4 18 Z x1 3 2 x 2 5 2 x1 2 x2 5 19 Z 2 x1 3x 22 x32 x1 x 2 x3 8 20 Z x1 x 2 x3 x1 x2 x 3 6 21 Z 3x12 5 x 2 12 x32 3x1 8x2 4 x3 18 22 Z 5 x12 3x 22 15 x32 4 x1 7 x2 x3 14 23 Z x1 12 x 2 32 3x1 6 x2 30 Номер варіанту Цільова функція Обмеження 24 Z 3x12 2 x22 2 x1 3x 2 4; x1 2 x 2 8. 25 Z x12 x 22 3x32 x1 2 x 2 x3 16 26 Z 3 x12 5 x 22 6 x1 x3 2 x1 2 x2 x3 4 27 Z x12 2 x22 x3 x1 3x2 2 x3 6; x2 x3 4. 28 Z 2 x12 x 22 3x32 x1 3 x 2 2 x3 9 29 Z 2 x1 x 2 x1 x3 x 2 x3 3x1 2 x 2 x3 1; 2 x1 x 2 3x3 4. 30 Z x2 x1 2x12 3x1 4 x 2 12; x1 2 x 2 6. 31 Z 8x1 2 x12 4 x1 x2 x22 6 x1 2 x 2 6; x1 8 x 2 16. 2. Знайдіть оптимальне рішення задачі в MS Excel і MathCad, порівняйте результати та продемонструйте їх викладачу. 3. Вирішить рівняння f(x)=0, задане вашим варіантом в таблиці 2. Таблиця 2 Номер варіанту 1 2 Задана функція f(x) 3,8 3 sin x x 0,35 1 x 3 sin 3,6 x Відрізок [a,b] [2; 3] [0; 0,85] 3 cos 1 0,3x3 x [0; 1] 4 sin 1 0,4 x 2 x 0,25x3-x -1,2502 0,1x2- x ln x 3x - 4ln x -5 ex- e-x- 2 x x 3 x 2,5 [0; 1] 5 6 7 8 9 10 11 12 13 tg 3 x tg 5 x 1 3 5 3 2 1 1 cos 2 sin x x x sin(ln x) - cos(ln x)+ +2ln x lnx - x+1,8 tgx [2; 3] [1; 2] [2; 4] [0; 1] [0,4; 1] [0; 0,8] [1; 2] [1; 3] [2; 3] Номер варіанту 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 Задана функція f(x) Відрізок [a,b] 0,4 arctg x x [1; 2] 1 3 tg(0,55x+0,1) -x2 1 2 sin x x 1+sinx - ln(1+x) -x - cos(x0,52+2) - x xtgx ln1 x 3 x ex+ln x - 10x 3x - 14+ex- e-x 2ln2x+6lnx - 5 2x sinx - cosx 2 x cos x e 2 x 1 1 x tgx sinx2+cosx2-10x e x 1 e 2x 2 1 x cos 1 x x x tg ctg x 2 2 x-cos x 29 30 31 [0,2; 1] [0; 1] [1,2; 2] [0;1, 5] [0,5; 1] [2; 3] [3; 4] [1; 3] [1; 3] [0,4; 1] [1; 2] [0; 0,9] [0; 1] [-1; 0] [0; 0,9] [1; 2] [0,5; 2,5] Вимоги до оформлення звіту. Звіт про проведення даної лабораторної роботи оформлюється наряду з іншими звітами цього курсу згідно встановлених вимог до оформлення звітів і містить: • опис мети лабораторної роботи; • вихідні дані варіанту; • короткий опис дій по пунктах виконання лабораторної роботи; • результати вирішення задач. Контрольні питання: 1. Які задачі можуть бути вирішені з використанням надбудови «Поиск решения»? 2. Як задається комірка з цільовою функцією? 3. Як задати регульовані комірки? 4. Як встановити допустиму помилку пошуку? 5. Як задати позитивність рішення? 6. Які задачі вирішуються підбором параметру? 7. Яку команду потрібно виконати, щоб виконати підбір параметру? ДОВІДКОВІ МАТЕРІАЛИ ПОИСК РЕШЕНИЯ ПОДБОР ПАРАМЕТРА ПОИСК РЕШЕНИЯ В состав MS Excel входит мощное инструментальное средство – Поиск решения. С помощью этого средства можно решать задачи нелинейного программирования. В частных случаях с помощью Поиск решения может быть получено решение функционального уравнения, системы линейных уравнений, найден максимум или минимум функции нескольких переменных. 1. Математическая формулировка Задачи, которые могут быть решены с помощью Поиск решения, в общей постановке формулируются так. Найти значения переменных x1, x2, … , xn, такие, что целевая функция f(x1, x2, … , xn) примет заданное значение, или минимальное значение, или максимальное значение. При этом могут быть заданы ограничения вида g(x1, x2, … , xn), принимающие заданные значения, или значения <= заданных, или значения >= заданных. Искомые переменные – ячейки рабочего листа MS Excel – называются регулируемыми ячейками. На регулируемые ячейки можно наложить дополнительные ограничения, например положительности или целочисленности значений. Поиск решения может быть применен и для решения оптимизационных задач. Для использования инструмента Поиск решения следует воспользоваться командой меню СервисПоиск решения. 2. Выполнение задания Продемонстрируем эту возможность на примере. Суть задачи состоит в том, что автор продал некоторую программу лакокрасочному предприятию за 14 млн.руб. Наличными деньгами предприятие не располагало, но было готово расплатиться в пределах этой суммы своей продукцией – краской. Краска выпускалась в двух видах тары – больших и малых банках (барабанах), емкость которых соответственно составляла 55 и 15 л, а стоимость пустых барабанов – 30 и 24 тыс.руб. Литр краски стоит 14600 руб. Автор программы заинтересован в том, чтобы, не выходя за пределы договорной суммы, получить от лакокрасочников как можно больше краски. При этом имеется возможность лишь указать количество больших и малых барабанов с краской, но нельзя взять краску в разлив. Это типичная оптимизационная задача. Сначала следует убедиться, что количество полученной краски относительно количества барабанов. действительно зависит от принятого решения Для облегчения выполнения расчета объема полученной краски в зависимости от количества взятых больших и малых барабанов следует применить рабочий лист MS Excel. 1. Создайте свою рабочую папку. 2. Загрузите MS Excel. 3. Сохраните созданный файл под именем Оптимизация.xls в своей рабочей папке. 4. На листе Лист1 создайте таблицу, соответствующую рис.1. При этом в ячейки B4:B7 и B10:B12 запишите очевидные расчетные формулы. Рисунок 1 – Подготовка таблицы MS Excel для автоматизации выполнения расчетов 5. Сначала подсчитайте, сколько краски можно получить, если всю ее взять в малых барабанах. Вот понятная формула, которая позволяет прикинуть количество малых барабанов, которое можно получить в пределах договорной суммы: 14000000/243000 = 57,6. Итак, можно получить 57 малых барабанов. 6. Введите в ячейке B8 Вашей электронной таблицы значение 57 и нажмите на клавишу Enter. Если в веденных формулах Вы не допустили ошибок, то Вы увидите, что при таком решении всего будет получено 855 л краски, а у покупателя программы останутся не выбранными 149000 руб. 7. Заслуживает внимания другое решение – взять краску в больших барабанах, а остаток выбрать малыми барабанами. Количество больших барабанов, которое можно получить, очевидно, равно 14000000/833000 = 16,8. 8. Введите в ячейке B8 Вашей электронной таблицы значение 0, а в ячейке B9 значение 16. При этом Вы увидите, что будет получено880 л краски, а остаток денег составит 672000 руб. Последнее решение по количеству полученной краски уже лучше, чем предыдущее. Кроме того, за счет остатка денег можно взять еще некоторое количество малых барабанов краски, которое равно 672000/243000 = 2,8. 9. Введите в ячейке B8 значение 2. Окончательный результат принятого решения позволяет получить 910 л краски, а остаток денег составит 186000 руб. Итак, во втором варианте будет получено на 55 л краски больше, чем в первом варианте. Возникает естественный вопрос: существует ли решение, при котором можно получить еще больше краски? Как Вы установите дальше, такое решение действительно существует. Для решения этой задачи поиска максимума полученной краски можно применить Поиск решения. В электронной таблице ячейки В8 и B9 будут играть роль регулируемых ячеек, а ячейка B10 – это ячейка с целевой функцией. 10. Проверьте наличие в меню Сервис команды Поиск решения. Если такой команды в этом пункте нет, то ее требуется установить. Для этого выполните команду Сервис, Надстройки, в появившемся окне Надстройки в списке надстроек установите флажок напротив строки Поиск решения и щелкните на кнопке ОК. 11. Выделите ячейку B10 с целевой функцией и выполните команду меню Сервис, Поиск решения. Появится окно Поиск решения (рис.2), в поле Установить целевую которого уже должна быть абсолютная ссылка на ячейку B10. Если же этой ссылки там не оказалось, то ее следует туда поместить. Для этого надо щелкнуть в поле Установить целевую, чтобы установить там курсор. Затем нужно щелкнуть на ячейке B10, в которой содержится целевая функция. Рисунок 2 – Окно Поиск решения 12. Проверьте, чтобы был включен переключатель, показывающий, что нужно найти максимум целевой функции. 13. Поместите в поле Изменяя ячейки диапазон регулируемых ячеек. Для этого поместите курсор в этом поле и выполните буксировку мыши при нажатой левой кнопке по регулируемым ячейкам (в рассматриваемом примере – это ячейки B8 и B9). 14. Добавьте ограничения, которые имеют место в рассматриваемом примере. Их два. Первое состоит в том, что сумма истраченных денег не должна превышать 14000000 руб. Щелкните на кнопке Добавить. В появившемся окне Добавление ограничения (рис.3) в поле Ссылка на ячейку поместите ссылку на ячейку B11, в которой записана формула вычисления размера истраченной суммы. Рисунок 3 – Добавление ограничения на сумму истраченных денег 15. В поле Ограничение поместите ссылку на ячейку B2, в которой указана сумма договора. 16. Выберите нужный знак отношения между полями Ссылка на ячейку и Ограничение. В результате этих действий содержание полей окна Добавление ограничения должно соответствовать рис. 3. 17. Щелкните на кнопке Добавить, чтобы учесть введенное ограничение и вывести новое окно для ввода второго ограничения, которое состоит в том, что количество малых барабанов (ячейка B8) и количество больших барабанов (ячейка B9) могут принимать только целочисленные значения. 18. В новом окне Добавление ограничения введите в поле Ссылка на ячейку диапазон B8:B9. 19. В поле, расположенном справа от поля Ссылка на ячейку, раскройте список значений и выберите значение цел. Окно Добавление ограничения должно выглядеть, как показывает рис.4. Рисунок 4 – Учет целочисленности количества барабанов 20. Щелчком на кнопке ОК закончите ввод ограничений. После этого содержание полей окна Поиск решения должно соответствовать рис.2. 21. По умолчанию поиск экстремума целевой функции выполняется с допустимой погрешностью 5% (обычная инженерная погрешность). Эта погрешность для рассматриваемого примера слишком велика, так как соответствует 910·0,05=45,5 л краски, что намного больше емкости малого барабана. Погрешность поиска максимума в рассматриваемом примере не должна быть больше емкости малого барабана, которая составляет 15/910·100=1,65 % общего объема краски. 22. Для повышения требуемой точности поиска решения щелкните на кнопке Параметры окна Поиск решения. 23. В появившемся окне Параметры поиска решения (рис.5) в поле Допустимое отклонение замените значение 5 на 1,5. Рисунок 5 – Настройка параметров поиска решения 24. Установите в этом же окне флажок Неотрицательные значения, указав тем самым, что искомые количества барабанов краски не могут принимать отрицательные значения. 25. Закройте окно Параметры поиска решения щелчком на кнопке ОК. Подготовка к поиску решения закончена. 26. Чтобы начать поиск решения, щелкните на кнопке Выполнить окна Поиск решения. После окончания процесса поиска появится окно Результаты поиска. 27. В окне Результаты поиска включите переключатель Сохранить найденное решение и закройте окно щелчком на кнопке ОК. 28. Обратите внимание на значения регулируемых ячеек (рис.6), которые они приобрели после окончания поиска максимума целевой функции. Проанализируйте полученное решение. Теперь получено 915 л краски, то есть на 5 л больше, чем давал предыдущий вариант решения. Рисунок 6 – Результат поиска максимума объема полученной краски Итак, наибольшее количество краски будет получено, если взять 15 больших и 6 малых барабанов с краской. И при этом у заказчика будет оставлено 47000 руб. И самое главное, теперь известно, что это лучшее решение. 29. Возможно более важным является минимизация невыбранных денег, а не получение максимального количества краски. Решите задачу минимизации суммы денег, оставленных у заказчика (ответ: 11000 руб, если взять 6 больших и 37 малых барабанов). 30. Закройте MS Excel. 31. Удалите свою рабочую папку. ПОДБОР ПАРАМЕТРА Один из частных случаев возможности применения Поиск решения – это решение задачи подбора параметра. Пусть имеется некоторая функция одного аргумента, которую обозначим f(x). Предположим, что значение аргумента x мы можем назначать по своему усмотрению. И задача состоит в том, чтобы установить такое значение аргумента x, при котором функция f(x) примет заданное значение c. Мы пришли к известной математической задаче решения функционального уравнения f(x) = с. Решение этой задачи выполняется следующим образом. Выполнить команду меню Сервис, Подбор параметра. В поле Установить в ячейке следует ввести ссылку на ячейку, содержащую формулу f(x). Ввести искомый результат в поле Значение. В поле Изменяя значение ячейки ввести ссылку на ячейку, содержащую подбираемое значение x и щелкнуть на кнопке ОК. Среди финансовых функций Excel есть функция ППЛАТ(ставка; кпер; нз; бз; тип), которая вычисляет величину постоянных выплат по ссуде на основе постоянной процентной ставки. Аргументами этой функции являются: ставка – процентная ставка по ссуде; кпер – общее число выплат по ссуде; нз – значение взятой ссуды; бз – будущая сумма или баланс наличности, которой нужно достичь после последней выплаты. Если бз опущено, оно полагается равным нулю; тип – равное 0 число или опущено, если платить нужно в конце периода или равное 1 число, если платить нужно в начале периода. Например, если Вы взяли ссуду 10000 рублей на условиях ежемесячной в течение года выплаты из расчета процентной ставки 10%, то размер ежемесячной выплаты можно рассчитать с помощью формулы: = ППЛАТ(10%/12;12;-10000). Результат вычислений по этой формуле показан в табл.1. Таблица 1 Решите следующую задачу. Вы хотите взять ссуду 10000 рублей на 1 год с ежемесячной выплатой. Вы готовы по прошествии каждого месяца платить в течение года по 900 рублей. Какой должна быть процентная ставка? Эта задача может быть решена подбором параметра. 1. Создайте свою рабочую папку. 2. Запустите MS Excel. 3. Сохраните файл под именем Подбор параметра.xls в своей рабочей папке. 4. На листе Лист1 создайте таблицу, подобную табл.1. В этой таблице ячейка В2 будет играть роль регулируемой ячейки. В этой ячейке Вы получите результат поиска искомого значения процентной ставки. В начале же в эту ячейку запишите начальное значение процентной ставки, например 10,0%, с которого начнется поиск. 5. С помощью команды меню Формат, Ячейки установите в ячейке B2 процентный формат с одним знаком дробной части. 6. В ячейке В1 запишите формулу = ППЛАТ(B2/12;12;-10000). 7. Выделите ячейку В1 таблицы с формулой. 8. Выполните команду Сервис, Подбор Параметра. Появится диалоговое окно Подбор параметра, изображенное на рис.1. В поле Установить в ячейке уже будет находиться ссылка на выделенную на предыдущем шаге ячейку с формулой. Рисунок 1 – Окно подбора параметра 9. В поле Значение введите величину, которой должна быть равна ежемесячная выплата в результате подбора значения процентной ставки. В рассматриваемом примере это значение 900. 10. В поле Изменяя значение ячейки введем ссылку на исходную ячейку В2 (можно просто щелкнуть по этой ячейке), влияющую на результат вычислений по формуле. Рисунок 2 – Окончание подбора параметра 11. Щелкните на кнопке ОК. Решатель начнет итерационный процесс поиска решения. Появиться диалоговое окно Результат подбора параметра (рис. 2). 12. В этом окне текущее значение – это величина ежемесячной выплаты при найденном значении процентной ставки. 13. Щелкните на кнопке ОК. Искомое значение процентной ставки содержится в регулируемой ячейке В2 и равно 14,5% (см. табл. 2). Таблица 2 14. Если же выполнение итерационного процесса затянулось, щелкните в диалоговом окне Результат подбора параметра на кнопке Пауза или Отмена. После щелчка на кнопке Пауза можно выполнять процесс поиска по шагам. Для этого используется кнопка Шаг. Для возобновления автоматического поиска следует щелкнуть на кнопке Продолжить. 16. Закройте MS Excel. 17. Удалите свою рабочую папку.