R, Monte Carlo y tareas empresariales

Al resolver problemas pr谩cticos con envidiable regularidad, uno tiene que enfrentar dos enfoques t铆picos que se presentan en las reuniones o est谩n en el aire.


  • Opci贸n 1: resolvamos un problema particular de manera general. Habi茅ndolo resuelto de esta manera, podremos resolver mucho m谩s en el camino.
  • Opci贸n 2: pronostiquemos pron贸sticos, LD y muchas cosas de moda para predecir el comportamiento de un sistema no lineal. Genial despu茅s de todo.

Sin embargo, la aplicaci贸n de tales enfoques no siempre es adecuada para la formulaci贸n inicial del problema.
Es una continuaci贸n de publicaciones anteriores .


驴Por qu茅 tales enfoques pueden ser redundantes? S铆, por muchas razones: el tiempo que lleva encontrar una soluci贸n a un problema, el tiempo que lleva calcular, los requisitos para la cantidad de recursos inform谩ticos, realizar c谩lculos con alta precisi贸n, construir el modelo incorrecto, la alta complejidad de la soluci贸n anal铆tica al problema directo, la alta complejidad de resolver el problema inverso y mucho m谩s.


Pero hay una forma cl谩sica de resolver tales problemas, que es especialmente buena si tienes una computadora poderosa a mano. M茅todo Monte Carlo. Stat. an谩lisis de los resultados de m煤ltiples soluciones a un problema directo, que, por regla general, es bien algoritmizable.
Las respuestas necesarias, como primera aproximaci贸n, se pueden obtener en unas pocas horas, incluida la comprensi贸n del problema, la codificaci贸n y la realizaci贸n de c谩lculos preliminares.


A continuaci贸n hay solo 2 ejemplos.


Ejemplo 1. Combinatoria de listas anidadas


La tarea comercial inicial es expandir la base de capacitaci贸n del bot de chat en base a un peque帽o conjunto de frases de entrada. Una gran selecci贸n de frases de origen simplemente no lo es f铆sicamente. Pero puede expandirse significativamente mediante un an谩lisis preliminar de la estructura de la oraci贸n y la generaci贸n de permutaciones permitidas por las reglas del lenguaje. Por ejemplo, "una tuber铆a fluye en la habitaci贸n 6" y "en una habitaci贸n 6 fluye tuber铆a" son esencialmente id茅nticos.


Entonces, una declaraci贸n formalizada. Hay una lista de niveles m煤ltiples de listas anidadas. Es necesario generar casi todas las permutaciones posibles de la lista original de valores, siempre que las permutaciones de los elementos solo se permitan dentro de cada lista separada .


ll <- list(list('a', 'b', 'c'), 'd', list('e', 'f', list('g', 'h', 'i'))) #   factorial(3) * factorial(3) * factorial(3) * factorial(3) 


Un bosquejo de una posible soluci贸n.
 #        ff <- function(x){ #    ,           res <- if(is.list(x)) { sample(x, length(x), replace = FALSE) %>% purrr::map(ff) } else { x } res } procLine <- function(row){ purrr::map(row, ff) %>% #    rlang::squash_chr() %>% stri_c(collapse = "") } #   ,     wks <- 1 future::plan(multiprocess, workers = wks) tic(glue("Generating permutations @ {wks} thread(s)")) df1 <- purrr::map(1:10^4, ~sample(ll, length(ll), replace = FALSE)) %>% #          # purrr::map_chr(procLine) %>% furrr::future_map_chr(procLine) %>% enframe(name = NULL) %>% distinct() toc() 

Ejemplo 2. Predicci贸n de colas de clientes


El esquema de medici贸n es tal que es posible tomar indicadores externos del proceso (lo consideramos bastante complicado e inestable en el tiempo), como la hora de llegada y salida de los clientes, la estructura de la canasta y mucho m谩s.


Opci贸n n煤mero 1: resolver el problema de frente. Cero conocimiento te贸rico del artista int茅rprete o ejecutante + acumulaci贸n de la masa hist贸rica de todo tipo de indicadores externos (caracter铆sticas) y el uso de m茅todos de LD para el "ajuste". Se est谩n haciendo algunos pron贸sticos, pero qu茅, por qu茅 y c贸mo est谩 m谩s all谩 del alcance, es necesario utilizar "int茅rpretes" vinculados.


Opci贸n No. 2 - Utilizamos el m茅todo cient铆fico de cognici贸n. Abrimos la teor铆a de los sistemas de colas, construimos una estad铆stica. Indicadores de proceso de acuerdo con los par谩metros QS, lanzamos una simulaci贸n discreta parametrizada de servicio al cliente. Obtenemos un "modelo digital" del Sistema que tiene palancas de control y un poder anal铆tico explicativo basado precisamente en la naturaleza de los objetos observados, y no en un conjunto de ciertas "caracter铆sticas".
R tiene un gran paquete de simmer para esto. Toda la informaci贸n y muchos ejemplos pr谩cticos aqu铆 .


Publicaci贸n anterior: "Algunos toques para trabajar con identificadores bigint en R" .

Source: https://habr.com/ru/post/482020/


All Articles