Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
23
Добавлен:
02.05.2014
Размер:
74.1 Кб
Скачать

БАЛТИЙСКАЯ АКАДЕМИЯ РЫБОПРОМЫСЛОВОГО ФЛОТА

Кафедра АСОиУ

Лабораторная работа №1

Целочисленное линейное программирование.

Вариант 18

Выполнил: Шнайдер А. Группа: АС-32(2) Проверил: Ампилогов В.А.

Калиниград 2007

Лабораторная работа №1

Тема: Целочисленное линейное программирование.

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

Задание:

18(4). Сокровища короля Тута находятся в музее в Новом Орлеане. План музея, состоящего га нескольких комнат, соединенных открытыми дверями, показан на рис. 9.3. Сторож, находящийся у двери, может наблюдать за двумя смежными комнатами. Администрация музея заинтересована, чтобы в каждой комнате присутствовал сторож, используя при этом минимальное их число. Сформулируйте задачу в виде задачи ЦЛП и найдите ее оптимальное решение.

Порядок выполнеия:

  1. Пронумеруем все проходыи комнаты:

  1. По рисунку определим комнаты, которые можно охранять, находясь в данном проходе:

Проход

1 комната

2 комната

1

1

2

2

2

3

3

3

4

4

4

5

5

5

6

6

6

7

7

7

8

8

8

4

Private Sub Form_Load()

For j = 1 To 8

a(j, 1) = j

a(j, 2) = j + 1

Next j

a(8, 2) = 4

End Sub

  1. При поммощи булевой алгебры найдём все возможные варианты расположения охранников:

For i = 0 To 255

Dim Nakop As String

r = i

Nakop = ""

While r > 1

Nakop = Str(r Mod 2) + Nakop

Nakop = Trim(Nakop)

r = r \ 2

Wend

Nakop = Str(r) + Nakop

Nakop = Trim(Nakop)

While Len(Nakop) < 8

Nakop = "0" + Nakop

Nakop = Trim(Nakop)

Wend

Nakop = Trim(Nakop)

var = Nakop

For j = 1 To 8

If Mid(var, j, 1) = "1" Then

Komn(j) = True

Komn(a(j, 2)) = True

End If

Next j

Okon = True

For j = 1 To 8

If Komn(j) = False Then Okon = False

Next j

If Okon = True Then

Kol = Kol + 1

ReDim Preserve Vozm(Kol)

Vozm(Kol) = var

End If

Okon = False

For j = 1 To 8

Komn(j) = False

Next j

Next i

  1. На основании этих вариантов выберем наиболее оптимальный:

Sub Konechnie_Zamuty()

Dim Min(2) As Byte

Dim Tem As Byte

Min(1) = 1

Min(2) = 8

For i = 1 To Kol

For j = 1 To 8

If Mid(Vozm(i), j, 1) = "1" Then Tem = Tem + 1

Next j

If Tem < Min(1) Then

Min(1) = i

Min(2) = Tem

End If

Tem = 0

Next i

For i = 1 To 8

If Mid(Vozm(Min(1)), i, 1) = "1" Then Shape1(i - 1).Visible = True

Next i

End Sub

В результате получаем:

Вывод: Я изучил методы линейного программирования для решения прикладных задач на компьютере.

5

Соседние файлы в папке Лабораторная работа №1
  • #
    02.05.20145.5 Кб14Form1.frm
  • #
    02.05.201417.32 Кб13Form1.frx
  • #
    02.05.2014642 б12Project1.vbp
  • #
    02.05.201450 б12Project1.vbw
  • #
    02.05.201474.1 Кб23Отчёт.docx