Programul algoritmului. Știința face un program

Să presupunem că există multe n.procesoare identice, desemnate și sarcini independente
a fi executat. Procesoarele pot funcționa simultan, iar orice sarcină poate fi efectuată pe orice procesor. Dacă sarcina este încărcată în procesor, rămâne acolo până la sfârșitul procesării. Timpul de procesare a sarcinilor. este, de asemenea, cunoscut
Organizați prelucrarea sarcinilor astfel încât întregul set de sarcini să fie completat cât mai repede posibil.

Sistemul funcționează după cum urmează: Primul procesor eliberat ia următoarea sarcină din listă. Dacă două sau mai multe procesoare sunt eliberate simultan, atunci următoarea sarcină din listă va fi procesorul cu cel mai mic număr.

Exemplu. Să fie trei procesoare și șase sarcini, timpul de execuție al fiecărui dintre acestea fiind:

Luați în considerare programul la momentul inițial al timpului. T \u003d 0.Procesor Începe să se ocupe de sarcină Procesor - sarcini și procesor - sarcini . CPU termină sarcina la momentul timpului
în timp ce procesoarele și Încă lucrează la sarcinile lor inițiale. Pentru T \u003d 3.cPU din nou termină sarcina și începe să se ocupe de sarcină care se termină la acel moment T \u003d 4.. Apoi începe să îndeplinească ultima sarcină . Procesoare și finalizați sarcinile T \u003d 5.Dar de la lista L.goliți, se opresc. CPU completează execuția sarcinii pentru T \u003d 12.. Programul revizuit este ilustrat în fig.1. diagrama temporară cunoscută sub numele de schema Gantta.. Evident, programul nu este optim. Puteți "ridica", de exemplu, un program care vă permite să completați toate sarcinile pentru T * \u003d 8unități de timp (Fig.2.).

Acum, luați în considerare un alt tip de sarcină pentru a elabora un program pentru sistemele multiprocesoare. În loc de problema celei mai rapide finale a setării stabilite de un număr fix de procesoare, acum vom pune acum problema numărului minim de procesoare necesare pentru a finaliza acest set de sarcini pentru un timp fix . Desigur nu va exista mai puțin decât timpul sarcinii consumatoare de timp.

Într-o astfel de formulare, sarcina de a întocmi programul este echivalentă cu următoarea problemă de ambalare. Fie ca fiecare procesor corespunde cutiei mărimea . Fie ca fiecare sarcină să fie corespunde dimensiunii mărimii egală cu executarea sarcinilor Unde
Acum, pentru a rezolva sarcina de a desena un program, trebuie să construiți un algoritm care vă permite să plasați toate elementele în numărul minim de cutii. Desigur, este imposibil să completați cutiile deasupra volumului lor. , iar elementele nu pot fi zdrobite în părți.

Literatură

1. T. Corner, Ch. Leenerson, Rivest

Algoritmi: clădirea și analiza. M.: MCSNMO, 2000.

2. Programarea artei D.Knut, volumul 1. Algoritmi de bază. UCH. POS. M.: ED. Casa "Williams", 2000.

3. Wirth N. Algoritmii și structurile de date.: Pen. Din engleza - M.: MIR, 2001.

4. Husainov B.S. Structuri și algoritmi de prelucrare a datelor. Exemple la.

limba Si. Studii. beneficiu. M: Finanțe și statistici, 2004.

5. A. Aho, J. ChopCROFT, J. ULMAN, Structuri de date și algoritmi M: St. Petersburg: Kiev: Williams, 2001.

Tăcerea a domnit, care se aplecă pe el însuși, având oftat:
- ... în serviciul militar trebuie să existe o disciplină - nimeni nu s-ar fi mutat la deget la un deget. Oberul nostru locotenent makovets a spus întotdeauna: "Disciplina, tocilurile necesare. Nu fi disciplină, ți-ar plăcea maimuțe, lacuri Lasili. Serviciul militar de la tine, nebuni fără creier, oamenii vor face! " Ei bine, nu-i așa? Imaginați-vă pătratul, spuneți, pe piața Karlova, iar pe fiecare copac se așează unul de un soldat fără nici o disciplină. Mă sperie teribil.
Yaroslav Gashek. Aventura soldatului curajos Schwek

Clasa programată, aceasta este o combinație în spațiu și timp de disciplină (subiect), profesor (profesori), audiențe și grupuri (subgrupuri, flux) studenți.

Formularea problemei

Voi scrie.

  • Atunci când conduceți clase, nu poate exista niciunul participant, de exemplu, la o întâlnire a Departamentului, elevii de obicei nu vin sau au mers la studenți departamentul militar (Ei au propriul lor program), și pentru felul de clase nu există disciplină, profesor și audiență.
  • De regulă, cerința necesară este continuitatea (lipsa ferestrelor) în studenți și, de preferință, printre profesori.
  • Programul poate fi preparat pe semestru / jumătate de lună timp de săptămâni, timp de două săptămâni și numitor / numitor (o săptămână sau chiar săptămâna). Există, de asemenea, un program timp de o lună.
  • Clasele ar trebui să poată efectua în modul manual (cu alte cuvinte din editor). De exemplu, un consiliu științific sau un cuplu de șeful Bolshoi și chiar o lecție este doar o persoană bună.
  • Trebuie să existe un sistem de interdicții pentru toți participanții la lecție. De exemplu, aproape toți profesorii lucrează pe partea (altfel nu veți trăi) sau Fondul de audit este împărțit între facultăți și este imposibil să se pună la prânzul în partea audienței.
  • Disponibilitatea dorințelor sofisticate ale profesorilor, o singură cupluri pe zi pentru a elibera alte zile, iar alte două perechi pe zi nu sunt puse, este copleșită, și dacă o prelegere, apoi o pereche și în mod necesar 2 sau 3 mai mult.
  • Clase în diferite clădiri care necesită timp să meargă mai mult decât un timp de pauză între clase. Natural și condiția de minimizare a deplasăriilor.

Ieșire. După cum se poate observa din formulare, evaluați calitatea programului este posibilă, numai după compilarea completă. În consecință, utilizarea algoritmilor genetici poate permite construirea unei soluții la sarcina dorită și chiar a obține unul dintre binele într-un sens. În acest caz, algoritmii genetici sunt foarte rapid convertiți la optim la început și înseamnă că aproape nu vor fi restricții asupra volumului datelor de intrare.

Imaginea este luată de aici.

Algoritm genetic

Pure retoric, repet etapele principale ale algoritmului genetic:

  1. Setați caracteristica țintă (fitness) pentru persoanele fizice ale populației
  2. Creați o populație inițială
  3. (Start ciclu)
    1. Reproducere (trecere)
    2. Muning.
    3. Calculați valoarea funcției țintă pentru toți indivizii.
    4. Formarea unei noi generații (selecție)
    5. Dacă se efectuează condițiile de oprire, la sfârșitul ciclului, altfel (începutul ciclului).

Eroarea cea mai caracteristică a utilizării algoritmilor genetici este de a alege gene. Adesea, soluția este adesea aleasă ca gene. Selecția genelor este elementul cel mai nontrivial și creativ în crearea unui algoritm genetic. Personal, cred că selecția genelor ar trebui să îndeplinească cele două dintre următoarele cerințe de bază.

  1. Pe setul de gene, decizia sarcinii dorite ar trebui construită rapid și fără ambiguitate.
  2. La trecere, descendentul trebuie să moștenească trăsăturile caracteristice ale părinților.

Cometariu. Setul de gene ar trebui să dea întregul set (posibil optim) soluții ale problemei. În principiu, nu este necesar să se solicite unambiguitate reciprocă, este suficient pentru cartografierea genelor în spațiul soluției pe (Sursă).

Algoritmul de programare a desenului

Voi descrie numai genele, algoritmul pentru a le construi pe ele, trecerea și mutația.

Ca program de un dispecer experimentat. Cuvântul experimentat înseamnă că dispecerul a fost deja / și programul vorbește deja uneori și cunoaște blocajele sale. De exemplu, o lipsă de audiențe mari de streaming sau clase de calculatoare. Primul curs, deoarece au o mulțime de cursuri de streaming și în același timp clase în subgrupuri pe clase de calculatoare, engleză / engleză de la zero / germană / franceză etc., iar șefii solicită ca primul curs să nu aibă ferestre În orice caz. și nu mai mult de două prelegeri în zile și zile au fost încărcate uniform. Prin urmare, dispecerul experimentat pune mai întâi "clase înguste", clase de șefi asupra cererii și claselor de profesori deosebit de enervanți. Apoi, folosind o clase aranjate ca un schelet, terminând rapid programul. Să încercăm să imităm, într-un sens, acest proces.

O parte din clase sunt deja în program, care rămân în mod consecvent. O serie de numere de ocupație va fi considerată genom, deși, în principiu, doar ordinea claselor este importantă aici. Pentru a construi un program, vom elimina în mod constant numărul de clase și vom pune lecția selectată în programul care îndeplinește cerințele necesare și maximizând funcția țintă pentru studenți, profesori și audiențe (ele au, de asemenea, criterii de ocupare a forței de muncă).
Dacă cerințele necesare nu îndeplinesc, individul cu un astfel de genom poate fi aruncat ca un non-vizual. Dacă programul nu funcționează, puteți înlocui cerințele necesare cu o amendă în funcția țintă.

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

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

Aici este clar că ocupația 3 se găsește în ambele gene în poziția 2 inclusiv, cât și, de exemplu, din poziția 2 la poziția 5 interval pentru 1 clase. Vom face următoarea tabletă

_ * * * * _ _ pentru 1 clase
* * * _ _ _ _ pentru 2 clase
* * _ _ _ _ _ pentru 3 clase
_ _ _ _ _ * _ pentru 4 clase
_ _ * * _ _ _ pentru 5 clase
_ _ _ _ * * * pentru 6 clase
_ _ _ * * * * * pentru 7 clase

aici, asteriscurile au marcat posibilele poziții pentru apariția descendentului. Puteți alege din unul sau mai multe solutii posibile ca descendent sau descendenți ai acestor părinți. Decizia de a selecta genele descendente este întotdeauna, de exemplu, ambii părinți înșiși îl satisfac. Rescrieți o masă prin multe poziții posibile

1 Poziție (2, 3)
2 Poziția (1, 2, 3)
3 Poziție (1, 2, 5)
Poziția 4 (1, 5, 7)
5 Poziție (1, 6, 7)
6 Poziția (4, 6, 7)
7 Poziția (6, 7)

Pentru a construi soluții, puteți utiliza următorul algoritm. Mai întâi vom pune numărul de clase care sunt mai puțin probabil. Dacă le sortează ascendența, atunci vom avea
1 timp 4.
De 2 ori 3, 5
De 3 ori 2, 6
De 4 ori 1, 7
În consecință, puneți mai întâi 4 lecții pe poziția a 6-a, apoi 3 sau 5 în poziția (1, 2) sau (3, 4), respectiv. La fiecare pas puteți arunca cutiile de meciuri. Ca rezultat, puteți obține următorii pași pentru trecerea algoritmului

* * * * * 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

Deoarece este posibilă construirea secvenței corecte, este mai bine să organizați un algoritm sub forma unei simple recursuri pentru a repeta algoritmul, adică Organizații ale unor ori.

Mutația poate fi organizată suficient de simplă, permutarea aleatorie a numerelor de ocupație.

Concluzie

Aceasta este o continuare, într-un sens, programul meu posts pentru a elabora programul clasei din universitate și calculul încărcăturii pe departament.

Re-sugerează următoarea soluție (schiță).

  • GUI pe Pyqt sau Pyside
  • POSGRESQL DBMS (Sunt pregătit pentru aproximativ 80% aici), în plus, există încă aplicații și încărcături de profesori, curriculum și mult mai mult (în acest scop, publicați una sau mai multe subiecte)
  • interfața web pe Cherrypy + Cheetah (dar poate fi discutată)
  • exporturile de toate rapoartele (programe, carduri de curriculum etc.) în format OpenDocument (GOST R ISO / IEC 26300-2010. Standardul de stat al Rusiei (01.06.2011)) prin Odfpy
  • programați algoritmi de compilare de la mine (acest subiect este despre asta)
  • stading de la mine
  • pentru munca interesată pe un nucleu comun
  • pentru adaptarea interesată sub propria sa universitate și ocazia de a schimba totul în mod flexibil, viața merge și oficialii nu dormi

