Подпишитесь на рассылки о научных публикациях
Магістрант Ромашков Микита Андрійович
Дніпропетровський національний університет ім. О. Гончара
ІНСТРУМЕНТАРІЙ СТУДЕНТА ДЛЯ РОБОТИ З ЗАДАЧАМИ ЛІНІЙНОЇ ОПТИМІЗАЦІЇ ВЕЛИКИХ РОЗМІРІВ
Під час роботи над дипломною работою "Ефективні алгоритми знаходження рівноваги в економічних системах та їх програмна реалізація" була створена зручна методологія для проведення експериментів над математичними моделями лінійного програмування великих розмірів.
Головними компонентами програмного забезпечення є програмні пакети Maple та MS Excel. Maple використовується тільки при створенні симплекс-таблиці, в той час як MS Excel може багаторазово використовуватися при подальшому модулюванні.
Загальний вид методології представлений у наступній таблиці:
Номер кроку |
Програмний продукт |
Опис кроку |
1 |
Maple |
Введення формул у символьному вигляді |
2 |
Maple |
Розрахунок симплекс таблиці у символьному вигляді |
3 |
Excel |
Введення числових коефіцієнтів моделі |
4 |
Excel |
Заповнення симплекс таблиці числовими даними |
5 |
Excel |
Вирішення задачі лінійного програмування |
6 |
Excel |
Аналіз результатів моделювання |
Дана методологія дозволяє швидко одержувати вихідні залежності математичної моделі й коректувати її, не замислюючись про механізми перекладу формул вихідної моделі в симплекс таблицю й шукати помилки тільки в моделі, але не в якому випадку не в методах її реалізації.
Це дає можливість студентові набагато швидше і точніше робити наукові дослідження.
Розрахунок символьних коефіцієнтів симплекс-таблиці проводився в Maple у такий спосіб:
1. Вводилися формули мат. моделі як відображення (або функції) декількох параметром (індексів товару, періоду) у набір алгебраїчних зв'язків між символьними константами (серед яких були як вхідні параметри, так і змінні моделі).
Наприклад, цільова функція:
задавалася в такий спосіб:
FC(m):= (1 - lambda)*sum(sum(p[i]*y[i,j],j=1..m),i=1..n) - (1 + lambda)* sum(sum(s[i]*x[i,j], j=1.. m),i=1.. n) + A[1](m) - B[1](m) - G[1](m) + H[1](m) -sum(sum(u[i,l], l=1.. w),i=1.. n);
2. Створюється функція-відображення для заповнення симплекс-таблиці, що для кожного елемента симплекс таблиці видає коефіцієнт як похідну від відповідної функції з шагу 1 по відповідній змінній:
F:=proc(r,c)
if r=0 then dE(FC(4),c)
elif r=1 then dE(E[1](1),c)
elif r=2 then dE(E[1](2),c)
elif r=3 then dE(E[1](3),c)
... , де
dE:=proc(E,c)
if c=1 then dE/d x[1,1]
elif c=2 then dE/x[2,1]
elif c=3 then dE/x[3,1]
...
3. Створювалася матриця, рівна розмірності матриці обмеженні плюс рядок для цільової функції та заповнюється функцією з шагу 2:
S:=rtable(0..57,1..80,F);
4. Отримана матриця перетворювалася у формат, придатний для експорту:
S_m:=convert(S,Matrix);
5. Матриця експортувалася в текстовий файл із роздільниками, що міг бути розпізнаний широким класом програм, що реалізують алгоритми лінійної оптимізації (Mathlab, Mathematica, Excel):
S_m:=convert(S,Matrix);
path:="E:\symbol_matrix";
ExportMatrix(path, S_m);
Є можливість заміняти символи цифрами прямо в Maple 13, але така процедура привела б до відсутності інтерактивності й погіршенню зручності роботи з моделлю, а токож необхідность установленого пакету Maple для досліджень що його не потребують.
Для виконання кроків 1-2 була використана література [1-4].
В MS Excel можна легко імпортувати символьну симплекс-таблицю з текстового файлу, замінити символи на числа за допомогою мови VBA та гарної можливості пакету автоматично перераховувати арифметичні вирази у ячейках в числа.
Для рішення задачі лінійного програмування можна використати потужний компонент "Поиск решения" чи запрограмувати один з методів лінійної оптимізації у середовищі VBA. Для цього буде в нагоді книга [5].
Література:
1. В.Говорухин, Б.Цибулин - Компьютер в математическом исследовании
2. Г.В.Прохоров, М.А.Леденев, В.В.Колбеев - Пакет символьных вычислений maple 5
3. Б.М.Манзон - Maple 5 power edition
4. С.Е.Савотченко, Т.Г.Кузьмичева - Методы решения математических задач в maple, Белгород, 2001
5. Джон Уокенбах - Профессиональное программирование на VBA в Excel 2003, Москва, 2005
myown@i.ua