Помощь в написании студенческих работ
Антистрессовый сервис

Математическая модель оптимальной расстановки игроков футбольной команды на поле

КурсоваяПомощь в написанииУзнать стоимостьмоей работы

Большинство распределительных задач можно представить в виде матриц (см. Таблица 1). Элементы Сi, j, стоящие в клетках матрицы, соответствуют затратам или доходу, отвечающим выделению, одной единицы ресурса Ri на работу Jj. Величины Сi, j могут быть независимыми или зависимыми. Так, например, затраты, обусловленные назначением одной автомашины на некоторый маршрут доставки грузов, не зависят… Читать ещё >

Математическая модель оптимальной расстановки игроков футбольной команды на поле (реферат, курсовая, диплом, контрольная)

Министерство образования и науки республики казахстан Восточно-Казахстанский государственный технический университет

им. Д. Серикбаева РАБОТА НА КОНКУРС Девиз: «Все на футбол»

(Курсовой проект) Раздел:

Математическое моделирование Наименование:

Математическая модель оптимальной расстановки игроков футбольной команды на поле г. Усть-Каменогорск, 2007 г.

Аннотация работы

1. Название: «Математическая модель оптимальной расстановки игроков на поле»

2. Государственный рубрикатор научно-технической информации:

3. ВУЗ: ВКГТУ им. Д. Серикбаева.

4. Год завершения работы: 2007

5. Объем работы: 39 с.

6. Количество таблиц — 8; Количество рис. — 4.

7. Количество источников литературы: 7.

Характеристика работы:

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

2. В работе были использованы: метод потенциалов для решения транспортной задачи линейного программирования.

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

Подпись автора Ильин. А.А.

Сведения об авторе и научном руководителе работы

Автор:

Ильин Александр, ВКГТУ, 3-й курс

70 017, ВКО, Усть-Каменогорск Научный руководитель:

Байгазова Наталья Александровна, старший преподаватель кафедры «Информационные системы», к.п.н.

70 010, ВКО, Усть-Каменогорск, ул. Серикбаева, 23−106

Проректор по НиМС Н. М. Темирбеков Научные руководители Е. А. Сидорова Автор работы А.А. Ильин

Отзыв

Научного руководителя о степени самостоятельности выполнения работы:

«Математическая модель оптимальной расстановки игроков футбольной команды на поле», автор: Ильин А.А.

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

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

Автор продолжает работать над проблемой и модернизацией программного приложения.

1. Теоретическая часть

1.1 Общая характеристика распределительной задачи

1.2 Транспортная задача как частный случай общей распределительной задачи

1.2.1 Составление опорного плана

1.2.2 Распределительный метод достижения оптимального плана

1.3 Решение транспортной задачи методом потенциалов

1.3.1 Транспортная задача с правильным балансом

1.3.2 Транспортная задача с неправильным балансом

2. Практическая часть

2.1 Формулировка задачи

2.2 Разработка модели

2.3 Программная реализация Заключение Список использованной литературы Приложение, А Приложение В Приложение С

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

— постановка задачи;

— построение модели;

— решение моделей с помощью выбранного метода оптимизации;

— реализация полученного результата.

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

Научная новизна данной работы заключается в автоматизации средствами ЭВМ разработанной математической модели оптимальной расстановки игроков футбольной команды на поле.

Для разработки приложения использованы следующие программные средства:

— Borland Delphi 7 — средство разработки пользовательского интерфейса приложения.

Данная научная работа является курсовым проектом и выполнена по заказу кафедры физвоспитания и спорта, что свидетельствует о ее практической значимости.

1. Теоретическая часть

1.1 Общая характеристика распределительной задачи

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

Типичная распределительная задача.

Таблица 1

Ресурсы

Работы, которые нужно выполнить

Объём имеющихся ресурсов

J1

J2

Jj

Jn

R1

R2

Ri

Rm

C1,1

C2,1

Ci, 1

Cm, 1

C1,2

C2,2

Ci, 2

Cm, 2

C1,j

C2,j

Ci, j

Cm, j

C1,n

C2,n

Ci, n

Cm, n

b1

b2

bi

bm

Объём требуемых ресурсов

a1

a2

aj

an

Большинство распределительных задач можно представить в виде матриц (см. Таблица 1). Элементы Сi,j, стоящие в клетках матрицы, соответствуют затратам или доходу, отвечающим выделению, одной единицы ресурса Ri на работу Jj. Величины Сi,j могут быть независимыми или зависимыми. Так, например, затраты, обусловленные назначением одной автомашины на некоторый маршрут доставки грузов, не зависят от того какие машины назначены на обслуживание других маршрутов. В то же время при распределение средств между подразделениями фирмы доход от затрат определённого количества денег одним её подразделением (скажем производством) обычно зависит от того, какие средства будут затрачены другими подразделениями (скажем отделом сбыта). В теории распределения рассматриваются преимущественно задачи с независимыми затратами и доходами. Это объясняется не тем, что такие задачи более важны, а лишь тем, что для них значительно легче строить модели и получать решения.

Если затраты (или доход), определяемые объёмом Xi,j ресурса i, выделенного на выполнение работы Jj, равны Xi,j * Ci,j, то имеем линейную распределительную задачу. Распределительные задачи с независимыми линейными функциями затрат (или дохода) стали объектом, наиболее интенсивных исследований, в виду того что для их решения были развиты эффективные, итеративные методы линейного программирования. Однако имеются также методы решения некоторых нелинейных распределительных задач, в том числе методы, основанные на линейной аппроксимации.