Mulțumită tuturor celor care au răspuns, după discutarea acestui subiect, va fi posibilă organizarea.

Lecția de program reglează ritmul vieții școlare, de muncă și de agrement al studenților și profesorilor.
Eficacitatea întregului proces educațional depinde de calitatea sa.

Acceptabilitatea lecțiilor și a programului școlar

Curriculum-ul școlar trebuie să respecte capacitățile funcționale ale studenților. Volumul, conținutul și organizarea procesul educațional Trebuie să asigure o astfel de stare a corpului, în care oboseala ar dispărea complet pentru perioada de odihnă.

Principalele criterii pentru estimarea lecțiilor în ceea ce privește funcționalitatea studenților - dificultăți și obosiți. Tedisalitatea se caracterizează printr-o schimbare a performanței și dificultatea subiectului - nivelul academiciei, adică gradul de asimilare material educațional. Prin urmare, la elaborarea unui program, este necesar să se țină seama de ambii factori în mod egal.

Într-un aspect juridic, problema creării unui program școlar a fost reflectată în noile cerințe igienice pentru pregătirea programului, care se bazează pe datele cercetării științifice moderne a bioreimologiei performanței mentale și a tabelului de dificultate al subiecților Ig . Sivkova. Cu toate acestea, pentru directorul adjunct al școlii, care este programul, este important nu numai să știm cât de dificilă este de a oferi forța obositoare a lecțiilor pe un anumit subiect asupra stării de sănătate. Din păcate, dificultatea de masă i.g. Sivkova nu ia în considerare o astfel de componentă a învățării, ca tiriness a obiectelor, care afectează în primul rând sănătatea elevului.

Studiile moderne oferă o idee despre dependența de oboseală a subiectului din dificultatea sa, deși la unii subiecți, acești indicatori diferă semnificativ. Aceste idei fac posibilă combinarea a doi indicatori într-una - acceptabilitatea subiectului. Prin urmare, tabelul i.g. Sivkova poate fi oferită o alternativă - amploarea admisibilității obiectelor, care ar lua în considerare componentele dificultății și a tărierii instruirii, precum și caracteristicile fiecăruia instituție educațională și curriculum al fiecărei clase.

Scara de acceptabilitate constă dintr-o coloană de "elemente de rang", unde se fac obiecte, ale căror rânduri au fost obținute prin rezultatele diagnosticului dificultății și aledității lor prin metodă evaluarea experților - algoritmul lor este reprezentat în Anexa 1. Prin structura sa, scara propusă de constantă și în funcție de conținutul variabilei (a se vedea tabelul 1).

tabelul 1

Rezistența la scară de eșantionare

După cum se poate observa din tabelul 1, scara este formată din cinci grupe de dificultăți. Fiecare grup are o estimare în puncte - aceasta este o componentă permanentă a scalei, care nu este supusă niciunei modificări. Conținut (adică un set de elemente) din fiecare grup poate varia în funcție de rezultatele diagnosticului. Este o parte variată a scalei.

În școala secundară nr. 618 din St. Petersburg, am primit următoarea scară a admisibilității obiectelor (a se vedea tabelul 2).

masa 2

Scara de acceptabilitate a obiectelor

Algoritm pentru desenarea unui program

Deoarece în fiecare instituție de învățământ, admisibilitatea obiectelor va fi a lor, cititorii nu ar trebui să fie copiate la scara unu-la-unu. Este recomandabil să se diagnosticheze gradul de dificultate și de vrăjitorie a articolelor din școala dvs. de evaluări ale experților.

În plus, la elaborarea unui program, este logic să ghideze tabelul de clasificare a nivelului de capacitate de lucru al studenților în diferite clase în diferite lecții în timpul săptămânii școlare (a se vedea apendicele 2).

Am creat un algoritm pentru pregătirea unui program fiziologic rezonabil, care ia în considerare cerințele de igienă îndeplinite efectiv îndeplinite. Acest algoritm poate fi folosit pentru a compila un program de instruire atât la școală, cu un număr mare de clase de pași al doilea și al treilea și într-o instituție educațională relativ mică. Algoritmul este destinat specialiștilor care alcătuiesc un program fără a fi folosit program de calculator.

Atunci când se utilizează programe automate, este recomandabil să efectuați alinierea elementelor utilizând programul automat în etape pe baza algoritmului propus. Ca spectacole practice, aceste programe pot fi utilizate numai ca instrument auxiliar pentru:

  • aranjarea inițială a obiectelor cu finisare manuală ulterioară;
  • salvarea informațiilor și ieșire pentru imprimare.

După distribuția automată a obiectelor (programul, de regulă, locurile de la 40 la 70%), ia în considerare cerințele de igienă pentru calendarul lecțiilor este aproape imposibil, deoarece este necesar nu numai să furnizeze elementele nesoluționate rămase, ci și Pentru a schimba semnificativ (până la 60%) alinierea automată a elementelor pe principiul "dacă intenționați".

Prin urmare, atunci când se utilizează un program de calculator pentru compilarea unui program rațional, luând în considerare cerințele reale de igienă și pedagogică, specificul instituției de învățământ trebuie să fie aliniate la etapele utilizând algoritmul propus mai sus. În același timp, fiecare etapă a aranjamentului unui grup de obiecte ar trebui să se încheie cu finisarea manuală cu orientarea cerințelor de mai sus. Acest lucru vă va permite să efectuați mai rațional un program și, dacă este posibil, să luați în considerare toate condițiile necesare.

Procedura de modificare a programului

Algoritmul de ajustare a programului școlar

Dacă este necesar, schimbați programul în cursul anului școlar, care apare destul de des, trebuie să lucrați cu aspectul tabelului. Pentru a schimba programul, este necesar să se efectueze următoarele calcule și permutări.

Metoda propusă de elaborare a programului necesită timp nu mai mult decât de obicei, dar vă permite să faceți un program competent, adică:

  • să facă propria scară de admisibilitate a obiectelor (dificultăți și obosite) pentru a compila un program școlar mai rațional;
  • să păstreze în domeniul adjunct al directorului adjunct al școlii, un număr suficient de mare de informații necesare;
  • distribuie uniform lecții pentru fiecare zi (evitați numărul inutil de lecții a șaptea);
  • puneți toate clasele de la prima lecție, ceea ce vă permite să oferiți instruire într-un ritm, deoarece în fiecare zi studenții vor începe o zi școlară în același timp;
  • să reglementeze gradul de complexitate al școlii, în funcție de dinamica performanței săptămânale a elevilor;
  • exprimați lecțiile cu aproape nici un "Windows" fie cu cantitatea minimă, ceea ce vă permite să mențineți ritmul lucrării profesorului și să creați un mod de lucru favorabil;
  • obiecte alternative rațional ale diferitelor focus;
  • să aranjeze rațional lecțiile duale necesare;
  • schimbați rapid și ajustați programul datorită necesității producției.

În plus, cu această metodă, nu necesită un număr semnificativ de spații de hârtie (tabele suplimentare, mai ales dacă la școală multe clase de pași al doilea și al treilea (de la 30 sau mai mult).

Pentru a pregăti un program de înaltă calitate, care să corespundă capabilităților unei instituții educaționale specifice, este necesar să se efectueze propriul diagnostic al gradului de dificultate și de tendare a obiectelor în fiecare paralel. Experții în acest caz ar trebui să fie studenți, deoarece nimeni nu poate spune ce element este dificil și plictisitor.

Criteriile evaluării igienice a programului școlar

1. Numărul de clase scoala elementara – ______.

2. Numărul clasei primare și de liceu - ___________.

3. Totaloși totale utilizate pentru efectuarea de lecții - ___________.

4. Prezența unei scale de acceptabilitate pentru instituția sa educațională:

5. Contabilizarea scalei de cazare a obiectelor din programul școlar:

6. Distribuția lecțiilor pe zi pentru studenți:

7. Toate clasele încep să studieze de la prima lecție:

8. Alternarea rațională a obiectelor de concentrare și complexitate diferită:

9. Respectarea contabilității performanței studenților (în dinamica săptămânală):

10. Alinierea rațională a lecțiilor pentru profesori:

11. Numărul maxim de lecții de la profesori pe zi:

a) până la 4 lecții - ____ Profesori - ______ (%);

b) 5 și 6 lecții - ____ Profesori - _____ (%);

c) 7 lecții și mai mult - în ____ Profesori - ___ (%).

12. Ziua metodică este disponibilă (specificați numărul de profesori):

a) cu încărcarea până la 24 de ore pe săptămână - ____ profesori;

b) cu o încărcătură de 25 până la 30 de ore pe săptămână - la ___ profesori;

c) cu o sarcină pentru mai mult de 30 de ore pe săptămână - la ___ profesori.

  1. Pregătiți seturi cu nume de articole de la clasa a 5-a până la al XI-lea.
  2. Elevii distribuie seturi de cărți cu nume de obiecte și frunze pentru răspunsuri.
  3. Sugerați carduri selectate cu numele acelor subiecte studiate în această clasă (printr-un jurnal).
  4. Clarificați conceptul de obiecte de "dificultate".
  5. Sugerează să stabilească independent dificultatea fiecărui element prin clasament, adică. Plierea cardurilor în ordinea descrescării dificultății subiectului (cardurile sunt depuse de sus în jos, adică în primul rând de la deasupra - o carte cu cel mai dificil subiect este mai puțin dificil, etc.).
  6. Alinierea rezultată a elementelor de înregistrare pe o foaie de răspunsuri.
  7. După aceea, dezasamblați și clarificați conceptul de "tiriness" de obiecte.
  8. Efectuați o procedură de clasificare similară și scrieți alinierea rezultată pe foaia de răspuns.
  9. Foi cu răspunsuri la colectare și procesare (vezi formularul tabelului consolidat de mai jos).

- Unde: MK - scorul de mijloc pe subiectul unei clase;

n - numărul de clase din paralel studiat;

sau prin formula:

- Unde: MK - cantitatea de puncte pe subiectul unei clase;

n - numărul studenților într-o paralelă care participă la studiu.

De exemplu, în paralele cu clasa a 7-a există cinci clase, 130 de persoane au participat la diagnostic. Cantitatea de puncte din limba rusă în paralele a fost de 469. Înlocuim în formula numărului:

Cf. b. PR \u003d (469/130) \u003d 3.61 - Scorul mediu în limba rusă în paralele de grade a 7-a a fost de 3,61, copiii percep acest obiect ca fiind destul de dificil.

În același mod, se calculează scorul mediu separat al fiecărui subiect în tendare.

Apoi, există un punct mediu de admisibilitate pentru fiecare subiect. Pentru aceasta, există doi indicatori: scorul mediu al dificultății și scorul mediu de tirină și apoi rezultatul este împărțit în 2. Astfel, se dovedește punctele medii de acceptabilitate a subiectului.

Pe baza datelor obținute, se întocmește un tabel individual de acceptabilitate a elementelor unei instituții educaționale speciale pentru fiecare paralel.

Formular de tabel rezumat pentru procesarea răspunsului

Apendicele 2.

Ceasuri de studiu în timpul săptămânii
În funcție de nivelul de capacitate de lucru al studenților din diferite clase

1 - orele cele mai favorabile; 10 - Cel mai nefavorabil.

6-7 - Nivel redus de performanță (ceasuri mici pentru lecții de conducere).

8-10 - Performanță scăzută (ore adverse pentru realizarea lecțiilor).

Tabelul de distribuție a încărcăturii săptămânale a profesorului

Apendicele 3.

Tehnologia programului de programare a mesei

