Unul dintre algoritmii pentru planificarea lecțiilor

A existat o tăcere, pe care Svejk o spartese, a oftat:
"... ar trebui să existe disciplină în serviciul militar - fără ca nimeni să nu-și fi dat un deget. Locotenentul nostru, Makovets, mereu a spus: "Disciplina, manechinele, este necesară. Dacă nu ar exista disciplină, te urci ca o maimuță în copaci. Serviciul militar al tău, proști nebuni, va face pe oameni! "Ei bine, nu-i așa? Imaginați-vă un pătrat pentru dvs., să zicem, în Piața Charles, și pe fiecare copac există un soldat fără disciplină. Mă terorează teribil.






Jaroslav GASHEK POSTURILE SOLEDERULUI BROWN DE SWEEP

Programul de ore este combinația în spațiu și timp a disciplinei (subiect), a profesorului (profesorilor), a publicului și a grupului (subgrup, flux) al studenților.

Formularea problemei

Concluzie. Așa cum se poate observa din declarație, este posibilă evaluarea calității programului doar după compilarea sa completă. În consecință, folosirea algoritmilor genetici ne poate permite să construim o soluție la problema dorită și chiar să luăm unul dintre cei buni într-un anumit sens. În acest caz, algoritmii genetici se converg foarte rapid la cel opțional la început și, prin urmare, practic nu vor exista restricții asupra cantității de date introduse.

Imaginea este luată de aici.

Algoritmul genetic

Din punct de vedere pur retoric, repet principalele etape ale algoritmului genetic:

  1. Specificați funcția obiectivă (fitness) pentru persoanele fizice ale populației
  2. Creați o populație inițială
  3. (Începutul ciclului)
    1. Reproducerea (traversarea)
    2. mutant
    3. Calculați valoarea funcției obiectiv pentru toate persoanele
    4. Formarea unei noi generații (selecție)
    5. Dacă sunt îndeplinite condițiile de oprire, atunci sfârșitul ciclului, altfel (începutul ciclului).

Cea mai caracteristică eroare în aplicarea algoritmilor genetici este selecția genelor. Adesea, ca o genă, decizia este pur și simplu alegerea. Alegerea genelor este cel mai non-trivial și element creativ în crearea unui algoritm genetic. Personal, cred că alegerea genelor trebuie să satisfacă următoarele două cerințe de bază.

  1. Prin setul de gene, soluția problemei dorite trebuie construită rapid și fără ambiguități.
  2. La trecere, descendentul trebuie să moștenească caracteristicile părinților.

Algoritmul programării

Voi descrie numai genele în sine, algoritmul pentru construirea de soluții pentru ele, traversarea și mutația.







Cum să programați un dispecer condus. Cuvântul experimentat înseamnă că dispecerul a compilat deja programul uneori și își cunoaște blocajele. De exemplu, lipsa de audiențe mari sau de cursuri de calculatoare. Primul curs, pentru că au o mulțime de cursuri de streaming și, în același timp, oferă cursuri în subgrupe pe clase de calculator, engleză / engleză de la zero / germană / franceză etc. iar autoritățile cer în același timp ca primul curs să nu aibă în nici un caz ferestre și nu mai mult de două prelegeri pe zi și zile încărcate uniform. Prin urmare, un dispecer experimentat stabilește mai întâi "clase înguste", clase de superiori la cererea lor și clase de profesori deosebit de enervant. Apoi, folosind clasele aranjate ca un schelet, completează rapid programul. Să încercăm să simulăm, într-un sens, acest proces.

O parte din clasele pe care le avem deja în program, numărul rămas este numerotat în mod consecvent. Gama de numere de ocupație va fi considerată genom, deși în principiu este importantă numai ordinea claselor. Pentru programele de construcție se vor obține în mod constant numărul de angajați și a pus profesia aleasă în programul pentru a satisface cerințele necesare și maximizarea funcției obiectiv pentru elevi, profesori și sălile de clasă (care, de asemenea, sunt criteriile pentru ocuparea forței de muncă).
Dacă cerințele necesare nu pot fi îndeplinite, atunci un individ cu un astfel de genom poate fi aruncat ca neviabil. Dacă programul nu funcționează, atunci puteți înlocui cerințele impuse cu o pedeapsă în funcția obiectivă.

Trecerea poate fi organizată în mai multe moduri. De exemplu, unul dintre ele. Să presupunem că avem următoarele gene

3 1 2 5 6 4 7
2 3 5 7 1 4 6

Se poate observa că ocupația 3 apare la ambele gene până la poziția 2 inclusiv și, de exemplu, de la poziția 2 la poziția 5, intervalul pentru o sesiune. Vom face următoarea comprimat

_ * * * * _ _ pentru 1 lecție
* * * _ _ _ _ pentru 2 lecții
* * _ _ _ _ _ pentru 3 lecții
_ _ _ _ _ _ _ pentru 4 lecții
_ _ * * _ _ _ pentru 5 lecții
_ _ _ _ * * * * pentru 6 lecții
_ _ * * * * pentru 7 lecții

Aici, asteriscurile indică poziții posibile pentru numerele ocupațiilor puilor. Puteți alege una sau mai multe soluții posibile ca descendenți sau descendenți ai acestor părinți. Există întotdeauna o soluție pentru selectarea genelor puilor, de exemplu, ambii părinți o satisfac. Rescriem tabelul în seturi de poziții posibile

Pentru a construi soluții, puteți utiliza următorul algoritm. Mai întâi vom pune acele numere de clase mai puțin frecvente. Dacă sunt sortate în ordine crescătoare, vom avea
1 timp 4
De 2 ori 3, 5
De 3 ori 2, 6
De 4 ori 1, 7
Prin urmare, mai întâi punem 4 clase la 6 poziții, apoi 3 sau 5 la poziții sau respectiv. La fiecare pas puteți arunca o cutie de meciuri. Ca rezultat, este posibil să se obțină, de exemplu, pașii următori pentru un algoritm de crossover

* * * * * 4 *
3 * * * * 4 *
3 * * 5 * 4 *
3 * * 5 * 4 6
3 * 2 5 * 4 6
3 * 2 5 7 4 6
3 1 2 5 7 4 6

Pentru că nu se poate construi secvența corectă, algoritmul este mai bine organizat sub forma unui algoritm recursiv simplu pentru posibilitatea repetării, și anume, organizarea unor sortimente.

Mutația poate fi organizată destul de simplu, prin rearanjarea accidentală a numerelor de ocupație.

concluzie

Reiterez următoarea soluție (schiță).

Mulțumită tuturor celor care au răspuns, după ce ați discutat acest subiect, vă puteți organiza.







Articole similare

Trimiteți-le prietenilor: