Розв’язання задач лінійного програмування в середовищі MATLAB

Характеристика середовища MATLAB та допоміжного пакету Optimization Toolbox. Функція linprog та її застосування у вирішенні оптимізаційних задач. Приклад вирішення задачі лінійного програмування у середовищі MATLAB. Вирішення задач мінімізації функцій.

Рубрика Экономико-математическое моделирование
Вид контрольная работа
Язык украинский
Дата добавления 21.12.2012
Размер файла 27,0 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Розв'язання задач лінійного програмування в середовищі MATLAB

Вступ

Розвиток сучасного суспільства характеризується підвищенням технічного рівня, ускладненням організаційної структури виробництва, поглибленням суспільного поділу праці, пред'явленням високих вимог до методів планування і господарського керівництва. У цих умовах тільки науковий підхід до керівництва економічним життям суспільства дозволить забезпечити високі темпи розвитку народного господарства.

Необхідною умовою подальшого розвитку економічної науки є застосування точних методів кількісного аналізу, широке використання математики. В даний час новітні досягнення математики і сучасної обчислювальної техніки знаходять все більш широке застосування в економічних дослідженнях і плануванні.

Одним з основних стає завдання створення єдиної системи оптимального планування та управління народним господарством на базі широкого застосування математичних методів і електронно-обчислювальної техніки в економіці.

Однією з важливих сфер використання систем комп'ютерної математики, таких, як MATLAB у наукових дослідженнях і університетах є розв'язування і дослідження екстремальних задач, що виникають у різних галузях людської діяльності: від самої математики до комп'ютерної техніки, економіки, управління тощо. Розуміння важливої ролі задач даного класу для розвитку сучасного постіндустріального суспільства обумовило те, що навчальні плани багатьох спеціальностей математичного, комп'ютерного, технічного та економічного напрямів підготовки містять дисципліни, основним предметом вивчення яких є оптимізаційні задачі і моделі.

У даній роботі буде розглянуто один з найкращих, за даними дослідження С. Стейнхауса [1], універсальний математичний пакет MATLAB, проаналізовано його основні засоби, призначені для знаходження екстремумів функцій від багатьох змінних, а також для розв'язування задач програмування. Це обумовлено тим, що:

- по-перше, не дивлячись на те, що МОН України визначило пакет MATLAB як базовий для ВНЗ України, використання цього пакету при вивченні математичних дисциплін, за даними проведеного Ю. Триусом та М. Жалдаком [2] анкетування викладачів, є невиправдано низьким (7% з 70 респондентів);

- по-друге, пакет MATLAB, за результатами дослідження, має найбільш потужні і гнучкі засоби розв'язування екстремальних задач, які дозволяють не лише одержати наближені розв'язки досить широкого класу задач оптимізації, але й завдяки прямому доступу до широкого набору параметрів, проводити всебічний аналіз ітераційного процесу та методів, які при цьому використовуються.

1. Характеристика середовища MATLAB та допоміжного пакету Optimization Toolbox

MATLAB (скорочено від Matrix Laboratory, розроблена фірмою The MathWorks, Inc. (США, м. Нейтік, шт. Массачусетс)) - найбільш розвинена система програмування для науково-технічних розрахунків, доповнена до теперішнього часу кількома десятками більш спеціалізованих додатків, що відносяться до обчислювальної математики, обробки інформації, конструювання електронних приладів, економіки та ряду інших розділів прикладної науки.

MATLAB призначений насамперед для програмування чисельних алгоритмів. Він розробляється вже більше 15 років і виник на основі більш ранніх прикладних пакетів LINPACK і EIGPACK, створених в 1970-і рр. в США, і в свою чергу вплинув на появу таких систем, як MathCad, MAPLE і Mathematica. Удосконалення системи MATLAB відбувалося як у зв'язку з досягненнями в обчислювальній математиці, так і у зв'язку із змінами в архітектурі персональних комп'ютерів і розвитком загальносистемних засобів. З часом MATLAB був доповнений цілим рядом вже згадуваних додатків (toolboxes), що збільшили межі його застосовності.

