Exposición y resolución del caso Multi-Min-Max en el problema de equilibrado de líneas de Montaje
Full text
ANEXO: Exposición y Resolución del caso Multi-Min-Max en el Problema de Equilibrado de Líneas de Montaje Pág. 1 Sumario SUMARIO ____________________________________________________1 A.1. PREPROCESO ____________________________________________3 A.1.1. Heurísticas creadas pero no finalmente utilizadas.........................................4 A.1.1.1. Heurística 1: procedimiento inicial.........................................................................4 A.1.1.2. Heurística 2: “H&B”, Helgeson&Birnie (sin entrelazado)......................................7 A.1.2. Heurística finalmente utilizada......................................................................10 A.1.2.1. Heurística 2: “H&B”, Helgeson&Birnie (con entrelazado)...................................10 A.1.3. Resultados finales de las heurísticas del preproceso...................................14 A.2. PROCESO_______________________________________________27 A.2.1. Procedimientos exactos................................................................................27 A.2.1.1. Modelo jerarquizado global.................................................................................27 A.2.1.2. Modelo jerarquizado sucesivo.............................................................................34 A.2.1.3. Resultados para ambos casos............................................................................88 A.2.2. Procedimientos heurísticos...........................................................................93 A.2.2.1. Heurísticas basadas en la limitación de tiempo de modelos exactos................93 A.2.2.2. Heurística independiente de los modelos exactos, adhoc...............................113
ANEXO: Exposición y Resolución del caso Multi-Min-Max en el Problema de Equilibrado de Líneas de Montaje Pág. 3 A.1. Preproceso A continuación de muestran las diferentes aplicaciones ejecutadas para el preproceso: las heurísticas creadas, se utilicen o no finalmente en la resolución del problema, sus interfases en hojas de cálculo de excel y sus respectivos códigos en visual basic. Aunque no todas las heurísticas que se van a comentar a continuación usan la totalidad de campos de la siguiente tabla, ésta representa fielmente la interfase de hoja de cálculo de excel que se usa para la ejecución del preproceso (tanto para la entrada de datos como para la salida de resultados). Cabe comentar que, en el posterior proceso, el ILOG lee directamente los datos de las hojas de cálculo en cuestión. Tarea Duracion Primera Ultima A lpha proves pes1 pes2 eTCnum dur pes 1713 TC #### 8 228 7 ma x 25 1 7 228 219125 nbprece d 36 #### 207 19 14 26 2 19 207 3152 6 nbestacio #### 207 22 13 28 3 15 207 45226 tasques 29 #### 192 27 12 29 4 5 192 5 12 3 4 #### 187 39 11 34 5 12 187 6 10 4 5 100 176 29 10 35 6 10 176 7 8 5 8 1 168 8 939 7 8 168 8 16 5 13 166 84 843 8 16 166 9 2 6 8 136 10 749 9 2 136 10 6 7 9 134 16 10 6 134 11 21 7 12 117 105 11 21 117 12 10 7 25 110 18 12 10 110 13 9 8 11 105 48 13 9 105 14 4 8 16 103 20 14 4 103 15 14 9 10 100 40 15 14 100 16 7 10 14 99 111 16 7 99 17 14 10 15 96 128 17 14 96 18 17 11 17 92 128 18 17 92 19 10 12 15 86 50 19 10 86 20 16 13 17 82 144 20 16 82 21 114 16 7651 21 176 22 9 15 19 75 172 22 9 75 23 25 16 18 66 257 23 25 66 24 14 17 20 41 271 24 14 41 25 14 18 22 34 29 25 14 34 26 219 21 3221 26 232 27 10 20 23 30 31 27 10 30 28 7 21 22 27 278 28 7 27 29 20 22 23 20 324 29 20 20 23 24 24 28 25 29 25 29 26 27 27 29 28 29 Precedencias MATRIU OBTINGUDA AMB LA MACRO Figura A.1.1. Hoja de cálculo preproceso
Pág. 4 ANEXO Esta muestra está sacada de una hoja del archivo de la heurística final entrelazada, posee la estructura básica (con alguna mínima variación según la heurística en cuestión) de los datos de entrada/salida. Como se puede observar se muestra un listado de las diferentes tareas, con sus respectivas duraciones; las precedencias; datos concretos del ejemplar del problema en cuestión: número de tareas, estaciones, precedencias; se calculan valores máximos de duraciones, también pesos y listas de candidatos para los diferentes pasos de los respectivos procedimientos; finalmente la macro muestra, en la parte inferior de la hoja de cálculo (no mostrado en la imagen) la matriz de precedencias finales globales, con unas filas complementarias a la misma que sirve, según la heurística, para apoyo del procedimiento programado. En la imagen en concreto, también se puede observar los resultados finales para cada ejemplar. No se cree oportuno graficar la totalidad de hojas ya que las de todas las heurísticas son prácticamente idénticas a excepción de pequeños detalles requeridos para las respectivas programaciones y, claro está, de los datos de entrada/salida de cada problema en concreto. A.1.1. Heurísticas creadas pero no finalmente utilizadas Para llegar al preproceso final requerido, como se explica en la memoria, se ha evolucionado desde diferentes heurísticas, programadas íntegramente en el proyecto. A.1.1.1. Heurística 1: procedimiento inicial Sub preprocés_SiS() p = Cells(3, 8).Value e = Cells(4, 8).Value t = Cells(5, 8).Value ' PRODUCTE DE LES MATRIUS I ESCRIPTURA DE LA FINAL ' f = p + 4 j = 1 aux = 1 aux2 = 1 k = 1 'inicialització matriu precedències a 0' For i = f + 1 To f + t For j = 1 To t Cells(i, j).Value = 0 Next j
ANEXO: Exposición y Resolución del caso Multi-Min-Max en el Problema de Equilibrado de Líneas de Montaje Pág. 5 Next i i = 1 While i <= p Cells(f + Cells(1 + i, 3).Value, Cells(1 + i, 4).Value).Value = 1 i = i + 1 Wend For i = 1 To t Cells(f + i, i).Value = 1 Next i Do Until aux = 0 aux = 0 For i = 1 To t For j = 1 To t If Cells(f + i, j).Value = 0 Then For k = 1 To t If Cells(f + i, k).Value = 1 And Cells(f + k, j).Value = 1 Then Cells(f + i, j).Value = 1 aux = 1 GoTo Seguir End If Next k End If Seguir: Next j Next i Loop ' SUMA DE LES FILES DE LA MATRIU ' For columna = 1 To t Cells(f + t + 1, columna).Value = Application.WorksheetFunction.Sum(Range(Cells(f, columna), Cells(f + t, columna))) Next ' PREPARACIÓ PER L'APLICACIÓ DE L'ALGORISME (ORDENACIÓ PER PREFERÈNCIES) ' jj = 1 ordre = 2
Pág. 6 ANEXO For aux = 1 To t jj = 1 While jj <= t If Cells(f + t + 1, jj).Value = aux Then Cells(ordre, 11).Value = Cells(jj + 1, 2).Value ordre = ordre + 1 jj = jj + 1 ElseIf Cells(f + t + 1, jj).Value <> aux Then jj = jj + 1 End If Wend Next aux ' TROBAR EL MÀXIM DE LES DURADES PER L'HEURÍSTICA ' Max = Cells(2, 2) For kk = 2 To t + 1 If Cells(kk, 2).Value > Max Then Max = Cells(kk, 2).Value ElseIf Cells(kk, 2).Value <= Max Then Max = Max End If Next kk Cells(2, 13).Value = Max ' HEURÍSTICA PER TROBAR UN PRIMER VALOR DE TC ' tcx = Max nest = e + 1 While nest > e td = tcx jjj = 2 nest = 1 While jjj <= t + 1 If Cells(jjj, 11).Value <= td Then td = td - Cells(jjj, 11).Value ElseIf Cells(jjj, 11).Value > td Then nest = nest + 1 td = tcx - Cells(jjj, 11).Value End If jjj = jjj + 1 Wend tcx = tcx + 1
ANEXO: Exposición y Resolución del caso Multi-Min-Max en el Problema de Equilibrado de Líneas de Montaje Pág. 7 Wend TC = tcx - 1 Cells(2, 8).Value = TC End Sub A.1.1.2. Heurística 2: “H&B”, Helgeson&Birnie (sin entrelazado) Sub proves() p = Cells(3, 8).Value e = Cells(4, 8).Value t = Cells(5, 8).Value ' PRODUCTE DE LES MATRIUS I ESCRIPTURA DE LA FINAL ' f = p + 4 j = 1 aux = 1 aux2 = 1 k = 1 ' inicialització matriu precedències a 0' For i = f + 1 To f + t For j = 1 To t Cells(i, j).Value = 0 Next j Next i i = 1 While i <= p Cells(f + Cells(1 + i, 3).Value, Cells(1 + i, 4).Value).Value = 1 i = i + 1 Wend For i = 1 To t Cells(f + i, i).Value = 1 Next i Do Until aux = 0 aux = 0 For i = 1 To t
Pág. 8 ANEXO For j = 1 To t If Cells(f + i, j).Value = 0 Then For k = 1 To t If Cells(f + i, k).Value = 1 And Cells(f + k, j).Value = 1 Then Cells(f + i, j).Value = 1 aux = 1 GoTo Seguir End If Next k End If Seguir: Next j Next i Loop ' SUMA DE LES FILES DE LA MATRIU ' For columna = 1 To t Cells(f + t + 1, columna).Value = Application.WorksheetFunction.Sum(Range(Cells(f, columna), Cells(f + t, columna))) Cells(f + t + 2, columna).Value = Cells(f + t + 1, columna).Value Next ' TROBAR EL MÀXIM DE LES DURADES PER L'HEURÍSTICA ' Max = Cells(2, 2) For kk = 2 To t + 1 If Cells(kk, 2).Value > Max Then Max = Cells(kk, 2).Value ElseIf Cells(kk, 2).Value <= Max Then Max = Max End If Next kk Cells(2, 13).Value = Max ' ESCRIPTURA DE PESOS' For i = 1 To t TiemDesp = 0 For j = i To t TiemDesp = TiemDesp + Cells(f + i, j).Value * Cells(1 + j, 2).Value
ANEXO: Exposición y Resolución del caso Multi-Min-Max en el Problema de Equilibrado de Líneas de Montaje Pág. 9 Next j Cells(i + 1, 15).Value = TiemDesp Next i For j = 1 To t TiemAntes = 0 For i = 1 To j TiemAntes = TiemAntes + Cells(f + i, j).Value * Cells(1 + i, 2).Value Next i Cells(j + 1, 16).Value = TiemAntes Next j For j = 1 To t Cells(j + 1, 24).Value = j Cells(j + 1, 25).Value = Cells(j + 1, 2).Value Cells(j + 1, 26).Value = Cells(j + 1, 15).Value Next j 'ordenació de la llista de tarees' Range(Cells(2, 24), Cells(t + 1, 26)).Select Selection.Sort Key1:=Range("Z2"), Order1:=xlDescending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal tcx = Max nest = e + 1 While nest > e nest = 0 td = tcx k = 0 ' restauració vector de preferències ' For j = 1 To t Cells(f + t + 1, j).Value = Cells(f + t + 2, j).Value Next While k < t For i = 1 To t If Cells(f + t + 1, Cells(i + 1, 24).Value).Value = 1 And td >= Cells(i + 1, 25).Value Then td = td - Cells(i + 1, 25).Value x = Cells(i + 1, 24).Value
Pág. 16 ANEXO Killbridge 7 81 79 Killbridge 6 93 92 Killbridge 5 112 111 Killbridge 4 139 138 Killbridge 3 186 184 Hahn 10 1775 1775 Hahn 9 1827 1827 Hahn 8 1918 1907 Hahn 7 2336 2336 Hahn 6 2418 2400 Hahn 5 2830 2823 Hahn 4 3699 3677 Hahn 3 4787 4787 Warnecke 29 60 56 Warnecke 28 64 59 Warnecke 27 65 60 Warnecke 26 67 64 Warnecke 25 69 64 Warnecke 24 71 66 Warnecke 23 74 69 Warnecke 22 77 73 Warnecke 21 78 76
ANEXO: Exposición y Resolución del caso Multi-Min-Max en el Problema de Equilibrado de Líneas de Montaje Pág. 17 Warnecke 20 81 79 Warnecke 19 86 84 Warnecke 18 95 87 Warnecke 17 97 92 Warnecke 16 102 98 Warnecke 15 109 104 Warnecke 14 117 111 Warnecke 13 124 120 Warnecke 12 134 130 Warnecke 11 146 142 Warnecke 10 161 155 Warnecke 9 179 172 Warnecke 8 199 194 Warnecke 7 225 222 Warnecke 6 263 258 Warnecke 5 315 310 Warnecke 4 389 387 Warnecke 3 526 516 Tonge 25 156 156 Tonge 24 156 156 Tonge 23 160 156 Tonge 22 171 162
Pág. 18 ANEXO Tonge 21 177 170 Tonge 20 183 177 Tonge 19 194 186 Tonge 18 202 196 Tonge 17 222 208 Tonge 16 228 221 Tonge 15 240 235 Tonge 14 261 251 Tonge 13 282 271 Tonge 12 299 294 Tonge 11 327 320 Tonge 10 359 352 Tonge 9 399 391 Tonge 8 447 439 Tonge 7 507 502 Tonge 6 589 585 Tonge 5 711 702 Tonge 4 883 878 Tonge 3 1171 1170 Wee-Mag 30 58 56 Wee-Mag 29 64 63 Wee-Mag 28 65 63-64
ANEXO: Exposición y Resolución del caso Multi-Min-Max en el Problema de Equilibrado de Líneas de Montaje Pág. 19 Wee-Mag 27 65 63-65 Wee-Mag 26 66 65 Wee-Mag 25 67 66 Wee-Mag 24 69 66 Wee-Mag 23 69 66-67 Wee-Mag 22 71 69 Wee-Mag 21 75 72 Wee-Mag 20 83 77 Wee-Mag 19 86 84-85 Wee-Mag 18 89 84-87 Wee-Mag 17 91 89 Wee-Mag 16 97 94 Wee-Mag 15 108 100 Wee-Mag 14 111 108 Wee-Mag 13 117 116 Wee-Mag 12 128 125 Wee-Mag 11 140 137 Wee-Mag 10 152 150 Wee-Mag 9 169 167 Wee-Mag 8 190 188 Wee-Mag 7 217 215 Wee-Mag 6 251 250
Pág. 20 ANEXO Wee-Mag 5 301 300 Wee-Mag 4 376 375 Wee-Mag 3 500 500 Arcus1 22 3691 3691 Arcus1 21 3691 3691 Arcus1 20 4057 3882 Arcus1 19 4160 4068 Arcus1 18 4486 4317 Arcus1 17 4780 4516 Arcus1 16 5000 4850 Arcus1 15 5331 5104 Arcus1 14 5615 5441 Arcus1 13 6154 5864 Arcus1 12 6665 6412 Arcus1 11 7164 7084 Arcus1 10 7826 7580 Arcus1 9 8578 8499 Arcus1 8 9636 9554 Arcus1 7 10879 10826 Arcus1 6 12707 12620 Arcus1 5 15338 15142 Arcus1 4 19076 18297
ANEXO: Exposición y Resolución del caso Multi-Min-Max en el Problema de Equilibrado de Líneas de Montaje Pág. 21 Arcus1 3 25377 25236 Lutz2 28 19 18 Lutz2 27 20 19 Lutz2 26 21 19 Lutz2 25 21 20 Lutz2 24 22 21 Lutz2 23 23 22 Lutz2 22 24 23 Lutz2 21 25 24 Lutz2 20 26 25 Lutz2 19 28 26 Lutz2 18 28 28 Lutz2 17 31 29 Lutz2 16 32 31 Lutz2 15 34 33 Lutz2 14 36 35 Lutz2 13 39 38 Lutz2 12 42 41 Lutz2 11 47 45 Lutz2 10 50 49 Lutz2 9 55 54 Lutz3 23 78 74
Pág. 22 ANEXO Lutz3 22 79 76 Lutz3 21 83 80 Lutz3 20 89 85 Lutz3 19 90 89 Lutz3 18 99 93 Lutz3 17 106 98 Lutz3 16 107 105 Lutz3 15 113 110 Lutz3 14 124 118 Lutz3 13 131 128 Lutz3 12 142 138 Lutz3 11 156 151 Lutz3 10 171 165 Lutz3 9 187 184 Lutz3 8 213 207 Lutz3 7 238 236 Lutz3 6 276 275 Lutz3 5 331 329 Lutz3 4 418 411 Lutz3 3 549 548 Mukherje 26 171 171 Mukherje 25 175 172
ANEXO: Exposición y Resolución del caso Multi-Min-Max en el Problema de Equilibrado de Líneas de Montaje Pág. 23 Mukherje 24 182 179 Mukherje 23 192 189 Mukherje 22 202 200 Mukherje 21 210 208 Mukherje 20 222 220 Mukherje 19 228 226 Mukherje 18 241 239 Mukherje 17 254 251 Mukherje 16 272 268 Mukherje 15 289 288 Mukherje 14 314 311 Mukherje 13 329 325 Mukherje 12 361 358 Mukherje 11 393 391 Mukherje 10 424 424 Mukherje 9 474 471 Mukherje 8 534 532 Mukherje 7 625 621 Mukherje 6 706 704 Mukherje 5 844 844 Mukherje 4 1054 1052 Mukherje 3 1403 1403
Pág. 24 ANEXO Arcus2 27 5733 5689 Arcus2 26 6062 5844-5856 Arcus2 25 6223 6085-6106 Arcus2 24 6417 6272-6289 Arcus2 23 6708 6551-6561 Arcus2 22 6973 6839-6859 Arcus2 21 7350 7181-7188 Arcus2 20 7617 7520-7526 Arcus2 19 8009 7920-7928 Arcus2 18 8490 8376-8377 Arcus2 17 8923 8855 Arcus2 16 9546 9412 Arcus2 15 10159 10035 Arcus2 14 10818 10747 Arcus2 13 11656 11570 Arcus2 12 12593 12534 Arcus2 11 13753 13673 Arcus2 10 15131 15040 Arcus2 9 16745 16711 Arcus2 8 18854 18800 Arcus2 7 21496 21486 Arcus2 6 25081 25067
ANEXO: Exposición y Resolución del caso Multi-Min-Max en el Problema de Equilibrado de Líneas de Montaje Pág. 25 Arcus2 5 30097 30080 Arcus2 4 37615 37600 Arcus2 3 50137 50133 Barthold 15 383 383 Barthold 14 407 403 Barthold 13 437 434 Barthold 12 472 470 Barthold 11 514 513 Barthold 10 565 564 Barthold 9 630 626 Barthold 8 706 705 Barthold 7 808 805 Barthold 6 943 939 Barthold 5 1128 1127 Barthold 4 1409 1409 Barthold 3 1883 1878 Barthold2 51 87 84 Barthold2 50 89 85 Barthold2 49 91 87 Barthold2 48 92 89 Barthold2 47 94 91 Barthold2 46 96 93
Pág. 32 ANEXO A.2.1.1.2. Macro de excel con hoja de entrada para la automatización de la resolución con ILOG Una hoja de entrada de datos estándar para el modelo jerarquizado global es como la que sigue: Tarea Duracion Primera Ultima A lpha proves pes1 pes2 eTCnum dur pes 1713 TC #### 8 228 7 ma x 25 1 7 228 219125 nbprece d 36 #### 207 19 14 26 2 19 207 3152 6 nbestacio #### 207 22 13 28 3 15 207 45226 tasques 29 #### 192 27 12 29 4 5 192 5 12 3 4 #### 187 39 11 34 5 12 187 6 10 4 5 100 176 29 10 35 6 10 176 7858 1 1688 939 7 8 168 8 16 5 13 166 84 843 8 16 166 9268 13610 749 9 2 136 10 6 7 9 134 16 10 6 134 11 21 7 12 117 105 11 21 117 12 10 7 25 110 18 12 10 110 13 9 8 11 105 48 13 9 105 14 4 8 16 103 20 14 4 103 15 14 9 10 100 40 15 14 100 16 7 10 14 99 111 16 7 99 17 14 10 15 96 128 17 14 96 18 17 11 17 92 128 18 17 92 19 10 12 15 86 50 19 10 86 20 16 13 17 82 144 20 16 82 21 1 14 16 76 51 21 1 76 22 9 15 19 75 172 22 9 75 23 25 16 18 66 257 23 25 66 24 14 17 20 41 271 24 14 41 25 14 18 22 34 29 25 14 34 26 2 19 21 32 21 26 2 32 27 10 20 23 30 31 27 10 30 28 7 21 22 27 278 28 7 27 29 20 22 23 20 324 29 20 20 23 24 24 28 25 29 25 29 26 27 27 29 28 29 Precedencias MATRIU OBTINGUDA AMB LA MACRO Figura A.2.1. Hoja de cálculo entrada datos ILOG Para la ejecución de los diferentes ejemplares de los modelos en cuestión se ha efectuado una macro de visual basic que trabaja en la siguiente hoja de cálculo y que tiene el código que a a continuación se adjunta:
ANEXO: Exposición y Resolución del caso Multi-Min-Max en el Problema de Equilibrado de Líneas de Montaje Pág. 33 BUXEY7 Z:\PFC\JERARQUITZAT\BUXEY\BUXEY_J7.mod 217,5 BUXEY8 Z:\PFC\JERARQUITZAT\BUXEY\BUXEY_J8.mod 703,797 BUXEY9 Z:\PFC\JERARQUITZAT\BUXEY\BUXEY_J9.mod 0 BUXEY10 Z:\PFC\JERARQUITZAT\BUXEY\BUXEY_J10.mod 0 BUXEY11 Z:\PFC\JERARQUITZAT\BUXEY\BUXEY_J11.mod 0 BUXEY12 Z:\PFC\JERARQUITZAT\BUXEY\BUXEY_J12.mod 0 BUXEY13 Z:\PFC\JERARQUITZAT\BUXEY\BUXEY_J13.mod 0 BUXEY14 Z:\PFC\JERARQUITZAT\BUXEY\BUXEY_J14.mod 0 921,297 TEMPS DE RESOLUCIÓ: MODEL JERARQUITZAT "BUXEY" Figura A.2.2. Hoja de cálculo salida tiempo Private Sub CommandButton2_Click() Dim i As Integer Dim j As Integer Dim ModelFile As String j = 3 For i = 1 To Cells(2, 13).Value 'S'HA DE MODIFICAR' ModelFile = Workbooks("MACROMODELBUXEY.xls").Sheets("Models").Cells(2 + i, j).Value Call ILOG2(i, j, ModelFile) Workbooks("MACROMODELBUXEY.xls").Save Next i End Sub Private Function ILOG2(fila As Integer, columna As Integer, ModelFileName As String) Dim ProvaJordi As COPLsolver Set ProvaJordi = New COPLsolver Call ProvaJordi.loadInterpretedModelFile(ModelFileName, 0) ProvaJordi.solve Sheets("Models").Cells(2 + fila, columna + 1) = ProvaJordi.getTime
Pág. 34 ANEXO End Function Las diferentes hojas de resultados tienen la siguiente apariencia: TZ TT1 47 47 TT2 47 47 TT3 47 47 TT4 47 47 TT5 46 46 TT6 46 46 TT7 44 44 TT8 TT9 TT10 TT11 TT12 TT13 TT14 Figura A.2.3. Hoja de cálculo resultados A.2.1.2. Modelo jerarquizado sucesivo A.2.1.2.1. Modelos de ILOG (extensión mod) A.2.1.2.1.1. Modelo 1 SheetConnection sheetdat("Z:\PFC\SUCCESSIU\nombre_problema\excel_enunciado_problema.xls",1) ; /*Access a la fulla EXCEL*/ SheetConnection resultats("Z:\PFC\SUCCESSIU\nombre_problema\ejemplar_problema\excel_resulta dos_ejemplar_problema.xls",0); /*Access a la fulla EXCEL*/ {int} tasca from SheetRead (sheetdat,"Tarea"); int primera[tasca] from SheetRead(sheetdat,"primera"); int ultima[tasca] from SheetRead(sheetdat,"ultima"); int duracion[tasca] from SheetRead(sheetdat,"Duracion"); int duracion_total=sum(i in tasca)duracion[i]; {int} nbprec from SheetRead(sheetdat,"nbprecedencias"); int nbprecedencias=first(nbprec); {int} tcc from SheetRead(sheetdat,"TCX"); int TCX=first(tcc); {int} nbest from SheetRead(sheetdat,"nbestacio"); int nbestacio=first(nbest);
ANEXO: Exposición y Resolución del caso Multi-Min-Max en el Problema de Equilibrado de Líneas de Montaje Pág. 35 {int} estacio=1..nbestacio; {int} carrega=1..nbestacio; range precedencias 1..nbprecedencias; /*Definicio de conjunts*/ range lasparejas 1..2; int parejas2[precedencias,lasparejas] from SheetRead(sheetdat,"Precedencias"); {int} epos[i in tasca]={es|es in estacio: es>=primera[i] & es<=ultima[i]}; /*interval d'estacions al k es pot assignar la tasca i*/ struct parella{ int tasc; int est; }; {parella} tepos={<tasc,est>|tasc in tasca & est in epos[tasc]}; var int x[tepos] in 0..1; /*Delaracio de variables*/ var int T[carrega] in 0..TCX; var int Y[estacio,carrega] in 0..1; var int Z[estacio] in 0..TCX; minimize T[1] subject to { forall(i in tasca) sum(j in epos[i])x[<i,j>]=1; forall(j in estacio) sum(i in tasca: j in epos[i])(x[<i,j>])*duracion[i]<=Z[j]; forall(i in precedencias) sum(j in epos[parejas2[i,2]])j*x[<parejas2[i,2],j>]>=sum(j in epos[parejas2[i,1]])j*x[<parejas2[i,1],j>]; forall(j in estacio) Z[j]<=T[1]; }; SheetWrite (resultats,"B2")(T[1]);
Pág. 36 ANEXO A.2.1.2.1.2. Modelo 2 SheetConnection sheetdat("Z:\PFC\SUCCESSIU\nombre_problema\excel_enunciado_problema.xls",1) ; /*Access a la fulla EXCEL*/ SheetConnection resultats("Z:\PFC\SUCCESSIU\nombre_problema\ejemplar_problema\excel_resulta dos_ejemplar_problema.xls",0); /*Access a la fulla EXCEL*/ {int} tasca from SheetRead (sheetdat,"Tarea"); int primera[tasca] from SheetRead(sheetdat,"primera"); int ultima[tasca] from SheetRead(sheetdat,"ultima"); int duracion[tasca] from SheetRead(sheetdat,"Duracion"); int duracion_total=sum(i in tasca)duracion[i]; {int} nbprec from SheetRead(sheetdat,"nbprecedencias"); int nbprecedencias=first(nbprec); {int} tcc from SheetRead(sheetdat,"TCX"); int TCX=first(tcc); {int} nbest from SheetRead(sheetdat,"nbestacio"); int nbestacio=first(nbest); {int} estacio=1..nbestacio; {int} carrega=1..nbestacio; range precedencias 1..nbprecedencias; /*Definicio de conjunts*/ range lasparejas 1..2; int parejas2[precedencias,lasparejas] from SheetRead(sheetdat,"Precedencias"); {int} epos[i in tasca]={es|es in estacio: es>=primera[i] & es<=ultima[i]}; /*interval d'estacions al k es pot assignar la tasca i*/ struct parella{ int tasc; int est; }; {parella} tepos={<tasc,est>|tasc in tasca & est in epos[tasc]}; {int} T1 from SheetRead(resultats,"TT1"); int TT1=first(T1);
ANEXO: Exposición y Resolución del caso Multi-Min-Max en el Problema de Equilibrado de Líneas de Montaje Pág. 37 int M1=TT1-(duracion_total-TT1)/(nbestacio-1); var int x[tepos] in 0..1; /*Delaracio de variables*/ var int T[carrega] in 0..TCX; var int Y[estacio,carrega] in 0..1; var int Z[estacio] in 0..TCX; minimize T[2] subject to { forall(i in tasca) sum(j in epos[i])x[<i,j>]=1; forall(j in estacio) sum(i in tasca: j in epos[i])(x[<i,j>])*duracion[i]<=Z[j]; forall(i in precedencias) sum(j in epos[parejas2[i,2]])j*x[<parejas2[i,2],j>]>=sum(j in epos[parejas2[i,1]])j*x[<parejas2[i,1],j>]; sum(j in estacio)(Y[j,1])=1; forall(j in estacio) Z[j]<=TT1; forall(j in estacio) Z[j]<=T[2]+M1*Y[j,1]; }; SheetWrite (resultats,"B3")(T[2]); A.2.1.2.1.3. Modelo 3 SheetConnection sheetdat("Z:\PFC\SUCCESSIU\nombre_problema\excel_enunciado_problema.xls",1) ; /*Access a la fulla EXCEL*/ SheetConnection resultats("Z:\PFC\SUCCESSIU\nombre_problema\ejemplar_problema\excel_resulta dos_ejemplar_problema.xls",0); /*Access a la fulla EXCEL*/ {int} tasca from SheetRead (sheetdat,"Tarea"); int primera[tasca] from SheetRead(sheetdat,"primera"); int ultima[tasca] from SheetRead(sheetdat,"ultima"); int duracion[tasca] from SheetRead(sheetdat,"Duracion"); int duracion_total=sum(i in tasca)duracion[i]; {int} nbprec from SheetRead(sheetdat,"nbprecedencias");
Pág. 38 ANEXO int nbprecedencias=first(nbprec); {int} tcc from SheetRead(sheetdat,"TCX"); int TCX=first(tcc); {int} nbest from SheetRead(sheetdat,"nbestacio"); int nbestacio=first(nbest); {int} estacio=1..nbestacio; {int} carrega=1..nbestacio; range precedencias 1..nbprecedencias; /*Definicio de conjunts*/ range lasparejas 1..2; int parejas2[precedencias,lasparejas] from SheetRead(sheetdat,"Precedencias"); {int} epos[i in tasca]={es|es in estacio: es>=primera[i] & es<=ultima[i]}; /*interval d'estacions al k es pot assignar la tasca i*/ struct parella{ int tasc; int est; }; {parella} tepos={<tasc,est>|tasc in tasca & est in epos[tasc]}; {int} T1 from SheetRead(resultats,"TT1"); int TT1=first(T1); {int} T2 from SheetRead(resultats,"TT2"); int TT2=first(T2); int M1=TT1-(duracion_total-TT1-TT2)/(nbestacio-2); int M2=TT2-(duracion_total-TT1-TT2)/(nbestacio-2); var int x[tepos] in 0..1; /*Delaracio de variables*/ var int T[carrega] in 0..TCX; var int Y[estacio,carrega] in 0..1; var int Z[estacio] in 0..TCX; minimize T[3] subject to { forall(i in tasca) sum(j in epos[i])x[<i,j>]=1; forall(j in estacio)
ANEXO: Exposición y Resolución del caso Multi-Min-Max en el Problema de Equilibrado de Líneas de Montaje Pág. 39 sum(i in tasca: j in epos[i])(x[<i,j>])*duracion[i]<=Z[j]; forall(i in precedencias) sum(j in epos[parejas2[i,2]])j*x[<parejas2[i,2],j>]>=sum(j in epos[parejas2[i,1]])j*x[<parejas2[i,1],j>]; forall(k in 1..2) sum(j in estacio)(Y[j,k])=1; forall(j in estacio) sum (k in 1..2)Y[j,k]<=1; forall(j in estacio) Z[j]<=TT1*Y[j,1]+TT2*(1-Y[j,1]); forall(j in estacio) Z[j]<=T[3]+M1*Y[j,1]+M2*Y[j,2]; }; SheetWrite (resultats,"B4")(T[3]); A.2.1.2.1.4. Modelo 4 SheetConnection sheetdat("Z:\PFC\SUCCESSIU\nombre_problema\excel_enunciado_problema.xls",1) ; /*Access a la fulla EXCEL*/ SheetConnection resultats("Z:\PFC\SUCCESSIU\nombre_problema\ejemplar_problema\excel_resulta dos_ejemplar_problema.xls",0); /*Access a la fulla EXCEL*/ {int} tasca from SheetRead (sheetdat,"Tarea"); int primera[tasca] from SheetRead(sheetdat,"primera"); int ultima[tasca] from SheetRead(sheetdat,"ultima"); int duracion[tasca] from SheetRead(sheetdat,"Duracion"); int duracion_total=sum(i in tasca)duracion[i]; {int} nbprec from SheetRead(sheetdat,"nbprecedencias"); int nbprecedencias=first(nbprec); {int} tcc from SheetRead(sheetdat,"TCX"); int TCX=first(tcc); {int} nbest from SheetRead(sheetdat,"nbestacio"); int nbestacio=first(nbest); {int} estacio=1..nbestacio; {int} carrega=1..nbestacio;
Pág. 40 ANEXO range precedencias 1..nbprecedencias; /*Definicio de conjunts*/ range lasparejas 1..2; int parejas2[precedencias,lasparejas] from SheetRead(sheetdat,"Precedencias"); {int} epos[i in tasca]={es|es in estacio: es>=primera[i] & es<=ultima[i]}; /*interval d'estacions al k es pot assignar la tasca i*/ struct parella{ int tasc; int est; }; {parella} tepos={<tasc,est>|tasc in tasca & est in epos[tasc]}; {int} T1 from SheetRead(resultats,"TT1"); int TT1=first(T1); {int} T2 from SheetRead(resultats,"TT2"); int TT2=first(T2); {int} T3 from SheetRead(resultats,"TT3"); int TT3=first(T3); int M1=TT1-(duracion_total-TT1-TT2-TT3)/(nbestacio-3); int M2=TT2-(duracion_total-TT1-TT2-TT3)/(nbestacio-3); int M3=TT3-(duracion_total-TT1-TT2-TT3)/(nbestacio-3); var int x[tepos] in 0..1; /*Delaracio de variables*/ var int T[carrega] in 0..TCX; var int Y[estacio,carrega] in 0..1; var int Z[estacio] in 0..TCX; minimize T[4] subject to { forall(i in tasca) sum(j in epos[i])x[<i,j>]=1; forall(j in estacio) sum(i in tasca: j in epos[i])(x[<i,j>])*duracion[i]<=Z[j]; forall(i in precedencias) sum(j in epos[parejas2[i,2]])j*x[<parejas2[i,2],j>]>=sum(j in epos[parejas2[i,1]])j*x[<parejas2[i,1],j>]; forall(k in 1..3) sum(j in estacio)(Y[j,k])=1;
ANEXO: Exposición y Resolución del caso Multi-Min-Max en el Problema de Equilibrado de Líneas de Montaje Pág. 41 forall(j in estacio) sum (k in 1..3)Y[j,k]<=1; forall(j in estacio) Z[j]<=TT1*Y[j,1]+TT2*Y[j,2]+TT3*(1-sum(k in 1..2)Y[j,k]); forall(j in estacio) Z[j]<=T[4]+M1*Y[j,1]+M2*Y[j,2]+M3*Y[j,3]; }; SheetWrite (resultats,"B5")(T[4]); A.2.1.2.5. Modelo 5 SheetConnection sheetdat("Z:\PFC\SUCCESSIU\nombre_problema\excel_enunciado_problema.xls",1) ; /*Access a la fulla EXCEL*/ SheetConnection resultats("Z:\PFC\SUCCESSIU\nombre_problema\ejemplar_problema\excel_resulta dos_ejemplar_problema.xls",0); /*Access a la fulla EXCEL*/ {int} tasca from SheetRead (sheetdat,"Tarea"); int primera[tasca] from SheetRead(sheetdat,"primera"); int ultima[tasca] from SheetRead(sheetdat,"ultima"); int duracion[tasca] from SheetRead(sheetdat,"Duracion"); int duracion_total=sum(i in tasca)duracion[i]; {int} nbprec from SheetRead(sheetdat,"nbprecedencias"); int nbprecedencias=first(nbprec); {int} tcc from SheetRead(sheetdat,"TCX"); int TCX=first(tcc); {int} nbest from SheetRead(sheetdat,"nbestacio"); int nbestacio=first(nbest); {int} estacio=1..nbestacio; {int} carrega=1..nbestacio; range precedencias 1..nbprecedencias; /*Definicio de conjunts*/ range lasparejas 1..2; int parejas2[precedencias,lasparejas] from SheetRead(sheetdat,"Precedencias"); {int} epos[i in tasca]={es|es in estacio: es>=primera[i] & es<=ultima[i]}; /*interval d'estacions al k es pot assignar la tasca i*/
Pág. 48 ANEXO {int} epos[i in tasca]={es|es in estacio: es>=primera[i] & es<=ultima[i]}; /*interval d'estacions al k es pot assignar la tasca i*/ struct parella{ int tasc; int est; }; {parella} tepos={<tasc,est>|tasc in tasca & est in epos[tasc]}; {int} T1 from SheetRead(resultats,"TT1"); int TT1=first(T1); {int} T2 from SheetRead(resultats,"TT2"); int TT2=first(T2); {int} T3 from SheetRead(resultats,"TT3"); int TT3=first(T3); {int} T4 from SheetRead(resultats,"TT4"); int TT4=first(T4); {int} T5 from SheetRead(resultats,"TT5"); int TT5=first(T5); {int} T6 from SheetRead(resultats,"TT6"); int TT6=first(T6); {int} T7 from SheetRead(resultats,"TT7"); int TT7=first(T7); int M1=TT1-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7)/(nbestacio-7); int M2=TT2-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7)/(nbestacio-7); int M3=TT3-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7)/(nbestacio-7); int M4=TT4-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7)/(nbestacio-7); int M5=TT5-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7)/(nbestacio-7); int M6=TT6-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7)/(nbestacio-7); int M7=TT7-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7)/(nbestacio-7); var int x[tepos] in 0..1; /*Delaracio de variables*/ var int T[carrega] in 0..TCX; var int Y[estacio,carrega] in 0..1; var int Z[estacio] in 0..TCX; minimize T[8] subject to { forall(i in tasca) sum(j in epos[i])x[<i,j>]=1; forall(j in estacio) sum(i in tasca: j in epos[i])(x[<i,j>])*duracion[i]<=Z[j];
ANEXO: Exposición y Resolución del caso Multi-Min-Max en el Problema de Equilibrado de Líneas de Montaje Pág. 49 forall(i in precedencias) sum(j in epos[parejas2[i,2]])j*x[<parejas2[i,2],j>]>=sum(j in epos[parejas2[i,1]])j*x[<parejas2[i,1],j>]; forall(k in 1..7) sum(j in estacio)(Y[j,k])=1; forall(j in estacio) sum (k in 1..7)Y[j,k]<=1; forall(j in estacio) Z[j]<=TT1*Y[j,1]+TT2*Y[j,2]+TT3*Y[j,3]+TT4*Y[j,4]+TT5*Y[j,5]+TT6*Y[j,6]+TT7 *(1-sum(k in 1..6)Y[j,k]); forall(j in estacio) Z[j]<=T[8]+M1*Y[j,1]+M2*Y[j,2]+M3*Y[j,3]+M4*Y[j,4]+M5*Y[j,5]+M6*Y[j,6]+M7*Y [j,7]; }; SheetWrite (resultats,"B9")(T[8]); A.2.1.2.1.9. Modelo 9 SheetConnection sheetdat("Z:\PFC\SUCCESSIU\nombre_problema\excel_enunciado_problema.xls",1) ; /*Access a la fulla EXCEL*/ SheetConnection resultats("Z:\PFC\SUCCESSIU\nombre_problema\ejemplar_problema\excel_resulta dos_ejemplar_problema.xls",0); /*Access a la fulla EXCEL*/ {int} tasca from SheetRead (sheetdat,"Tarea"); int primera[tasca] from SheetRead(sheetdat,"primera"); int ultima[tasca] from SheetRead(sheetdat,"ultima"); int duracion[tasca] from SheetRead(sheetdat,"Duracion"); int duracion_total=sum(i in tasca)duracion[i]; {int} nbprec from SheetRead(sheetdat,"nbprecedencias"); int nbprecedencias=first(nbprec); {int} tcc from SheetRead(sheetdat,"TCX"); int TCX=first(tcc); {int} nbest from SheetRead(sheetdat,"nbestacio"); int nbestacio=first(nbest); {int} estacio=1..nbestacio;
Pág. 50 ANEXO {int} carrega=1..nbestacio; range precedencias 1..nbprecedencias; /*Definicio de conjunts*/ range lasparejas 1..2; int parejas2[precedencias,lasparejas] from SheetRead(sheetdat,"Precedencias"); {int} epos[i in tasca]={es|es in estacio: es>=primera[i] & es<=ultima[i]}; /*interval d'estacions al k es pot assignar la tasca i*/ struct parella{ int tasc; int est; }; {parella} tepos={<tasc,est>|tasc in tasca & est in epos[tasc]}; {int} T1 from SheetRead(resultats,"TT1"); int TT1=first(T1); {int} T2 from SheetRead(resultats,"TT2"); int TT2=first(T2); {int} T3 from SheetRead(resultats,"TT3"); int TT3=first(T3); {int} T4 from SheetRead(resultats,"TT4"); int TT4=first(T4); {int} T5 from SheetRead(resultats,"TT5"); int TT5=first(T5); {int} T6 from SheetRead(resultats,"TT6"); int TT6=first(T6); {int} T7 from SheetRead(resultats,"TT7"); int TT7=first(T7); {int} T8 from SheetRead(resultats,"TT8"); int TT8=first(T8); int M1=TT1-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8)/(nbestacio-8); int M2=TT2-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8)/(nbestacio-8); int M3=TT3-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8)/(nbestacio-8); int M4=TT4-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8)/(nbestacio-8); int M5=TT5-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8)/(nbestacio-8); int M6=TT6-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8)/(nbestacio-8); int M7=TT7-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8)/(nbestacio-8); int M8=TT8-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8)/(nbestacio-8); var int x[tepos] in 0..1; /*Delaracio de variables*/ var int T[carrega] in 0..TCX; var int Y[estacio,carrega] in 0..1; var int Z[estacio] in 0..TCX;
ANEXO: Exposición y Resolución del caso Multi-Min-Max en el Problema de Equilibrado de Líneas de Montaje Pág. 51 minimize T[9] subject to { forall(i in tasca) sum(j in epos[i])x[<i,j>]=1; forall(j in estacio) sum(i in tasca: j in epos[i])(x[<i,j>])*duracion[i]<=Z[j]; forall(i in precedencias) sum(j in epos[parejas2[i,2]])j*x[<parejas2[i,2],j>]>=sum(j in epos[parejas2[i,1]])j*x[<parejas2[i,1],j>]; forall(k in 1..8) sum(j in estacio)(Y[j,k])=1; forall(j in estacio) sum (k in 1..8)Y[j,k]<=1; forall(j in estacio) Z[j]<=TT1*Y[j,1]+TT2*Y[j,2]+TT3*Y[j,3]+TT4*Y[j,4]+TT5*Y[j,5]+TT6*Y[j,6]+TT7 *Y[j,7]+TT8*(1-sum(k in 1..7)Y[j,k]); forall(j in estacio) Z[j]<=T[9]+M1*Y[j,1]+M2*Y[j,2]+M3*Y[j,3]+M4*Y[j,4]+M5*Y[j,5]+M6*Y[j,6]+M7*Y [j,7]+M8*Y[j,8]; }; SheetWrite (resultats,"B10")(T[9]); A.2.1.2.1.10. Modelo 10 SheetConnection sheetdat("Z:\PFC\SUCCESSIU\nombre_problema\excel_enunciado_problema.xls",1) ; /*Access a la fulla EXCEL*/ SheetConnection resultats("Z:\PFC\SUCCESSIU\nombre_problema\ejemplar_problema\excel_resulta dos_ejemplar_problema.xls",0); /*Access a la fulla EXCEL*/ {int} tasca from SheetRead (sheetdat,"Tarea"); int primera[tasca] from SheetRead(sheetdat,"primera"); int ultima[tasca] from SheetRead(sheetdat,"ultima"); int duracion[tasca] from SheetRead(sheetdat,"Duracion"); int duracion_total=sum(i in tasca)duracion[i];
Pág. 52 ANEXO {int} nbprec from SheetRead(sheetdat,"nbprecedencias"); int nbprecedencias=first(nbprec); {int} tcc from SheetRead(sheetdat,"TCX"); int TCX=first(tcc); {int} nbest from SheetRead(sheetdat,"nbestacio"); int nbestacio=first(nbest); {int} estacio=1..nbestacio; {int} carrega=1..nbestacio; range precedencias 1..nbprecedencias; /*Definicio de conjunts*/ range lasparejas 1..2; int parejas2[precedencias,lasparejas] from SheetRead(sheetdat,"Precedencias"); {int} epos[i in tasca]={es|es in estacio: es>=primera[i] & es<=ultima[i]}; /*interval d'estacions al k es pot assignar la tasca i*/ struct parella{ int tasc; int est; }; {parella} tepos={<tasc,est>|tasc in tasca & est in epos[tasc]}; {int} T1 from SheetRead(resultats,"TT1"); int TT1=first(T1); {int} T2 from SheetRead(resultats,"TT2"); int TT2=first(T2); {int} T3 from SheetRead(resultats,"TT3"); int TT3=first(T3); {int} T4 from SheetRead(resultats,"TT4"); int TT4=first(T4); {int} T5 from SheetRead(resultats,"TT5"); int TT5=first(T5); {int} T6 from SheetRead(resultats,"TT6"); int TT6=first(T6); {int} T7 from SheetRead(resultats,"TT7"); int TT7=first(T7); {int} T8 from SheetRead(resultats,"TT8"); int TT8=first(T8); {int} T9 from SheetRead(resultats,"TT9"); int TT9=first(T9);
ANEXO: Exposición y Resolución del caso Multi-Min-Max en el Problema de Equilibrado de Líneas de Montaje Pág. 53 int M1=TT1-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9)/(nbestacio- 9); int M2=TT2-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9)/(nbestacio- 9); int M3=TT3-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9)/(nbestacio- 9); int M4=TT4-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9)/(nbestacio- 9); int M5=TT5-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9)/(nbestacio- 9); int M6=TT6-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9)/(nbestacio- 9); int M7=TT7-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9)/(nbestacio- 9); int M8=TT8-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9)/(nbestacio- 9); int M9=TT9-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9)/(nbestacio- 9); var int x[tepos] in 0..1; /*Delaracio de variables*/ var int T[carrega] in 0..TCX; var int Y[estacio,carrega] in 0..1; var int Z[estacio] in 0..TCX; minimize T[10] subject to { forall(i in tasca) sum(j in epos[i])x[<i,j>]=1; forall(j in estacio) sum(i in tasca: j in epos[i])(x[<i,j>])*duracion[i]<=Z[j]; forall(i in precedencias) sum(j in epos[parejas2[i,2]])j*x[<parejas2[i,2],j>]>=sum(j in epos[parejas2[i,1]])j*x[<parejas2[i,1],j>]; forall(k in 1..9) sum(j in estacio)(Y[j,k])=1; forall(j in estacio) sum (k in 1..9)Y[j,k]<=1; forall(j in estacio)
Pág. 54 ANEXO Z[j]<=TT1*Y[j,1]+TT2*Y[j,2]+TT3*Y[j,3]+TT4*Y[j,4]+TT5*Y[j,5]+TT6*Y[j,6]+TT7 *Y[j,7]+TT8*Y[j,8]+TT9*(1-sum(k in 1..8)Y[j,k]); forall(j in estacio) Z[j]<=T[10]+M1*Y[j,1]+M2*Y[j,2]+M3*Y[j,3]+M4*Y[j,4]+M5*Y[j,5]+M6*Y[j,6]+M7* Y[j,7]+M8*Y[j,8]+M9*Y[j,9]; }; SheetWrite (resultats,"B11")(T[10]); A.2.1.2.1.11. Modelo 11 SheetConnection sheetdat("Z:\PFC\SUCCESSIU\nombre_problema\excel_enunciado_problema.xls",1) ; /*Access a la fulla EXCEL*/ SheetConnection resultats("Z:\PFC\SUCCESSIU\nombre_problema\ejemplar_problema\excel_resulta dos_ejemplar_problema.xls",0); /*Access a la fulla EXCEL*/ {int} tasca from SheetRead (sheetdat,"Tarea"); int primera[tasca] from SheetRead(sheetdat,"primera"); int ultima[tasca] from SheetRead(sheetdat,"ultima"); int duracion[tasca] from SheetRead(sheetdat,"Duracion"); int duracion_total=sum(i in tasca)duracion[i]; {int} nbprec from SheetRead(sheetdat,"nbprecedencias"); int nbprecedencias=first(nbprec); {int} tcc from SheetRead(sheetdat,"TCX"); int TCX=first(tcc); {int} nbest from SheetRead(sheetdat,"nbestacio"); int nbestacio=first(nbest); {int} estacio=1..nbestacio; {int} carrega=1..nbestacio; range precedencias 1..nbprecedencias; /*Definicio de conjunts*/ range lasparejas 1..2; int parejas2[precedencias,lasparejas] from SheetRead(sheetdat,"Precedencias"); {int} epos[i in tasca]={es|es in estacio: es>=primera[i] & es<=ultima[i]}; /*interval d'estacions al k es pot assignar la tasca i*/
ANEXO: Exposición y Resolución del caso Multi-Min-Max en el Problema de Equilibrado de Líneas de Montaje Pág. 55 struct parella{ int tasc; int est; }; {parella} tepos={<tasc,est>|tasc in tasca & est in epos[tasc]}; {int} T1 from SheetRead(resultats,"TT1"); int TT1=first(T1); {int} T2 from SheetRead(resultats,"TT2"); int TT2=first(T2); {int} T3 from SheetRead(resultats,"TT3"); int TT3=first(T3); {int} T4 from SheetRead(resultats,"TT4"); int TT4=first(T4); {int} T5 from SheetRead(resultats,"TT5"); int TT5=first(T5); {int} T6 from SheetRead(resultats,"TT6"); int TT6=first(T6); {int} T7 from SheetRead(resultats,"TT7"); int TT7=first(T7); {int} T8 from SheetRead(resultats,"TT8"); int TT8=first(T8); {int} T9 from SheetRead(resultats,"TT9"); int TT9=first(T9); {int} T10 from SheetRead(resultats,"TT10"); int TT10=first(T10); int M1=TT1-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9- TT10)/(nbestacio-10); int M2=TT2-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9- TT10)/(nbestacio-10); int M3=TT3-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9- TT10)/(nbestacio-10); int M4=TT4-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9- TT10)/(nbestacio-10); int M5=TT5-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9- TT10)/(nbestacio-10); int M6=TT6-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9- TT10)/(nbestacio-10); int M7=TT7-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9- TT10)/(nbestacio-10); int M8=TT8-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9- TT10)/(nbestacio-10); int M9=TT9-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9- TT10)/(nbestacio-10); int M10=TT10-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9- TT10)/(nbestacio-10);
Pág. 56 ANEXO var int x[tepos] in 0..1; /*Delaracio de variables*/ var int T[carrega] in 0..TCX; var int Y[estacio,carrega] in 0..1; var int Z[estacio] in 0..TCX; minimize T[11] subject to { forall(i in tasca) sum(j in epos[i])x[<i,j>]=1; forall(j in estacio) sum(i in tasca: j in epos[i])(x[<i,j>])*duracion[i]<=Z[j]; forall(i in precedencias) sum(j in epos[parejas2[i,2]])j*x[<parejas2[i,2],j>]>=sum(j in epos[parejas2[i,1]])j*x[<parejas2[i,1],j>]; forall(k in 1..10) sum(j in estacio)(Y[j,k])=1; forall(j in estacio) sum (k in 1..10)Y[j,k]<=1; forall(j in estacio) Z[j]<=TT1*Y[j,1]+TT2*Y[j,2]+TT3*Y[j,3]+TT4*Y[j,4]+TT5*Y[j,5]+TT6*Y[j,6]+TT7 *Y[j,7]+TT8*Y[j,8]+TT9*Y[j,9]+TT10*(1-sum(k in 1..9)Y[j,k]); forall(j in estacio) Z[j]<=T[11]+M1*Y[j,1]+M2*Y[j,2]+M3*Y[j,3]+M4*Y[j,4]+M5*Y[j,5]+M6*Y[j,6]+M7* Y[j,7]+M8*Y[j,8]+M9*Y[j,9]+M10*Y[j,10]; }; SheetWrite (resultats,"B12")(T[11]); A.2.1.2.1.12. Modelo 12 SheetConnection sheetdat("Z:\PFC\SUCCESSIU\nombre_problema\excel_enunciado_problema.xls",1) ; /*Access a la fulla EXCEL*/ SheetConnection resultats("Z:\PFC\SUCCESSIU\nombre_problema\ejemplar_problema\excel_resulta dos_ejemplar_problema.xls",0); /*Access a la fulla EXCEL*/
ANEXO: Exposición y Resolución del caso Multi-Min-Max en el Problema de Equilibrado de Líneas de Montaje Pág. 57 {int} tasca from SheetRead (sheetdat,"Tarea"); int primera[tasca] from SheetRead(sheetdat,"primera"); int ultima[tasca] from SheetRead(sheetdat,"ultima"); int duracion[tasca] from SheetRead(sheetdat,"Duracion"); int duracion_total=sum(i in tasca)duracion[i]; {int} nbprec from SheetRead(sheetdat,"nbprecedencias"); int nbprecedencias=first(nbprec); {int} tcc from SheetRead(sheetdat,"TCX"); int TCX=first(tcc); {int} nbest from SheetRead(sheetdat,"nbestacio"); int nbestacio=first(nbest); {int} estacio=1..nbestacio; {int} carrega=1..nbestacio; range precedencias 1..nbprecedencias; /*Definicio de conjunts*/ range lasparejas 1..2; int parejas2[precedencias,lasparejas] from SheetRead(sheetdat,"Precedencias"); {int} epos[i in tasca]={es|es in estacio: es>=primera[i] & es<=ultima[i]}; /*interval d'estacions al k es pot assignar la tasca i*/ struct parella{ int tasc; int est; }; {parella} tepos={<tasc,est>|tasc in tasca & est in epos[tasc]}; {int} T1 from SheetRead(resultats,"TT1"); int TT1=first(T1); {int} T2 from SheetRead(resultats,"TT2"); int TT2=first(T2); {int} T3 from SheetRead(resultats,"TT3"); int TT3=first(T3); {int} T4 from SheetRead(resultats,"TT4"); int TT4=first(T4); {int} T5 from SheetRead(resultats,"TT5"); int TT5=first(T5); {int} T6 from SheetRead(resultats,"TT6"); int TT6=first(T6); {int} T7 from SheetRead(resultats,"TT7");
Pág. 64 ANEXO int M7=TT7-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13)/(nbestacio-13); int M8=TT8-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13)/(nbestacio-13); int M9=TT9-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13)/(nbestacio-13); int M10=TT10-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13)/(nbestacio-13); int M11=TT11-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13)/(nbestacio-13); int M12=TT12-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13)/(nbestacio-13); int M13=TT13-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13)/(nbestacio-13); var int x[tepos] in 0..1; /*Delaracio de variables*/ var int T[carrega] in 0..TCX; var int Y[estacio,carrega] in 0..1; var int Z[estacio] in 0..TCX; minimize T[14] subject to { forall(i in tasca) sum(j in epos[i])x[<i,j>]=1; forall(j in estacio) sum(i in tasca: j in epos[i])(x[<i,j>])*duracion[i]<=Z[j]; forall(i in precedencias) sum(j in epos[parejas2[i,2]])j*x[<parejas2[i,2],j>]>=sum(j in epos[parejas2[i,1]])j*x[<parejas2[i,1],j>]; forall(k in 1..13) sum(j in estacio)(Y[j,k])=1; forall(j in estacio) sum (k in 1..13)Y[j,k]<=1; forall(j in estacio) Z[j]<=TT1*Y[j,1]+TT2*Y[j,2]+TT3*Y[j,3]+TT4*Y[j,4]+TT5*Y[j,5]+TT6*Y[j,6]+TT7 *Y[j,7]+TT8*Y[j,8]+TT9*Y[j,9]+TT10*Y[j,10]+TT11*Y[j,11]+TT12*Y[j,12]+TT13*( 1-sum(k in 1..12)Y[j,k]); forall(j in estacio)
ANEXO: Exposición y Resolución del caso Multi-Min-Max en el Problema de Equilibrado de Líneas de Montaje Pág. 65 Z[j]<=T[14]+M1*Y[j,1]+M2*Y[j,2]+M3*Y[j,3]+M4*Y[j,4]+M5*Y[j,5]+M6*Y[j,6]+M7* Y[j,7]+M8*Y[j,8]+M9*Y[j,9]+M10*Y[j,10]+M11*Y[j,11]+M12*Y[j,12]+M13*Y[j,13]; }; SheetWrite (resultats,"B15")(T[14]); A.2.1.2.1.15. Modelo 15 SheetConnection sheetdat("Z:\PFC\SUCCESSIU\nombre_problema\excel_enunciado_problema.xls",1) ; /*Access a la fulla EXCEL*/ SheetConnection resultats("Z:\PFC\SUCCESSIU\nombre_problema\ejemplar_problema\excel_resulta dos_ejemplar_problema.xls",0); /*Access a la fulla EXCEL*/ {int} tasca from SheetRead (sheetdat,"Tarea"); int primera[tasca] from SheetRead(sheetdat,"primera"); int ultima[tasca] from SheetRead(sheetdat,"ultima"); int duracion[tasca] from SheetRead(sheetdat,"Duracion"); int duracion_total=sum(i in tasca)duracion[i]; {int} nbprec from SheetRead(sheetdat,"nbprecedencias"); int nbprecedencias=first(nbprec); {int} tcc from SheetRead(sheetdat,"TCX"); int TCX=first(tcc); {int} nbest from SheetRead(sheetdat,"nbestacio"); int nbestacio=first(nbest); {int} estacio=1..nbestacio; {int} carrega=1..nbestacio; range precedencias 1..nbprecedencias; /*Definicio de conjunts*/ range lasparejas 1..2; int parejas2[precedencias,lasparejas] from SheetRead(sheetdat,"Precedencias"); {int} epos[i in tasca]={es|es in estacio: es>=primera[i] & es<=ultima[i]}; /*interval d'estacions al k es pot assignar la tasca i*/ struct parella{ int tasc; int est; };
Pág. 66 ANEXO {parella} tepos={<tasc,est>|tasc in tasca & est in epos[tasc]}; {int} T1 from SheetRead(resultats,"TT1"); int TT1=first(T1); {int} T2 from SheetRead(resultats,"TT2"); int TT2=first(T2); {int} T3 from SheetRead(resultats,"TT3"); int TT3=first(T3); {int} T4 from SheetRead(resultats,"TT4"); int TT4=first(T4); {int} T5 from SheetRead(resultats,"TT5"); int TT5=first(T5); {int} T6 from SheetRead(resultats,"TT6"); int TT6=first(T6); {int} T7 from SheetRead(resultats,"TT7"); int TT7=first(T7); {int} T8 from SheetRead(resultats,"TT8"); int TT8=first(T8); {int} T9 from SheetRead(resultats,"TT9"); int TT9=first(T9); {int} T10 from SheetRead(resultats,"TT10"); int TT10=first(T10); {int} T11 from SheetRead(resultats,"TT11"); int TT11=first(T11); {int} T12 from SheetRead(resultats,"TT12"); int TT12=first(T12); {int} T13 from SheetRead(resultats,"TT13"); int TT13=first(T13); {int} T14 from SheetRead(resultats,"TT14"); int TT14=first(T14); int M1=TT1-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14)/(nbestacio-14); int M2=TT2-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14)/(nbestacio-14); int M3=TT3-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14)/(nbestacio-14); int M4=TT4-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14)/(nbestacio-14); int M5=TT5-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14)/(nbestacio-14); int M6=TT6-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14)/(nbestacio-14); int M7=TT7-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14)/(nbestacio-14); int M8=TT8-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14)/(nbestacio-14);
ANEXO: Exposición y Resolución del caso Multi-Min-Max en el Problema de Equilibrado de Líneas de Montaje Pág. 67 int M9=TT9-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14)/(nbestacio-14); int M10=TT10-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14)/(nbestacio-14); int M11=TT11-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14)/(nbestacio-14); int M12=TT12-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14)/(nbestacio-14); int M13=TT13-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14)/(nbestacio-14); int M14=TT14-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14)/(nbestacio-14); var int x[tepos] in 0..1; /*Delaracio de variables*/ var int T[carrega] in 0..TCX; var int Y[estacio,carrega] in 0..1; var int Z[estacio] in 0..TCX; minimize T[15] subject to { forall(i in tasca) sum(j in epos[i])x[<i,j>]=1; forall(j in estacio) sum(i in tasca: j in epos[i])(x[<i,j>])*duracion[i]<=Z[j]; forall(i in precedencias) sum(j in epos[parejas2[i,2]])j*x[<parejas2[i,2],j>]>=sum(j in epos[parejas2[i,1]])j*x[<parejas2[i,1],j>]; forall(k in 1..14) sum(j in estacio)(Y[j,k])=1; forall(j in estacio) sum (k in 1..14)Y[j,k]<=1; forall(j in estacio) Z[j]<=TT1*Y[j,1]+TT2*Y[j,2]+TT3*Y[j,3]+TT4*Y[j,4]+TT5*Y[j,5]+TT6*Y[j,6]+TT7 *Y[j,7]+TT8*Y[j,8]+TT9*Y[j,9]+TT10*Y[j,10]+TT11*Y[j,11]+TT12*Y[j,12]+TT13*Y [j,13]+TT14*(1-sum(k in 1..13)Y[j,k]); forall(j in estacio) Z[j]<=T[15]+M1*Y[j,1]+M2*Y[j,2]+M3*Y[j,3]+M4*Y[j,4]+M5*Y[j,5]+M6*Y[j,6]+M7*
Pág. 68 ANEXO Y[j,7]+M8*Y[j,8]+M9*Y[j,9]+M10*Y[j,10]+M11*Y[j,11]+M12*Y[j,12]+M13*Y[j,13]+ M14*Y[j,14]; }; SheetWrite (resultats,"B16")(T[15]); A.2.1.2.1.16. Modelo 16 SheetConnection sheetdat("Z:\PFC\SUCCESSIU\nombre_problema\excel_enunciado_problema.xls",1) ; /*Access a la fulla EXCEL*/ SheetConnection resultats("Z:\PFC\SUCCESSIU\nombre_problema\ejemplar_problema\excel_resulta dos_ejemplar_problema.xls",0); /*Access a la fulla EXCEL*/ {int} tasca from SheetRead (sheetdat,"Tarea"); int primera[tasca] from SheetRead(sheetdat,"primera"); int ultima[tasca] from SheetRead(sheetdat,"ultima"); int duracion[tasca] from SheetRead(sheetdat,"Duracion"); int duracion_total=sum(i in tasca)duracion[i]; {int} nbprec from SheetRead(sheetdat,"nbprecedencias"); int nbprecedencias=first(nbprec); {int} tcc from SheetRead(sheetdat,"TCX"); int TCX=first(tcc); {int} nbest from SheetRead(sheetdat,"nbestacio"); int nbestacio=first(nbest); {int} estacio=1..nbestacio; {int} carrega=1..nbestacio; range precedencias 1..nbprecedencias; /*Definicio de conjunts*/ range lasparejas 1..2; int parejas2[precedencias,lasparejas] from SheetRead(sheetdat,"Precedencias"); {int} epos[i in tasca]={es|es in estacio: es>=primera[i] & es<=ultima[i]}; /*interval d'estacions al k es pot assignar la tasca i*/ struct parella{ int tasc; int est; }; {parella} tepos={<tasc,est>|tasc in tasca & est in epos[tasc]};
ANEXO: Exposición y Resolución del caso Multi-Min-Max en el Problema de Equilibrado de Líneas de Montaje Pág. 69 {int} T1 from SheetRead(resultats,"TT1"); int TT1=first(T1); {int} T2 from SheetRead(resultats,"TT2"); int TT2=first(T2); {int} T3 from SheetRead(resultats,"TT3"); int TT3=first(T3); {int} T4 from SheetRead(resultats,"TT4"); int TT4=first(T4); {int} T5 from SheetRead(resultats,"TT5"); int TT5=first(T5); {int} T6 from SheetRead(resultats,"TT6"); int TT6=first(T6); {int} T7 from SheetRead(resultats,"TT7"); int TT7=first(T7); {int} T8 from SheetRead(resultats,"TT8"); int TT8=first(T8); {int} T9 from SheetRead(resultats,"TT9"); int TT9=first(T9); {int} T10 from SheetRead(resultats,"TT10"); int TT10=first(T10); {int} T11 from SheetRead(resultats,"TT11"); int TT11=first(T11); {int} T12 from SheetRead(resultats,"TT12"); int TT12=first(T12); {int} T13 from SheetRead(resultats,"TT13"); int TT13=first(T13); {int} T14 from SheetRead(resultats,"TT14"); int TT14=first(T14); {int} T15 from SheetRead(resultats,"TT15"); int TT15=first(T15); int M1=TT1-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15)/(nbestacio-15); int M2=TT2-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15)/(nbestacio-15); int M3=TT3-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15)/(nbestacio-15); int M4=TT4-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15)/(nbestacio-15); int M5=TT5-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15)/(nbestacio-15); int M6=TT6-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15)/(nbestacio-15); int M7=TT7-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15)/(nbestacio-15); int M8=TT8-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15)/(nbestacio-15);
Pág. 70 ANEXO int M9=TT9-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15)/(nbestacio-15); int M10=TT10-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15)/(nbestacio-15); int M11=TT11-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15)/(nbestacio-15); int M12=TT12-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15)/(nbestacio-15); int M13=TT13-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15)/(nbestacio-15); int M14=TT14-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15)/(nbestacio-15); int M15=TT15-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15)/(nbestacio-15); var int x[tepos] in 0..1; /*Delaracio de variables*/ var int T[carrega] in 0..TCX; var int Y[estacio,carrega] in 0..1; var int Z[estacio] in 0..TCX; minimize T[16] subject to { forall(i in tasca) sum(j in epos[i])x[<i,j>]=1; forall(j in estacio) sum(i in tasca: j in epos[i])(x[<i,j>])*duracion[i]<=Z[j]; forall(i in precedencias) sum(j in epos[parejas2[i,2]])j*x[<parejas2[i,2],j>]>=sum(j in epos[parejas2[i,1]])j*x[<parejas2[i,1],j>]; forall(k in 1..15) sum(j in estacio)(Y[j,k])=1; forall(j in estacio) sum (k in 1..15)Y[j,k]<=1; forall(j in estacio) Z[j]<=TT1*Y[j,1]+TT2*Y[j,2]+TT3*Y[j,3]+TT4*Y[j,4]+TT5*Y[j,5]+TT6*Y[j,6]+TT7 *Y[j,7]+TT8*Y[j,8]+TT9*Y[j,9]+TT10*Y[j,10]+TT11*Y[j,11]+TT12*Y[j,12]+TT13*Y [j,13]+TT14*Y[j,14]+TT15*(1-sum(k in 1..14)Y[j,k]); forall(j in estacio)
ANEXO: Exposición y Resolución del caso Multi-Min-Max en el Problema de Equilibrado de Líneas de Montaje Pág. 71 Z[j]<=T[16]+M1*Y[j,1]+M2*Y[j,2]+M3*Y[j,3]+M4*Y[j,4]+M5*Y[j,5]+M6*Y[j,6]+M7* Y[j,7]+M8*Y[j,8]+M9*Y[j,9]+M10*Y[j,10]+M11*Y[j,11]+M12*Y[j,12]+M13*Y[j,13]+ M14*Y[j,14]+M15*Y[j,15]; }; SheetWrite (resultats,"B17")(T[16]); A.2.1.2.1.17. Modelo 17 SheetConnection sheetdat("Z:\PFC\SUCCESSIU\nombre_problema\excel_enunciado_problema.xls",1) ; /*Access a la fulla EXCEL*/ SheetConnection resultats("Z:\PFC\SUCCESSIU\nombre_problema\ejemplar_problema\excel_resulta dos_ejemplar_problema.xls",0); /*Access a la fulla EXCEL*/ {int} tasca from SheetRead (sheetdat,"Tarea"); int primera[tasca] from SheetRead(sheetdat,"primera"); int ultima[tasca] from SheetRead(sheetdat,"ultima"); int duracion[tasca] from SheetRead(sheetdat,"Duracion"); int duracion_total=sum(i in tasca)duracion[i]; {int} nbprec from SheetRead(sheetdat,"nbprecedencias"); int nbprecedencias=first(nbprec); {int} tcc from SheetRead(sheetdat,"TCX"); int TCX=first(tcc); {int} nbest from SheetRead(sheetdat,"nbestacio"); int nbestacio=first(nbest); {int} estacio=1..nbestacio; {int} carrega=1..nbestacio; range precedencias 1..nbprecedencias; /*Definicio de conjunts*/ range lasparejas 1..2; int parejas2[precedencias,lasparejas] from SheetRead(sheetdat,"Precedencias"); {int} epos[i in tasca]={es|es in estacio: es>=primera[i] & es<=ultima[i]}; /*interval d'estacions al k es pot assignar la tasca i*/ struct parella{ int tasc; int est; };
Pág. 72 ANEXO {parella} tepos={<tasc,est>|tasc in tasca & est in epos[tasc]}; {int} T1 from SheetRead(resultats,"TT1"); int TT1=first(T1); {int} T2 from SheetRead(resultats,"TT2"); int TT2=first(T2); {int} T3 from SheetRead(resultats,"TT3"); int TT3=first(T3); {int} T4 from SheetRead(resultats,"TT4"); int TT4=first(T4); {int} T5 from SheetRead(resultats,"TT5"); int TT5=first(T5); {int} T6 from SheetRead(resultats,"TT6"); int TT6=first(T6); {int} T7 from SheetRead(resultats,"TT7"); int TT7=first(T7); {int} T8 from SheetRead(resultats,"TT8"); int TT8=first(T8); {int} T9 from SheetRead(resultats,"TT9"); int TT9=first(T9); {int} T10 from SheetRead(resultats,"TT10"); int TT10=first(T10); {int} T11 from SheetRead(resultats,"TT11"); int TT11=first(T11); {int} T12 from SheetRead(resultats,"TT12"); int TT12=first(T12); {int} T13 from SheetRead(resultats,"TT13"); int TT13=first(T13); {int} T14 from SheetRead(resultats,"TT14"); int TT14=first(T14); {int} T15 from SheetRead(resultats,"TT15"); int TT15=first(T15); {int} T16 from SheetRead(resultats,"TT16"); int TT16=first(T16); int M1=TT1-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15-TT16)/(nbestacio-16); int M2=TT2-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15-TT16)/(nbestacio-16); int M3=TT3-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15-TT16)/(nbestacio-16); int M4=TT4-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15-TT16)/(nbestacio-16); int M5=TT5-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15-TT16)/(nbestacio-16); int M6=TT6-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15-TT16)/(nbestacio-16);
ANEXO: Exposición y Resolución del caso Multi-Min-Max en el Problema de Equilibrado de Líneas de Montaje Pág. 73 int M7=TT7-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15-TT16)/(nbestacio-16); int M8=TT8-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15-TT16)/(nbestacio-16); int M9=TT9-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15-TT16)/(nbestacio-16); int M10=TT10-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15-TT16)/(nbestacio-16); int M11=TT11-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15-TT16)/(nbestacio-16); int M12=TT12-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15-TT16)/(nbestacio-16); int M13=TT13-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15-TT16)/(nbestacio-16); int M14=TT14-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15-TT16)/(nbestacio-16); int M15=TT15-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15-TT16)/(nbestacio-16); int M16=TT16-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15-TT16)/(nbestacio-16); var int x[tepos] in 0..1; /*Delaracio de variables*/ var int T[carrega] in 0..TCX; var int Y[estacio,carrega] in 0..1; var int Z[estacio] in 0..TCX; minimize T[17] subject to { forall(i in tasca) sum(j in epos[i])x[<i,j>]=1; forall(j in estacio) sum(i in tasca: j in epos[i])(x[<i,j>])*duracion[i]<=Z[j]; forall(i in precedencias) sum(j in epos[parejas2[i,2]])j*x[<parejas2[i,2],j>]>=sum(j in epos[parejas2[i,1]])j*x[<parejas2[i,1],j>]; forall(k in 1..16) sum(j in estacio)(Y[j,k])=1; forall(j in estacio) sum (k in 1..16)Y[j,k]<=1; forall(j in estacio)
Pág. 80 ANEXO var int x[tepos] in 0..1; /*Delaracio de variables*/ var int T[carrega] in 0..TCX; var int Y[estacio,carrega] in 0..1; var int Z[estacio] in 0..TCX; minimize T[19] subject to { forall(i in tasca) sum(j in epos[i])x[<i,j>]=1; forall(j in estacio) sum(i in tasca: j in epos[i])(x[<i,j>])*duracion[i]<=Z[j]; forall(i in precedencias) sum(j in epos[parejas2[i,2]])j*x[<parejas2[i,2],j>]>=sum(j in epos[parejas2[i,1]])j*x[<parejas2[i,1],j>]; forall(k in 1..18) sum(j in estacio)(Y[j,k])=1; forall(j in estacio) sum (k in 1..18)Y[j,k]<=1; forall(j in estacio) Z[j]<=TT1*Y[j,1]+TT2*Y[j,2]+TT3*Y[j,3]+TT4*Y[j,4]+TT5*Y[j,5]+TT6*Y[j,6]+TT7 *Y[j,7]+TT8*Y[j,8]+TT9*Y[j,9]+TT10*Y[j,10]+TT11*Y[j,11]+TT12*Y[j,12]+TT13*Y [j,13]+TT14*Y[j,14]+TT15*Y[j,15]+TT16*Y[j,16]+TT17*Y[j,17]+TT18*(1-sum(k in 1..17)Y[j,k]); forall(j in estacio) Z[j]<=T[19]+M1*Y[j,1]+M2*Y[j,2]+M3*Y[j,3]+M4*Y[j,4]+M5*Y[j,5]+M6*Y[j,6]+M7* Y[j,7]+M8*Y[j,8]+M9*Y[j,9]+M10*Y[j,10]+M11*Y[j,11]+M12*Y[j,12]+M13*Y[j,13]+ M14*Y[j,14]+M15*Y[j,15]+M16*Y[j,16]+M17*Y[j,17]+M18*Y[j,18]; }; SheetWrite (resultats,"B20")(T[19]); A.2.1.2.1.20. Modelo 20
ANEXO: Exposición y Resolución del caso Multi-Min-Max en el Problema de Equilibrado de Líneas de Montaje Pág. 81 SheetConnection sheetdat("Z:\PFC\SUCCESSIU\nombre_problema\excel_enunciado_problema.xls",1) ; /*Access a la fulla EXCEL*/ SheetConnection resultats("Z:\PFC\SUCCESSIU\nombre_problema\ejemplar_problema\excel_resulta dos_ejemplar_problema.xls",0); /*Access a la fulla EXCEL*/ {int} tasca from SheetRead (sheetdat,"Tarea"); int primera[tasca] from SheetRead(sheetdat,"primera"); int ultima[tasca] from SheetRead(sheetdat,"ultima"); int duracion[tasca] from SheetRead(sheetdat,"Duracion"); int duracion_total=sum(i in tasca)duracion[i]; {int} nbprec from SheetRead(sheetdat,"nbprecedencias"); int nbprecedencias=first(nbprec); {int} tcc from SheetRead(sheetdat,"TCX"); int TCX=first(tcc); {int} nbest from SheetRead(sheetdat,"nbestacio"); int nbestacio=first(nbest); {int} estacio=1..nbestacio; {int} carrega=1..nbestacio; range precedencias 1..nbprecedencias; /*Definicio de conjunts*/ range lasparejas 1..2; int parejas2[precedencias,lasparejas] from SheetRead(sheetdat,"Precedencias"); {int} epos[i in tasca]={es|es in estacio: es>=primera[i] & es<=ultima[i]}; /*interval d'estacions al k es pot assignar la tasca i*/ struct parella{ int tasc; int est; }; {parella} tepos={<tasc,est>|tasc in tasca & est in epos[tasc]}; {int} T1 from SheetRead(resultats,"TT1"); int TT1=first(T1); {int} T2 from SheetRead(resultats,"TT2"); int TT2=first(T2); {int} T3 from SheetRead(resultats,"TT3"); int TT3=first(T3);
Pág. 82 ANEXO {int} T4 from SheetRead(resultats,"TT4"); int TT4=first(T4); {int} T5 from SheetRead(resultats,"TT5"); int TT5=first(T5); {int} T6 from SheetRead(resultats,"TT6"); int TT6=first(T6); {int} T7 from SheetRead(resultats,"TT7"); int TT7=first(T7); {int} T8 from SheetRead(resultats,"TT8"); int TT8=first(T8); {int} T9 from SheetRead(resultats,"TT9"); int TT9=first(T9); {int} T10 from SheetRead(resultats,"TT10"); int TT10=first(T10); {int} T11 from SheetRead(resultats,"TT11"); int TT11=first(T11); {int} T12 from SheetRead(resultats,"TT12"); int TT12=first(T12); {int} T13 from SheetRead(resultats,"TT13"); int TT13=first(T13); {int} T14 from SheetRead(resultats,"TT14"); int TT14=first(T14); {int} T15 from SheetRead(resultats,"TT15"); int TT15=first(T15); {int} T16 from SheetRead(resultats,"TT16"); int TT16=first(T16); {int} T17 from SheetRead(resultats,"TT17"); int TT17=first(T17); {int} T18 from SheetRead(resultats,"TT18"); int TT18=first(T18); {int} T19 from SheetRead(resultats,"TT19"); int TT19=first(T19); int M1=TT1-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15-TT16-TT17-TT18-TT19)/(nbestacio-19); int M2=TT2-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15-TT16-TT17-TT18-TT19)/(nbestacio-19); int M3=TT3-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15-TT16-TT17-TT18-TT19)/(nbestacio-19); int M4=TT4-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15-TT16-TT17-TT18-TT19)/(nbestacio-19); int M5=TT5-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15-TT16-TT17-TT18-TT19)/(nbestacio-19); int M6=TT6-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15-TT16-TT17-TT18-TT19)/(nbestacio-19); int M7=TT7-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15-TT16-TT17-TT18-TT19)/(nbestacio-19);
ANEXO: Exposición y Resolución del caso Multi-Min-Max en el Problema de Equilibrado de Líneas de Montaje Pág. 83 int M8=TT8-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15-TT16-TT17-TT18-TT19)/(nbestacio-19); int M9=TT9-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15-TT16-TT17-TT18-TT19)/(nbestacio-19); int M10=TT10-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15-TT16-TT17-TT18-TT19)/(nbestacio-19); int M11=TT11-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15-TT16-TT17-TT18-TT19)/(nbestacio-19); int M12=TT12-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15-TT16-TT17-TT18-TT19)/(nbestacio-19); int M13=TT13-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15-TT16-TT17-TT18-TT19)/(nbestacio-19); int M14=TT14-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15-TT16-TT17-TT18-TT19)/(nbestacio-19); int M15=TT15-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15-TT16-TT17-TT18-TT19)/(nbestacio-19); int M16=TT16-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15-TT16-TT17-TT18-TT19)/(nbestacio-19); int M17=TT17-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15-TT16-TT17-TT18-TT19)/(nbestacio-19); int M18=TT18-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15-TT16-TT17-TT18-TT19)/(nbestacio-19); int M19=TT19-(duracion_total-TT1-TT2-TT3-TT4-TT5-TT6-TT7-TT8-TT9-TT10-TT11- TT12-TT13-TT14-TT15-TT16-TT17-TT18-TT19)/(nbestacio-19); var int x[tepos] in 0..1; /*Delaracio de variables*/ var int T[carrega] in 0..TCX; var int Y[estacio,carrega] in 0..1; var int Z[estacio] in 0..TCX; minimize T[20] subject to { forall(i in tasca) sum(j in epos[i])x[<i,j>]=1; forall(j in estacio) sum(i in tasca: j in epos[i])(x[<i,j>])*duracion[i]<=Z[j]; forall(i in precedencias) sum(j in epos[parejas2[i,2]])j*x[<parejas2[i,2],j>]>=sum(j in epos[parejas2[i,1]])j*x[<parejas2[i,1],j>]; forall(k in 1..19) sum(j in estacio)(Y[j,k])=1;
Pág. 84 ANEXO forall(j in estacio) sum (k in 1..19)Y[j,k]<=1; forall(j in estacio) Z[j]<=TT1*Y[j,1]+TT2*Y[j,2]+TT3*Y[j,3]+TT4*Y[j,4]+TT5*Y[j,5]+TT6*Y[j,6]+TT7 *Y[j,7]+TT8*Y[j,8]+TT9*Y[j,9]+TT10*Y[j,10]+TT11*Y[j,11]+TT12*Y[j,12]+TT13*Y [j,13]+TT14*Y[j,14]+TT15*Y[j,15]+TT16*Y[j,16]+TT17*Y[j,17]+TT18*Y[j,18]+TT1 9*(1-sum(k in 1..18)Y[j,k]); forall(j in estacio) Z[j]<=T[20]+M1*Y[j,1]+M2*Y[j,2]+M3*Y[j,3]+M4*Y[j,4]+M5*Y[j,5]+M6*Y[j,6]+M7* Y[j,7]+M8*Y[j,8]+M9*Y[j,9]+M10*Y[j,10]+M11*Y[j,11]+M12*Y[j,12]+M13*Y[j,13]+ M14*Y[j,14]+M15*Y[j,15]+M16*Y[j,16]+M17*Y[j,17]+M18*Y[j,18]+M19*Y[j,19]; }; SheetWrite (resultats,"B21")(T[20]); A.2.1.2.1.21. Modelo 21 hasta modelo 50 Los modelos que van del 21 al 50 están efectuados y se pueden consultar en formato electrónico. No se incluyen en el anexo ya que las resoluciones efectuadas, ya sean exactas como limitadas temporalmente, no han dado ningún resultado con estos modelos. A.2.1.2.1.22. Añadido modelo final de secuencia /* añadido al final del último modelo de cada ejemplar, para el modelo x */ SheetWrite (resultats,"B(x+2)")(min(r in estacio)Z[r]); SheetWrite (resultats,"C2:C(x+2)")(Z);
ANEXO: Exposición y Resolución del caso Multi-Min-Max en el Problema de Equilibrado de Líneas de Montaje Pág. 85 A.2.1.2.2. Macro de excel con hoja de entrada para la automatización de la resolución con ILOG Una hoja de entrada de datos estándar para el modelo jerarquizado sucesivo es como la que sigue: Tarea Duracion Primera Ultima A lpha proves pes1 pes2 eTCnum dur pes 1713 TC #### 8 228 7 ma x 25 1 7 228 219125 nbprece d 36 #### 207 19 14 26 2 19 207 3152 6 nbestacio #### 207 22 13 28 3 15 207 45226 tasques 29 #### 192 27 12 29 4 5 192 5 12 3 4 #### 187 39 11 34 5 12 187 6 10 4 5 100 176 29 10 35 6 10 176 7858 1 1688 939 7 8 168 8 16 5 13 166 84 843 8 16 166 9268 13610 749 9 2 136 10 6 7 9 134 16 10 6 134 11 21 7 12 117 105 11 21 117 12 10 7 25 110 18 12 10 110 13 9 8 11 105 48 13 9 105 14 4 8 16 103 20 14 4 103 15 14 9 10 100 40 15 14 100 16 7 10 14 99 111 16 7 99 17 14 10 15 96 128 17 14 96 18 17 11 17 92 128 18 17 92 19 10 12 15 86 50 19 10 86 20 16 13 17 82 144 20 16 82 21 1 14 16 76 51 21 1 76 22 9 15 19 75 172 22 9 75 23 25 16 18 66 257 23 25 66 24 14 17 20 41 271 24 14 41 25 14 18 22 34 29 25 14 34 26 2 19 21 32 21 26 2 32 27 10 20 23 30 31 27 10 30 28 7 21 22 27 278 28 7 27 29 20 22 23 20 324 29 20 20 23 24 24 28 25 29 25 29 26 27 27 29 28 29 Precedencias MATRIU OBTINGUDA AMB LA MACRO Figura A.2.4. Hoja de entrada datos Para la ejecución de los diferentes ejemplares de los modelos en cuestión se ha efectuado una macro de visual basic que trabaja en la siguiente hoja de cálculo y que tiene el código que a a continuación se adjunta:
Pág. 86 ANEXO Z:\PFC\SUCCESSIU\HAHN\HAHN3\MODEL1.mod 2,172 Z:\ 2,141 Z:\ 2,188 Z:\ 2,125 Z:\ 2,203 Z:\ 2,157 Z:\ 2,125 Z:\ 2,14 Z:\PFC\SUCCESSIU\HAHN\HAHN3\MODEL2.mod 2,078 Z:\ 2,11 Z:\ 2,141 Z:\ 2,11 Z:\ 2,14 Z:\ 2,141 Z:\ 2,172 Z:\ 2,218 4,25 Z:\ 2,125 Z:\ 2,11 Z:\ 2,125 Z:\ 2,125 Z:\ 2,141 Z:\ 2,172 Z:\ 2,203 6,37 6 Z:\ 2,109 Z:\ 2,125 Z:\ 2,204 Z:\ 2,14 Z:\ 2,203 Z:\ 2,797 8,548 Z:\ 2,141 Z:\ 2,156 Z:\ 2,156 Z:\ 2,688 Z:\ 6,547 10,62 6 Z:\ 2,25 Z:\ 2,172 Z:\ 4,859 Z:\ 3,578 13,07 8 Z:\ 2,156 Z:\ 2,797 Z:\ 2,563 15,063 Z:\ 13,406 Z:\ 2,843 32,42 2 Z:\ 6,61 31,499 121,86 2 TOTAL TEMPS DE RESOLUCIÓ: MODEL SUCCESSIU "HAHN" HAHN3 HAHN4 HAHN5 HAHN6 HAHN7 HAHN8 HAHN9 HAHN10 Figura A.2.5. Hoja de cálculo salida tiempo Private Sub CommandButton2_Click() Dim i As Integer Dim j As Integer Dim ModelFile As String j = 0 For ggg = 1 To Cells(2, 13).Value 'S'HA DE MODIFICAR' gg = Cells(2, 13).Value + 3 - ggg j = j + 2 Temps = Cells(gg, 22).Value Estacions = Cells(gg, 21).Value Workbooks.Open ("Z:\PFC\SUCCESSIU\HAHN\MODELHAHN.xls") Workbooks("MODELHAHN.xls").Sheets("Hoja1").Cells(2, 8).Value = Temps Workbooks("MODELHAHN.xls").Sheets("Hoja1").Cells(4, 8).Value = Estacions Application.Run "'MODELHAHN.xls'!Hoja1.CommandButton1_Click" Workbooks("MODELHAHN.xls").Save Workbooks("MODELHAHN.xls").Close Workbooks("MACROMODELHAHN.xls").Activate For i = 1 To Estacions - 1 ModelFile = Workbooks("MACROMODELHAHN.xls").Sheets("Models").Cells(2 + i, j).Value Call ILOG2(i, j, ModelFile) Workbooks("MACROMODELHAHN.xls").Save Next i Next ggg
ANEXO: Exposición y Resolución del caso Multi-Min-Max en el Problema de Equilibrado de Líneas de Montaje Pág. 87 End Sub Private Function ILOG2(fila As Integer, columna As Integer, ModelFileName As String) Dim ProvaJordi As COPLsolver Set ProvaJordi = New COPLsolver Call ProvaJordi.loadInterpretedModelFile(ModelFileName, 0) ProvaJordi.solve Sheets("Models").Cells(2 + fila, columna + 1) = ProvaJordi.getTime End Function Las diferentes hojas de resultados tienen la siguiente apariencia: TZ TT1 47 47 TT2 47 47 TT3 47 47 TT4 47 47 TT5 46 46 TT6 46 46 TT7 44 44 TT8 TT9 TT10 TT11 TT12 TT13 TT14 Figura A.2.6. Hoja de cálculo salida resultados
Pág. 88 ANEXO A.2.1.3. Resultados para ambos casos Problema Ej. Modelo TC obtenido [s] TC óptimo [s] δ Buxey 7 Jerarquizado Global 47 47 * Buxey 7 Jerarquizado Sucesivo 47 47 * Buxey 8 Jerarquizado Global 41 41 * Buxey 8 Jerarquizado Sucesivo 41 41 * Buxey 9 Jerarquizado Global 37 37 * Buxey 9 Jerarquizado Sucesivo 37 37 * Buxey 10 Jerarquizado Sucesivo 34 34 * Buxey 11 Jerarquizado Sucesivo 32 32 * Buxey 12 Jerarquizado Sucesivo 28 28 * Buxey 13 Jerarquizado Sucesivo 27 27 * Sawyer 7 Jerarquizado Global 47 47 * Sawyer 7 Jerarquizado Sucesivo 47 47 * Sawyer 8 Jerarquizado Sucesivo 41 41 * Sawyer 9 Jerarquizado Sucesivo 37 37 * Sawyer 10 Jerarquizado Sucesivo 34 34 * Sawyer 12 Jerarquizado Sucesivo 28 28 * Sawyer 13 Jerarquizado Sucesivo 26 26 * Lutz1 8 Jerarquizado Global 1860 1860 *
ANEXO: Exposición y Resolución del caso Multi-Min-Max en el Problema de Equilibrado de Líneas de Montaje Pág. 89 Lutz1 8 Jerarquizado Sucesivo 1860 1860 * Lutz1 9 Jerarquizado Sucesivo 1638 1638 * Lutz1 10 Jerarquizado Sucesivo 1526 1526 * Lutz1 11 Jerarquizado Sucesivo 1400 1400 * Lutz1 12 Jerarquizado Sucesivo 1400 1400 * Gunther 6 Jerarquizado Global 84 84 * Gunther 6 Jerarquizado Sucesivo 84 84 * Gunther 7 Jerarquizado Global 72 72 * Gunther 7 Jerarquizado Sucesivo 72 72 * Gunther 8 Jerarquizado Global 63 63 * Gunther 8 Jerarquizado Sucesivo 63 63 * Gunther 9 Jerarquizado Global 54 54 * Gunther 9 Jerarquizado Sucesivo 54 54 * Gunther 10 Jerarquizado Sucesivo 50 50 * Gunther 11 Jerarquizado Sucesivo 48 48 * Gunther 12 Jerarquizado Sucesivo 44 44 * Killbridge 3 Jerarquizado Global 184 184 * Killbridge 3 Jerarquizado Sucesivo 184 184 * Killbridge 4 Jerarquizado Global 138 138 * Killbridge 4 Jerarquizado Sucesivo 138 138 * Killbridge 5 Jerarquizado Global 111 111 * Killbridge 5 Jerarquizado Sucesivo 111 111 *
Pág. 96 ANEXO int ultima[tasca] from SheetRead(sheetdat,"ultima"); int duracion[tasca] from SheetRead(sheetdat,"Duracion"); int duracion_total=sum(i in tasca)duracion[i]; {int} nbprec from SheetRead(sheetdat,"nbprecedencias"); int nbprecedencias=first(nbprec); {int} tcc from SheetRead(sheetdat,"TCX"); int TCX=first(tcc); {int} nbest from SheetRead(sheetdat,"nbestacio"); int nbestacio=first(nbest); {int} estacio=1..nbestacio; {int} carrega=1..nbestacio; range precedencias 1..nbprecedencias; /*Definicio de conjunts*/ range lasparejas 1..2; int parejas2[precedencias,lasparejas] from SheetRead(sheetdat,"Precedencias"); {int} epos[i in tasca]={es|es in estacio: es>=primera[i] & es<=ultima[i]}; /*interval d'estacions al k es pot assignar la tasca i*/ struct parella{ int tasc; int est; }; {parella} tepos={<tasc,est>|tasc in tasca & est in epos[tasc]}; setting tiLim=18000; var int x[tepos] in 0..1; /*Delaracio de variables*/ var int T[carrega] in 0..TCX; var int Y[estacio,carrega] in 0..1; var int Z[estacio] in 0..TCX; minimize T[1] subject to { forall(i in tasca) sum(j in epos[i])x[<i,j>]=1; forall(j in estacio) sum(i in tasca: j in epos[i])(x[<i,j>])*duracion[i]<=Z[j]; forall(i in precedencias) sum(j in epos[parejas2[i,2]])j*x[<parejas2[i,2],j>]>=sum(j in epos[parejas2[i,1]])j*x[<parejas2[i,1],j>]; forall(j in estacio) Z[j]<=T[1]; }; SheetWrite (resultats,"B2")(T[1]); SheetWrite (resultats,"C2:C9")(Z);
ANEXO: Exposición y Resolución del caso Multi-Min-Max en el Problema de Equilibrado de Líneas de Montaje Pág. 97 En referencia a la macro de visual basic que ejecuta los modelos, queda de la siguiente manera: Private Sub CommandButton2_Click() Dim i As Integer Dim j As Integer Dim ModelFile As String j = 0 For ggg = 1 To Cells(2, 13).Value 'S'HA DE MODIFICAR' gg = Cells(2, 13).Value + 3 - ggg j = j + 2 Temps = Cells(gg, 22).Value Estacions = Cells(gg, 21).Value Workbooks.Open ("Z:\PFC\SUCCESSIU\BUXEY\MODELBUXEY.xls") Workbooks("MODELBUXEY.xls").Sheets("Hoja1").Cells(2, 8).Value = Temps Workbooks("MODELBUXEY.xls").Sheets("Hoja1").Cells(4, 8).Value = Estacions Application.Run "'MODELBUXEY.xls'!Hoja1.CommandButton1_Click" Workbooks("MODELBUXEY.xls").Save Workbooks("MODELBUXEY.xls").Close Workbooks("MACROMODELBUXEY.xls").Activate For i = 1 To Estacions - 1 ModelFile = Workbooks("MACROMODELBUXEY.xls").Sheets("Models").Cells(2 + i, j).Value Call ILOG2(i, j, ModelFile) Workbooks("MACROMODELBUXEY.xls").Save Next i Next ggg End Sub Private Function ILOG2(fila As Integer, columna As Integer, ModelFileName As String) Dim ProvaJordi As COPLsolver Set ProvaJordi = New COPLsolver On Error Resume Next ProvaJordi.setDefaultErrorReporterSilent (1) Call ProvaJordi.loadInterpretedModelFile(ModelFileName, 0) ProvaJordi.solve
Pág. 98 ANEXO Sheets("Models").Cells(2 + fila, columna + 1) = ProvaJordi.getTime End Function En referencia a las funciones 1 y 2 comentadas en la memoria, consiste en variar la manera de limitar el tiempo según las características concretas de cada una de las funciones, llegando así a plantear dos diferenciadas distribuciones de los 18000 segundos máximos de tiempo de ejecución. A.2.2.1.3. Tabla comparativa de resultados (temporales y de valores) En la siguiente tabla se dan los resultados encontrados con las diferentes resoluciones; se plasman los de los ejemplares que, como mínimo, se han resuelto con el modelo jerarquizado global y con una de las dos funciones que representan al jerarquizado sucesivo. Las diferentes columnas de la tabla corresponden, respectivamente, al problema, ejemplar, modelo de resolución, función utilizada, tiempo de resolución, tiempo ciclo óptimo, la secuencia de cargas ordenadas obtenidas por nuestra solución y el valor del parámetro δ. Como se podrá observar, no se escriben todas las cargas al detalle, se ha creído conveniente poner sólo en la tabla aquéllas necesarias para poder ver cuál de las alternativas de resolución planteadas da mejor resultado en cada caso concreto. Cuando sólo se ponga el valor de tiempo de ciclo, querrá decir que el resultado es el mismo para todas las metodologías de resolución tratadas en la tabla. Prob. Ej. Modelo F T.res. [s] T* [s] Cargas [s] δ Buxey 7 J.Global np 217 47 47 3,57E-08 Buxey 7 J.Sucesivo 1 141 47 47 * Buxey 7 J.Sucesivo 2 141 47 47 * Buxey 8 J.Global np 699 41 41 * Buxey 8 J.Sucesivo 1 15 41 41 * Buxey 8 J.Sucesivo 2 15 41 41 *
ANEXO: Exposición y Resolución del caso Multi-Min-Max en el Problema de Equilibrado de Líneas de Montaje Pág. 99 Buxey 9 J.Global np 13303 37 37 * Buxey 9 J.Sucesivo 1 18002 37 37 * Buxey 9 J.Sucesivo 2 4956 37 37 * Buxey 10 J.Global np 18003 34 34-34 0,03 Buxey 10 J.Sucesivo 1 4673 34 34-33 * Buxey 10 J.Sucesivo 2 4673 34 34-33 * Buxey 11 J.Global np 18002 32 32-31 0,03 Buxey 11 J.Sucesivo 1 1294 32 32-30 * Buxey 11 J.Sucesivo 2 1294 32 32-30 * Buxey 12 J.Global np 18002 28 28-28-28-28-28 3,57E-08 Buxey 12 J.Sucesivo 1 1565 28 28-28-28-28-27 * Buxey 12 J.Sucesivo 2 1565 28 28-28-28-28-27 * Buxey 13 J.Global np 18002 27 27-26-26 3,74E-04 Buxey 13 J.Sucesivo 1 1846 27 27-26-25 * Buxey 13 J.Sucesivo 2 1846 27 27-26-25 * Buxey 14 J.Global np 18002 25 25-25 0,04 Buxey 14 J.Sucesivo 1 18000 25 25-24 * Buxey 14 J.Sucesivo 2 10633 25 25-24 * Sawyer 7 J.Global np 3634 47 47 * Sawyer 7 J.Sucesivo 1 406 47 47 * Sawyer 7 J.Sucesivo 2 406 47 47 * Sawyer 8 J.Global np 18005 41 41 *
Pág. 100 ANEXO Sawyer 8 J.Sucesivo 1 16 41 41 * Sawyer 8 J.Sucesivo 2 16 41 41 * Sawyer 9 J.Global np 18005 37 37-37-36-36-36-36-36-36 2,68E-14 Sawyer 9 J.Sucesivo 1 1596 37 37-37-36-36-36-36-36-35 * Sawyer 9 J.Sucesivo 2 1596 37 37-37-36-36-36-36-36-35 * Sawyer 10 J.Global np 18005 34 34-33-33-33-33 2,97E-08 Sawyer 10 J.Sucesivo 1 5300 34 34-33-33-33-32 * Sawyer 10 J.Sucesivo 2 5300 34 34-33-33-33-32 * Sawyer 11 J.Global np 18002 31 31 * Sawyer 11 J.Sucesivo 1 18002 31 31 * Sawyer 11 J.Sucesivo 2 16230 31 31 * Sawyer 12 J.Global np 18003 28 28-28-28-28 3,57E-06 Sawyer 12 J.Sucesivo 1 18003 28 28-28-28-27 * Sawyer 12 J.Sucesivo 2 13904 28 28-28-28-27 * Sawyer 13 J.Global np 18003 26 26-26-26 3,88E-04 Sawyer 13 J.Sucesivo 1 5677 26 26-26-25 * Sawyer 13 J.Sucesivo 2 5677 26 26-26-25 * Lutz1 8 J.Global np 145 1860 1860 * Lutz1 8 J.Sucesivo 1 44 1860 1860 * Lutz1 8 J.Sucesivo 2 44 1860 1860 * Lutz1 10 J.Global np 18001 1526 1526 * Lutz1 10 J.Sucesivo 1 701 1526 1526 *
ANEXO: Exposición y Resolución del caso Multi-Min-Max en el Problema de Equilibrado de Líneas de Montaje Pág. 101 Lutz1 10 J.Sucesivo 2 701 1526 1526 * Lutz1 11 J.Global np 18002 1400 1400-1400 0,05 Lutz1 11 J.Sucesivo 1 1994 1400 1400-1332 * Lutz1 11 J.Sucesivo 2 1994 1400 1400-1332 * Lutz1 12 J.Global np 18002 1400 1400-1276 0,02 Lutz1 12 J.Sucesivo 1 18002 1400 1400-1254 * Lutz1 12 J.Sucesivo 2 18000 1400 1400-1254 * Gunther 6 J.Global np 2 84 84 * Gunther 6 J.Sucesivo 1 12 84 84 * Gunther 6 J.Sucesivo 2 12 84 84 * Gunther 7 J.Global np 2765 72 72 * Gunther 7 J.Sucesivo 1 511 72 72 * Gunther 7 J.Sucesivo 2 511 72 72 * Gunther 8 J.Global np 16890 63 63 * Gunther 8 J.Sucesivo 1 188 63 63 * Gunther 8 J.Sucesivo 2 188 63 63 * Gunther 9 J.Global np 1674 54 54 * Gunther 9 J.Sucesivo 1 17 54 54 * Gunther 9 J.Sucesivo 2 17 54 54 * Gunther 10 J.Global np 18002 50 50-49-49-49-49 2E-08 Gunther 10 J.Sucesivo 1 1252 50 50-49-49-49-48 * Gunther 10 J.Sucesivo 2 1252 50 50-49-49-49-48 *
Pág. 102 ANEXO Gunther 11 J.Global np 18002 48 48-45-44-44-44-44-44 2,08E-12 Gunther 11 J.Sucesivo 1 3544 48 48-45-44-44-44-44-43 * Gunther 11 J.Sucesivo 2 3544 48 48-45-44-44-44-44-43 * Gunther 12 J.Global np 18003 44 44-42-42-41-41-41 2,27E-10 Gunther 12 J.Sucesivo 1 18000 44 44-42-42-41-41-40-40-39 * Gunther 12 J.Sucesivo 2 16774 44 44-42-42-41-41-40-40-40 2,3E-14 Gunther 13 J.Global np 18001 42 42-42-40 4,81E-04 Gunther 13 J.Sucesivo 1 18001 42 42-42-38-38-38-38-38 4,76E-10 Gunther 13 J.Sucesivo 2 17064 42 42-42-38-38-38-38-36 * Gunther 14 J.Global np 18001 40 42 5,05 Gunther 14 J.Sucesivo 1 18004 40 40-40-38-38-38-38-38-36 2,5E-14 Gunther 14 J.Sucesivo 2 15878 40 40-40-38-38-38-38-38-37 * Gunther 15 J.Global np 18004 40 40-40-39 2,6E-04 Gunther 15 J.Sucesivo 1 18004 40 40-40-38 * Gunther 15 J.Sucesivo 2 15753 40 40-40-38 * Killbridge 3 J.Global np 2 184 184 * Killbridge 3 J.Sucesivo 1 4 184 184 * Killbridge 3 J.Sucesivo 2 4 184 184 * Killbridge 4 J.Global np 2 138 138 * Killbridge 4 J.Sucesivo 1 6 138 138 * Killbridge 4 J.Sucesivo 2 6 138 138 * Killbridge 5 J.Global np 3 111 111 *
ANEXO: Exposición y Resolución del caso Multi-Min-Max en el Problema de Equilibrado de Líneas de Montaje Pág. 103 Killbridge 5 J.Sucesivo 1 8 111 111 * Killbridge 5 J.Sucesivo 2 8 111 111 * Killbridge 6 J.Global np 31 92 92 * Killbridge 6 J.Sucesivo 1 12 92 92 * Killbridge 6 J.Sucesivo 2 12 92 92 * Killbridge 7 J.Global np 5 79 79 * Killbridge 7 J.Sucesivo 1 19 79 79 * Killbridge 7 J.Sucesivo 2 19 79 79 * Killbridge 8 J.Global np 18004 69 69 * Killbridge 8 J.Sucesivo 1 18000 69 69 * Killbridge 9 J.Global np 18006 62 62 * Killbridge 9 J.Sucesivo 1 525 62 62 * Killbridge 9 J.Sucesivo 2 525 62 62 * Killbridge 10 J.Global np 18007 56 56-56-55 * Killbridge 10 J.Sucesivo 1 18002 56 56-56-56 1,8E-04 Killbridge 10 J.Sucesivo 2 2328 56 56-56-56 1,8E-04 Killbridge 11 J.Global np 18004 55 55-51-51-51-51-50 1,8E-04 Killbridge 11 J.Sucesivo 1 18002 55 55-51-51-51-51-51 1,8E-04 Killbridge 11 J.Sucesivo 2 13681 55 55-51-50 * Hahn 3 J.Global np 2 4787 4787 * Hahn 3 J.Sucesivo 1 4 4787 4787 * Hahn 3 J.Sucesivo 2 4 4787 4787 *
Pág. 104 ANEXO Hahn 4 J.Global np 2 3677 3677 * Hahn 4 J.Sucesivo 1 6 3677 3677 * Hahn 4 J.Sucesivo 2 6 3677 3677 * Hahn 5 J.Global np 2 2823 2823 * Hahn 5 J.Sucesivo 1 8 2823 2823 * Hahn 5 J.Sucesivo 2 8 2823 2823 * Hahn 6 J.Global np 2 2400 2400 * Hahn 6 J.Sucesivo 1 10 2400 2400 * Hahn 6 J.Sucesivo 2 10 2400 2400 * Hahn 7 J.Global np 4 2336 2336-2320-2141 3,39E-05 Hahn 7 J.Sucesivo 1 13 2336 2336-2320-2133 * Hahn 7 J.Sucesivo 2 13 2336 2336-2320-2133 * Hahn 8 J.Global np 77 1907 1907 * Hahn 8 J.Sucesivo 1 15 1907 1907 * Hahn 8 J.Sucesivo 2 15 1907 1907 * Hahn 9 J.Global np 3 1827 1827-1775-1629-1616- 1591 3,19E-08 Hahn 9 J.Sucesivo 1 32 1827 1827-1775-1629-1616- 1533 * Hahn 9 J.Sucesivo 2 32 1827 1827-1775-1629-1616- 1533 * Hahn 10 J.Global np 6 1775 1775-1629-1616-1555 1,25E-06 Hahn 10 J.Sucesivo 1 31 1775 1775-1629-1616-1533 *
ANEXO: Exposición y Resolución del caso Multi-Min-Max en el Problema de Equilibrado de Líneas de Montaje Pág. 105 Hahn 10 J.Sucesivo 2 31 1775 1775-1629-1616-1533 * Warnecke 3 J.Global np 2 516 516 * Warnecke 3 J.Sucesivo 1 4 516 516 * Warnecke 3 J.Sucesivo 2 4 516 516 * Warnecke 4 J.Global np 3 387 387 * Warnecke 4 J.Sucesivo 1 7 387 387 * Warnecke 4 J.Sucesivo 2 7 387 387 * Warnecke 5 J.Global np 3 310 310-310-310-310 * Warnecke 5 J.Sucesivo 1 12 310 310-310-310-309 * Warnecke 5 J.Sucesivo 2 12 310 310-310-310-309 * Warnecke 6 J.Global np 18002 258 258 * Warnecke 6 J.Sucesivo 1 2762 258 258 * Warnecke 6 J.Sucesivo 2 2762 258 258 * Warnecke 7 J.Global np 18005 222 222-222 4,5E-03 Warnecke 7 J.Sucesivo 1 18000 222 222-221 * Warnecke 8 J.Global np 18005 194 195 0,52 Warnecke 8 J.Sucesivo 1 4345 194 194 * Warnecke 8 J.Sucesivo 2 4345 194 194 * Warnecke 9 J.Global np 18005 172 173-173-173-173-173- 173-172 * Warnecke 9 J.Sucesivo 1 18003 172 173-173-173-173-173- 173-173 5,78E-13 Warnecke 9 J.Sucesivo 2 13500 172 173-173-173-173-173- 5,78E-13
Pág. 112 ANEXO Mukherje 16 J.Global np 18005 268 271 0,74 Mukherje 16 J.Sucesivo 1 18003 268 269 * Mukherje 17 J.Global np 18000 251 252 0,40 Mukherje 17 J.Sucesivo 1 18003 251 251 * Arcus2 3 J.Global np 3 50133 50137 6,02E-03 Arcus2 3 J.Sucesivo 1 6 50133 50134 * Arcus2 4 J.Global np 4 37600 37603 5,32E-03 Arcus2 4 J.Sucesivo 1 15 37600 37601 * Arcus2 5 J.Global np 217 30080 30083 6,72E-03 Arcus2 5 J.Sucesivo 1 102 30080 30081 * Arcus2 6 J.Global np 1536 25067 25069-25067 * Arcus2 6 J.Sucesivo 1 18000 25067 25069 7,98E-05 Arcus2 7 J.Global np 18003 21486 21489 9,40E-03 Arcus2 7 J.Sucesivo 1 18000 21486 21487 * Arcus2 8 J.Global np 18003 18800 18801 * Arcus2 8 J.Sucesivo 1 18000 18800 18807 0,03 Arcus2 9 J.Global np 18003 16711 16719 0,03 Arcus2 9 J.Sucesivo 1 18003 16711 16714 * Arcus2 10 J.Global np 18003 15040 15086 0,29 Arcus2 10 J.Sucesivo 1 18004 15040 15043 * Barthold 3 J.Global np 4 1878 1878 * Barthold 3 J.Sucesivo 1 7 1878 1878 *
ANEXO: Exposición y Resolución del caso Multi-Min-Max en el Problema de Equilibrado de Líneas de Montaje Pág. 113 Barthold 3 J.Sucesivo 2 7 1878 1878 * Barthold 4 J.Global np 4 1409 1409-1409-1409 7,03E-06 Barthold 4 J.Sucesivo 1 11 1409 1409-1409-1408 * Barthold 4 J.Sucesivo 2 11 1409 1409-1409-1408 * Barthold 5 J.Global np 33 1127 1127 * Barthold 5 J.Sucesivo 1 18005 1127 1128 0,09 Barthold 5 J.Sucesivo 2 18000 1127 1128 0,09 Barthold 6 J.Global np 304 939 939 * Barthold 6 J.Sucesivo 1 18000 939 939 * Barthold 6 J.Sucesivo 2 9032 939 939 * Barthold 7 J.Global np 292 805 805 * Barthold 7 J.Sucesivo 1 18000 805 805 * Barthold 7 J.Sucesivo 2 9052 805 805 * Barthold 9 J.Global np 18004 626 628 0,16 Barthold 9 J.Sucesivo 1 18010 626 627 * Barthold 9 J.Sucesivo 2 13394 626 627 * Tabla A.2.2. Resultados resoluciones con heurísticas de limitación de tiempo A.2.2.2. Heurística independiente de los modelos exactos, adhoc En la siguiente tabla se dan los resultados encontrados. Las diferentes columnas de la tabla corresponden, respectivamente, al problema, ejemplar, cargas iniciales obtenidas con heurística inicial de preproceso, cargas finales obtenidas con la heurística desarrollada Multi-Min-Max y, finalmente, los valores del parámetro δ para la solución inicial y final.
Pág. 114 ANEXO Prob. Ej. Cargas iniciales [s] Cargas finales [s] δ inicial – δ final Buxey 7 49-49-48-48-46-43-41 49-49-48-48-46-43-41 4,2981 – 4,2981 Buxey 10 35-35-34-34-34-34-31- 30-30-27 35-35-34-34-34-34-31- 30-30-27 3,0003 – 3,0003 Sawyer 10 35-35-34-34-34-34-31- 30-30-27 35-35-34-34-34-34-31- 30-30-27 3,0003 – 3,0003 Sawyer 13 28-28-28-28-28-28-27- 26-25-25-23-21-9 28-28-28-28-28-28-27- 26-25-25-23-21-9 7,7704 – 7,7704 Lutz 1 8 1946-1860-1834-1816- 1802-1664-1620-1598 1946-1858-1802-1790- 1780-1702-1664-1598 4,6464 – 4,6451 Lutz1 11 1400-1380-1330-1324- 1310-1290-1282-1246- 1214-1192-1172 1400-1380-1330-1324- 1310-1290-1282-1246- 1214-1192-1172 0,0343 – 0,0343 Gunther 8 65-65-64-64-63-61-59- 42 65-64-63-63-63-62-59- 44 3,2386 – 3,2225 Gunther 11 50-50-49-49-48-48-48- 42-38-32-29 50-50-48-46-46-46-44- 43-43-38-29 4,2719 – 4,2717 Killbridge 6 93-92-92-92-90 93-92-92-92-90 1,0978 – 1,0978 Killbridge 7 81-81-81-81-81-80-67 81-80-79-79-78-78-77 0,0256 – 0,0254 Tabla A.2.3. Resultados resoluciones con heurística adhoc