2020 American College Mathematical Contest in Modeling Documentos y procedimientos del proceso de resolución de problemas de la estrategia del equipo D-question

Concurso matemático colegiado estadounidense de modelado 2020

Pregunta D estrategia de equipo

Reproducción del título original:

  A medida que las sociedades se vuelven más interconectadas, el conjunto de desafíos que enfrentan se vuelve más complejo. Contamos con equipos interdisciplinarios con experiencia y perspectivas diversas para resolver muchos de los problemas más desafiantes. En los últimos más de 50 años, nuestra comprensión conceptual del éxito del equipo ha avanzado de manera espectacular, lo que ha permitido que mejores equipos científicos, innovadores o físicos aborden estos problemas complejos. Los investigadores han informado sobre las mejores estrategias para formar equipos, las mejores interacciones entre los miembros del equipo y el estilo de liderazgo ideal. Los equipos sólidos en todos los departamentos y dominios pueden realizar tareas complejas que no podrían lograrse mediante esfuerzos individuales o mediante una serie de contribuciones adicionales de los miembros del equipo.
  Uno de los escenarios más informativos para explorar los procesos de equipo es en los deportes de equipo competitivos. Los deportes de equipo están sujetos a reglas estrictas que pueden incluir, entre otras, la cantidad de jugadores, sus funciones, el contacto permitido entre los jugadores, su posición y movimiento, los puntos ganados y las consecuencias de las infracciones. El éxito del equipo es más que la suma de las habilidades individuales. En cambio, se basa en muchos otros factores relacionados con la forma en que los compañeros de equipo juegan juntos. Estos factores pueden incluir si el equipo posee múltiples habilidades (una persona puede ser rápida mientras que otra es precisa), qué tan bien el equipo está equilibrado entre el desempeño individual y colectivo (un jugador estrella puede ayudar a utilizar las habilidades de todos los compañeros de equipo), y el capacidad del equipo para coordinarse eficazmente durante un período de tiempo (cuando un jugador le roba el balón al oponente, otro jugador se prepara para atacar).
  Basándose en sus habilidades de modelado, Team Huskies, el entrenador del equipo de fútbol de su ciudad natal (como se le conoce en Europa y en otros lugares), le ha pedido a su empresa, Intrepid Champion Modeling (ICM), que lo ayude a comprender la dinámica del equipo. En particular, Coach te permite explorar cómo las complejas interacciones entre los jugadores en el campo afectan su éxito. Nuestro objetivo no es solo estudiar las interacciones que conducen directamente a la anotación, sino explorar la dinámica del equipo a lo largo de los juegos y las temporadas, ayudando a identificar estrategias específicas que pueden mejorar el trabajo en equipo la próxima temporada. El entrenador le pide al ICM que cuantifique y formalice las características estructurales y dinámicas del éxito (y fracaso) del equipo. Los Huskies brindaron detalles sobre la temporada pasada, incluidos sus 38 juegos contra 19 oponentes (dos cada uno). En total, los datos cubren 23 429 pases entre 366 jugadores (30 jugadores de Huskies, 336 jugadores contrarios) y 59 271 eventos de juego.
  En respuesta a la solicitud del entrenador de Huskie, el equipo de ICM debe usar los datos proporcionados para resolver el siguiente problema:
  crear una red para pases entre jugadores, cada jugador es un nodo y cada pase constituye un enlace entre jugadores. Utilice su red de transferencia para identificar patrones de red, como estructuras binarias y ternarias y formaciones de equipos. Considere también otros indicadores estructurales y las propiedades de red de todos los Juegos Olímpicos. Debe explorar múltiples escalas, como, entre otras, interacciones micro (pares) a macro (todos los jugadores), y tiempo, como corto (minuto a minuto) a largo (todo el juego o temporada).
  Identifique métricas de rendimiento (además de puntos o victorias) que reflejen un trabajo en equipo exitoso, como la diversidad en los tipos de juegos, la coordinación entre jugadores o la distribución de contribuciones. También puede considerar otros procesos a nivel de equipo, como la adaptabilidad, la flexibilidad, la cadencia o el flujo. Puede ser importante aclarar si una estrategia es universalmente efectiva o depende de la contraestrategia de un oponente. Utilice sus métricas de rendimiento identificadas y procesos a nivel de equipo para crear un modelo que capture los aspectos estructurales, de configuración y dinámicos del trabajo en equipo
.
  Utilice los conocimientos obtenidos de los modelos de trabajo en equipo para informar a los entrenadores sobre qué estrategias estructurales funcionan bien para los perros esquimales. Dígales a los entrenadores que el análisis de red muestra qué cambios deben hacer la próxima temporada para mejorar el éxito de su equipo
