0 / 0
Volver a la versión inglesa de la documentación
Agregación de restricciones multiconcepto y decisiones personalizadas: Decision Optimizationasignación de turnos
Última actualización: 21 nov 2024
Creación de restricciones y decisiones personalizadas con Decision Optimization Modeling Assistant

Este ejemplo de Decision Optimization Modeling Assistant muestra cómo utilizar iteraciones de varios conceptos, la palabra clave associated en restricciones, cómo definir sus propias decisiones personalizadas y definir restricciones lógicas. A modo de ilustración, se utiliza un problema de asignación de recursos, ShiftAssignment, y su modelo completado con datos se proporciona en los DO-samples.

Antes de empezar

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 watsonx.ai Tiempo de ejecución
Debe tener un servicio watsonx.ai Runtime asociado a su 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 .

Acerca de esta tarea

Este ejemplo trata sobre la asignación de empleados a diferentes turnos, y cada día requiere que un número necesario de empleados deben estar de guardia. Los archivos que se utilizan en este ejemplo están disponibles en DO-samples.

Este vídeo proporciona un método visual para aprender los conceptos y tareas de esta documentación. Después de cargar el ejemplo en el experimentode Decision Optimization , puede seguir el vídeo.

Declaración de limitación de responsabilidad de vídeo: algunos pasos menores y gráficos de este vídeo pueden diferir de su plataforma. La interfaz de usuario también se mejora con frecuencia.

Procedimiento

Para descargar y abrir el ejemplo:

  1. Descargue el archivo ShiftAssignment.zip de la subcarpeta Model_Builder en DO-samples. Seleccione la subcarpeta de producto y versión relevante.
  2. Abra el proyecto o cree un proyecto vacío.
  3. Seleccione la pestaña Activos .
  4. Seleccione Nuevo activo > Resolver problemas de optimización en la sección Trabajar con modelos .
  5. Pulse Archivo local en la ventana Resolver problemas de optimización que se abre.
  6. Examine localmente para buscar y elegir el archivo ShiftAssignment.zip que ha descargado. Pulse Abrir. Como alternativa, utilice arrastrar y soltar.
  7. 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.
  8. Pulse Crear.
    Se crea un modelo de Decision Optimization con el mismo nombre que el ejemplo.
  9. Abra el panel de escenario y seleccione el escenario AssignmentWithOnCallDuties .

Resultados

En la vista Preparar datos de AssignmentWithOnCallDuties Escenario, puede ver los activos de datos importados. Estas tablas representan los turnos, los empleados que necesitan ser asignados a estos turnos y los días con sus servicios de guardia necesarios.

Preparar la vista de datos que muestra datos de asignación de personal

Utilización de la iteración multiconcepto

Acerca de esta tarea

Supongamos que desea que su formulación de modelo exprese la regla de que cada empleado no puede trabajar más de un turno por día. Por ejemplo, un empleado no puede tener asignados dos turnos el mismo día. Puede utilizar, tal como se muestra en esta formulación de modelo, una restricción para cada día de la semana.

Varias restricciones, una para cada día, para formular sólo un turno por empleado por día

Pero listar las restricciones para cada día de la semana es engorroso: si el modelo se basaba en días del año, debe listar cientos de este tipo de restricciones. El procedimiento siguiente muestra cómo utilizar la iteración de varios conceptos y la palabra clave associated para expresar la iteración sobre más de un concepto. Por lo tanto, usted puede expresar tal regla con una sola frase.

Procedimiento

Para utilizar la iteración de varios conceptos, siga estos pasos.

  1. Pulse Crear modelo en la barra lateral para ver la formulación del modelo.
    La formulación del modelo muestra la intención de asignar los empleados a los turnos, con sus objetivos y restricciones.
  2. Expandir la restricción For each Employee-Day combination , number of associated Employee-Shift assignments is less than or equal to 1.

Resultados

Restricción de combinación de días de empleado expandida

Esta restricción combina empleados y días con la palabra clave associated para que la expresión itera tanto a empleado como a día. Puede ver que el empleado de la combinación empleado-día se correlaciona con el empleado de la asignación empleado-turno. También el día de la combinación empleado-día se correlaciona con la propiedad de día del turno asignado. Por lo tanto, las combinaciones se manejan correcta y automáticamente para usted.