Распределение ресурсов для одного периода времени может влиять на распределения ресурсов для последующих периодов, а может не оказывать на них никакого влияния. Если каждое из последовательности распределений не зависит от всех остальных, то такая задача называется статистической, в противном случае имеем динамическую распределительную задачу. Статистические задачи исследованы в большей степени, чем динамические, но для решения некоторых типов динамических задач успешно применяются методы линейного динамического и динамического программирования. Для решения некоторых динамических задач применяют методы стохастического программирования. В таких задачах принятие решений основано на вероятностных оценках будущих значений параметров, имеющих фиксированное распределение вероятностей.

Основные методы решения распределительных задач, в частности линейного программирования, построены на допущении, что объёмы, имеющихся в наличии ресурсов (bi), требуемые объёмы (aj) и затраты (Ci,j) точно известны.

Если общий объём наличных ресурсов? bi (i=1…m) равен общей потребности в них? aj (j=1…n), то имеет место сбалансированная (закрытая) распределительная задача. Если же? aj <> ?bi, то задача называется несбалансированной (открытой). Если ресурсы можно разделить между работами, то некоторые работы можно выполнять с помощью различных комбинаций ресурсов. Если работы и ресурсы измеряются в единицах одной и той же шкалы, то такие задачи обычно называют транспортными или задачами разложения. Если же работы и ресурсы выражаются в различных единицах измерениях, то задача называется общей распределительной задачей.

Таким образом, транспортная задача является частным случаем общей распределительной задачи.

1.2 Транспортная задача как частный случай общей распределительной задачи

Транспортная задача ставится следующим образом: имеется m пунктов отправления А1, А2, …, Аm , в которых сосредоточены запасы каких-то однородных грузов в количестве соответственно а1, а2, …, аm единиц. Имеется n пунктов назначения В1, В2, …, Вn подавшие заявки соответственно на b1, b2, …, bn единиц груза. Известны стоимости Сi,j перевозки единицы груза от каждого пункта отправления Аi до каждого пункта назначения Вj. Все числа Сi,j, образующие прямоугольную таблицу заданы. Требуется составить такой план перевозок (откуда, куда и сколько единиц поставить), чтобы все заявки были выполнены, а общая стоимость всех перевозок была минимальна.

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

1.2.1 Составление опорного плана

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

Условия транспортной задачи заданы транспортной таблицей.

Таблица 2

ПН ПО

В1

В2

В3

В4

В5

Запасы, аi

А1

А2

А3

А4

Заявки, bj

Будем заполнять таблицу перевозками постепенно начиная с левой верхней ячейки («северо-западного угла» таблицы). Будем рассуждать при этом следующим образом. Пункт В1 подал заявку на 18 единиц груза. Удовлетворим эту заявку за счёт запаса 48, имеющегося в пункте А1, и запишем перевозку 18 в клетке (1,1). После этого заявка пункта В1 удовлетворена, а в пункте А1 осталось ещё 30 единиц груза. Удовлетворим за счёт них заявку пункта В2 (27 единиц), запишем 27 в клетке (1,2); оставшиеся 3 единицы пункта А1 назначим пункту В3. В составе заявки пункта В3 остались неудовлетворёнными 39 единиц. Из них 30 покроем за счёт пункта А2, чем его запас будет исчерпан, и ещё 9 возьмём из пункта А3. Из оставшихся 18 единиц пункта А3 12 выделим пункту В4; оставшиеся 6 единиц назначим пункту В5, что вместе со всеми 20 единицами пункта А4 покроет его заявку. На этом распределение запасов закончено; каждый пункт назначения получил груз согласно своей заявки. Это выражается в том, что сумма перевозок в каждой строке равна соответствующему запасу, а в столбце — заявке. Таким образом, нами сразу же составлен план перевозок, удовлетворяющий балансовым условиям. Полученное решение является опорным решением транспортной задачи:

Таблица 3

ПН ПО

В1

В2

В3

В4

В5

Запасы, аi

А1

1018

827

53

А2

830

А3

109

812

76

А4

820

Заявки, bj

Составленный нами план перевозок, не является оптимальным по стоимости, так как при его построении мы совсем не учитывали стоимость перевозок Сi,j .

Другой способ — способ минимальной стоимости по строке — основан на том, что мы распределяем продукцию от пункта Ai не в любой из пунктов Bj, а в тот, к которому стоимость перевозки минимальна. Если в этом пункте заявка полностью удовлетворена, то мы убираем его из расчетов и находим минимальную стоимость перевозки из оставшихся пунктов Bj. Во всем остальном этот метод схож с методом «северо-западного угла». В результате, опорный план, составленный способом минимальной стоимости по строке выглядит как показано в таблице 4.

При этом методе может получиться, что стоимости перевозок Ci, j и Ci, k от пункта Ai к пунктам Bj и Bk равны. В этом случае, с экономической точки зрения, выгоднее распределить продукцию в тот пункт, в котором заявка больше. Так, например, в строке 2: C2,1 = C2,4, но заявка b1 больше заявки b4, поэтому 4 единицы продукции мы распределим в клетку (2,1).

