T U R N I

Ottimizzazione dei Turni del Personale

di Aziende di Trasporto

Estratto dal Manuale d’Uso del Software

 

 


 

CONCETTI GENERALI

 

Nel seguito verranno descritti i file di input/output necessari per definire il problema da risolvere, la cui comprensione approfondita richiede che il lettore conosca le problematiche di base della formazione turni e la relativa terminologia (tempo di nastro, lavoro, ecc.). I principali termini utilizzati sono i seguenti.

Per fermata (o punto di cambio) si intende una località in cui può avvenire il cambio di autista, tipicamente un capolinea per le applicazioni nel trasporto su gomma o una stazione per le applicazioni ferroviarie. È compito dell’utente definire quali sono le località che permettono il cambio di autista, scegliendole in base alla realtà ed alla consuetudine aziendale.

 

Per corsa si intende un segmento lavorativo indivisibile da coprire con un autista, ed è caratterizzato da un istante ed una fermata di partenza e di arrivo. Per definizione il cambio di autista non può dunque avvenire in un punto intermedio di una corsa, ma solo (eventualmente) prima del suo inizio o dopo la sua fine. Nel caso in cui si ritenga utile prevedere la possibilità di cambi "in corsa" sarà necessario spezzare il segmento lavorativo in due o più corse consecutive.

 

 

Per turno (di servizio) si intende una sequenza di corse coperte una dopo l’altra da uno stesso autista. Il turno deve soddisfare numerosi vincoli normativi e aziendali. Come regola generale, un turno deve iniziare e terminare in una stessa fermata detta convenzionalmente deposito (che a volte, ma non sempre, coincide con il "deposito aziendale", inteso come luogo di ricovero degli autobus). Inoltre, ogni corsa deve terminare nella stessa fermata da cui parte la corsa successiva nel turno, ed il tempo che intercorre fra l’arrivo e la partenza deve essere sufficiente a permettere una connessione affidabile (tempo di cuscinetto). In alcuni casi il turno dovrà dunque contenere opportune corse a vuoto (o trasferimenti come passeggero) necessarie per il trasferimento dell’autista fra due fermate.

 

Ogni fase di lavoro inizia e termina con i cosiddetti tempi di PRE e di POST, che rappresentano tempi di lavoro riconosciuti all’autista in modo forfetario per le operazioni che precedono/seguono la guida. Due fasi di lavoro consecutive sono separate da una sosta, la cui durata minima (al netto dei tempi di PRE/POST) è specificata dalla normativa nazionale e/o aziendale (tipicamente, 31 minuti). Si noti che il tempo di attesa fra le prime due corse in figura (e quello fra le ultime due corse) non è sufficiente a produrre una sosta e quindi viene riconosciuto all’autista come tempo di lavoro.

Il tempo di lavoro associato ad un turno viene calcolato sommando la durata delle singole fasi di lavoro, più eventuali tempi forfetari aggiuntivi. Il tempo di nastro associato ad un turno rappresenta invece il tempo di disponibilità dell’autista dall’inizio alla fine del servizio. Sia il tempo di lavoro che di nastro sono soggetti a limiti massimi stabiliti dalla normativa nazionale/locale e dalle consuetudini aziendali.

L’ammissibilità di un turno prevede inoltre la presenza di opportune soste per consumare il pasto, la possibilità di effettuare eventuali cambi di autobus, l’interruzione dell’attività di guida continuativa dopo certi limiti, ecc.

Per soluzione si intende un insieme di turni ammissibili che copra le corse assegnate. In alcuni casi è permesso che una singola corsa venga coperta da due o più turni, nel qual caso gli autisti eccedenti si intendono trasportati come passeggeri. Inoltre, può essere consentito che i turni in soluzione contengano corse a vuoto generate automaticamente in base alle distanze specificate fra le fermate.

L’ammissibilità della soluzione complessiva richiede che vengano rispettati opportuni limiti massimi per le medie dei tempi di lavoro e di nastro, per la percentuale di turni con nastri di lavoro particolarmente lunghi o comunque disagiati, ecc. Inoltre si dovrà tener conto del fatto che ciascun turno afferisce ad un certo gruppo di residenza per gli autisti, per ciascuno dei quali vengono specificati limiti specifici per quanto riguarda il numero di turni del gruppo, la massima media del tempo di lavoro nel gruppo, ecc.

 

 

INSTALLAZIONE E CONFIGURAZIONE

 

Il programma TI (Turni Interface) permette di creare e/o modificare in ambiente Windows 95/98 ed NT tutti i file di input richiesti dal software TURNI. In particolare sono gestiti i file relativi a: Corse, Gruppi, Controlli, Parametri, Forzature, Linee e Fermate, descritti più dettagliatamente nel seguito.

L’interfaccia TI è inoltre in grado di visualizzare e stampare i risultati delle ottimizzazioni sia in modo testo che in forma grafica mediante diagrammi temporali "di Gantt" e mediante diagrammi spazio-temporali "per linea", con vari livelli di dettaglio.

L’unica operazione di configurazione necessaria per il corretto funzionamento del programma TI consiste nell’indicare la posizione del file eseguibile dell’ottimizzatore attraverso il menu "Opzioni® Percorso dell’ottimizzatore…".

 

 

