Parecería que el tema se ha pisado durante mucho tiempo, la cima de la innovación de los sistemas OSS hace mucho tiempo. Sin embargo, a veces hay arrebatos locales calientes y disputas violentas sobre este tema. Puede caminar a lo largo de la ruta de los vendedores, o puede intentar roer este problema desde un ángulo diferente.
Palabras clave: cmdb, suma de agentes múltiples, monte-carlo, ml.
Es una continuación de una serie de publicaciones anteriores .
Formulación del problema
No describiremos la producción en detalle, en Internet puede encontrarla para todos los gustos y billeteras. El resumen tiene este aspecto (originalmente inventado por consultores de ITSM):
- hay una CMDB (base de configuración de elementos informáticos). Contiene una descripción de los elementos y las conexiones entre ellos (gráfico);
- hay un sistema de monitoreo que de alguna manera toma lecturas de las encarnaciones físicas de los elementos de CI;
- existe algún tipo de servicio empresarial que se basa en elementos de infraestructura (servidores, aplicaciones, API, pruebas, ...);
- la relación entre un servicio y elementos generalmente se describe mediante un árbol y se denomina modelo de servicio de recursos (PCM);
- Los elementos de infraestructura tienen sus propios parámetros (KPI) mediante los cuales, teniendo en cuenta la conectividad topológica, se debe calcular la salud del servicio empresarial (salud / KQI).
Tomemos una imagen típica de RSM de la documentación de uno de los apologistas de este tema (HP).

¿Cómo se hace habitualmente?
:
- ;
- ;
- ;
- .
. — () . .
:
2021 . . — .
- «multi-agent sumulation»: , ( ) ( );
- «itsm»: ( );
- «monte-carlo»: MAS ;
- «ml»:
data.frame
(rule fit, Modern Rule-Based Models by Max Kuhn), «» ; - «prod»: ml «» event propagation «».
R?
, . . , R . … Shiny. , Shiny, … Shiny.
multi-agent simulation . Shiny, . , . Reactive programming in R by Joe Cheng, DSC 2014
, - nodeA
-> nodeB
-> nodeC
.
library(tidyverse)
library(magrittr)
library(shiny)
library(foreach)
library(iterators)
options(shiny.suppressMissingContextError=TRUE)
makeReactiveBinding("nodeA")
nodeA$in_1 <- NULL
nodeA$in_2 <- NULL
nodeA$out <- reactive(nodeA %$% (in_1 + in_2))
makeReactiveBinding("nodeB")
nodeB$in_1 <- reactive(nodeA$out())
nodeB$in_2 <- NULL
nodeB$out <- reactive(nodeB %$% (in_1() + in_2))
makeReactiveBinding("nodeC")
nodeC$in_1 <- reactive(nodeB$out())
nodeC$in_2 <- NULL
nodeC$out <- reactive(nodeC %$% (in_1() * in_2))
df <- tidyr::expand_grid(val1 = 0:5, val2 = 0:5, val3 = 0:5, val4 = 0:5) %>%
# -
mutate(direct_res = (val1 + val2 + val3) * val4)
res <- foreach(it = iter(df, by = "row"), .combine = "c") %do%
{
nodeA$in_1 <- it$val1
nodeA$in_2 <- it$val2
nodeB$in_2 <- it$val3
nodeC$in_2 <- it$val4
shiny:::flushReact()
nodeC$out()
}
df$mas_res <- res
Luego, tire de un data.frame
conjunto de árboles (o gbm o algo más ...) y haga un pronóstico en dos líneas. En este caso, la fórmula de respuesta para cada agente se puede escribir por cualquier medio disponible. Debido a que los estados de los agentes en esta tarea son limitados, en lugar de fórmulas, puede crear una configuración de Excel (ejemplo a continuación), que es comprensible para cualquier gerente y no requiere disputas. ¿Crees que la línea # 7 debería dar como resultado 'malo'? Escribimos y ni siquiera discutimos. "¡Mi servicio son mis reglas!"

En realidad todo, el problema está resuelto, la película se acabó.
Publicación anterior - "Un poco sobre la computación paralela en R" .