Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчет_общий_ИЗ.docx
Скачиваний:
4
Добавлен:
27.08.2019
Размер:
360.32 Кб
Скачать

Нейронные сети Постановка задачи

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

  • Размерами вратаря и мяча можно пренебречь;

  • Мяч летит по прямой линии, соединяющей нападающего и выбранную им точку ворот;

  • Мяч летит с импульсом, достаточным чтобы из любой точки поля мяч мог попасть в ворота;

Разметка поля произведена по следующей схеме:

Рис. 6. Разметка поля.

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

Эвристическое решение задачи

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

Рис. 7. Схема для принятия решений о направлении удара нападающего.

На рисунке 2 вратарь обозначен крестом (G), нападающий – квадратом (F), точки A и B – границы ворот, синим штрихом – границы направления удара, красным штрихом – выбранное направление.

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

101\* MERGEFORMAT (.)

Выбор нейронной сети для решения задачи

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

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

202\* MERGEFORMAT (.)

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

Для обучения будем использовать набор векторов, лежащих в узлах четырехмерной сетки (всего векторов), генерируемый с помощью следующего кода Matlab:

trainingSize = [4; 4; 4; 4];% Number of training vectors

testSize = 5000 ;% Number of training vectors

f_x = [0 16.5]; % Range of forward x coordinate

f_y = [0 40.3]; % Range of forward y coordinate

g_x = [11 16.5]; % Range of goalkeeper x coordinate

g_y = [11 29.3]; % Range of goalkeeper y coordinate

a = [f_x ; f_y; g_x; g_y];

trainData = [];

testData = [];

k=1

for i=1:trainingSize(1)

for j=1:trainingSize(2)

for y=1:trainingSize(3)

for z=1:trainingSize(4)

trainData(1:4,k) = a(:,1) + [i j y z]'.*(a(:,2)-a(:,1))./(trainingSize+1);

trainData(5:6,k) = hitPoint(trainData(1:2,k)',trainData(3:4,k)');

k=k+1;

end

end

end

end

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

testSize = 5000 ;% Number of training vectors

for i=1:testSize

testData(1:4,i) = a(:,1) + rand(4,1).*(a(:,2)-a(:,1));

testData(5:6,i) = hitPoint(testData(1:2,i)',testData(3:4,i)');

% figure

end

out = net(testData(1:4,:));

[y_out,I_out] = max(out);

[y_t,I_t] = max(testData(5:6,:));

diff = I_t - 2*I_out;

f_m = length(find(diff==0));

m_f = length(find(diff==-3));

error = (f_m+ m_f)/testSize