Questo file solitamente si chiama TURNI.EXE e si trova nella stessa directory in cui viene installata l’interfaccia, tipicamente C:\Turni\Bin. Mediante lo stesso menù di Opzioni è inoltre necessario impostare il nome del file delle FERMATE e del file che contiene le DISTANZE A VUOTO (se richiesto).

 

 

 Dopo l’installazione sarà necessario creare la maschera di OTTIMIZZAZIONE relativa alla nuova simulazione che si vuole effettuare, utilizzando il menù "File® Nuovo® Ottimizzazione" (oppure il primo pulsante in alto a sinistra, subito sotto il menù "File").

 

 

 

Al fine di evitare confusioni fra i dati, si consiglia di utilizzare la seguente organizzazione in directory dei dati di input/output:

Organizzazione

Durante il caricamento, l’interfaccia TI visualizza una finestra con informazioni sulla versione del programma e sullo stato del caricamento stesso.

 

Viene quindi presentata una finestra principale che comprende un menu, una barra di pulsanti (parte alta) e una riga di stato per eventuali avvisi e/o errori (parte bassa). È possibile aprire uno o più documenti, anche contemporaneamente, ciascuno in una finestra separata ed indipendente. L’aspetto (vista) con cui viene presentato un documento dipende dal suo tipo. Nel caso di nuovi documenti, il tipo viene specificato dall’utente, altrimenti viene dedotto dall’estensione del file corrispondente. Quando si salva un documento, al nome base per il file digitato dall’utente viene aggiunta automaticamente l’estensione corrispondente.

I tipi supportati sono elencati nella tabella seguente:

 

Tipo

Estensione file

Vista

Ottimizzazione

.OTM

Maschera

Corse

.COR/.CRS/.RIF

Tabella/Maschera

Gruppi

.GRU

Maschera

Controlli

.CON

Maschera

Parametri

.PAR

Maschera

Parametri Aziendali

.PAZ

Applicazione Notepad

Forzature

.FOR

Tabella

Linee

.LIN

Tabella

Fermate

.FER

Tabella

Soluzione

.SOL

Maschera/Grafici

Output log

.LOG

Applicazione Write

 

La vista di un documento può essere di tipo Tabella o Maschera: nel primo caso i dati sono organizzati in una tabella molto simile a quella di Access e/o Excel di Microsoft; nel secondo caso i dati sono organizzati in una tabella i cui campi sono modificabili dall’utente.

Tutti i tipi (eccezion fatta per i tipi Ottimizzazione, Parametri Aziendali e Output log) derivano direttamente dai file di input richiesti dal software TURNI, il cui significato verrà descritto in modo dettagliato nel seguito.

Il tipo Ottimizzazione permette di gestire l’avvio di una nuova ottimizzazione. Un documento di questo tipo specifica la directory di lavoro per l’ottimizzatore, da quali file caricare i dati di input e il nome da usare per i file con risultati. Dalla maschera di Ottimizzazione è inoltre possibile avviare l’ottimizzatore e richiedere l’apertura e visualizzazione sia dei file di commento sia dei risultati generati dall’ottimizzatore (Log e Soluzione).

I tipi Parametri Aziendali e Output Log non sono direttamente supportati da TI ma vengono aperti ed editati attraverso programmi di editing esterni forniti con Windows, come indicato nella precedente tabella.

 

Vista a Maschera

Per le viste di tipo Maschera si è cercato di rispettare lo stile delle finestre di dialogo di Windows e quindi per tutte le maschere si avrà:

 

 

Vista a Tabella

La vista di tipo Tabella ricalca la struttura delle tabelle in Excel ed è costituita da una griglia con:

I tasti cursore permettono di spostarsi da una cella all’altra. Se ci si porta su di una cella e si inizia a scrivere, il contenuto della cella sarà sostituito da ciò che viene digitato; se si vuole modificare il contenuto senza sovrascriverlo, è necessario digitare preventivamente F2.

Durante la modifica di una cella, il tasto Esc riporta il contenuto della cella al valore che aveva prima della modifica del record, il tasto Enter/Invio conferma il nuovo valore e termina l’editazione, i tasti Su e Giù terminano la modifica del record e spostano al record precedente/successivo.

Nella stessa finestra della tabella possono essere presenti alcuni pulsanti che permettono di inserire record in posizioni diverse dall’ultima riga, cancellare il record corrente e altre funzioni aggiuntive (ricerca codici fermate, visualizzazione a maschera, ecc.).

 

 

Menu File

Il menu File comprende i comandi classici per creare, aprire, salvare e stampare i documenti, e memorizza una lista degli ultimi 10 documenti significativi aperti.

 

 

 

 La voce Nuovo presenta una lista con i vari tipi di documenti e permette di creare un nuovo documento, inizialmente vuoto.

 

 

 

Salva memorizza le modifiche apportate ad un documento aggiornando il file da cui era stato inizialmente caricato; Salva con nome… permette invece di specificare il file di destinazione prima di procedere.

La voce Stampa è abilitata solo per i documenti di tipo Soluzione e permette stampe sia di testo (dalla Vista "Testo") che di grafici.

Esci chiude tutti i documenti aperti e termina l’applicazione.

 

 

Menu Opzioni

Comprende 4 voci:

 

 

 

Menu Finestra

Permette di disporre automaticamente tutte le finestre aperte o di attivare e portare in primo piano una finestra in particolare.

 

Menu Informazioni (?)

La voce Manuale richiama il file di documentazione TI.RTF. La voce Informazioni su Turni riporta invece informazioni sul Copyright e sulla versione di TI in uso.

 

 

