Курсовая работа (т): Автоматизация складского учета

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

F=a0,1x1+a0,2x2+...a0,nxn+b0→ max,1x1+a1,2x2+...a1,nxn+xn+1=b1,1x1+a2,2x2+...a2,nxn+xn+2=b2

.......................................,1x1+am,2x2+...am,nxn+xn+m=bm

В случае если в исходной задаче необходимо найти минимум - знаки коэффициентов целевой функции F меняются на противоположные a0,n=-a0,n. Знаки коэффициентов ограничивающих условий со знаком "≥" так же меняются на противоположные. В случае если условие содержит знак "≤" - коэффициенты запишутся без изменений.

Шаг 1. Составляем симплексную таблицу, соответствующую исходной задаче

x1x2...xn-1xnb







F

-a0,1

-a0,2

...

-a0,n-1

-a0,n

-b0

xn+1

a1,1

a1,2

...

a1,n-1

a1,n

b1

xn+2

a2,1

a2,2

...

a2,n-1

a2,n

b2

...

...

...

...

...

...

...

xn+m

am,1

am,2

...

am,n-1

am,n

bm


Шаг 2. Проверка на допустимость.

Проверяем на положительность элементы столбца b (свободные члены), если среди них нет отрицательных, то найдено допустимое решение (решение соответствующее одной из вершин многогранника условий) и мы переходим к шагу 2. Если в столбце свободных членов имеются отрицательные элементы то выбираем среди них максимальный по модулю - он задает ведущую строку k. В этой строке так же находим максимальный по модулю отрицательный элемент ak,l- он задает ведущий столбец - l и является ведущим элементом. Переменная, соответствующая ведущей строке исключается из базиса, переменная соответствующая ведущему столбцу включается в базис. Пересчитываем симплекс-таблицу согласно правилам.

Если же среди свободных членов есть отрицательные элементы - а в соответствующей строке - нет то условия задачи несовместны и решений у нее нет.

Если после перерасчета в столбце свободных членов остались отрицательные элементы, то переходим к первому шагу, если таких нет, то ко второму.

Шаг 3. Проверка на оптимальность.

На предыдущем этапе найдено допустимое решение.

Проверим его на оптимальность. Если среди элементов симплексной таблицы, находящихся в строке F (не беря в расчет элемент b0- текущее значение целевой функции) нет отрицательных, то найдено оптимальное решение.

Если в строке F есть отрицательные элементы то решение требует улучшения.

Выбираем среди отрицательных элементов строки F максимальный по модулю (исключая значение функции b0)

,l=min{a0,i}

- столбец в котором он находится будет ведущим. Для того, что бы найти ведущую строку, находим отношение соответствующего свободного члена и элемента из ведущего столбца, при условии, что они неотрицательны.

/ak,l=min {bi/ai,l}при ai,l>0, bi>0

- cтрока, для которой это отношение минимально - ведущая. Элемент ak,l- ведущий (разрешающий). Переменная, соответствующая ведущей строке (xk) исключается из базиса, переменная соответствующая ведущему столбцу (xl) включается в базис.

Пересчитываем симплекс-таблицу по формулам. Если в новой таблице после перерасчета в строке F остались отрицательные элементы переходим к шагу 3.

Если невозможно найти ведущую строку, так как нет положительных элементов в ведущем столбце, то функция в области допустимых решений задачи не ограничена - алгоритм завершает работу.

Если в строке F и в столбце свободных членов все элементы положительные, то найдено оптимальное решение.

Правила преобразований симплексной таблицы.

При составлении новой симплекс-таблицы в ней происходят следующие изменения:

• Вместо базисной переменной xkзаписываем xl; вместо небазисной переменной xl записываем xk.

ведущий элемент заменяется на обратную величину ak,l'= 1/ak,l

все элементы ведущего столбца (кроме ak,l) умножаются на -1/ak,l

все элементы ведущей строки (кроме ak,l) умножаются на 1/ak,l

оставшиеся элементы симплекс-таблицы преобразуются по формуле

ai,j= ai,j- ai,l xak,j/ ak,l.

Таким образом, транспортные задачи позволяют производителям эффективно использовать все ресурсы при минимальных затратах на транспортировку товаров. Такая проблема берет свое начало ещё в 1781 г. Ею занимались Гаспар Монже и Л.В. Канторович.

Стоит также отметить, что транспортная задача - это математическая задача линейного программирования, которая оптимально распределяет однородные объекты из аккумулятора к приемникам с минимизацией затрат на перемещение. Решение такой задачи проходит в несколько этап, при этом необходимо иметь ряд особых данных.

Существует также множество методов решения транспортной задачи, но основным и общепринятым является симплекс-метод. Он обладает рядом особенностей и осуществляется в 3 основных шага: составление симплексной таблицы, проверка на допустимость и проверка на оптимальность.

. Постановка и решение транспортной задачи

Фирма "Х" производит поставку продуктов питания для школ со складов А1, А2, А3, А4 в школы 1, 2, 3, 4 в количестве 190, 250, 210, 300 единиц продуктов питания.

При заданных стоимостях перевозок составьте оптимальный план перевозок? Рассчитайте минимальные транспортные затраты на транспортировку продуктов питания в школы?

Стоимость доставки единицы груза из каждого склада в школы задана таблицей тарифов.


Школа 1

Школа 2

Школа 3

Школа 4

Запасы

Склад A1

2

5

4

5

150

Склад A2

3

3

3

6

90

Склад А3

5

1

2

7

290

Склад А4

6

4

1

4

300

Потребности

190

250

210

300



.1 Решение

Проверим необходимое и достаточное условие решения задачи:

Общий запас продуктов питания на складе составляет:

∑а = 150+90+290+300= 830 у.е.,

а общая потребность школ в продуктах питания составляет:

