Introducción Como es de esperarse, en ...

Anuncio
Introducción
Como es de esperarse, en toda empresa se deben realizar diversas actividades y/o
proyectos que requieren ser organizados de manera tal que podamos tener la mayor
información posible, de manera rápida y resumida, de como avanzarán las diversas
actividades del proyecto en el tiempo. Entre los métodos que nos ayudan en la
organización de proyectos encontramos el método de barras, del cual se destaca la
llamada Carta Gantt, la cual nos permite organizar de manera gráfica las actividades con
sus respectivos periodos de tiempo, aunque no nos permite conocer la precedencia entre
las mismas. Un método más efectivo es el llamado método de “ruta crítica”
(PERT/CPM), el cual además de proporcionarnos de manera gráfica la distribución,
duración y precedencias de las actividades, también nos permite saber que conjunto o
recorrido de actividades son las que no pueden tener retraso para cumplir con el plazo
del proyecto. Una gran ventaja de este método es, también, poder resolver mediante
programación lineal (con la ayuda de software) problemas de optimización dentro de la
misma malla del proyecto, tales como que actividades se pueden acelerar a costo
mínimo a fin de realizar el proyecto en un menor tiempo por ejemplo.
En particular en este informe se realizara el método PERT/CPM para obtener la malla
de un proyecto inmobiliario de cierta empresa constructora. Para esto se realizara un
diagrama de nodos y arcos (malla) con la información proporcionada por la empresa, lo
cual resulta ser la base para poder resolver mediante programación lineal los tiempos
óptimos que deben acumularse en cada nodo a fin de cumplir con el plazo. Así también
se podrá formular un modelo para acelerar ciertas actividades, según la información de
costos y tiempos de aceleración asociados a cada actividad entregada por la empresa,
logrando así minimizar costos y optimizar el tiempo, lo cual resulta un objetivo evidente
para cualquier empresa.
Para resolver los modelos de programación lineal se utilizará el software Lingo, que nos
permite ingresar la función objetivo y las respectivas restricciones al problema, de
manera rápida y sencilla, otorgandonos mediante una serie de iteraciones un resultado
rápido y confiable.
3. Crashing
A fin de optimizar el proyecto y reducir el tiempo de operación de ciertas actividades se
realiza un nuevo modelo que nos indica que actividades deben ser aceleradas a costo
mínimo para terminar el proyecto en un nuevo plazo de 50 días.
En la siguiente tabla la empresa detalla la mínima duración que puede tener cada
actividad, y su respectivo costo unitario de acelerar en 1 día cierta actividad.
El modelo consiste en minimizar la función objetivo, la cual representa el costo del
proyecto.
Modelo:
Variables.
Xi: Tiempo acumulado hasta el nodo i.
Yj: Cantidad de días a acelerar la actividad j.
Cj: Costo unitario de reducir en un día la duración de la actividad j.
Función Objetivo.
17
Mín. Z=
 Ci *Yi
