Esta guía de aprendizaje muestra cómo utilizar el Modeling Assistant para definir, formular y ejecutar un modelo para un problema de planificación de construcción de viviendas. El modelo completado con datos también se proporciona en los DO-samples, consulte Ejemplos de experimento deDecision Optimization (Python, OPL, Modeling Assistant).
El problema
Debe planificar y programar las actividades y los subcontratistas de un proyecto de construcción de viviendas. La planificación debe empezar en una determinada fecha. Todas las actividades (albañilería, carpintería, fontanería, etc.) deben planificarse y hay un orden especificado de actividades que debe respetarse (por ejemplo, las ventanas no se pueden colocar hasta que se termine el techo). Cada subcontratista puede llevar a cabo algunas de las actividades necesarias y con distintos niveles de cualificaciones. La planificación debe determinar la mejor (más temprana) hora de finalización para el proyecto de construcción, donde se han planificado todas las actividades y se haya decidido qué subcontratista asignar a cada actividad. Asimismo, le gustaría saber cómo optimizar el nivel de cualificación de sus subcontratistas en este proyecto.
Sus datos
Tiene datos para este proyecto, tal como se muestra en la siguiente hoja de cálculo. Para cada actividad, tiene la duración necesaria para completarla, las actividades que deben precederla y los posibles subcontratistas que están disponibles y cualificados para realizar dicha actividad.
A efectos de ilustración, solo se muestran 10 actividades y 3 subcontratistas. Con Decision Optimization es fácil cambiar los datos y resolver el mismo problema con conjuntos de datos más grandes.
Para cada actividad, también tiene datos sobre el nivel de experiencia que tiene cada subcontratista para la actividad. Cuanto más alto sea el número, más experiencia tiene el subcontratista. Si un subcontratista tiene un nivel de cualificación cero, no se le debe asignar la tarea. En la tabla siguiente, se muestra parte de esta hoja de cálculo.
También tiene una tabla que contiene los nombres de los subcontratistas (Joe, Jack, etc.) disponibles para este proyecto.
Obtener archivos de datos para este ejemplo
Los archivos de datos utilizados en este ejemplo están disponibles en DO-samples. Normalmente, los archivos ya están almacenados en un proyecto como un activo de datos o localmente en la máquina. Sin embargo, a efectos ilustrativos, para que pueda crear el modelo usted mismo, en este ejemplo primero descargará los archivos de datos en la máquina y, a continuación, los importará en el proyecto que acaba de crear. La formulación del modelo completo con datos importados también se proporciona como muestra, verHouseConstructionScheduling en muestras DO .
- Descargue y extraiga todos los DO-samples en la máquina.
- Abra el proyecto.
- Para abrir el panel de datos, pulse Añadir datos +.
- Seleccione Descartar archivos de datos aquí o buscar archivos para subir.
- Examine los DO-samples descargados para localizar
house_activity.csv
,house_expertise.csv
yhouse_subcontractor.csv
en la carpeta datasets . - Pulse Abrir. Los archivos se subirán como activos de datos en el proyecto.
Crear un Escenario
- Requisitos
- Para editar y ejecutar modelos de Decision Optimization , debe tener los siguientes requisitos previos:
- Roles Admin o Editor
- Debe tener los roles Admin o Editor en el proyecto. Los visores de proyectos compartidos sólo pueden ver experimentos, pero no pueden modificarlos ni ejecutarlos
- Servicio Machine Learning
- Debe tener un servicio de Machine Learning asociado con el proyecto. Puede añadir uno al crear un Decision Optimization experimento.
- Espacio de despliegue
- Debe tener un espacio de despliegue que esté asociado con el experimentode Decision Optimization . Puede elegir un espacio de despliegue al crear un experimentode Decision Optimization .
Para crear un Escenario:
- Abra el proyecto o cree un proyecto vacío.
- Seleccione la pestaña Activos .
- Seleccionar Nuevo activo > Resolver problemas de optimización en el Trabajar con modelos sección.
- En la ventana Nuevo Decision Optimization experimento que se abre, especifique un nombre.
- Si aún no ha asociado un servicio watsonx.ai Runtime a su proyecto, primero debe seleccionar Añadir un servicio Machine Learning automático para seleccionar o crear uno antes de elegir un espacio de despliegue para su experimento.
- Pulse Nuevo espacio de despliegue, especifique un nombre y pulse Crear (o seleccione un espacio existente en el menú desplegable).
- Pulse Crear. Se crea un escenario 1 junto con el modelo y trabaja en el escenario 1.
El Escenario especifica la combinación de datos y la formulación del modelo de optimización que desea resolver. Puede crear distintos escenarios con distintas variantes de datos y formulaciones de modelo.
Preparar datos
Se abre la IU de experimento que muestra la vista Preparar datos . Los archivos de datos que tiene en el proyecto se visualizan en el panel de datos. (Si es necesario, pulse para abrir el panel de datos.) Seleccione los tres archivos de ejemplo de viviendas y pulse Importar.
Los archivos de datos que ha importado se muestran ahora como tablas en la vista Preparar datos . La imagen siguiente muestra los archivos de datos house_activity.csv
, house_expertise.csv
y house_subcontractor.csv
importados en un Escenario.
Puede ver todos los datos desplazándolos en una tabla. También puede ver todos los datos pulsando el icono Abrir la tabla en modalidad completa de una tabla de datos determinada. Puede editar los valores de los datos directamente en la tabla, así como en la modalidad completa.
Elija el Modeling Assistant
- Pulse Crear modelo en la barra lateral y aparecerá una ventana emergente que le preguntará cómo desea formular el modelo (si desea utilizar la modalidad asistida con el Modeling Assistant o crear o importar un modelo en código Python, OPL, LP (CPLEX) o CPO.
- Seleccione Asistente de modelado.
Defina su dominio de decisiones
En la vista Modelo : seleccione el dominio de decisiones para el problema. En este caso, seleccione Programación. Los dominios de decisiones definidos actualmente son Planificación, Asignación de recursos, Dominios Selección y asignación y Oferta y demanda .
- Después de seleccionar el dominio, aparece una ventana emergente para que correlacione los datos con los conceptos de planificación Tareas y Recursos. Las tareas son lo que desea planificar y programar en el tiempo. Debe definir al menos una tarea para planificarla. En este ejemplo, sus tareas son actividades de construcción como, por ejemplo, la albañilería. Los recursos pueden ser humanos, máquinas, equipos o cualquier cosa que desee utilizar para las tareas. En este caso, los recursos son sus subcontratistas.
- En TAREAS, pulse Elegir una tarea y seleccione
house_activity
en la lista desplegable. A continuación, bajo RECURSOS, pulse Elegir un recurso y seleccionehouse_subcontractor
. Los nombres de las posibles tareas y los recursos que puede elegir se obtienen de los datos importados. Para este ejemplo, solo tiene que correlacionar actividades y subcontratistas, pero podría añadir otras correlaciones de recursos y tareas si fuera necesario para el modelo. Puede eliminar cualquier correlación pasando el ratón sobre ella y seleccionando el icono de supresión. - Pulse Continuar.
Cómo utilizarán las tareas los recursos
En la ventana, para cada tarea que se va a planificar, tiene tres opciones:
- Utilizar recursos con asignación: puede seleccionar todas las opciones y elegir que las actividades se asignen a subcontratistas específicos. Esto significa que desea obtener una planificación para las actividades de construcción de viviendas con la mejor secuencia de actividades de construcción de viviendas, teniendo en cuenta las horas de inicio, las duraciones, el orden de prioridad, etc., y con los subcontratistas nombrados asignados a las actividades. Esta opción está seleccionada de forma predeterminada.
- Utilizar recursos sin asignación: Puede utilizar recursos y borrar la marca del recuadro de selección Mientras se asigna... para elegir no asignar contratistas específicos a sus actividades. Esto significa que desea obtener una planificación para las actividades de construcción de viviendas con la mejor secuencia de actividades de construcción de viviendas, teniendo en cuenta las horas de inicio, las duraciones, el orden de prioridad, etc. Sigue queriendo que los números y tipos de subcontratistas que tiene disponibles sean considerados en el horario obtenido (por ejemplo 3 fontaneros, 2 carpinteros, ... ), pero no tienen que ser asignados a personas específicas (por ejemplo, Joe, Jack, Jim).
Cuando utiliza recursos, con o sin asignación, también puede añadir más restricciones de capacidad basada en el tiempo a su modelo. Por ejemplo, puede especificar límites en el número de subcontratistas que se pueden utilizar en paralelo en un determinado momento, o en la disponibilidad individual o total de subcontratistas en un período de tiempo.
Para ver un ejemplo de planificación sin asignación, consulte BridgeScheduling en DO-samples.
- Continuar sin recursos: puede borrar todas las opciones y pulsar Continuar para planificar las tareas ignorando todos los límites de recursos. Esto significa que desea obtener una planificación con la mejor secuencia de actividades de construcción de viviendas, teniendo en cuenta las horas de inicio, las duraciones, el orden de prioridad, etc, pero sin tener en cuenta a los subcontratistas.
Para este ejemplo:
- Elija el valor predeterminado con todas las opciones (Utilizar los recursos... Mientras se asigna...) y pulse Continuar.
El problema que desea resolver se formula ahora en una declaración concisa.
- Pulse Finalizar.
Volverá a la vistaModelo. Para editar de nuevo la definición de problema en cualquier momento, pulse el icono de intención de edición (lápiz) y vuelva a definir sus correlaciones y opciones de planificación.
La formulación de modelo
Ahora que ha especificado el problema que desea resolver, el Modeling Assistant le proporciona una formulación parcialmente completada en esta vistade modelo. El panel Objetivos y Restricciones contiene el modelo que ejecutará. El panel Añadir a modelo contiene más sugerencias que puede incluir en la formulación del modelo. Si ha redimensionado la ventana, es posible que el panel Añadir a modelo aparezca bajo el panel Objetivos y restricciones.
El modelo está formado por un objetivo que desea conseguir (maximizado o minimizado) y algunas restricciones que deben cumplirse. Para problemas de planificación como este, el objetivo es diseñar la mejor planificación. En este caso, la mejor es una en la que se minimice el tiempo necesario para completar todas las actividades. (Desea finalizar la construcción de vivienda lo antes posible, para reducir así los costes). Este objetivo, así como algunas restricciones de planificación estándar, se añaden automáticamente al modelo. También puede utilizar el campo de búsqueda Objetivos para buscar los objetivos y las restricciones.
- la programación se ejecute desde la hora de inicio definida para el proyecto de construcción
- a cada subcontratista no se le asigne más de una tarea a la vez.
- cada actividad tenga un subcontratista asignado
- todas las actividades estén presentes en la programación, es decir, que no omita ninguna actividad de la programación
- se respete la duración de cada actividad
Es posible que las restricciones aparezcan en un orden distinto. También hay una restricción que se añade automáticamente a todos los problemas de programación con la asignación. Esto le permite aceptar o rechazar la asignación de subcontratistas que tengan períodos no disponibles durante las actividades programadas. En este ejemplo, no se consideran los períodos no disponibles, por lo que se debe dejar esta restricción tal como aparece de forma predeterminada.
Algunas restricciones tienen detalles adicionales que se pueden visualizar u ocultar pulsando en las flechas en cada línea. Una barra junto a la restricción indica que hay un valor o una definición que debe añadir. Puede añadir elementos pulsando el término que aparece subrayado y escribiéndolo o seleccionándolo en una lista desplegable. Debe completar el modelo antes de ejecutarlo, pero antes de hacerlo, guarde primero una copia duplicando el escenario como se explica más adelante en esta sección.
En la vista de modelo del escenario, si pulsa el icono Sustituir junto a Modeling Assistant, volverá a la pantalla donde elija si desea crear el modelo en Python u OPL, con el Modeling Assistant o en un Python notebook o importar un modelo existente. Si opta por sustituir el modelo en esta etapa, sobrescribirá el modelo actual y perderá los cambios. Si desea conservar una copia de su trabajo actual en curso, cree un nuevo escenario antes de cambiar el modelo.
Duplicar el escenario
Para conservar una copia del modelo, realice una copia del escenario:
- Si el panel de escenario no está abierto, pulse el icono Escenarios.
- Pulse los tres puntos junto al Escenario 1 y seleccione Duplicar.
- Especifique un nombre para el nuevo escenario, Scenario 2, por ejemplo, y pulse Crear. Continuará trabajando en el escenario 2.
Completar el modelo
- Si es necesario, expanda la restricción de duración pulsando la flecha en esta línea para visualizar la definición completa. Seleccione definition que se muestra resaltado y elija el nombre de columna
Duration in days
. La unidad de duración predeterminada expresada en la unidad de duración predeterminada se añade al final de la restricción. Para modificarla, pulse unidad de duración predeterminada y seleccione días, aunque la unidad predeterminada es días. También puede modificar la unidad de duración predeterminada y personalizar cómo se definen las fechas y horas en el panel Valores. Una vez que haya completado la restricción de duración, la fila ya no se resaltará. - En la restricción de inicio de planificación, pulse la fecha mostrada. A continuación, especifique una fecha (o una fecha y hora) y selecciónela en el menú desplegable para sustituir la fecha mostrada actualmente. Si especifica una fecha sin una hora, la hora predeterminada será 00:00.
Las restricciones ya no se resaltan una vez que se han especificado valores. Sin embargo, el modelo no está terminado del todo. Si lo desea, puede asegurarse de que la planificación tenga en cuenta el orden de prioridad de las tareas para que cada actividad solo se inicie después de las que la precedan. Añadirá esta restricción más adelante.
Si el modelo tiene más objetivos y restricciones, puede buscarlos o filtrarlos utilizando el campo de búsqueda Buscar en mis objetivos y restricciones.
Puede elegir Inhabilitar o Eliminar cualquiera de los objetivos o restricciones del modelo pulsando los 3 puntos verticales al lado de la sentencia. Este menú también permite reorganizar el orden de las sentencias subiéndolas y bajándolas, y también permite duplicarlas.
Cuando haya completado el modelo, o cuando no haya objetivos o sigan restricciones resaltadas, puede ejecutarlo para encontrar una solución que decidirá la mejor programación óptima en función de los objetivos y las restricciones del modelo.
Ejecutar el modelo
Puede cambiar el límite de tiempo de resolución para el modelo en la Generar modelo vista pulsando la pestaña Valores junto a las sugerencias. Para este ejemplo, utilice el límite predeterminado. También se pueden establecer otros parámetros utilizando los parámetros Configuración de ejecución (consulte Configuración de los parámetros de ejecución para un escenario en un experimento de Decision Optimization para obtener más información).
En Escenario 2, pulse el botón Ejecutar . Cuando se ha encontrado un valor de objetivo inicial, se muestra un Objetivo combinado en un gráfico Progreso de la solución . Si desea finalizar esta ejecución antes de que se obtenga la solución óptima, puede abandonar pulsando Detener. Cuando se ha encontrado la solución óptima, se abre la vista Explorar solución .
Su solución
Cuando se haya completado la ejecución, podrá ver los resultados en Explore la solución vista. También puede pulsar Estadísticas de motor o Registro para ver el gráfico de solución e inspeccionar los archivos de registro. El primer separador de la Explorar solución vista muestra el objetivo (o los objetivos si tiene varios) con sus valores y ponderaciones. El separador Tablas de solución proporciona la mejor planificación con la asignación de actividades a los subcontratistas.
También puede descargar las tablas de solución como archivos csv
.
Si el modelo tenía restricciones conflictivas, estas se mostrarán en el separador Conflictos con las Relajaciones necesarias para resolver el modelo.
En Visualización vista, pulse GANT para visualizar la solución como un diagrama de Gantt.
Crear un escenario nuevo: modelo diferente, mismos datos
Aunque ha resuelto el modelo y ahora tiene la planificación óptima para sus actividades con subcontratistas asignados, todavía no ha considerado la prioridad de las actividades ni los datos de nivel de cualificación de los subcontratistas en las asignaciones. Estos escenarios permiten analizar y comparar distintos modelos y datos.
En primer lugar, examine un nuevo escenario con una restricción adicional:
En la vistadel modelo, se ofrecen otros objetivos y restricciones en el panel Sugerencias . Puede añadirlos a su modelo pulsando en ellos. Para ver otras sugerencias que no aparecen en la lista, empiece a escribir en el campo de búsqueda y pulse Intro o el botón Renovar. A continuación, puede examinar y añadir las propuestas visualizadas.
Para añadir la restricción de prioridad al modelo para asegurarse de que no haya retardos de tiempo entre las actividades:
- Duplique el escenario 2 y llámelo Escenario 3. A continuación, cierre el panel del escenario.
- En el panel Sugerencias de la vistadel modelo, escriba en lenguaje natural activity after preceding activities, por ejemplo, en el campo de búsqueda y pulse Intro.
- En la nueva lista de sugerencias, pulse Each house_activity starts after the end of preceding activities para añadirla a las restricciones.
La nueva restricción de prioridad aparece en la formulación de modelo.
- Vuelva a ejecutar el modelo (escenario 3) y consulte la nueva solución. Puede compararla con la solución que obtuvo en el escenario 2, cuando resolvió el modelo sin esta restricción. Para comparar soluciones, abra el panel Abrir panel de escenario y pulse cada escenario. También puede pulsar Gantt en la vista Visualización y comparar soluciones visualizadas como diagramas de Gantt para cada escenario.
- Duplique el escenario 3 y llámelo Escenario 4. A continuación, cierre el panel del escenario.
Para maximizar los niveles de cualificaciones de los subcontratistas en su asignación a las actividades:
- En la vistadel modelo, escriba overall
quality en el campo de búsqueda de sugerencias para buscar y añadir el objetivo siguiente al modelo:
Maximizar la calidad global de asignaciones house_subcontractor-house_activity según la tabla de valores de asignación.
Pulse el subrayado < tabla de valor de asignación > y escriba o seleccione house_expertise.
Ahora su nuevo objetivo es Maximizar la calidad global de las asignaciones house_subcontractor-house_activity según house_expertise. Expanda el objetivo y seleccione Activity para la tarea, Subcontractor para el recurso y Skill level para el valor, (columnas de tabla) para completar la definición.
Ahora tiene dos objetivos. Puede decidir si los objetivos se deben considerar de forma equitativa o con diferentes ponderaciones. Puede aumentar y disminuir las ponderaciones en cada objetivo utilizando el control deslizante adyacente. Deje los dos controles deslizantes en 5 para que los dos objetivos estén igualmente ponderados. También puede añadir factores de zoom para los objetivos. Para este ejemplo, deje los factores de escala como 1. Para obtener más información, consulte Ponderaciones y factores de escala visualizados en la solución.
- Para asegurarse de que los subcontratistas solo acepten tareas para las que estén autorizados, añada una nueva restricción. Escriba las sugerencias, por ejemplo, subcontractor must be one of possible subcontractors. También puede establecer Mostrar por categoría en activado (se visualiza una marca en el conmutador) y seleccionar el filtro Asignación para ver las sugerencias relacionadas con la asignación.
- En las sugerencias filtradas, busque y añada la siguiente restricción: Para cada asignación house_subcontractor-house_activity, los house_subcontractors asignados deben ser uno de los subcontratistas posibles de house_activity.
- Ejecute el modelo
La nueva solución muestra ahora una nueva asignación de subcontratistas.
Más información sobre la vista de modelo
El filtro Sugerencias
También puede filtrar las sugerencias para encontrar objetivos y restricciones. Establezca Mostrar por categoría en activado (se visualiza una marca en el conmutador), que abre un panel para que seleccione las distintas categorías de interés y aplique filtros a la lista de sugerencias. Los filtros permiten reducir el número de sugerencias. Si pulsa el icono de visualización situado junto al campo de búsqueda, puede ver todas las expresiones posibles para el dominio de planificación, incluidas las que están inhabilitadas. Al pasar el ratón sobre el icono de información de cada expresión, se proporciona una descripción. Para los términos inhabilitados, al pasar el ratón sobre la propia expresión también se ofrece una explicación de por qué están inhabilitados para este modelo.
La pestaña Configuración
La pestaña Configuración de la vista del modelo lista diferentes parámetros de planificación y optimización que se pueden editar. En este ejemplo, se muestra la unidad de duración predeterminada, el tiempo de ejecución de optimización y el formato de fecha/hora. Puede especificar aquí un formato de fecha/hora personalizado que se ajuste a sus datos.
El separador Esquema de datos
La pestaña Esquema de datos vista lista, tabla por tabla, toda la información que el Modeling Assistant ha importado y deducido de los datos de entrada necesarios para resolver el problema de planificación. Puede editar determinadas entradas en el esquema, lo que actualizará el modelo y le solicitará que acepte los cambios de modelo implícitos o cancele sus ediciones. Esto puede ser muy útil para los usuarios expertos a efectos de depuración de datos. Por ejemplo, si una columna que contiene un ID se ha deducido como numérica, puede ser útil cambiarla a nominal para que se pueda utilizar como clave primaria.
El separador Decisiones
Puede hacer que este separador sea visible estableciendo Visualizar y editar decisiones en la pestaña Configuración en true
. El separador Decisiones muestra la decisión (o intención) definida en el modelo. También puede añadir aquí decisiones personalizadas. Para obtener más información, consulte Definición de decisiones personalizadas.
Generación de un cuaderno de Python desde el escenario
Si desea generar un Python notebook a partir del modelo creado con el Modeling Assistant:
- Si el panel de escenario no está abierto, pulse el icono Escenarios.
- Pulse en los tres puntos junto a uno de los escenarios y seleccione Generar cuaderno.
- Especifique un nombre para el cuaderno y pulse Generar.
Se crea un cuaderno de Python para este modelo en el proyecto.
Panel Visión general
Puede ver información de resumen para todos los escenarios de un vistazo en el panel Visión general . Al seleccionar un escenario y pulsar los tres puntos, puede realizar acciones como duplicar, renombrar, generar un cuaderno Python , exportar el escenario o guardarlo para el despliegue, para cualquier escenario seleccionado en esta vista. Consulte Visualización de todos los escenarios en un experimento de Decision Optimization para obtener más información sobre cómo configurar este panel.
Vista de visualización
En la vista Visualización puede personalizar lo que desea que se visualice desde cualquier escenario. Puede ver los datos de entrada, ver la solución y añadir notas. Por ejemplo, para esta guía de aprendizaje sobre viviendas, puede ver una gráfica de Gantt con la planificación de solución óptima.
Puede utilizar los widgets de tabla y los widgets de gráficos para personalizar el diseño de estas vistas. Puede añadir cabeceras, y cambiar colores de fondo y otras propiedades de las notas, las tablas o los gráficos. Puede elegir distintos tipos de gráficos, por ejemplo, gráficos de líneas, gráficos de barras, etc. Puede definir cómo se agregan los datos en estos gráficos y utilizar la propiedad calculate
para definir cómo representar determinados valores de datos en los gráficos.
Si selecciona un widget de tabla o gráfico, se visualiza una instancia predeterminada utilizando algunos de los datos de entrada. Para cambiar el contenido y el formato de este objeto, pulse el icono de lápiz y edite el widget con el editor gráfico o editando el archivo json
.
Puede utilizar esta vista para comparar visualmente escenarios.
Para obtener más información, consulte Vista de visualización en un experimento de Decision Optimization.