Tampaknya topik tersebut telah lama diinjak, puncak inovasi sistem OSS sudah lama berakhir. Namun, terkadang ada ledakan kemarahan lokal dan perselisihan kekerasan tentang topik ini. Anda bisa berjalan di sepanjang jalan vendor, atau Anda bisa mencoba menggerogoti masalah ini dari sudut yang berbeda.
Kata kunci: cmdb, penjumlahan multi-agen, monte-carlo, ml.
Ini adalah kelanjutan dari serangkaian publikasi sebelumnya .
Rumusan masalah
Kami tidak akan menjelaskan produksinya secara rinci, di Internet Anda dapat menemukannya untuk setiap selera dan dompet. Abstrak terlihat seperti ini (awalnya ditemukan oleh konsultan ITSM):
- ada CMDB (basis konfigurasi elemen TI). Ini berisi deskripsi elemen dan hubungan di antara mereka (grafik);
- ada sistem pemantauan yang entah bagaimana mengambil bacaan dari inkarnasi fisik elemen CI;
- ada beberapa jenis layanan bisnis yang didasarkan pada elemen infrastruktur (server, aplikasi, API, tes, ...);
- hubungan antara layanan dan elemen biasanya dijelaskan oleh pohon dan disebut model layanan sumber daya (PCM);
- Elemen infrastruktur memiliki parameternya sendiri (KPI) dimana, dengan mempertimbangkan konektivitas topologi, kesehatan layanan bisnis (kesehatan / KQI) harus dihitung.
Mari kita ambil gambaran khas RSM dari dokumentasi salah satu pembela topik ini (HP).

Bagaimana biasanya dilakukan
:
- ;
- ;
- ;
- .
. — () . .
:
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
Kemudian tarik data.frame
ansambel pohon (atau gbm atau yang lainnya ...) dan buat prakiraan dalam dua baris. Dalam hal ini, rumus respons untuk setiap agen dapat ditulis dengan cara apa pun yang tersedia. Karena fakta bahwa status agen dalam tugas ini terbatas, alih-alih rumus, Anda dapat membuat excel konfigurasi (contoh di bawah), yang dapat dipahami oleh manajer mana pun dan tidak memerlukan sengketa apa pun. Apakah menurut Anda baris # 7 harus menampilkan 'buruk'? Kami menulis dan bahkan tidak berdebat. "Pelayanan saya adalah aturan saya!"

Sebenarnya semuanya, masalah sudah terpecahkan, film sudah selesai.
Posting sebelumnya - "Sedikit Tentang Komputasi Paralel di R" .