.
  Su análisis de Huskies le permite considerar la dinámica de grupo en el entorno controlado de los deportes de equipo. Comprender el conjunto complejo de factores que hacen que algunos grupos se desempeñen mejor que otros es fundamental para la forma en que las sociedades se desarrollan e innovan. A medida que nuestra sociedad resuelve cada vez más problemas que involucran equipos, ¿puede generalizar sus hallazgos para ilustrar cómo diseñar equipos más efectivos? ¿Qué otros aspectos del trabajo en equipo debo comprender para desarrollar un modelo general de desempeño del equipo?

Descripción general del proceso de solución general (resumen)

  Creamos redes de pase ponderadas no dirigidas para describir el comportamiento del equipo en los partidos de fútbol. En una red de pases, los nodos son jugadores que participan en el juego, y el peso de un borde es igual al número de pases entre estos dos jugadores. Con base en la red construida, identificamos con éxito algunos patrones de red. Además, consideramos algunas métricas cuantitativas para caracterizar la red. Para capturar propiedades a corto plazo, modificamos el modelo base a una red l-pass y estudiamos la evolución de los indicadores estructurales. Para capturar las características a largo plazo de toda la temporada, proponemos un modelo de cadena de Markov, que puede verse como un modelo de red ponderada dirigida.
  Para evaluar el éxito del trabajo en equipo, ideamos una métrica de desempeño. El indicador consta de tres indicadores: indicadores estructurales, indicadores de configuración e indicadores espacio-temporales. Las pruebas estadísticas de χ2 confirmaron que los indicadores eran informativos. Luego calculamos las métricas para cada juego y analizamos por qué los Huskies ganaron o perdieron. Además, realizamos un análisis de sensibilidad para demostrar que las medidas de rendimiento son sólidas.
  Con base en estas métricas, brindamos a Huskies recomendaciones sobre cómo mejorar el trabajo en equipo en el futuro. Para tres entrenadores diferentes, dimos consejos diferentes. También descubrimos que los Huskies se desempeñaron de manera diferente en sus partidos de local y de visitante. Por lo tanto, ofrecemos algunas sugerencias para partidos en casa y fuera de casa.
  Finalmente, discutimos cómo generalizar estos métodos a otras actividades del equipo. Creemos que estos métodos se pueden extender a deportes como el baloncesto y el voleibol, pero no a otros deportes como el curling y la gimnasia. Usando el béisbol como ejemplo, muestre cómo adaptar el modelo a las características de un juego de baloncesto. Exploramos más a fondo la posibilidad de aplicar estos métodos a las actividades sociales en general.

Supuestos del modelo:

  Nuestro modelo se basa en la suposición de que
  todos los datos registrados son precisos, incluidos los tiempos de los eventos, cada actividad en la que participa un jugador, la coordinación entre jugadores, etc. Aunque esta suposición puede ser demasiado restrictiva en la práctica debido al error de medición, podemos relajarnos suponiendo que los registros no están sesgados.
  Se registraron todos los eventos importantes que tuvieron lugar durante el juego, no se perdió nada. Además, todos los eventos registrados realmente sucedieron.
  La influencia de factores externos como el clima, las condiciones del campo de fútbol, ​​etc. es insignificante.
  El juego es justo, lo que significa que los árbitros no emiten juicios personales sobre los equipos participantes.
  La función física, la salud y el estado emocional de los jugadores no cambiaron significativamente durante el juego.
  Los Huskies han mantenido el mismo nivel de cohesión del equipo durante toda la temporada.

Replanteamiento de la pregunta:

  Cree una red para pasar entre jugadores y use la red de pases para identificar patrones de red. Considere otros indicadores estructurales y propiedades de la red. Discuta la dinámica a corto y largo plazo.
  Identificar métricas de rendimiento que reflejen un trabajo en equipo exitoso. Identifique si estas estrategias son generalmente efectivas o dependen de la contraestrategia del oponente. Utilice métricas de rendimiento para crear un modelo que capture los aspectos estructurales, de configuración y dinámicos del trabajo en equipo.
  Con base en el análisis de redes, sugiera qué cambios deben hacer los entrenadores la próxima temporada para mejorar el éxito de su equipo.
  Discuta cómo los hallazgos y los modelos pueden generalizarse a otras actividades del equipo.

Establecimiento del modelo y solución Miniatura general del artículo

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

Para todos los documentos, consulte a continuación "Solo modelado de tarjetas de presentación QQ" Haga clic en la tarjeta de presentación QQ

Parte del código del programa: (código y documentación no gratuitos)