Таблица 4

ПН ПО

В1

В2

В3

В4

В5

Запасы, аi

А1

542

66

А2

64

526

А3

727

А4

714

66

Заявки, bj

Способ минимальной стоимости по столбцу аналогичен предыдущему способу. Их отличие состоит в том, что во втором способе мы распределяем продукцию от пунктов Bi к пунктам Aj по минимальной стоимости Cj, i. Опорный план, составленный способами минимальных стоимостей, обычно более близок к оптимальному решению. Так в нашем примере общие затраты на транспортировку по плану, составленному первым способом F0 = 1039, а по второму — F0 = 723.

Клетки таблицы, в которых стоят ненулевые перевозки, являются базисными. Их число должно равняться m + n — 1. Необходимо отметить также, что встречаются такие ситуации, когда количество базисных клеток меньше чем m + n — 1. В этом случае распределительная задача называется вырожденной. И следует в одной из свободных клеток поставить количество перевозок равное нулю. Так, например, в таблице 4:

m + n — 1 = 4 + 5 — 1 = 8,

а базисных клеток 7, поэтому нужно в одну из клеток строки 3 или столбца 2 поставить значение «0». Например в клетку (3,5).

Составляя план по способам минимальных стоимостей в отличии от плана по способу «северо-западного угла» мы учитываем стоимости перевозок Ci, j, но все же не можем утверждать, что составленный нами план является оптимальным.

1.2.2 Распределительный метод достижения оптимального плана

Теперь попробуем улучшить план, составленный способом «северо-западного угла». Перенесем, например, 18 единиц из клетки (1,1) в клетку (2,1) и чтобы не нарушить баланса перенесём те же 18 единиц из клетки (2,3) в клетку (1,3). Получим новый план. Подсчитав стоимость опорного плана (она ровняется 1039) и стоимость нового плана (она ровняется 913) нетрудно убедиться что стоимость нового плана на 126 единиц меньше. Таким образом за счёт циклической перестановки 18 единиц груза из одних клеток в другие нам удалось понизить стоимость плана:

Таблица 5

ПН ПО

В1

В2

В3

В4

В5

Запасыаi

А1

827

521

А2

618

812

А3

109

812

76

А4

820

Заявкиbj

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

Существует несколько вариантов цикла:

1.) 2.) 3.)

Нетрудно убедиться, что каждый цикл имеет чётное число вершин и значит, чётное число звеньев (стрелок). Условимся отмечать знаком «+» те вершины цикла, в которых перевозки необходимо увеличить, а знаком «-» те вершины, в которых перевозки необходимо уменьшить. Цикл с отмеченными вершинами будем называть «означенным». Перенести какое-то количество единиц груза по означенному циклу — это значит увеличить перевозки, стоящие в положительных вершинах цикла, на это количество единиц, а перевозки, стоящие в отрицательных вершинах уменьшить на то же количество. Очевидно, при переносе любого числа единиц по циклу равновесие между запасами и заявками не меняется: по прежнему сумма перевозок в каждой строке равна запасам этой строки, а сумма перевозок в каждом столбце — заявке этого столбца. Таким образом при любом циклическом переносе, оставляющем перевозки неотрицательными допустимый план остаётся допустимым. Стоимость же плана при этом может меняться: увеличиваться или уменьшатся. Назовём ценой цикла увеличение стоимости перевозок при перемещении одной единицы груза по означенному циклу. Очевидно цена цикла ровна алгебраической сумме стоимостей, стоящих в вершинах цикла, причём стоящие в положительных вершинах берутся со знаком «+», а в отрицательных со знаком «-». Обозначим цену цикла через г. При перемещении одной единицы груза по циклу стоимость перевозок увеличивается на величину г. При перемещении по нему k единиц груза стоимость перевозок увеличиться на kг. Очевидно, для улучшения плана имеет смысл перемещать перевозки только по тем циклам, цена которых отрицательна. Каждый раз, когда нам удаётся совершить такое перемещение стоимость плана уменьшается на соответствующую величину kг. Так как перевозки не могут быть отрицательными, мы будем пользоваться только такими циклами, отрицательные вершины которых лежат в базисных клетках таблицы, где стоят положительные перевозки. Если циклов с отрицательной ценой в таблице больше не осталось, это означает, что дальнейшее улучшение плана невозможно, то есть оптимальный план достигнут.

Метод последовательного улучшения плана перевозок и состоит в том, что в таблице отыскиваются циклы с отрицательной ценой, по ним перемещаются перевозки, и план улучшается до тех пор пока циклов с отрицательной ценой уже не останется. При улучшении плана циклическими переносами, как правило, пользуются приёмом, заимствованным из симплекс-метода: при каждом шаге (цикле) заменяют одну свободную переменную на базисную, то есть заполняют одну свободную клетку и взамен того освобождают одну из базисных клеток. При этом общее число базисных клеток остаётся неизменным и равным m + n — 1. Этот метод удобен тем, что для него легче находить подходящие циклы.

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

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

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

1.3 Решение транспортной задачи методом потенциалов.

1.3.1 Транспортная задача с правильным балансом.

Этот метод позволяет автоматически выделять циклы с отрицательной ценой и определять их цены.

Пусть имеется транспортная задача с балансовыми условиями

