Termelésmenedzsment
Gál Péter
4. évfolyamos közgazdász-gazdálkodási szakos hallgató
Neptun kód: GZNAOU

Bevezető

A termelésmenedzsment a menedzsment egyik funkcionális területe, melynek feladata a termelő- és szolgáltatórendszerek hatékony működtetése. A hatékony működtetés megkívánja a termelési és/vagy szolgáltatási feladat megismerését, a rendelkezésre álló erőforrások felmérését, valamint az elvégzendő feladat végrehajtásának megtervezését. A végrehajtásnak természetesen összhangban kell lennie a menedzsment gazdasági jellegű célkitűzéseivel.

Aggregált termeléstervezés

Az aggregált kifejezés arra utal, hogy ezeket a kérdéseket összevontan kell megválaszolni. A vállalat célja meghatározni az optimális termékösszetételt valamint az erőforrások felhasználásának optimális szintjét. Az aggregált termeléstervezés feladata tehát az optimális termékszerkezet, valamint a gyártáshoz felhasználható erőforrások optimális szintjének meghatározása. E feladat rendszerint matematikai programozási modellként fogalmazható meg.

Első példa

Nézzünk egy leegyszerűsített példát: Itt egy időszakban kell eldönteni, hogy két különböző termékből amit a vállalat gyárt mennyi készüljön. A döntés meghozatalánál az a cél hogy az összes legyártott termék hozama maximális legyen. Az egyes termékek hozamát a fajlagos fedezettel lehet mérni. A fajlagos fedezet nem más mint a fajlagos eladési ár és a fajlagos közvetlen költség különbsége. Ebben az esetben legyen az első termék (x) esetén 300Ft/db a fajlagos fedezet, míg a második termék (y) esetén 400Ft/db. Mind a két termék gyártásához négy darab erőforrásra van szükség. A termékek gyártásához szükséges erőforrásokat gépórában lehet mérni. De ezek is korlátozott mennyiségben állnak rendelkezésre. 

Az adott időszakban az első forrásból 500 gépóra áll rendelkezésre, a másodikból 600 gépóra a harmadikból 700 míg a negyedikből 800 gépórát használhat fel a vállalat.

Az első erőforrás segítségével az első termékből 1 darabot a másodikból pedig 3-at lehet előállítani. A második eröforással az első termékből 2-őt míg a másodikból 3-at lehet készíteni. A harmadik erőforrást felhasználva az első termékből 3-at a másodikból pedig 2-őt lehet gyártani. Valamint a negyedik erőforrás segítségével az elsöből 3 egységet a másodikból pedig egy egységet képes előállítani a vállalat.
Az erőforrásokkal kapcsolatos adatok felhasználásával a következő egyenleteket lehet felírni: 
Input: 2  X + 3  Y < 600, 3  X + 2  Y < 700, 3  X + Y < 800

Korlátozzák még a termelést a piaci korlátok. Így megvan határozva az egyes termékekből gyártandó minimális és az eladható maximális mennyiség.
Így a követelmények közé tartozik az is hogy:
X > 50 és X < 200
valamint, hogy: Y > 60  és Y < 1000

Mivel ez a termeléstervezési feladat csak két változót (x és y) tartalmaz ezért kétdimenziós koordináta rendszerben ábrázolható minden feltétel. Az erőforrás feltételek egyenlőség esetén megadják annak a területnek a hátároló egyeneseit, amelyben a feltételek kielégítő mennyiségeknek megfelelő pontok találhatóak.

<< Graphics`InequalityGraphics`

InequalityPlot[{x + 3  y ≤ 500, 
          2  x + 3  y ≤ 600,  3  x + 2  y ≤ 700,  
          3  x + y ≤ 800},  {x,  50,  200},  {y,  50,  
          1000},  
        PlotLabel -> "A lehetséges megoldások \
halmaza"];

A lehetséges megoldások pontjai közül kell kiválasztani azt amelyikhez tartozó mennyiségek maximalizálják majd a célfüggvényt. A célfüggvényt a fajlagos fedezetek segítségével lehet megadni: a f(x, y) := 300  x + 400  y összefüggést kell tehát maximalizálni.

