Міністерство освіти України p>
Севастопольський Державний Технічний p>
Університет p>
- p>
Департамент ІС p>
ВИКОРИСТАННЯ табличного симплекс - методу для РІШЕННЯ ЗАДАЧ p>
Лінійне програмування p>
ДЛЯ p>
ОПТИМІЗАЦІЇ ЕКОНОМІЧНИХ завдань p>
Пояснювальна записка до курсової роботи з дисципліни "Методи дослідження операцій " p>
Гнучкий магнітний диск p>
59 листів p>
Виконав: ст. гр. І-22 д p>
Крильцовим Т.В. p>
Прийняв:
Старобінская Л.П. p>
Севастополь p>
1997
- 3 - p>
ЗМІСТ p>
ВСТУП. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 5
1. КОРОТКИЙ ОГЛЯД АЛГОРИТМІВ РІШЕННЯ ЗАДАЧ p>
ЦІЄЇ ТИПУ. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 6 p>
1.1 Математичне програмування. . . . . . . . . . . . . . . .
. . . 6 p>
1.2 Табличний симплекс - метод. . . . . . . . . . . . . . . . . . .
. . . . . . . 7 p>
1.3 Метод штучного базису. . . . . . . . . . . . . . . . . .
. . . . . . . 8 p>
1.4 Модифікований симплекс - метод. . . . . . . . . . . . . . .
. . 8
2. Змістовні ПОСТАНОВКА ЗАВДАННЯ. . . . . . . . . . . . 10
3. РОЗРОБКА І ОПИС алгоритм вирішення p>
ЗАВДАННЯ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 11 p>
3.1 Побудова математичної моделі задачі. . . . . . . . . . . . p>
. . 11 p>
3.2 Рішення завдання вручну. . . . . . . . . . . . . . . . . . . . . p>
. . . . . . . . . 12
4. АНАЛІЗ МОДЕЛІ на чутливість. . . . . . . . . . . . 16 p>
4.1 Побудова двоїстої задачі та її чисельне рішення. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 16 p>
4.2 Визначення статусу ресурсів. . . . . . . . . . . . . . . . . .
. . . . . . . 16 p>
4.3 Визначення значимості ресурсів. . . . . . . . . . . . . . . .
. . . . . . 17 p>
4.4 Визначення допустимого інтервалу зміни запасу ресурсів. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 17 p>
4.5 Дослідження залежності оптимального рішення від змін запасів ресурсів. . . . . . . . . . . . . . . . . .
. . . . . . . . . 19 p>
- 4 - p>
5. ГРАФІЧНЕ ПОДАННЯ ОТРИМАНИХ p>
РЕЗУЛЬТАТІВ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 20
6. ВИСНОВКИ ТА РЕКОМЕНДАЦІЇ ЩОДО ПРАКТИЧНОГО p>
використанню. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . 22 p>
ДОДАТОК. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 23 p>
ЛІТЕРАТУРА. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 11 p>
- 5 - p>
ВСТУП p>
Мета даного курсового проекту - скласти план виробництванеобхідних виробів, що забезпечує максимальний прибуток від їх реалізації,звести цю задачу до задачі лінійного програмування, вирішити її симплекс - методом і скласти програму для вирішення завдання цимметодом на ЕОМ. p>
- 6 - p>
1. КОРОТКИЙ ОГЛЯД АЛГОРИТМІВ РІШЕННЯ ЗАДАЧ p>
ЦІЄЇ ТИПУ p>
1.1 Математичне програмування p>
Математичне програмування займається вивчення екстремальних завданьі пошуком методів їх вирішення. Задачі математичного програмуванняформулюються наступним чином: знайти екстремум деякої функції багатьохзмінних f (x1, x2, ..., xn) при обмеженнях gi (x1,x2, ... , Xn) (bi, де gi - функція, що описує обмеження, (--один з наступних знаків (, (, (, а bi - дійсне число, i = 1,
... , M. f називається функцією цілі (цільовафункція). p>
Лінійне програмування - це розділ математичногопрограмування, в якому розглядаються методи вирішення екстремальнихзавдань з лінійним функціоналом і лінійними обмеженнями, яким повиннізадовольняти шукані змінні. p>
Задачу лінійного програмування можна сформулювати так. Знайти max p>
за умови: a11 x1 + a12 x2 +. . . + A1n xn (b1; a21 x1 + a22 x2 +.
. . + A2n xn (b2; p>
.......
..................... Am1 x1 + am2 x2 + ... + amn xn (bm; x1 (0, x2 (0,..., xn (0. p>
Ці обмеження називаються умовами точність. Якщо всеобмеження задані у вигляді строгих рівностей, то дана форма називаєтьсяканонічної. p>
- 7 - p>
У матричній формі задачі лінійного програмування записуютьнаступним чином. Знайти max cT x за умови p>
A x (b; x (0, де А - матриця обмежень розміром (m (n), b (m (1) - вектор-стовпецьвільних членів, x (n (1) - вектор змінних, ст = [c1, c2, ..., cn]
- Вектор-рядок коефіцієнтів цільової функції. P>
Рішення х0 називається оптимальним, якщо для нього виконується умова ст х0 (ст х, для всіх х (R (x). P>
Оскільки min f (x) еквівалентний max [- f (x)], то завдання лінійногопрограмування завжди можна звести до еквівалентної задачі максимізації. p>
Для вирішення завдань даного типу застосовуються методи: p>
1) графічний; p>
2) табличний (прямий, простий) симплекс - метод; p>
3) метод штучного базису; p>
4) модифікований симплекс - метод; p>
5) двоїстий симплекс - метод. p> < p> 1.2 Табличний симплекс - метод p>
Для його застосування необхідно, щоб знаки в обмеженнях були виду
"менше або дорівнює", а компоненти вектора b - позитивні. p>
Алгоритм рішення зводиться до наступного: p>
1. Приведення системи обмежень до канонічного виду шляхом введення додаткових змінних для приведення нерівностей до рівності. P>
2. Якщо у вихідній системі обмежень були присутні знаки "одно" p>
- 8 - p>
або "більше або дорівнює", то в зазначені обмеження додаються штучні змінні, які так само вводяться і в цільову функцію зі знаками, що визначаються типом оптимуму. p>
3. Формується симплекс-таблиця. P>
4. Розраховуються симплекс-різниці. P>
5. Приймається рішення про закінчення або продовження рахунку. P>
6. При необхідності виконуються ітерації. P>
7. На кожній ітерації визначається вектор, що вводиться в базис, і вектор, що виводиться з базису. Таблиця перераховується за методом Жордана-Гаусса або яким-небудь іншим способом. P>
1.3 Метод штучного базису p>
Даний метод рішення застосовується за наявності в обмеженні знаків
"одно", "більше або дорівнює "," менше або дорівнює "і ємодифікацією табличного методу. Рішення системи здійснюється шляхом введенняштучних змінних зі знаком, що залежать від типу оптимуму, тобто длявиключення з базису цих змінних останні вводяться в цільову функцію звеликими негативними коефіцієнтами (, а в задачі мінімізації - зпозитивними (. Таким чином з початкової виходить нова (- завдання. p>
Якщо в оптимальному рішенні (- завдання немає штучних змінних, церішення є оптимальне рішення вихідної задачі. Якщо ж в оптимальномурішенні (- завдання хоч одна з штучних змінних буде відмінна віднуля, то система обмежень вихідної задачі несумісні і початкова завданнянерозв'язна. p>
1.4 Модифікований симплекс - метод p>
В основу даного різновиду симплекс-методу покладені такі особ - p>
- 9 - p>
ності лінійної алгебри, які дозволяють в ході рішення задачіпрацювати з частиною матриці обмежень. Іноді метод називають методомоберненої матриці. p>
У процесі роботи алгоритму відбувається спонтанне звернення матриціобмежень по частинах, відповідними поточними базисних векторах. Вказаназдатність робить вельми привабливою машинну реалізацію обчисленьвнаслідок економії пам'яті під проміжні змінні і значногоскорочення часу рахунку. Хороший для ситуацій, коли число змінних nзначно перевищує число обмежень m. p>
У цілому, метод відображає традиційні риси загального підходу до вирішеннязадач лінійного програмування, що включає в себе канонізацію умовзадачі, розрахунок симплекс-різниць, перевірку умов оптимальності, прийняттярішень про корекцію базису і виключення Жордана-Гаусса. p>
Особливості полягають у наявності двох таблиць - основний ідопоміжний, порядок їх заповнення і певної специфічності розрахунковихформул. p>
- 10 - p>
2. Змістовні ПОСТАНОВКА ЗАВДАННЯ p>
Для виробництва двох видів виробів А і В використовується три типитехнологічного устаткування. На виробництво одиниці виробу А йдечасу, годин: обладнанням 1-го типу - а1, обладнанням 2-го типу
- А2, обладнанням 3-го типу - а3. На виробництво одиниці виробу Вйде часу, годин: обладнанням 1-го типу - b1, обладнанням 2-готипу - b2,, обладнанням 3-го типу - b3. p>
На виготовлення всіх виробів адміністрація підприємства моженадати обладнання 1-го типу не більше, ніж на t1, обладнання 2 --го типу не більше, ніж на t2, обладнання 3-го типу не більше, ніж на t3 годин. p>
Прибуток від реалізації одиниці готового виробу А становить (рублів, авиробу В - (рублей. p>
Скласти план виробництва виробів А і В, що забезпечує максимальнуприбуток від їх реалізації. Вирішити задачу простим симплекс-методом. Датигеометричне тлумачення завдання, використовуючи для цього її формулювання зобмеженнями-нерівностями. а1 = 1 b1 = 5 t1 = 10 (= 2 а2 = 3 b2 = 2 t2 = 12 (= 3 а3 = 2 b3 = 4 t3 = 10 p>
- 11 - p>
3. РОЗРОБКА І ОПИС алгоритм розв'язання задачі p>
3.1 Побудова математичної моделі задачі p>
| | На вироб-во | На вироб-во | підпр-е |
| | Виробу А, годин | вироби B, годин | надасть, годин |
| Обладнання-е 1-го типу | 1 | 5 | 10 |
| Обладнання-е 2го типу | 3 | 2 | 12 |
| Обладнання-е 3го типу | 2 | 4 | 10 |
| Прибуток від | 2 | 3 | |
| реалізації, за од. | | | |
| вид-я | | | | p>
Побудова математичної моделі здійснюється в три етапи: p>
1. Визначення змінних, для яких буде складатися математична модель. P>
Так як потрібно визначити план виробництва виробів А і В, то змінними моделі будуть: x1 - обсяг виробництва виробу А, в одиницях; x2 - обсяг виробництва вироби В, в одиницях. p>
2. Формування цільової функції. P>
Так як прибуток від реалізації одиниці готових виробів А і В відома, то загальний дохід від їх реалізації становить 2x1 + 3x2 (рублів). Позначивши загальний дохід через F, можна дати наступну математичну формулювання цільової функції: визначити допустимі значення змінних x1 та x2, максимізує цільову функцію F = p>
2x1 + 3x2. P>
3. Формування системи обмежень. P>
При визначенні плану виробництва продукції повинні бути враховані обмеження на час, що адміністрація підприємства зможе пре - p>
- 12 - p>
доставити на виготовлення всіх виробів. Це призводить до наступних трьох обмежень: x1 + 5x2 (10; 3x1 + 2x2 (12; 2x1 + 4x2 ( p>
10. P>
Так як обсяги виробництва продукції не можуть приймати негативні значення, то з'являються обмеження точність: x1 (0; x2 (0. p>
Таким чином, математична модель задачі представлена у вигляді: визначити план x1, x2, що забезпечує максимальне значення функції: max F = max (2x1 + 3x2) за наявності обмежень: x1 + 5x2 (10; p>
3x1 + 2x2 (12; p>
2x1 + 4x2 (10. x1 (0; x2 (0. p>
3.2 Рішення завдання вручну p>
Табличний метод ще називається метод послідовного поліпшенняоцінки. Рішення задачі здійснюється поетапно. P>
1. Приведення завдання до форми: x1 + 5x2 (10; p>
3x1 + 2x2 (12; p>
2x1 + 4x2 (10. X1 (0; x2 (0. P> < p> 2. Канонізіруем систему обмежень: p>
- 13 - p>
x1 + 5x2 + x3 = 10; p>
3x1 + 2x2 + x4 = 12; p>
2x1 + 4x2 + x5 = 10. x1 (0; x2 (0. p>
A1 A2 A3 A4 A5 A0 p>
3. Заповнюється вихідна симплекс-таблиця і розраховуються симплекс-різниці за формулами: p>
(0 = - поточне значення цільової функції p>
(i = - розрахунок симплекс-різниць, де j = 1 .. 6.
| | | C | 2 | 3 | 0 | 0 | 0 |
| Б | Cб | A0 | A1 | A2 | A3 | A4 | A5 |
| A3 | 0 | 10 | 1 | 5 | 1 | 0 | 0 |
| A4 | 0 | 12 | 3 | 2 | 0 | 1 | 0 |
| A5 | 0 | 10 | 2 | 4 | 0 | 0 | 1 |
| | (| 0 | -2 | -3 | 0 | 0 | 0 | p>
Так як під час розв'язання задачі на max не всі симплекс-різниціпозитивні, то оптимальне рішення можна поліпшити. p>
4. Визначаємо напрямний стовпець j *. Для задачі на max вінвизначається мінімальною негативною симплекс-різницею. У даному випадкуце вектор А2 p>
5. Вектор i *, який потрібно вивести з базису, визначається завідношенню: min при АI j> 0 p>
- 14 - p>
У даному випадку спочатку це А3. p>
5. Заповнюється нова симплекс-таблиця з виключення Жордана - Гаусса: а). направляючу рядок i * ділимо на напрямний елемент: aij = aij/aij, де j = 1 .. 6 б). перетворення всієї решти матриці: a ij = aij - aij (aij, де i (i *, j (j * p>
В результаті перетворень отримуємо нову симплекс-таблицю: p>
| | | C | 2 | 3 | 0 | 0 | 0 |
| Б | Cб | A0 | A1 | A2 | A3 | A4 | A5 |
| A2 | 3 | 2 | 1/5 | 1 | 1/5 | 0 | 0 |
| A4 | 0 | 8 | 13/5 | 0 | -2/5 | 1 | 0 |
| A5 | 0 | 2 | 6/5 | 0 | -4/5 | 0 | 1 |
| | (| 6 | -7/5 | 0 | 3/5 | 0 | 0 | p>
Повторюючи пункти 3 - 5, отримаємо наступні таблиці: p>
| | | C | 2 | 3 | 0 | 0 | 0 |
| Б | Cб | A0 | A1 | A2 | A3 | A4 | A5 |
| A2 | 3 | 5/3 | 0 | 1 | 1/3 | 0 | -1/6 |
| A4 | 0 | 11/3 | 0 | 0 | 4/3 | 1 | -13/6 |
| A1 | 2 | 5/3 | 1 | 0 | -2/3 | 0 | 5/6 |
| | (| 8 1/3 | 0 | 0 | -1/3 | 0 | 7/6 | p>
| | | C | 2 | 3 | 0 | 0 | 0 |
| Б | Cб | A0 | A1 | A2 | A3 | A4 | A5 |
| A2 | 3 | 3/4 | 0 | 1 | 0 | -1/4 | 3/8 |
| A3 | 0 | 11/4 | 0 | 0 | 1 | 3/4 | -13/8 |
| A1 | 2 | 7/2 | 1 | 0 | 0 | 1/2 | -1/4 |
| | (| 9 1/4 | 0 | 0 | 0 | 1/4 | 5/8 | p>
- 15 - p>
Так як всі симплекс-різниці позитивні, то оптимальне рішеннязнайдено: p>
X = (7/2, 3/4, 11/4, 0, 0) (одиниць) max F = 9 1/4 (рублів) p>
- 16 - p>
4. АНАЛІЗ МОДЕЛІ На чутливість p>
4.1 Побудова двоїстої задачі та її чисельне рішення p>
Проведення аналізу на чутливість пов'язане з теорієюподвійності, тому в курсовій роботі необхідно побудувати двоїстузадачу і знайти її чисельне рішення. p>
Для даної моделі двоїста задача має вигляд: min T (y) = min (10y1 + 12y2 + 10y3) за умов y1 + 3y2 + 2y3 (2 p> < p> А1 p>
5y1 + 2y2 + 4y3 (3 А2 y1 (0, y2 (0, y3
(0. А3, А4, А5 p>
Оптимальне рішення двоїстої задачі виходить при вирішенні прямоїзавдання з останньої симплекс-таблиці. У результаті одержуємо оптимальнерішення двоїстої задачі: p>
Yопт = (0, 1/4, 5/8, 0, 0), для якого Т (yопт) = 9 1/4. p>
Оптимальне значення цільової функції двоїстої задачі співпадає зоптимумом цільової функції прямої задачі, в чому не важко переконатися. p>
4.2 Визначення статусу ресурсів p>
Ресурси відносяться до дефіцитним, якщо оптимальний план передбачаєїх повне використання, при частковому використанні ресурсів, вонивважаються не дефіцитними. Статус ресурсів для будь-якої моделі лінійногопрограмування можна встановити безпосередньо з оптимальною симплекс -таблиці вихідної за значенням додаткових змінних. Позитивнезначення до - p>
- 17 - p>
полнітельной змінної вказує на неповне використанняоб'єкта, тобто на його недефіцитних, нульове значеннядодаткової змінної вказує на дефіцитність ресурсу. p>
Для даного прикладу додаткові змінні х4 і х5 дорівнюють нулю,отже, обладнання другого і третього типів є
"Дефіцитними", а першого типу - "недефіцитних" (х3 = 2,75). Такий жевисновок можна зробити з рішення двоїстої задачі. p>
4.3 Визначення значимості ресурсів p>
Значимість ресурсу характеризується величиною поліпшення оптимальногозначення цільової функції F, що припадає на одиницю приросту даногоресурсу. Значимість ресурсів завжди можна визначити за значеннямподвійних змінних в оптимальному вирішенні двоїстої задачі. p>
У даному випадку Yопт = (0, 1/4, 5/8, 0, 0). Таким чином, з двох
"Дефіцитних" ресурсів обладнання другого типу має велику значимість ізбільшення інтервалу роботи на цьому обладнанні більш вигідно з точкизору впливу на значення цільової функції. p>
4.4 Визначення допустимого інтервалу зміни запасу ресурсів p>
Зміна відведеного адміністрацією підприємства часу (тобто правихчастин обмежень) може призвести до неприпустимість поточного рішення.
Тому важливо визначити діапазон змін компонент вектора обмежень,в якому допустимість рішень не порушується. p>
Обладнання другого типу, що використовується для виготовленнявиробів, є "дефіцитним і має велику значимість. Визначимодіапазон припустимих змін інтервалу роботи на цьому обладнанні.
Оптимальна p>
- 18 - p>
симплекс-таблиця задачі має вигляд:
| | | C | 2 | 3 | 0 | 0 | 0 |
| Б | Cб | A0 | A1 | A2 | A3 | A4 | A5 |
| A2 | 3 | 3/4 | 0 | 1 | 0 | -1/4 | 3/8 |
| A3 | 0 | 11/4 | 0 | 0 | 1 | 3/4 | -13/8 |
| A1 | 2 | 7/2 | 1 | 0 | 0 | 1/2 | -1/4 |
| | (| 9 1/4 | 0 | 0 | 0 | 1/4 | 5/8 | p>
Так як початковими базисними змінними були x1, x2, x3 воптимальної симплексного таблиці у відповідних стовпцях розташованаматриця А-1 Змінимо час роботи на обладнання другого типу на величину
(2, тоді час роботи буде 12 + (2. P>
Знайдемо базисна рішення, що відповідає зміненим часу роботи наобладнанні другого типу: p>
p>
0.75 - (2/4 (0, (2 = 3; p>
2.75 + 3 (2/4 (0, ( 2 = -3.66; p>
3.5 + (2/2 (0, (2 = -7. p>
Звідси видно, що -3.66 ((2 (3, тобто 8.34 (b2 (15. p>
Таким чином початковий інтервал роботи на обладнанні другоготипу можетбить збільшений до 15 годин або зменшений до 8.34 години без порушеннядопустимого рішення. Зменшення часу тягне за собою зменшення одиницьвироблюваної продукції, тому є не доцільним. p>
- 19 - p>
4.5 Дослідження залежності оптимального рішення від змін запасів ресурсів p>
Зміна вільного члена обмеження вихідної задачі на величину ( 2викликає зміну цільової функції на (F = (i (yj. Якщо прирістчасу роботи Берта з інтервалу допустимих змін, значеньподвійних оцінок залишаються незмінними. Таким чином, зміна цільовоїфункції лінійно буде залежати від зміни часу роботи. p>
У даному прикладі (F = (i (12 = 12 ((i. Шукається залежністьзначень цільової функції від зміни часу роботи на обладнаннідругого типу. Для цього змінюється час роботи починаючи від 0 годин з крокомh = 0.5 до 3 часов.Результати вимірювань наведені в таблиці 1. p>
Таблиця 1
| (2, годин | 0 | 0.5 | 1 | 1.5 | 2 | 2.5 | 3 |
| b2, годин | 12 | 12.5 | 13 | 13.5 | 14 | 14.5 | 15 |
| (F, руб. | 0 | 6.25 | 13 | 20.25 | 28 | 36.25 | 45 |
| F, руб. | 9.25 | (| (| (| (| (| | p>
Оскільки залежність F (b2) - лінійна, то достатньо підрахувати значенняфункції в двох крайніх точках інтервалу. p>
Cледовательно, зі збільшенням часу роботи на обладнанні другоготипу на 2 години збільшується і обсяг виробів на загальною вартістю 28рублів. p>
- 20 - p>
5. ГРАФІЧНЕ ПОДАННЯ ОТРИМАНИХ p>
РЕЗУЛЬТАТІВ p>
Графічний метод застосовується лише для двох і менш змінних х, щопідходить до даного заданію.Лініі, відповідні обмеження, будуються наосях Ох. Заштрихована область - область допустимих стратегій. x1 + 5x2 (10; p>
3x1 + 2x2 (12; p>
2x1 + 4x2 (10. x1 (0; x2 (0. p>
1). x1 + 5x2 (10; x1 = 0, x2 = 2; x1 = 10, x2 = 0. p>
2). 3x1 + 2x2 (12; x1 = 0, x2 = 6; x1 = 4, x2 = 0. p>
3). 2x1 + 4x2 (10; x1 = 0, x2 = 2.5; x1 = 5, x2 = 0. p>
4). Знайдемо екстремум функції: p>
F = 2x1 + 3x2, p>
p>
Графічно область допустимих рішень показано на малюнку 1. p>
- 21 - p>
Малюнок 1 - Область допустимих рішень даної системи. p>
- 22 - p>
6. ВИСНОВКИ ТА РЕКОМЕНДАЦІЇ ЩОДО ПРАКТИЧНОГО p>
ВИКОРИСТАННЯ p>
Складання математичної моделі і рішення систем лінійних нерівностейчасто має місце в реальному житті. Приклади таких завдань: p>
Приклад 1. Розглядається робота промислового підприємства під кутомзору його рентабельності, причому приводиться ряд заходів з метою підвищення цієїрентабельності. Показник ефективності - прибуток (або середній прибуток),принесена підприємством за господарський рік. p>
Приклад 2. Група винищувачів піднімається в повітря для перехопленняодиночного літака супротивника. Мета операції - збити літак. Показникефективності - імовірність ураження цілі. p>
Приклад 3. Ремонтна майстерня займається обслуговуванням машин; їїрентабельність визначається кількістю машин, обслужених протягом дня.
Показник ефективності - середня кількість машин, обслугованих за день. P>
Приклад 4. Група радіолокаційних станцій в певному районі ведеспостереження за повітряним простором. Завдання групи - знайти будь-якийлітак, якщо він з'явиться в районі. Показник ефективності - ймовірністьвиявлення будь-якого літака, що з'явився в районі. p>
Приклад 5. Предпрінемается ряд заходів щодо підвищення надійності електронноїцифрової обчислювальної техніки (ЕЦВТ). Мета операції - зменшити частотупояви несправностей ( "збоїв") ЕЦВТ, або, що рівносильно, збільшитисередній проміжок часу між сдоямі ( "напрацювання на відмову").
Показник ефективності - середній час безвідмовної роботи ЕЦВТ. P>
Приклад 6. Проводиться боротьба за економію коштів при виробництвіпевного виду товару. Показник ефективності - кількістьсикономленних коштів. p>
За допомогою аналізу моделі на чутливість визначити параметр, відякого результат залежить більше і вирішити, яким способом можливозбільшення ефективності і на скільки, а також багато чого іншого. p>
- 23 - p>
ДОДАТОК p>
- 24 - p>
ЗМІСТ p>
ВСТУП. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 25
1. ПРИЗНАЧЕННЯ ПРОГРАМИ. . . . . . . . . . . . . . . . . . . . . . . . . .
. . 26
2. УМОВИ ЗАСТОСУВАННЯ. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . 26 p>
1.1 Обмеження й область застосування. . . . . . . . . . . . . . . .
. . . . . 6 p>
1.2 Вимоги до технічних засобів. . . . . . . . . . . . . . .
. . . . . 7
3. ВХІДНІ І ВИХІДНІ ДАНІ. . . . . . . . . . . . . . . . . . . . . .
5
4. ІНСТРУКЦІЯ КОРИСТУВАЧУ. . . . . . . . . . . . . . . . . . . . . . . .
. 11
5. ТЕКСТ вихідних модулів. . . . . . . . . . . . . . . . . . . . . . . . .
. . 11
6. ОПИС ЛОГІКИ СТРУКТУРНОЇ СХЕМИ. . . . . . . . . . . . 11
7. ТЕСТОВИЙ ПРИКЛАД. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . 25 p>
- 25 - p>
ВСТУП p>
У цій частині пояснювальної записки до курсової роботи представлена іописана програма, реліз рішення систем лінійних нерівностей табличнимметодом. p>
- 26 - p>
1. ПРИЗНАЧЕННЯ ПРОГРАМИ p>
Програма передбачена для розв'язання систем лінійних нерівностейтабличним методом, а так само для спроби оптимізації різнихекономічних, соціальних тощо проблем. p>
Метод, описаний у програмі, може застосовуватись на державних іприватних підприємствах для поліпшення ефективності виробництва. p>
- 27 - p>
2. УМОВИ ЗАСТОСУВАННЯ p>
1.1 Обмеження й область застосування p>
Із програмних коштів потрібно операційна система MS DOS версії 5.0, програмна середа NORTON COMMANDER, мова програмування
Borland Pascal 7.0. Крім того НГМД повинен містити файли в директорії
KURSOVIK: p>
1. Файл вхідних даних - KURS97.DAT p>
2. Програмний файл - KURS97.EXE p>
1.2 Вимоги до технічних засобів p>
IBM PC або IBM PC - сумісний комп'ютер з дисководом 3.25 "ємністю
1.2 Мб. P>
- 28 - p>
3. ВХІДНІ І ВИХІДНІ ДАНІ p>
Вхідні та вихідні дані заносяться у файли KURS97.DAT і KURS97.RESвідповідно. Вхідні дані записуються в певному порядку.
Вихідні дані записуються у вигляді симплекс-таблиць. P>
- 29 - p>
4. ІНСТРУКЦІЯ КОРИСТУВАЧУ p>
Вхідні дані вносяться в файл KURS 97.DAT в такій черговості: сначача вводяться коефіцієнти при невідомих у цільовій функції, потім вводяться елементи вектора обмежень, а потім - елементи матриціобмежень по стовпцях. p>
Результати обчислень ви знайдете у файлі KURS 97.REZ. p>
- 30 - p>
5. ТЕКСТ вихідних модулів p>
Повний текст програми KURS97.PAS виглядає наступним чином: p>
. program Kurs97; p>
uses crt; p>
const n = 2; m = 3; p>
Epsilon = 0.000001; p>
var p>
VectorA: array [1 .. m, 0 .. m + n] of real; p>
TargetVector: array [1 .. m + n] of real; p> < p> SimplexVector: array [0 .. m + n] of real; p>
DigitOfBasisVector: array [1 .. m] of real; p>
BasisVector: array [1 .. m ] of integer; p>
IndexOfEnterVector: integer; p>
IndexOfOutputString: integer; p>
MinimumBuffer: real; p>
key: char; p>
FileOfOutput: text; p>
(Опис процедур) p>
procedure ReadDates; (зчитування даних з файлу) var p>
DateFile: text; p>
procedure ReadDatesTargetVector; (зчитування даних цільового вектора
) Var i: integer; begin for i: = 1 to n do Readln (DateFile, TargetVector [i]); end; p>
procedure ReadDatesVectorA; (зчитування вектора А і заповненняодиницями діагоналі) var i, j: integer; begin for j: = 0 to n do for i: = 1 to m do p>
Readln (DateFile, VectorA [i, j]); i: = 1 ; for j: = n +1 to n + m do p>
- 31 - p>
begin p>
VectorA [i, j]: = 1; inc ( i) end; end; p>
procedure ReadDatesBasisVector; var i: integer; begin for i: = 1 to m do BasisVector [i]: = n + i; end; p>
begin p>
Assign (DateFile, 'kurs97.dat'); p>
Reset (DateFile); p>
ReadDatesTargetVector; p>
ReadDatesVectorA; p>
ReadDatesBasisVector; p>
Close (DateFile); end; p>
procedure CountSimplexVector; (розрахунок сімплек-вектора) var i, j: integer; p>
Summa: real; p>
Simplex: real; begin p>
SimplexVector [0]: = 0; for i: = 1 to m do p>
SimplexVector [0 ]: = SimplexVector [0] +
DigitOfBasisVector [i] * VectorA [i, 0]; for j: = 1 to m + n do begin p>
Summa: = 0; for i: = 1 to m do Summa: = Summa + DigitOfBasisVector [ i] * VectorA [i,j]; p>
SimplexVector [j]: = Summa - TargetVector [j]; if abs (SimplexVector [j]) SimplexVector [i] then p>
- 32 - p>
begin p>
GetEnterVector: = i; p>
Min: = SimplexVector [i]; end; end; p>
function GetOutputString: integer; (пошук виводиться рядка) var i: integer; p>
Temp: real; begin p>
GetOutputString: = 1; if VectorA [1, IndexOfEnterVector]> 0 then MinimumBuffer: = VectorA [1,
0]/VectorA [1, IndexOfEnterVector]; for i: = 2 to m do begin p>
Temp: = VectorA [i, 0]/VectorA [i, IndexOfEnterVector]; if Temp> 0 then if MinimumBuffer > = Temp then begin p>
MinimumBuffer: = Temp; p>
GetOutputString: = i; end; end; end; p>
procedure ReCountOutputString; (перерахунок коефіцієнтів що виводитьсярядка) var i, j: integer; p>
Buffer: real; p>
procedure ReCountDigitOfBasisVector; begin p>
DigitOfBasisVector [IndexOfOutputString]: = TargetVector [IndexOfEnterVector]; end ; p>
procedure ReCountBasisVector; begin p>
BasisVector [IndexOfOutputString]: = IndexOfEnterVector; end; p>
begin p>
ReCountDigitOfBasisVector; p>
ReCountBasisVector; p>
Buffer: = VectorA [IndexOfOutputString, IndexOfEnterVector]; for i: = 0 to m + n do begin p>
VectorA [IndexOfOutputString, i]: = VectorA [ IndexOfOutputString, i]/
Buffer; end; end; p>
- 33 - p>
procedure ReCountVectorA; var i, j: integer; begin for j: = 0 to m + n do begin for i: = 1 to m do begin if i IndexOfOutputString then if j IndexOfEnterVector then VectorA [i, j]: = VectorA [i, j] - VectorA [i,
IndexOfEnterVector] * VectorA [IndexOfOutputString, j]; end; end; for i: = 1 to m do if i IndexOfOutputString then VectorA [i, IndexOfEnterVector]: = 0; end; p>
function AllIsPositiv: boolean; var i: integer; begin p>
AllIsPositiv: = True; for i: = 1 to m + n do if SimplexVector [i] <0 then AllIsPositiv: = False; end; p>
function ToStr (const D: real): string; var S: string; begin str (D: 6:2, S); p>
ToStr: = '' + S + ''; end; p>
procedure WriteMatrixs; p>
procedure WriteTargetMatrix; var i: integer; begin writeln ( '+---------------------- -----------------< br>--------------+'); Write ( '| Target |'); for i: = 1 to n + m do write (ToStr (TargetVector [i ]),'|' ); writeln; end; p>
procedure WriteMatrixA; var i, j: integer; begin writeln ( '+-----------------+---- ----+--------+--------+--------+---< br>-----+--------|'); Writeln ( '| Basis | D. Basis | A 0 | A 1 | A 2 | A 3 |
A 4 | A 5 | '); writeln (' +--------+--------+--------+--------+- -------+--------+---< br>-----+--------|'); For i: = 1 to m do p>
- 34 - p>
begin write ( '| A' , BasisVector [i], '
| ', ToStr (DigitOfBasisVector [i ]),'|'); for j: = 0 to m + n do write (ToStr (VectorA [i, j ]),'|'); writeln; if i = m then writeln ( '+--------+--------+--------+--------+-----< br>---+--------+--------+--------|') Else writeln ( '+--------+--- -----+--------+--------+-----< br>---+--------+--------+--------|'); End; end; p>
procedure WriteMatrixSimplex; var i : integer; begin write ( '| Simplex |'); for i: = 0 to m + n do write (ToStr (SimplexVector [i ]),'|'); writeln; writeln ( '+------ ------------------------------------------< br>--------------+'); End; p>
begin clrscr; p>
WriteTargetMatrix; p>
WriteMatrixA; p>
WriteMatrixSimplex; end; p>
procedure WriteMatrixsInFile; p>
procedure WriteTargetMatrix; var i: integer; begin writeln (FileOfOutput, '+--------- ----------------< br>----------------------------+'); Write (FileOfOutput, '| Target |'); for i: = 1 to n + m do write (FileOfOutput, ToStr (TargetVector [i ]),'|'); writeln (FileOfOutput); end; p>
procedure WriteMatrixA; var i, j: integer; begin writeln (FileOfOutput, ' +-----------------+--------+--------+-------< br>-+--------+--------+--------|'); Writeln (FileOfOutput, '| Basis | D. Basis | A 0 | A 1 | A 2
| A 3 | A 4 | A 5 | '); writeln (FileOfOutput,' +--------+--------+-------- +--------+-------< br>-+--------+--------+--------|'); For i: = 1 to m do begin write (FileOfOutput, '| A', BasisVector [i], '
| ', ToStr (DigitOfBasisVector [i ]),'|'); for j: = 0 to m + n do write (FileOfOutput, ToStr (VectorA [i, j ]),'|'); writeln (FileOfOutput); if i = m then writeln (FileOfOutput, '+--------+--------+--------< br>+--------+--------+--------+--------+--------|') Else writeln (FileOfOutput, '+--------+--------+--------< br>+--------+--------+--------+--------+--------|'); End ; end; p>
- 35 - p>
procedure WriteMatrixSimplex; var i: integer; begin write (FileOfOutput, '| Simplex |'); for i: = 0 to m + n do write (FileOfOutput,
ToStr (SimplexVector [i ]),'|'); writeln (FileOfOutput); writeln (FileOfOutput, '+-------------------------- --------< br>----------------------------+'); End; p>
begin clrscr; p>
WriteTargetMatrix; p>
WriteMatrixA; p>
WriteMatrixSimplex; end; p>
(Головний програма) p>
BEGIN p>
ClrScr ; p>
ReadDates; p>
Assign (FileOfOutput, 'kurs97.res'); p>
Rewrite (FileOfOutput); p>
CountSimplexVector;
WriteMatrixs; while not AllIsPositiv do begin p>
IndexOfEnterVector: = GetEnterVector; p>
IndexOfOutputString: = GetOutputString; p>
ReCountOutputString; p>
ReCountVectorA; p>
CountSimplexVector; p>
WriteMatrixsInFile; p>
WriteMatrixs; if key = # 0 then key: = readkey; key: = # 0; end ; p>
Close (FileOfOutput); p>
END. p>
- 36 - p>
6. ОПИС ЛОГІКИ СТРУКТУРНОЇ СХЕМИ p>
У програмі реалізовані наступні процедури: p>
1. Процедура ReadDates - зчитує дані з файлу. P>
2. Процедура ReadDatesTargetVector - зчитує коефіцієнти приневідомих у цільовій функції з файлу. p>
3. Процедура ReadDatesVector - читання їх вхідного файлу матриці А ізаповнення діагональної матриці. p>
4. Процедура CountSimplexVector - розрахунок симплекс-різниць. P>
5. Процедура GetEnterVector - пошук вводиться в базис стовпця. P>
6. Процедура GetOutputString - пошук що виводиться з базису рядка. P>
7. Процедура ReCountOutputString-пересчее що виводиться рядка. P>
8. Процедура ReCountVectorA - перерахунок решті матриці обмежень. P>
9. Процедури WriteMatrixA, WriteTargetMatrix, WriteMatrixSimplex --друк результуючих таблиць на екран і в файл. p>
- 37 - p>
7. ТЕСТОВИЙ ПРИКЛАД p>
Тестовий приклад програми KURS 97.EXE представлений на малюнку 2 у виглядівихідної та результуючих симплекс-таблиць даного завдання. p>
- 39 - p>
ЛІТЕРАТУРА p>
1. Еурд ГОСТ 19.105-78, 19.104-78.
2. Еурд ГОСТ 19.502-78.
3. Венцель Е.С. Дослідження операцій.-М.: Радянське радіо. 1972
4. Дектярев Ю.І. Дослідження операцій.-М.: Вища школа. 1986
5. Зайченко Ю.П. Дослідження операцій.-К.: Вища школа. 1979
6. Зайченко Ю.П., Шуміллова С.А. Дослідження операцій (збірник завдань) .-
К.: Вища школа. 1990 p>
p>