MATLAB - система програмування високого рівня, що працює як інтерпретатор і включає великий набір інструкцій (команд) для виконання найрізноманітніших обчислень, завдання структур даних та графічного представлення інформації. Команди ці розбиті на тематичні групи, розташовані в різних директоріях системи. Зараз у системі налічується близько 800 команд, і приблизно половина з них цілком доступна починаючому користувачеві. Команди з великим можливим обсягом обчислень написані на мові програмування С, тому система виявляється майже відкритою для користувача. Є великі можливості для виведення двовимірної і тривимірної графіки і засоби управління нею. Користувач може без особливих труднощів додавати свої команди і писати програми в термінах вже існуючих команд. Стислість і наочність програмування і виняткові можливості візуалізації результатів роблять систему дуже ефективною при пошуках і апробації нових алгоритмів, при проведенні разових розрахунків і в навчальному процесі, оскільки її можна освоювати без попереднього знайомства з основами програмування й виконувати такі складні приклади, які неможливо робити з використанням інших систем.

Робота з системою в режимі прямих обчислень носить діалоговий характер. Користувач набирає на клавіатурі вираження, що обчисляється, редагує його в командному рядку і завершує введення натисненням клавіші ENTER.

При цьому:

* для вказівки введення початкових даних використовується символ»;

* дані вводяться за допомогою найпростішого рядкового редактора;

* для блокування виведення обчислень деякого виразу після нього треба встановити знак; (крапка з комою);

* якщо не вказана змінна зі значенням результату обчислень, то MATLAB призначає таку змінну з ім'ям ans;

* знаком привласнення є звичний математиці знак рівності =, а не комбінований знак: =, як в багатьох інших математичних системах;

* вбудовані функції (наприклад, sin) записуються малими буквами і їх аргументи вказуються в круглих дужках;

* результат обчислень виводиться в рядках висновку (без знаку»);

* діалог відбувається в стилі «задав питання - отримав відповідь».

Для вирішення оптимізаційних задач у середовищі MATLAB використовується пакет оптимізації Optimization Toolbox.

Пакет оптимізації (Optimization Toolbox) - це бібліотека функцій, що розширює можливості системи MATLAB в області чисельних розрахунків та призначена для вирішення задач оптимізації і систем нелінійних рівнянь. Підтримує основні методи оптимізації функцій ряду змінних:

* безумовна оптимізація нелінійних функцій;

* метод найменших квадратів;

* вирішення нелінійних рівнянь;

* лінійне програмування;

* квадратичне програмування;

* умовна мінімізація нелінійних функцій;

* методи мінімаксу;

* багатокритеріальна оптимізація.

Цей пакет дає можливість вирішувати задачі мінімізації функцій знаходження розв'язків рівнянь, задачі апроксимації («корекції» кривих під експериментальні дані). Всі функції, які використовуються в цьому пакеті, призначені для розв'язування задач мінімізації. Тому якщо необхідно розв'язати задачу максимізації, то досить перед цільовою функцією поставити знак «мінус» і скористатися однією з наявних функцій мінімізації.

MATLAB і Optimization Toolbox надають фінансовим аналітикам, інженерам та дослідникам засоби, необхідні для пошуку оптимальних та компромісних рішень, дозволяють налаштовувати та проводити діагностику задач оптимізації і швидко об'єднувати стандартні алгоритми оптимізації за своїми власними методами. Використовуючи функції результату можна зберігати параметри ітераційного процесу і створювати власні критерії зупинки розрахунку. Функції Optimization Toolbox написані на відкритій мові MATLAB, що дозволяє користувачеві контролювати виконання алгоритму, змінювати вихідний код, а також створювати власні функції і алгоритми.

2. Функція linprog та її застосування у вирішенні оптимізаційних задач

оптимізаційний програмування лінійний мінімізація

Для розв'язання задач лінійного програмування у пакеті оптимізації Optimization Toolbox використовується функція linprog. Вона призначена для розв'язування задачі виду:

f(x) = , (1)

x ? b, (2)

Aeq·x = beq, (3)

lb ? x ? ub, (4)

де c, x, b, beq, lb, ub - вектор-стовпчики, A, Aeq - прямокутні матриці, і яка має такий синтаксис:

x = linprog (c, A, b, Aeq, beq);

x = linprog (c, A, b, Aeq, beq, lb, ub);

x = linprog (c, A, b, Aeq, beq, lb, ub, x0);