LinearProgramming[{-300,  -400},  {{-1,  -3},  {-2,  -3},  {-3,  -2},  {-3,  -1},  {-1,  
          0},  {1,  0},  {0,  -1},  {0,  
          1}},  {-500,  -600,  -700,  -800,  -200,  
        50,  -1000,  50}]

Az optimális megoldás mindig a lehetséges megoldás tartomány csúcsán vagy élén lesz majd.
Ezért az optimális pont meghatározható úgy is hogy a két csúcspontot meghatározó korlátozó tényezőből álló egyenletrendszert megoldjuk. A célfüggvény meredeksége mindig az optimális pontot meghatározó két egyenes meredeksége között kell hogy legyen.

sol = 
      Solve[{2  x + 3  y == 600,  3  x + 2  y == 700},  {x,  
          y}]

CF = 300 x + 400 y;

CF /. sol

A célfüggvényértéke meghatározza az adott időszakra eső bevételt optimális termelés esetén.

A célfüggvényegyütthatók érzékenységvizsgálata

A célfüggvény együtthatók érzékenységvizsgálatának az a célja hogy meg tudja határozni a vállalat azt a tartományt, amelyen belül egy célfüggvény együttható változhat anélkül, hogy az optimális megoldás változna. Akkor marad az optimális megoldás változatlan ha a célfüggvény meredeksége a két optimális pontot meghatározó egyenes meredeksége között marad.

ClearAll[x, y]

A célfüggvényt reprezentáló egyenes úgy, hogy ebben a célfüggvény együtthatók paraméteresen szerepelnek:

y = -a/b x + F/b

Ebből jól látható hogy a célfüggvény együtthatók változása megváltoztatja az egyenes meredekségét. Viszont amíg a célfüggvény egyenesének meredeksége az optimális pont helyét meghatározó két egyenes meredeksége közé esik addig az optimákis megoldás helye nem változik. 
Amint a célfüggvény  változása ennél nagyobb, úgy az optimális megoldás is meg fog változni.
Tehát a: -3/2<-a/b<-2/3 két oldakú egyenlőtlenség határozza meg hogy mikor nem változik az optimum.

Ha külön vizsgáljuk a jobb és a baloldalát ennek az egyenlőtlenségnek, akkor két feltételt állapíthatunk meg: 3/2  b < a, és  a<2/3  b

ClearAll[x,  y]

InequalityPlot[{x - 3/2 y ≤ 0,  
          2/3  y - x ≤ 0},  {x, 0, 10000},  {y,  0,  10000},  
        PlotLabel -> "Az együttható \
értékek"];

A két feltétel által meghatározott célfüggvény együttható értékeket szemlélteti az ábra.

Meg kell tehát határozni hogy hogyan változik az egyik célfüggvény együttható érvényességi tartománya ha a másik együttható értéke változatlan marad.

Ha tehát az egyik együtthatót rögzítjük

Clear[a,  b]

b := 400

<< Algebra`InequalitySolve`

Akkor:

InequalitySolve[{-3/2  ≤ -a/b ≤  -2/
            3}, a]

ClearAll[a,  b]

Illetve ha:

a := 300

Akkor:

InequalitySolve[{-3/2  ≤ -a/b ≤  -2/
            3}, b]

A független érvényességi tartományok jól jelzik azokat a paramétereket amelyekre a menedzsmentnek érdemes különös figyelmet szentelnie. Hiszen egy olyan költségadat amelynek nagyon kicsi a független érvényességi tartománya, fokozott figyelmet igényel, mert már kis mértékű változás is szükségessé teheti a termelési terv megváltoztatását. Például egy alkatrész árának a kismértékű növekedése esetén lehet, hogy az alkatrészt felhasználó termékből már csak lényegesen kisebb termék gyártása a gazdaságos, ezért vagy a termelési tervet kell módosítani, vagy esetleg olcsóbb beszállítót kell keresni.

Második példa

Abban az esetben amikor három változó van, nehezebb a helyzet, de a Mathematica segítségével még ezt az esetet is lehet ábrázolni.

Termék erőforrás mátrix (gó/db):

E1:  X + 2  Y + 3  Z < 1500
E2:  2  X + Y + 4  Z < 2900
E3:  2  X + 3  Y + Z<1900 

Piaci korlátok (db/időszak):

X termék: 200 < X < 1000
Y termék: 100 < Y < 9999
Z termék 300<Z<2000 

