Formulação e execução de um modelo de Decision Optimization: programação de construção de casas

Este tutorial mostra como usar o Modeling Assistant para definir, formular e executar um modelo para um problema de programação de construção de uma casa. O modelo concluído com dados também é fornecido no DO-samples; consulte Decision Optimization amostras de experimento (Python, OPL, Modeling Assistant).

O problema

É necessário planejar e agendar atividades e subcontratadas para um projeto de construção residencial. Seu planejamento deve iniciar em uma data específica. Todas as atividades (alvenaria, carpintaria, encanamento, etc.) devem ser programadas. Há também uma ordem específica de atividades que deve ser respeitada (por exemplo, as janelas não podem ser instaladas antes da conclusão do telhado). Cada subcontratada pode executar algumas das atividades necessárias com níveis de qualificações diferentes. Sua programação deve determinar a melhor (mais precoce) data de conclusão do projeto de construção, garantindo que todas as atividades sejam programadas e decidindo qual subcontratado será designado para cada atividade. Além disso, você deseja saber como otimizar o nível de habilidade de seus subcontratados neste projeto.

Seus dados

Você possui dados para este projeto, conforme mostrado na planilha a seguir. Para cada atividade, você tem a duração necessária para concluí-la, as atividades que devem precedê-la e os possíveis subcontratados disponíveis e qualificados para realizar essa atividade.

Planilha de construção de casas de dados com títulos de colunas Atividade, Duração em dias, Atividades de Precatórios, Subcontratantes Possíveis

Para propósitos de ilustração, há apenas 10 atividades e 3 subcontratadas mostradas. Com Decision Optimization ele, é fácil alterar seus dados e resolver o mesmo problema com conjuntos de dados maiores.

Para cada atividade, você também tem dados sobre o nível de especialização que cada subcontratado possui para essa atividade. Quanto maior o número, mais experiência a subcontratada possui. Se uma subcontratada tiver um nível de qualificação zero, ela não deverá ser designada à tarefa. A tabela a seguir mostra parte desta planilha.

Planilha de atividades mostrando algumas das linhas, e todas as colunas Atividade, Subcontratante e Nível de Skill

Você também tem uma tabela que contém os nomes dos subcontratados (Joe, Jack e assim por diante) disponíveis para este projeto.

Obter arquivos de dados para este exemplo

Os arquivos de dados utilizados neste exemplo estão disponíveis em DO-samples. Normalmente, você teria seus arquivos já armazenados em um projeto como ativo de dados ou localmente em sua máquina. No entanto, para fins ilustrativos, para que você mesmo possa construir o modelo, neste exemplo, primeiro baixe os arquivos de dados para o seu computador e, em seguida, importe-os para o projeto que você acabou de criar. A formulação do modelo completo com dados importados também é fornecida como amostra, consulteHouseConstructionScheduling em Amostras DO .

  1. Faça o download e extraia todas as DO-samples em sua máquina.
  2. Abra seu projeto.
  3. Para importar os dados, clique em Importar ativos. Selecione Arquivo local e escolha Ativo de dados.
  4. Navegue pelas amostras DO baixadas para localizar os arquivos house_activity.csv, house_expertise.csv, e house_subcontractor.csv na datasets pasta.
  5. Clique em Abrir. Os arquivos são transferidos por upload como ativos de dados em seu projeto.

Criar um Cenário

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 só podem ver os experimentos, mas não podem modificá-los ou executá-los.
Serviço do Machine Learning
Deve-se ter um serviço Machine Learning que esteja 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..

Para criar um Cenário:

  1. Abra seu projeto ou crie um projeto vazio.
  2. Selecione a guia Ativos .
  3. Selecione Novo ativo > Resolver problemas de otimização no Trabalhar com modelos seção.
  4. Na janela Novo Decision Optimization experiência que se abre, digite um nome.
  5. 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.
  6. Clique em Novo espaço de implementação, insira um nome e clique em Criar (ou selecione um espaço existente no menu suspenso).
  7. Clique em Criar. Um Cenário 1 é criado junto do modelo, em que você trabalhará neste Cenário 1.