j 1
El modelo en Lingo queda de la siguiente manera:
MODEL:
MIN =
100*Y1+100*Y2+200*Y3+150*Y4+0*Y5+100*Y6+110*Y7+90*Y8+130*Y9+120*Y10+70
*Y11+200*Y12+190*Y13+70*Y14+100*Y15+110*Y16+90*Y17;
X15-X1<=50;
X2>=X1+4-Y1;
X3>=X2+2-Y2;
X3>=X4;
X4>=X2+2-Y3;
X5>=X3+5-Y4;
X6>=X5+1-Y5;
X7>=X5+8-Y6;
X6>=X7;
X8>=X6+2-Y7;
X8>=X7+3-Y8;
X9>=X5+2-Y10;
X10>=X9;
X10>=X8+4-Y9;
X11>=X10+9-Y11;
X12>=X11+7-Y12;
X13>=X12+3-Y13;
X13>=X9+9-Y14;
X14>=X13+8-Y15;
X14>=X4+20-Y16;
X15>=X14+3-Y17;
X1>=0;
X2>=0;
X3>=0;
X4>=0;
X5>=0;
X6>=0;
X7>=0;
X8>=0;
X9>=0;
X10>=0;
X11>=0;
X12>=0;
X13>=0;
X14>=0;
X15>=0;
Y1<=2;
Y2<=1;
Y3<=0;
Y4<=2;
Y5<=1;
Y6<=4;
Y7<=1;
Y8<=1;
Y9<=1;
Y10<=1;
Y11<=5;
Y12<=4;
Y13<=2;
Y14<=3;
Y15<=6;
Y16<=10;
Y17<=1;
Y1>=0;
Y2>=0;
Y3>=0;
Y4>=0;
Y5>=0;
Y6>=0;
Y7>=0;
Y8>=0;
Y9>=0;
Y10>=0;
Y11>=0;
Y12>=0;
Y13>=0;
Y14>=0;
Y15>=0;
Y16>=0;
Y17>=0;
DATA:
X1 = 0;
ENDDATA
END
Los resultados que entrega son:
Global optimal solution found.
Objective value:
Total solver iterations:
Variable
Y1
Y2
Y3
Y4
Y5
Y6
Y7
Y8
Y9
Y10
Y11
Y12
Y13
Y14
Y15
Y16
Y17
X15
X1
X2
X3
X4
X5
X6
X7
X8
X9
X10
X11
X12
X13
X14
440.0000
8
Value
0.000000
0.000000
0.000000
0.000000
1.000000
0.000000
0.000000
1.000000
0.000000
0.000000
5.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
50.00000
0.000000
4.000000
6.000000
6.000000
11.00000
19.00000
19.00000
21.00000
25.00000
25.00000
29.00000
36.00000
39.00000
47.00000
Reduced Cost
10.00000
10.00000
200.0000
60.00000
0.000000
10.00000
110.0000
0.000000
40.00000
120.0000
0.000000
110.0000
100.0000
70.00000
10.00000
110.0000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
Row
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
Slack or Surplus
440.0000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
8.000000
0.000000
0.000000
0.000000
0.000000
12.00000
0.000000
0.000000
0.000000
0.000000
0.000000
5.000000
0.000000
21.00000
0.000000
0.000000
4.000000
6.000000
6.000000
11.00000
19.00000
19.00000
21.00000
25.00000
25.00000
29.00000
36.00000
39.00000
47.00000
50.00000
2.000000
1.000000
0.000000
2.000000
0.000000
4.000000
1.000000
0.000000
1.000000
1.000000
0.000000
4.000000
2.000000
3.000000
6.000000
10.00000
1.000000
0.000000
0.000000
0.000000
0.000000
1.000000
0.000000
Dual Price
-1.000000
90.00000
-90.00000
-90.00000
0.000000
0.000000
-90.00000
0.000000
-90.00000
0.000000
0.000000
-90.00000
0.000000
0.000000
-90.00000
-90.00000
-90.00000
-90.00000
0.000000
-90.00000
0.000000
-90.00000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
20.00000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
61
62
63
64
65
66
67
68
69
70
71
0.000000
1.000000
0.000000
0.000000
5.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
Análisis de resultados:
Según los resultados entregados por el software, las actividades que se deben acelerar
para cumplir con el nuevo plazo de 50 días, ocupando la mínima cantidad de recursos,
son las actividades 8 y 11, en 1 y 5 días respectivamente, lo cual se puede apreciar en
donde el resultado entrega el valor para cada variable (Variable- Value). Aunque
también el programa indica que la actividad número 5 debe ser reducida en 1 día, cabe
mencionar que realizar esta reducción no tiene incidencia en los resultados, ya que la
duración mínima de la misma es de 0 días, con un costo de reducción unitario de $0,
siendo que ésta no está en la ruta crítica, ya que posee holgura en su duración.
El costo que implica la reducción de las actividades es de $440.
La nueva malla del proyecto quedaría de la siguiente forma:
5 [11,12]
1 [18,19]
2 [4,6]
2 [4,6]
1 [0,4]
4 [0,4]
4
[6,1
1]
5
[6,1
1]
6[11,19]
8[11,19]
7 [19,21]
2 [19,21]
8 [19,21]
2 [19,21]
9 [21,25]
4 [21,25]
10[11,13]
2[23,25]
11[25,29]
4[25,29]
14 [13,22]
9 [30,39]
3 [4,6]
2 [4,6]
16 [6,26]
20 [27,47]
En donde ahora se aprecian 4 rutas críticas:
Cada número representa el número de la actividad.
1-2-4-6-8-9-11-12-13-15-17
1-3-Dummy-4-6-8-9-11-12-13-15-17
1-3-Dummy-4-6-Dummy-7-9-11-12-13-15-17
1-2-4-6-Dummy-7-9-11-12-13-15-17
12[29,36]
7[29,36]
13[36,39]
3[36,39]
15[39,47]
8[39,47]
17[47,50]
3[47,50]
Ahora para comparar las rutas críticas que se pueden apreciar a través del nuevo gráfico
con las rutas críticas que entrega Lingo directamente en los resultados, se debe analizar
minuciosamente las columnas Row y Slack or Surplus, donde Row representa
el número de la restricción que se anotó en el modelo de Lingo, de
esta manera en las restricciones que se refieran a los nodos (Xi), si
es que en la columna Slack or Surplus aparece un 0, quiere decir que
esa restricción no presenta holgura, por lo que el nodo en cuestión
sería parte de la ruta crítica.
Como se puede apreciar es mucho más directo, con la información que
entrega Lindo acerca de cuales actividades acelerar, modificar la
malla y obtener por simple inspección la(s) nueva(s) ruta(s)
crítica(s).
Ahora para saber cuanto es lo mínimo que podría durar el proyecto, y su respectivo
costo asociado debemos modificar los 2 modelos anteriores, restringiendo que la
cantidad de días a acelerar para cada actividad ahora sea el máximo valor permitido.
El programa para conocer la mínima duración queda:
MODEL:
MIN = X15-X1;
X15-X1<=50;
X2>=X1+4-Y1;
X3>=X2+2-Y2;
X3>=X4;
X4>=X2+2-Y3;
X5>=X3+5-Y4;
X6>=X5+1-Y5;
X7>=X5+8-Y6;
X6>=X7;
X8>=X6+2-Y7;
X8>=X7+3-Y8;
X9>=X5+2-Y10;
X10>=X9;
X10>=X8+4-Y9;
X11>=X10+9-Y11;
X12>=X11+7-Y12;
X13>=X12+3-Y13;
X13>=X9+9-Y14;
X14>=X13+8-Y15;
X14>=X4+20-Y16;
X15>=X14+3-Y17;
X1>=0;
X2>=0;
X3>=0;
X4>=0;
X5>=0;
X6>=0;
X7>=0;
X8>=0;
X9>=0;
X10>=0;
X11>=0;
X12>=0;
X13>=0;
X14>=0;
X15>=0;
Y1=2;
Y2=1;
Y3=0;
Y4=2;
Y5=1;
Y6=4;
Y7=1;
Y8=1;
Y9=1;
Y10=1;
Y11=5;
Y12=4;
Y13=2;
Y14=3;
Y15=6;
Y16=10;
Y17=1;
Y1>=0;
Y2>=0;
Y3>=0;
Y4>=0;
Y5>=0;
Y6>=0;
Y7>=0;
Y8>=0;
Y9>=0;
Y10>=0;
Y11>=0;
Y12>=0;
Y13>=0;
Y14>=0;
Y15>=0;
Y16>=0;
Y17>=0;
DATA:
X1 = 0;
ENDDATA
END
El resultado es:
Global optimal solution found.
Objective value:
Total solver iterations:
Variable
X15
X1
X2
Y1
X3
Y2
X4
Y3
X5
Y4
X6
Y5
X7
Y6
X8
Y7
Y8
X9
28.00000
0
Value
28.00000
0.000000
2.000000
2.000000
4.000000
1.000000
4.000000
0.000000
7.000000
2.000000
11.00000
1.000000
11.00000
4.000000
13.00000
1.000000
1.000000
8.000000
Reduced Cost
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
Y10
X10
Y9
X11
Y11
X12
Y12
X13
Y13
Y14
X14
Y15
Y16
Y17
1.000000
16.00000
1.000000
20.00000
5.000000
23.00000
4.000000
24.00000
2.000000
3.000000
26.00000
6.000000
10.00000
1.000000
Row
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Slack or Surplus
28.00000
22.00000
0.000000
1.000000
0.000000
0.000000
0.000000
4.000000
0.000000
0.000000
1.000000
0.000000
0.000000
8.000000
0.000000
0.000000
0.000000
0.000000
10.00000
0.000000
12.00000
0.000000
0.000000
2.000000
4.000000
4.000000
7.000000
11.00000
11.00000
13.00000
8.000000
16.00000
20.00000
23.00000
24.00000
26.00000
28.00000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
Dual Price
-1.000000
0.000000
-1.000000
0.000000
-1.000000
-1.000000
-1.000000
0.000000
-1.000000
0.000000
0.000000
-1.000000
0.000000
0.000000
-1.000000
-1.000000
-1.000000
-1.000000
0.000000
-1.000000
0.000000
-1.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
1.000000
0.000000
1.000000
1.000000
0.000000
1.000000
0.000000
1.000000
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
2.000000
1.000000
0.000000
2.000000
1.000000
4.000000
1.000000
1.000000
1.000000
1.000000
5.000000
4.000000
2.000000
3.000000
6.000000
10.00000
1.000000
1.000000
0.000000
1.000000
1.000000
1.000000
0.000000
1.000000
0.000000
1.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
Para conocer el nuevo costo asociado a esta nueva duración el programa a utilizar queda
de la siguiente manera:
Cuyo resultado es:
MODEL:
MIN =
100*Y1+100*Y2+200*Y3+150*Y4+0*Y5+100*Y6+110*Y7+90*Y8+130*Y9+120*Y10+70
*Y11+200*Y12+190*Y13+70*Y14+100*Y15+110*Y16+90*Y17;
X15-X1<=50;
X2>=X1+4-Y1;
X3>=X2+2-Y2;
X3>=X4;
X4>=X2+2-Y3;
X5>=X3+5-Y4;
X6>=X5+1-Y5;
X7>=X5+8-Y6;
X6>=X7;
X8>=X6+2-Y7;
X8>=X7+3-Y8;
X9>=X5+2-Y10;
X10>=X9;
X10>=X8+4-Y9;
X11>=X10+9-Y11;
X12>=X11+7-Y12;
X13>=X12+3-Y13;
X13>=X9+9-Y14;
X14>=X13+8-Y15;
X14>=X4+20-Y16;
X15>=X14+3-Y17;
X1>=0;
X2>=0;
X3>=0;
X4>=0;
X5>=0;
X6>=0;
X7>=0;
X8>=0;
X9>=0;
X10>=0;
X11>=0;
X12>=0;
X13>=0;
X14>=0;
X15>=0;
Y1=2;
Y2=1;
Y3=0;
Y4=2;
Y5=1;
Y6=4;
Y7=1;
Y8=1;
Y9=1;
Y10=1;
Y11=5;
Y12=4;
Y13=2;
Y14=3;
Y15=6;
Y16=10;
Y17=1;
Y1>=0;
Y2>=0;
Y3>=0;
Y4>=0;
Y5>=0;
Y6>=0;
Y7>=0;
Y8>=0;
Y9>=0;
Y10>=0;
Y11>=0;
Y12>=0;
Y13>=0;
Y14>=0;
Y15>=0;
Y16>=0;
Y17>=0;
DATA:
X1 = 0;
ENDDATA
END
Cuyo resultado es:
Global optimal solution found.
Objective value:
Total solver iterations:
Variable
Y1
Y2
Y3
Y4
Y5
Y6
Y7
Y8
Y9
Y10
Y11
Y12
Y13
Y14
Y15
Y16
Y17
X15
X1
X2
X3
X4
X5
X6
X7
X8
X9
X10
X11
X12
X13
X14
Row
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
4980.000
0
Value
2.000000
1.000000
0.000000
2.000000
1.000000
4.000000
1.000000
1.000000
1.000000
1.000000
5.000000
4.000000
2.000000
3.000000
6.000000
10.00000
1.000000
50.00000
0.000000
2.000000
4.000000
4.000000
7.000000
11.00000
11.00000
35.00000
8.000000
38.00000
42.00000
45.00000
46.00000
48.00000
Slack or Surplus
4980.000
0.000000
0.000000
1.000000
0.000000
0.000000
0.000000
4.000000
0.000000
0.000000
23.00000
22.00000
0.000000
30.00000
0.000000
0.000000
0.000000
0.000000
32.00000
Reduced Cost
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
Dual Price
-1.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
0.000000
34.00000
0.000000
0.000000
2.000000
4.000000
4.000000
7.000000
11.00000
11.00000
35.00000
8.000000
38.00000
42.00000
45.00000
46.00000
48.00000
50.00000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
2.000000
1.000000
0.000000
2.000000
1.000000
4.000000
1.000000
1.000000
1.000000
1.000000
5.000000
4.000000
2.000000
3.000000
6.000000
10.00000
1.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
-100.0000
-100.0000
-200.0000
-150.0000
0.000000
-100.0000
-110.0000
-90.00000
-130.0000
-120.0000
-70.00000
-200.0000
-190.0000
-70.00000
-100.0000
-110.0000
-90.00000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
Como podemos apreciar para el caso en que aceleremos lo máximo el proyecto su
duración sería de 28 días, con un costo asociado de $4980.
Documentos relacionados
Descargar