Célfüggvény együtthatók (Ft/db):

Fajlagos fedezetek: Termék1: 180   Termék2: 280   Termék3: 150
A célfüggvény tehát: f(x,  y,  z) := 
        180  x + 280  y + 150  z amit maximalizálni kell.

ClearAll[x,  y]

InequalityPlot3D[{1 x + 2 y + 3 z ≤ 1500,  
          2  x + 1  y + 4 z ≤ 2900,  
          2 x + 3 y + 1 z ≤ 1900},  {x, 200, 1000},  {y, 
          100,  9999}, {z, 300,  2000},  
        PlotLabel -> "A lehetséges megoldások halmaza \
3D-ben"];

lp1 = 
      LinearProgramming[{-180,  -280,  -150},  {{-1,  -2,  -3},  {-2,  -1,  -4},  {-2,  -3,  -1},  {-1,  0,  0},  {1,  0,  0},  {0,  -1,  0},  {0,  
            1,  0},  {0,  0,  -1},  {0,  0,  
            1}},  {-1500,  -2900,  -1900,  -1000 ,  
          200,  -9999,  100,  -2000,  300} ]

A céllfüggvény:

cf1={180,  280,  150};

cf1 . lp1

Ebben az estben tehát a háromtermékes optimumot kell meghatározni. Így a célfüggvény értéke 145000 lesz.

Harmadik eset

Háromnál több termék gyártása esetén az ábrázolással problémák vannak hacsak nem élünk egyszerűsítő feltételekkel. Így tehát nem lehet szemlélteni a lehetséges megoldások halmazát. És ellenőrizni az ábrán a számolás helyességét.

Termék erőforrás mátrix (gó/db):

E1 :   1  A + 2  B + 1  C + 2  D + 1  E + 2  F + 1  G < 1500
E2 :   2  A + 1  B + 2  C + 4  D + 2  E + 3  F + 
            2  G<1000 
E3 :   2  A + 1  B + 3  C + 1  D + 4  E + 1  F + 
            1  G<1200 
E4 :   1  A + 3  B + 4  C + 4  D + 3  E + 4  F + 5  G < 1200

Piaci korlátok (db/időszak):

A  termék: 100 < A < 2000
B  termék: 10 < B < 3000
C  termék 10 < C < 2000
D  termék 21 < D < 2500
E  termék 150 < E < 3500
F  termék 10 < F < 3200
G termék 30<G<2800

Célfüggvény együtthatók (Ft/db):

Fajlagos fedezetek: Termék1: 210   Termék2: 230   Termék3: 100  Termék4: 200 Termék5: 230  Termék6: 190  Termék7: 150
A célfüggvény tehát: MAX 210  A + 230  B + 100  C + 200  D + 230  E + 
        190  F + 150  G

cf2 = {210,  230,  100,  200,  230, 190, 150};

lp2 = 
      LinearProgramming[-{210,  230,  100,  200,  230, 190, 
            150},  {-{1,  2,  1,  2,  1,  2,  1},  -{2,  1, 
              2,  4, 2,  3,  2},  -{2,  1, 3, 1, 4, 1,  
              1},  -{1,  3,  4, 4, 3,  4,  5},  {-1,  0,  
            0,  0,  0,  0,  0},  {1,  0,  0,  0,  0,  0,  
            0 },  {0,  -1,  0,  0,  0,  0,  0},  {0,  1,  0,  
            0,  0,  0,  0},  {0,  0,  -1,  0,  0,  0,  
            0},  {0,  0,  1,  0,  0,  0,  0},  {0,  0,  
            0,  -1,  0,  0,  0},  {0,  0,  0,  1,  0,  0,  
            0},  {0,  0,  0,  0,  -1,  0,  0},  {0,  0,  0,  
            0,  1,  0,  0},  {0,  0,  0,  0,  0,  -1,  
            0},  {0,  0,  0,  0,  0, 1,   0},  {0,  0,  0,  0,  
            0,  0,  -1},  {0,  0,  0,  0,  0,  0,  
            1}}, {-1500,  -1000,  -1200,  -1200,  -2000,  100,  -3000,  10,  -2000,  10,  -2500,  
          21,  -3500,  150,  -3200,  10,  -2800,  
          30}]

cf2 . lp2

A célfüggvény értéke itt is meghatározható az optimális termékösszetétel esetén.