Barra degli strumenti

La barra degli strumenti comprende tre pulsanti che costituiscono una scorciatoia per i seguenti comandi (da sinistra verso destra): "File® Nuovo® Ottimizzazione", "File® Apri" e "File® Salva".

 

 

I pulsanti sono visualizzati solo quando i rispettivi comandi sono abilitati.

 

 

Documento Ottimizzazione

La maschera di Ottimizzazione rappresenta il punto di partenza di ogni nuova ottimizzazione, e permette di definire i file di input e di output necessari. La maschera è divisa in 3 sezioni.

 

 

La prima sezione riguarda l’Output e specifica il Percorso e il Nome base utilizzati dall’ottimizzatore per i file generati (soluzioni e log). Il Nome base è limitato ad una lunghezza massima di 6 caratteri per compatibilità con DOS e Windows3.11 e per consentire l’aggiunta di un numero progressivo al nome.

Il pulsante Crea si attiva automaticamente se il percorso introdotto non esiste e permette di creare la directory corrispondente, copiandovi eventualmente i file di input specificati. Il pulsante MS-DOS apre una finestra MS-DOS nel direttorio di output specificato. Il pulsante ZIP lancia un’utility di compressione descritta più in dettaglio nel seguito) per l’archiviazione dei dati di input specificati nella maschera. Il pulsante UTIL lancia un file batch UTIL.BAT (eventualmente definito dall’utente) presente nella directory dell’ottimizzatore.

La seconda sezione è relativa all’Input, e permette di associare un file (esistente) a ciascuno degli input richiesti dall’ottimizzatore. Per ogni tipo di file è presente un pulsante per la selezione del file ([…] ) e un pulsante per aprire il file selezionato ([Apri]).

I file delle Fermate e delle Distanze sono considerati di tipo globale e possono essere impostati esclusivamente dal menu Opzioni.

Sia per la sezione di Output che per quella di Input, i dati inseriti vengono visualizzati con sfondo dello stesso colore della maschera quando contengono dati non validi (file non presente, file di tipo errato, ecc.) e, in questo caso, nella riga di stato viene visualizzata una descrizione dell’errore.

L’ultima parte della maschera comprende tre pulsanti di comando: quando tutti i dati necessari sono corretti si attiva il pulsante Avvia Ottimizzazione che lancia l’elaborazione; gli altri due pulsanti, Apri Log e Apri Soluzione, permettono di visualizzare i risultati ottenuti.

Come già accennato, nella maschera di ottimizzazione è presente un pulsante ZIP per creare un archivio compresso contenente tutti i file specificati nella maschera. Agendo sul file di configurazione TURNI.DEF è inoltre possibile includere altri file nell’archivio, ed in particolare i file delle distanze, delle fermate e delle soluzioni. Premendo il pulsante ZIP viene mandato in esecuzione un file batch MS-DOS, ZIPL.BAT, presente nella directory che contiene l’ottimizzatore, passandogli come parametri il nome del file compresso e la lista dei file da archiviare

 

Documento Fermate

 

Selezionando un file con estensione .FER dal menù Apri

 

 

(oppure creando un nuovo file di Fermate) si attiva la maschera di modifica del file delle Fermate.

 

 

 

 

 

Documento Gruppi

 

I documenti relativi ai Gruppi sono visualizzati con una maschera che comprende due sotto-tabelle: la prima contiene una lista di attributi per ogni gruppo; la seconda riporta l’elenco delle fermate afferenti al gruppo.

Ad ogni fermata afferente ad un gruppo viene associato un flag che indica se la fermata è un Deposito (fermata dal quale possono partire/arrivare i turni del gruppo) oppure se essa deve essere solo considerata "in residenza" per il gruppo. Il valore del flag può essere invertito indifferentemente facendo un doppio click sulla fermata, oppure selezionando con il mouse la casella Deposito.

 

 

 

 

 

Documento Corse

 

Un documento di tipo Corse viene normalmente visualizzato in forma di tabella; è comunque possibile richiamare una vista di tipo maschera (dettaglio su un singolo record) premendo il pulsante Scheda.

 

 

 

La vista a maschera comprende anche una sotto-tabella che contiene eventuali campi aggiuntivi specifici per ciascuna Azienda: nella vista a tabella tali campi sono associati ad altrettante colonne.  

 

Per quanto riguarda il campo "Vincoli sui gruppi / Gruppi male assegnati" presente alla fine di ciascuna corsa, la lista dei flag V (Vietato), N (Non male assegnato), ed F (Forzato) deve essere descritta specificando una sequenza di intervalli di gruppi separati da virgole, ciascuno dei quali specifica un insieme di gruppi ed il flag corrispondente (si vede la descrizione del file INPUT.COR per il significato dei flag).

Per esempio, volendo specificare che una corsa risulta "male assegnata" per i gruppi 2, 3, 4 e 7 e non assegnabile ai gruppi 10,11 e 12 sarà sufficiente specificare "2-4, 7, 10-12V" ", interpretato come "la corsa risulta male assegnata per i gruppi 2-4 e per il gruppo 7, e risulta vietata per i gruppi 10-12". Alternativamente, è possibile specificare "2-7, 5-6N, 10-12V" intendendo "la corsa risulta male assegnata per i gruppi 2-7 ma non per i gruppi 5 e 6, e risulta vietata per i gruppi 10-12". I gruppi che non vengono specificati si intendono di tipo N (Non male assegnati). In caso di dati errati, sull’ultima riga della schermata compare un breve messaggio che specifica i valori leciti per i flag (V,F, bianco ed N).

 