∑b = 190+250+210+300 = 950 у.е.

Из этого следует, что задача является открытой (несбалансированной). Для решения этой задачи мы вводим фиктивного поставщика (ФП).

ФП= "Потребности - Запасы"; ФП=950 у.е. - 830 у.е.; ФП=120 у.е.

Составляем матрицу, в строке ФП транспортные расходы равны 0.

Школа 1Школа 2Школа 3Школа 4Запасы






Склад A1

2

5

4

5

150

Склад A2

3

3

3

6

90

Склад А3

5

1

2

7

290

Склад А4

6

4

1

4

300

Склад А5

0

0

0

0

120

Потребности

190

250

210

300



Строим опорный план:

Школа 1Школа 2Школа 3Школа 4Запасы






Склад A1

2

5

4

5

150

Склад A2

3

3

3

6

90

Склад А3

5

1

2

7

290

Склад А4

6

4

1

4

300

Склад А5

0

0

0

0

120

Потребности

190

250

210

300



Посчитаем число занятых клеток по формуле:

+n-1,

где m - количество складов, а n - количество школ;

+4-1=8,

следовательно, опорный план является невырожденным.

Школа 1Школа 2Школа 3Школа 4Запасы






Склад A1

2




150

Склад A2

3

3



90

Склад А3


1

2


290

Склад А4



1

4

300

Склад А5




0

120

Потребности

190

250

210

300



Значение целевой функции для этого опорного плана равно:

(x)=2*150+3*40+3*50+1*200+2*90+1*120+4*180+0*120;(x)=300+120+150+120+180+120+720;(x)=1790;

Проверим оптимальность опорного плана. Найдем предварительные потенциалы ui и vj по занятым клеткам в таблице, в которых

+Vj=Cij.

Составим вспомогательную рабочую матрицу затрат. Она строится из исходной матрицы издержек путем переноса только тех ячеек pij, которые соответствуют заполненным клеткам транспортной таблицы. Остальные ячейки остаются пустыми.

Кроме того, введем вспомогательный столбец, в который занесем значения U1…Un (U - это же m - число складов) и вспомогательную строку, в которую занесем значения неизвестных V1…Vn (v - это же n - число потребителей).

Эти переменные должны удовлетворять линейную систему уравнений:

+Vj=Aij

Предположим, что U1=0, тогда:

1. V1=U1+A1,1; V1=0+2; V1=2;

. U2=V1-A2,1; U2=2-3; U2=-1;

. V2=U2+A2,2; V2=-1+3; V2=2;

. U3=V2-A3,2; U3=2-1; U3=1;

. V3=U3+A3,2; V3=1+2; V3=3;

. U4=V3-A4,3; U4=3-1; U4=2;

. V4=U4+A4,4; V4=2+4; V4=6;

. U5=V4-A5,4; U5=6-0; U5=6;

Составляем рабочую таблицу затрат:


Школа 1

Школа 2

Школа 3

Школа 4

Ui

Склад A1

2




0

Склад A2

3

3



-1

Склад А3


1

2


1

Склад А4



1

4

2

Склад А5




0

6

Vj

2

2

3

6



Переносим данные опорного плана в ячейки А1,1-А5,4.

Школа 1Школа 2Школа 3Школа 4Ui






Склад A1

2

5

4

5

0

Склад A2

3

3

3

6

-1

Склад А3

5

1

2

7

1

Склад А4

6

4

1

4

2

Склад А5

0

0

0

0

6

Vj

2

2

3

6



Составляем матрицу затрат Сi,j по формуле:

Ci,j=Ui+Ai,j-Vj.

Сi,j=

Из всех отрицательных чисел выбираем наибольшее по модулю, так как воздействие этого числа на затраты является максимальным. В нашем случае это число находится в ячейке А1,4. Отметим в транспортной таблице ячейку А1,4 знаком "+". Остальные занятые ячейки в этой строке знаком "-", таким образом, чтобы в каждой строке получился и "+", и "-", т.е. все помеченные клетки должны образовывать цикл.


Определяет минимум min из всех элементов, помеченных знаком "-", и выбирает одну ячейку, где этот минимум достигается. В нашем случае такой является А2,2. Значение min при этом равно 50. В ячейку А1,4 записываем значение min, ячейка А2,2 остается пустой. В остальных ячейках, помеченных знаком "+" или "-" значение min либо складывается, либо вычитается.

Находим значения Ui и Vj.

Результат заносим в новую таблицу.

Школа 1Школа 2Школа 3Школа 4Ui






Склад A1

2

5

4

5

0

Склад A2

3

3

3

6

-1

Склад А3

5

1

2

7

0

Склад А4

6

4

1

4

1

Склад А5

0

0

0

0

5

Vj

2

1

2

5



Составляем матрицу затрат Сi,j.

Сi,j=

Так как матрица затрат не содержит отрицательных чисел, найденный план перевозок является оптимальным.


Fmin= 2*100+5*50+3*90+1*250+2*40+1*170+4*130+0*120;= 200+250+270+250+80+170+520;=1740.

2.2 Решение с помощью MS Excel

Для решения транспортной задачи для фирмы "Х" использовались электронные таблицы MS Excel. Порядок выполнения действий приведен ниже:

1. Создаем таблицу с условиями задачи.


2. Рядом создаем еще одну таблицу, в которую будут занесены данные, после выполнения команды "Поиск решения". Во второй таблице с помощью формулы " СУММ (...) " выполняем подсчет запасов и потребностей.


3. С помощью функции "Поиск решения" выполняем подсчет транспортных расходов с указанием некоторых ограничений. Ряд ограничений приведен в самой функции "Поиск решения" в поле "Ограничения".

Источник: https://www.bibliofond.ru/detail.aspx?id=787124