import networkx as nx
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import matplotlib.patches as mpathes
def InitG(data):
 G = nx.DiGraph()
 ET = np.array(data['EventTime'])
 i=0
 while(ET[i] < 900):
 i+=1
 length = i #未来的 front
 
 Weight = np.ones(length, dtype=int)
 Ori = np.array(data['OriginPlayerID'])
 Des = np.array(data['DestinationPlayerID'])
 for j in range(0,length):
 if(G.has_node(Ori[j])&(G.has_node(Des[j]))):
 if(G.has_edge(Ori[j],Des[j])):
 G[Ori[j]][Des[j]]['weight']+=1
 else:
 G.add_edge(Ori[j],Des[j],weight=Weight[j])
 else:
 G.add_edge(Ori[j],Des[j],weight=Weight[j]) #边的起点,终点,权重
# #pos = nx.circular_layout(G)
# #print(G.edges(data=True))
# 
#nx.draw_networkx_edges(G,pos,with_labels=True,edge_color='black',alpha=1,font_size=10,width=
[float(v['weight']*0.5) for (r,c,v) in G.edges(data=True)])
# #nx.draw_networkx_nodes(G,pos,with_labels=True)
# nx.draw(G,pos,alpha = 0.8,with_labels=True,font_size=10,width=[float(v['weight']*1) for 
(r,c,v) in G.edges(data=True)])
# plt.show()
 data = data[(data['MatchPeriod']=='1H')]
return G,length,np.array(data['EventTime'])[len(data['EventTime'])-1]
def Calc1(String1,String2,MatchID):
 data = pd.read_excel('gogofootball.xlsx',sheet_name='Sheet1')
 data = data[(data['TeamID']==String1)&(data['MatchID']==MatchID)]
 G,edgeNum,last1H = InitG(data)
 # 时间数据处理
 data['EventTime'][(data['MatchPeriod']=='2H')]+=last1H
 front = edgeNum # 前指针
 rear =0 # 后指针
 zongchang = len(data['TeamID'])
 #Degree = [] # 图的密度
 #Clustering = [] # 图或网络中节点的聚类系数
 Transitivity = [] # 图或网络的传递性
 T1 = [] # 时间轴
 Triangles = []
 Triads = []
 Anc = []
 
 ET = np.array(data['EventTime'])
 Ori = np.array(data['OriginPlayerID'])
 Des = np.array(data['DestinationPlayerID'])
 while(front<zongchang):
 t = ET[front]
 T1.append(t)
 # 删东西
 while(ET[front] - ET[rear] > 900):
 if(ET[front] - ET[rear] < 900):
 break
 if(G[Ori[rear]][Des[rear]]['weight']>1):
 G[Ori[rear]][Des[rear]]['weight']-=1
 else:
 G.remove_edge(Ori[rear],Des[rear])
 if(G.degree(Ori[rear])==0): G.remove_node(Ori[rear])
 if(G.degree(Des[rear])==0): G.remove_node(Des[rear])
 rear+=1
 # 加东西
 if(G.has_node(Ori[front])&(G.has_node(Des[front]))):
 if(G.has_edge(Ori[front],Des[front])):
 G[Ori[front]][Des[front]]['weight']+=1
 else:
 G.add_edge(Ori[front],Des[front],weight=1)
 else:
 G.add_edge(Ori[front],Des[front],weight=1)
# 计算并附加
 #Degree.append(nx.degree(G))
 #Clustering.append(nx.clustering(G))
 
 
# tri = np.sum(list(nx.triangles(G).values()))/3
# triads = (tri*3)/nx.transitivity(G)
# Transitivity.append(tri + triads)
 
 Anc.append(nx.average_node_connectivity(G))
 # 步长
 front+=1
# return T1,Transitivity
return T1,Anc
def Calc2(String1,String2,MatchID):
 data = pd.read_excel('gogofootball.xlsx',sheet_name='Sheet1')
 data = data[(data['TeamID']==String2)&(data['MatchID']==MatchID)]
 G,edgeNum,last1H = InitG(data)
 # 时间数据处理
 data['EventTime'][(data['MatchPeriod']=='2H')]+=last1H
 front = edgeNum # 前指针
 rear =0 # 后指针
 zongchang = len(data['TeamID'])
# Degree = [] # 图的密度
# Clustering = [] # 图或网络中节点的聚类系数
 Transitivity2 = [] # 图或网络的传递性
 T2 = [] # 时间轴
 Triangles = []
 Triads = []
 Anc = []
 ET = np.array(data['EventTime'])
 Ori = np.array(data['OriginPlayerID'])
 Des = np.array(data['DestinationPlayerID'])
 while(front<zongchang):
 t = ET[front]
 T2.append(t)
 # 删东西
 while(ET[front] - ET[rear] > 900):
 if(ET[front] - ET[rear] < 900):
 break
 if(G[Ori[rear]][Des[rear]]['weight']>1):
 G[Ori[rear]][Des[rear]]['weight']-=1
 else:
 G.remove_edge(Ori[rear],Des[rear])
 if(G.degree(Ori[rear])==0): G.remove_node(Ori[rear])
 if(G.degree(Des[rear])==0): G.remove_node(Des[rear])
 rear+=1
 # 加东西
 if(G.has_node(Ori[front])&(G.has_node(Des[front]))):
 if(G.has_edge(Ori[front],Des[front])):
 G[Ori[front]][Des[front]]['weight']+=1
 else:
 G.add_edge(Ori[front],Des[front],weight=1)
 else:
 G.add_edge(Ori[front],Des[front],weight=1)
 # 计算并附加
 #Degree.append(nx.degree(G))
 #Clustering.append(nx.clustering(G))
 
 
