top of page

Introduzione CATTEDRE ed ORARIO 

Portando il mouse fuori dal rettangolo questa finestra scompare

Attenzione , muovendo il mouse su delle parole racchiuse da un  rettangolino, si apre una finestra con dei dettagli, provare

Il programma ORARIO nacque grazie ad un incontro, avvenuto nel dicembre del 1988, con un amico che aveva una piccola software house che realizzava programmi per le scuole 

Mi propose di creare un programma che generasse l'orario  scolastico, mi raccontò la problematica e mi mise in contatto con il vicepreside di un grande liceo scientifico di BARI, così durante il mio tempo libero e parti delle mie notti iniziai ad studiare il problema e come risolverlo.

A quei tempi lavoravo per la Unisys, che era, per fatturato, la seconda multinazionale di informatica al mondo, e vendeva principalmente grandi calcolatori (mainframe).

Così, iniziai a studiare il problema.

L'inizio

Il Cise, a Segrate Mi, era un istituto di ricerca dell'Enel dedicato alla ricerca sui reattori nucleari

Le esperienze passate

Anche se sono un ingegnere nucleare (Politecnico di Milano 100/100 e lode marzo 1970), avevo maturato una buona esperienza come ricercatore e ciò  mi aiutò ad approcciare la problematica dell'orario e a come affrontarla .

Avevo  fatto, a Frascati, una tesi in fisica teorica  sui plasmi  (gas ionizzati) durata un anno e mezzo  ed in questo periodo, avendo ottenuto un notevole risultato teorico, per risolvere la formula ricavata imparai a programmare i calcolatori utilizzandone da prima, uno piccolo , presso il centro di astrofisica di Frascati e poi il mainframe Univac 1108 del centro di calcolo dell'università "La Sapienza"  di Roma.
In quel periodo ebbi la fortuna di interagire con  il Dott F. Enghelman, che era il capo dell'istituto, ed è stata la persona più intelligente che abbia mai incontrato.
Da lui ho imparato come affrontare i problemi della ricerca. Le prime volte che gli esponevo un idea, mi sentivo piccolo piccolo, poi ho cercato di seguire il suo modo di ragionare: avendo un'idea, fare le più disparate ipotesi e valutare se sono in contrasto con questa. 
I risultati della mia tesi di laurea furono poi pubblicati sul "Il Nuovo Cimento" allora la rivista più prestigiosa di Fisica in 'Italia.

Durante il servizio militare, nel tempo libero fui "stageur visiteur" presso il centro studi nucleari Euratom di ISPRA, In quel periodo sviluppai un "Modello per la termodinamica di un reattore ad acqua a canali aperti"  pubblicato come EUR 48831 1972.  

Subito dopo il servizio militare, lavorai  due anni al CISE dove scrissi due programmi richiesti dall'Enel  per la costruenda centrale nucleare di Caorso. 

Il primo doveva calcolare, su un calcolatore dell'Enel, in un secondo, la durata della carica di un reattore nucleare. A quei tempi c'era un programma che, per calcolarla, ci impiegava poco più di sette minuti, circa 450 volte più di quanto richiesto dall'Enel.
Mi feci spiegare quali fossero le equazioni differenziali da risolvere e, dopo averle studiate per qualche giorno, immaginai un algoritmo molto veloce per risolverle. 

Inizialmente vi fu molto scettiscismo, poi parlando con il capo del mio capo che era stato mio professore al Politecnico, lo convinsi e mi disse di tenere un seminario per spiegare come avrei risolto il problema, poi anche con il suo appoggio mi fu dato l'incarico di scrivere il programma che utilizzava l'algoritmo. Dopo 7 8 mesi il programma era pronto, provato e durava un po' meno di un secondo.

Il secondo programma calcolava delle librerie  di costanti nucleari sulla vita di una barra di combustibile di un reattore nucleare (ho poi saputo che l'Enel lo vendette all'analogo ente giapponese) ed era uno dei programmi più impegnativi, sia per le dimensioni che per la complessità dei calcoli e per l'impegno delle risorse dei calcolatori che avesse nel settore nucleare l'ENEL.

In quel periodo mi interessai, nel tempo libero, alla ricerca operativa;  durante un viaggio conobbi il direttore dell'istituto di calcolo del CNR di ROMA  ed instaurai una collaborazione. Quest'ultima esperienza fu molto importante per la realizzazione del programma ORARIO. 