Pentru a efectua un aspect de care aveți nevoie pentru a găti:

  • 4 așternut de carton (grosime 1-2 mm, înălțime - 42 cm, lățimea - 22 cm; înălțimea rândurilor este de 0,8 cm, lățimea coloanei este de 1 cm) *;
  • 4 foi de hârtie colorată (tonuri de lumină mai bună) densitate 200 g / cm și dimensiuni similare dimensiunii foilor de carton;
  • scotch larg transparent;
  • dulap (boomvinil) pentru a lipi cartonul în dosar (panglici de 4-5 cm lățime de 49-50 cm);
  • pVA lipici (suficient de puternic, tip "silac").

Layout de execuție algoritm

1. Pentru a lipi foile de carton în "clapetă":

2. pe o singură coală de hârtie color, puneți toate informațiile necesare pentru prepararea programului (plasarea pe o foaie de carton nr. 1); Exemplu: tabelul asupra lui. 27.

3. În următoarele două foi de hârtie colorată, trageți grila, timp de trei zile pe fiecare foaie, 7 celule pentru fiecare zi (puse pe foaia de carton 2 și 3).

4. Pe foaia a patra pentru a desena o plasă solidă fără diviziune timp de zile (celule - dimensiuni similare).

5. Făcile finite trase sunt acoperite cu scotch, astfel încât nu există pauze în timpul tăieturilor.

6. Faceți sloturi în celule de 0,5-0,6 cm.

7. Fișele de hârtie glit pe părțile laterale ale foilor de carton de pe "clapeta" finalizată. Mock este gata.

8. Faceți separat etichete multicolore cu un literar de clasă (al 5-lea "a", al 7-lea "g" etc.), suma se bazează pe sarcina de 5- sau 6 zile din săptămâna +, în plus față de lecțiile în care clasele sunt împărțite subgrupurile. Dimensiune tag: lățime - 8 mm; Înălțime - 15 mm.

9. Pregătiți etichetele oricărei culori fără o clasă de literatori pentru a calcula sarcina săptămânală pentru fiecare profesor. Dimensiuni: lățime 5 mm; Înălțimea 12-14 mm.

Acest aspect este convenabil în funcțiune, deoarece toate informațiile necesare sunt întotdeauna înainte de ochii directorului adjunct. Poate fi pliat în dosarul, ceea ce face ușor de transportat. În același timp, etichetele vor fi ținute în sloturi.

Informații necesare pentru program

___________ * Dimensiunile foii de carton sunt individuale, deoarece În fiecare școală, un număr diferit de profesori, un mod diferit de funcționare (săptămâna școlară de 5 și 6 zile). Oferim dimensiuni pentru programul bazat pe o săptămână școlară de 6 zile și o școală în care lucrează 50-55 de profesori.

Ceea ce ați citit aici este cea mai mare parte nonsens. Cu toate acestea, în unele locuri, în opinia mea, există gânduri sensibile, din păcate, astfel de locuri nu s-au întâmplat atât de mult și nu cred că o ia acolo, unde problemele teoriei programelor sunt implicate în serioase. Cei care doresc să scrie ceva mai bun, recomandă cu fermitate să citească cartea Hu. T. "Programarea și firele întregi în rețele", în plus, probabil merită citirea prelegerilor nmice pe teoria optimizării n.m. Novikova (unde este pe Internet, nu-mi amintesc). Acum angajate în mod activ în problemele teoriei optimizării, astfel încât cineva este, de asemenea, interesat de acest subiect, el este întotdeauna fericit să comunice. Scrie [E-mail protejat]

Introducere opt

1. Descrierea regiunii tehnologice. 10.

1.1. Formularea sarcinii de a întocmi programul. 10.

1.1.1. Formularea generală a sarcinii de elaborare a programelor. 10.

1.1.2. Formularea sarcinii de a elabora o raporare în aplicarea la programul sesiunilor de instruire. unsprezece

1.2. Analiza existenței pe .. 12

1.3 Formularea problemei. cincisprezece

2. Dezvoltarea unui model matematic și implementarea practică a unui sistem de programare automată. şaisprezece

2.1. Modelul matematic al programului în liceu. şaisprezece

2.1.1. Denumiri. şaisprezece

2.1.2. Variabile. optsprezece

2.1.3. Restricții. nouăsprezece

2.1.4. Caracteristică țintă. 21.

2.2. Metode de rezolvare a sarcinii. 22.

2.2.1. Algoritm complet întreg. 23.

2.2.2 Un algoritm direct pentru programarea întregi. 28.

2.2.3. Tehnica de obținere a unei baze admise inițiale. 32.

2.3. Caracteristici implementarea practică Sisteme. 36.

2.3.1. Selectați modelul. 36.

2.3.2. Descrierea informațiilor de intrare. 39

2.3.3. Dezvoltarea suportului de informare. 41.

2.3.4. Caracteristicile formării restricțiilor modelului matematic al sarcinii de elaborare a programului. 44.

2.4. Rezultatele programului .. 45

2.5. Analiza rezultatelor obținute. 49.

Concluzii .. 50.

Literatură. 51.

Apendicele 1. Capabilitățile produselor software ale sistemelor de programare. 52.

Apendicele 2. Listarea modulului de program pentru rezolvarea sarcinii de proiectare automată a programului. 61.

Introducere

Calitatea specialiștilor de formare în universități și în special eficiența utilizării potențialului științific și pedagogic depinde de o anumită măsură la nivelul organizării procesului educațional.

Una dintre principalele componente ale acestui proces este calendarul clasei - reglementează ritmul de muncă, afectează returnarea creativă a cadrelor didactice, astfel încât acesta poate fi privit ca un factor de optimizare a utilizării resurselor limitate de muncă - un cadru didactic. Tehnologia dezvoltării programului ar trebui luată nu numai ca un proces tehnic intensiv de muncă, un obiect de mecanizare și automatizare care utilizează un computer, ci și ca o acțiune de control optim. Astfel, aceasta este problema dezvoltării unor programe optime de formare în universități cu un efect economic evident. Deoarece interesele participanților la procesul educațional sunt diverse, sarcina de a întocmi programul este multicriterial.

Sarcina de elaborare a programului nu ar trebui să fie luată în considerare doar ca un anumit program care implementează funcția distribuției mecanice a claselor la începutul semestrului, pe care se utilizează și se termină programele. Efectul economic al utilizării mai eficiente a resurselor de muncă poate fi realizat numai ca urmare a lucrărilor dureroase privind gestionarea acestor resurse de muncă. Programul este doar un instrument pentru o astfel de gestionare, iar pentru cea mai completă utilizare este necesară ca programul să combine nu numai mijloacele de a compila programul optim, ci și instrumentele pentru a-și menține optimitatea în cazul unei schimbări în unele contribuții Datele, care la momentul programului sunt considerate permanente. În plus, gestionarea optimă a unui astfel de sistem complex este imposibilă fără a acumula unele informații statistice cu privire la procesele care apar în sistem. Prin urmare, sarcina de a întocmi programul optim este doar o parte a unui sistem complex de management al procesului de învățare.

Multi-criterii din această sarcină și complexitatea obiectului pentru care model matematic, determină necesitatea unei cercetări matematice grave a obiectului pentru a crește funcționalitatea algoritmilor de compilare a programului fără o complicație semnificativă a modelului și, ca rezultat, creșterea cantității de memorie utilizată și timpul pentru a rezolva problema.


1. Descrierea regiunii tehnologice 1.1. Formularea sarcinii de a elabora

Sarcina teoriei programelor în formularea generală este considerată foarte atractivă, deși realizarea unor progrese chiar și mici față de soluția se datorează, de regulă, cu dificultăți enorme. În ciuda faptului că mulți specialiști foarte calificați au fost angajați în sarcinile teoriei programelor, până în prezent nimeni nu a reușit să obțină rezultate semnificative. Încercările nereușite de a obține astfel de rezultate, de regulă, nu sunt publicate și acest lucru determină parțial faptul că sarcina continuă să atragă atenția multor cercetători care caută simplitatea producției.

1.1.1. Formularea generală a problemei de compilare a sarcinilor

În cea mai generală formulare, sarcina de a întocmi programul este după cum urmează. Cu un anumit set de resurse sau dispozitive de service, trebuie efectuate unele sistem de sarcini fixe. Scopul este de a se asigura că proprietățile sarcinilor și resurselor și restricțiile impuse acestora găsesc un algoritm eficient pentru organizarea de sarcini care optimizează sau se străduiesc să optimizeze măsura dorită a eficienței. Ca măsuri principale de eficiență, lungimea programului este studiată și timpul mediu de ședere al sarcinilor din sistem. Modelele acestor sarcini sunt deterministe în ceea ce privește faptul că toate informațiile pe baza cărora se iau decizii privind ordinea sunt cunoscute în prealabil.

1.1.2. Formularea sarcinii de a elabora o raporare în aplicarea la programul sesiunilor de instruire.

Teoria generală a programelor presupune că toate dispozitivele de servire (sau procesoarele) nu pot fi efectuate în acest moment Timpul mai multor sarcini este că, pentru programul sesiunilor de instruire, nu este suficient dacă este un procesor atunci când distribuie sarcini pentru a accepta o audiență educațională. Deci, în unele cazuri, într-o singură audiență, pot fi lecții cu mai mult de un grup în același timp, de exemplu, prelegeri generale pentru mai multe fire.

Prin urmare, atunci când transferați teoria generală a programelor pentru a programa sesiunile de instruire, au fost făcute următoarele ipoteze:

Toate procesoarele (adică, în cazul unui program de formare - audiența) au o capacitate - un număr C ≥ 1. Capacitatea procesorului definește numărul de sarcini pe care le poate "procesa" în mod simultan (în legătură cu inadecvarea procesatorilor ar fi interesantă să se ia în considerare opțiunea atunci când publicul nu este ca procesor, ci un profesor, ci ca o sarcină - un flux de la unul sau mai multe grupuri educaționale cu care funcționează);

Ca un set de sarcini pentru distribuție, activitățile de formare ale profesorului cu grupuri de formare acționează;

Modelul de timp din sistem este discret; Toate distribuțiile se presupune că este repetată periodic pe parcursul unui interval de timp;

Toate sarcinile sunt efectuate pentru același timp, care este adoptat pe unitate de eșantionare a intervalului de timp;

Sarcinile au apartenența obiectelor, care sunt acceptate de grupuri de formare și profesori.

Ca urmare, formularea sarcinii de a elabora programul sesiunilor de formare sună după cum urmează: "Pentru un anumit set de auditori educaționali (în acest caz, sub publicul educațional, se desfășoară o gamă largă de camere, în care instruirea sesiuni (de la audiență pe calculator la sala de sport)) și un anumit set de intervale de timp (adică, în esență, lecții sau perechi de formare), construirea unei astfel de distribuții a sesiunilor de instruire pentru toate obiectele (profesori și grupuri de formare), pentru că pe care criteriul de optimitate alese este cel mai bun. "

1.2. Analiza PA existent

În prezent, sectorul pieței pentru proiectarea programului clasei este reprezentat de un număr mare de produse software diferite. În tabelul 1. Sunt prezentate numai câteva dintre cele cunoscute de mine.

Din motive obiective, sistemul de elaborare a unei garanții în universitate (adică o universitate de stat mare) trebuie să implementeze o serie de funcții de bază:

Contabilizarea dorințelor profesorilor;

Consolidarea publicului obligatoriu;

Indicarea publicului dorit;

Contabilizarea tranziției între corpuri;

Combinarea grupurilor în fluxuri pe orice total de discipline;

Diviziune în subgrupuri;

După întocmirea programului, dacă este necesar, înlocuiți profesorii sau schimbați timpul cursurilor.

În plus, există, de asemenea, cerințe specifice pentru capacitățile funcționale ale produsului software pentru fiecare universitate.

Oportunități În opinia mea, cele mai populare pe produsele software rusești sunt prezentate în apendicele 1.

Din lista listei, probabil doar programul metodist mai mult sau mai puțin respectă funcționalitatea necesară a programului de pregătire a programului în universitate. Această stare de lucruri este ușor explicată prin faptul că educația școlară de astăzi este mai "standardizată" (în sensul organizării procesului educațional) decât Universitatea. O astfel de standardizare conduce la o mare cantitate de piață potențială pentru vânzările de software și de returnare la dezvoltarea prin vânzarea unui număr mare de copii ale produsului la un preț relativ scăzut.

