He sido informado de que este es un problema de bandidos con múltiples brazos que estoy describiendo.
Digamos que tengo una función que lanza dados ponderados de 20 caras, y cada conjunto de argumentos lanza un dado con un peso diferente. No conocemos las distribuciones precisas de estos dados, pero tienen uno o dos picos en alguna parte y es probable que otros números posibles estén cerca, pero no siempre adyacentes. Solo algunos de los argumentos son numéricos, pero son principalmente los no numéricos los que son problemáticos.
El problema que quiero resolver es cómo encontrar de manera eficiente el conjunto de argumentos que da el mejor resultado promedio (por lo tanto, encuentre "el mejor dado") y una estimación de su valor de retorno promedio.
Intentaré ilustrar. Nuestra función de ejemplo toma dos argumentos, una cadena de tipo de dado y un tamaño de efecto. Inspiración para mi ejemplo de tipos de dados: https://kingdom-come-deliverance.fandom.com/wiki/Dice#Dice_Effects
Tomemos el dado "lu" como nuestro tipo y tengamos un tamaño de efecto de 1 para él. Eso hace que el número 20 sea un 19% más probable de ser el resultado y los otros 19 números serán un 1% menos probables. Llamemos a este conjunto de argumentos Die-A. Obtenemos una tirada de dado promedio de 12.4. Pongamos otro dado pero del tipo "ul" que tenga un efecto "opuesto" al del dado lu. Con un tamaño de efecto de 1, el resultado de 1 es 19% puntos más probable de ser el resultado y los otros números son 1% menos probables. Este Die-B tiene una tirada de dado promedio de 8.6. En este ejemplo, devolveríamos un identificador para Die-A y una estimación del promedio que da, cercano al 12.4 real.
Por supuesto, en un escenario real hay muchos más "dados" y "tirarlos" se realiza mediante un algoritmo muy complejo que básicamente requiere resolver los resultados promedio de manera estocástica. ¿Cómo resuelvo el mejor troquel mientras presto menos atención a los candidatos menos prometedores para mejorar la eficiencia? Siento que debe haber algún algoritmo u otro para esto, pero ¿qué busco? Mi base de código está en JavaScript, por lo que los ejemplos de código están preferiblemente en eso.