• Nem Talált Eredményt

4. Multiperiódusos P-gráf 24

4.2. Multiperiódusos P-gráf modell általános leírása

A multiperiódusos P-gráfhoz korábban csak esettanulmányok születtek, de nem létezett egy kel-lően általános leírás, ami akár egy szoftveres implementáció alapja is lehet. Ahhoz, hogy egy nem periodikus modellből multiperiódusost lehessen előállítani, az alábbi plusz információkra van szükség :

– Periódusok száma: A periódusok száma adja meg, hogy hány periódusból fog állni a modell.

– Periódusok nevei: Minden egyes periódushoz tartozik egy egyedi azonosító, vagy név.

Ez csupán a beazonosításra szolgál, a modellmegoldásban nem játszik szerepet. Az egyes periódusokra bontásban az adattagok ezzel az azonosítóval kerülnek kiegészítésre, így a későbbiekben akár szoftveresen is könnyebb lesz a végeredmény, azaz a megoldott modell értelmezése.

– Periódusok hosszai: Ahogy az almapucolós példán is látszott, nem feltétlenül egyforma hosszúak az egyes periódusok. Ez a költségek leosztásában játszhat szerepet. Mivel mo-dellezési szempontból az egyes periódushosszak egymáshoz viszonyított aránya a lényeges,

ezért külön mértékegysége nincs.

– Anyagok tulajdonságai az egyes periódusokban: Az eredeti, nem periódusos modell mellett megadható minden anyagra, hogy az egyes periódusokban milyen értéket vegyen fel az áruk és a kötelező mennyiségük minimum, valamint maximum értéke. Amennyiben ez nem kerül megadásra, úgy az eredeti modell szerinti értéket kapják.

– Kiterjesztés vagy felbontás ?: Nem mindegy, hogy az eredeti modellt kell felbontani több periódusra, avagy az eredeti modell egy periódust reprezentál, amit "többszörözni"

kell. Strukturálisan az eredmény ugyanaz, viszont előbbi esetben a műveleti egységeken megjelenő költségeket arányosítani kell a periódusok hosszának megfelelően, míg utóbbi esetben erre nincs szükség.

– Kivételek: Lehetnek olyan anyagok vagy műveleti egységek amiket nem lehet több peri-ódusra bontani. Ilyen lehet az, amikor a teljes periperi-ódusra összességében van megadva egy nyersanyag mennyisége, de az már lényegtelen, hogy az egyes periódusokban milyen mér-tékben kerül felhasználásra, ezért lehetőséget kell biztosítani arra, hogy az ilyen kivételek külön megadhatóak legyenek.

Multiperiódusos feladatoknál a megfelelő módosításokat a megoldás előtt kell végrehajtani, hiszen ezek csupán a struktúrát és annak paramétereit érintik, a megoldásuk menete viszont megegyezik egy nem-periódusos modell megoldásával. A struktúra létrehozásának általános le-írását adja a 4. algoritmusnál látható pszeudokód. A könnyebb átláthatóság miatt ez három fő részre lett bontva.

Algoritmus 4:Multiperiódusos szétbontás

input :Alap P-gráf, Periódusok tulajdonságai, Multiperiódusos adatok, Kivételek output:Multiperiódusos struktúra

1 M asolas_Beillesztes;

2 Beruhazasi_koltseg_kivezetes;

3 Kivetelek_es_T orles;

Az első fő lépésben a másolás és beillesztés játssza a fő szerepet (5. algoritmus). Kezdeti lépésként meg kell határozni, hogy melyik az a struktúrarész amit a multiperiódusosság érint. Ez minden olyan anyagra, műveleti egységre és élre igaz lesz, ami nem került korábban a kivételek közé. Mivel a modellalkotás közben a meglévő struktúra egy része törlődik, szükséges tudni, hogy melyek azok a műveleti egységek, amik a periódusos részhez tartoznak, és rendelkeznek beruházási költséggel. Ezek az elemek egy külön halmazba kerülnek gyűjtésre.

Ezt követően a periódusszámnak megfelelő alkalommal a másolásra kijelölt struktúrát hozzá kell adni a P-gráfhoz, figyelve arra, hogy ha az anyagnak volt egyéni, periódusos tulajdonság megadva, úgy azokat kapja meg. Figyelmet kell még fordítani továbbá arra, hogy a periódusos műveleti egységeknek volt-e fix költségük. Amennyiben igen, és a modellt nem "többszörözni"

