Newsgroup: it.comp.appl.access
Titolo: Come compilare automaticamente un orario di lavoro?

Vorrei affrontare un problema che finora non mi e' mai capitato di 
risolvere, automatizzare la compilazione del classico orario di scuola
 
E quindi partendo da:
- elenco insegnanti
- materie fornite da ogni insegnante (ognuno potrebbe insegnare piu' 
d'una materia) e quantita settimanale (es. insegnante codice 1  insegna 
italiano e storia ed e' presente per 4 ore/settimana)
- elenco classi presenti (1A, 1B, 1C, 2A, ...)
- elenco settimanale delle materie per ogni classe (classe 1a=4h 
italiano, 2K storia, 3H matematica...)
 
Come automatizzare il problema dell'ottenimento orario 
settimanale/mensile usando le informazioni fornite sopra?
Che logica usereste per la compilazione dell'orario?
 




con "automatizzare" cosa intendi?
che date le tabelle sopra il programma compili automaticamente gli 
orari? se si...ci sono delle logiche da tener conto che il programma non 
potrebbe valutare con i soli dati qui sopra
 
 
se invece intendi automatizzare la sequenza di inserimento io farei una 
tabella per memorizzarmi gli orari, tipo:
 
IDslot
Classe
GiornoSettimana
1aOra
2aOra
..
5aOra
 
do per scontato che definiti i 6 giorni, quelli siano sempre uguali per 
tutta la durata del quadrimestre. altrimenti andrebbe gestita la tabella 
giorno per giorno
 
in corrispondenza di ogni 1-5ora mi salverei un id di una seconda 
tabella dettagli con le info della lezione
 
iddettaglio
iddocente
idmateria
 
 
per caricare i dati farei una procedura guidata:
1)seleziono docente
2)farei apparire il calendario di ogni classe con le caselle disponibili
3)una volta selezionata la casella libera farei apparire la lista delle 
materie del docente da scegliere per quella casella
 
aggiungerei magari dei vincoli
tipo immagino che un certo docente non lavori con tutte le classi, tipo 
il prof di inglese non lavora con le prime
 
 
aggiornerei un contatore che mi va a scalare le ore gia inserite per 
ogni docente.
 
 
da qui la stampa per classe e quella da dare ad ogni docente sarebbe una 
banalità
 
 
BFS
 
 
 
 
 
 

Il 29/10/2023 10:38, RobertoA ha scritto:



 Che logica usereste per la compilazione dell'orario?
 
che puntualmente, ogni inizio anno in seconda e in terza, alle scuole 
medie, il prof. di applicazioni tecniche mi chiamava dalle normali 
lezioni a dargli una mano con il tabellone compilato a matita, gomme, 
sudore e imprecazioni :)
 
erano 4 sezioni per tre anni, totale 12 classi, roba abbastanza facile
 
in genere in una mattinata era a posto :)
 
-- 
/-\ /\/\ /\/\ /-\ /\/\ /\/\ /-\ T /-\
-=- -=- -=- -=- -=- -=- -=- -=- - -=-
........... [ al lavoro ] ...........

 con "automatizzare" cosa intendi?
 
farlo tutto in automatico potrebbe non valere la candela (del santo), 
ci sono già software preposti all'uopo; un aiuto in caso di fai-da-te 
potrebbe essere invece quello di segnalare la disponibilità del tal 
docente quando lo si inserisce in un orario di classe
 
tra l'altro mi viene in mente che certe materie hanno bisogno di avere 
almeno due ore consecutive, vuoi per i compiti in classe, vuoi per 
ottimizzare i tempi morti (p.e. educazione fisica: noi la facevamo a 
classi accoppiate oltretutto)
 
e c'era il giorno libero, le ore di ricevimento genitori, le ore di 
presenza obbligatoria per eventuali supplenze (reperibilità, ma in 
loco)
 
insomma, c'era da divertirsi (e imprecare)
 
bei tempi... son passati ben più di quaranta anni :(


 
 
 
si infatti molti per i compiti in classe necessitano di due ore 
consecutive (di solito ita e mate)
inoltre si cerca di ottimizzare i docenti..si evita di far venire uno 
per un'ora alle 8 e un'ora alle 12.30.
insomma è tipo una riunione di condominio mettere d'accordo tutti


Con 'automatizzare' intendo che dopo aver inserito i dati necessari i 
dati necessari, insegnanti, insegnanti/materie, corsi, 
corsi/materie/ore, vincoli aggiuntivi (ita - sto consecutive, giorni 
vincolati per certi insegnanti/corsi, ecc...), schiacciando un tasto il 
sistema dovrebbe propormi un orario settimanale/mensile papabile, 
eventualmente da ritoccare manualmente
 

 bei tempi... son passati ben più di quaranta anni :(
 
 
So bene che esistono gia' procedure che realizzano quanto richiesto
Vorrei realizzare una cosa simile a queste procedure
L'obiettivo e' capire che logica seguono questi sistemi
Ci penso io se vale la candela oppure no
 
 


Si certo, questi sono esempi di 'vincoli' che sara' necessario 
rispettare, e ancor prima di metterci le mani dentro mi sembrano la cosa 
probabilmente piu' complessa da codificare
Immagino sara' necessario inserire anche una 'priorita' sui singoli 
vincoli per capire quali sono obbligatoriamente da rispettare e quali 
invece se pur non rispettati succede niente
 

 
 
Eccolo qua, abbiamo trovato uno sviluppatore che ha gia' codificato 'a 
cervello' l'algoritmo necessario alla compilazione dell'agognato 
settimanale
Basta tradurre il pensiero 'a capoccia' in logica 'a gombiuter' e siamo 
a cavallo
 


ai tempi dell'uni per problemi di questo tipo si usavano gli algoritmi 
genetici.
in soldoni:
ad ogni vincolo si da un peso/importanza/coefficiente
si crea una funzione che accetti in entrata una generazione random 
dell'orario
la funzione restituisce il "valore" del calendario stilato in base al 
peso dei vincoli
vengono generate 100/100/1000 possibili calendari di orari e valutati 
dalla funzione
 
viene scartato il 70% dei risultati/calendari con valore restituito 
dalla funzione bassi
tra i 30% migliori vengono generati ulteriori calendari scambiando pezzi 
di pianificazione (ovviamente sempre rispettando i vincoli) e nuovamente 
valutati dalla funzione e scremati
 
come nella genetica, combinando tra loro sempre i migliori risultati si 
va verso quella che dovrebbe essere la perfezione.
 
e ovviamente il risultato finale non andrà bene a nessun docente :-)
 
BFS
 
 
 
 
 
 
 
 
 
 
 
 


Capisco, una rifinitura progressiva
Ma perche' dici che 'non va bene a nessuno' ?
Se rispetta i vincoli (e dubito si riesca a rispettarli tutti) allora 
l'orario proposto dovrebbe andare bene a tutti
 
Mi pare che il punto principale sia farsi dare il minimo di vincoli 
possibili, e magari trovare il modo di documentarli/certificarli in modo 
da trovarsi preparati alle obiezioni che arriveranno dai docenti appena 
vedranno l'orario appena sfornato
 


era ironico per dire che cmq ci sarà qualcuno scontento :-)
 
 
BFS
 
 

 insomma, c'era da divertirsi (e imprecare)
Più imprecare che divertirsi!
 
Bruno