?xi,j = ai (i=1.m; j=1.n);

?xi,j =bj (j=1.n; 1. m),

причём? ai =? bj .

Стоимость перевозки единицы груза из Ai в Bj равна C i,j таблица стоимостей задана. Требуется найти план перевозок (xi,j), который удовлетворял бы балансовым условиям и при этом стоимость всех перевозок бала минимальна.

Идея метода потенциалов для решения транспортной задачи сводиться к следующему. Представим себе что каждый из пунктов отправления Ai вносит за перевозку единицы груза (всё ровно куда) какую-то сумму бi; в свою очередь каждый из пунктов назначения Bj также вносит за перевозку груза (куда угодно) сумму вj. Эти платежи передаются некоторому третьему лицу («перевозчику»). Обозначим бi + вj = i,j (i=1.m ;j=1.n) и будем называть величину i,j «псевдостоимостью» перевозки единицы груза из Ai в Bj. Заметим, что платежи бi и вj не обязательно должны быть положительными; не исключено, что «перевозчик» сам платит тому или другому пункту какую-то премию за перевозку. Также надо отметить, что суммарная псевдостоимость любого допустимого плана перевозок при заданных платежах (бi и вj) одна и та же и от плана к плану не меняется.

До сих пор мы никак не связывали платежи (бi и вj) и псевдостоимости i,j с истинными стоимостями перевозок C i,j. Теперь мы установим между ними связь. Предположим, что план (xi,j) невырожденный (число базисных клеток в таблице перевозок ровно (m + n -1). Для всех этих клеток xi,j >0. Определим платежи (бi и вj) так, чтобы во всех базисных клетках псевдостоимости были ровны стоимостям:

шбо = бш + во = сшбо б при чшбо Ю0ю Что касается свободных клеток (где xi,j = 0), то в них соотношение между псевдостоимостями и стоимостями может быть какое угодно.

Оказывается соотношение между псевдостоимостями и стоимостями в свободных клетках показывает, является ли план оптимальным или же он может быть улучшен. Существует специальная теорема: Если для всех базисных клеток плана (xi,j > 0)

бi + вj = i,j= сi,j ,

а для всех свободных клеток (xi,j =0)

бi + вj = i,j сi,j ,

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

i,j= сi,j (для всех базисных клеток) (1)

i,j сi,j (для всех свободных клеток) (2)

называется потенциальным планом, а соответствующие ему платежи (бi и вj) — потенциалами пунктов Ai и Bj (i=1,…, m; j=1,…, n). Пользуясь этой терминологией вышеупомянутую теорему можно сформулировать так: Всякий потенциальный план является оптимальным. Итак, для решения транспортной задачи нам нужно одно — построить потенциальный план. Оказывается его можно построить методом последовательных приближений, задаваясь сначала какой-то произвольной системой платежей, удовлетворяющей условию (1). При этом в каждой базисной клетке получиться сумма платежей, равная стоимости перевозок в данной клетке; затем, улучшая план следует одновременно менять систему платежей. Так, что они приближаются к потенциалам. При улучшении плана нам помогает следующее свойство платежей и псевдостоимостей: какова бы ни была система платежей (бi и вj) удовлетворяющая условию (1), для каждой свободной клетки цена цикла пересчёта равна разности между стоимостью и псевдостоимостью в данной клетке :

гi,j= сi,j — i,j.

Таким образом, при пользовании методом потенциалов для решения транспортной задачи отпадает наиболее трудоёмкий элемент распределительного метода: поиски циклов с отрицательной ценой.

Процедура построения потенциального (оптимального) плана состоит в следующем.

В качестве первого приближения к оптимальному плану берётся любой допустимый план (например, построенный способом минимальной стоимости по строке). В этом плане m + n — 1 базисных клеток, где m — число строк, n — число столбцов транспортной таблицы. Для этого плана можно определить платежи (бi и вj), так, чтобы в каждой базисной клетке выполнялось условие :

бi + вj = сi,j (3)

Уравнений (3) всего m + n — 1, а число неизвестных равно m + n. Следовательно, одну из этих неизвестных можно задать произвольно (например, равной нулю). После этого из m + n — 1 уравнений (3) можно найти остальные платежи бi, вj, а по ним вычислить псевдостоимости: i,j= бi + вj для каждой свободной клетки.

Таблица 6

ПН ПО

В1

В2

В3

В4

В5

бi

А1

10 = 7

8 = 6

542

66

9 = 6

А2

64

7 = 5

8 = 4

6 = 5

526

-1

А3

8 = 8

727

10 = 6

8 = 7

А4

714

5 = 6

4 = 5

66

8 = 6

вj

Если оказалось, что все эти псевдостоимости не превосходят стоимостей

i,j <= сi,j ,

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

В таблице 6 мы получили в двух клетках i,j > сi,j, теперь можно построить цикл в любой из этих двух клеток. Выгоднее всего строить цикл в той клетке, в которой разность i,j — сi,j больше.

Таблица 7

ПН ПО

В1

В2

В3

В4

В5

бi

А1

542

66

А2

6 +4

5 -26

-1

А3

7 -27

7 +0

А4

7 -14

5 +х

66

вj

Теперь будем перемещать по циклу число 14, так как оно является минимальным из чисел, стоящих в клетках, помеченных знаком —. Приперемещении мы будем вычитать 14 из клеток со знаком — и прибавлять к клеткам со знаком + .

После этого необходимо подсчитать потенциалы бi и вj.

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

1. Взять любой опорный план перевозок, в котором отмечены

m + n — 1 базисных клеток (остальные клетки свободные).

2. Определить для этого плана платежи (бi и вj) исходя из условия, чтобы в любой базисной клетке псевдостоимости были равны стоимостям. Один из платежей можно назначить произвольно, например, положить равным нулю.

3. Подсчитать псевдостоимости i,j = бi + вj для всех свободных клеток. Если окажется, что все они не превышают стоимостей, то план оптимален.

4. Если хотя бы в одной свободной клетке псевдостоимость превышает стоимость, следует приступить к улучшению плана путём переброски перевозок по циклу, соответствующему любой свободной клетке с отрицательной ценой (для которой псевдостоимость больше стоимости).

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

Блок-схема алгоритма метода потенциалов для задачи транспортного типа приведена в приложении А.

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

F0 = 723, F1 = 709, F2 = Fmin = 703.

Следует отметить так же, что оптимальный план может иметь и другой вид, но его стоимость останется такой же Fmin = 703.

1.3.2 Транспортная задача с неправильным балансом

В предыдущих случаях мы рассматривали только такую задачу о перевозках, в которой сумма запасов ровна сумме заявок:

ш =? ио (где ш=1бюююбь ж о=1бюююбт) (4)

Это классическая транспортная задача, иначе называемая, транспортной задачей с правильным балансом. Встречаются такие варианты транспортной задачи где условие (4) нарушено. В этих случаях говорят о транспортной задаче с неправильным балансом.

Баланс транспортной задачи может нарушаться в 2-ух направлениях:

1. Сумма запасов в пунктах отправления превышает сумму поданных заявок

? аш Ю? ио (где ш=1бюююбь ж о=1бюююбт)ж

2. Сумма поданных заявок превышает наличные запасы

? аш Б? ио (где ш=1бюююбь ж о=1бюююбт)ж Условимся первый случай называть «Транспортной задачей с избытком запасов», а второй — «Транспортной задачей с избытком заявок».

Рассмотрим последовательно эти два случая:

1) Транспортная задача с избытком запасов.