In entrambe le viste, posizionandosi su uno dei due campi Codice Fermata Partenza o Codice Fermata Arrivo, si attiva il pulsante Cerca Fermata che richiama una lista di fermate: selezionandone una viene aggiornato automaticamente sia il campo codice da cui si è richiamata la lista, sia la relativa descrizione. 

 

 

 

Documenti Parametri e Controlli

Un documento Parametri (a sinistra nella figura) comprende una sequenza di parametri con la relativa descrizione. Per selezionare un parametro da modificare si possono utilizzare i tasti cursore Su/Giù o Enter/Invio oppure fare click con il mouse direttamente sulla lista.

Si noti che i valori decimali devono essere inseriti utilizzando il punto (e non la virgola) decimale, scrivendo p.e. 10.1 invece di 10,1.

 

 

 

 

Un documento Controlli (a destra nella figura) prevede un insieme di indicatori (flag) da attivare/disattivare, ed alcuni valori numerici che determinano le condizioni di esecuzione del programma.

 

Documento Soluzione

Aprendo un file Soluzione viene inizialmente visualizzata una finestra di Testo che mostra le statistiche globali della soluzione elaborata ed eventuali note/messaggi di errore relativi a singoli turni.

Utilizzando il menu Vista (che appare solo quando è attivo un documento Soluzione) si può passare alla vista grafica oppure alla visualizzazione completa, in forma di testo, delle informazioni sulla soluzione.

 

Grafico di Gantt

Il Grafico di Gantt rappresenta le corse assegnate a ciascun gruppo con barre colorate in base al tipo della corse, alternando (se richiesto) colori diversi per gruppi di turni diversi. Posizionando il puntatore del mouse su di una corsa, questa viene evidenziata e nella barra di stato nella parte bassa dello schermo vengono visualizzate alcune informazioni sulla corsa (orari e fermate di partenza e di arrivo, ecc.). Posizionando il puntatore sull’etichetta di un turno (o tenendo premuto il pulsante sinistro del mouse su di una corsa) vengono invece visualizzate alcune informazioni sul turno (tempo di lavoro, nastro, ecc.). È possibile visualizzare i turni di ciascun gruppo secondo la sequenza ottimale legata alla rotazione settimanale preliminare determinata automaticamente dal programma, oppure per istanti di inizio crescenti. È inoltre possibile ridefinire il colore delle corse in base al tipo, agendo sul file di configurazione TURNI.DEF.

 

 

 

 

È possibile ingrandire o ridurre il grafico mediane i pulsanti [+] e [-] nell’angolo in alto a sinistra, nonché spostare la visualizzazione mediante le barre di scorrimento ed i tasti cursore. Usando il pulsante sulla destra è inoltre possibile "allargare" le barre visualizzate, in modo da evidenziare informazioni relative alle corse quali codice della corsa, turno manuale assegnato, oppure (come in figura) in base alla tipologia Piccolo, Medio, Grande, … di autobus.

 

 

 

 

Grafico a Linee

Per visualizzare il Grafico a Linee è necessario definire preventivamente la sequenza di fermate che costituirà l’asse spaziale (verticale) del grafico. Ad ogni lista di fermate si può associare una Descrizione e tutte le liste create vengono salvate su file (con lo stesso nome del file Fermate attivo ma con estensione LST) in modo da poter essere riutilizzate in seguito.

Nella finestra di definizione delle liste si trovano pulsanti atti ad aggiungere o togliere fermate dalla lista selezionata (pulsanti [+] e [-]) ed a modificarne l’ordine (pulsanti [­ ] e [¯ ]).

Una volta completata la definizione della lista, viene visualizzato il grafico che rappresenta le corse afferenti alle fermate selezionate con linee di colore diverso per turni diversi. Facendo click con il mouse su di una corsa vengono evidenziati sia la corsa stessa che il turno corrispondente, e vengono visualizzate le relative informazioni sulla barra di stato. È inoltre possibile ingrandire, ridurre e spostare l’area visualizzata mediante gli appositi controlli.

 

 

 

I colori con cui vengono rappresentati i vari elementi delle rappresentazioni grafiche (barre/titoli/linee) sono definiti nel file TURNI.DEF presente nella directory contenente il programma TI.EXE, e possono essere modificati da un utente esperto mediante un editor di testi (p.e. Notepad) come descritto all’interno dello stesso file. Si consiglia in ogni caso di effettuare una copia di backup del file originale.

Modalità testo

L’ultima voce del menu vista, File completo, lancia l’applicazione Write (editor di testo) sul file soluzione aperto, che viene quindi visualizzato in modo testo.

 

 

Il file prevede una stampa dei singoli turni, divisi per gruppo di residenza e sequenziati in modo da agevolarne la successiva vestizione. Per ciascun turno vengono evidenziate le caratteristiche principali (tempo di lavoro, nastro, ecc.), nonché l’efficienza percentuale del turno calcolata dividendo il tempo di lavoro per la somma delle durate delle corse di copertura richiesta o suggerita. Eventuali trasferimenti tecnici o vuoti generati dal programma vengono riportati come corse contrassegnate dalla dicitura "VUOTO+" (il segno + indica che la corsa non era presente nel file INPUT.COR ma è stata generata in base al tempo di trasferimento ricavato dal file delle DISTANZE). Una riga separa le varie fasi di lavoro: la riga doppia "==========" segnala una sosta in residenza, mentre una riga semplice "----------------" individua una sosta fuori residenza. Prima di ogni corsa viene riportato il tempo di attesa T-ATT rispetto alla corsa precedente; in caso di sosta, invece, viene riportato il tempo di sosta (al netto dei tempi di pre e di post) intercorso prima dell’inizio della corsa.

 

 