# tri = np.sum(list(nx.triangles(G).values()))/3
# triads = (tri*3)/nx.transitivity(G)
# Transitivity2.append(tri + triads)
 
 
 Anc.append(nx.average_node_connectivity(G))
 # 步长
 front+=1
# return T2,Transitivity2
return T2,Anc
def Calc(String1,String2,MatchID):
# T1,Transitivity = Calc1(String1,String2,MatchID)
# T2,Transitivity2 = Calc2(String1,String2,MatchID)
 T1,Anc1 = Calc1(String1,String2,MatchID)
 T2,Anc2 = Calc2(String1,String2,MatchID)
# return T1,T2,Transitivity,Transitivity2
return T1,T2,Anc1,Anc2
# Main Program
String1 = 'Huskies'
String2 = 'Opponent18'
MatchID = 18
#T1,T2,Transitivity,Transitivity2 = Calc(String1,String2,MatchID)
T1,T2,Anc1,Anc2 = Calc(String1,String2,MatchID)
plt.figure(figsize=(15, 6))
# 线条颜色 black, 线宽 2, 标记大小 13, 标记填充颜色从网上找 16 进制好看的颜色
plt.plot(T1, Anc1, '-o', color='black', markersize=13, markerfacecolor='#44cef6', linewidth=2, 
label=String1)
# plt.plot(T2, Anc2, '-o', color='black', markersize=13, markerfacecolor='#e29c45', linewidth=2, 
label=String2)
plt.plot(T2, Anc2, '-o', color='black', markersize=13, markerfacecolor='#9cef43', linewidth=2, 
label=String2)
font = {
    
    'family': 'Times New Roman', 'weight': 'normal', 'size': 15}
plt.legend(prop=font)
# 字体设置: 字体名称 Times New Roman, 字体大小 34
font_format = {
    
    'family':'Times New Roman', 'size':25}
plt.xlabel('Time (s)', font_format)
#plt.ylabel('Transitivity', font_format)
plt.ylabel('Average Node Connectivity', font_format)
# 设置坐标轴 x 范围 0~3*pi, y 范围-1.2~1.2
#plt.axis([0, 3*np.pi, -1.2, 1.2])
# 横纵坐标上的字体大小与类型(不是 xlabel, 是 xticks)
plt.xticks(fontproperties='Times New Roman', size=25)
plt.yticks(fontproperties='Times New Roman', size=25)
# 整个图像与展示框的相对位置
plt.subplots_adjust(left=0.19,right=0.94, bottom=0.13)
# 调整上下左右四个边框的线宽为 2
ax=plt.gca()
ax.spines['bottom'].set_linewidth(2)
ax.spines['left'].set_linewidth(2)
ax.spines['right'].set_linewidth(2)
ax.spines['top'].set_linewidth(2)
# rect1 = mpathes.Rectangle((1550,0),700,400,color='wheat')
# ax.add_patch(rect1)
# # plt.text(1800,350,'Opponent4’s highlight 
performance',fontsize=15,verticalalignment="center",horizontalalignment="center")
# rect2 = mpathes.Rectangle((4000,0),1300,400,color='wheat')
# ax.add_patch(rect2)
# rect1 = mpathes.Rectangle((1750,0),300,3.1,color='lightgreen')
# ax.add_patch(rect1)
# rect2 = mpathes.Rectangle((2900,0),500,3.1,color='lightblue')
# ax.add_patch(rect2)
# rect3 = mpathes.Rectangle((3400,0),400,3.1,color='lightgreen')
# ax.add_patch(rect3)
# rect4 = mpathes.Rectangle((3800,0),200,3.1,color='lightblue')
# ax.add_patch(rect4)
# rect5 = mpathes.Rectangle((5200,0),550,3.1,color='lightblue')
# ax.add_patch(rect5)
plt.show()
Para todos los documentos, consulte a continuación "Solo modelado de tarjetas de presentación QQ" Haga clic en la tarjeta de presentación QQ

Supongo que te gusta

Origin blog.csdn.net/weixin_43292788/article/details/131823495
Recomendado
Clasificación