В пунктах A1, A2, …, Am имеются запасы груза a1, a2, …, am; пункты B1, B2, …, Bn подали заявки b1, b2, …, bn, причём

? аш Ю? ио (где ш=1ююь ж о=1юют)ю Требуется найти такой план перевозок (X), при котором все заявки будут выполнены, а общая стоимость перевозок минимальна. Очевидно при этой постановке задачи некоторые условия-равенства транспортной задачи превращаются в условия-неравенства, а некоторые — остаются равенствами.

n

? Xi,j ai (i=1, …, m);

j=1

m

? Xi,j = bj (j=1, …, n).

i=1

Мы умеем решать задачу линейного программирования, в какой бы форме — равенств или неравенств ни были бы заданы её условия. Поставленная задача может бать решена, например, обычным симплекс-методом. Однако, задачу можно решить проще, если искусственным приёмом свести её к ранее рассмотренной транспортной задаче с правильным балансом. Для этого, сверх имеющихся n пунктов назначения В1, B2, …, Bn, введём ещё один, фиктивный, пункт назначения Bn+1, которому припишем фиктивную заявку, равную избытку запасов над заявками ит+1 =? аш -? ио (где ш=1бюююбь ж о=1бюююбт) б, а стоимость перевозок из всех пунктов отправления в фиктивный пункт назначения bn+1 будем считать равным нулю.

Введение

м фиктивного пункта назначения B n+1 с его заявкой b n+1 мы сравняли баланс транспортной задачи и теперь его можно решать как обычную транспортную задачу с правильным балансом.

2) Транспортная задача с избытком заявок.

Эту задачу можно свести к обычной транспортной задаче с правильным балансом, если ввести фиктивный пункт отправления Am+1 с запасом am+1 равным недостающему запасу и стоимость перевозок из фиктивного пункта отправления во все пункты назначения принять равным нулю.

расстановка футбольный поле игрок

2. Практическая часть

2.1 Формулировка задачи

Опытный тренер, хорошо знающий своих игроков, обычно успешно справляется с проблемой распределения между ними игровых обязанностей. Задача, связанная с использованием запасных игроков в разных сочетаниях, оказывается более сложной, если команда имеет «длинную скамейку» (в команде много игроков примерно одного класса). В этой ситуации даже опытному тренеру может помочь рассмотрение соответствующей математической модели.

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

2.2 Разработка модели

Попытаемся помочь новому тренеру, используя методы исследования операций. С этой целью придадим задаче, сформулированной на вербальном уровне, более точную форму и займемся построением ее математической модели. Если ничего не знать об игроках, то нечего и решать, — можно действовать наугад. Поэтому полезны даже ограниченные сведения. Следует воспользоваться каким-либо приемом, позволяющим в приемлемые сроки ознакомиться с возможностями всех игроков. Обычно поступают следующим образом. Членам команды предлагают серию тестов, позволяющих оценить их способности играть в нападении, левым защитником, правым защитником, центровым защитником, левым полузащитником, правым полузащитником и центровым полузащитником. Действия игрока Аi (i=1.n, где n — количество игроков в команде), оценим в некоторых условных баллах, к примеру от 1 до 9.

