Adicionar restrições de vários conceitos e decisões personalizadas: Decision Optimization Atribuição de turnos

Este exemplo de Decision Optimization Modeling Assistant mostra como usar iterações de diversos conceitos, a palavra-chave associated em restrições, como definir suas próprias decisões customizadas e definir restrições lógicas Para ilustração, um problema de designação de recurso, ShiftAssignment, é usado e seu modelo concluído com dados é fornecido no DO-samples..

Antes de iniciar

Requisitos
Para editar e executar modelos do Decision Optimization , deve-se ter os pré-requisitos a seguir:
Funções Admin ou Editor
Deve-se ter as funções Admin ou Editor no projeto Os visualizadores de projetos compartilhados podem apenas ver experimentos, mas não podem modificá-los ou executá-los
serviço de tempo de execuçãowatsonx.ai
Você deve ter um serviço de tempo de execuçãowatsonx.ai associado ao seu projeto. É possível incluir um ao criar um Decision Optimization Experimento
Espaço de implementação
Deve-se ter um espaço de implementação associado ao seu Decision Optimization experimento. É possível escolher um espaço de implementação ao criar um Decision Optimization experimento..

Sobre essa tarefa

Este exemplo é sobre a designação de funcionários para turnos diferentes e cada dia requer que um número necessário de funcionários seja de plantão. Os arquivos usados nesta amostra estão disponíveis no DO-samples.

Este vídeo fornece um método visual para aprender os conceitos e tarefas nesta documentação. Após carregar o exemplo em seu Decision Optimization experiment, é possível seguir o vídeo.

Aviso de vídeo: Algumas etapas menores e etapas gráficas neste vídeo podem ser diferentes da sua plataforma. A interface com o usuário também é frequentemente melhorada.

Procedimento

Para fazer o download e abrir a amostra:

  1. Faça o download do arquivo ShiftAssignment.zip a partir da subpasta Model_Builder na DO-samples Selecione a subpasta de produto e versão relevante.
  2. Abra seu projeto ou crie um projeto vazio.
  3. Selecione a guia Ativos .
  4. Selecione Novo ativo > Resolver problemas de otimização no Trabalhar com modelos seção.
  5. Clique em Arquivo local na janela Criar um experimento do Decision Optimization que é aberta.
  6. Navegue localmente para encontrar e escolha o arquivo ShiftAssignment.zip que você baixou. Clique em Abrir. Como alternativa, use arrastar e soltar.
  7. Se você ainda não tiver associado um serviço de tempo de execuçãowatsonx.ai ao seu projeto, deverá primeiro selecionar Adicionar um serviço Machine Learning para selecionar ou criar um antes de escolher um espaço de implantação para o seu experimento.
  8. Clique em Criar.
    Um modelo Decision Optimization é criado com o mesmo nome da amostra.
  9. Abra o painel de cenário e selecione o cenário AssignmentWithOnCallDuties .

Resultados

No Preparar dados visualizar do AssignmentWithOnCallDuties Cenário, você pode ver os ativos de dados importados. Essas tabelas representam os turnos, os funcionários que precisa ser designados a esses turnos e os dias com exigência de plantão.

Preparar visualização de dados mostrando os dados de Atribuição de Equipe

Utilização de iteração multiconceitual

Sobre essa tarefa

Imagine que você queria que sua formulação de modelo expresse a seguinte regra: cada funcionário não pode trabalhar mais de um turno por dia. Por exemplo, um funcionário não pode ser designado para dois turnos no mesmo dia. Você pode usar, conforme mostrado nessa formulação de modelo, uma restrição para cada dia da semana

Várias restrições, uma para cada dia, para formular apenas um turno por empregado por dia

Mas as restrições de listagem para cada dia da semana são complicadas: se seu modelo foi baseado em dias no ano, deve-se então listar centenas desse tipo de restrições. O procedimento a seguir mostra como usar a iteração de vários conceitos e a palavra-chave associated para expressar a iteração sobre mais de um conceito Assim, você pode expressar tal regra com apenas uma frase.

Procedimento

Para usar iteração de vários conceitos, siga estas etapas.

  1. Clique em Modelo de construção na barra lateral para visualizar sua formulação de modelo.
    A formulação do modelo mostra a intenção como designar funcionários aos turnos, com seus objetivos e restrições.
  2. Expandir a restrição For each Employee-Day combination , number of associated Employee-Shift assignments is less than or equal to 1.

Resultados

Restrição de combinação de day day expandido

