File = LonMjuk1 av Peter Lohmander Version 2003-05-02 Problemets bakgrund: -------------------- Lönsamhetskalkyler för mjukvara: Förslag till problemställning i industriell ekonomi av Morgan Johansson, c98mjo@cs.umu.se Mjukvaruindustrin är en industri där utvecklingskostnaden för en produkt är största delen av totalkostnaden för produkten. Det som försvårar analysen av mjukvaruprodukters lönsamhet är det faktum att utvecklingen delas upp i fristående moduler som återanvänds. I en produtkalkyl måste därför hänsyn tas till återanvändningen av modulerna. Ett exempel på problem: Pyttemjuk utvecklar mjukvara. De har utvecklat följande produkter: Produkt Produktbundna utgifter Moduler Inkomster för produkten 1 1000 A,B 9000 2 1500 B,C 4500 3 3000 A,D,E 12000 4 500 D,F 5500 5 500 C,F 3500 Utvecklingskostnaderna för de olika modulerna är följande: Modul Utvecklingskostnad A 4000 B 6000 C 7000 D 5000 E 3000 F 2000 Frågeställningarna är: Vilka produkter och moduler är mest lönsamma? När är en modul eller en produkt lönsam och när är den inte det? Problemställningen kan göras besvärligare då produkternas försäljningssiffror ofta är sammankopplade men det här är nog krångligt nog. (Peter Lohmander har justerat några siffror i förutsättningarna för att utföra känslighetsanalyser. Se nedan.) ----- Slut på Morgan Johanssons problemställning ----------------------- ------------------------------------------------------------------------------- ! Mjukal2; ! Peter Lohmander Version 2003-04-24; ! Tack till Morgan Johansson för relevant problemformulering.; model: [Prof] max = 8000*x1 + 3000*x2 + 9000*x3 + 5000*x4 + 3000*x5 - 4000*A - 6000*B - 7000*C - 5000*D - 3000*E - 2000*F; [_1a] x1 <= A; [_1b] x1 <= B; [_2b] x2 <= B; [_2c] x2 <= C; [_3a] x3 <= A; [_3d] x3 <= D; [_3e] x3 <= E; [_4d] x4 <= D; [_4f] x4 <= F; [_5c] x5 <= C; [_5f] x5 <= F; @bin(A); @bin(B); @bin(C); @bin(D); @bin(E); @bin(F); end ------------------------------------------------------------------- Global optimal solution found at step: 26 Objective value: 2000.000 Variable Value Reduced Cost X1 1.000000 0.0000000 X2 0.0000000 0.0000000 X3 1.000000 0.0000000 X4 1.000000 0.0000000 X5 0.0000000 0.0000000 A 1.000000 -5000.000 B 1.000000 -2000.000 C 0.0000000 1000.000 D 1.000000 5000.000 E 1.000000 3000.000 F 1.000000 -3000.000 Row Slack or Surplus Dual Price PROF 2000.000 1.000000 _1A 0.0000000 0.0000000 _1B 0.0000000 8000.000 _2B 1.000000 0.0000000 _2C 0.0000000 3000.000 _3A 0.0000000 9000.000 _3D 0.0000000 0.0000000 _3E 0.0000000 0.0000000 _4D 0.0000000 0.0000000 _4F 0.0000000 5000.000 _5C 0.0000000 3000.000 _5F 1.000000 0.0000000 ------------------------------------------------------------------- (Variant coef för x2 i målfunktionen = p2 = 4001) ! Mjukal2; ! Peter Lohmander Version 2003-04-24; ! Tack till Morgan Johansson för relevant problemformulering.; model: [Prof] max = 8000*x1 + 4001*x2 + 9000*x3 + 5000*x4 + 3000*x5 - 4000*A - 6000*B - 7000*C - 5000*D - 3000*E - 2000*F; [_1a] x1 <= A; [_1b] x1 <= B; [_2b] x2 <= B; [_2c] x2 <= C; [_3a] x3 <= A; [_3d] x3 <= D; [_3e] x3 <= E; [_4d] x4 <= D; [_4f] x4 <= F; [_5c] x5 <= C; [_5f] x5 <= F; @bin(A); @bin(B); @bin(C); @bin(D); @bin(E); @bin(F); end Global optimal solution found at step: 27 Objective value: 2001.000 Branch count: 0 Variable Value Reduced Cost X1 1.000000 0.0000000 X2 1.000000 0.0000000 X3 1.000000 0.0000000 X4 1.000000 0.0000000 X5 1.000000 0.0000000 A 1.000000 -5000.000 B 1.000000 -2000.000 C 1.000000 -1.000000 D 1.000000 5000.000 E 1.000000 3000.000 F 1.000000 -3000.000 Row Slack or Surplus Dual Price PROF 2001.000 1.000000 _1A 0.0000000 0.0000000 _1B 0.0000000 8000.000 _2B 0.0000000 0.0000000 _2C 0.0000000 4001.000 _3A 0.0000000 9000.000 _3D 0.0000000 0.0000000 _3E 0.0000000 0.0000000 _4D 0.0000000 0.0000000 _4F 0.0000000 5000.000 _5C 0.0000000 3000.000 ------------------------------------------------------------------- (Variant coef för x2 i målfunktionen = p2 = 3999) ! Mjukal2; ! Peter Lohmander Version 2003-04-24; ! Tack till Morgan Johansson för relevant problemformulering.; model: [Prof] max = 8000*x1 + 3999*x2 + 9000*x3 + 5000*x4 + 3000*x5 - 4000*A - 6000*B - 7000*C - 5000*D - 3000*E - 2000*F; [_1a] x1 <= A; [_1b] x1 <= B; [_2b] x2 <= B; [_2c] x2 <= C; [_3a] x3 <= A; [_3d] x3 <= D; [_3e] x3 <= E; [_4d] x4 <= D; [_4f] x4 <= F; [_5c] x5 <= C; [_5f] x5 <= F; @bin(A); @bin(B); @bin(C); @bin(D); @bin(E); @bin(F); end Global optimal solution found at step: 26 Objective value: 2000.000 Branch count: 0 Variable Value Reduced Cost X1 1.000000 0.0000000 X2 0.0000000 0.0000000 X3 1.000000 0.0000000 X4 1.000000 0.0000000 X5 0.0000000 0.0000000 A 1.000000 -5000.000 B 1.000000 -2000.000 C 0.0000000 1.000000 D 1.000000 5000.000 E 1.000000 3000.000 F 1.000000 -3000.000 Row Slack or Surplus Dual Price PROF 2000.000 1.000000 _1A 0.0000000 0.0000000 _1B 0.0000000 8000.000 _2B 1.000000 0.0000000 _2C 0.0000000 3999.000 _3A 0.0000000 9000.000 _3D 0.0000000 0.0000000 _3E 0.0000000 0.0000000 _4D 0.0000000 0.0000000 _4F 0.0000000 5000.000 _5C 0.0000000 3000.000 _5F 1.000000 0.0000000