La problematica dell'orario è tipica della ricerca operativa, o meglio di una sua branca, la programmazione matematica. Vi è bisogno di ottenere un orario completo rispettoso dei vincoli e successivamente di ottimizzarlo.

Un altro fattore che sarebbe divenuto fondamentale fu la mia preparazione informatica.

A parte le esperienze  acquisite durante la tesi e negli anni passati al CISE, dal gennaio del 1974 iniziai a lavorare alla Sperry Univac (poi Unisys) come sistemista con sede presso l'Italsider di Taranto (era il più grande cliente della Sperry in Italia e vi erano una quarantina di colleghi tra consulenti e tecnici della azienda che vi lavoravano) .
Inizialmente davo supporto  ai programmatori dell'Italsider sul Cobol (è un linguaggio di programmazione commerciale che imparai in fretta) poi, conoscendo l'Assembler, iniziai a studiare i simbolici del sistema operativo (era scritto in questo linguaggio) e dopo qualche anno riuscii a farvi delle correzioni, e, pur con sede a Taranto, facevo parte dello staff centrale di manutenzione del software di base di Milano e cominciai a viaggiare ovunque, in Italia, vi fossero problemi e spesso si lavorava anche di notte fino all'alba e anche di domenica .

Negli anni 80 fui inviato a Londra presso l' International Division di Londra da cui dipendevano tutte le subsydiary al difuori dalle americhe , dove promisi di restare per 7 mesi.
Li, i casi più importanti riguardanti malfunzionamenti del sistema operativo e che le subsidiary non riuscivano a risolvere , arrivano sulla mia scrivania, e, con una pazienza da certosino, li risolsi tutti.
Terminati i 7 mesi promessi, nonostante mi pagassero moltissimo e le insistenze affinché restassi, volli tornare a casa. Come riconoscimento del lavoro svolto a Londra ebbi il trasferimento a Bari, il solito aumento di stipendio ed un avanzamento di grado.  

I sistemi operativi, specialmente quelli dei grandi sistemi, dove lavorano in contemporanea centinaia di utenti, che svolgono tipologie di lavoro diverso e che fanno cose diverse, sono tra i più grandi e complessi programmi al mondo e sono progettati dai migliori sistemisti esistenti. 

Studiare "Exec 8", il sistema operativo dei mainframe della Sperry Univac, fu una esperienza  entusiasmante ed educativa ed ha molto influenzato, poi la struttura informatica dei programmi ORARIO e CATTEDRE sotto diversi aspetti. 

Negli anni successivi, continuai il mio lavoro introducendo nella filiale italiana l'analisi delle utilizzo e delle prestazioni dei calcolatori, diressi un gruppo di lavoro su l'Unix, feci seminari presso le principali Università Italiane (erano nostre clienti) e anche all'interno dell'azienda ai miei colleghi su varie problematiche ed un paio li feci pure alle nostre forze commerciali ! 

Suggerii  all'Education della Sperry Univac (teneva corsi per i nostri clienti) due nuovi corsi, ne preparai la documentazione  e li tenni per la prima volta ecc. 

Durante questo periodo imparai anche a gestire con molto rispetto i nostri clienti, spesso diventando amico dei loro responsabili tecnici, cercando di capire le loro esigenze e consigliandoli.  Anche questo mi ha aiutato a vendere i miei programmi, i miei clienti, o almeno quelli che mi hanno contattato qualche volta, sanno che possono contare sul mio aiuto, anche se la loro assistenza è scaduta e, se hanno veramente bisogno, mi chiamano anche di domenica, sanno che li aiuterò ed io so cosa significa avere un problema di domenica e dover consegnare l'orario il giorno dopo.

La Sperry Univac era , negli anni sessanta-ottanta la seconda multinazionale, per fatturato nell'ambito dell'informatica dopo la IBM, e costruiva i mainframe  

I plasmi sono gas ionizzati e costituiscono il 99% della materia dell'universo. Sono molto studiati nella speranza di riuscire a controllare la fusione nucleare che avviene nelle bombe ad idrogeno in maniera analoga a quanto si fa con la bomba atomica nei reattori nucleari, solo che è molto più complicato. Se ci si riuscisse si potrebbe avere una quantità di energia illimitata...

I maniframe, nella seconda metà del secolo scorso, erano una categoria di calcolatori molto potenti e costosi ,

Il CISE (Segrate Mi) era un istituto di ricerca sui reattori nucleari dell'ENEL  

Flute Modes in a Plasma in the Presence of Nonunifor Electric Fields  Vol. 10B N.1 11 Luglio 1972