В рамках этого же метода тренер может решать и такой вопрос: выпускать ли ему двух центровых защитников или двух нападающих (вместо одного).

Результаты тестов сведем в таблицу 8.

Таблица 8

Игрок

Напад.

Левый защит.

Правый защит.

Центровой защит.

Левый полузащ.

Правый полузащ.

Центровой полузащ.

А1

А2

А3

А4

Стиль расстан.

Чем выше балл, тем предпочтительнее назначение игрока на соответствующее амплуа. Так, например, игрок А1, вероятно, будет хорошим центровым защитником, но слабым правым и левым полузащитником, а игрок А4, в общем-то, равно хорошо играет всюду, а в нападении совсем плохо. Вторая строка отражает стиль расстановки, т. е. необходимое количество игроков на каждое амплуа.

В профессиональном футболе существует множество стилей расстановки игроков и каждая имеет конкретное обоснование. Ограничимся пятью для того, чтобы рассмотреть разные комбинации:

4−4-2 — стандартная (по двое в нападении, центровыми защитниками и центровыми полузащитниками, на остальные амплуа по одному);

4−3-3 — усилено нападение (отличается от 4−4-2 тем, что вместо 2-го центрового полузащитника добавлен еще один нападающий);

4−5-1 — усилена полузащита по центру (в этой расстановке три центровых полузащитника и один нападающий);

5−3-2 — усиление центровой защиты (двое в нападении, по трое в центровой защите и полузащите, по одному левому и правому защитнику);

3−4-3 — усиление лицевого фронта (по трое в нападении и центровой защите, двое в центровой полузащите, левый и правый полузащитники).

В общем виде результаты тестов можно представить в виде следующей матрицы:

С1,1 С1,2 … С1,m

С = С2,1 С2,2 … С2,m

Сn, 1 Сn, 2 … Сn,m

Каждый элемент матрицы Сij отражает способность i-го игрока (i=1.n) играть в j-м амплуа (j=1.m).

Соответствующий вид примет матрица назначений:

X1,1 X1,2 … X1,m

X = X2,1 X2,2 … X2,m

Xn, 1 Xn, 2 … Xn,m

Каждый элемент матрицы Xij отражает назначение i-го игрока (i=1.n) на роль j (j=1.m) и может принимать только 2 значения:

При этом в каждой строке матрицы Х может быть только один элемент равный единице, тем самым мы ограничим назначение i-го игрока только на одно назначение.

Соответственно, через вектор B мы обозначим стиль расстановки — необходимое количество игроков на каждое (1.m) назначение:

B = (B1; B2; …Bm).

Вместе с тренером мы примем естественное предположение (критерий эффективности), согласно которому эффективность игры всей команды определяется суммой баллов, оценивающих игру каждого и его назначение. Обозначим его через F, тогда F (Х)=X*C. При этом поиск матрицы назначений Х, доставляющей эффективности F наибольшее значение — это и есть поиск оптимальной расстановки игроков.

Формализуя нашу задачу в терминах линейного программирования получим:

Сформулированная задача и есть математическая модель задачи о распределении обязанностей в футбольной команде, где (1) — целевая функция максимизации результата игры всей команды; (2) — ограничение о назначении i-го игрока только на одно амплуа; (3) — ограничение назначения на j-е амплуа столько игроков, сколько их определено на данное амплуа с учетом стиля расстановки; (4) — требование неотрицательности неизвестных.

Как видно, наша математическая модель ничто иное, как транспортная задача линейного программирования.

Однако такой вид слишком обобщенный, поэтому конечная математическая модель оптимальной расстановки игроков футбольной команды на поле, которая обеспечит тренера обоснованными решениями о распределении игровых обязанностей между членами футбольной команды, с целью достижения максимальной эффективности игры всей команды, для футбольной команды с основным составом 22 игрока (вратаре не учитываем) примет следующий вид:

Так как наша задача открытого типа, то для ее решения было введено фиктивное 8-е амплуа, имеющее нулевые оценки. Оно позволило привести нашу задачу к правильному балансу:

таким образом, все игроки получат назначение.

2.3 Программная реализация

Автоматизированное средство поиска оптимальной расстановки игроков футбольной команды реализовано на основе вышеизложенной математической модели. Поиск опорного плана реализован способом минимальной стоимости по строке. В качестве метода последовательного улучшения опорного плана использован метод потенциалов. Блок-схема алгоритма автоматизированного средства (см. рис. 2) приведена в приложении В. Программный код основных процедур и функций расчета, и интерфейс (см. рис. 3,4) приведены в приложении С.

ЗАКЛЮЧЕНИЕ

В курсовой работе выполнена разработка математической модели оптимальной расстановки игроков футбольной команды на поле. На основе этой модели разработано автоматизированное средство в помощь тренеру.

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

1. Е. Г. Гольштейн, Д. Б. Юдин «Задачи линейного программирования транспортного типа».

2. А. И. Плис «Лабораторный практикум по высшей математике»

3. С. И. Зуховицкий, Л. И. Авдеева «Линейное и выпуклое прграммирование»

4. Вентцель Е. С. «Исследование операций. Задачи, принципы, методология»