În cazul universităților, cererea de sisteme de planificare este probabil chiar mai mult decât pentru școli, dar cazul este complicat de marile specifice ale organizării procesului educațional la fiecare universitate individuală. Crearea unui software unificat nu este posibil, iar costul creării unui produs specializat în dezvoltatorii terți este nerezonabil de mare. În plus, condiția prealabilă este prezența unui program "stabilit", ceea ce implică capacitatea de a înlocui profesorii sau timpul clasei. Până în prezent, niciun produs software nu permite suficient acest lucru (deși unele posibilități sunt în "metodist").

1.3 Formularea problemei.

Scopul acestei lucrări a fost crearea unui model matematic al programului la o universitate, care să permită eficient (la un moment dat și cu un anumit grad de optimitate) pentru a rezolva sarcina de programare automată și ar avea flexibilitate (modificări minore cazul modificărilor informațiilor de intrare) pentru a adapta sistemul într-o sarcină practică specifică. Pentru simplificarea sarcinii la proiectarea inițială a designului, s-au făcut câteva ipoteze:

Programul este alcătuit la rata de cel mult două perechi pe zi (care este destul de potrivit pentru cazul unei forme de învățare de seară);

Toate perechile sunt ținute într-un singur caz;

Sarcina este plasată în termeni de programare liniară;

O descompunere ulterioară a modelului nu este produsă;

Toți coeficienții modelului și variabilele dorite sunt integrate;

Sarcina trebuie rezolvată de unul dintre valorile universale (independente ale coeficienților) metodelor de programare integer liniară.


2. Dezvoltarea unui model matematic și implementarea practică a sistemului de compilare automată a programului 2.1. Modelul matematic al programului în liceu

Construim un model matematic de program la universitate în ceea ce privește programarea liniară. Introducem notația și definiți variabilele și restricțiile.

2.1.1. Denumiri

Universitatea are grupuri de formare combinate în fluxurile R; R este numărul de flux, r \u003d 1, ..., R, K r \u200b\u200b- numărul grupului de studiu din fluxul R, K R \u003d 1, ..., G r.

Împărțirea grupurilor pe fluxuri se desfășoară pe baza principiilor:

(1) Utilizarea a două grupuri de același fond auditat pentru prelegerile lor presupune în mod automat premisele acestora în 1 flux (se presupune că toate prelegerile grupurilor de formare sunt ținute împreună).

2. Un grup (sau o parte din acesta), ca o unitate a procesului educațional într-o universitate, poate intra în diferite fluxuri, dar numai o singură dată fiecare dintre ele.

3. Numărul de fire nu este limitat.

Clasele sunt organizate în zilele lucrătoare la intervale cu vedere la jumătate, care vor fi numite perechi.

Denota:

t - Numărul săptămânii săptămânii, T є T KR, unde

T kr - multe numere de zile lucrătoare pentru grupul K r;

j - Număr pereche, J \u003d 1, ..., J;

J - Numărul total de perechi.

Cu fiecare grup de studiu K R debit R timp de o săptămână, conform curriculumului, se efectuează clase W KR, dintre care prelegerile și Q KR practice. Denota:

s R este numărul de disciplină din lista claselor de cursuri pentru fluxul R, S R \u003d 1, ..., S R;

q KR - Numărul disciplinei din lista de formare practică pentru grupul K R, Q kr \u003d 1, ..., q kr.

Se presupune că prelegerile sunt efectuate în toate grupurile de flux în același timp într-o singură audiență. Apoi, dacă pentru o anumită disciplină, mai mult de o ocupație se desfășoară în timpul săptămânii, această disciplină este menționată în lista prelegerilor sau clase practice de câte ori furnizată de curriculum pentru fiecare flux sau grup.

Profesori

Fie P să fie numărul (numele) profesorului, p \u003d 1, ..., P. Introducem valorile pentru examinare și:

Sarcina de învățare a cadrelor didactice este planificată înainte de întocmirea calendarului clasei, ca rezultat din această etapă a cantității și poate fi considerată specificată. Pentru fiecare profesor P, P \u003d 1, ..., p, sarcina sa de audit este, de asemenea, sarcină - n p ore pe săptămână.

Fondul de audit

Fiecare flux ocupă poate fi efectuat numai în anumite audiențe (de exemplu, informațiile practice privind știința calculatoarelor pot fi efectuate numai în gradele de afișare). Lasa:

(A 1 R) - multe audiențe pentru prelegeri pe fluxul R;

(A 2 R) - multe audiențe pentru formarea practică pe fluxul R;

A 1 R este numărul de elemente ale setului (A 1 R);

A 2 R este numărul de elemente ale setului (A 2 R);

A 1 R + A 2 R este numărul de audiențe care apar de seturi (A 1 R) ∩ (A 2 R).

Fondul de audit este determinat înainte de începerea programului, astfel încât setul poate fi considerat specificat.

2.1.2. Variabile

Sarcina de a face un program este de a determina pentru fiecare prelegere (în flux) și clase practice (în grup) ale zilei săptămânii și a perechii în această zi, luând în considerare punerea în aplicare a limitărilor construite mai jos și minimizați unele funcții țintă.

Introducem următoarele variabile booleene dorite:

=

În cazul unui program pentru un grup de formular de învățare de seară J \u003d 2. Generalizarea modelului pentru toate formele de învățare, a se vedea, p. 669.

2.1.3. Restricții

Pentru fiecare grup K r, toate tipurile de lucrări auditate trebuie efectuate în timpul săptămânii:

Fiecare prelegere S R și ocuparea practică a Q KR, respectiv, pentru toate fluxurile R și toate grupările K R, pot fi efectuate nu mai mult de o dată în orice zi t:

Dacă variabilele lingidează toate tipurile de clase cu timpul de exploatație, atunci și legați timpul cu numele profesorului.

În fiecare zi T și în fiecare pereche J, P nu poate conduce mai mult de o ocupație pe o disciplină pe un flux sau într-un singur grup:

În cele din urmă, în fiecare zi, la fiecare pereche, numărul de prelegeri și sesiuni practice nu ar trebui să depășească fondul auditat disponibil în universitate:

În plus, trebuie îndeplinite toate seturile de seturi de intersectare (A 1 R) și (A 2 R):

Relațiile reprezentate sunt epuizate de restricții necondiționate cu care sunt întotdeauna luate în considerare atunci când programul este pregătit. Poate, totuși, să fie condiții specifice, conducând anumite tipuri de lucrări pe "top" sau pe săptămâna "inferioară" (adică o oră academică pe săptămână). Alte condiții speciale nu sunt excluse, dar nu au fost considerate a simplifica modelul.

2.1.4. Caracteristică țintă

Pentru a menține pe deplin lucrările științifice, educaționale, pregătiți-vă pentru clase, profesorul universitar trebuie să aibă timp liber. Această condiție este insuficientă, dar este necesară. Evident, cu timp liber, el nu ar trebui să aibă un mod "sfâșiat", de exemplu, sunt "Windows" între clase cu studenți, dar dacă este posibil, în zile libere gratuite. Acest lucru este echivalent cu maximizarea sarcinii de audit a cadrelor didactice în acele zile atunci când acestea au (a se vedea (5)). Cu toate acestea, în același timp, pretențiile de timp liber în profesori sunt inegale, deoarece au un potențial creativ diferit. Prin urmare, este necesar să se introducă coeficienți de ponderare prin care trebuie luată în considerare statutul corespunzător al profesorului - gradele și titlul său științific, poziția, funcția ocupată, activitatea științifică și socială etc. În unele cazuri, pe baza evaluărilor experților, este posibilă utilizarea coeficienților de ponderare individuală care iau în considerare alți factori.

Astfel, alegeți criteriul de calitate pentru pregătirea programului de clase sub formă de maximizare a numărului ponderat de zile libere de activitatea de audit pentru toți profesorii, care, sub rezerva duratei fixe a săptămânii de lucru, este echivalentă cu maximul compactarea totală a sarcinii de audit.

Luați în considerare expresia pentru mărimea încărcăturii de audit pe zi T a profesorului P:


unde m este un număr mare pozitiv arbitrar; - variabila Boulev dorită.

Din (10) implică faptul că, dacă, atunci \u003d 1, și dacă, atunci \u003d 0.

Având în vedere sensul menționat mai sus, criteriul de optimizare în restricții suplimentare (10), precum și introducerea coeficienților de greutate al profesorului, obținem criteriul de optimitate dorit:


Funcția țintă introdusă nu este singura posibilă. Introducerea altor funcții țintă nu modifică limitele modelului matematic și metodele de rezolvare a problemei, dar pot afecta în mod semnificativ rezultatele calculelor.

2.2. Metode de rezolvare a sarcinii

Sarcina de a maximiza funcția țintă liniară la un anumit sistem de restricții este sarcina de programare liniară a întregului boolean, deoarece toți coeficienții de restricție sunt destinate datorită discredității datelor sursă ale problemei; În plus, variabilele dorite ale modelului matematic pot avea doar două valori. În prezent există mai multe soluții posibile la acest tip de sarcină.

Metodele de indexare ordonată și mărcile modificate bazate pe descompunerea la lagrangană a modelului original sunt descrise pe o serie de sarcini cu o singură linie, rezolvată în funcție de metodele de ordonare a indexării sau mărcilor modificate. Din păcate, numărul operațiunilor fiecărei metode nu permite o evaluare polinomială; În plus, dimensiunea tabelului de seturi (valori intermediare) a metodelor crește brusc cu creșterea dimensiunii problemei rezolvate, ceea ce este inacceptabil în cazul nostru. Este posibil ca schimbarea algoritmului de descompunere pentru un model matematic specific să reducă dimensiunea tabelelor, dar până acum nu există un astfel de algoritm.

În acest sens, au fost selectate metode de soluție descrise în modificarea metodei simplex pentru cazul sarcinii de programare liniară integer. În cazul general, numărul operațiunilor metodei simplex nu permite o estimare polinomică (clasa de sarcini a fost chiar arătată pentru care numărul de operațiuni este O (EN)), dar pentru cazul sarcinii noastre, numărul mediu de operațiuni permite estimarea polinomială: o (n 3 m 1 / (n-1)) (N - numărul de variabile; M - numărul de restricții).

2.2.1. Algoritmul complet întreg

Acest algoritm este găsit complet întreg, deoarece dacă tabelul sursă constă din elemente întregi, atunci toate tabelele obținute în timpul funcționării algoritmului conțin doar elemente întregi. Ca o metodă dublă simplă, algoritmul începe să lucreze cu o masă cu valoare dublă. Dacă un I 0 (i \u003d 1, ..., N + M; A I 0 este coeficienții de funcție țintă) - numerele ne-negative, atunci sarcina este rezolvată. Dacă pentru un rând A i 0

Lăsați sarcina de programare integer liniară să fie specificată:

maximiza.

în condiții

Condițiile (12) pot fi înregistrate ca


Să presupunem că pentru T \u003d 0 (adică, pentru tabelul original), toate IJ sunt numere întregi și coloane (J \u003d 1, ..., N) - pozitiv pozitiv. Apoi, toate coloanele deasupra calculelor rămân pozitive la lexicografic.

Înainte de a stabili metoda de obținere a unei restricții suplimentare de la șirul de producere, introducem o nouă reprezentare a numerelor. Permiteți [X] denotă cel mai mare număr întreg care nu depășește X. Pentru orice număr Y (pozitiv sau negativ) și pozitiv poate fi scris:

unde (r y este un echilibru nonnegativ de fixare yo). În special, . Prin urmare, dacă, atunci r \u003d 1. dacă, atunci r \u003d 0.

Inegalitatea suplimentară anexată trebuie efectuată la orice altă soluție a problemei (12). Luați în considerare unele ecuații în Tabelul T (Indexul liniei de coborâre) cu 0


unde x este componenta corespunzătoare a vectorului și variabilele curente non-legare. Puteți să exprimați X, A 0 și A J folosind reprezentarea introdusă mai sus (14):

Expresii de substituție (16) și (17) în (15) și reajlând membrii, obținem:

