Смекни!
smekni.com

Задачи линейного программирования (стр. 2 из 3)


Коэффициент при X2 функции F отрицателен. Поэтому можно и дальше уменьшать целевую функцию F, увеличивая X2.однако X2 можно увеличивать не более, чем до 1: это следует из уравнения X5=3-3 X2+ X4 ( если X2>1, X4=0, то X5<0 ). Подстановка X2=1 в другие уравнения дает X1=4 и X3 =9. Еще раз выразим базисные переменные и F через небазисные:

Базис Б’’ состоит из переменных X1, X2 , X3 ,

Увеличивая X4 и X5, мы уже не можем получить дальнейшего уменьшения F. Следовательно, нами получено оптимальное решение. Наименьшее значение F, равное -3, достигается при X1=4, X2=1, X3=9.

Сравним значение целевой функции, соответствующие различными базисами:

FБ = 5, FБ’ = - 2 , FБ’’ = - 3, 5 > - 2 > - 3 .

Задача решена.

Производственный план

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


Задание по курсовому проекту

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

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

Таблица 1 "Исходные данные"
МашиныИзделия 1 2 3 4 5 Рj
I 0.5 2 2 1 0 22
II 0.5 1 0 2 0.5 36
III 2. 1 1 0.5 1 28
t 9 12 12 8 16

Завод от реализации одного изделия вида j получает Pj прибыли. Числовые данные этих переменных задаются следующими значениями:

t1=9, t2=12, t=12, t=8, t=16. Р1=22, Р2=36, Р3=28.

Хi – количество выпускаемой продукции.

Составим математическую модель задачи.

Построим математическую модель этой задачи. Пусть Х1 число изделий вида I, Х2- число изделий вида II, а Х3 - число изделий вида III. Так как машины каждого вида (1,2,3,4,5) могут обрабатывать продукцию не более 9, 12, 12, 8, 16 часов соответственно, то приходим к следующей системе ограничений:

0,5х1 + 0,5х2 +2х3£ 9

1 + х2 + х3£ 12

2 х1 + 0 + х3£ 12

х1 + 2 х2 +0,5х3£ 8

0 + 0,5х2+ х3£ 16

х1³ 0

х2³ 0

х3³ 0

Fmax = 22х1 + 36х2 + 28х3

Решаем задачу симплекс методом. Вводим дополнительные неопределенные данные – (Х4,Х5,Х6,Х7,Х8), тогда система ограничений имеет следующий вид.

0,5 х1 + 0,5 х2 + 2 х3 + х4£ 9

1 + х2 + х3 + х5£ 12

1 + х3 + х6£ 12

х1 + 2х2 + 0,5х3 + х7£ 8

0,5х2 + х3 + х8£ 16

Заметим, что :

1) ограничения системы имеют вид и неравенств, и уравнений;

2) требуется максимизировать значение целевой функции.

Правило прямоугольника:

Расчет значений табличных данных ведется по правилу прямоугольника.

Элементы разрешающей строки (строка в которой находится разрешающий элемент) получается из соответствующих элементов прежней строки на разрешающий элемент.

Все элементы разрешающего столбца преобразованной таблицы кроме разрешающего элемента равны нулю.

Все остальные элементы пересчитываются по правилу прямоугольника.

Где:

aij – элемент находящийся в i строке, j столбце

akk – разрешающий элемент

aki - элемент находящийся в i строке, j столбце

aik - элемент находящийся в i строке, j столбце

После преобразований я получил следующую таблицу:

Решение задания по курсовому проекту вручную

X1 X2 X3 X4 X5 X6 X7 X8 Св.член
X4 0,5 0,5 2 1 0 0 0 0 9
X5 2 1 1 0 1 0 0 0 12
X6 2 0 1 0 0 1 0 0 12
X7 1 2 0,5 0 0 0 1 0 8
X8 0 0,5 1 0 0 0 0 1 16
Fmin 22 36 28 0 0 0 0 0 0
X4 0,25 0 1,875 1 0 0 0 0 7
X5 1,5 0 0,75 0 1 0 0 0 8
X6 2 0 1 0 0 1 0 0 12
X2 0,5 1 0,25 0 0 0 0,5 0 4
X8 0,25 0 0,875 0 0 0 0 1 14
Fmin 4 0 19 0 0 0 0 0 -144
X3 0,133 0 1 0,533 0 0 0 0 3,733
X5 1,4 0 0 - 1,406 1 0 0 0 5,2
X6 1,866 0 0 - 0,533 0 1 0 0 8,266
X2 0,466 1 0 - 0,133 0 0 0,5 0 3,067
X8 0,383 0 0 - 0,466 0 0 0 1 10,733
Fmin 1.466 0 0 - 1064 0 0 0 0 - 214.933