Per ciascuna delle viste descritte è possibile richiedere la stampa dal menu File; la stampa del file in formato dettagliato (testo) deve essere attivata dalla vista "Testo", dato che la vista "File Completo" passa il controllo all’editor WordPad.

 

 

La finestra di stampa permette di impostare la stampante da utilizzare (una qualunque stampante definita in ambiente Windows) e l’orientamento della pagina (portrait o landscape). Per i grafici è possibile inoltre specificare (i) quante ore stampare per ogni pagina; (ii) la richiesta di stampare turni di gruppi diversi su pagine separate; (iii) la richiesta di stampare una pagina aggiuntiva con le statistiche sui turni della soluzione. Per la modalità testo è possibile troncare le righe troppo lunghe (senza spezzarle andando a capo).

 

 

 

Altri Documenti

I restanti documenti (Linee e Forzature) non presentano particolarità di rilievo.

 

 

 

 

 

 

 

 


FUNZIONAMENTO DEL PROGRAMMA TURNI

 

Il programma TURNI può essere eseguito direttamente, come applicazione MS-DOS, oppure mediante l’interfaccia grafica TI descritta nella sezione successiva attivando il pulsante "Avvia Ottimizzazione" della maschera di ottimizzazione.

 

 

 

Per eseguire direttamente TURNI direttamente da ambiente (o finestra) MS-DOS è invece sufficiente eseguire il comando

C:\Turni\Bin> TURNI

nella directory di lavoro (quella che contiene il programma).

 

Strategia di risoluzione

L’elaborazione effettuata dal programma TURNI è articolata in Passate, in ciascuna delle quali si tenta di migliorare la soluzione correntemente disponibile.

Tipicamente le soluzioni ottimali vengono determinate durante le primissime passate, ma in alcuni casi particolarmente difficili anche le passate successive possono individuare soluzioni via via migliori.

Durante ciascuna passata si alternano ciclicamente due distinte fasi di elaborazione: la fase di generazione dei turni (in cui viene generato un insieme di turni "candidati") e la fase di selezione (in cui vengono selezionati i turni che definiscono la soluzione). Se richiesto, durante la fase di generazione dei turni vengono anche generate opportune corse a vuoto. Entrambe le fasi utilizzano internamente algoritmi di ottimizzazione (proprietari) particolarmente efficienti, basati su opportuni modelli matematici che permettono di quantificare in modo molto preciso l’utilità di possibili nuovi turni in base alle caratteristiche della soluzione corrente. Tipicamente, durante la fase di generazione vengono implicitamente valutati milioni di turni possibili, e durante la fase di selezione vengono considerate e valutate decine di migliaia di soluzioni alternative.

Durante una stessa passata, le due fasi di generazione e selezione vengono applicate per un certo numero di iterazioni, aggiornando di volta in volta la miglior soluzione individuata dal programma. Viene quindi attivata una opportuna procedura di fissaggio che sceglie alcuni turni ritenuti particolarmente "efficienti" e decide di fissarli come facenti parte della soluzione definitiva. Il procedimento viene quindi ripetuto sulle corse non coperte dai turni fissati: si alternano nuovamente le fasi di generazione e di selezione, si fissano nuovi turni, ecc.

In questo modo si individuano tipicamente soluzioni sempre migliori, fino ad arrivare ad un punto in cui la soluzione corrente non risulta ulteriormente migliorabile. In questa situazione il programma termina la Passata corrente, e procede con la Passata successiva: il contatore delle Passate viene incrementato di 1, vengono "liberati" i turni fissati, ed il programma viene riapplicato sulle corse scoperte.

La successione di Passate continua finché non viene raggiunto il tempo di esecuzione massimo specificato dall’utente.

L’utente può interrompere in qualsiasi momento l’esecuzione del programma (mediante la combinazione di tasti Ctrl-C, oppure con il controllo [X] in alto a destra della maschera MS-DOS) se ritiene soddisfacente la soluzione corrente. In ogni caso, è sconsigliabile interrompere il programma prima che sia terminata la Passata n. 1, cioè prima che il contatore delle Passate che compare sul video non abbia raggiunto il valore 2.

 

Questo schema di elaborazione ha il vantaggio di individuare rapidamente soluzioni molto buone del problema (tipicamente già dopo i primi fissaggi le soluzioni sono paragonabili a quelle manuali), e di migliorarle man mano che l’elaborazione procede.

 

Soluzioni memorizzate

La migliore soluzione individuata è in ogni caso disponibile nel file di output TURNI.SOL, ove TURNI rappresenta il nome base per le soluzioni specificato dall’utente. Il programma memorizza inoltre le migliori K soluzioni individuate, scrivendole nei file di output TURNI-*.SOL (il numero K di soluzioni da memorizzare è definibile da parte dell’utente).

Viene inoltre riportata nel file TURNI-X.SOL la soluzione, fra quelle costruite dal programma, che utilizza il minimo numero di turni (anche in presenza di vincoli violati). L’analisi di questa soluzione, che viola tipicamente alcuni dei vincoli del problema, può risultare utile per avere un’indicazione di quali siano i vincoli più stringenti del problema allo studio.

