A.A. 2009-2010 Simone Brienza Daniele Giannetti 1 Introduzione Sistema Intelligente avente lo scopo di assistere l’esperto aziendale nel processo di gestione e controllo dei rischi Il processo aziendale di gestione dei rischi è un processo complesso che viene in genere condotto dall’uomo in modo euristico, guidato fortemente dall’esperienza del personale che se ne occupa. Per gestire opportunamente i rischi dei progetti in azienda si usa la conoscenza acquisita grazie ai progetti passati. Il CBR (Case Based Reasoning) risulta allora il metodo di inferenza più adatto ad affrontare il problema, riproducendo fedelmente il modo in cui l’esperto umano ragiona per gestire opportunamente i rischi. 2 Introduzione Il sistema ha due funzioni principali: 1. Dato un nuovo progetto, sfruttando i casi passati presenti in una opportuna base di conoscenza, fornire i rischi che andrebbero gestiti nel progetto assieme alle azioni consigliate, costo potenziale dei rischi, efficacia prevista delle azioni consigliate, costo previsto delle azioni consigliate, ecc… 2. Durante lo svolgimento del progetto in azienda, tenere traccia dell’evoluzione dello stesso per assistere il personale nella gestione dei rischi. Inoltre conservare i dati relativi a tutti i progetti passati (anche se non significativi come casi per le future inferenze) allo scopo di sostituire interamente il precedente sistema di gestione delle informazioni sui progetti. 3 Introduzione Il sistema si divide in 3 moduli che interagiscono tra loro: Modulo di Gestione della Conoscenza (Knowledge Module) Modulo di Inferenza (Inference Module) Modulo di Interfaccia (Interface Module) Ad alto livello la struttura risulta la seguente: 4 Modulo di Gestione della Conoscenza Interagisce con un database che mantiene tutte le informazioni necessarie al funzionamento del sistema, in particolare il database si divide in due componenti: a. Base di Conoscenza (Knowledge Base): Contenente tutte le informazioni relative ai casi passati che vengono usati dal sistema nel processo di inferenza per la gestione dei rischi dei nuovi progetti sottoposti al sistema. b. Progetti che non costituiscono casi: Contenente tutte le informazioni relative a progetti passati che non vengono usati dal sistema nel processo di inferenza, vengono conservati solamente per necessità aziendali e non perché utili in qualche modo al sistema. Le due componenti sono mescolate all’interno del database MySQL relazionale che si è realizzato, vengono distinte tramite appositi flag presenti nel database come normali attributi. 5 Modulo di Gestione della Conoscenza Rappresentazione degli oggetti in memoria Ogni oggetto che viene conservato come un insieme di tuple nella base di dati ha una appropriata rappresentazione in memoria, essa viene utilizzata dal sistema per lavorare sull’oggetto stesso. Vediamo solamente i campi principali per ogni oggetto, evitando di evidenziare elementi utili solo a scopo implementativo. Specifiche di un rischio (tipo Risk) • risk_ID • risk_CL_code • category • description • causes • effects • rel_risk ID del rischio nel sistema ID nella checklist aziendale del rischio Nome di categoria Descrizione Lista di cause Lista di effetti Flag “rischio di impatto relativo al valore del progetto” 6 Modulo di Gestione della Conoscenza Rappresentazione degli oggetti in memoria Specifiche di un’azione di mitigazione (tipo Mit_Action) • mitigation_ID • action_CL_code • description • rel_act ID dell’azione di mitigazione nel sistema ID dell’azione nella checklist aziendale Descrizione Flag “azione di costo relativo al valore del progetto” Specifiche di un’azione di recovery (tipo Rec_Action) • recovery_ID • action_CL_code • description ID dell’azione di recovery nel sistema ID dell’azione nella checklist aziendale Descrizione 7 Modulo di Gestione della Conoscenza Rappresentazione degli oggetti in memoria Azione di mitigazione nell’ambito di un progetto (tipo Proj_Mit_Action) • mitigation_ID • cost • description • revision • state Stato dell’azione di mitigazione Lega l’azione alla sua specifica nel DB Costo dell’azione (percentuale o in euro) Descrizione dell’azione nello specifico progetto Revisione in cui l’azione ha avuto il suo effetto Stato dell’azione di mitigazione Pianificata (planned) In corso (active) Conclusa (closed) Azione di recovery nell’ambito di un progetto (tipo Proj_Rec_Action) • recovery_ID • description Lega l’azione alla sua specifica nel DB Descrizione dell’azione nello specifico progetto 8 Modulo di Gestione della Conoscenza Rappresentazione degli oggetti in memoria Legame rischio - azione di mitigazione nell’ambito di un progetto (tipo Proj_Mit_Bind) • action • imp_eff • prob_eff Proj_Mit_Action legata al rischio nel progetto Efficacia sul costo potenziale impatto del rischio Efficacia sulla probabilità del rischio Legame rischio - azione di recovery nell’ambito di un progetto (tipo Proj_Rec_Bind) • action • risk_cont • original_RI Proj_Rec_Action legata al rischio nel progetto Contingency per il recovery del rischio Valore originale di impact*probability del rischio 9 Modulo di Gestione della Conoscenza Rappresentazione degli oggetti in memoria Rischio nell’ambito di un progetto (tipo Proj_Risk) • risk_ID • company_risk_ID • strategy • state • revision • impact • probability • description • causes • effects • mit_actions • rec_action Lega il rischio alla sua specifica nel DB Identifica la coppia rischio – progetto in azienda Strategia da utilizzare per la gestione del rischio Stato del rischio Revisione in cui il rischio è stato inserito Storia del costo potenziale impatto del rischio Storia della probabilità del rischio Descrizione del rischio nello specifico progetto Cause del rischio nello specifico progetto Effetti del rischio nello specifico progetto Lista di Proj_Mit_Bind Oggetto di tipo Proj_Rec_Bind 10 Modulo di Gestione della Conoscenza Rappresentazione degli oggetti in memoria • risk_ID • company_risk_ID • strategy • state • revision • impact • probability • description • causes • effects • mit_actions • rec_action Considerazioni: Al massimo una azione di recovery per ogni rischio Impact e Probability sono storie grazie alle azioni di mitigazione, per ogni elemento nella storia si tiene traccia della Proj_Mit_Action che ha modificato il valore (se la modifica non è stata fatta manualmente dall’utente) Strategia di gestione del rischio Spostamento (transfer) Mitigazione (mitigation) Accettazione (acceptance) Mitigazione e accettazione 11 Modulo di Gestione della Conoscenza Rappresentazione degli oggetti in memoria • risk_ID • company_risk_ID • strategy • state • revision • impact • probability • description • causes • effects • mit_actions • rec_action Stato del rischio Monitoraggio (monitoring) Mitigazione (mitigation) Monitoraggio e Recovery Mitigazione e Recovery Recovery Chiuso e verificato Chiuso e non verificato Se si ha un’azione di recovery lo stato includerà sempre recovery. Monitoraggio o mitigazione dipende dallo stato delle azioni di mitigazione (se presenti). Lo stato closed_unverified (chiuso e non verificato) viene usato dall’utente per segnalare che la gestione del rischio si è conclusa anche se il rischio non si è verificato (qualunque sia il motivo). 12 Modulo di Gestione della Conoscenza Rappresentazione degli oggetti in memoria Progetto (tipo Project) • project_ID • revision • state • use_for_inference • features • risks • mit_actions • rec_actions Stato del progetto ID del progetto nel sistema Revisione attuale del progetto Stato del progetto Flag “progetto nella base di conoscenza” Insieme di attributi del progetto Lista di Proj_Risk nel progetto Lista di Proj_Mit_Action nel progetto Lista di Proj_Rec_Action nel progetto Attivo o aperto (active) Chiuso (closed) 13 Modulo di Gestione della Conoscenza Rappresentazione degli oggetti in memoria Esempio di progetto completo in memoria: 14 Modulo di Gestione della Conoscenza Rappresentazione degli oggetti in memoria L’insieme di attributi nei progetti (features) è configurabile tramite file di configurazione dall’utente che può allora decidere il numero e il tipo degli attributi oltre che, ovviamente, il loro valore per ogni particolare progetto. Tipi di attributi Numerico [N] valore reale Enumerato [E] valore letterale in uno specifico insieme Stringa [S] valore stringa di caratteri Percentuale [P] valore reale che indica una percentuale (es 5.4 = 5.4%) Custom [C] valore letterale in uno specifico insieme dove vengono assegnate a discrezione dell’utente anche le somiglianze tra i possibili valori Attributi predefiniti sempre presenti • value [N] valore del progetto in euro • service_material [S] oggetto della fornitura • project_name [S] nome del progetto • customer_name [S] nome del cliente • company_ID [S] identificatore aziendale del progetto 15 Modulo di Gestione della Conoscenza Rappresentazione degli oggetti nella base di dati Gli oggetti necessari al funzionamento del sistema vengono mantenuti dal modulo di gestione della conoscenza all’interno di un database relazionale MySQL. Ogni oggetto viene rappresentato all’interno del database come un insieme opportuno di tuple dove ogni attributo corrisponde ad un campo dell’oggetto come rappresentato in memoria e ne contiene il valore. Opportuni vincoli di chiave esterna garantiscono che ogni transazione che altera il contenuto della base di dati in modo non significativo non venga accettata dal Database Management System (DBMS). Il DBMS utilizzato per il database del sistema è MySQL, inoltre come storage engine si utilizza InnoDB (motore completamente transaction oriented che consente di ottenere la robustezza desiderata) 16 Modulo di Gestione della Conoscenza Rappresentazione degli oggetti nella base di dati Vi sono oggetti mantenuti all’interno del database che non sono stati presentati nella parte relativa alla rappresentazione degli oggetti in memoria. In particolare: Valori dei parametri utilizzati dal modulo di inferenza Attributi configurati dall’utente per l’insieme features e relativi gruppi di appartenenza (contiene anche quelli predefiniti) Copie dei progetti in stato attivo (usati dal modulo di inferenza) 17 File di Configurazione e Parsing Il sistema risulta completamente configurabile tramite l’utilizzo di opportuni file di configurazione. La configurazione avviene (trascurando guasti o casi eccezionali) solamente una volta al primo avvio del sistema. In questo processo si utilizzano 3 diversi file di configurazione che devono essere stati scritti dall’utente prima di lanciare il sistema. I File di configurazione sono: 1. init.conf contenente tutti gli attributi configurati dall’utente nell’insieme features, i gruppi di attributi decisi dall’utente e i valori dei parametri per l’inferenza 2. specs.conf contenente le specifiche di rischi, azioni di mitigazione e azioni di recovery disponibili inizialmente al sistema (se ne potranno aggiungere altre tramite interfaccia grafica) 3. projects.conf progetti che vengono forniti al sistema come conoscenza iniziale, vanno a formare l’insieme dei casi su cui applicare il CBR all’inizio dell’utilizzo del sistema. 18 Modulo di Inferenza Ha due funzioni fondamentali: 1. Case Based Reasoning sui nuovi progetti inseriti dall’utente Dato un nuovo progetto di cui sono noti gli attributi, il sistema fornisce i rischi significativi che affliggono il nuovo progetto con i relativi parametri, le azioni di mitigazione consigliate con la relativa efficacia prospettica e costo, e le azioni di recovery raccomandate. 2. Gestione della chiusura di un progetto Prima della chiusura di un progetto attivo, esso costituisce sempre un caso utile al CBR di cui sopra. Quando invece un progetto si chiude, dobbiamo decidere se il progetto risulta sufficientemente significativo da essere memorizzato definitivamente come caso utile al CBR. 19 Modulo di Inferenza Case Based Reasoning Il processo di inferenza si articola in 5 fasi distinte per associare ad un progetto di cui sono noti gli attributi i relativi rischi, azioni di mitigazione e di recovery. Il Case Based Reasoning viene influenzato da alcuni parametri configurabili tramite file di configurazione al primo avvio del sistema, e tramite interfaccia grafica nelle successive esecuzioni. Le fasi del processo di inferenza sono: Fase 1. Fase 2. Fase 3. Fase 4. Fase 5. Estrazione dei progetti simili Ranking dei progetti estratti Identificazione e adattamento dei rischi Identificazione e adattamento delle azioni di mitigazione e recovery Validazione dei risultati del sistema 20 Modulo di Inferenza Case Based Reasoning Per comprendere le varie fasi facciamo riferimento ad un esempio, ipotizzando che nella base di conoscenza siano presenti solamente i due progetti seguenti Progetto 1 Progetto 2 Nuovo progetto Dove enum assume valori naturali da 1 a 5 21 Modulo di Inferenza Case Based Reasoning Fase 1: Estrazione dei progetti simili • L’utente seleziona un’insieme di attributi da utilizzare per effettuare l’estrazione e assegna loro dei pesi. • Gli attributi selezionati vengono divisi nei gruppi configurati dall’utente nei file di configurazione. • Per ogni progetto, si calcola un grado di somiglianza col nuovo progetto per ogni gruppo di cui è stato selezionato almeno un attributo. Grado di somiglianza del progetto i-esimo per il gruppo j-esimo = GSijnn • GSijnn viene calcolato come somma di vari contributi, uno per ogni attributo selezionato nel gruppo j. Questi vengono chiamati livelli di somiglianza (LS) e si pesano nella sommatoria con il peso specificato dall’utente per l’attributo. • Si scelgono dunque per ogni gruppo i progetti più simili, troncando le liste ottenute grazie al parametro MAX_PROJ_PER_GROUP configurato dall’utente. 22 Modulo di Inferenza Case Based Reasoning Fase 1: Estrazione dei progetti simili La formula utilizzata per il calcolo del grado di somiglianza in questo contesto è: Il modo in cui si ricava LSki dipende dal tipo dell’attributo k-esimo: Attributo stringa [S]: 1 se la stringa è la stessa, 0 altrimenti Attributo enumerato [E]: LSki = 1 - LDki Attributo percentuale [P]: LSki = 1 - LDki Attributo custom [C]: si legge dalla matrice di somiglianza M fornita dall’utente 23 Modulo di Inferenza Case Based Reasoning Fase 1: Estrazione dei progetti simili Attributo numerico [N]: LSki = 1 - LDki (0 minimo) La differenza tra il valore dell’attributo nell’i-esimo progetto estratto dalla base di dati e il nuovo progetto è la seguente: Dove R1 e R2 sono configurabili dall’utente al lancio dell’inferenza direttamente da interfaccia grafica. 24 Modulo di Inferenza Case Based Reasoning Fase 1: Estrazione dei progetti simili In pratica allora per un attributo numerico è possibile dare il seguente andamento di LSki, dove l’utente è in grado di alterare la forma del triangolo fissando i valori di V1 e V2 (e di conseguenza quelli di R1 e R2). 25 Modulo di Inferenza Case Based Reasoning Fase 1: Estrazione dei progetti simili Considerando il nostro esempio con due soli progetti, supponendo che i due attributi value ed enum facciano parte dello stesso gruppo (unico) G1 e di utilizzare peso unitario per entrambi gli attributi, abbiamo: Nuovo Progetto value = 2500 e enum = 4 Progetto 1 value = 5000 e enum = 2 GS11nn = 0.5 (enum) + 0.0 (value, R1 = R2 = 1250) = 0.5 Progetto 2 value = 2000 e enum = 5 GS21nn = 0.75 (enum) + 0.6 (value, R1 = R2 = 1250) = 1.35 Il progetto 2 risulta allora più simile considerando gli attributi per l’estrazione, e viene scelto per primo per entrare a far parte della tabella dei progetti estratti. 26 Modulo di Inferenza Case Based Reasoning Fase 1: Estrazione dei progetti simili In generale al termine della fase di estrazione avremo organizzato i progetti estratti in una tabella dei progetti estratti, avente la seguente forma: Nel nostro esempio in particolare la struttura sarà la seguente: 27 Modulo di Inferenza Case Based Reasoning Fase 2: Ranking dei progetti estratti • Il ranking dei progetti estratti avviene (logicamente) solo dopo che si è completata l’estrazione, esso avviene sempre attraverso un confronto su vari attributi. • L’utente può decidere di effettuare un ranking usando anche la somiglianza che è stata ricavata in fase di estrazione (extraction based ranking), oppure può ignorare la somiglianza calcolata nella fase precedente. • Si possono scegliere nuovi attributi (eventualmente già usati in fase di estrazione) e nuovi pesi con cui si vuole fare ranking dei progetti estratti. • Usando i nuovi attributi selezionati e, se si sta facendo extraction based ranking, anche quelli usati in fase di estrazione, si calcola un nuovo grado di somiglianza in fase di ranking. Grado di somiglianza per il ranking del progetto i-esimo nel gruppo j-esimo = GSijnn rank Dal punto di vista implementativo la fase 2 avviene nello stesso momento della fase 1: si calcolano i due gradi di somiglianza in parallelo. 28 Modulo di Inferenza Case Based Reasoning Fase 2: Ranking dei progetti estratti Il grado di somiglianza per il ranking si calcola dunque come segue: Extraction based ranking Altrimenti Dove i livelli di somiglianza si calcolano esattamente come visto in precedenza. Al termine della fase di ranking allora si memorizza nella tabella dei progetti estratti un grado di somiglianza. Questo grado di somiglianza è quello che verrà utilizzato fino al termine dell’inferenza per un progetto nell’ambito di un particolare gruppo, e influenza dunque tutte le decisioni che verranno svolte dal sistema a valle della fase 2. 29 Modulo di Inferenza Case Based Reasoning Fase 2: Ranking dei progetti estratti Il grado di somiglianza che viene memorizzato è esattamente il grado di somiglianza per il ranking, il quale viene però prima normalizzato tra 0 ed 1. Extraction based ranking Altrimenti Questo numero tra 0 ed 1 è quello a cui ci riferiamo da ora in avanti con “grado di somiglianza”, indicato con l’espressione GSij. 30 Modulo di Inferenza Case Based Reasoning Fase 2: Ranking dei progetti estratti Per quanto riguarda l’esempio in esame, si assume di non selezionare alcun nuovo attributo per il ranking. Si utilizza invece l’extraction based ranking solamente con gli attributi specificati per l’estrazione. Progetto 1 GS11nn rank = GS11nn = 0.5 GS11 = GS11nn/2 = 0.25 GS11 = 0.25 Progetto 2 GS21nn rank = GS21nn = 1.35 GS21 = GS21nn/2 = 0.675 GS21 = 0.675 Forma finale della tabella dei progetti estratti 31 Modulo di Inferenza Case Based Reasoning Fase 3: Identificazione e adattamento dei rischi Ci proponiamo ora di identificare i rischi che affliggono il nuovo progetto a partire dai progetti che risultano simili allo stesso, adattandone i parametri. a) Si scorrono tutti i progetti nella tabella dei progetti estratti, gruppo per gruppo. Per ogni rischio incontrato all’interno dei progetti si conserva un contatore che mantiene la cumulata dei valori dei GSij dei progetti incontrati nella tabella contenenti tale rischio. • Un progetto può essere incontrato diverse volte se presente nelle liste di diversi gruppi. • Il contatore che accumula i GSij si dice grado di appartenenza del rischio al nuovo progetto e si indica GAh (rischio h-esimo). Maggiore è il valore finale di GAh e maggiore è la misura in cui il rischio si può presentare nel nuovo progetto. 32 Modulo di Inferenza Case Based Reasoning Fase 3: Identificazione e adattamento dei rischi • Durante lo scorrimento si costruisce una struttura che lega ogni rischio incontrato ai progetti nella tabella dei progetti estratti in cui compare (con il relativo grado di appartenenza). La struttura prende il nome di struttura rischio - progetto. Nell’esempio presentato la struttura avrà la seguente forma Questa struttura è utile per adattare in modo semplice ed efficace i parametri dei rischi recuperati al nuovo progetto 33 Modulo di Inferenza Case Based Reasoning Fase 3: Identificazione e adattamento dei rischi b) Si adattano la probabilità e l’impatto dei rischi recuperati al nuovo progetto. Si prendono in considerazione solamente i valori iniziali negli storici perché si cercano appunto i valori iniziali prima dell’effetto di qualunque azione di mitigazione. Per farlo si scorre per ogni rischio la lista contenuta nella struttura precedente e, considerando il rischio in esame all’interno di ogni elemento, si applicano le seguenti formule: Probabilità e impatto iniziali del rischio h-esimo all’interno del nuovo progetto 34 Modulo di Inferenza Case Based Reasoning Fase 3: Identificazione e adattamento dei rischi c) Si calcola adesso per ogni rischio recuperato l’Indice di Rischio (RI) ad esso associato nel nuovo progetto come segue (rischio h-esimo, impatto in euro): Si scartano tutti i rischi aventi indice di rischio inferiore ad una soglia predeterminata MIN_RI_THRESHOLD configurabile dall’utente. In questo modo si eliminano subito tutti i rischi poco rilevanti anche se magari molto affini al progetto in esame. d) Si scelgono a questo punto i primi MAX_RISKS_PER_PROJ rischi con GAh più elevato, dove comunque si da libertà all’utente di scremare ancora di più l’insieme dei rischi utilizzando una semplice ed intuitiva interfaccia grafica. Si ripulisce inoltre la struttura rischio - progetto da tutti i rischi scartati. 35 Modulo di Inferenza Case Based Reasoning Fase 3: Identificazione e adattamento dei rischi Eseguiamo allora la procedura per il semplice esempio in esame. a) Rischio 1 GA1 = GS11 + GS21 = 0.675 + 0.25 = 0.925 Rischio 2 GA2 = GS21 = 0.675 Struttura rischio-progetto b) Rischio 1 Prob1 ≈ 34.6% (spostata verso il progetto 2) Impa1 ≈ 28.1% (spostato verso il progetto 2) Rischio 2 Prob2 = 50% (pari al caso 2, unico dato) Impa2 = 50% (pari al caso 2, unico dato) 36 Modulo di Inferenza Case Based Reasoning Fase 3: Identificazione e adattamento dei rischi c) RI1 = [value * Impa1/100] * Prob1/100 ≈ 243.06 euro RI2 = [value * Impa2/100] * Prob2/100 = 625.00 euro Ipotizziamo che nessun rischio venga filtrato grazie al valore di MIN_RI_THRESHOLD. d) Ipotizziamo che entrambi I rischi vengano scelti dall’utente come rischi nel nuovo progetto. La struttura che il nuovo progetto assume al termine della terza fase risulta in definitiva: Lo stato e la strategia di gestione dei rischi sono ignote fintanto che non si conoscono le azioni ad essi associate. 37 Modulo di Inferenza Case Based Reasoning Fase 4: Identificazione e adattamento delle azioni di mit. e rec. Azioni di mitigazione a) Per ogni rischio nel nuovo progetto si scorre la relativa lista nella struttura rischio - progetto esaminando le azioni di mitigazione che vengono usate per gestire il rischio. Si scelgono per l’inserimento nel nuovo progetto: • Azioni aventi efficacia media su probabilità ed impatto superiore ad una certa soglia e stato chiuso, tali inoltre che il rischio a cui sono collegate soddisfa opportune condizioni (vedere documentazione). • Azioni che non soddisfano il criterio sopra, ma che hanno un peso (derivante dal numero di volte in cui vengono incontrate, dall’efficacia dell’azione, dallo stato dell’azione, dal grado di somiglianza del progetto e dall’indice del rischio che l’azione mitiga) sufficientemente alto (vedere documentazione). Il peso minimo per il quale l’azione viene effettivamente inserita nel nuovo progetto dipende dall’utente, che opera intuitivamente su questo parametro tramite un’opportuna interfaccia grafica. 38 Modulo di Inferenza Case Based Reasoning Fase 4: Identificazione e adattamento delle azioni di mit. e rec. Durante lo scorrimento si costruisce una struttura azione di mitigazione - rischio che collega ogni azione infine scelta per l’inserimento nel nuovo progetto con i rischi che è in grado di mitigare e per ognuno di essi con tutti gli elementi nella tabella dei progetti estratti in cui effettivamente ciò avviene. Per il caso scelto come esempio tale struttura avrà la seguente forma (con una sola azione di mitigazione) 39 Modulo di Inferenza Case Based Reasoning Fase 4: Identificazione e adattamento delle azioni di mit. e rec. b) Si calcola l’efficacia prospettica in termini di probabilità ed impatto delle azioni che si inseriscono nel nuovo progetto per ognuno dei rischi a cui esse vengono legate (tutti quelli che sono in grado di mitigare). Per fare questa operazione si scorre ogni lista di ogni sottoalbero della struttura azione di mitigazione – rischio. Considerando in ogni elemento il Proj_Mit_Bind che lega il rischio in testa alla lista all’azione radice del sottoalbero, si applicano le seguenti formule per ricavare l’efficacia prospettica sull’impatto e sulla probabilità nel nuovo progetto. Efficacia prospettica sulla probabilità Efficacia prospettica sull’impatto 40 Modulo di Inferenza Case Based Reasoning Fase 4: Identificazione e adattamento delle azioni di mit. e rec. c) Si calcola il costo stimato di ogni azione di mitigazione nel nuovo progetto basandoci al solito sul costo osservato nei casi passati. Questa operazione viene fatta in modo semplice recuperando e facendo la media pesata di tutti i costi che l’azione ha avuto in passato, i quali si recuperano dalla tabella dei progetti estratti. Come peso per la media al solito si utilizza il grado di somiglianza, come evidenziato nella formula a destra. 41 Modulo di Inferenza Case Based Reasoning Fase 4: Identificazione e adattamento delle azioni di mit. e rec. Nell’esempio considerato si hanno i seguenti passi a) Supponiamo che l’efficacia media dell’unica azione venga trovata maggiore della soglia: l’azione viene aggiunta direttamente al nuovo progetto senza calcolare pesi. Struttura azione di mitigazione - rischio b) Legame azione 1 - rischio 1 prob_eff11 ≈ 34.6% (spostata verso il progetto 2) impa_eff11 ≈ 34.6% (spostata verso il progetto 2) Legame azione 1 - rischio 2 prob_eff12 = 20% (pari al caso 2, unico dato) impa_eff12 = 60% (pari al caso 2, unico dato) 42 Modulo di Inferenza Case Based Reasoning Fase 4: Identificazione e adattamento delle azioni di mit. e rec. c) Per comodità riportiamo la tabella dei progetti estratti: cost1 ≈ 691.89€ La situazione del nuovo progetto a questo punto è la seguente 43 Modulo di Inferenza Case Based Reasoning Fase 4: Identificazione e adattamento delle azioni di mit. e rec. Azioni di recovery a) Per ogni rischio nel nuovo progetto si scorre la relativa lista nella struttura rischio - progetto esaminando le azioni di recovery che sono state usate per gestire il rischio. Ad ogni azione di recovery incontrata si associa un peso per ogni rischio che essa in passato è stata in grado di recuperare. Il peso viene calcolato durante lo scorrimento della struttura rischio - progetto e dipende da quante volte l’azione risulta recuperare il rischio, dal grado di somiglianza del progetto dove ciò accade, e da quanto l’azione risulta avere una contingency piccola rispetto al valore di partenza per essa, ricavabile a partire da original_RI come segue: Dove K è un parametro di inferenza configurabile dall’utente. Vedere la documentazione per maggiori dettagli. 44 Modulo di Inferenza Case Based Reasoning Fase 4: Identificazione e adattamento delle azioni di mit. e rec. Durante lo scorrimento si costruisce una struttura azione di recovery - rischio che collega ogni azione con i rischi che è in grado di recuperare e per ognuno di essi con tutti gli elementi nella tabella dei progetti estratti in cui effettivamente ciò avviene. b) Per ogni rischio nel nuovo progetto si sceglie l’azione di recovery avente peso maggiore per il suo recupero, in questo modo può anche accadere che diversi rischi siano legati alla stessa azione di recovery. In questa fase si eliminano anche tutti i legami azione di recovery rischio presenti nella struttura azione di recovery - rischio che non vengono aggiunti al nuovo progetto Struttura azione di recovery rischio finale per l’esempio in esame (una sola azione di recovery in un unico caso): 45 Modulo di Inferenza Case Based Reasoning Fase 4: Identificazione e adattamento delle azioni di mit. e rec. c) Si calcola la contingency che ogni azione di recovery comporta per ciascun rischio a cui essa è legata. Per fare questa operazione si scorre ogni lista di ogni sottoalbero della struttura azione di recovery - rischio residua. Considerando in ogni elemento il Proj_Rec_Bind che lega il rischio in testa alla lista all’azione radice del sottoalbero, si applica la seguente formula per ricavare la risk_contingency: Si lavora dunque in modo differenziale mediando la distanza dal valore di partenza, pesata con i gradi di somiglianza, dove: 46 Modulo di Inferenza Case Based Reasoning Fase 4: Identificazione e adattamento delle azioni di mit. e rec. Nel caso preso come esempio allora si hanno i seguenti passi a-b) l’unica azione di recovery presente nella struttura rischio – progetto è la Rec_Action 1, essa sarà l’unica a venire inserita nel nuovo progetto per recuperare il rischio 1 Struttura azione di recovery – rischio finale c) Ipotizziamo K = 1.0 Legame azione 1 - rischio 1 original_RI11 ≈ 9.72% risk_cont11 ≈ 4.72% 47 Modulo di Inferenza Case Based Reasoning Fase 4: Identificazione e adattamento delle azioni di mit. e rec. Stato dei rischi Per ogni rischio nel nuovo progetto si può adesso fissare lo stato e la strategia, sono infatti note le azioni di mitigazione e recovery ad esso legate. Per l’esempio in esame abbiamo: • rischio 1 strategia = mitigation and acceptance stato = monitoring and recovery • rischio 2 strategia = mitigation stato = monitoring 48 Modulo di Inferenza Case Based Reasoning Fase 4: Identificazione e adattamento delle azioni di mit. e rec. Nuovo progetto al termine dell’inferenza di esempio: 49 Modulo di Inferenza Case Based Reasoning Fase 5: Validazione dei risultati del sistema In questa fase si presentano all’utente i risultati dell’inferenza tramite interfaccia grafica. All’utente sono adesso concesse modifiche arbitrarie ai risultati dell’inferenza, in particolare le modifiche che si possono apportare si dividono in tre diverse categorie: A. Eliminazione di componenti B. Modifica di componenti C. Aggiunta di componenti Una lista completa delle correzioni facenti parte di ogni categoria è disponibile nella documentazione del CBR Risk Management System. Molte modifiche sono possibili anche post-validazione, anche se vengono trattate dal sistema in modo leggermente diverso. 50 Modulo di Inferenza Chiusura di progetti Il modulo di inferenza si occupa anche di gestire opportunamente la chiusura di un progetto in stato attivo. Al termine della fase 4 (prima della validazione) si memorizza nella base di dati il risultato dell’inferenza esattamente come restituito dal processo di inferenza. Questo progetto “copia” non fa parte della base di conoscenza e non verrà usato come caso nelle future inferenze. Il progetto, una volta validato, viene poi inserito normalmente nella base di conoscenza come caso significativo per le future inferenze. Il progetto copia viene utilizzato dal modulo di inferenza in fase di chiusura per valutare quali cambiamenti ha subito il progetto durante la sua attività (sia in fase di validazione che post-validazione). Se il progetto in chiusura risulta troppo simile al progetto copia allora si rimuove dalla base di conoscenza (tenendolo comunque nella base di dati). 51 Modulo di Inferenza Chiusura di progetti In particolare, si esaminano tutte le differenze tra il progetto in chiusura e il progetto copia presente nella base di dati, dando un peso a ciascuna di esse e calcolando allora una cumulata (sia essa mod_count). Al termine del confronto: mod_count ≥ MOD_THRESHOLD Si lascia nella base di conoscenza il progetto, dopo averlo chiuso. mod_count < MOD_THRESHOLD Si rimuove il progetto in chiusura dalla base di conoscenza, lasciandolo comunque nella base di dati (non è più un caso). In ogni caso il progetto copia è rimosso dalla base di dati una volta terminata la chiusura. MOD_THRESHOLD è un parametro di inferenza configurabile dall’utente tramite file di configurazione o interfaccia grafica. Vedere la documentazione per maggiori dettagli su come viene effettivamente calcolata la cumulata che poi viene confrontata con MOD_THRESHOLD 52 Modulo di Inferenza Chiusura di progetti Dato il particolare modo in cui il sistema decide se creare o meno dei nuovi casi alla chiusura dei progetti, è ovvio che se l’utente non modifica mai il risultato del sistema allora non si avrà mai apprendimento del sistema. L’apprendimento del CBR Risk Management System avviene grazie all’esperto umano che, operando sulla risposta del sistema adattandola alla sua esperienza, produce nuova conoscenza che viene memorizzata dal sistema stesso. Il sistema ha la capacità di produrre dei nuovi risultati dati progetti lontani da tutti i casi nella base di casi. E’ inutile memorizzare i suddetti risultati se l’utente non apporta alcuna modifica in quanto comunque essi non rappresentano nuova conoscenza utile all’inferenza: una seconda presentazione dello stesso caso o un caso simile produce comunque una risposta simile per la conoscenza già nota al sistema. 53 Modulo di Interfaccia Interagisce con l’utente allo scopo di consentire un facile utilizzo di tutte le funzionalità del CBR Risk Management System, inoltre dialoga con il modulo di inferenza e col modulo di gestione della conoscenza allo scopo di soddisfare le richieste dell’utente. Le funzionalità di questo modulo sono molteplici e solamente alcune sono state realizzate nell’implementazione proposta. Le funzionalità previste si possono dividere in alcuni blocchi: A. Funzionalità relative a modifiche post-validazione di progetti aperti B. Aggiunta di specifiche di azioni e rischi C. Presentazione di un nuovo progetto al sistema e gestione dell’interazione durante il processo di inferenza CBR D. Recupero e gestione di progetti in corso E. Browsing e cancellazione di progetti chiusi F. Rebuild della base di dati G. Configurazione dei parametri di inferenza (che dunque può avvenire anche tramite interfaccia grafica oltre che grazie ai file di configurazione al primo avvio del sistema) Fare riferimento alla documentazione fornita per una lista completa delle funzionalità del modulo di interfaccia. 54 Implementazione Il modulo di gestione della conoscenza ed il modulo di inferenza sono stati implementati in modo completo. Solo alcune funzionalità del modulo di interfaccia sono state implementate. In particolare, sono disponibili sono alcune schermate. Schermata principale della GUI 55 Implementazione Schermata di inserimento di un nuovo progetto 56 Implementazione Schermata di scelta degli attributi per estrazione e ranking 57 Implementazione Schermata di avanzamento del processo di inferenza 58 Implementazione Schermata di validazione dei risultati dell’inferenza 59