Többtermékes vállalat esetén tehát nehéz lenne szemlélteni a termék összetételt.

Beruházási döntések

A vállalat új termelőeszközök beszerzését hitelfelvételből tudja finanszírozni. Az egyes hitelkonstrukciók értékelés fontos szempont a vállalati beruházási döntéseknél.
Több különböző lejáratú és kamatozású hitelkonstrukció áll a vállalatok rendelkezésére. Ezért a lehető legmegfelelőbb és a vállalat strukturájához illő finanszírozási megoldást kell választani.

A felvenni kivánt hiteleket lehet értékelni az alapján, hogy mekkora éves törlesztési kötelezettséget ró a vállalatra. Hiszen csak olyan hitelt szabad felvenni amelynek tudja vállalni a törlesztési kötelezettségeit a vállalat.

Egyik hitelkonstrukció 5 millió forintot ajánl. Amely 5 év lejáratú. A hitel kamata 10%-os.

Egy másik konstrukcióban 7 millió forintot kinálnak 8 évre 11%-os kamat mellett.

  Harmadik lehetőség 8 millió forint hitel  9%-os kamattal 8 év lejáratra.  

A hiteltörlesztések évvégén esedékesek. Kérdéses hogy mekkora az éves adósságszolgálat nagysága hogyha egyenlő részletekben akar törleszteni a vállalat? Hiszen általában már az első év végén el kell kezdeni törleszteni a részleteket kamattal együtt.

  Az r a kamtlábat jelöli, míg a t az évek számát. A hitel összege millió forintban értendő.

Evestorlesztes[hitel_,  r_,  t_] := 
      hitel/(1/(r/100) - 
            1/((r/100)*(((1.0 + (r/100)))^t)))

Evestorlesztes[5,  10,  5]

Evestorlesztes[7,  11,  8]

Evestorlesztes[8,  9,  8]