5. Мастяева И. Н., Семенихина О. Н. «Методы оптимизации»

6. Культин Н. Б. «Программирование в Delphi 7»

7. Баландин В. И., Блудов Ю. М., Плахтиенко В. А. «Прогнозирование в спорте»

Приложение А

Рис. 1 «Блок-схема алгоритма метода потенциалов для задачи транспортного типа»

Приложение В

Рис. 2 «Блок-схема алгоритма автоматизированного средства поиска оптимальной расстановки игроков футбольной команды на поле»

Приложение С

Основные функции и процедуры автоматизированного средства поиска оптимальной расстановки игроков футбольной команды на поле

procedure Nul (var a: footb); //обнуление массива

var i: integer;

begin

for i:=1 to N do a[i]: =0;

end;

function a_b: boolean; //Расчет потенциалов alfa и betta

var k, i, j: integer;

Z_a, Z_b: footb;

dd: boolean;

begin

Nul (Z_a); Nul (Z_b);

alfa[1]: =0; Z_a[1]: =1;

k:=1;

Repeat

dd:= true;

for i:=1 to Na do

if Z_a[i]=1 then

for j:=1 to Nb do

if (p[i, j]>-1) and (Z_b[j]=0) then begin

Z_b[j]: =1;

betta[j]:=c[i, j]-alfa[i];

k:=k+1;

dd:=false;

end;

for i:=1 to Nb do

if Z_b[i]=1 then

for j:=1 to Na do

if (p[j, i]>-1) and (Z_a[j]=0) then begin

Z_a[j]: =1;

alfa[j]:=c[j, i]-betta[i];

k:=k+1;

dd:=false;

end;

Until (k=Na+Nb) or dd;

if dd then begin

i:=1;

While Z_a[i]=1 do i:=i+1;

j:=1;

While Z_b[j]=0 do j:=j+1;

p[i, j]: =0;

end;

a_b:=dd;

end;

function kkk (var ki, kj: integer):integer; // Расчет коэффициента k в свободных клетках

var i, j, k, k_min: integer;

b: boolean;

begin

b:=true;

for i:=1 to Na do

for j:=1 to Nb do

if p[i, j]=-1 then begin

k:=c[i, j]-alfa[i]-betta[j];

if b then begin

b:=false;

ki:=i; kj:=j; k_min:=k;

end else

if k

k_min:=k;

ki:=i; kj:=j;

end;

end;

kkk:=k_min;

end;

procedure div_mod (c:integer; var a, b: integer); //Перевод одномерного массива в двумерный

begin

b:=c mod Nb; a:=c div Nb +1;

if b=0 then begin

b:=Nb; dec (a);

end;

end;

procedure Rek (Xi, Yi: integer; var z: boolean; var c: integer);

var i, j: integer;

Begin //Рекурсивная процедура, определяет контур перемещения

z:=false;

Case c of

1: for i:=1 to Na do

if i<>Xi then

if p[i, Yi]>-1 then begin

if u[(i-1)*Nb+Yi]=0 then begin

u[(Xi-1)*Nb+Yi]: =(i-1)*Nb+Yi;

c:=2;

Rek (i, Yi, z, c);

if z then exit;

end;

end

else if (i=ki) and (Yi=kj) then begin

u[(Xi-1)*Nb+Yi]: =(ki-1)*Nb+kj;

if z=true then z:=false;

if z=false then z:=true;

exit;

end;

2: for i:=1 to Nb do

if i<>Yi then

if p[Xi, i]>-1 then begin

if u[(Xi-1)*Nb+i]=0 then begin

u[(Xi-1)*Nb+Yi]: =(Xi-1)*Nb+i;

c:=1;

Rek (Xi, i, z, c);

if z then exit;

end;

end

else if (Xi=ki) and (i=kj) then begin

u[(Xi-1)*Nb+Yi]: =(ki-1)*Nb+kj;

if z=true then z:=false;

if z=false then z:=true;

exit;

end;

end;

u[(Xi-1)*Nb+Yi]: =0;

c:=c mod 2 +1;

End;

procedure kontur; // процедура определения контура перемещения

var i, j, k, mi, mj, l: integer;

z:boolean;

p_m:longint;

Begin

for i:=1 to N*N do u[i]: =0;

l:=1;

Rek (ki, kj, z, l);

i:=ki; j:=kj;

k:=u[(i-1)*Nb+j];

div_mod (k, i, j);

mi:=i; mj:=j; l:=1;

Repeat

l:=l+1;

k:=u[(i-1)*Nb+j];

div_mod (k, i, j);

if l mod 2=1 then

if p[i, j]

mi:=i; mj:=j;

end;

Until (i=ki) and (j=kj);

i:=ki; j:=kj; l:=0;

p_m:=p[mi, mj];

Repeat

if l mod 2=0 then begin

inc (p[i, j], p_m);

end else begin

dec (p[i, j], p_m);

end;

if l=0 then inc (p[i, j]);

k:=u[(i-1)*Nb+j];

div_mod (k, i, j);

inc (l);

Until (i=ki) and (j=kj);

p[mi, mj]: =-1;

end;

//——————————— решение ————————————————;

procedure TForm1. N2Click (Sender: TObject);

var i, j, l, k: Integer;

kk: real;

stroka: string;

summa: integer;

begin