De atunci, și pe variabilele X și cerința de non-negativitate, partea stângă a ecuației (18) este întotdeauna nonnegivă. Luați în considerare expresia din partea dreaptă, încheiată în paranteze curbate. Coeficienții din această expresie sunt numere întregi, iar variabilele sunt supuse cerinței întregului integral. Prin urmare, toate expresiile din paranteze trebuie să fie întregi. Denotă-o prin s, adică.:

.

O variabilă slabă mai slabă este non-negativă. Într-adevăr, dacă s a fost negativ, adică. Ar fi nevoie de valori -1, -2, atunci multiplicarea celor vor face ca întregul drept al ecuației (18) negativ, în timp ce partea stângă este nonnegativă.

Luați în considerare două cazuri și. Pentru și. Înlocuirea unei expresii pentru X de la (15) la ecuația (19), obținem:

Ecuația (21) trebuie efectuată pentru orice soluție integrată a problemei (12). Rețineți că dacă a 0 în ecuație (21). Prin urmare, ecuația (21) poate fi utilizată ca șir principal în metoda simplăX. În particular, puteți alege întotdeauna destul de mare, astfel încât elementul de lider din linie (21) este egal cu -1, care va păstra tabelul întregi. Alegerea corespunzătoare va afecta rata de convergență a algoritmului. În primul rând, descriem algoritmul însuși. Ca un inițial, este necesar să se ia o soluție dublă admisibilă, care poate fi obținută prin adăugarea limitei XN + M + 1 \u003d M - X1 - - ... - XN 0, unde M este o constantă suficient de mare, și efectuarea unei iterații cu linia adăugată și cu o coloană minimă la lexicografic, luată ca lider. Algoritmul constă din următorii pași:

Pasul 0. Începeți cu o matrice dublă admisibilă A 0 în ecuația (13), elementele ale căror întregi sunt numere întregi (matricea A 0 poate conține elementele neurble, pentru aceasta, vezi p. 306).

Pasul 1. Printre rândurile cu A I 0 0 (I \u003d 1, ..., N + M), atunci sarcina este rezolvată.)

Pasul 2. Selectați (regula electorală va fi descrisă mai departe) și scrie o linie suplimentară în partea de jos a tabelului

Această linie este selectată ca o plumb.

Pasul 3. Pentru a ține un pas al unei metode duale simplex, ștergeți o linie suplimentară și reveniți la pasul 1.

Dovada membrelor algoritmului Vezi, p. 303-304.

Regula electorală este formulată după cum urmează.

Pasul 0. Lăsați un rând cu numărul V să producă.

Pasul 1. Lăsați - coloana minimă de lexicografică în rândul coloanelor cu un VJ

Pasul 2. Pentru fiecare VJ - cel mai mare număr întreg, astfel încât (lexicografic).

Pasul 3. Lăsați și (producerea V - producerea). Atunci

.

Pasul 4. Puneți pentru un VJ

Elementul selecției descrise mai sus vă permite să efectuați un element de conducere egal cu -1, în timp ce permisiunea duală a tabelului este conservată și, în același timp, coloana zero va fi cât mai mult posibil pentru a scădea.

2.2.2 Algoritmul direct pentru programarea întregi

Termenul "drept" aplicat unui algoritm de programare integer denotă o metodă care duce la o soluție optimă primind soluții "îmbunătățite" succesiv. Fiecare dintre aceste soluții este permisă în sensul că satisface atât restricțiile liniare, cât și starea integrității. Unul dintre avantajele probabile ale algoritmului este capacitatea de a întrerupe calculele, înainte de obținerea soluției optime și utilizarea celor mai bune soluții obținute ca aproximative. În plus, puteți utiliza un algoritm direct într-un compus cu algoritmi dubli pentru a obține diverse algoritmi compuși care pot trece de la faza care oferă soluțiile dualificabile în faza care oferă soluții direct admise.

Precedentul natural pentru algoritmul direct este algoritm complet integrat, deoarece în procedeul acestui algoritm, se obține o secvență de soluții integrate duble admise. Trebuie să se reamintească faptul că algoritmul complet al lui Homori este o modificare a metodei duale simplex. Principala diferență a acestui algoritm este că, ca o linie principală, este folosită pentru a tăia homorii cu un element de conducere egal cu -1. Acest clip este obținut din șirul de producere, care este definit ca unul dintre cele posibile rânduri de lider în metoda dual simplex. Utilizarea unei astfel de întreruperi ca o linie de lider va salva după iterație tabelul de admisibilitate și întregi dublă.

Se pare că este posibil să se modifice metoda simplăX pentru a fi modificată astfel încât să se obțină un algoritm care păstrează validitatea directă și inteligența tabelelor. Pentru a descrie procedura computațională, luați în considerare următoarea sarcină a programului Integer:

maximiza.

Să presupunem că coloana este selectată ca master și șir v - linia principală în iterația metodei simplex, adică. Pentru toate rândurile I, în care A este\u003e 0. Înainte de a efectua o procedură de eliminare Gauss într-o metodă simplă, adăugați mânerul la masă, obținut din rândul V:

În cazul în care J este o multitudine de indici de variabile non-abaze în (22), s k - o nouă (de bază) variabilă slabă și - o constantă nedefinită (temporară) pozitivă.

Rețineți că dacă puneți \u003d A vs, tăierea (23) va avea două proprietăți importante. In primul rand,

Aceasta înseamnă că valabilitatea directă a tabelului va fi salvată dacă utilizați clema (23) ca linie de lider. În al doilea rând, adică Elementul de antrenare este 1 (dacă clema este utilizată ca linie de lider). Este ușor de verificat (prin studierea formulelor pentru schimbarea variabilelor de bază), că conversia tabelului simplex cu un singur element de unitate economisește elementele integer ale tabelului simplex.

Aceste idei au servit ca bază a algoritmului direct în programarea întregi:

Pasul 0. Porniți din tabelul de coloană, în care un I 0 0 (I 1) și toate elementele A 0 J, A IJ și A I 0 sunt numere întregi.

Pasul 1. Verificați execuția condițiilor A 0 J 0 (J 1); Dacă acestea sunt finalizate, sfârșitul, soluția de bază curentă este optimă; Dacă nu - mergeți la pasul 2.

Pasul 2. Selectați coloana Prezentatorului cu 0 s 0. Acest șir este utilizat pentru a tăia HOMORI.

Pasul 3. Obțineți o bucată de homorie din șirul de producție și adăugați-o în partea de jos a mesei, adică. Adăugați la limitările ecuației problematice (23), unde.

Pasul 4. Efectuați conversia tabelului utilizând clema (23) ca șir principal. Variabila slabă S K din (23) va deveni neacceptată. Înapoi la pasul 1.

Dovada membrelor algoritmului Vezi, p. 346-353.

Deoarece alegerea șirului de producție este o sarcină de nontrivial, aparent, trebuie să existe mai multe linii care pot servi ca producție. În argumente preliminare, linia de previzualizare a metodei simplex a fost utilizată ca linie de producție. Această linie oferă întotdeauna un clip, care este un șir de lider cu un element de conducere egal cu unul. Aparent, există și alte linii în tabelul din care pot fi obținute cu aceleași proprietăți. Să presupunem că tăierea este obținută prin formula:

unde este determinată din această condiție

Definim setul V (S) ca un set de condiții satisfăcătoare (25).

Următoarele două reguli sunt exemple de reguli admise pentru alegerea unui șir de producere:

Regula 1.

1. Faceți o listă finală serie de indice de șir, astfel încât indicele fiecărui rând să îl introducă cel puțin o dată. Mergeți la 2.

2. Dacă lista este goală sau nu conține un indice unic de la V (uri), reveniți la 1; În caz contrar, găsiți primul index V V (s) din listă. Selectați un șir v ca producție. Afișați indexul V și toate indexurile anterioare. Mergeți la 3.

3. Selectați secvențial un șir v, administrat în 2., ca producătoare, atâta timp cât v V (s). De îndată ce V v (s), reveniți la 2.

Regula 2.

1. Lăsați v T (s) să fie setul V (S) corespunzător tabelului T. Dacă v T (s) conține mai mult de un element: VT (S) \u003d (V 1, V2, ..., VK +2), apoi ca o producție pentru a alege un astfel de șir care în seturile de seturi V 1 (S 1), V2 (S 2), ..., V T (s) șirul a apărut mai devreme (nu mai târziu) de restul și apoi a persistat până la V T (s); Mergeți la 2.

2. Selectați secvențial un șir v, administrat în 1., atâta timp cât. O dată, înapoi la 1.

2.2.3. Tehnica de obținere a unei baze admisibile inițiale

Soluția la fiecare dintre metodele de mai sus poate fi făcută numai dacă sarcina de programare liniară este fie direct, fie un dublu admisibil. O astfel de admisibilitate înseamnă prezența unei baze inițiale admisibile în sarcina inițială. Dacă sarcina este permisă și direct și dublă, atunci soluția obținută este optimă. În cele mai multe cazuri, după ce sarcina este setată, se pare că nu este permisă nici direct sau dual. Prin urmare, oferim un algoritm pentru obținerea unei baze inițiale admisibile.

Lăsați problema programării liniare să fie înregistrată în formă canonică:

minimiza

în condiții

Toate b i pot fi făcute non-negative, multiplicând, dacă este necesar, ecuația corespunzătoare pe -1. Apoi, acesta poate fi adăugat la fiecare ecuație O variabilă artificială (variabilele artificiale trebuie să fie non-negative), astfel încât variabilele inițiale să formeze o bază inițială:

Variabilele artificiale pot fi obținute din variabile slabe utilizate pentru a converti inegalitățile în ecuație. Într-adevăr, dacă limitările inițiale ale problemei de programare liniară sunt prezentate sub formă de inegalități:

că, adăugând o variabilă slabă pentru fiecare inegalitate, obținem:

Dacă B I 0, atunci s pot fi folosite ca variabile de bază inițiale.

Diferența dintre variabilele artificiale și variabilele slabe sunt după cum urmează. În soluționarea optimă a problemei, toate variabilele artificiale ar trebui să fie zero, deoarece nu există astfel de variabile în sarcina inițială. Pe de altă parte, este posibil ca în soluția optimă, variabilele slabe vor avea valori pozitive. Pentru ca variabilele artificiale să fie egale cu zero, puteți prezenta funcția țintă după cum urmează:

unde sunt numere pozitive destul de mari. Ideea metodei corespunde faptului că variabilele artificiale sunt atașate la prețuri cu bună știință mari. Această metodă duce la valori zero ale variabilelor artificiale într-o soluție optimă.

Există o altă modalitate de a obține o bază inițială admisibilă. În această metodă, ca și în prima, variabilele artificiale sunt utilizate ca variabile de bază inițiale. Este luată în considerare o nouă funcție țintă, care este o cantitate de variabile artificiale. Este necesar să minimalizați utilizarea ecuației z - una dintre limitări. Dacă sistemul inițial al ecuațiilor are o soluție admisibilă, atunci toate variabilele artificiale ar trebui să devină zero. În consecință, valoarea minimă ar trebui să devină zero. Dacă sistemul inițial al ecuațiilor nu are soluții permise. Dacă, atunci puteți scădea funcția țintă și utilizați forma optimă de bază ca o bază inițială admisibilă pentru a minimiza Z. În literatură, o astfel de metodă se numește o metodă simplă de două faze. În prima fază a metodei există o bază admisibilă prin minimizarea, pe al doilea - Z este minimizată și se obține o bază optimă.

Luați în considerare ca exemplu, următoarea sarcină de programare liniară:

minimiza

în condiții

unde toate b sunt non-negative.

Dacă introduceți variabile artificiale și o nouă funcție țintă, vom obține sarcina:

minimiza

,

în condiții

Dacă refuzi toate ecuațiile care conțin b i, de la -form, obținem:

-Z.

În cazul în care sistemul (26) este relativ diagonal Prima fază a metodei simplex este minimizată în condiții (26). Pe semnul Z, restricțiile nu sunt suprapuse. În procesul de calcul, de îndată ce variabila artificială devine un necazic, iar coeficientul său pentru a-forma este pozitiv, variabila însăși și coloana coloanei vectoriale corespunzătoare sunt excluse.

