
- •Компьютерное моделирование в пакете matlab/Simulink
- •© Сибирский федеральный университет, 2011
- •Оглавление
- •Общие сведения
- •Решение системы линейных алгебраических уравнений
- •Краткие теоретические сведения
- •Указания к выполнению
- •Порядок выполнения работы
- •Задания для самоподготовки
- •Решение транспортной задачи
- •Краткие теоретические сведения
- •Указания к выполнению
- •Исходные данные для транспортной задачи
- •Задания для самоподготовки
- •Указания к выполнению
- •Порядок выполнения работы
- •Задания для самоподготовки
- •Моделирование движения маятника
- •Краткие теоретические сведения
- •Указания к выполнению
- •Порядок выполнения работы
- •Задания для самоподготовки
- •Модель полЕта двухступенчатой ракеты
- •Краткие теоретические сведения
- •Указания к выполнению
- •Указания к выполнению
- •Порядок выполнения работы
- •Задания для самоподготовки
- •Построение НепараметрическОй Оценки Регрессии
- •Краткие теоретические сведения
- •Указания к выполнению
- •Порядок выполнения работы
- •Задания для самоподготовки
- •Библиографический список
- •Компьютерное моделирование в пакете matlab/Simulink
- •Агафонов Евгений Дмитриевич
- •660041, Г. Красноярск, пр. Свободный, 79.
- •660041, Г. Красноярск, пр. Свободный, 82а.
Решение транспортной задачи
Цель работы: научиться работать со встроенными функциями пакета MATLAB; рассмотреть пример использования встроенных функций для решения задачи линейного программирования.
Краткие теоретические сведения
Задача линейного программирования заключается в оптимизации линейной функции при линейных ограничениях. Стандартной форме записи задачи линейного программирования в матричном виде соответствует критерий
при ограничениях
,
,
где
;
;
;
.
Здесь С
– вектор коэффициентов линейной
критериальной функции, А
– матрица системы, Х
– вектор переменных, В
– вектор свободных членов. Векторное
неравенство
означает, что все компоненты вектора Х
неотрицательны, т. е.
,
.
Транспортная задача – это частный случай задачи линейного программирования. Вектор переменных запишем в виде
,
а вектор коэффициентов – в виде
.
Величина
имеет смысл искомого значения объемов
перевозок от
i-го
поставщика к j-му
потребителю, а
–
известных затрат на перевозку единицы
груза. Предполагается, что все поставщики
отправляют однотипный груз, который
востребован всеми без исключения
потребителями. Отличие состоит лишь в
стоимости перевозки.
Система ограничений представляет собой систему уравнений
,
,
где
– мощность i-го
поставщика;
– спрос j-го
потребителя. В случае закрытой
транспортной
задачи
выполняется условие, которое носит
название уравнения
баланса:
.
Исходные данные транспортной задачи обычно представляют в виде транспортной таблицы (табл. 1).
Таблица 1
Транспортная таблица
Mi |
Ni |
|||
N1 |
N2 |
… |
Nn |
|
M1 |
C11 |
C12 |
… |
C1n |
M2 |
C21 |
C22 |
… |
C2n |
… |
… |
… |
… |
… |
Mm |
Cm1 |
Cm2 |
… |
cmn |
Таким образом, решение транспортной задачи состоит в распределении объемов перевозок для каждой пары «поставщик–потребитель» так, чтобы:
– мощности всех поставщиков были реализованы;
– спросы всех потребителей были удовлетворены;
– суммарные затраты на перевозку были бы минимальными.
Указания к выполнению
Пусть требуется найти решение транспортной задачи с исходными данными, заданными в табл. 2.
Таблица 2
Исходные данные для транспортной задачи
Mi |
Ni |
|||
150 |
200 |
100 |
400 |
|
150 |
1 |
4 |
4 |
2 |
300 |
3 |
6 |
3 |
9 |
250 |
4 |
8 |
6 |
2 |
150 |
1 |
5 |
5 |
13 |
Вначале необходимо убедиться в выполнении уравнения баланса. В частности, для приведенного примера выполняется равенство
.
Приведенный ниже скрипт реализует алгоритм решения транспортной задачи путем ее приведения к задаче линейного программирования и последующего решения средствами MATLAB:
% Решение транспортной задачи
% путем ее приведения к задаче линейного программирования
% Вектор коэффициентов
C = [1; 4; 4; 2;
3; 6; 3; 9;
4; 8; 6; 2;
1; 5; 5; 13];
% Бинарные коэффициенты в ограничениях
A = [1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1
1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0
0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0
0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0
0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1];
% Правые части ограничений
B = [150; 300; 250; 150;
150; 200; 100; 400];
% Нулевой вектор для задания условия неотрицательности
% объемов перевозок
lb = zeros(16, 1);
% Функция вычисления искомых объемов перевозок
x = linprog(C, [], [], A, B, lb)
В результате выполнения скрипта искомый вектор перевозок (поставок) отображается в рабочей области MATLAB.
Порядок выполнения работы
1. Создать новый скрипт MATLAB.
2. Задать исходные данные для решения транспортной задачи.
3. Описать транспортную задачу в терминах задачи линейного программирования и решить ее, пользуясь соответствующей встроенной функцией MATLAB.