Con esta iteración de varios conceptos, puede especificar nuevos grupos de reglas que combinen distintos conceptos.

Definición de decisiones personalizadas

Acerca de esta tarea

Supongamos que también desea asignar servicios de guardia. Puede crear otro modelo con la intención de asignar empleados a tareas de guardia, pero no podrá establecer reglas de dependencia entre los dos modelos. Mediante la adición de decisiones personalizadas al modelo existente, como se muestra en este ejemplo, puede definir dependencias entre la asignación de turnos y los servicios de guardia. Aquí la decisión personalizada se llama OnCallDuties.

Procedimiento

Para definir decisiones personalizadas, siga estos pasos.

  1. Pulse Generar modelo para ver la formulación del modelo del AssignmentWithOnCallDuties Escenario.
    Vista de modelo de compilación que muestra la formulación Asignación de turnos

    La decisión personalizada OnCallDuties se utiliza en el segundo objetivo. Este objetivo garantiza que el número de servicios de guardia esté equilibrado entre los empleados.

    La restricción Restricción de servicio de llamada garantiza que se cumplan los requisitos de servicio de guardia que se listan en la tabla Día.

    Los pasos siguientes muestran cómo se ha definido esta decisión personalizada OnCallDuties.

  2. Abra el panel Valores y observe que Visualizar y editar decisiones está establecido en true (o establézcalo en true si está establecido en el valor predeterminado false).

    Este valor añade una pestaña Decisiones a la ventana Añadir a modelo .

    Separador Decisiones del panel Añadir a modelo que muestra dos intenciones

    Aquí puede ver que OnCallDuty se especifica como una decisión de asignación (para asignar empleados a tareas de guardia). Sus dos dimensiones se definen con referencia a las tablas de datos Day y Employee. Esto significa que el modelo también asignará servicios de guardia a los empleados. La decisión empleado-asignación de turno se especifica a partir de la intención original.

  3. Opcional: Especifique su propio texto para describir el OnCallDuty en el campo [que se va a documentar] .
  4. Opcional: Para crear su propia decisión en la pestaña Decisiones , pulse el especificar nombre, escriba un nombre y pulse Intro.
    Se crea una nueva decisión (intención) con ese nombre con algunos campos resaltados que se deben completar utilizando los menús desplegables. Si, por ejemplo, selecciona asignación como tipo de decisión, se crean dos dimensiones. Como la asignación implica asignar al menos un elemento a otro, se deben definir al menos dos dimensiones. Utilice los campos seleccionar una tabla para definir las dimensiones.

Resultados

Ya no está restringido a utilizar sólo las decisiones deducidas de su intención. Ahora puede definir sus propias decisiones personalizadas utilizando los valores avanzados y las pestañas de decisión, donde puede seleccionar el tipo de decisión y sus dimensiones (tabla de datos o columna). A continuación, puede configurar nuevas reglas y objetivos que utilicen la decisión recién definida.

Utilización de restricciones lógicas

Acerca de esta tarea

Supongamos que desea asegurarse de que los servicios de guardia asignados no tienen lugar cuando un empleado está de vacaciones. Para ello, puede utilizar las restricciones lógicas como se indica a continuación.

Procedimiento

Para utilizar restricciones lógicas:

  1. Vea la restricción Sugerencia de restricción lógica
    Esta restricción garantiza que, para cada combinación de empleado y día, cuando no existen asignaciones asociadas (por ejemplo, el empleado está de vacaciones ese día), que no se asignen tareas de guardia a dicho empleado ese día. Tenga en cuenta el uso de las palabras clave if...then para definir esta restricción lógica.
  2. Opcional: añada otras restricciones lógicas al modelo buscando en las sugerencias.

Resultados

Esta restricción vincula la asignación de los empleados a turnos con servicios de guardia. Con modelos separados, uno para la asignación de turno original y otro para las tareas de guardia no se puede lograr este enlace.

Mediante el uso de restricciones lógicas, junto con la palabra clave associated , puede especificar que si se aplica una restricción, también se aplica otra restricción. La conexión lógica necesaria entre los conceptos a los que se hace referencia se realiza automáticamente, sin tener que utilizar expresiones de unión más complicadas.

Búsqueda y respuesta de IA generativa
Estas respuestas las genera un modelo de lenguaje grande en watsonx.ai que se basa en el contenido de la documentación del producto. Más información