¿Cómo se describen exactamente los modelos evolutivos de teoría de juegos durante la implementación de simulaciones por computadora?

Cuando un biólogo o un profano trata de razonar la explicación evolutiva de algo, simplemente usaría el inglés con algo de matemáticas (para un ejemplo aleatorio, elija cualquier explicación de "El gen egoísta", por ejemplo, el razonamiento por qué " discriminar a favor de los propios huevos" es una estrategia empleada por Guillemots, en el capítulo "Genesmanship", página 103. No lo citaré en su totalidad ya que es una página de texto).

Otro ejemplo de tal muro de inglés es la pregunta de Bio.SE (inspirada en Dawkins): " ¿Por qué 'Grudger' es una estrategia estable evolutiva? "

Cuando un biólogo intenta realmente modelar el desarrollo evolutivo para ver qué rasgos ganarían, tendría que enseñar de alguna manera a la computadora a implementar ese modelo: cuáles son los factores ambientales, cuál es el genotipo involucrado, cómo se expresa exactamente en diferentes fenotipos y extendidos. rasgos fenotípicos y cómo el entorno afectaría a un individuo con ese fenotipo.

Mi pregunta es: ¿existe algún tipo de forma estándar de construir dicho modelo? ¿ Un lenguaje específico de dominio (en terminología informática) que utilizan muchos biólogos diferentes o algunos paquetes/software de modelado estándar? Por ejemplo, algún tipo de formato XML especial, etc...

¿O es siempre una implementación personalizada hecha a mano por investigadores individuales para su modelo actual?


Solo para aclarar:

  • NO estoy preguntando cómo se ven los modelos teóricamente. Estoy preguntando qué idioma/formato (si existe alguno estándar) se usa para codificarlos para ejecutar simulaciones .

  • Si hay discrepancias entre el tipo/propósitos de los modelos, los que más me interesan son los de teoría de juegos.

El ímpetu de esta pregunta es, si tengo curiosidad por ver cómo se comportaría un modelo específico, ¿tendría que codificar todo (modo, lenguaje y simulador) desde cero (probablemente incorrectamente, siendo un laico); o hay algunos paquetes estándar que lo hacen por usted siempre que use un lenguaje adecuado para describir su modelo.
Desafortunadamente, el ejemplo del guillemot es malo: Dawkins estaba equivocado al respecto (y muy obviamente). Se olvida de tener en cuenta el hecho de que si un ave pone el doble de huevos que cualquier otra en la colonia, sus huevos tienen el doble de probabilidades de ser excluidos del cuidado.
@RichardSmith: me parece contradictorio. Si los únicos huevos que se excluyen son los que ningún pájaro reclama; pones 2x huevos, y hay un 5% de ti con esa estrategia específica, luego (asumiendo que tienes una colonia de 100, con 1 nidada de huevos para los normales), tienes 105 huevos en total, por lo que 5 serán excluidos. Cada huevo tiene ~1% de posibilidades de ser excluido, por lo que para que AMBOS huevos sean excluidos, las posibilidades son 1%x1%=0.01%. Casi 100 veces mejor que un pájaro de un solo huevo.
Dawkins no habla de la posibilidad de que se excluyan ambos óvulos, habla de la posibilidad de que se excluya un óvulo. Todavía es cierto que valdría la pena hacer trampa para los primeros pájaros. El punto más amplio acerca de que el rasgo no es un ESS podría ser cierto, pero su explicación específica no lo es. En su ejemplo específico, si hay 105 huevos y se excluyen 5, cada huevo tiene una probabilidad de ~5 % (más precisamente, 4,76 %), no de ~1 %, de ser excluido. En cualquier caso, su pregunta fue interesante, así que estoy escribiendo un modelo de la situación de Guillemot. Informaré cuando termine :)

Respuestas (3)

El campo más estrechamente asociado con los modelos de teoría de juegos en biología es la teoría evolutiva de juegos. Si se requiere modelado, entonces el paradigma típico es el modelado basado en agentes, y un buen libro introductorio es:

Yoav Shoham y Kevin Leyton-Brown [2009], "Sistemas multiagente: fundamentos algorítmicos, de teoría de juegos y lógicos", Cambridge University press.

En cuanto a la construcción real del modelo, y qué describir/cómo, lo guiaré a través de mi procedimiento habitual ya que este es un campo en el que me especializo:

  1. Defina qué tipo de estrategias cree que son relevantes para las interacciones que está modelando. Seleccione cuál espera que sea la recompensa de esas estrategias. Por ejemplo, si está estudiando la evolución de la cooperación, puede seleccionar 'Cooperar' y 'Desertar' como sus estrategias y el dilema del prisionero como su matriz de pagos, pero tal vez elija algo más general . Desafortunadamente, en la mayoría de los EGT no se establece una distinción clara entre genotipo y fenotipo, y generalmente se equiparan. Al final de este paso, tiene una matriz de juego G. A veces, cuando la mutación o la innovación son explícitamente necesarias incluso en el modelo no viscoso, en esta etapa se toman más enfoques analíticos. Recomiendo a Hofbauer y Sigmund (2003) para un tratamiento amplio del paso 1.
  2. Ahora necesita una intuición básica de cuál es el comportamiento 'predeterminado' en esta interacción, así que resuelva la dinámica del replicador de G.
  3. El principal interés en EGT en este momento son las poblaciones estructuradas . Aquí es donde normalmente se usa el modelado computacional. Sin embargo, antes de pasar a la simulación, primero pruebo el mejor enfoque analítico que conozco. Utilizo la transformada de Ohtsuki-Nowak en G para resolver analíticamente la interacción de gráficos aleatorios (Ohtsuki & Nowak, 2006) .
  4. Si todavía estoy interesado en la pregunta, y los pasos 2 y 3 no capturaron toda la sutileza del sistema que quiero estudiar, entonces empiezo a construir un modelo computacional de múltiples agentes. Me aseguro de que mi modelo tenga alguna forma de escalar al caso completamente invisible de la dinámica replicatoria y al caso de estructura simple de ON-transform. Si mi modelo computacional no está de acuerdo con el enfoque analítico en estos regímenes, entonces me preocupo. De lo contrario, sigo con las técnicas estándar de modelado basadas en agentes. Personalmente, codifico en Matlab. Nunca he visto una simulación EGT moderna que requiera el desempeño de C/Fortran. Como se sugiere en otra respuesta, si no tiene experiencia en programación, puede usar NetLogo. Sin embargo, mi experiencia es que los modelos suelen ser lo suficientemente simples como para implementarlos desde cero, y los modelos de NetLogo suelen ocultar algunas sutilezas muy importantes (como qué regla de reproducción usar: ¿muerte-nacimiento, nacimiento-muerte, imitación?) a papeles más débiles.