Nul (alfa); Nul (betta);

Nul (A);Nul (B);Nul (B_d);Nul (x);

Na:= 22; Nb:= 8;

// заполняем массив В с учетом вида расстановки

case rg1. ItemIndex of

0: begin

B[1]: = 2; B[2]: = 1; B[3]: = 1; B[4]: = 2;

B[5]: = 1; B[6]: = 1; B[7]: = 2; B[8]: = 12;

end;

1: begin

B[1]: = 3; B[2]: = 1; B[3]: = 1; B[4]: = 2;

B[5]: = 1; B[6]: = 1; B[7]: = 1; B[8]: = 12;

end;

2: begin

B[1]: = 1; B[2]: = 1; B[3]: = 1; B[4]: = 2;

B[5]: = 1; B[6]: = 1; B[7]: = 3; B[8]: = 12;

end;

3: begin

B[1]: = 2; B[2]: = 1; B[3]: = 1; B[4]: = 3;

B[5]: = 0; B[6]: = 0; B[7]: = 3; B[8]: = 12;

end;

4: begin

B[1]: = 3; B[2]: = 0; B[3]: = 0; B[4]: =3;

B[5]:= 1; B[6]: = 1; B[7]: = 2; B[8]: = 12;

end;

end;

// заполняем массив, А — назначение игрока только на 1 место

for i:= 1 to Na do A[i]: = 1;

// заполняем массив стоимостей — оценки игроков

for i:= 1 to Na do

for j:= 1 to Nb do

begin C[i, j]: = 0;

end;

with Form2. SGrid do begin

for i:= 1 to RowCount — 2 do begin

for j:= 1 to (Nb-1) do C[i, j]: = 10 — StrToInt (Cells[j, i]);

end;

end;

// составление опорного плана

for i:=1 to Nb do B_d[i]: =B[i];

for i:=1 to Na do begin

for j:=1 to Nb do x[j]: =j;

for j:=1 to Nb-1 do begin

x_min:=c[i, x[j]];

r_min:=j;

for r:= j+1 to Nb do

if (x_min>c[i, x[r]]) or

((x_min=c[i, x[r]]) and (B[x[r]]>b[x[r_min]])) then

begin

x_min :=c[i, x[r]];

r_min:=r;

end;

x_p:=x[r_min];

x[r_min]:=x[j];

x[j]:=x_p;

end;

Sp:=0;

for j:=1 to Nb do begin

p[i, x[j]]: =B_d[x[j]];

if p[i, x[j]]>A[i]-Sp then p[i, x[j]]: =A[i]-Sp;

inc (Sp, p[i, x[j]]);

dec (B_d[x[j]], p[i, x[j]]);

end;

end;

for i:=1 to Na do

for j:=1 to Nb do if p[i, j]=0 then p[i, j]: =-1;

// рассчитываем потенциалы для опорного плана

While a_b do;

// постепенное приближение плана к оптимальному

While kkk (ki, kj)<0 do begin

kontur;

Nt:=Nt+1;

if a_b then break;

end;

// выводим результаты

memo1.Clear;

summa:= 0;

Memo1.Lines.Add ('В нападении:');

for i:=1 to Na do begin

if p[i, 1]=1 then

Memo1.Lines.Add ('—'+Form2.SGrid.Cells[0,i]);

end;

Memo1.Lines.Add ('');

Memo1.Lines.Add ('Левый защитник:');

for i:=1 to Na do begin

if p[i, 2]=1 then

Memo1.Lines.Add ('—'+Form2.SGrid.Cells[0,i]);

end;

Memo1.Lines.Add ('');

Memo1.Lines.Add ('Правый защитник:');

for i:=1 to Na do begin

if p[i, 3]=1 then

Memo1.Lines.Add ('—'+Form2.SGrid.Cells[0,i]);

end;

Memo1.Lines.Add ('');

Memo1.Lines.Add ('Центральный защитник:');

for i:=1 to Na do begin

if p[i, 4]=1 then

Memo1.Lines.Add ('—'+Form2.SGrid.Cells[0,i]);

end;

Memo1.Lines.Add ('');

Memo1.Lines.Add ('Левый полузащитник:');

for i:=1 to Na do begin

if p[i, 5]=1 then

Memo1.Lines.Add ('—'+Form2.SGrid.Cells[0,i]);

end;

Memo1.Lines.Add ('');

Memo1.Lines.Add ('Правый полузащитник:');

for i:=1 to Na do begin

if p[i, 6]=1 then

Memo1.Lines.Add ('—'+Form2.SGrid.Cells[0,i]);

end;

Memo1.Lines.Add ('');

Memo1.Lines.Add ('Центральный полузащитник:');

for i:=1 to Na do begin

if p[i, 7]=1 then

Memo1.Lines.Add ('—'+Form2.SGrid.Cells[0,i]);

end;

Memo1.Lines.Add ('');

for i:= 1 to Na do

for j:= 1 to (Nb-1) do begin

if p[i, j]=1 then summa:=summa + p[i, j]*(10-c[i, j]);

end;

memo1.Lines.Add ('Сумма коэффициентов = '+inttostr (summa));

end;

end.

Интерфейс автоматизированного программного средства поиска оптимальной расстановки игроков на поле Рис. 3

Рис. 4

Показать весь текст
Заполнить форму текущей работой