x = linprog (c, A, b, Aeq, beq, lb, ub, x0, options);

[x, fval] = linprog(…);

[x, fval, exitflag] = linprog(…);

[x, fval, exitflag, output] = linprog(…);

[x, fval, exitflag, output, lambda] = linprog(…).

Розглянемо особливості параметрів exitflag, lambda, output, які використовуються в функції linprog. Так параметр exitflag приймає додатне значення, якщо ітераційний процес завершився у відповідності до заданої точності обчислень; від'ємне значення, якщо ітераційний процес не збігається до розв'язку, і 0, якщо було перевищено максимальну кількість ітерацій, яка визначається за параметром MaxIten, або максимальну кількість обчислень значень цільової функції, яка визначається за параметром MaxFunEvals.

Параметр lambda являє собою структуру з полями, які містять множники Лагранжа для кожної групи обмежень задачі в точці x, що є результатом розв'язування поставленої задачі:

- ineqlin - для обмежень-нерівностей,

- eqlin - для обмежень-рівнянь,

- upper - для прямих обмежень типу x ? ub,

- lower - для прямих обмежень типу lb ? x,

при цьому ненульові елементи векторів у полях параметра lambda відповідають активним обмеженням для знайденої точки x.

Якщо в умові задачі деякі вхідні дані відсутні, то замість відповідних величин треба ставити []. Наприклад, якщо в умові задачі (1) - (4) відсутні обмеження-нерівності виду (2), то треба ввести A=[] і b=[].

Функція може використовувати алгоритм великої розмірності lipsol або алгоритм середньої розмірності (метод проекцій).

3. Приклад вирішення оптимізаційної задачі

Розглянемо приклад вирішення задачі лінійного програмування у середовищі MATLAB.

Знайти f(x) = x1 - 4x2 - 2x3 > min

-x1 + 2x2 + 2x3 ? 8

x1 + x2 - x3 ? 2

2x1 - 3x2 + 3x3 ? 6

xj ? 0, j = 1, 2, 3

Розв'язання

Вхідні дані задачі подамо у матричному вигляді. Для цього у вікні Command Window пакету MATLAB треба виконати послідовно такі команди (%-… - коментарі до відповідних дій):

>> f = [1, -4, -2];% Вектор коефіцієнтів лінійної цільової функції

>>% Матриця коефіцієнтів обмежень-нерівностей

>> A = [-1 2 2; 1 1 -1; 2 -3 3];

>> b = [8; 2; 6];% Вектор обмежень-нерівностей

>> lb=zeros (3,1),

де функція zeros створює масив з нульовими елементами.

Після цього треба набрати і виконати команду

>> [x, fval, exitflag, output, lambda] = linprog (f, A, b, [], [], lb);

При цьому буде одержано такий результат:

Optimization terminated successfully.

x =

0.0000

3.0000

1.0000

fval =

-14.0000

exitflag =

1

output =

iterations: 6

algorithm: 'large-scale: interior point'

cgiterations: 0

message: 'Optimization terminated successfully.'

lambda =

ineqlin: [3x1 double]

eqlin: [0x1 double]

upper: [3x1 double]

lower: [3x1 double]

Таким чином, ми бачимо, що:

- оптимальний розв'язок х = [0.0000 3.0000 1.0000];

- мінімальне значення цільової функції дорівнює -14.0000;

- розрахунки закінчились знаходженням розв'язку (exitflag>0);

- всього було виконано 6 ітерацій;

- був використаний метод внутрішньої точки LIPSOL - Linear Interior Point Solver, який застосовується, як правило, для розв'язування задач великої розмірності (large-scale).

Висновки

Широкі аналітичні, обчислювальні і графічні можливості сучасних математичних пакетів роблять їх одними з основних інструментів у професійній діяльності математика-аналітика, інженера, економіста-кібернетика тощо. Тому їх використання у навчальному процесі ВНЗ при вивченні математичних дисциплін дозволить підвищити рівень професійної підготовки студентів, рівень їх математичної та інформаційної культури, зробити майбутніх фахівців конкурентоспроможними на міжнародному ринку праці.

МОН України та ВНЗ необхідно здійснити реальні кроки для того, щоб якнайшвидше ліцензійні математичні пакети в достатній кількості з'явилися на математичних кафедрах для забезпечення навчального процесу на математичних, природничих, комп'ютерних, технічних та економічних спеціальностях.

