Condividi:        

[Algoritmo] Gestione turni Aziendali

Problemi di HTML? Di PHP, ASP, .NET, JSP, Perl, SQL, JavaScript, Visual Basic..?
Vuoi realizzare programmi in C, C++, Java, Ruby o Smalltalk, e non sai da che parte cominciare?
Entra qui e troverai le risposte!

Moderatori: Anthony47, Triumph Of Steel, archimede

[Algoritmo] Gestione turni Aziendali

Postdi ciro.riccio » 15/11/17 12:02

Ciao a tutti,
per un progetto di tirocinio, devo creare un App Mobile per la gestione di turni Aziendali.
A questo scopo, come prima cosa mi è stato chiesto di trovare un algoritmo per gestire il seguente caso specifico:

In un azienda di manutenzione ci sono 5 dipendenti. Si lavora tutta la settimana (compreso di sabato e domenica).
Nello specifico, per ogni giorno ci sono 2 turni: mattina (8:00 - 14:00) e pomeriggio (14:00 - 20:00).
Ogni giorno lavorano 2 persone (uno la mattina e uno il pomeriggio).
Dal lunedì al venerdì, ogni dipendente deve aver lavorato una volta la mattina e una volta il pomeriggio in modo ciclico.
Per quanto riguarda il sabato e la domenica, i turni sono sempre gli stessi (mattina e pomeriggio) e l'assegnazione dei turni deve essere sempre ciclica, in modo tale che dopo un tot di settimane si raggiunga lo stesso numero di ore lavorate.

Ho messo su un foglio excel (allegato sotto) la situazione descritta, verificando che effettivamente si raggiunge la parità dopo 5 settimane.
Leggendo un pò in giro su internet ho capito che per la risoluzione di problemi del genere bisogna usare l'Algoritmo del simplesso.
Sempre cercando in rete, avevo pensato di prendere spunto anche dall'Algoritmo di Berger.
Oppure ancora, avevo pensato di utilizzare la logica di una coda in cui inserire i dipendenti, in modo da ottenere l'effetto ciclico che mi serve.

Sinceramente penso di essere in alto mare ragazzi. Potete aiutarmi?
Grazie in anticipo.

Allegato: Caso specifico su Excel
ciro.riccio
Newbie
 
Post: 2
Iscritto il: 14/11/17 17:23

Sponsor
 

Postdi ciro.riccio » 18/11/17 20:47

Alla fine ho deciso di utilizzare il meccanismo di una coda.
L'ho implementato anche in javascript, penso e spero che così vada bene:
Codice: Seleziona tutto
class Lavoratore {
   constructor(nome = "Sconosciuto", cognome = "Sconosciuto") {
      this.nome = nome;
      this.cognome = cognome;
      this.oreMaturate = 0;
      ...
   }
}

class Giorno {
   constructor(giorno = "Sconosciuto") {
      this.giorno = giorno;
      this.turnoMattina = new Lavoratore();
      this.turnoPomeriggio = new Lavoratore();
      ...
   }
}
...

let l1 = new Lavoratore("A");
...
let l5 = new Lavoratore("E");
let Dipendenti = [l1, l2, l3, l4, l5];

let lunedì = new Giorno("Lunedì");
...
let domenica = new Giorno("Domenica");
let Settimana = [lunedì, ..., domenica];

for(let i = 0; i < 5; i++) {
   Settimana.forEach(element => {
      let d1 = Dipendenti.shift();
      let d2 = Dipendenti.shift();

      element.turnoMattina = d1;
      element.turnoMattina = d2;

      d1.oreMaturate += 6;
      d2.oreMaturate += 6;

      Dipendenti.push(d1);
      Dipendenti.push(d2);
   });
}
ciro.riccio
Newbie
 
Post: 2
Iscritto il: 14/11/17 17:23


Torna a Programmazione


Topic correlati a "[Algoritmo] Gestione turni Aziendali":


Chi c’è in linea

Visitano il forum: Nessuno e 13 ospiti