Per esempio, se K=3 ed il nome base per le soluzioni è Prova, il programma memorizzerà le 3 migliori soluzioni individuate nei file di output Prova-1.sol, Prova-2.sol e Prova-3.sol. Inoltre, se la miglior soluzione utilizza p.e. 59 turni, il programma memorizzerà nei file Prova-59.sol, Prova-60.sol e Prova-61.sol le migliori soluzioni con 59, 60 e 61 turni, rispettivamente. Eventuali soluzioni (anche se non ammissibili) con meno di 59 turni sarebbero memorizzate nei file Prova-58.sol, Prova-57.sol ecc. Infine, la soluzione con il numero minimo di turni (anche se non ammissibile) verrà memorizzata in Prova-X.sol.

 

 

In alcune versioni personalizzate del programma, le soluzioni vengono memorizzate anche nei file TURNI.OUT, e TURNI-*.OUT secondo il formato personalizzato richiesto dall’Azienda.

Inoltre, il programma memorizza internamente un numero molto elevato di turni (circa 150.000, scelti fra quelli più efficienti) e di corse a vuoto (fino ad alcune migliaia). Questi turni/vuoti possono essere memorizzati ed utilizzati, insieme alla miglior soluzione ottenuta, come base di partenza per una successiva elaborazione.

 

 

Valutazione di una soluzione manuale

 

Il programma TURNI è inoltre in grado di valutare la bontà e l’ammissibilità di una eventuale soluzione "manuale" fornita in input. Il programma valuta automaticamente la soluzione "manuale", evidenziando nel file TURNI-E.SOL eventuali errori (o turni incongruenti in quanto non associabili ai depositi) e stampando nel file TURNI-V.SOL e TURNI-M.SOL i turni letti e le relative competenze. Il file TURNI-V.SOL riporta esattamente i turni manuali forniti, mentre nel file TURNI-M.SOL vengono eliminati eventuali spezzoni di turno inutili e la sequenza dei turni stessi viene ridefinita calcolandone una rotazione settimanale indicativa. Dopo aver valutato la soluzione manuale, il programma memorizza internamente i turni manuali che risultino ammissibili in base ai parametri specificati, ed avvia il modulo di ottimizzazione nel tentativo di individuare nuovi turni che migliorino la soluzione manuale.

È altresì possibile memorizzare in un file con estensione .CRS ogni soluzione individuata dal programma e salvata in un file con estensione .SOL. I file con estensione .CRS hanno il medesimo formato dei file di input delle corse, ma contengono le corse nella sequenza corrispondente ai turni in soluzione. In questo modo è possibile iniziare una nuova elaborazione partendo dalla soluzione memorizzata in un qualunque file .CRS, semplicemente definendola come "soluzione manuale" di partenza.

 

Scheda riassuntiva (finestra MS-DOS)

Durante l’elaborazione compare sul video una finestra MS-DOS con una "scheda riassuntiva" relativa alla miglior soluzione individuata.

 

 

 

È importante verificare che la finestra MS-DOS (quella a sfondo nero rappresentata in figura) da cui viene eseguito il programma TURNI non ne sospenda l’esecuzione quando la finestra stessa non è in primo piano. A tal fine è sufficiente controllare che il secondo pulsante da destra evidenziato sulla parte alta della finestra (quello a sinistra del pulsante A) appaia "premuto" come in figura.

 

 

La schermata MS-DOS riporta, fra l’altro:

Eventuali vincoli violati vengono evidenziati con la dicitura " <---- vincolo violato". In alcuni casi la schermata riporta anche il costo ed il numero di turni della soluzione "non ammissibile" attualmente memorizzata nel file TURNI-X.SOL.

Il file di output TURNI.LOG contiene un breve riassunto dei dati letti, ed in particolare riporta eventuali errori o incongruenze riscontrati durante la lettura dei dati di input, nonché una stampa dei principali pesi/parametri letti. Eventuali errori e commenti vengono evidenziati con la dicitura "ERRORE" o "ATTENZIONE", in modo da poter essere facilmente individuati usando il comando Trova dell’editor utilizzato.

 

 

 


 

FILE DI INPUT

 

Il programma TURNI legge i dati di input dai file di testo descritti nel seguito (si veda il manuale completo per informazioni dettagliate).

 

 

File INPUT.COR

 

Questo file contiene le corse da coprire, ciascuna delle quali è identificata dalle fermate (capolinea) e dai tempi di partenza e di arrivo, nonché da informazioni aggiuntive relative a vincoli particolari.

 

 

File INPUT.LIN

 

Questo file (opzionale) agisce come "filtro" sulle corse e permette di ridefinirne alcune caratteristiche in base al "codice della linea" specificato nel file INPUT.COR.

 

 

File FERMATE.FER

 

Questo file contiene i codici e gli identificativi delle fermate dove è possibile effettuare il cambio di autista.

 

 

 File INPUT.GRU

 

Questo file contiene la descrizione dei gruppi di residenza per gli autisti.

 

  

File DISTANZE.INP

 

Questo file contiene le distanze "a vuoto" fra le fermate ed è indispensabile se si vogliono generare automaticamente le corse a vuoto ed i trasferimenti tecnici necessari per gli allacciamenti.

 

 

File INPUT.FOR

 