Evestorlesztes[#,  10,  5] & /@ Range[0, 100, 10]

Szabad források befektetése

Ha a vállalatnál szabad források keletkeznek az eredményéből rendszeresen akkor azt be tudja fektetni különböző területekre jövőbeni hozamért cserébe. A legnagyobb
biztonságot a pénznek a bankba való elhelyezése jelentheti. Ebben az esetben a kamat biztos hozamnak számít amivel előre lehet kalkulálni.
Ha folyamatosan azonos összeget helyez el a vállalat a bankban a következő összeget realizálhatja lejáratkor havi letét elhelyezés estén:

FV1[kamatlab_, ev_, osszeg_] := 
      osszeg (((((1.0 + (kamatlab/1200)))^(12  ev)) - 1)/((kamatlab/1200)))

FV1[7, 5, 100000]

FV1[7,  #,  100000] & /@ Range[10] // TableForm

TableForm[FV1[7,  #,  100000] & /@ Range[10],  
      TableHeadings -> {Automatic}]

A felsorolás az évek számának a változásával mutatja a felgyülemlő összeget.

Ha nem havi rendszereséggel helyezi el a vállalat a megtermelt nyereséget akkor megállapítható hogy nagy kamatjövedelemtől esik el hosszú távon.

FV2[kamatlab_, ev_, osszeg_] := 
      osszeg (((((1.0 + (kamatlab/100)))^ev) - 1)/((kamatlab/100)))

FV2[7, 5, 1200000]

TableForm[FV2[7,  #,  1200000] & /@ Range[10],  
      TableHeadings -> {Automatic}]

Még ilyen alacsony kamatláb mellett is az évek során jelentős veszteségeket ró a vállalatra a nem folyamatos pénzfélrerakás.

A vállalati pénzügyi elemzéseknél viszont reál pénzáramlásokkal kell számolni, tehát az infláció negatív hatását figyelembe kell venni az elemzéseknél.

A reál hozam tehát a nominális kamatláb és az inflációs ráta segítségével adható meg.

realkamat[nominal_,  
        infl_] := ((1.0 + nominal/100)/(1.0 + infl/100) - 
            1)*100

realkamat[7,  3]

realkamat[20,  3]

A havi rendszerességgel befektetett pénz hozama pedig a következőképpen alakul ebben az esetben.

FV3[nominal_, ev_, osszeg_,  infl_] := 
      osszeg (((((1.0 + (((1.0 + nominal/100)/(1.0 + infl/100) - 1)/12)))^(12  ev)) - 1)/((((1.0 + nominal/100)/(1.0 + infl/100) - 1)/12)))

FV3[7,  5,  100000,  3]

TableForm[FV3[7,  #,  100000,  3] & /@ Range[10],  
      TableHeadings -> {Automatic}]

Míg ha évente fizetik be az összegyűlt pénzt ebben az esetben még kedvezőtlenebbül alakulnak a pénzáramlások.

FV4[nominal_, ev_, osszeg_,  infl_] := 
      osszeg (((((1.0 + (1.0 + nominal/100)/(1.0 + infl/100) - 1))^ev) - 1)/((1.0 + nominal/100)/(1.0 + infl/100) - 1))

FV4[7, 5, 1200000,  3]

TableForm[FV4[7, #, 1200000,  3] & /@ Range[10],  
      TableHeadings -> {Automatic}]

Abban az esetben hogyha a egy bizonyos összeget elhelyez a bankban a vállalat érdemes figyelembe venni a járó kamat mellett, még azt is, hogy  mekkora a konverziós periódusok száma, azaz, hogy milyen gyakran tőkésedik az elhelyezett összeg. 
Ha például 1000000Ft-ot tesz a bankba a vállalat egy évre 10%-os  évi névleges kamatláb és féléves konverziós periódus mellett. Érdemes megfigyelni, hogy hogyan alakul a bevétele az év végén. 
Ebben az esetben az évi kétszeri tőkésedés miatt az effektív kamatláb magasabb lesz mint a névleges kamat.

(Subscript[r, eff])[nevleges_,  
        konverzios_] := ((((1.0 + ((nevleges/100)/konverzios)))^konverzios) - 1) 100

(Subscript[r, eff])[10,  2]

Most havi tőkésedéssel számolva nézzük meg az effektív kamat alakulását:

(Subscript[r, eff])[10,  12]

Ebben az esetben még magasabb az effektív kamat. Tehát annál jobb a befektetés minél több a tőkésítési periódúsok száma adott kamatláb mellett.

(Subscript[r, eff])[10,  #] & /@ Range[100]

(Subscript[r, eff])[10,  365]

Hiszen napi tőkésedés esetén már 10,5156% éves hozammal számolhatunk.

Abban az esetben hogyha a vállalat egy jövőbeni beruházásra spórol amelyről tudja, hogy 5 év múlva 10 millió Ft-ba fog kerülni, és évente egyenlő összeget akar félrerakni. Érdemes megvizsgálni hogy évente mekkora összeget kell így megsporólni, hogyha az éves kamatláb stabilan 20 %.
Az r a kamatlábat míg a t az eltelt időt jelzi.

felrerakando[ertek_, r_,  t_] := 
      ertek/(((((1.0 + (r/100)))^t) - 1)/(r/100))

felrerakando[1000000,  20,  5]

A képlet segítségével tehát megállapítható hogy ebben az esetben évente 134380 forintot kell megspórolnia a vállalatnak.
Ha az elöző esetben csak 7% lenne a kamat megváltozna jelentősen az összeg is:

felrerakando[1000000,  7,  5]

A képlet tehát segítséget ad a jövőben esedékes kiadások kalkulálására.

A kamat változásának függvényében a következőképpen alakul a félrerakandó összeg száma évenként.

felrerakando[1000000,  #,  5] & /@ Range[20]

Értékcsökkenésí leírás

Degresszív értékcsökkenési leírás:

Ebben az esetben az a jellemző a vállalat eszközeire, hogy a berendezések hasznos élettartamának az elején magasabb majd évről évre csökkenő összegű értékcsökkenési leírást számol el a vállalat. Hiszen a termelő eszközök értéke a használat elején nagyobb mértékben, később pedig egyre kisebb ütemben veszítenek az értékükből. Ez tehát azt jelenti, hogy az amortizáció révén visszanyert tőke "törlesztésének" üteme gyorsított lesz

Ha a vállalalat az évek száma összege módszert alkalmazza abban az esetben is gyorsított a tőke megtérülése. Ebben az esetben a leírás éves ütemét a hasznos életertam hossza határozza meg a következő összefüggés szerint.

A leírási kulcsok az évek során:

Leiras[hasznosido_,  
        eltelt_] := (hasznosido - eltelt + 
            1)/((hasznosido*(hasznosido + 1))/2)

Tehát például egy hat évig üzemképes berendezés értékcsökkenési leírása a következőképpen alakul:

Leiras[6,  #] & /@ Range[6]

kulcsok := {(2/7), (5/21), (4/21), (1/7), (2/21), (1/21)}

kulcsok*100

szazalekok := {(200/7), (500/21), (400/21), (100/7), (200/21), 
        (100/21)}

N[szazalekok]

Látható hogy az első évben a legnagyobb az értékcsökkenési leírás 28,5714% és folyamatosan csökken a leírási kulcs ami az utolsó évben már csak 4,7619%.

Egy tíz éves hasznos életartalmú eszköz esetén a következőek lesznek az évenként használatos leírási kulcsok:

Leiras[10,  #] & /@ Range[10]

Ezek százalékban kifejezve az első évtől a tizedikig:

N[100 (Leiras[10,  #] & /@ Range[10])]

Gyakorlati alkalmazás

A vállalat a következő erőforrásokkal termel:

E1: 2  X + 3  Y < 500

E2: 4  X + 3  Y < 600

E3: 2  X + 2  Y < 700

E4: 4  X + 1  Y < 800

Piaci korlátok:
X : 50 < X < 200
Y: 50<Y<1000

A  céllfüggvény:f (x,  y) := 4200  X + 1500  Y

Így az optimális a termelés a következőképpen határozható meg:

lp3 = 
      LinearProgramming[{-4200,  -1500},  {{-2,  -3},  {-4,  -3},  {-2,  -2},  {-4,  -1},  {-1,  
            0},  {1,  0},  {0,  -1},  {0,  
            1}},  {-500,  -600,  -700,  -800,  -200,  50,  -1000,  50}]

cf3 = {4200,  1500};

CF = lp3 . cf3

A vállalatnak lehetősége nyílik arra, hogy az egyik berendezését egy 20 millió forintos beruházással lecserélje, ami további 7 évre kedvezőbb termelési feltételt tesz lehetővé. Így E2: 4  X + 3  Y < 600 helyett: E2: 2  X + Y < 600 lesz.

20 millió forint hitelt 7 éves futamidőre 7%-os kamatláb mellett lehet felvenni. Mérlegelni kell, hogy érdemes-e élni a lehetőséggel.

Az éves kamatteher a következőan alakul ebben az esetben:

Evestorlesztes[hitel_,  r_,  t_] := 
      hitel/(1/(r/100) - 
            1/((r/100)*(((1.0 + (r/100)))^t)))

Evestorlesztes[20,  7,  7]

Az új berendezés segítségével a termelés optimáli szintje a következőképpen alakulna:

lp4 = 
      LinearProgramming[{-4200,  -1500},  {{-2,  -3},  {-2,  -1},  {-2,  -2},  {-4,  -1},  {-1,  
            0},  {1,  0},  {0,  -1},  {0,  
            1}},  {-500,  -600,  -700,  -800,  -200,  50,  -1000,  50}]

CF1 = lp4 . cf3

Így tehát az új berendezésnek köszönhetően a korábbi 547500 Ft havi nyereség helyett 810000 Ft nyereséget realizálhat havonta a vállalat.

Havitöbblet = CF1 - CF

Évestöbblet = 
      Havitöbblet*12

De mivel ez a nyereségbeli különbség éves szinten kisebb mint a vállalt hitel éves törlesztési nyagysága nem érdemes megvalósítani ezt a beruházázst. Hiszen legalább 3711060 éves nyereségtöbbletet kéne szerezni az új berendezéssel a vállalatnak, hogy megérje a beruházás.

Felhasznált irodalom

Koltai Tamás: A termelésmenedzsment alapjai I., (Műegyetem Kiadó, Budapest, 2001.)
Richard A. Brealey, Stewart Myers: Modern vállalati pénzügyek (Principles of Corporate Finance. 7 edition 2005, Panem Könyvkiadó, Budapest)
Illés Ivánné: Társaságok pénzügyei (Saldo Kiadó, Budapest, 1998.)
Chikán Attila: Vállalatgazdaságtan, (Közgazdasági és Jogi Könyvkiadó - Aula Kiadó, 1992.)