Essa restrição combina funcionários e dias com a palavra-chave associated para que a expressão itere sobre o funcionário e o dia. É possível ver que o funcionário na combinação funcionário-dia está mapeado para o funcionário na atribuição funcionário-turno. Além disso, o dia na combinação funcionário-dia está mapeado para a propriedade dia da mudança de turnos. Assim, as combinações são tratadas corretamente e automaticamente para você.

Com essa iteração multiconceito, é possível especificar novos grupos de regras que combinam diferentes conceitos.

Definição de decisões customizadas

Sobre essa tarefa

Suponha que você também queria designar funções de plantão. É possível criar outro modelo com a intenção de designar funcionários a deveres de plantão, mas, em seguida, não seria possível estabelecer regras de dependência entre os dois modelos. Ao adicionar decisões customizadas ao seu modelo existente, conforme este exemplo, você pode definir dependências entre a mudança de turnos e as funções de plantão. Aqui a decisão customizada é chamada OnCallDuties.

Procedimento

Para definir as decisões customizadas, siga estas etapas:

  1. Clique em Modelo de construção para ver a formulação do modelo do AssignmentWithOnCallDuties Cenário.
    Visualização do modelo de construção mostrando a formulação do Shift Designação

    A decisão customizada OnCallDuties é usada no segundo objetivo. Este objetivo assegura que o número de funções de plantão esteja equilibrado em relação aos funcionários.

    A restrição Na restrição de plantão de atendimento assegura que os requisitos de plantão listados na tabela Dia sejam atendidos.

    As etapas a seguir mostram como essa decisão customizada OnCallDuties foi definida.

  2. Abra a pane Configurações e observe que o Visualize e editar decisões é configurado como true (ou configurá-lo como true se for configurado para o padrão falso).

    Essa configuração inclui uma guia Decisões em sua janela Incluir no modelo

    Guia de decisões da pane Add to Model mostrando dois intentos

    Aqui é possível ver que OnCallDuty é especificado como uma decisão de designação (para designar funcionários a deveres de plantão). Suas duas dimensões são definidas com referência às tabelas de dados Day e Employee. Isso significa que seu modelo também atribuirá funções de plantão a funcionários. A decisão de atribuição funcionário-turno é especificada a partir da intenção original.

  3. Opcional: Insira seu próprio texto para descrever o OnCallDuty no campo [a ser documentado] .
  4. Opcional: Para criar sua própria decisão na guia Decisões , clique em inserir nome, digite um nome e clique em inserir.
    Uma nova decisão (intento) é criada com esse nome com alguns campos destacados a serem preenchidos usando os menus suspensos. Se você, por exemplo, selecionar designação como o tipo de decisão, duas dimensões serão criadas Como a atribuição envolve atribuir pelo menos uma coisa a outra, pelos menos duas dimensões devem ser definidas. Use os campos selecionar uma tabela para definir as dimensões.

Resultados

Você não está mais restrito a usar somente decisões deduzidas de sua intenção. Agora é possível definir suas próprias decisões customizadas usando as configurações avançadas e as guias de decisão, nas quais é possível selecionar seu tipo de decisão e suas dimensões (tabela de dados ou coluna). É possível, então, configurar novas regras e objetivos que usem sua decisão recém-definida

Usando restrições lógicas

Sobre essa tarefa

Suponha que você queira garantir que as funções de plantão atribuídas não ocorram quando um funcionário estiver de férias. Você pode fazer isso usando restrições lógicas, como mostrado a seguir.

Procedimento

Para usar restrições lógicas:

  1. Consulte a restrição Sugestão de restrição lógica
    Essa restrição assegura que, para cada combinação de funcionário e dia, quando nenhuma designação associada existir (por exemplo, o funcionário está de férias nesse dia), que nenhuma obrigação de plantão seja designada a esse funcionário nesse dia. Observe o uso das palavras-chave if...then para definir essa restrição lógica.
  2. Opcional: Inclua outras restrições lógicas em seu modelo procurando nas sugestões.

Resultados

Essa restrição vincula a designação de funcionários aos turnos com funções de plantão. Com modelos separados, um para a designação de turno original e outro para os deveres de plantão, você não pode alcançar esse link.

Usando restrições lógicas, juntamente com a palavra-chave associated , é possível especificar que, se uma restrição se aplicar, outra restrição também se aplicará As conexões lógicas necessárias entre os conceitos aos quais você está se referindo são feitas automaticamente, sem que você precise usar expressões de junção mais complicadas.