Domanda

Ho un problema di calendario classico costituito dalle classi variabili (~ 100), camere (20), termini (8) e giorni feriali (5).

Per semplicemente semplici il problema, di seguito sono i vincoli ridotti.

Una giornata è di 9 ore.

Alcune classi sono obbligatorie per gli studenti e le classi obbligatorie dei termini 1,3,5,7 (e per 2,4,6,8) non devono sovrapporsi.

Le lezioni hanno pesi diversi in termini di ore, alcune sono 2 ore, alcune sono 3.

Alcune lezioni dovrebbero essere in stanze specifiche.

Non ci possono essere due lezioni nella stessa classe contemporaneamente.

Vado con il modulo di vincolo Python LogiLabs. E sono consapevole che scegliere le variabili e i domini saggiamente comporterà un tempo minore per risolvere il problema. Il problema è che non ho mai fatto la programmazione dei vincoli prima e ho difficoltà a costruire il problema per scoprire dove e cosa cominciare. Per esempio:

Posso impostare un vincolo come "nessuna classe due con la stessa stanza, lo stesso giorno può sovrapporsi a reciprocità". Oppure inizia con "Nessuna spazio può avere più di 9 ore riservate nello stesso giorno", quindi continuare con un dominio di soluzione ridotto. Stimo (non ho provato) che il primo vincolo impiegherà molto più tempo a risolvere rispetto all'altro. Ma richiede anche (immagino) il cambiamento di variabili e domini di soluzione o una ricostruzione di un problema più piccolo. Sono già un po 'perso in variabili, domini, intervalli, implementazioni ecc.

Per farla breve, ho bisogno di alcuni suggerimenti per costruire il problema, domini di soluzione, scegliere le variabili saggiamente ecc.

Grazie

AGGIORNARE

Usando il pacchetto LogiLab-Constraint Ho fatto un'applicazione di base e l'ho caricato github

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top