Laboratorio gas ionizzati (Associazione Euratom - CNEN

La nascita di ORARIO

Iniziai a scrivere il programma all'inizio del1989 su un Amiga 2000 della Commodore a cui aggiunsi, un anno dopo, una scheda contenente un PC MsDOS. Per sviluppare la prima versione di ORARIO lavorai più di due anni e mezzo impiegando quasi tutto il mio tempo libero e parte delle mie notti, era diventata una sfida.

Il primo problema che affrontai fu quello di far creare al programma un orario completo e, grazie ad alcune grandezze che inventai e migliorando gli algoritmi, riuscii nel tempo a far completare al programma orari via via  più complessi. 

La creazione automatica di un orario completo, avveniva ed avviene tuttora, in due modi: ​

  • L'algoritmo predittivo, ripetuto sino al completamento dell'orario,  sceglie il professore e la classe più critica e dove allocandola   (porla in un' ora di un giorno) crea meno danni alla completezza dell'orario . 
    Negli anni è migliorato a tal punto, che, se la scuola non è molto complessa, da solo riesce a chiudere l'orario.
    Quando iniziai a lavorarci sarebbe stato un sogno !

  • Gli algoritmi correttivi vengono utilizzati nei caso in cui il programma si accorga che non riesce a completare l'orario di un professore in una classe o che in una classe in un giorno e in un'ora  non vi sia nessun professore che possa allocarla.
    Si tratta di 17 (all'inizio solo 6) algoritmi diversi che, a volte, lavorano intrecciati e che  spostano  le ore già allocate per risolvere il problema. In pratica fanno quello che farebbe un buon "orarista" solo che lo fanno molto più velocemente e considerando molte più possibilità.

Comunque sono consapevole che niente è perfetto e di tanto in tanto cerco di migliorare anche la capacità del programma di fare un orario completo.
Queste modifiche richiedono molto tempo anche perché poi non basta che funzionino su una sola scuola e le provo su  un gruppo di dodici scuole con vincoli estremamente pesanti e molto diverse tra loro .
Nelle ultima modifica fatta in questa direzione ho impiegato più di quattro mesi per capire perché, una modifica che sembrava molto promettente,  in alcune di queste  scuole portava  dei miglioramenti ed in altre il contrario, finché non ho capito che la modifica di un parametro consentiva un miglioramento insperato. 
Se non fossi riuscito, avrei gettato più di quattro mesi di lavoro ma questo non mi ha mai spaventato, mi è capitato qualche volta.

Anche quando feci la tesi, scelsi di farne una per la quale il mio relatore mi disse che con ogni probabilità sarebbe stata una tesi "negativa" in cui avrei solo spiegato tutti i tentativi che avrei fatto senza riuscire a trovare alcuna soluzione. E' un po' lo spirito della ricerca.

L'ottimizzazione dell'orario,  rispetto al suo completamento, era, all'inizio, abbastanza meno complessa. Il programma sceglie ripetutamente  tutti i professori, ma, in un ordine diverso per ogni iterazione, ed usando tipi di mosse diversi, ricava quelle compatibili con i vincoli, le valuta e sceglie quella che ritiene più opportuna ,in quel momento, o nessuna.
Nella versione iniziale i tipi di spostamenti erano pochissimi, prevedevano mosse con pochi professori ed avvenivano sempre all'interno di una classe.
Poi, nel tempo, aumento il numero dei professori coinvolti nelle mosse ed i tipi di mosse e la loro complessità. Alcuni tipi di spostamento coinvolgono due classi ed  una volta ho visto il programma fare una mossa che coinvolgeva 11 professori. 

Benché chi provasse la prima volta il mio programma  mi dicesse che l'orario generato era nettamente migliore di quello che avevano pubblicato, anche gli ultimi tempi ho continuato a cercare di migliorare l'ottimizzazione.

Nell'ultime modifiche che ho fatto in questa direzione, dopo sei mesi di lavoro spossante, anche se non sono riuscito  a raggiungere i risultati che speravo, studiando le prove che avevo fatto, ho scoperto un nuovo algoritmo molto controintuitivo che ho applicato solo parzialmente.  

Pertanto prima o poi penso di applicarlo in maniera più decisa nella speranza di ottenere ulteriori miglioramenti.

 

A parte l'incremento del numero di tipi di mosse, altri miglioramenti sono avvenuti grazie allo studio di una mole rilevante di informazioni legate all'ottimizzazione che il programma genera nella versione di sviluppo.
Queste servono per capire cosa accada durante l'ottimazione e per verificare ipotesi
. Sono disposte in quattro categorie in base al livello di dettaglio. 

  • La prima categoria  è un breve riassunto di ogni prova 

  • poi la seconda, è costituita da qualche migliaio di line di dati.

  • La terza contiene dettagli di ogni mossa, è molto più grande  e viene utilizzato per capire cosa accade in piccole zone dell'ottimizzazione.

  • Il quarto livello da informazioni ancora più dettagliate. Purtroppo le informazioni con estremo dettaglio di una intera prova occuperebbero parecchi gigabyte e non vi sono, o meglio non ho trovato editor che riescano a leggere file più grossi di 600-700 megabyte, e tra l'altro non servirebbero tutte per cui quando ne ho bisogno rimando il programma in esecuzione e gli indico di dare queste informazioni solo nella zona temporale che interessa.

E' una quantità di dati enorme, in un caso per una scuola di circa 40 class, il programma ricavava e valutava 78 milioni di mosse rispettose dei vincoli e ne eseguiva 47000 (questi numeri possono variare pesantemente in funzione del numero delle classi e dei vincoli) è capire cosa accade e perché all'interno dell'ottimizzazione è molto laborioso.

 

A giugno del 1991 lasciai la Unisys che, in difficoltà in quel periodo, chiuse tutte le succursali italiane, tranne quelle di Roma e Milano ove mi avevano chiesto di trasferirmi.​

Nel 1991 vendetti la prima copia del programma ORARIO al istituto tecnico Commerciale Romanazzi di Bari.

Da allora continuai ad aggiornare il programma, creando, ogni anno. una nuova versione.

Benché all'inizio, ORARIO lavorasse sotto MSDOS, il programma gestiva le finestre ed il mouse interfacciando direttamente, tramite alcune subroutine scritte in assembler,  il BIOS, un piccolo Windows sotto MSDOS !

Nel 1997, dopo tre anni in cui in ogni anno avevo raddoppiato il numero delle nuove scuole clienti, decisi di abbandonare il mio principale cliente, la Direzione marketing della Fiat Auto di Torino, per cui curavo un programma di statistica e mi dedicai esclusivamente al miglioramento ed alla vendita di ORARIO.

Nel 1998 scrissi l'ultima versione sotto MSDOS ed in quell'anno, nonostante quasi tutti i programmi della concorrenza lavorassero con WINDOWS,  78 nuove scuole lo acquistarono  pur lavorando sempre da solo e senza muovermi da casa.

Nel 1999 capii che non sarebbe potuto essere possibile vendere nel tempo un programma che funzionasse sotto MSDOS, cosi dedicai l'intero anno per portarlo da MSDOS a WINDOWS.

Negli anni più di 800 scuole, per lo più superiori, ma anche medie e poche elementari (non le ho mai contattate, perché hanno normalmente problematiche più semplici e meno fondi) hanno acquistato o affittato il mio programma.

Nel 2012 iniziai a lavorare con mio figlio Silvio, e, da allora, continuai, con il suo aiuto a migliorarlo

Tra le modifiche realizzate negli ultimi anni vi sono:

  • Migliorata, più volte, la capacità di completare l'orario.   

  • Migliorata più volte, l'ottimizzazione dell'orario.

  • Introdotte le palestre, in cui l'utente, oltre ad indicare il numero massimo di classi o coppie di classi (se articolate) presenti in palestra specifica anche la massima differenza di anni di corso delle classi presenti in palestra nelle stessa ora e giorno.

  • possibilità di trasferire i dati dell'orario ai registri elettronici di  7 aziende diverse.

  • Scritto il programma CATTEDRE.

  • ORARIO genera, in HTML, per il sito della scuola, l'orario delle lezioni, quello di inizio e fine delle lezioni e quello dei ricevimenti . In questa occasione, visto che il sito è un biglietto da visita delle scuole ho impiegato molto tempo per renderlo anche esteticamente bello .

  • Migliorata la funzionalità delle schermate, aiuti etc            

  • Recentemente ho migliorata l'estetica delle schermate, cosa che, nel passato, avevo considerato irrilevante. Non sono mai stato un buon venditore !

A quei tempi era il migliore PC esistente, molto meglio del PC IBM che lavorava con MSDOS, gestiva le finestre, e  la multiprogrammazione era di gran lunga superiore delle prime versioni di WINDOWS apparse anni dopo.

Non ebbe il successo meritato perché la COMMODORE era vista, dalle aziende, come un costruttrice di macchine per giocare.

bottom of page