Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Neymoin_V01_kursach.docx
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
170.83 Кб
Скачать
  1. Постановка задачи

F(x)=2x1-x2-8x3-4x4 ->min - целевая функция

-2x1+3x2-x3-8x4<=18 - условия

3x1-2x2+2x3-3x4<=24

-x1-3x2+4x3-2x4<=36

xj>=0,j:1,2,3,4

  1. Решение задачи аналитическим методом

Исходные данные:

F(x)=2x1-x2-8x3-4x4 ->min - целевая функция

-2x1+3x2-x3-8x4<=18 - условия

3x1-2x2+2x3-3x4<=24

-x1-3x2+4x3-2x4<=36

xj>=0,j:1,2,3,4

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

2x1-3x2+1x3+8x4+x5=-18

-3x1+2x2-2x3+3x4+x6=-24

1x1+3x2-4x3+2x4+x7=-36

Переходим к формированию симплекс таблицы. В строку F Таблицы заносятся коэффициенты целевой функции.

Из данных задачи составляем исходную симплекс таблицу (таблица 3).

Таблица 3 – Исходная симплекс таблица

X1

X2

X3

X4

Свободные члены

F

2

-1

-3

-4

0

X5

2

-3

1

8

-18

X6

-3

2

-2

3

-24

X7

1

3

-4

2

-36

В составленной нами таблице имеются отрицательные элементы в столбце свободных членов, находим среди них максимальный по модулю - это элемент: -36, он задает ведущую строку - X7. В этой строке так же находим максимальный по модулю отрицательный элемент: -4 он находится в столбце X3, который будет ведущим столбцом. Переменная в ведущей строке исключается из базиса, а переменная соответствующая ведущему столбцу включается в базис. Пересчитаем симплекс-таблицу (таблица 4):

Таблица 4 – Пересчитанная таблица

X1

X2

X7

X4

Свободные члены

F

1.25

-3.25

-0.75

-5.5

27

X5

2.25

-2.25

0.25

8.5

-27

X6

-3.5

0.5

-0.5

2

-6

X3

-0.25

-0.75

-0.25

-0.5

9

В составленной нами таблице имеются отрицательные элементы в столбце свободных членов, находим среди них максимальный по модулю - это элемент: -27, он задает ведущую строку - X5. В этой строке так же находим максимальный по модулю отрицательный элемент: -2.25 он находится в столбце X2, который будет ведущим столбцом. Переменная в ведущей строке исключается из базиса, а переменная соответствующая ведущему столбцу включается в базис. Пересчитаем симплекс-таблицу (таблица 5):

Таблица 5 – Пересчитанная таблица

X1

X5

X7

X4

Свободные члены

F

-2

-1.444

-1.111

-17.778

66

X2

-1

-0.444

-0.111

-3.778

12

X6

-3

0.222

-0.444

3.889

-12

X3

-1

-0.333

-0.333

-3.333

18

В составленной нами таблице имеются отрицательные элементы в столбце свободных членов, находим среди них максимальный по модулю - это элемент: -12, он задает ведущую строку - X6. В этой строке так же находим максимальный по модулю отрицательный элемент: -3 он находится в столбце X1, который будет ведущим столбцом. Переменная в ведущей строке исключается из базиса, а переменная соответствующая ведущему столбцу включается в базис. Пересчитаем симплекс-таблицу (таблица 6):

Таблица 6 – Пересчитанная таблица

X6

X5

X7

X4

Свободные члены

F

-0.667

-1.592

-0.815

-20.371

74

X2

-0.333

-0.518

0.037

-5.074

16

X1

-0.333

-0.074

0.148

-1.296

4

X3

-0.333

-0.407

-0.185

-4.629

22

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

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

  1. Создание приложения для решения задачи

4.1 Описание алгоритма

Ниже приведен алгоритм (рисунок 1) работы программы в упрощенном виде, для лучшего восприятия хода работы программы.

Рисунок 1 - Алгоритм работы программы

4.2 Разработка программы

Для программной реализации задачи коммивояжера был использован язык программирования Delphi 7. Для оформления формы были использованы такие компоненты как: button (кнопка расчета симплекс таблицы), StringGrid (содержит симплекс таблицу).

4.3 Тестирование программы

Введем исходные данные в таблицу StringGrid (рисунок 2):

Рисунок 1 - Ввод исходных данных

Нажимаем кнопку «Пересчитать симплексную таблицу» пока не вылезет подобное окошечко - результат (рисунок 4):

Рисунок 1 - Результат работы

4.4 Руководство пользователя

Запустив приложение Project.exe, перед Вами откроется окно, предоставляющее возможность решать задачи симплекс-метода, где количество переменных всегда -4, а количество ограничений всегда -3.

Для Слежения за выполнением пересчета симплекс-таблицы, программа высчитывает по 1 итерации за 1 нажатие кнопки.

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

Дробные числа нужно вводить через «.», иначе программа выдаст ошибку.

При нажатии кнопки «Ок» в выплывающем сообщении программа закроется.

Закрывается программа при помощи красного крестика в правом верхнем углу программы.

Программа является «разовой», т. е. для расчета следующей задачи нужно закрыть и открыть программу званого.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]