Список посилань

1. Stefan Steinhaus Comparison of mathematical programs for data analysis (Edition 4.4). - Munchen/Germany. - 60 p.: http://www.scientificweb.de/ncrunch/

2. Ю.В. Триус, М.І. Жалдак. Основи теорії і методів оптимізації: навч. посібник. - Черкаси: Брама-Україна, 2005. - 608 с.

3. Дьяконов В.П. Компьютерная математика. Теория и практика. - М.: Нолидж, 2001. - 1296 с.

4. Дащенко О.Ф., Кириллов В.Х., Коломієць Л.В., Оробей В.Ф. MATLAB в інженерних та наукових розрахунках: Монографія. - Одеса: Астро-принт, 2003. - 214 с.

5. Ульянченко О.В. Дослідження операцій в економіці: Підручник для студентів вузів / Харк. нац. аграр. ун-т ім. В.В. Докучаєва. - Харків: Гриф, 2002. - 580 с.

Размещено на Allbest.ru


Подобные документы

  • Багатокритеріальність, існуючі методи розв’язку задач лінійного програмування. Симплекс метод в порівнянні з графічним. Вибір методу розв’язання багатокритеріальної задачі лінійного програмування. Вирішення задачі визначення максимального прибутку.

    курсовая работа [143,7 K], добавлен 15.12.2014

  • Загальна модель задачі математичного програмування, задача лінійного програмування та особливості симплекс–методу для розв’язання задач лінійного програмування Економіко–математична модель конкретної задачі, алгоритм її вирішення за допомогою Exel.

    контрольная работа [109,7 K], добавлен 24.11.2010

  • Загальна економіко-математична модель задачі лінійного програмування. Основні форми запису задач. Оптимальний та допустимий розв'язок. Геометрична інтерпретація, властивості розв'язків та графічний метод розв'язування задач лінійного програмування.

    презентация [568,4 K], добавлен 10.10.2013

  • Поняття задачі лінійного програмування та різні форми її задання. Загальна характеристика транспортної задачі, її математична модель. Графічний метод для визначення оптимального плану задач лінійного програмування. Правило побудови двоїстої задачі.

    контрольная работа [1,5 M], добавлен 04.09.2015

  • Розробка програмного комплексу для розв’язання задачі цілочисельного програмування типу "Задача комівояжера". Класифікація задач дослідження операцій. Вибір методу розв’язання транспортної задачі; алгоритмічне і програмне забезпечення, тести і документи.

    курсовая работа [807,7 K], добавлен 07.12.2013

  • Побудування математичної моделі задачі. Розв'язання задачі за допомогою лінійного програмування та симплексним методом. Наявність негативних коефіцієнтів в індексному рядку. Основний алгоритм симплексного методу. Оптимальний план двоїстої задачі.

    контрольная работа [274,8 K], добавлен 28.03.2011

  • Теорія двоїстості та двоїсті оцінки у лінійному програмуванні. Економічна інтерпретація задач лінійного програмування. Правила побудови двоїстих задач. Встановлення зв’язків між оптимальними розв’язками задач за допомогою леми та теореми двоїстості.

    контрольная работа [345,7 K], добавлен 22.02.2011

  • Побудова опорного плану систему нерівностей. Постановка задачі на максимум. Індексний рядок та негативні коефіцієнти. Задача лінійного програмування. Рішення задачі симплексним методом. Введення додаткових змінних. Оптимальний план двоїстої задачі.

    контрольная работа [278,4 K], добавлен 28.03.2011

  • Приклади задач математичного програмування (на добір оптимальної суміші сплавів, складання оптимального раціону, транспортна, про оптимальний добір). Економічна модель задачі. Геометрична інтерпретація стандартної задачі, її розв’язання симплекс-методом.

    курсовая работа [8,3 M], добавлен 28.11.2010

  • Теорема Куна-Такера в теорії нелінійного програмування. Правила переходу від однієї таблиці до іншої. Точка розв’язку задачі. Побудування функції Лагранжа. Доведення необхідності умови. Розв'язання задачі квадратичного програмування в матричній формі.

    курсовая работа [197,7 K], добавлен 17.05.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.