Задачи линейного программирования

Методическое пособие - Компьютеры, программирование

Другие методички по предмету Компьютеры, программирование

µременных задаются следующими значениями:

 

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

2х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

F max = 22х1 + 36х2 + 28х3

 

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

 

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

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

2х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 столбце

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

 

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

 

X1X2X3X4X5X6X7X8Св.членX40,50,52100009X52110100012X62010010012X7120,5000108X800,510000116Fmin223628000000X40,2501,875100007X51,500,75010008X62010010012X20,510,250000,504X80,2500,8750000114Fmin401900000-144X30,133010,53300003,733X51,400- 1,40610005,2X61,86600- 0,53301008,266X20,46610- 0,133000,503,067X80,38300- 0,466000110,733Fmin1.46600- 10640000- 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. Находим разрешающий элемент:
  3. Берем каждый элемент первой строки и делим на свободный член первой строки.
  4. Находим среди всех деленных элементов минимальный.
  5. Берем каждый элемент второй строки и делим на свободный член второй строки.
  6. Находим среди всех деленных элементов минимальный.
  7. Берем каждый элемент третей строки и делим на свободный член третей строки.
  8. Находим среди всех деленных элементов минимальный.
  9. Берем минимальные элементы первой, второй и третей строки и среди них находим минимальный (это и будет разрешающий элемент).
  10. Вычисляем всю таблицу методом прямоугольника относительно разрешающего элемента:
  11. Умножаем разрешающий элемент на элемент решаемой строки.
  12. Отнимаем произведение соответствующего элемента решаемой строки на элемент разрешающего столбца решаемой строки
  13. И делим ответ на разрешающий элемент.
  14. Делим разрешающую строку на разрешающий элемент.
  15. Берем каждый элемент разрешающей строки и делим на разрешающий элемент.
  16. Всем элементам, кроме разрешающего элемента, разрешающего столбца присвоить ( 0 )
  17. Разрешающему элементу присвоить ( 1 ).
  18. В индексе разрешающей строки присвоить индекс разрешающего столбца.
  19. Если на F строке существуют отрицательные элементы то вернутся к пункту 2, если отрицательных нет то перейти к пункту 9.
  20. Проверяем F на оптимальность.
  21. Подставляем в целевую функцию значения из свободного члена с соответствующим индексом.
  22. Складываем все элементы.
  23. Сравниваем ответ целевой функции с элементом свободного члена 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: If i = 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 = "Готово"

btnNext.Enabled = False

lblRes.Visible = True

Exit Sub

End If

jr = i

For j = i + 1 To n

If f(j) < 0 And f(jr) < f(j) Then jr = j

Next j

i = 1

While i <= r

If x(i, jr) > 0 Then GoTo 5

i = i + 1

Wend

MsgBox Str(jr) & " " & Chr(13) & Chr(10) & "Решения нет"

Exit Sub

нахождение разрешающего элемента

5: ir = i<