2.3. Caracteristicile implementării practice a sistemului

În practică, nu este foarte convenabil să lucrăm cu informații în forma în care este definită în modelul matematic. Prin urmare, în primul rând, definim cu metoda de organizare a datelor sau a modelului de date.

2.3.1. Selectați modelul

Modelul de date este un set de acorduri privind metodele și mijloacele unei descrieri formalizate a obiectelor și a conexiunilor acestora legate de automatizarea proceselor de sistem. Tipul de model și tipurile de structuri de date utilizate în acesta reflectă conceptul de organizare și prelucrare a datelor utilizate în DBMS care sprijină modelul sau în limba limbajului de programare, care creează un program de prelucrare a aplicațiilor.

Ca parte a soluției sarcinii, este necesar să se creeze un astfel de model de date, în care cantitatea de informații justificative ar fi minimă, a existat o posibilitate fundamentală de acces multiplayer la date și ar fi furnizat nivel inalt protejarea datelor.

În prezent, există trei abordări principale pentru formarea unui model de date: ierarhice, rețele și relaționale.

Organizația organizației ierarhice

Baza de date ierarhică constă într-un set comandat de copaci; Mai precis, dintr-un set ordonat de mai multe cazuri de un tip de lemn. Tipul de lemn constă dintr-un tip de înregistrare "rădăcină" și un set comandat de la zero sau mai multe tipuri de suport (fiecare dintre acestea fiind un tip de lemn). Tipul de lemn ca întreg este un set organizat ierarhic de tipuri de înregistrare.

Menține automat integritatea referințelor dintre strămoșii și descendenții. Regula principală: Nici un descendent nu poate exista fără părintele dvs. Rețineți că, similare cu menținerea integrității dintre legăturile dintre înregistrările care nu sunt incluse într-o singură ierarhie nu este acceptată.

Metoda de rețea de organizare

Abordarea rețelei față de organizarea datelor este o extindere a ierarhicului. În structurile ierarhice, înregistrarea descendentă trebuie să aibă exact un strămoș; În structura de rețea a datelor, un descendent poate avea vreun număr de strămoși.

Baza de date a rețelei constă într-un set de înregistrări și un set de conexiuni între aceste înregistrări și, dacă spunem mai precis, din setul de instanțe de fiecare tip din setul de baze de date de tipuri de înregistrare și set de instanțe de fiecare tip dintr-o dată set de tipuri de comunicații.

Tipul de comunicare este determinat pentru două tipuri de înregistrare: strămoș și descendent. O instanță a tipului de comunicare constă într-o singură instanță a tipului de înregistrare a strămoșilor și a unui set ordonat de instanțe de tip de înregistrare tip. Pentru acest tip de comunicare l, următoarele două condiții trebuie efectuate ca următoarele două condiții:

1. Fiecare instanță de tip P este strămoșul numai într-o singură instanță L;

2. Fiecare instanță C este un descendent nu mai mult decât într-o singură instanță L.

Metoda relațională de organizare

Principalele dezavantaje ale modelelor de date ierarhish și de rețea sunt:

1. prea greu de utilizat;

2. este nevoie de cunoștințele organizației fizice;

3. Sistemele aplicate depind de această organizație;

4. Logica lor este supraîncărcată cu detaliile accesului la baza de date.

Cea mai frecventă interpretare a modelului de date relaționale, aparent aparține datei, care o reproduce (cu diverse clarificări) în aproape toate cărțile sale. În conformitate cu data, modelul relațional constă din trei părți care descriu diferite aspecte ale abordării relaționale: partea structurală, partea de manipulare și partea holistică.

În partea structurală a modelului, se rezolvă că singura structură a datelor utilizate în baza de date relațională este normalizată atitudinea n-arous.

În manipularea modelului, sunt aprobate două mecanisme fundamentale pentru manipularea bazei de date relaționale - algebră relațională și calcul relațional. Primul mecanism se bazează în principal pe teoria clasică a seturilor (cu unele clarificări), iar al doilea se află pe aparatul logic clasic al calculului predicatelor de prim ordin. Funcția principală a părții de manipulare a modelului relațional este asigurarea relației de orice limbă particulară a bazelor de date relaționale: limba se numește relațional, dacă nu are nici o putere mai puțin expresivă și de algebră relațională sau un calcul relațional.

În cele din urmă, în partea integrală a modelului de date relaționale, se înregistrează două cerințe de bază de integritate care trebuie menținute în orice DBM-uri relaționale. Prima cerință se numește cerința integrității integrității. A doua cerință se numește cerința integrității legăturilor.

După analiza preliminară a modelului matematic al sistemului și metodelor de organizare a datelor, precum și organizația disponibilă pe piața software (metode ierarhice și de rețea ale organizației, își asumă o abordare ordonată a organizării datelor și astăzi sunt astfel de DBMS (de exemplu, Serverul dinamic Jasmin sau Informix), dar pe momentul dezvoltării posibilității de utilizare a acestora nu a fost, în același timp, există foarte "puternice" DBM-uri relaționale (de exemplu Oracle 8i)) alegerea a fost făcută în favoarea metodei relaționale de organizare a stocării datelor.

2.3.2. Descrierea informațiilor de intrare

Toate informațiile necesare pentru rezolvarea sarcinii sunt setate până la iterațiile metodelor de rezolvare a sarcinii programului. Pentru a simplifica, se crede că informațiile specificate sunt constante pe parcursul perioadei pentru care se întocmește programul.

Fără a pierde un anumit grad de sarcină comună, este posibil să se determine un anumit set de date de intrare necesare pentru formarea de restricții și rezolvarea problemei și, în același timp, comune pentru toate soiurile de implementare practică a sistemului. Datorită specificului sarcinii (posibilitatea adaptării relativ ușoare a modelului matematic pentru cazul implementării practice într-o anumită universitate), nu au fost dezvoltate formele de documente ale informațiilor de intrare. Detaliile de intrare sunt descrise în tabelul 2.

Tabelul 2. Descrierea detaliilor de intrare

Numele rechizitelor Chimiciile caracteristice

documente de intrare

Un fel Max. lungime Precizie

Prenume, prenume, patronimic al profesorului;

Contact Profesor de telefon;

Grad academic;

Bursa de studiu;

Numele Grupului;

Compoziția numerică a grupului;

Numele cursului citit;

Numărul de ore de audit;

Numere de audiență;

Informații despre public;

Numele subiectului citit de către profesor;

Numărul grupului în care se citește subiectul;

Informații despre publicul unde se citește subiectul.

În plus față de aceste date, pentru un model matematic, sunt necesare alte date suplimentare, care pot fi obținute după analizarea programatică a informațiilor de intrare.

2.3.3. Dezvoltarea de sprijinire a informațiilor

Vom analiza informațiile sursă pentru a determina compoziția și structura informațiilor pentru formalizarea și construcția ulterioară a modelului informațional și a datelor logice (ILM). Modelul matematic de mai sus, precum și informații suplimentare din descrierea zonei, fac posibilă determinarea rolului detaliilor în informațiile interdependente conținute în document. Pe baza unei astfel de analize, vom stabili dependențele funcționale ale detaliilor în conformitate cu recomandările și cerințele normalizării datelor, după care vor efectua normalizarea în sine. Scopul normalizării este de a reduce (dar nu neapărat eliminarea) redundanței datelor. Cu toate acestea, uneori redundanța datelor se intenționează creșterea eficienței programului. Să dăm definiția a trei forme de normalizare a bazei de date.

Tabelul este în primul rând forma normală (1nf) Dacă are o cheie primară, toate atributele sunt tipuri de date simple și nu există atribute repetitive. Pentru a se potrivi 1NF, domeniile de atribut trebuie să fie valori atomice și nu ar trebui să fie grupuri de atribute repetate. Toate grupurile de atribute recurente trebuie transferate într-un nou tabel.

Tabelul este în cea de-a doua formă normală (2NF) când este în prima formă normală și fiecare atribut neutilic depinde complet de cheia primară (adică, în 2NF, fiecare atribut nexian trebuie să depindă pe deplin de câmpurile cheie primare).

Tabelul este în a treia formă normală (3NF), dacă este în 2NF și nu conține dependențe tranzitive. Dependențele tranzitive sunt relația funcțională între atributele neselective. Orice atribut neselectiv care depinde în mod funcțional de un alt atribut neselectiv al aceluiași tabel creează o dependență tranzitivă și trebuie mutate într-o altă masă.

Dependențele funcționale rezultate sunt destul de triviale și, evident, de la modelul matematic, astfel încât în \u200b\u200bviitorul care descrie că nu sunt date. De asemenea, în prezentarea ulterioară, gradele intermediare de normalizare sunt reduse. Prin urmare, prezentăm doar modelul infoluxular final al bazei de date (a se vedea figura 1.).


Fig.1. Sarcina de configurare a sarcinii de bază de baze de date infologice




2.3.4. Caracteristicile formării limitărilor modelului matematic al sarcinii de elaborare a programului

Elaborarea restricțiilor (1) - (7) din modelul matematic al problemei de desenare a programului este o sarcină trivială suficientă rezolvată utilizând solicitări SQL simple și care nu necesită pre-analiză a informațiilor de intrare. Prin urmare, ne vom concentra doar pe limitările formularului (8).

Rețineți că, în modelul matematic al sistemului, obiectul citit este "legat" nu la o audiență specifică a comportamentului, ci la unele audiențe multiple. Alinierea numerelor specifice de audiență se efectuează după rezolvarea sarcinii. Limitările formularului (8) au sens numai atunci când se intersectează seturile de audiențe. În modelul matematic al sistemului, se propune luarea în considerare a tuturor perechilor intersectați unice sub formă de restricții. Numărul acestor intersecții poate fi mare, ceea ce poate duce la un număr mare de restricții suplimentare care afectează negativ viteza algoritmilor de optimizare. Cu toate acestea, este posibil să se reducă semnificativ numărul de restricții suplimentare.

Luați în considerare cazul unui aranjament liniar al seturilor de intersectare (vezi figura 2.).

Fig.2. Seturi intersectate liniare

În cazul unui astfel de set de audiențe pentru efectuarea claselor numărul total Limitările formularului (8) vor fi N-1, unde n este numărul de seturi. Aranjamentul descris mai sus al seturilor de intersectare poate fi numit liniar, deoarece în același timp N seturile de intersectare sunt amplasate în linie. Puteți lua în considerare cazul atunci când seturile se transformă reciproc într-o manieră arbitrară (vezi figura 3.).

Fig.3. Seturi de intersectare arbitrar

Numărul limitărilor formularului (8) în acest caz poate fi redus prin efectuarea formării acestor restricții prin analogie cu cazul unui aranjament liniar al seturilor. Pentru a face acest lucru, este necesar să presupunem că, de exemplu, seturile B și D intersectarea cu A sunt un set, determină zona de intersecție a unui astfel de set cu un set A, după care desfășoară aceleași acțiuni cu zona de intersecție rezultată.

Citiți mai multe despre acest lucru, p. 210.

2.4. Rezultatele programului

Odată cu implementarea practică a sistemului, a fost acordată o atenție deosebită sarcinii de a scrie sistemul "core" - metode de rezolvare a problemei și procedurilor de formare a restricțiilor. Deoarece sarcinile nu au fost stabilite pentru a scrie un produs comercial complet, partea de interfață a fost scrisă în scopul testarea nucleului și determinarea limitelor aplicabilității algoritmilor, prin urmare include minimul funcționalității și nu conține predefiningul de intrare module.

Miezul sistemului și partea de interfață au fost scrise pe Delphi 6.0. Metodele de rezolvare și algoritmi pentru formarea de restricții sunt scrise utilizând tehnologii orientate pe obiecte, ceea ce le va permite să le încaprezise cu ușurință în alte modificări ale sistemului fără a încălca integritatea interacțiunii diferitelor algoritmi. Textul obiectelor de rezolvare a problemelor este prezentat în Anexa 2. Baza de date a fost implementată pe Oracle 8i DBMS, cererile către acesta sunt efectuate în PL / SQL.