Ogni riga di questo file (opzionale) contiene un allacciamento forzato fra due corse (o con i depositi).

 

 

File INPUT.CON

 

Questo file contiene i seguenti valori che controllano il tipo di esecuzione richiesta:

 

Analisi ed uso dei turni in input

Generazione dei vuoti

Autisti come passeggeri

Applicare Passata n. 0

Generazione dei turni

Lettura/memorizzazione turni/vuoti/sol.

Cancellazione t/v/sol. precedenti

Avvisi sonori

Pausa in caso di diagnostici

Memorizzare le soluzioni .CRS

Saltare i vuoti 'P' in input

Verifica errori sol. riferimento

Tempo massimo di esecuzione in minuti

Numero minimo di passate

Numero massimo di passate

Numero di soluzioni da memorizzare

 

 

 

File INPUT.PAR

 

Questo file contiene i parametri che definiscono i vincoli normativi ed aziendali, nonché un insieme di pesi che permettono di quantificate il costo associato a ciascun turno e quindi alla soluzione complessiva.

 

I parametri gestiti sono descritti nel seguito. Si noti che la maggior parte di questi parametri viene di solito definita in fase di installazione e non viene modificata dall'utente (questi parametri possono essere mascherati in modo da non creare confusione all'utente).

 

TEMPI DI LAVORO E DI NASTRO

 

Massima media tempo di lavoro (globale)

Massimo tempo di lavoro (default)

Massimo tempo di lavoro per un turno *non* lungo

Inizio della fascia per il calcolo dello scarto rispetto al tempo di lavoro ottimale

Fine della fascia per il calcolo dello scarto rispetto al tempo di lavoro ottimale

Massimo tempo di nastro (default)

Massimo tempo di nastro per un turno *non* lungo (default)

Massima media del tempo di nastro (globale)

Numero massimo (o numero esatto, se negativo) di turni in soluzione

Istante di inizio della fascia per penalità nastro n. 1

Istante di inizio della fascia per penalità nastro n. 2

Istante di inizio della fascia per penalità nastro n. 3

Istante di inizio della fascia per penalità nastro n. 4

Istante di inizio della fascia per penalità nastro n. 5

Istante di inizio della fascia per penalità nastro n. 6

Istante di inizio della fascia per penalità nastro n. 7

Istante di inizio della fascia per penalità nastro n. 8

Istante di inizio della fascia per penalità nastro n. 9

Istante di inizio della fascia per penalità nastro n. 10

 

 

PERCENTUALI MASSIME

 

Percentuale massima di turni con nastro lungo

Percentuale massima di turni con nastro lungo in ciascun gruppo

Percentuale massima di turni con molte soste

Percentuale massima di turni con buono pasto

Percentuale massima di turni con tempo di lavoro lungo

Percentuale massima di turni disagiati

Percentuale massima di turni senza pulizia autobus

Percentuale massima di cuscinetti mancati

 

 

TEMPI DI ALLACCIAMENTO, CUSCINETTI E SOSTE

 

Tempo minimo per allacciamento corse di tipo "normale" (in minuti)

Tempo minimo per allacciamento corse di tipo "a vuoto" (in minuti)

Tempo minimo per allacciamento corse di tipo "disponibilità / scorta" (in minuti)

Numero massimo di cuscinetti mancati in un turno

Massimo numero di soste

Numero di soste considerato eccessivo

Limite *oltre* il quale si ha sosta non retribuita (in min.)

 

 

TEMPI MINIMI DI LAVORO E TURNI PART TIME

 

Minimo tempo di lavoro in un turno full time

Minimo tempo di lavoro pagato ad un full time

Minimo tempo di lavoro in un turno part time

Numero massimo di turni part time

 

 

SOSTE FUORI RESIDENZA E TURNI DISAGIATI

 

Massima sosta fuori residenza

Massima sosta fuori residenza *non* lunga

Massima sosta fuori residenza con retribuzione ridotta

Percentuale riconosciuta per soste fuori residenza

Percentuale riconosciuta per soste in residenza

Numero minimo di soste in un turno disagiato

Minimo tempo di nastro in un turno disagiato

 

 

 

VINCOLI SULLE VARIE FASI DI LAVORO

 

Istante minimo per l’inizio di un turno

Tempo di lavoro minimo in una fase di lavoro

Tempo lavoro minimo 1a fase

Tempo lavoro minimo 1a fase (se inizia prima delle 6:00)

 

CAMBI DI AUTOBUS E CORSE FUORI GRUPPO

 

Numero massimo di corse fuori gruppo in un turno

Numero massimo di cambi di targa in un turno

Numero massimo di cambi di tipo di bus in un turno

Tempo minimo per cambio autobus, in minuti

Durata massima di un vuoto implicito per cambio autobus, in minuti (negativo = no zona)

 

TEMPI DI PRE / POST E TEMPI ACCESSORI

 

Tempo di pre standard (in min.)

Tempo di post standard (in min.)

Tempo extra di pre ad inizio turno (in min.)

Tempo extra di post a fine turno (in min.)

Tempo di lavoro extra su base forfetaria (in min.)

Tempo di lavoro forfetario extra per sosta n. 1

Tempo di lavoro forfetario extra per sosta n. 2

Tempo di lavoro forfetario extra per sosta n. 3

Tempo di lavoro forfetario extra per sosta n. 4

Tempo di lavoro forfetario extra per sosta n. 5 e successive

Tempo lav. extra per allacciamenti cuscinetto nullo (in min.)

