Explora Libros electrónicos
Categorías
Explora Audiolibros
Categorías
Explora Revistas
Categorías
Explora Documentos
Categorías
Seminario de Titulación
para optar
al título de Ingeniero en Computación
PROFESOR PATROCINANTE:
Sra. Sandra Ruiz Aguilar
necesité.
Agradecimientos.
A Jorge Astudillo por todas sus enseñanzas en Java y por todo el apoyo brindado.
Marcelo Garrido, Alfredo Fiebig, Edgard Schultz, Jesús Estay, Gonzalo Ojeda,
Gerardo Felmer, Jimena Avendaño, Ximena Calisto y a todos los que de alguna
u otra forma intervinieron terrenal y espiritualmente para que esta tesis haya sido
escrita.
A mi profesora patrocinante Sandra Ruiz por ser quien me ayudó a corregir este
fechas límite.
ÍNDICE
ABSTRACT. ........................................................................................................ 0
SÍNTESIS.
1. Introducción. ................................................................................................... 1
2. Objetivos ......................................................................................................... 5
4. Metodología. ................................................................................................. 21
5. Recursos. ...................................................................................................... 25
5.1 Hardware. ............................................................................................... 25
5.2 Software.................................................................................................. 26
Materiales). .................................................................................... 32
Disponibles. ................................................................................... 43
....................................................................................................... 44
....................................................................................................... 45
7. Elaboración ................................................................................................... 49
8. Construcción ................................................................................................. 85
9 Transición ...................................................................................................... 98
(Individuo). ........................................................................................................ 70
.......................................................................................................................... 11
Figura 27: Diseño lógico de la base de datos de pruebas del proyecto. ........... 89
Figura 28: Diseño físico de la base de datos de pruebas del proyecto. ............ 90
La metodología usada para el desarrollo del sistema fue AUP (Agile Unified
La mayor complejidad técnica del sistema viene dada por el estudio, análisis e
ordene los procesos de despacho, que provea de una ayuda administrativa a los
The current seminar’s main purpose is to show the design, analysis and
Covepa. To achieve this development for web platform and Object Oriented
Programming is applied.
AUP (Agile Unified Process) is used as methodology because it fits better to the
project type and offers the most appropriated tools needed to accomplish the final
objective.
The system’s major technical complexity is given for the study, analyze and
the load for trucks available at Covepa. For this reason the complexity domain is
Scientific Computing.
Once the Project is running Covepa gets a system that manages the dispatch
en las distintas sucursales a lo largo de varias comunas del sur de Chile. Esta
que éste sea hecho de la mejor forma posible por los encargados de la sección.
los distintos camiones disponibles de tal manera que la gestión del despacho se
vea facilitada.
1
productividad de la organización debido a los tiempos de aprendizaje de uso del
empresa y ésta tiene muy buena experiencia generando sus propias soluciones
largo del tiempo. Para lograr lo anterior se hicieron entrevistas con los
seminario de titulación:
2
El capítulo 1 está dedicado a la presente introducción.
utilizaron.
desarrollo usada. Además se muestra el diseño, Look & Feel de la interfaz gráfica
usada.
3
El capítulo 9 muestra la etapa de elaboración de la metodología AUP.
4
2 Objetivos.
siguientes:
de despacho.
5
3. Planteamiento del Problema.
3.1 Antecedentes.
caracteriza por generar lazos de cercanía con sus clientes y tener la disposición
ellos.
6
- Despacho a clientes fuera de la sucursal. Aquí los pedidos involucran
la compra.
central de Covepa ubicada en Puerto Varas por lo que es común que muchos
Estos despachos no son manejados de una manera formal por los encargados.
productos comprados que contiene los datos del cliente, la forma y dirección de
7
3.1.2 Esfuerzos anteriores.
recursos humanos.
Para este caso existen módulos para distribución que podrían ser aplicables a
a) SAP.
con clientes tan importantes como 3M, AMD, Ebay, IBM, Lenovo y
8
Figura 1: SAP. Estructura General y detalles de módulos.
funcionamiento.
- Recogidas de materiales.
- Despacho.
- Facturación.
9
Figura 2: Estructura interna del módulo SAP SD.
b) Oracle.
10
- Administración Financiera.
- Gestión de Proyectos.
- Generación de Reportes.
11
c) Microsoft Dynamics AX para distribución.
[Microsoft2013]
- Ajustes de inventario.
12
Estos ERP son de comprobada eficacia en cada uno de sus módulos y están
Covepa es una empresa que apoya mucho los desarrollos internos y las
los casos los presupuestos para instalación y puesta en marcha de un ERP son
sobrepasados.
- Los ERPs funcionan con una licencia que tiene un costo anual.
- Los ERP son vistos como sistemas muy rígidos, y difíciles de adaptarse al
compañías, este punto se cita como una de las principales causas de falla.
- Todos los ERP son propietarios y no se tiene acceso al código fuente para
13
3.1.3 Solución Propuesta.
Covepa tiene claro que el sistema de despachos funciona aunque no existe una
para todos.
manera de ofrecer una sugerencia para la estiba final de los camiones en forma
Software.
14
El producto final es un sistema web desarrollado en Java que genere los
15
Personal de Informática Covepa Se encargarán de ofrecer toda la
información referente a las bases de
datos e información técnica de los
puntos de trabajo y la tecnología
disponible para implementar la
solución final.
16
Figura 5: Diagrama simplificado de Solución Propuesta.
3.2 Justificación.
El flujo de trabajo consiste en recibir un listado con los productos que deben
17
camiones de distinto tamaño y ellos deben acomodar ese listado de productos de
La ejecución de este proyecto toma en cuenta todos los factores que considera
empleados que llevan años haciendo su trabajo de la forma que les da buenos
empresa que tienen pueden ser susceptibles de mejorar tales como las bodegas
de almacenamiento.
18
3.3 Delimitación.
deben realizar entrevistas las cuales se harán por un espacio no mayor a una
semana.
- Se trabajará con una base de datos de muestra que será modificada para
serán ajustados para que puedan ser procesados con los fines indicados.
llamados ortoedros (cuerpos geométricos "en forma de caja", en la que todos sus
ángulos - en cada cara -, son ángulos rectos) para la simplificación del cálculo
del volumen de cada ítem. Por ejemplo un saco de alimento para perros no es un
19
para el despacho de los productos. Este resultado no considera la distribución
delimitado al uso de camiones sin que esto signifique que no pueda ser
20
4. Metodología.
La metodología que se usará será AUP (Agile Unified Process). Esta es una
Incluye técnicas de desarrollo ágiles tales como Test Driven Development (TDD)
La figura 6 grafica el ciclo de vida de AUP. Describe las fases y disciplinas que
proyecto:
21
En la metodología AUP establecen 4 fases de consecutivas:
del nuevo sistema, tanto del cliente como del equipo de desarrollo, y
arquitectura.
Estas fases se pueden repetir en varias iteraciones a lo largo del desarrollo del
proyecto.
la metodología:
22
Tabla 2: Actividades para este proyecto usando la metodología AUP.
Metodología AUP
Fase Actividades
23
medida precautoria para respaldar el código en sus
distintas etapas de desarrollo.
24
5. Recursos.
5.1 Hardware.
Tabla 3: Hardware
Hardware
Notebook HP G56-127NR.
Procesador: AMD V140 @ 2.3GHz, 64 Bit
RAM: 5GB
Disco Duro: 250GB 5400 RPM (Interno)
Disco duro Externo LG de 1 TB para respaldos manuales.
Este equipo fue usado en todas las etapas del desarrollo de la tesis. Inicialmente
tenía sólo 2 GB de RAM, pero cuando se instaló del IDE de desarrollo Netbeans
se notó que este demoraba mucho en compilar el proyecto por lo que se optó por
equipo.
25
Adicionalmente al respaldo de código en el servidor SVN se respaldaron los
5.2 Software.
Tabla 4: Software
Software
Windows de 64 bits.
restricciones de uso.
26
conoce también como svn por ser el nombre de la herramienta
la carga de camiones.
27
Enterprise Architect: es una herramienta visual para el
Otro motivo muy poderoso para usar este lenguaje de programación es el hecho
él.
28
6. Desarrollo del proyecto
6.1 Conceptualización.
productos llegan y por lo tanto es la sucursal que presenta todos los casos
particulares de despacho.
la recepción de los datos para ejecutar los despachos cuando sea pertinente.
29
Tabla 5: Recepción de listado de productos.
determina.
30
Despacho por Traslado a otras Sucursales: Se despachan
Este es el tipo de despacho más simple de hacer ya que es el mismo cliente quien
retira los productos que compró en bodega. De esta forma lo que se hace es
vendedor que se los despache a una cierta dirección en un día y rango horario
determinado.
los productos en los camiones que tiene disponibles ese día. La carga es
31
6.1.2.3 Despacho a Sucursales (STM: Solicitud Traslado Materiales).
generada por las sucursales. El Jefe de Bodega es quien decide, basado en los
en qué cantidades son enviadas a las sucursales. Este proceso queda fuera del
entrada al sistema.
de Puerto Varas se establecen que los datos que presentan mayor importancia
para llevar a cabo los despachos son los que se detallan a continuación:
32
Tabla 7: Datos del cliente
Patente de la rampa
Carga Máxima
Largo
33
Ancho
Alto
Código
Nombre
Restricción
Ancho
Largo
Alto
Volumen
Peso
Desde un principio, en las reuniones para fijar los requerimientos, se habló de las
delimitaciones que tendría el proyecto por lo que éstas estaban acotadas a lo que
cliente siempre trata que el sistema cubra todas las necesidades que existen y
34
fue necesario dejarle en claro que por los tiempos y alcances de este proyecto
debían acotarse los requerimientos para que puedan ser cumplidos en el plazo
que se tenía. Entendido esto las reuniones fueron más productivas para los
Las reuniones de toma de requerimientos a nivel global, esto quiere decir para
fijar los objetivos macros del sistema, fueron hechas con el Gerente de
de Puerto Varas.
disponibles en la sucursal.
35
Una vez realizado el despacho se almacenan los datos del despacho y se hace
dicho despacho.
planificación de los despachos en forma oportuna con los clientes. Citando sus
palabras: “el cliente de Covepa está acostumbrado a recibir los artículos que
adquirió en la fecha acordada con el vendedor. Eso se lleva haciendo por mucho
clientes”.
36
Tabla 10: Identificación de los usuarios de SIGEDES
entrada a procesar por SIGEDES. A este listado de productos que vienen con los
calcula el peso y volumen total del pedido completo. Esto se hace con todos los
37
6.2.4 Generación y especificación de los casos de uso
38
6.2.4.1 Caso de Uso SIGEDES-CU-01 Autenticar Usuario.
39
6.2.4.2 Caso de Uso SIGEDES-CU-02 Generar Bultos
40
6.2.4.3 Caso de Uso SIGEDES-CU-03 Calcular Peso Volumen.
41
6.2.4.4 Caso de Uso SIGEDES-CU-04 Agregar Camión.
42
6.2.4.5 Caso de Uso SIGEDES-CU-05 Seleccionar Camiones Disponibles.
43
6.2.4.6 Caso de uso SIGEDES-CU-06 Generar Plan de Despacho.
44
6.2.4.7 Caso de Uso SIGEDES-CU-07 Modificar Plan de Despacho.
45
6.2.4.8 Caso de Uso SIGEDES-CU-08 Mantener Sistema.
Este caso de uso no genera ninguna pantalla de usuario ya que son actividades
que sí son necesarias de hacer tanto como para la instalación del sistema como
46
6.3 Diagramas de Casos de Uso de SIGEDES.
Software no tiene gran complejidad por lo que los diagramas de casos de uso
47
6.3.2 Diagrama de caso de uso SIGEDES Principal.
48
7 Elaboración
con el CLP (Container Loading Problem). Este tipo de problemas, desde el punto
49
7.2 Validación de la arquitectura en base a los requerimientos
siguiente figura:
cambio, sólo se ataca al nivel requerido sin tener que revisar entre código
50
mezclado. Un buen ejemplo de este método de programación sería el modelo de
capa de presentación está representada por las páginas que son visualizadas por
para el cual fue optimizado el sistema fue Firefox. Este es un navegador libre
contenido web.
En esta capa residen los programas que se ejecutan, se reciben las peticiones
todas las reglas que deben cumplirse. Esta capa se comunica con la capa de
presentación, para recibir las solicitudes y presentar los resultados, y con la capa
51
En este caso la tecnología de Tomcat, Glassfish y MOEA Framework son los que
formada por uno o más gestores de bases de datos que realizan todo el
de Datos de código abierto Apache Derby soportaba por Oracle. Respeta los
estándares ANSI/ISO SQL a través de las APIs JDBC y Java EE. Entre sus
comercial.
Embebible en aplicaciones.
52
7.3 Prototipado.
I. Login.
7.3.1.1 Navegación.
secuencia del proceso. De esta forma se consiguió que la navegación por las
más claro.
53
Figura 18: Navegación por las pantallas de SIGEDES.
54
7.3.1.2 Página de Login.
sistema:
55
7.3.1.3 Página Generar Plan de Despacho.
56
7.3.1.4 Página Agregar Nuevo Camión.
57
7.3.1.5 Página Plan de Despacho.
58
7.3.1.6 Página Plan de Despacho Aprobado.
59
de la solución final o dependiendo de qué tanto se acote el problema en cuando
Esto último que te digo tiene que ver con el planteamiento tuyo que dice: no
considera la distribución uniforme de los pesos de la carga en el
camión (carga contrapesada). Desde mi punto de vista, esta delimitación deja el
problema en el campo de las soluciones inservibles, poco interesantes, pues en
la práctica no creo que ninguna empresa la adopte. ”
Considerando esta opinión experta del Profesor Cala, y muy realista desde el
apoyo humano que está involucrado dentro del problema, vale decir, la solución
60
Para hacerse una idea acabada de solución se consideraron 2 papers que
paralelos [ARMAS2012].
ordenamiento usado.
61
La investigación realizada y la tendencia de las soluciones usadas en forma
conclusión luego de analizar que en un problema de CLP como este pueden tener
múltiples ordenamientos factibles de ser los más óptimos desde el punto de vista
posible que los resultados obtenidos en dos ejecuciones distintas difieran sólo un
una única función que engloba todos los objetivos del problema. Este conjunto
de Pareto [GOLDBERG1989].
para cualquier punto de la zona T no existe ningún otro punto que mejore un
objetivo sin empeorar el otro por lo que el Frente de Pareto proporciona siempre
62
eje, el cual, representa siempre la mejor solución Pareto-óptima en ese punto. Si
empeorar f1.
desempeño de los mismos para asegurar que sean aplicables a los problemas
63
paralelismo al diseño de estos algoritmos por lo que finalmente se usaron
cual, puede ser muy costoso de obtener desde el punto de vista computacional o
óptimo verdadero.
ventajas ya que une las características propias de los MOEAs con las ventajas
del cómputo paralelo. Básicamente los MOEAs intentan buscar soluciones tan
Modelo Maestro-Esclavo.
Modelo de difusión.
64
Modelo de Islas.
En el modelo maestro esclavo son éstos los que realizan el cálculo de la función
un algoritmo secuencial
65
necesita de alguna estructura que restrinja la selección y recombinación entre
de islas es que los individuos de una población particular pueden migrar de forma
evolutivos trabajan en cada isla, lo que implica que las distintas poblaciones se
Cada isla también podría tener distintos parámetros así como diferente estructura
de MOEA. Además, individuos de una isla podrían migrar a otra isla de acuerdo
66
El modelo de islas requiere la selección de políticas de migración que señalen
entre otras:
el número de migrantes.
la frecuencia de migración.
diferentes islas.
67
El seudocódigo de la siguiente tabla muestra que un algoritmo evolutivo mantiene
actualización):
Variables Locales
Pob, Hijos, Padres: Arrays de Individuos
Pob ← IniciarPoblacion(TamañoPob)
While NOT TerminacionEA()
Pob ← RealizarMutacion(Pob);
Padres ← SeleccionarNMejores(Pob);
Hijos ← Reproducir(Padres);
Actualizar Población(Pob, Hijos);
If Convergencia(Pob) Then
ReiniciarPoblacion(Pob);
Return Mejor Solucion o frente
68
7.4.2.1 Inicio de la Población.
Variables Locales
Individuo: individuo
Pob: Array de Individuos
For j ← 1 To TamanoPob
Individuo ← IndividuoIngresado();
Optimizador(Individuo);
Pob(j) ← Individuo;
Return Pob
ya que es la que mueve y hace evolucionar la solución propuesta final. Cabe decir
69
Tabla 14: Algoritmo optimizador genérico (Procedimiento Optimizador (Individuo)).
Variables Locales
nuevo: individuo
Repeat
nuevo ← AplicarOperador(Individuo);
If F(nuevo) es mejor que F(Individuo) Then
Individuo ← nuevo;
Until TerminacionOptimizadorLocal();
Return Individuo
El optimizador opera con una solución al problema elegida al azar y sobre ella
no hay una mejora en las mutaciones luego de una cantidad dada de iteraciones.
70
7.4.2.2 Selección de los mejores individuos.
que otro se utiliza una función guía. La selección y la actualización son las
este caso las peores soluciones están determinadas por aquellas que ofrecen
una mayor cantidad de camiones ocupados por despacho por lo que se descartan
7.4.2.3 Reproducción.
elegidos para tal fin (lista de ítems a ordenar), lo cual, recibe el nombre de
71
La tabla 15 muestra un algoritmo para la reproducción en la que se detalla el
Variables Locales
padre, madres, hijo: individuo
For i ← 1 To NumeroHijos
padre ← ElegirPadre(poblacion);
madre ← ElegirPadre(poblacion);
hijo ← Recombinar(padre, madre);
OptimizadorLocal(hijo);
Hijos(i) ← hijo;
Return Hijos
El reinicio es otro componente básico de los EAs ya que dependen de éste para
explorar soluciones de una población con una gran similitud entre todos los
por ejemplo [Davidor1992] la que plantea que cuando la entropía cae bajo cierto
72
umbral, los individuos de la población se sustituyen por otros pudiendo conservar
población actual en la nueva para luego llenar los espacios con nuevos individuos
para ésta: a) Ejecutar el algoritmo una cantidad fija de veces las que se conocen
como generaciones o b) obligar a que pasen una cierta cantidad de veces por la
función guía. Para este caso se usó una condición de parada de 25.000
evaluaciones.
73
7.4.2.6 Obtención de Resultados.
Para obtener el mejor individuo de todas las generaciones por las que ha pasado
configuración de cada uno guardando en este archivo las posiciones de los ítems
Luego de dejar en claro el marco teórico de lo que son los EAs y cómo funcionan
para Java usado para resolver el problema de CLP que compete a esta tesis.
disponibles. Este framework para Java es de uso libre y Open Source. Es usado
algoritmos son proporcionados listos para ser usados como NSGA-II, ε-MOEA,
74
GDE3, y MOEA/D, proveyendo además las herramientas necesarias para
optimización. [MOEA2013]
Para hacer uso de las herramientas y los algoritmos internos que posee este
I. Executor (Ejecutor).
Executor.
75
Tabla 17: Paso de los 3 parámetros básicos necesarios al Executor.
La línea 1 crea una nueva instancia del Executor, las líneas 2, 3 y 4 fijan el
aproximados.
Una vez que la ejecución del experimento termina se puede acceder a los
variable result. Este set de aproximación contiene todas las soluciones Pareto-
76
Tabla 18: Acceder a los resultados entregados por el framework.
La línea 1 itera sobre cada solución en el resultado. Una solución guarda las
Las líneas 2 y 3 muestran cómo los valores objetivos pueden ser obtenidos desde
una solución.
de este documento.
77
algoritmo, o sea, provee piezas de código que graban información. Los rangos
I. Elapsed time.
V. Restart frecuency.
El Instrumenter trabaja mano a mano con el Executor para recolectar los datos.
78
La línea 1 crea una instancia del Instrumenter, la línea 2 especifica el problema y
la línea 3 fija la frecuencia en la que los datos son grabados, en este ejemplo los
datos son grabados cada 100 evaluaciones. Finalmente en la línea 4 indica que
Luego, se debe crear y configurar la instancia del Executer con el siguiente trozo
de código:
Este trozo de código es similar a los ejemplos previos del Executor pero incluye
la línea 5, la cual, hace que todos los algoritmos que ejecute sean instrumentados
con la instancia del Instrumenter. Una vez que el Instrumenter está fijado y el
Instrumenter. Los datos son guardados en un objeto Acumulator. Este puede ser
79
Tabla 21: Acceder a los datos guardados en el Acumulator.
solo valor, el Acumulator guarda varios valores, uno por cada punto de datos
recolectado por el Instrumenter. Los datos pueden ser extraídos del Acumulator
de este documento.
80
Hay algunos cuidados que es necesario tener al usar el Instrumenter:
por attachGenerationalDistanceCollector.
Segundo, si el uso de memoria excede la que puede ser direccionada por Java
Si se configura el uso de toda la memoria RAM del con la opción –Xmx y aún se
innecesarios.
81
comparado con un resultado conocido. El Analizer es útil para comparar
se muestra a continuación.
El siguiente trozo de código muestra cómo el Executor es usado para correr los
82
Tabla 24: Ejemplo de uso del Executer y Analyzer
primer algumento para addAll. Esto genera un nombre para las muestras
recolectadas.
analyzer.printAnalysis();
de este documento.
83
MOEA Framework, sin embargo esta herramienta provee otras opciones
misma.
84
8 Construcción.
que permite ir generando un registro histórico del avance del proyecto. Además
muchas versiones del código del proyecto por lo que si en medio del desarrollo
volver a una versión anterior y comenzar desde ese punto a desarrollar el código
de versiones entre las que se cuentan CVS, Subversion y GIT, se habló con el
bits.
Cabe señalar que este servidor se pudo haber implementado en el mismo equipo
de desarrollo pero no tiene sentido hacerlo de esa forma ya que una de las
ventajas de los servidores de versiones es, entre otras, que sirva como respaldo
85
Desde el punto de vista de la seguridad que ofrece la sala de servidores, donde
está alojado el equipo con el SVN, se tienen las versiones del código en una sala
En la primera parte del proyecto se usó un servidor SVN. En la segunda parte del
Como Gestor de base de Datos (BDMS por sus siglas en Inglés) se usó Java DB,
usar y provee de una base de datos lo suficientemente robusta para soportar bien
esto se ejecuta el archivo SQL con la información de las tablas y sus atributos
86
con lo que se genera la estructura interna de las tablas, las cuales quedan listas
Con el fin de tomar como entrada de datos al sistema, a nivel de bases de datos,
debido a que ambos tipos de despacho tienen los datos comunes necesarios
87
Figura 26: Parte de la tabla ARTICU en la BD de producción de Covepa.
Para lograr adecuar la base de datos se tomaron todas las tablas que son de
producción y se le quitaron todos los datos que no sirven para los propósitos del
proyecto. Adicionalmente, como a estas tablas les faltan los datos de las medidas
de cada artículo para fines de cálculo volumétrico se agregan los campos largo,
ancho y alto. El peso de cada artículo, dato que es relevante para el proyecto, ya
pruebas.
88
Se usó la herramienta Case PowerDesigner 16.1 para modelar la base de datos
tanto en forma lógica como física. Esta herramienta permitió generar el script de
SQL el cual se ejecutó dentro de Netbeans y generó la base de datos con sus
tablas.
hecho en Covepa por lo que el principal trabajo consistió en aislar las tablas que
89
Figura 28: Diseño físico de la base de datos de pruebas del proyecto.
de los datos de las medidas para calcular el volumen de los artículos y la base
90
Se consideraron un total de 31 productos de los que, aparte de medir sus
medidas de ancho, largo y alto, se midieron las dimensiones de los pallets en que
factible de ser cargado en pallets tendrá estos datos disponibles para hacer la
planeación de la distribución.
que por su alto volumen son cargados como una unidad en sí, como por ejemplo
8.5 Testing.
Para testear la aplicación se hizo una simulación de uso del sistema en que se
crearon facturas con ítems a entregar para el día 20 de Diciembre de 2013. Las
91
Figura 29: Primera Factura para Testing.
16,492 mt3.
92
Figura 30: Segunda Factura para Testing.
mt3. En estricto rigor el peso total no es cero, pero se lo considera así debido al
factor peso volumen usado en los despachos, vale decir, el parámetro que pone
el peso de los ítems a despachar puede tomarse como un dato no relevante. Este
ejemplo fue hecho deliberadamente de esta forma para explicar este punto.
93
Figura 31: Tercera Factura para Testing.
46,020 mt3.
94
Figura 32: Cuarta factura para Testing.
La cuarta factura registra un peso Total de 1.590 Kg. y un volumen total de 3,254
m3.
95
Al tratarse de pedidos para la cuidad de Puerto Varas los camiones disponibles
volumen para ver dónde se puede acomodar la carga restante. Una vez hecho
que pertenece a la segunda factura por sí sola. Teniendo esto claro se puede
se podría decir que cabe en el camión de patente PK6237 pero esto no es posible
de la carga restante es de 31.273,5 Kg por lo que esta carga debe ser asignada
96
a cualquiera de los 2 camiones patente CVCD33 o SU6655 ya que ambos tienen
aprovechamiento óptimo del espacio esta es una solución acorde con tal premisa
de funcionamiento.
aplicación en terreno.
97
9 Transición
En esta etapa se considera una prueba hecha en terreno con los productos que
El testing final fue hecho bajo una situación controlada en terreno. Se recorrió la
98
Figura 34: Factura 2 de testing en terreno.
99
Figura 36: Factura 4 de testing en terreno.
100
Figura 38: Factura 6 de testing en terreno.
101
Figura 40: Factura 8 de testing en Terreno.
102
Figura 42: Factura 10 de testing en Terreno.
es estas facturas son ficticias y no tienen ninguna relación con identidades reales.
103
Para ingresar al sistema se debe hacer a través de la página de Login:
104
En esta página el usuario selecciona la fecha de despacho y presiona en el botón
buscar. Esto genera una consulta a la base de datos por todas las facturas que
Luego se seleccionan los camiones que están disponibles para ese día desde el
control desplegado en pantalla. Estos camiones son todos aquellos que están
de camiones para ser seleccionado y esté disponible para despachos. Para esto
con todos los campos necesarios para agregar otro a la base de datos. Cuando
se terminan de llenar todos los datos se presiona en enviar. Esta acción guarda
los datos para su posterior utilización. Una vez que se agrega un camión ya
105
Figura 46: Sigedes – Agregar Nuevo Camión.
106
Figura 47: Sigedes – Plan de Despacho.
a cada número de factura, los datos del cliente y los números de teléfono del
chofer y del cliente además del nombre de este último. Se muestra además un
Este informe puede ser impreso para que el personal que carga los camiones
107
Figura 48: Sigedes – Reporte de Plan de Despacho Aprobado.
108
10 Conclusiones y/o recomendaciones.
carga, sino que también es posible generar ahorros desde el punto de vista
mejora no se implementó ya que queda fuera del ámbito de esta tesis debido
a futuro.
codificando los algoritmos desde cero. Sin esta herramienta científica esta
109
tomarse el tiempo, tener la paciencia necesaria y la empatía con los usuarios
finales para que éstos se sientan comprometidos con la solución que se quiere
construir para ellos. Queda como experiencia que cuando se usan actividades
lo hace RUP) los documentos generados fueron los precisos para lograr la
110
a los clientes. Además aporta a la trazabilidad de los despachos realizados lo
111
11 Bibliografía.
http://www.ambysoft.com/unifiedprocess/agileUP.html
http://www.microsoft.com/es-es/dynamics/erp-ax-introduccion.as
http://www.oracle.com/lad/products/applications/jd-
edwardsenterpriseone/overview/index.html
http://es.wikipedia.org/wiki/Sistema_de_planificaci%C3%B3n_de_recursos_
empresariales
112
[PARRA2011] Proyecto fin de Magister: “Optimización de problemas
2010/2011.
http://archive-es.com/page/542457/2012-10-
28/http://repositorio.ual.es/jspui/handle/10835/809
http://www.congresomaeb2012.uclm.es/papers/paper_13.pdf
Multiobjetivo, 2003.
113
[DAVIDOR1992] Davidor Y. and Ben-Kiki O., “The interplay among the
http://www.moeaframework.org/
https://sourceforge.net/projects/moeaframework/files/MOEAFramework-
2.0/MOEAFramework-2.0-Manual.pdf/download
114
12 Anexos.
1 import java.util.Arrays;
2 import org.moeaframework.Executor;
3 import org.moeaframework.core.NondominatedPopulation;
4 import org.moeaframework.core.Solution;
5
6 public class Example1 {
7
8 public static void main(String[] args) {
9 NondominatedPopulation result = new Executor()
10 .withProblem("UF1")
11 .withAlgorithm("NSGAII")
12 .withMaxEvaluations(10000)
13 .run();
14 for (Solution solution : result) {
15 System.out.println(solution.getObjective(0)
16 + " " + solution.getObjective(1));
17 }
18 }
19 }
1 import java.io.IOException;
2 import java.io.File;
3 import org.moeaframework.core.NondominatedPopulation;
4 import org.moeaframework.Instrumenter;
5 import org.moeaframework.Executor;
6 import org.moeaframework.analysis.collector.Accumulator;
7
8 public class Example2 {
9 public static void main(String[] args) throws IOException {
10 Instrumenter instrumenter = new Instrumenter()
11 .withProblem("UF1")
12 .withFrequency(100)
13 .attachAll();
14
15 NondominatedPopulation result = new Executor()
.withProblem("UF1")
115
16 .withAlgorithm("NSGAII")
17 .withMaxEvaluations(10000)
18 .withInstrumenter(instrumenter)
19 .run();
20
21 Accumulator accumulator = instrumenter.getLastAccumulator();
22 for (int i=0; i<accumulator.size("NFE"); i++) {
23 System.out.println(accumulator.get("NFE", i) + "\t" +
24 accumulator.get("GenerationalDistance", i));
25 }
26 }
27
28 }
29
1 import java.io.IOException;
2 import org.moeaframework.Analyzer;}
3
import org.moeaframework.Executor;
4
5 public class Example3 {
6
7 public static void main(String[] args) throws IOException {
8 Analyzer analyzer = new Analyzer()
9 .withProblem("UF1")
10 .includeAllMetrics()
11
.showStatisticalSignificance();
12
13 Executor executor = new Executor()
14 .withProblem("UF1")
15
.withMaxEvaluations(10000);
16
17 analyzer.addAll("NSGAII",
18 executor.withAlgorithm("NSGAII").runSeeds(50));
19
20 analyzer.addAll("GDE3",
21 executor.withAlgorithm("GDE3").runSeeds(50));
22
23 analyzer.printAnalysis();
24 }
25
26 }
116