Datele sursă ale sarcinilor sunt înregistrate în tabelele bazei de date utilizând formularele solicitante. Una dintre aceste forme este prezentată în fig. 3.

Fig.3. Forma datelor inițiale

Datele obținute ca rezultat al rezolvării problemei nu sunt suficiente pentru a emite programul clasei imediat după rezolvarea problemei, prin urmare, a fost scris modulul de post-procesare a datelor. Calendarul final al clasei este afișat ca o masă, un exemplu despre care se vede. patru.

Smochin. 4. Exemplu de program de clase

Algoritmii de rezolvare a problemelor au fost testate pe diverse eșantioane ale datelor sursă. Testarea a fost efectuată pe un computer cu un procesor Intel Pentium 350 MHz, Oracle 8i DBMS a fost instalat pe un server cu două procesoare: 2 CPU Intel Pentium II 350 MHz, RAM 384 MB; O capacitate de legătură de până la 100 Mbps a fost utilizată ca un canal de comunicare. Ca date sursă de testare, ca date reale privind grupurile, profesorii și subiectele care pot fi citite de învățarea de seară a CHSU pentru 1999/2000 anii academiciși datele sursă formate aleatoriu (subiecții care pot fi citite au determinat aleatoriu audiența pentru efectuarea claselor). În medie, a fost produsă de la 5 la 10 teste pentru fiecare dimensiune a datelor sursă. Ca urmare, datele prezentate în tabelul 2. din Figura 5. Un grafic al timpului mediu de rezolvare a problemei de la numărul de elemente care pot fi citite și numărul de grupuri.

2.5. Analiza rezultatelor obținute

Analizarea datelor obținute se pot face câteva concluzii cu privire la funcționalitatea algoritmilor de soluții și a modelului matematic, deficiențele și aplicațiile acestora.

În primul rând, modelul matematic utilizat conține limitări "extra", existența căreia se datorează unui model integer liniar, pe lângă aceasta, fiecare citit pe flux (fluxul poate consta dintr-un grup) este plasat în conformitate cu 12 (pentru Cazul de evenimente) de variabile, fiecare dintre acestea fiind o variabilă booleană. În al doilea rând, timpul de rezolvare a problemei crește brusc cu creșterea datelor de intrare. Acest lucru se datorează unei creșteri puternice a numărului de variabile și a restricțiilor din model, ca urmare a creșterii dimensiunii matricei și, în consecință, timpul de rezolvare a problemei. În al treilea rând, sarcina matematică formalizată acoperă numai sarcina de a întocmi programul pentru studenții de formare de seară fără a ține seama de tranzițiile dintre corpul. Contabilitate cerințe suplimentare Acesta va crește numărul de limitări ale problemei, care va afecta negativ viteza algoritmilor de soluție.

Atragem atenția asupra diferenței în creștere dintre valoarea minimă și medie a problemei de rezolvare a problemei ca dimensiunea problemei crește. Această diferență corespunde modului în care "reușită" (cea mai apropiată optimă) a găsit soluția de bază admisibilă inițială a problemei. Prin urmare, timpul de rezolvare a problemei poate fi redus semnificativ, "bine" găsirea unei baze inițiale admisibile. Pentru a căuta o astfel de soluție, este mai bine să utilizați algoritmi eurouri și descompuneri.


Concluziile în timpul lucrărilor au fost construite Modelul matematic al programului de la Universitatea pentru cazul unei forme de seară de formare fără tranziții între carcase, au fost selectate metode de rezolvare a sarcinii și un model pentru stocarea datelor sursă ale Sarcina a fost dezvoltată. Modelul de stocare a datelor sursă, modelul modelului de formalizare matematică și metodele de soluție au fost implementate ca module software. Viteza de funcționare a algoritmilor a fost testată pe seturile eterogene de date sursă, ca rezultat al posibilităților și domeniilor de aplicare a algoritmilor.

Pe baza rezultatelor testelor, sa constatat că, prin viteza de funcționare, algoritmii de rezolvare a problemelor sunt extrem de dependenți de volumul informațiilor de intrare și de soluția inițială de bază permisă și, prin urmare, semnificativ inferioară a nivelului euristic și de decuplă. Dar în cazul soluției euristice (soluții), optimitatea (sau realizarea unui maxim global) poate fi dovedită numai cu căutări complete pentru toate opțiunile posibile (este clar că în acest caz va fi timpul de deschidere al algoritmului Foarte mare), prin urmare, iterațiile algoritmilor eurouri sunt terminate la atingerea unei valori maxime (nu pot spune, local sau globale). Soluția unui astfel de algoritm poate fi aproape de optimă, dar nu optimă. În acest caz, pentru a obține un maxim global, este posibil să se utilizeze o metodă de soluție luată în considerare în lucrare, deoarece optimul poate fi realizat în mai multe iterații ale metodelor de soluție descrise.


LITERATURĂ

1. LAGOSA B.A., Petropavlovskaya A.V. Un complex de modele și metode de optimizare a programului de clase în universitate // economie și mat. Metode. 1993. T. 29. voi. patru.

2. HU T. Programarea și firele în rețele. M.: MIR, 1979.

3. Lebedev S.S. Modificarea metodei Benders Parțial Programare liniară // Economie și Mat. Metode. 1994. T. 30. voi. 2.

4. Lebedev S.S., Zaslavsky A.a. Folosind o metodă specială de ramuri și frontiere pentru a rezolva o problemă de transport generalizată integrală // economie și mat. Metode. 1995. T. 31. voi. 2.

5. ZASLAVSKY A.A. Folosind strategia de strategii de variabile din sarcini comune Programarea liniară integer // economie și mat. Metode. 1997. T. 33. Problema 2.

6. Lebedev S.S. Privind metoda de a ordona indexarea programării liniare integrate // economie și mat. Metode. 1997. T. 33. Problema 2.

7. Lebedev S.S., Zaslavsky A.a. Metoda metodă modificată pentru programarea sarcinilor booleene // economie și mat. Metode. 1998. T. 34. voi. patru.

8. ZASLAVSKY A.A. Metoda combinată pentru rezolvarea problemelor de rucsac // economie și mat. Metode. 1999. T. 35. voi. unu.

Apendicele 1. Capabilitățile produselor software ale sistemelor de programare.

DINautorul de stare-2 + este destinat pregătirii rapide și convenabile a programelor de clase și le însoțește în timpul întregului an școlar.
DARSecond-2 + - sistem universal. Există mai multe versiuni ale programului conceput pentru orice instituții de învățământ:

Execuție și specializată (matematică, lingvistică etc.) a școlilor, a liceelor, a gimnazii;

Școli tehnice, colegii și colegii;

Universități cu o clădire educațională;

Universități cu mai multe clădiri educaționale (luând în considerare deplasarea între carcase).

DARAl doilea-2 + vă permite să faceți posibilă permisiunea de a face posibilă permisiunea de a face posibilă automatizarea cu ușurință a provocărilor programului. Sistemul ajută la oprirea cu ușurință, Kopect și apăsați sub formă de documente convenabile și vizuale:

Clase de clasă Pracript (grupuri de formare);

Operațiuni ale portelor;

Calendarul publicului (dulapuri);

Planuri educaționale;

Tarifar.

DARAl doilea-2 + are un design de porumbei și DPU-uri. Programul este destul de ușor de învățat. Există un manual detaliat, care descrie toate posibilitățile și modalitățile de a lucra cu programul.
P.rogramul funcționează pe orice computere compatibile IBM, începând cu 486DX cu RAM de 4 MB (și mai mare), durează aproximativ 1 MB pe hard disk. Sistem de operare: MS DOS sau Windows 95/98.
ÎNfire de lucru depinde de mărimea instituției de învățământ și de puterea calculatorului. Calculul complet și optimizarea programului școlar de dimensiuni medii (30 de clase, 60 de cadre didactice, două schimburi) merge aproximativ 15 minute pe un computer CELERON-400.

P.rograma se caracterizează printr-un algoritm unic și foarte puternic pentru construirea și optimizarea programului. Programul automat rezultat practic nu necesită rafinament manual, adică, chiar și cu restricții foarte complexe și dure, toate clasele posibile sunt plasate automat. Dacă există contradicții insolubile în datele sursă, acestea pot fi detectate și eliminate utilizând o unitate de analiză specială.

DARAl doilea-2 + permite:

Optimizați "Windows" în program;

Luați în considerare intervalul necesar de zile / ore atât pentru clase, cât și pentru profesori;

Optim pentru a face clasele de clasă (audiențe), ținând cont de caracteristicile claselor, articolelor, plexibilităților și capacitatea dulapurilor;

Luați în considerare fericirea și dorințele atât a specialiștilor cu normă întreagă, cât și a membrilor part-time;

Ușor de conectat ("Sprink") mai multe clase (grupuri de antrenament) în fluxurile de contacte ale oricăror clase;

Cursurile de pagină precese de limbaj prieten, cultură fizică, TPU, informatică (și orice alte subiecte) pentru orice număr de subgrupuri (până la zece!);

Introduceți (în afară de principalii preoți) Pompe speciale și electives;

Optimizați uniformitatea și forța de muncă a programului.

2. Sistemul "Programul" Ver 4.0 Moscova - Lintech

Este necesar să observăm imediat că programul "program" se concentrează pe compilarea programului școlar, utilizarea universității și a colegiilor este posibilă numai cu unele rezerve. Programarea se face în cadrul condițiilor condițiilor stabilite în etapele inițiale de introducere a datelor. Lista completă a condițiilor posibile este prezentată mai jos:

- DESPREnumărul maxim de lecție este legat - adică Numărul de lecții, maxime admisibil pe zi;

- R.distribuția avomerității încărcăturii profesorilor între zilele de programare;

- R.avtomeritatea încărcăturii clasei de clase între zilele programului;

- LAferestrele ONLOP în programul profesorilor;

