Alternativa al matrimonio stabile / soluzione per residenti ospedalieri?

-3

Gestisco programmi co-curriculari per la scuola in cui lavoro. Fino ad ora, si sono iscritti su un modulo google con una capacità di primo livello, ma ci sono molte lamentele su come alcuni studenti ottengano tutte le loro preferenze, mentre alcuni non ne ricevono.

Dato che ci sono più di 1000 studenti in questa scuola e oltre 50 attività, sarebbe impossibile ordinare manualmente le loro preferenze e assegnare le classi. Esiste un altro algoritmo / codice / software che ordinerà le classi in modo che:

  1. Tutti hanno almeno una preferenza
  2. Le dimensioni della classe possono essere impostate su limiti diversi
  3. Gli studenti possono essere assegnati a più di una lezione dopo che tutti hanno ricevuto almeno uno fino a quando le classi sono piene?

Sono un po 'arrugginito quindi le spiegazioni / soluzioni per dummys sarebbero super apprezzate.

Grazie!

Hayley

    
posta Hayley Kennealy 28.05.2018 - 00:09
fonte

2 risposte

0

Sembra che la situazione attuale sia la seguente: se qualcuno si iscrive abbastanza presto quando ci sono ancora molti punti disponibili, lui / lei otterrà tutto ciò che è richiesto. Vuoi cambiarlo in una sorta di incarico round robin.

Dovresti aspettare un numero di richiedenti / richieste che riempiranno tutti i posti disponibili. Questo può essere facilmente controllato dopo che ogni modulo è stato compilato. Una volta che hai, chiudi la registrazione. Scusate! Meglio fortuna l'anno prossimo.

Quindi ordina i candidati nell'ordine delle domande ricevute. È con questo elenco di candidati che inizi a ripetere, assegnando la preferenza principale di ciascun candidato a una classe disponibile per ogni turno. Quando finisci gli spot dovresti avere tutto in ordine.

    
risposta data 28.05.2018 - 07:29
fonte
0

In primo luogo, questo dovrebbe essere chiesto in qualche posto come stackoverflow . L'ingegneria del software è più della selezione dell'algoritmo.

Sembrerà strano, ma l'algoritmo più facilmente applicabile (la classe di algoritmi davvero) alla tua situazione è Programmazione lineare, o la sua controparte Programmazione intera. l'idea è di codificare i tuoi vincoli come un insieme di equazioni lineari (forse limitate a soluzioni intere) e applicare solutori generici per trovare una soluzione o dimostrare che non esistono.

  • Un vantaggio di questo approccio è l'esistenza di soluzioni FOSS espressamente progettate per risolvere rapidamente tali problemi.
  • Un altro vantaggio è la capacità di modificare i vincoli ed esprimere molte idee possibili senza apportare modifiche importanti all'algoritmo.

Un modo per fare questo sarebbe definire una variabile binaria x_s, una per ogni studente s e ogni attività che esprima se saranno o meno in quell'attività e p_s, esprimendo se preferiscono o no. Quindi definiamo una lista abbastanza lunga di disuguaglianze (queste possono e dovrebbero essere generate in modo programmatico).

  • Per applicare i limiti della dimensione della classe, per ogni attività una somma (x_s1, a) + (x_s2, a) + ... + (x_sn, a) può essere limitata dalla costante preferita.
  • Per far rispettare le preferenze, per ogni studente devi anche che (x_s, a1) + (x_s, a2) + ... + (x_s, an) è almeno 1, dove i ai sono limitati ad essere le attività lo studente preferisce.
  • Per imporre una sorta di equità, puoi avere un'equazione per ogni coppia di studenti che garantisce che nessuno studente è in più di una attività rispetto all'altra (se tale bilanciamento è desiderato).
  • Per tentare di ottenere classi di dimensioni complete, puoi impostare la funzione obiettivo lineare che desideri ottimizzare semplicemente come la somma di tutti gli x_sa.
  • Avrai bisogno di altri vincoli per il realismo, per esempio che tutti gli x_sa sono non negativi e che sono limitati di sopra di 1.

Se desideri ulteriore aiuto con questo approccio, Dr. Nathan Axvig è sempre alla ricerca di nuovi progetti di ricerca operativa. Ho parlato con lui a un paio di conferenze, ed è esperto e amichevole. Per citare la sua biografia, "il Dr. Axvig è strongmente interessato a stabilire partnership con aziende, organizzazioni senza scopo di lucro e governi con gli obiettivi comuni di fornire ai propri clienti soluzioni utili e di offrire ai propri studenti un'esperienza preziosa lavorando su reale problemi del mondo reale. A tal fine, il Dr. Axvig ha supervisionato un numero di progetti di consulenza universitari ed è sempre alla ricerca di altro. "

    
risposta data 28.05.2018 - 18:20
fonte

Leggi altre domande sui tag