Fattore di amplificazione per la diaria ridotta secondo Art. 21a (= 0 se non si applica)

 

 

INTERVALLO PASTO

 

Inizio della fascia per intervallo pranzo

Fine della fascia per intervallo pranzo

Inizio della fascia per intervallo cena

Fine della fascia per intervallo cena

Durata pasto per il calcolo del buono pasto (in min.)

Durata minima del pasto per vincolo pasto (in min.)

 

 

 

COMPENSAZIONE PER ROTAZIONE TURNI

 

Tempo lavoro minimo giornaliero per compensazione

Tempo lavoro massimo giornaliero per compensazione

Minimo intervallo fra due turni in rotazione

 

 

PULIZIA AUTOBUS

 

Inizio della fascia per la pulizia autobus

Fine della fascia per la pulizia autobus

Durata minima della sosta per pulizia autobus (in min.)

Tempo di lavoro forfetario extra per mancata pulizia autobus (in min.)

 

GUIDA CONTINUATIVA E VARIE

 

Massimo tempo di guida continuativa

Durata 1 attesa sufficiente interruzione guida continuativa (in min.)

Durata 2 attese sufficienti interruzione guida continuativa (in min.)

Durata 3 attese sufficienti interruzione guida continuativa (in min.)

Conteggiare i tempi di PRE/POST come guida (=1 sì, =0 no)

Velocità a vuoto (in km/h)

Considerare come coincidenti tutte le fermate di una stessa zona (=1 sì, =0 no)

Limite percentuale oltre il quale le variazioni devono essere considerate eccessive

Inizio della fascia di lavoro notturno

Fine della fascia di lavoro notturno

 

PESI ( DETERMINANO LA BONTA` DI UNA SOLUZIONE )

 

Costo di un turno full time

Costo di un turno part time

Costo di un minuto di lavoro

Costo di un minuto di trasferimento a vuoto

Costo aggiuntivo per ogni minuto di supero nastro

Costo di un buono pasto

Costo aggiuntivo per la mancata copertura delle corse "consigliate"

Costo aggiuntivo per la mancata copertura delle corse "sconsigliate"

Costo aggiuntivo di un turno senza pulizia autobus

Costo aggiuntivo per ogni autobus aggiuntivo

Costo aggiuntivo per ogni minuto di lavoro lungo

Costo aggiuntivo per ogni minuto di lavoro sotto il minimo pagato

Costo aggiuntivo per ogni passaggio da una fermata afferente ad altre Unità Operative

Costo aggiuntivo per ogni cambio di tipo di autobus

Costo aggiuntivo per i turni con corse abilitate autobus di tipo ‘A’

Costo aggiuntivo per ogni mancato cuscinetto in un turno

Costo aggiuntivo per un turno disagiato

Costo aggiuntivo per scarto tempo lavoro rispetto alla fascia ottimale

Costo aggiuntivo per ogni minuto di sosta fuori residenza

Penalità per ogni trasferimento come passeggero

Fattore di penalità per violazione vincolo riposo minimo in compensazione (intero fra 0-1000)

Fattore di penalità per violazione vincolo massima media lavoro in compensaz. (intero fra 0-1000)

Costo fisso relativo alla fascia-nastro n. 1

Costo fisso relativo alla fascia-nastro n. 2

Costo fisso relativo alla fascia-nastro n. 3

Costo fisso relativo alla fascia-nastro n. 4

Costo fisso relativo alla fascia-nastro n. 5

Costo fisso relativo alla fascia-nastro n. 6

Costo fisso relativo alla fascia-nastro n. 7

Costo fisso relativo alla fascia-nastro n. 8

Costo fisso relativo alla fascia-nastro n. 9

Costo fisso relativo alla fascia-nastro n. 10

Costo fisso relativo ai turni con 0 soste

Costo fisso relativo ai turni con 1 sosta

Costo fisso relativo ai turni con 2 soste

Costo fisso relativo ai turni con 3 soste

Costo fisso relativo ai turni con 4 soste

Costo fisso relativo ai turni con 5 soste

Costo fisso relativo ai turni con 6 soste

Costo fisso relativo ai turni con 7 soste

Costo fisso relativo ai turni con 8 soste

Costo fisso relativo ai turni con 9 o più soste

Costo aggiuntivo per ogni minuto di lavoro notturno

Costo aggiuntivo per ogni cambio di "targa" in un turno

Costo aggiuntivo per ogni corsa fuori gruppo in un turno

Penalità per ogni spezzone sovracoperto

Costo aggiuntivo per ogni turno variante (rispetto alla soluzione di riferimento)

Costo aggiuntivo per ogni punto percentuale di variazione rispetto ad un turno della sol. di riferim.

Costo aggiuntivo per ogni turno con variazione eccessiva

 

COSTI AZIENDALI (DETERMINANO IL COSTO AZIENDALE DI UNA SOLUZIONE)

 

Costo aziendale per un turno full time

Costo aziendale per un turno part time

Costo aziendale per un minuto di lavoro

Costo aziendale aggiuntivo per un minuto di lavoro lungo

Costo aziendale per un minuto di trasferimento a vuoto

 

 

 


 

Per maggiori informazioni, contattateci al seguente indirizzo:

 

Double-Click s.r.l.

Consulenze e Software per l'Ottimizzazione

Via PARUTA 8 - 35126 PADOVA

e-mail: turni.bus@gmail.com

URL: http://www.turni.it