kell, hanem részekre bontani (ahogyan az almapucoló példában is volt), úgy ezt a fix költséget arányosítani kell a műveleti egységeken a periódusok hosszával arányosan. A műveleti egységek

beruházási költsége külön kerül majd reprezentálásra, így az minden esetben ’0’ lesz a most beillesztett elemeknél. Mind anyagnál, mind pedig műveleti egységnél figyelni kell arra, hogy egyéni, jól megkülönböztethető azonosítóval - P-gráf esetén névvel - legyenek ellátva az elemek.

Ez általában az eredeti elem neve + "_Periodus_" + periódus neve, mivel ebből az eredeti elemet és a periódust is vissza lehet fejteni.

Algoritmus 5:Masolas_Beillesztes

1 masolandoStruktura:={M\MEx, O\OEx, E\EEx};

2 szumP eriodusHossz:=P|P er|

i=1 peri→hossz;

3 foreachoi∈O\OExdo

4 if oi.beruhazasiKoltseg >0then

5 Oberuh.hozzaad(oi.masolat());

6 end

7 end

8 foreachperi∈P erdo

9 beillesztettStruktura=P−graf.hozzaad(masolandoStruktura.masolat());

10 foreachelem∈beillesztettStrukturado

11 if elem→tipus=anyagthen

12 if peri.vanEgyeniAnyagtulajdonsag(elem)then

13 elem.tulajdonsagok=peri.anyagT ulajdonsagok(elem);

14 end

15 elem→nev=elem→nev+ ”_P eriodus_” +peri→periodusnev;

16 end

17 if elem→tipus=muveletiegyseg then

18 elem.beruhazasiKoltseg= 0;

19 if elem→f ixkoltseg >0then

20 if felbontas then

21 elem→f ixkoltseg= (elem→f ixkoltseg/szumP eriodusHossz)∗

∗peri→hossz;

A második fő lépésben a beruházási költségek kivezetését kell megvalósítani (6. algoritmus).

Ez azért szükséges, mert a beruházás csak egyszer kell, hogy megvalósuljon, az onnantól érvényes lesz az összes periódusban is. Ez egy fajta függőséget is reprezentál, vagyis, ha nem történik beruházás, úgy a periódusokban sem lesz használható a műveleti egység. Tekinthető úgy is, mint fizikai megvalósítás, a periódusokban pedig a használat jelenik meg. Ebben a lépésben a korábban kigyűjtött, beruházási költségekkel rendelkező műveleti egységeken kell végigiterálni, és mindegyiknél jelölni, hogy egy kivezetett, periódusokon kívül megjelenő elemről van szó, majd ezt hozzáadni a gráfhoz. Ezt a műveleti egységet össze kell kötni köztes anyagokon a keresztül az összes, periódusokban megtalálható használattal. Itt is figyelni kell a súlyozásra, vagyis, hogy a periódusok hosszával arányos beruházási költség terhelődjön az egyes periódusos használatokra.

Ez, a kivezetett műveleti egységet az újonnan létrehozott köztes anyagokkal összekötő él súlyán jelenik meg. Az új elemeket természetesen hozzá kell adni a gráfhoz.

Algoritmus 6:Beruhazasi_koltseg_kivezetes

7 ujEl1→suly=peri→hossz/szumP eriodusHossz;

8 ujEl2(ujanyag, O.megtalal(o→nev==oi→nev+ ”_P eriodus_” +peri→nev));

A harmadik fő lépésben a kivételek bekötését kell megvalósítani. Itt elegendő végigiterálni a kivételekhez tartozó éleken, és megvizsgálni, hogy a kezdő vagy végpontjuk a nem kivétel osztályhoz tartozik-e. Ez négyféleképpen valósulhat meg :

– A kezdőpontja olyan anyag, ami nem kivétel

– A kezdőpontja olyan műveleti egység, ami nem kivétel – A végpontja olyan anyag, ami nem kivétel

– A végpontja olyan műveleti egység, ami nem kivétel

Ezeket az éleket meg kell valósítani minden egyes periódusra is. Tehát, ha eddig volt egy él, aminek az egyik végpontja periódusos, míg másik végpontja a kivételekhez tartozó elem, úgy a kivételekhez tartozó elemből minden egyes periódusba vezetni kell egy-egy élt. A gráfhoz ezeket az új éleket hozzá kell adni, ezzel egy időben pedig az eredetit törölni. Zárásként pedig a másolandó struktúrát, vagyis az eredeti gráfból azokat az elemeket, amik nem kivételek törölni kell (7. algoritmus). Az algoritmus végrehajtása után előáll a már periódusokra bontott P-gráf modell.