Tenga en cuenta el tema amplio. Estos modelos generalmente se describen como ecuaciones diferenciales, y este enfoque se prefiere a los modelos basados ​​en agentes. Sin embargo, si un enfoque limpio de ecuaciones diferenciales no captura todas las sutilezas de lo que está estudiando, entonces se adopta un paradigma ABM.

El lenguaje particular que usa un biólogo depende de las compensaciones entre la velocidad y la facilidad de programación. Muchos modelos están escritos en C o Fortran si la velocidad es primordial. Por otro lado, la gente escribirá modelos en lenguajes de nivel superior si la velocidad es menos importante. Estos serían Python, R, MatLab, etc... En mis modelos, que están escritos en su mayoría en Python, escribo todas las clases desde cero y luego todos los componentes de simulación a mano también. Dado que casi todos los modelos son de naturaleza matemática, el lenguaje es intrascendente. Los algoritmos deben comportarse de manera similar en todas las plataformas. Si está buscando ejemplos de formas sencillas de codificar modelos teóricos de juegos, considere NetLogo, tienen algunos buenos ejemplos que utilizan la teoría de juegos.

Este. Diría que la mayoría de la gente usa el lenguaje que mejor conocen, así que para los científicos que no son programadores es python o perl, para los matemáticos es matlab, mathematica o berkeley madonna, y para los programadores es c o algún descendiente.
¿No hay DSL de uso general? ¿Es porque es demasiado difícil de desarrollar, o simplemente nadie lo necesita?
Probablemente ambos. Berkeley Madonna es específicamente para modelar, pero es horrible, por lo que no se usa mucho.
Diría que en lo que respecta a los DSL, Logo es un DSL para modelos basados ​​en individuos, pero la mayoría de los biólogos pueden programar en otro lenguaje que es más flexible. Además, tanto python (en scipy) como R tienen capacidades de resolución de ODE para que no tenga que usar Madonna.

No existe una sola forma de construir un modelo de este tipo. Pueden variar desde una simple declaración matemática como la regla de Hamilton (rB>C) hasta los modelos de difusión química utilizados para describir los patrones en el color de la piel de los animales (como rayas de cebra, manchas de leopardo y similares).

Hay esfuerzos para construir modelos moleculares de células enteras como este modelo de división de Mycobacterium genitalium , que integra casi 30 modelos matemáticos diferentes para describir diferentes aspectos del organismo. También hay esfuerzos para construir un modelo de este tipo de un cerebro completo.

Otro tipo común de modelo para la biología evolutiva es el uso de la teoría de juegos, donde se pueden plantear diferentes estrategias una contra otra como en la competencia del dilema del prisionero que Dawkins describe en Selfish Gene.

Lo sigue y sigue. Básicamente, el modelado biológico está impulsado por los tipos de modelos matemáticos que conocemos. Nuevos modelos revelarán nuevos paradigmas de cómo funciona la biología. Pueden ser altamente matemáticos, pero su importancia relativa y cuándo se aplican y lo que significan son más una analogía que una prueba.

Por ejemplo, en el dilema del prisionero, los primeros concursos mostraron que Ojo por ojo era el modelo más fuerte, generalmente ayudando a otros, pero traicionando cuando hay antecedentes de traición. Las ideas en ese momento se movieron hacia la cooperación general en las poblaciones. Las repeticiones más recientes han demostrado que si hay un equipo de participantes que se hacen regalos extraordinarios entre sí (permiten la traición sin retribución), entonces pueden competir bastante bien contra otros modelos.

Uno nunca puede probar que un modelo egoísta para el dilema del prisionero no aparecerá, aunque los sistemas biológicos parezcan ser altamente cooperativos. Eso es un modelo, no una prueba.

Mi pregunta estaba dirigida principalmente a los teóricos del juego.
Consulte las actualizaciones de la pregunta. No estoy preguntando cómo se prueban los modelos. Estoy preguntando qué idioma (si existe uno estándar) se usa para comunicar los parámetros del modelo a la simulación.
Creo que la respuesta sería no: R podría ser un estándar en los próximos años, pero he visto varios idiomas promocionados en varios cursos, incluido Excel.
Esperemos que R no se convierta en estándar para nada más que estadísticas: es el lenguaje de programación más feo desde J .