Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Матем. програмирование.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.44 Mб
Скачать

46. Математическая модель задачи о назначениях

Пусть есть: n - женихов i=1…n и n - невест j=1…n

сij – совместимость i-ого жениха с j-ой невестой

Требуется разбить их на пары с максимальной суммарной совместимостью.

Пример: Совместить 3х женихов и 3х невест. Задача сводится к тому, чтобы в каждом столбце и в каждой строке выбрать одно число, чтобы сумма этих чисел была максимальной.

1

2

3

1

1

2

3

2

2

4

6

3

3

6

9

(по горизонтали женихи, по вертикали невесты)

1,4,9 – max; 3,4,3 – min (если задача на минимум)

Математическая модель:

Пусть

- у одного жениха одна невеста

xij{0; 1}- либо 0, либо 1. Это условие можно заменить на: хijZ, хij≥0, хij≤1. Поэтому задача является задачей целочисленного программирования.

В. 47 Математическая модель задачи Коммивояжера.

Коммивояжер - это бродячий торговец, который должен обойти несколько городов, побывав в каждом ровно 1 раз, причем суммарное пройденное расстояние должно быть min.

Имеется n пунктов, cij- стоимость или время или расстояние для перехода из i пункта в j. Требуется обойти все пункты по 1 разу, и вернутся в исходную точку, иными словами нужно отыскать цикл минимального веса (стоимостью).

Математическая модель:

Напишем целевую функцию:

Нужно 1 раз зайти и выйти: хij –входим из i пункта в j

сумма всех городов, из которых можем выйти

Например, у нас 5 городов. Но тех условий недостаточно. Это не цикл, поэтому нужно добавить ещё 1 условие:

(*), причём i, j =2…n

Пояснение к условию: предположим мы отыскали цикл длиной k<n, тогда просуммируем все неравенства (*) вдоль цикла:

; =1, т. к идем вдоль цикла.

Получили противоречивое неравенство, т.к предположили, что в решение оказался цикл длиной меньше, чем n. Условие (*) гарантирует отсутствие такого цикла.

В. 48 Алгоритм решение задачи о коммивояжере методом отсечений.

На практике модель из предыдущего вопроса никогда не решают, поскольку она очень громоздкая, вместо этого задачу решают методом отсечения.

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

Пусть обнаруживается цикл длиной k<n

Добавим ограничение: , предположим:

Мы берем

1

2

3

4

5

1

100

2

сij

100

3

100

4

100

5

100

Ставим по диагонали 100, что бы не пойти туда.

A

B

C

D

E

1

0

1

0

0

0

2

1

0

0

0

0

3

0

0

0

1

0

4

0

0

0

0

1

5

0

0

1

0

0

Добавляем условие: D3+E4+C5≤2 – т. е. запрещаем нижний цикл.