- P.rogramul ia în considerare faptul că clasele se pot uni în mod arbitrar (clasele pot fi combinate în fluxuri sau zdrobiți în subgrupuri mai mici, iar aceste subgrupuri, la rândul lor, pot servi ca bază pentru combinarea în grupuri mai mari. Exemplu: la școală № 1859 Există 2 clase de senior, dar în fiecare dintre aceste clase există două subgrupe pe specializare, clasele de învățământ general sunt efectuate imediat pentru întreaga clasă, iar elementele de specializare sunt separat. Dar, deoarece subgrupurile de specializare sunt prea mici , iar profesorii lipsesc, în conformitate cu unele subiecte. Subgrupurile 11a și 11b pot fi, de asemenea, combinate (de exemplu, pe Inmose.) - complică asigurarea continuității programului de clase (este necesar pentru a asigura continuitatea programului pentru fiecare dintre subgrupuri);

- N.de câteva schimbări - în acest caz, clasele individuale trebuie să vină mai târziu decât primele grupuri de schimbare, în plus, este complicat de controlul ferestrelor în programul profesorilor, dacă există profesori care lucrează în ambele schimburi - în acest caz, În programul acestor profesori, clasele lor trebuie să "tragă" în jurul valorii de trecere a trecerii;

- W.cuvântul profesorilor obligatoriu la public - profesorii individuali au "publicul lor în care se desfășoară toate clasele lor;

- N.anise "Floating" Shift - când timpul de pornire al primei lecții nu este definitiv definit, pentru că Se formează dinamic, în funcție de eliberarea claselor asociate, profesorii, publicul;

- LAonTROL Obiectivul de introducere a programului (clasă, profesor, audiență) la intervalul de lucru admisibil (în cartea de limită temporară). De exemplu, pentru un profesor în harta temporară de restricție, zilele metodologice sunt de obicei indicate, uneori, unele numere de lecție - pe scurt, aceste poziții sunt indicate că instalarea claselor cu participarea acestui obiect este imposibilă;

- N.aisia de articole combinate - tip "INM / Informatică" "Informatică / Muncă" etc. - când clasa este împărțită în subgrupuri;

- W.cuvântul obiectelor obligatorii către publicul - efectuarea claselor pe subiecții individuali este posibilă numai într-o audiență strict definită sau într-o listă de audiențe (educație fizică, muncă etc.);

- DINlăsând programul, luând în considerare circumstanțele, că în unele subiecte nu vine o clasă întreagă, ci subgrupul său. Că un alt subgrup în acest moment nu a mers la școală, astfel de clase pot fi puse strict numai primele sau ultimele lecții din programul de clasă;

- “ÎNpentru a păstra paralelele "- Pentru unii profesori, este necesar să se țină seama de faptul că formarea pe termen lung este necesară pentru clase (de exemplu, clase de chimie), caz în care programul de zi al profesorului încearcă să livreze blocuri paralele, pentru Exemplu, primele clase, apoi 7 etc., sau când distribuie între zile, diseminează clase în diferite paralele pentru zile diferite;

- ȘInordod, la elaborarea unui program, este necesar să se țină seama de faptul că în unele subiecte, programul este cunoscut în avans - în acest caz, astfel de clase sunt introduse ca incoerente (fixe);

- LAontropol a interzis combinațiile de obiecte pe un program de clasă - de exemplu, este nedorit pentru " educație fizică"Și" Munca "a fost efectuată în aceeași zi;

- ÎNÎndeplini condițiile secvențelor necesare de obiecte - atunci când este necesar să se asigure instalarea de grupuri de clase în care clasele trebuie să treacă într-o anumită secvență, de exemplu, astronomia fizică etc.;

- N.clasele de anason legate de audiențe - cea mai mare parte a claselor pentru astfel de clase se desfășoară în acest public, cu excepția acestor clase pentru care este necesară o audiență specializată;

- N.capetele aranjamentului clasei pe subiecte individuale de două clase într-un rând ("cupluri", "scriitori"), iar această condiție poate fi rigidă (în nici un caz să spargă "scriitorii" claselor) și poate fi preferată (Dacă este imposibil să mutați două clase, "scânteia" poate fi ruptă);

Circumstanța este luată în considerare când, la unii subiecți, alinierea este permisă numai de ocupații unice.

3. Metodistul "sistemului"

Produse în două versiuni.

Versiunea virtuală.

Eliberați fără un modul automat de compilare a programului. Caracteristici Versiunea Virtual:

Căutare rapidă în listele de profesori, audiențe, clase (grupuri), discipline, incinte;

Obținerea informațiilor de referință pentru fiecare element de listă găsit (capacitate de audiență, toate aud. Cazuri x, adresa și tel. Profesor, lista departamentelor, numărul de ore pe disciplină, Încărcarea studiului. profesor și mn. dr.);

Controlul și posibilitatea redistribuirii orelor între săptămâni pe orice cont de disciplină. grupuri;

Verificarea automată a eventualelor erori de introducere a datelor (respectarea sumei totale de ore și de tipul de clase, neasigurarea cadrelor didactice în subgrupuri, bugetul timpului grupului și profesorului, inconsecvența ceasului în grupele de flux și Mn. Alte );

Abilitatea de a sistematiza stocarea (și căutarea rapidă) (nu este obligatorie pentru compilarea unui program) de informații: fotografii ale profesorilor, curatorii grupurilor de formare ( liderii răcoritoare), date privind reprezentanții comitetelor părintești, posturi, grade științifice și titluri responsabile pentru public, ...

Primirea rapidă a informațiilor complete privind combinația de factori (toate grupele de flux, toate disciplinele profesorului X, indicând sarcina pe săptămâni și tipurile de clase, pe care disciplinele le-au permis să le desfășoare în clasa de calculatoare, dorințe personale pentru Ocupații de orice profesor, o listă de date festive în grupul sirian și Mn. dr.);

Abilitatea de a vizualiza, tipări și edita un program finalizat cu verificarea modificărilor în corectitudinea modificărilor (AUD, pre-, grupuri / subgrupuri, ...);

În orice moment, puteți comanda un modul de formare a programului pentru datele pregătite;

Programul este format pe computerul dvs. cu capacitatea de a schimba setările, controlul, modificările etc. (fără posibilitatea schimbării orelor, disciplinelor, profesorilor, ...);

În cazul în care necesitatea unui minor (până la 10%) modificări ale datelor sursă (erori, sunt detectate adăugiri bruște), este posibilă re-comandă modulul de formare a programului pentru o mică taxă;

În orice moment puteți merge la versiunea standardului;

Metodist - standard.

În plus față de capabilitățile virtuale, include:

Modul automat de compilare a programului automat;

Distribuția și controlul sarcinii de instruire;

Structurarea unei secvențe a disciplinei (prelegeri - 2 ore, practice - 4 ore, laborator ...);

Elaborarea unui program pentru orice tip de instituție de învățământ: săptămânal sau semestru (de la 1 la 23 de săptămâni);

Contabilitate pentru combinarea grupurilor (claselor) în fluxuri și / sau partiționarea acestora în subgrupuri;

Consolidarea audiențelor speciale (clase de calculator, categorii, piscină, ...);

Contabilizarea angajării cadrelor didactice și a publicului (partiționarea, utilizarea unei baze de formare comună);

Contabilitate pentru timpul de tranziție între corpuri;

Weekend-urile și sărbătorile sunt comune și pentru grupuri de formare individuale (sărbătorile naționale, religioase, publice);

Specificând motivele pentru "numirea nereușită" a claselor (ocupate de audiență, profesorul este numit în ziua nedorită a săptămânii), cu posibilitatea corecției lor "manuale";

Posibilitatea multiplă "îmbunătățire" automată a programului;

Posibilitatea de a schimba semnificația factorilor luați în considerare în pregătirea programului;

Posibilitatea introducerii priorităților profesorilor - grade ale dorințelor lor individuale;

Restricții privind funcționalitatea "Metodă":

Mai multe programe sunt limitate la numărul maxim de lecții pe zi - 7;

Clasele încep întotdeauna cu prima lecție / pereche (dacă este necesar, este posibil să se numească prima pereche de "clase gratuite");

Timpul de schimbare nu este luat în considerare (de exemplu, pentru a verifica posibilitatea tranziției între corpuri);

"Nivelul complexității" clasei pentru distribuția lor rațională a săptămânii nu este luată în considerare (deși este posibil să o faceți indirect);

Durata ocupațiilor este constantă (este imposibil să elaboreze un program timp de 30 de minute. Lecție la tinerii și 45 de minute. - În liceu).

Apendicele 2. Listarea soluțiilor modulului software pentru a rezolva compilarea programării automate

type MyArray \u003d Gama de masterat real;

Myarray_x \u003d gamă de lentă;

procedură Step_Dual_Simplex (var A: MyArray; M, N, I1, J1: Integer);

(produce o etapă a metodei duale simplex,

element de plumb - a)

var I, J: Integer;

b, B1: Gama reală;

(B, M); Setlength (B1, N);

pentru i: \u003d 0 la m-1 do b [i]: \u003d a;

pentru i: \u003d 0 la n-1 do b1 [i]: \u003d a;

pentru i: \u003d 0 la m-1 fac

pentru J: \u003d 0 până la n-1 începe

dacă (i \u003d i1) și (J \u003d J1), apoi a: \u003d 1 / b

dacă (i \u003d i1), apoi a: \u003d B1 [J] / b

dacă (J \u003d J1), apoi a: \u003d - B [i] / b

altfel A: \u003d A-B [I] * B1 [J] / B;

pentru i: \u003d 0 până la n-1 face a: \u003d 0; A: \u003d - 1;

Finalizarea (b); finalizarea (B1);

funcție Lexikogr_Few (A: MyArray; M, N: Integer; I, I1: Integer): Boolean;

(Prima coloană lexicografică mai mică decât cea de-a doua)

Lexikogr_few: \u003d FALSE;

În timp ce (a \u003d a) și (j

funcție Find_Nu (A: MyArray; M, N: Integer; I, I1: Integer): Longint;

(I - indicele coloanei minime din punct de vedere lexicografic)

În timp ce (a \u003d a) și (j

dacă (J 0), apoi găsiți_nu: \u003d rotund (int (A / A));

procedură Full_Integer_simplex (var x: myarray_x; A: MyArray; M, N: Integer);

(Algoritmul complet întreg al problemei integerului liniar

programare,

a se vedea Hu T. "Programare și fire întregi în rețele", p. 300-309,

a - Mărimea matricei M + N + 2 * N + 1, prin analogie:

Este necesar să găsească maximum

z \u003d - 10x1 - 14x2 - 21x3

2x1 + 2x2 + 7x3\u003e \u003d 14

8x1 + 11x2 + 9x3\u003e \u003d 12

9x1 + 6x2 + 3x3\u003e \u003d 10,

procedura returnează vectorul x, prima componentă M a cărei soluție dorită,

dacă ultima componentă a vectorului \u003d 1, atunci soluțiile nu există sau nu \u003d infinit)

var I, I1: Integer;

în timp ce (i \u003d 0) do inc (i); (Producerea șirului)

în timp ce (j \u003d 0) do inc (j);

pentru i1: \u003d 1 până la n-1 face dacă (a

coloana minimă)

(Alegerea alfa)

(Writeln (I, ", J); Readln;)

pentru i1: \u003d 1 până la n-1 do dacă a

j1: \u003d Find_Nu (A, M, N, J, I1);

dacă (J1\u003e 0) și (-A / J1\u003e ALFA), atunci alfa: \u003d - A / J1;

(Writeln (Alfa, ", I,", J); Readln;)

(Obținerea de homori cu tăiere)

pentru i1: \u003d 0 până la n-1 face dacă a\u003e 0 apoi a: \u003d rotund (int (A / AGFA))

a: \u003d Runda (INT (A / AFA));

dacă FRC (A / A / AFA) 0 Apoi A: \u003d A-1;

Step_dual_simplex (A, M, N, M-1, J);

până la (i\u003e \u003d m-1) sau (j\u003e \u003d n);

pentru i: \u003d 0 până la m-1 do x [i]: \u003d rotund (A);

dacă j\u003e \u003d n apoi x: \u003d 1 altceva x: \u003d 0;

procedură Step_one_Simplex (var A: MyArray; M, N, I: Integer);

vAR I1, I2: Integer;

(O singură etapă a unei metode întregi directe (producând un șir - ultimul

i - Coloana de producție))

pentru i1: \u003d 0 până la m-2 face a: \u003d A / A);

pentru i2: \u003d 0 până la n-1

pentru i1: \u003d 0 la m-2 do

dacă i2i apoi a: \u003d a + A * A;

procedură Direct_Integer_simplex (var x: myarray_x; A: MyArray; M, N: Integer);

(Un algoritm integer direct pentru sarcinile programului integer liniar,

a se vedea Hu T. "Programare și fire întregi în rețele", p. 344-370,

a - Matrix Dimensiune M + N + 3 * N + 1 prin analogie:

este necesar să maximizați

z \u003d x1 + x2 + x3

4x1 + 5x2 + 2x3

apoi matricea și va arăta ca:

10 1 1 1 - În această linie, primul număr este sumele maxime brute ale variabilelor non-bacon

0 0 0 0 - String Gomor Cutoff

algoritmul funcționează numai la un\u003e \u003d 0

returnează vectorul X - pe site-ul unei singure matrice soluția dorită,

dacă în ultima unitate componentă - eroare în timpul calculelor)

var I, J, I1, J1: Integer;

b, B1, B2: Gama de octeți;

(B, M); Setlength (B1, M);

pentru i: \u003d 0 până la m-1 do b1 [i]: \u003d 0;

(Verificarea condițiilor de optimitate)

pentru J: \u003d 1 până la n-1 face dacă a

În timp ce începe bool

(Căutați o coloană de producție)

bOOL: \u003d FALSE; J1: \u003d 0;

pentru J: \u003d 1 până la n-1 începe

dacă un\u003e 0 atunci

pentru i: \u003d 0 până la m-3 face a: \u003d A / A;

dacă nu bool, atunci începe J1: \u003d j; bool: \u003d adevărat; sfârșitul altceva dacă lexikogr_few (A, M, N, J, J1)

(Căutați un șir de producție)

pentru J: \u003d 1 până la n-1

dacă un\u003e 0 atunci

pentru i: \u003d 0 la m-3 face a: \u003d A * A;