Seu Cenário especifica a combinação de dados e a formulação do modelo de otimização que você deseja resolver. É possível criar diferentes cenários com diferentes variantes de formulações de dados e de modelo.

Preparação de dados

A interface do usuário do experimento é aberta exibindo a visualização Preparar dados.

Para importar dados, clique em Adicionar dados. Em seguida, na nova janela que se abre, selecione os arquivos house_subcontractor.csv house_activity.csv, house_expertise.csv e dos arquivos do projeto. Clique em Adicionar dados para fechar a janela.

Os arquivos de dados importados agora são exibidos como tabelas na exibição Preparar dados. A imagem a seguir mostra os arquivos de dados que são importados para um Cenário.

Preparar visualização de dados mostrando três tabelas: Atividade, Subcontratante e Expertise

É possível visualizar todos os dados rolando em uma tabela. É possível também visualizar todos os dados clicando no ícone Abrir a tabela em modo completo de uma tabela de dados em particular. Você pode editar os valores dos dados diretamente na tabela e também no modo completo.

Escolha o Modeling Assistant

  1. Clique em Criar modelo na barra lateral. Uma janela pop-up aparece onde você pode indicar como deseja formular seu modelo (se deseja usar o modo assistido com o Modeling Assistant ou criar ou importar um modelo em código Python, OPL, LP (CPLEX) ou CPO.
  2. Selecione Assistente de Modelagem.

Defina seu domínio de decisão

No Modelo visualizar: selecione o domínio de decisão para o seu problema. Nesse caso, selecione Agendamento. Os domínios de decisão atualmente definidos são : Programação, Atribuição de Recursos, Seleção e Alocação e Oferta e Demanda.

  1. Depois de selecionar o seu domínio, uma janela pop-up aparece para você mapear seus dados para os conceitos de planejamento Tarefas e Recursos. As tarefas são tudo o que você deseja planejar e agendar ao longo do tempo. Deve-se definir pelo menos uma tarefa a ser planejada. Neste exemplo, suas tarefas são atividades de construção, como, por exemplo, alvenaria. Os recursos podem ser humanos, máquinas, equipamentos ou qualquer coisa que você queira usar para as tarefas. Neste caso, seus recursos são suas subcontratadas.
  2. Em TAREFAS, clique em Escolher uma Tarefa e escolha house_activity na lista suspensa. Em RECURSOS, clique em Escolher um Recurso e escolha house_subcontractor. Os nomes de possíveis tarefas e recursos para escolha são obtidos de seus dados importados. Para este exemplo, você precisa mapear apenas atividades e subcontratados, mas pode adicionar outras tarefas e mapeamentos de recursos se o seu modelo assim o exigir. É possível remover qualquer mapeamento passando o mouse sobre ele e selecionando o ícone excluir.
  3. Clique em Continuar.

Como as tarefas usarão os recursos

Na janela, para cada tarefa a ser agendada, você tem três opções:

  • Utilizar recursos com atribuição: É possível selecionar todas as opções e escolher ter suas atividades atribuídas para subcontratadas específicas. Isso significa que você deseja obter um planejamento para suas atividades de construção de casa com a melhor sequência delas, levando em conta os horários de início, as durações, a ordem de precedência e assim por diante, com as subcontratadas designadas para as atividades. Esta opção é selecionada por padrão.
  • Usar recursos sem designação: é possível usar recursos e desmarcar a caixa de seleção Enquanto designa... para optar por não designar contratados específicos às suas atividades. Isso significa que você deseja obter um planejamento para suas atividades de construção residencial com a melhor sequência de atividades de construção residencial, levando em conta os horários de início, as durações e a ordem de precedência e assim por diante. Você ainda deseja que os números e tipos de subcontratadas disponíveis sejam considerados no planejamento obtido (por exemplo 3 encanadores, 2 carpinteiros,...), mas eles não têm que ser designados a pessoas específicas (por exemplo, Joe, Jack, Jim).

    Ao usar recursos, com ou sem designação, também é possível decidir incluir restrições de capacidade baseadas em tempo adicionais em seu modelo. Por exemplo, é possível especificar limites quanto ao número de subcontratadas que podem ser usadas em paralelo em um determinado momento ou quanto à disponibilidade de subcontratada individual ou total durante um período de tempo.

    Para um exemplo de programação sem atribuição, consulte BridgeScheduling em DO-samples.

  • Continuar sem recursos É possível desmarcar todas as opções e apenas clicar em Continuar para agendar as tarefas ignorando todos os limites de recursos. Isso significa que você deseja obter um planejamento com a melhor sequência de atividades de construção residencial, levando em conta os horários de início, as durações, as ordens de precedência e assim por diante, mas sem considerar suas subcontratadas.

Para este exemplo:

  1. Escolha a configuração padrão com todas as opções (Use os recursos... Enquanto designa...) selecionadas e clique em Continuar.

    O problema que você deseja resolver agora é formulado em uma instrução concisa.

  2. Clique em Concluir.

    Retorne para a visualizaçãodo Modelo. É possível editar sua definição de problema novamente, a qualquer momento, clicando no ícone Editar intenção (lápis) e redefinindo seus mapeamentos e opções de planejamento.

Sua formulação de modelo

Agora que você especificou o problema que deseja resolver, o Modeling Assistant fornece uma formulação parcialmente concluída nesta visualizaçãode modelo A área de janela Objetivos e Restrições contém o modelo que você executará A área de janela Incluir no modelo contém mais sugestões que podem ser incluídas em sua fórmula de modelo Se você tiver redimensionado sua janela, é possível que a área de janela Incluir no Modelo apareça sob a área de janela Objetivos e Restrições.

O modelo consiste em um objetivo a ser alcançado (maximizado ou minimizado) e algumas restrições que devem ser satisfeitas. Para problemas de planejamento como este, seu objetivo é elaborar o melhor planejamento. O melhor, nesse caso, seria aquele no qual o tempo de conclusão de todas as atividades é minimizado. (Você deseja concluir a construção da casa o mais rápido possível, já que isso reduzirá os custos). Esse objetivo e também algumas restrições de planejamento padrão foram incluídos automaticamente em seu modelo. Também é possível usar o campo de procura Objetivos para procurar os objetivos e restrições.

Visualização de modelo mostrando a área de janela Função e restrições de Objetivo e a área de janela de sugestões possíveis

Essas restrições de planejamento asseguram que:
  • O planejamento será executado a partir do horário de início que você definir para seu projeto de construção
  • Cada subcontratada pode ser designada apenas a uma tarefa por vez.
  • Cada atividade tem uma subcontratada designada a ela
  • Todas as atividades estão presentes no planejamento, em outras palavras, nenhuma atividade pode ser omitida do planejamento
  • O tempo de duração para cada atividade é respeitado

É possível que suas restrições sejam exibidas em uma ordem diferente. Também há uma restrição que é incluída automaticamente em todos os problemas de planejamento com designação. Isso permite que você aceite ou se recuse a designar subcontratadas que tenham períodos indisponíveis durante as atividades que são planejadas. Nesse exemplo, os períodos indisponíveis não são considerados, portanto, deixe essa restrição como ela aparece por padrão.

Algumas restrições têm mais detalhes que podem ser exibidos ou ocultos clicando nas setas em cada linha. Uma barra próxima da restrição indica que há um valor ou definição que você deve incluir. É possível incluir itens clicando no termo mostrado sublinhado e digitando ou selecionando em uma lista suspensa, e é necessário concluir o modelo antes de executá-lo, mas antes disso, salve uma cópia duplicando o cenário, conforme explicado posteriormente nesta seção.

Na visualização do modelo do seu cenário, se você clicar no ícone Substituir ícone (seta) Substituir ao lado de Modeling Assistant, você retornará à tela onde pode escolher se deseja criar seu modelo em Python ou OPL, com o Modeling Assistant ou em um Pythonnotebook ou importar um modelo existente. Se escolher substituir seu modelo neste estágio, você sobrescreverá o modelo atual e perderá suas mudanças. Se você deseja manter uma cópia de seu trabalho atual em andamento, crie um novo cenário antes de mudar o modelo.

Duplicar o cenário

Para manter uma cópia deste modelo, faça uma cópia deste cenário:

  1. Se o painel do cenário não estiver aberto, clique no ícone de Cenários.
  2. Clique nos três pontos ao lado do Cenário 1 e selecione Duplicar.
  3. Digite um nome para o novo cenário, Scenario 2, por exemplo, e clique em Criar. Você continua trabalhando no Cenário 2.

Conclua seu modelo

Conclua as restrições destacadas. Defina uma duração para cada atividade e um início de Planejamento em suas restrições:
  1. Se necessário, expanda a restrição de duração clicando na seta nesta linha para exibir a definição completa. Selecione definition que é mostrado destacado e escolha o nome da coluna Duration in days A unidade de duração padrão expressa na unidade de duração padrão é incluída no término da restrição. É possível modificar isso clicando em unidade de duração padrão e selecionando dias, mas a unidade padrão é dias. Também é possível modificar a unidade de duração padrão e customizar como as datas e horários serão definidos no painel Configurações. Após você ter concluído a restrição de duração, a linha não fica mais em destaque.

    Restrição de duração concluída

  2. Na restrição de início do Planejamento, clique na data exibida. Em seguida, insira uma data (ou uma data e hora) e selecione-a no menu suspenso para substituir a data atualmente exibida. Se você inserir uma data sem uma hora, a hora padrão a ser usada será 0h.

As restrições não são mais destacadas após você inserir valores. O modelo, no entanto, ainda não está concluído. Talvez você queira certificar-se de que seu planejamento leve em conta a ordem de precedência das tarefas, para que cada atividade possa ser iniciada somente após aquelas que devem precedê-la. Essa restrição será incluída mais tarde.

Se o seu modelo tivesse mais objetivos e restrições, você poderia navegar ou filtrá-los usando o campo de procura Encontrar em meus objetivos e restrições.

É possível optar por Desativar ou Remover qualquer um dos objetivos ou restrições em seu modelo, clicando nos 3 pontos verticais ao lado da declaração. Esse menu também permite reorganizar a ordem de suas instruções, movendo-as para cima e para baixo e também é possível duplicar uma instrução.

Quando tiver concluído seu modelo, ou quando não houver objetivos ou restrições ainda em destaque, é possível executá-lo para encontrar uma solução que decidirá o planejamento ideal com base em seus modelos de objetivos e restrições.

Executar seu modelo

Você pode alterar o limite de tempo de solução para o seu modelo no Modelo de construção visão clicando na aba Configurações ao lado das sugestões. Para este exemplo, use o limite padrão. Outros parâmetros também podem ser definidos usando os parâmetros de configuração de execução (consulte Configurando os parâmetros de execução para um cenário em um experimento de Decision Optimization para obter mais informações).

No Cenário 2, clique no botão Executar . Quando um valor de objetivo inicial tiver sido localizado, um Objetivo Combinado será exibido em um gráfico Progresso da Solução Para terminar essa execução antes de obter a solução ideal, é possível encerrar clicando em Parar. Quando a solução ideal tiver sido localizada, a Explorar solução visualização será aberta

Sua solução

Quando a execução é concluída, é possível ver os resultados no Solução de Explore visualizar. Também é possível clicar em Estatísticas do mecanismo ou em Log para ver o gráfico de solução e inspecionar os arquivos de log A primeira guia no Solução de Explore visualizar mostra o objetivo (ou objetivos se você tiver vários) com seus valores e pesos. A guia Tabelas de soluções fornece a você o melhor planejamento com a designação de atividades às subcontratadas.

Também é possível fazer download das tabelas de soluções como arquivos csv.

Se o seu modelo tivesse qualquer restrição conflitante, elas seriam mostradas na guia Conflitos com as Flexibilizações necessárias para resolver o modelo.

No Visualization view, clique em Gantt para exibir a solução como um gráfico de Gantt.

Criar um novo cenário - modelo diferente, mesmos dados

Embora tenha resolvido o modelo e agora tenha o planejamento ideal para suas atividades com subcontratadas designadas, você não considerou a precedência das atividades nem os dados de nível de qualificação de suas subcontratadas ao fazer as designações. Os cenários permitem que você analise e compare diferentes modelos e dados.

Primeiro, examine um novo cenário com uma restrição adicional:

No modelo view, outros objetivos e restrições são oferecidos na área de janela Sugestões . É possível incluí-los em seu modelo clicando neles. Para ver outras sugestões não listadas, comece a digitar no campo de procura e pressione Enter ou o botão de atualização. Em seguida, é possível procurar e incluir as proposições exibidas.

Para incluir a restrição de precedência em seu modelo para assegurar que não haja atrasos de tempo entre as atividades:

  1. Duplique o Cenário 2 e chame-o de Cenário 3. Depois, feche o painel de cenário.
  2. No painel de sugestões no modelo view, digite em linguagem natural activity after preceding activities, por exemplo, no campo de busca e clique em enter.
  3. A partir da nova lista de sugestões, clique Cada house_activity inicia após o final de atividades precedentes para adicioná-la às suas restrições.

    A nova restrição de precedência aparece em sua formulação de modelo.

  4. Execute novamente o modelo (cenário 3) e observe a nova solução. É possível compará-lo com a solução obtida no cenário 2 quando você resolver o modelo sem essa restrição. Para comparar soluções, abra a pane Painel de cenário aberto e clique em cada cenário. Você também pode clicar em Gantt no Visualização visualizar e comparar soluções exibidas como gráficos Gantt para cada cenário.
Em seguida, examine um novo cenário com um objetivo adicional e mais restrições:
  1. Duplique o Cenário 3 e o chame de Cenário 4. Depois, feche o painel de cenário.

    Para maximizar os níveis de qualificação das subcontratadas em sua designação às atividades:

  2. No modelo view, digite overall quality no campo de busca de sugestões para localizar e adicionar o seguinte objetivo ao seu modelo:

    Maximize a qualidade geral das atribuições de house_subcontractor-house_activity de acordo com a tabela de valores de atribuição.

    Clique no sublinhado < tabela de valor de designação> e digite ou selecione house_expertise.

    Seu novo objetivo agora é maximizar a qualidade geral das designações de house_subcontractor-house_activity de acordo com house_expertise. Expanda o objetivo e selecione Activity para a tarefa, Subcontractor para o recurso, e Skill level para o valor, (colunas de tabela) para completar a definição.

    Agora você tem dois objetivos. Pode-se decidir se os objetivos devem ser considerados igualmente ou com diferentes ponderações. É possível aumentar e diminuir os pesos de cada objetivo usando a régua de controle adjacente. Deixe as duas réguas de controle em 5 para que seus dois objetivos sejam igualmente pesados. Também é possível incluir fatores de escala para os objetivos. Para este exemplo, deixe os fatores de escala como 1. Para obter mais informações, consulte Pesos e fatores de escala exibidos na solução

  3. Para assegurar que as subcontratadas executem somente as tarefas às quais elas estão autorizadas, inclua uma nova restrição. Digite nas sugestões, por exemplo, subcontractor must be one of possible subcontractors. Pode-se também configurar Exibir por categoria para em (um tique de visto é exibido no comutador) e selecionar o filtro de Atribuição para ver as sugestões relacionadas à atribuição.
  4. A partir das sugestões filtradas, localize e inclua a seguinte restrição: Para cada atribuição de house_subcontractor-house_activity assignment, house_subcontractors atribuídos devem ser um dos Subcontratados Possíveis de house_activity.
  5. Executar o modelo

A nova solução agora mostra uma nova designação de subcontratadas.

Mais sobre a modelo view

O filtro de Sugestões

Também é possível filtrar as sugestões para localizar objetivos e restrições. Configure Exibir por categoria para em (um tique de visto é exibido no comutador) que abre um painel para você selecionar várias categorias de interesse e aplicar filtros à lista de sugestões. Os filtros permitem ver menos sugestões. Se você clicar no ícone de exibição próximo ao campo de procura, poderá ver todas as expressões possíveis para o domínio de planejamento, incluindo aquelas que estão desativadas. Passar o mouse sobre o ícone de informações para cada expressão fornece uma descrição. Para termos desativados, passar o mouse sobre a própria expressão também lhe dá uma explicação do motivo de ela estar desativada para esse modelo.

A guia de Configurações

A guia Configurações na visualização do modelo lista diferentes parâmetros de planejamento e otimização que podem ser editados. Neste exemplo, são mostradas a unidade de duração padrão, o tempo de execução da otimização e o formato de data ou hora. Você pode especificar aqui um formato personalizado de data ou hora adequado aos seus dados.

A guia de Esquema de Dados

A visualização da guia Esquema de Dados lista, tabela por tabela, todas as informações que o Modeling Assistant importou e deduziu dos dados de entrada necessários para que o problema de planejamento seja resolvido. É possível editar certas entradas no esquema que atualizará o seu modelo e solicitar que você aceite as mudanças de modelo implícitas ou cancele suas edições. Esse recurso pode ser útil para usuários experientes para fins de depuração de dados. Por exemplo, se uma coluna que contém um ID for deduzida como numérica, pode ser útil alterar esse atributo para nominal, para que possa ser usada como chave primária.

A guia de Decisões

É possível tornar essa guia visível configurando Visualizar e editar decisões na guia Configurações como true. A guia Decisões mostrará a decisão (ou intenção) que estiver definida em seu modelo. Também é possível adicionar decisões customizadas aqui. Para obter mais informações, consulte Definindo decisões personalizadas.

Gerando um Python notebook do seu cenário

Se desejar gerar um Python notebook a partir de seu modelo criado com o Modeling Assistant:

  1. Se a área de janela de cenário não estiver aberta, clique no ícone Cenários.
  2. Clique nos três pontos ao lado de um de seus cenários e selecione Gerar notebook.
  3. Insira um nome para o seu notebook e clique em Gerar.

Um Python notebook para este modelo é criado em seu Projeto.

Painel Overview

Você pode visualizar informações de resumo para todos os seus cenários em uma olhada na área de janela Overview . Você pode selecionar qualquer cenário e clicar nos três pontos para realizar ações como duplicar, renomear, gerar um notebook do Python, exportar o cenário ou salvá-lo para implantação. Consulte Exibindo todos os cenários em um experimento do Decision Optimization para obter mais informações sobre como configurar este painel.

Visão de visualização

Na visualização, você pode personalizar o que deseja ver exibido em qualquer cenário. É possível visualizar seus dados de entrada, sua solução e incluir notas. Por exemplo, para este tutorial de casa, é possível ver um gráfico de Gantt para o planejamento de solução ideal.

É possível usar widgets de tabela e widgets de gráfico para customizar o layout dessas visualizações. Você pode adicionar cabeçalhos, alterar as cores de fundo e outras propriedades das suas notas, tabelas ou gráficos. É possível escolher diferentes tipos de gráficos, como gráficos de linha, gráficos de barras e assim por diante. É possível definir como os dados são agregados nesses gráficos e usar a propriedade calculate para definir como representar determinados valores de dados em seus gráficos.

Se você selecionar um widget de tabela ou gráfico, será exibida uma instância padrão que usa alguns dos seus dados de entrada. Para mudar o conteúdo e o formato desse objeto, clique no ícone de lápis e edite o widget usando o editor gráfico ou editando o arquivo json.

Você pode usar esta visualização para comparar visualmente cenários.

Para obter mais informações, consulte Visualização em um experimento do Decision Optimization.