Užduotis

Sukurti algoritmą, kur pasirinkus pjaunamos lentos matmenis bei visas pjaunamas dalis bei jų kiekį paskaičiuotų bei nubraižytų vieną iš optimaliausių pjovimo variantų

Optimaliausias variantas tai toks variantas kurio pjovimo ilgis kuo trumpesnis, o likęs vientisas plotas - kuo didesnis

Optimalus lentos pjovimas

Komandos pavadinimas: Guzikai

Komandos nariai: Svajūnas Maksvytis IFZm-2, Tomas Juščius IFZk-2

Projekto pavadinimas: Optimalus lentos pjovimas

Projekto eiga:

Projekte naudojamos programavimo kalbos: Algoritmas bus realizuotas naudojant HTML, PHP, CSS bei JavaScript programavimo kalbomis ir jų bibliotekomis.

Pilnai veikiantis algoritmas realizuotas internetiniame puslapyje, todėl reikalavimai yra gan paprasti:

Algoritmo veikimas:


  1. Gaunami lentos ir detalių duomenys
  2. Sukuria detalių atskirus masyvus
  3. Tikrina ar bent viena detalė yra didesnė už pačią lentą
  4. Tikrina ar visoms detalėms užtenka lentos ploto
  5. Sudedamos visos detalės i bendrą vientisą masyvą
  6. Sugeneruojami kėliniai imituojantys detalių išsidėstymo eiliškumą
    • [0] = [1]
    • [2]
    • [3]
    • ...
    • [1] = [1]
    • [3]
    • [2]
    • ...
    • [2] = ...
  7. Masyvą generuojam įvertindami stačiakampio pasukimo variantus ir gaunamos kombinacijos
  8. Tikrinama kiekviena kombinacija
    1. Sukuriamas dvimatis masyvas [Y][X] imituojantis lentą, kurio pikseliai žymimi „1“ ir „0“.
    2. Paimamas kiekvienos kombinacijos narys. Iš jo paimama detalė ir jos pasukimas.
    3. Einama per virtualią lentą ir ieškoma laisvos vietos principu:
    4. Sudedamos visos kombinacijos detalės į virtualią lentą.
    5. Skaičiuojamas likęs laisvas plotas.
    6. Skaičiuoja vientisos lentos plotą.
    7. Skaičiuoja pjovimo ilgį.
    8. Kombinacijos numeris bei jos parametrai surašomi į naują parametrų masyvą.
  9. Iš parametrų masyvo gauname geriausią kombinaciją.
  10. Iš geriausios kombinacijos suformuojama lenta ir įdedamos detalės.

1 pav.


Projekto aprašymas: Algoritmas, kuris padalina pjaunamos lentos plotą į pasirinktus mažesnius plotelius(detales) ir apskaičiuoja optimaliausią pjovimo variantą.

Vartotojas pasirenka pjaunamos lentos matmenis ir norimų išpjauti detalių formą, dydį, kiekį. (2 pav.)


2 pav.


Daugiau norimų detalių galima įdėti paspaudus mygtukus „Pridėti“.

Algoritmas apskaičiuoja visus galimus pjovimo variantus ir išrenka vieną iš palankiausių. Atrinktą variantą nubraižo ekrane. (3 pav.)


3 pav.


Rezultate matomi visi surašyti matmenys, plotelių pavadinimai, likęs laisvas lentos plotas.


Panaudos atvejai (pav. 4)


Pav. 4


Sekų diagrama (pav. 5)


Pav. 5


Veiklos diagrama (pav. 6)


Pav. 6