source: tol/doc/general/mole-spec/AnalisisDeCostesDeProduccion.tol @ 83a1cc2

1941-docker-image-to-testdevel
Last change on this file since 83a1cc2 was 83a1cc2, checked in by Víctor de Buen <vdebuen@…>, 18 years ago

Unified document directory

git-svn-id: ​https://www.tol-project.org/svn/tolp/trunk@21 be4846ae-f051-483a-831f-b64e7d08527f

  • Property mode set to 100644
File size: 5.8 KB
RevLine 
[83a1cc2]1//////////////////////////////////////////////////////////////////////////////
2// AnalisisDeCostesDeProduccion.tol
3// Análisis de costes de las diferentes opciones
4//   A- Mantener y hacer crecer el TOL actual
5//   B- Migrar todo a uno o varios lenguajes (R, bugs, ...) y adpatarlos
6//   C- Crear un nuevo lenguaje TOL2/MOLE
7//////////////////////////////////////////////////////////////////////////////
8
9//////////////////////////////////////////////////////////////////////////////
10//Estructura de definición de cada componente del coste
11//////////////////////////////////////////////////////////////////////////////
12Struct CosteOpcionStr
13{
14  Text Clave,        //Clave de la componente de coste
15  Text Concepto,     //Nombre descriptivo de la componente
16  Text Relacion,     //Relación de orden entre el coste de las opciones
17  Real CosteBaseMin, //Mínimo coste base en unidades arbitrarias
18  Real CosteBaseMax  //Máximo coste base en unidades arbitrarias
19};
20
21//////////////////////////////////////////////////////////////////////////////
22  Set DefCoste =
23// Se definen las características de cada componente de coste asignándoles de
24// forma arbitaria pero con ciertos visos de racionalidad
25//////////////////////////////////////////////////////////////////////////////
26[[
27  CosteOpcionStr("C1","DESARROLLO",   "B<<A<=C", 1.00, 2.00),
28  CosteOpcionStr("C2","IMPLANTACION", "A<=C<<B", 0.50, 1.00),
29  CosteOpcionStr("C3","APRENDIZAJE",  "B<<A<=C", 0.10, 0.30),
30  CosteOpcionStr("C4","MANTENIMIENTO","B<=C<<A", 0.50, 1.00),
31  CosteOpcionStr("C5","DEPENDENCIA",  "C==A<<B", 1.00, 2.00)
32]];
33
34//////////////////////////////////////////////////////////////////////////////
35//Estructura de definición de los factores de conversión de las relaciones de
36//orden
37//////////////////////////////////////////////////////////////////////////////
38Struct FactorRelacionStr
39{
40  Text Relacion,    //Igual:"==", Algo menor:"<=", Mucho menor:"<<"
41  Real FactorMin,   //Factor mínimo de coste adjudicado a la relación
42  Real FactorMax    //Factor máximo de coste adjudicado a la relación
43};
44
45//////////////////////////////////////////////////////////////////////////////
46  Set DefFactor =
47// Se definen las características de cada componente de coste asignándoles de
48// forma arbitaria pero con ciertos visos de racionalidad
49//////////////////////////////////////////////////////////////////////////////
50[[
51  FactorRelacionStr("==", 1.00, 1.00),
52  FactorRelacionStr("<=", 1.01, 1.25),
53  FactorRelacionStr("<<", 1.25, 2.00)
54]];
55
56//////////////////////////////////////////////////////////////////////////////
57//Estructura de los resultados de la evaluación de costes
58//////////////////////////////////////////////////////////////////////////////
59Struct EvalCosteStr
60{
61  Real CosteBase1, //Coste base de la componente C1: DESARROLLO
62  Real CosteBase2, //Coste base de la componente C2: IMPLANTACION
63  Real CosteBase3, //Coste base de la componente C3: APRENDIZAJE
64  Real CosteBase4, //Coste base de la componente C4: MANTENIMIENTO
65  Real CosteBase5, //Coste base de la componente C5: DEPENDENCIA
66  Real Alfa,       //Factor de coste adjudicado a una relación <=
67  Real Beta,       //Factor de coste adjudicado a una relación <<
68  Real CosteA,     //Coste relativo de la opción A (TOL1)
69  Real CosteB,     //Coste relativo de la opción B (R+Bugs+...)
70  Real CosteC      //Coste relativo de la opción C (TOL2/MOLE)
71};
72
73//////////////////////////////////////////////////////////////////////////////
74   Real CosteFactor(Text rel, Real alfa, Real beta)
75// PURPOSE: Establece una relación cuantitativa asociada a una relación de
76//          orden en virtud de los siguientes factores de conversión:
77//    1 : factor de coste adjudicado a una relación ==
78// alfa : factor de coste adjudicado a una relación <=
79// beta : factor de coste adjudicado a una relación <<
80//////////////////////////////////////////////////////////////////////////////
81{
82   Case(rel=="==",1,
83        rel=="<=",alfa,
84        rel=="<<",beta)
85};
86
87//////////////////////////////////////////////////////////////////////////////
88   Set SimulaCostes(Real unused)
89// PURPOSE: Simula los parámetros de la estructura de costes como uniformes
90//          dentro del rango de cada uno y evalua los costes asociados
91//////////////////////////////////////////////////////////////////////////////
92{
93  Set cb = For(1,Card(DefCoste),Real(Real k)
94  {
95    Rand(DefCoste[k]->CosteBaseMin, DefCoste[k]->CosteBaseMax)
96  });
97  Real alfa = Rand(DefFactor[2]->FactorMin, DefFactor[2]->FactorMax);
98  Real beta = Rand(DefFactor[3]->FactorMin, DefFactor[3]->FactorMax);
99
100  Real CA = 0;
101  Real CB = 0;
102  Real CC = 0;
103
104  Text ev = SetSum(For(1,Card(DefCoste),Text(Real k)
105  { 
106  //WriteLn("SimulaCostes("<<alfa<<","<<beta<<") ["<<k<<"]");
107    Text rel  = DefCoste[k]->Relacion;
108    Real base = cb[k];
109    Text Opt1 = Sub(rel,1,1);
110    Text Rel1 = Sub(rel,2,3);
111    Text Opt2 = Sub(rel,4,4);
112    Text Rel2 = Sub(rel,5,6);
113    Text Opt3 = Sub(rel,7,7);
114   
115    Real C1 = base;
116    Real C2 = C1*CosteFactor(Rel1, alfa, beta);
117    Real C3 = C2*CosteFactor(Rel2, alfa, beta);
118   
119    Text ev =
120    "Real C"+Opt1+":= C"+Opt1+" + "<<C1<<";\n"+
121    "Real C"+Opt2+":= C"+Opt2+" + "<<C2<<";\n"+
122    "Real C"+Opt3+":= C"+Opt3+" + "<<C3<<";\n";
123  //WriteLn(ev);
124    ev
125  }));
126  Set IncludeText(ev);
127  Real min = Min(CA,CB,CC);
128  Real CA := CA/min;
129  Real CB := CB/min;
130  Real CC := CC/min;
131  EvalCosteStr(Copy(cb[1]),Copy(cb[2]),Copy(cb[3]),Copy(cb[4]),Copy(cb[5]),
132               Copy(alfa),Copy(beta),
133               Copy(CA),Copy(CB),Copy(CC))
134};
135
136
137Set Simulacion = For(1,10000,Set(Real k)
138{
139  SimulaCostes(0)
140});
141
142Matrix Sim    = SetMat(Simulacion);
143Real   CosteA = MatSum(SubCol(Sim,[[ 8]]))/Card(Simulacion);
144Real   CosteB = MatSum(SubCol(Sim,[[ 9]]))/Card(Simulacion);
145Real   CosteC = MatSum(SubCol(Sim,[[10]]))/Card(Simulacion);
146
147WriteLn(
148"\nCoste Opción A = "<<CosteA+
149"\nCoste Opción B = "<<CosteB+
150"\nCoste Opción C = "<<CosteC);
151
152
153/* */
Note: See TracBrowser for help on using the repository browser.