Отсюда мы получаем: X1=0, X2=3.067, X3=3.733, X4=0, X5=5.2, X6 =8.266, X8 =10.733 P= - 214.933

Система уравнения примет вид:

Целевая функция равна:

Fmax = - Fmin

Fmax = 22*х1 + 36*х2 + 28*х3

22*0 + 36* 3,066 + 28*3,733 = 214,933

Мы достигли оптимального решения.

Алгоритм программы

1. Вводим данные в таблицу

2. Находим разрешающий элемент:

2.1. Берем каждый элемент первой строки и делим на свободный член первой строки.

2.2. Находим среди всех деленных элементов минимальный.

2.3. Берем каждый элемент второй строки и делим на свободный член второй строки.

2.4. Находим среди всех деленных элементов минимальный.

2.5. Берем каждый элемент третей строки и делим на свободный член третей строки.

2.6. Находим среди всех деленных элементов минимальный.

2.7. Берем минимальные элементы первой, второй и третей строки и среди них находим минимальный (это и будет разрешающий элемент).

3. Вычисляем всю таблицу методом прямоугольника относительно разрешающего элемента:

3.1. Умножаем разрешающий элемент на элемент решаемой строки.

3.2. Отнимаем произведение соответствующего элемента решаемой строки на элемент разрешающего столбца решаемой строки

3.3. И делим ответ на разрешающий элемент.

4. Делим разрешающую строку на разрешающий элемент.

4.1. Берем каждый элемент разрешающей строки и делим на разрешающий элемент.

5. Всем элементам, кроме разрешающего элемента, разрешающего столбца присвоить ( 0 )

6. Разрешающему элементу присвоить ( 1 ).

7. В индексе разрешающей строки присвоить индекс разрешающего столбца.

8. Если на F строке существуют отрицательные элементы то вернутся к пункту 2, если отрицательных нет то перейти к пункту 9.

9. Проверяем F на оптимальность.

9.1. Подставляем в целевую функцию значения из свободного члена с соответствующим индексом.

9.2. Складываем все элементы.

9.3. Сравниваем ответ целевой функции с элементом свободного члена F строки.

10. Получаем оптимальный план.


Текст программы для ЭВМ с операционной системой Win95/Win98

'описание рабочих переменных и констант

Const r = 5 ' строки

Const n = 7 ' столбцы

Private p, f, xn(r), fm

Private x(r, n)

Private Sub btnExit_Click()

'процедура выхода из пограммы

End

btnExit.Caption = "Готово"

End Sub

' присвоение значений переменным

i = 0

u = 1

' распределение данных по строкам и столбцам

1: While u <= n

If f(u) < 0 And i = 0 Then

i = u

End If

If f(u) = 0 Then

tr = 0

For j = 1 To r

If u = p(j) Then

tr = 1

End If

Next j

If tr = 0 Then

MsgBox "Система имеет множество решений", vbOKOnly, " -Simplex- "

Exit Sub

End If

End If

u = u + 1

Wend

'обработка исходных данных

4: Ifi = 0 Then

lblTitle = "Оптимальная работа"

' вывод данных в текстовое поле проверки

txtControl.Text = "Проверка" & Chr(13) & Chr(10)

For i = 1 To n

jt = 0

For j = 1 To r

If p(j) = i Then jt = x(j, 0)

Next j

Next i

For k = 1 To r

For i = 1 To n

jt = 0

For j = 1 To r

If p(j) = i Then jt = x(j, 0)

Next j

s = s + xn(k)(i) * jt

txtControl.Text = txtControl.Text & Str(xn(k)(i)) & "*" & Str(jt)

If i < n Then txtControl.Text = txtControl.Text & "+"

Next i

txtControl.Text = txtControl.Text & " = " & Str(xn(k)(0)) & Chr(13) & Chr(10)

Next k

btnNext.Caption = "Готово"