Software  
 
Rede de conhecimento computador >> Software >> Produtividade de Software >> Content
Qual é o algoritmo do problema de atribuição e como ele otimiza as tarefas para recursos com eficiência?

O algoritmo do problema de atribuição e como ele otimiza a atribuição de tarefas



O problema de atribuição é um tipo especial de problema de programação linear que lida com a atribuição de um conjunto de recursos (por exemplo, trabalhadores, máquinas) a um conjunto de tarefas, onde cada recurso só pode ser atribuído a uma tarefa e cada tarefa só pode ser atribuída a um recurso. O objetivo é minimizar o custo total ou maximizar o lucro total associado às tarefas.

Pense assim: Você tem uma equipe de encanadores (recursos) e uma lista de casas que precisam de reparos de encanamento (tarefas). Cada encanador é bom em diferentes tipos de reparos e pode cobrar quantidades diferentes, dependendo da casa. O problema da atribuição ajuda a descobrir o melhor encanador para cada casa para minimizar o custo total.

algoritmos comuns para resolver o problema de atribuição:

Embora o problema da atribuição possa ser resolvido usando técnicas gerais de programação linear, como o método simplex, algoritmos mais eficientes e especializados são normalmente usados. O mais popular é o algoritmo húngaro .

1. Algoritmo húngaro (também conhecido como algoritmo Kuhn-Munkres):

O algoritmo húngaro é um algoritmo de otimização combinatória que resolve o problema de atribuição no tempo polinomial (O (n^3) para um problema de n x n). É baseado no conceito de correspondência mínima de custo em um gráfico bipartido. Aqui está um colapso simplificado das etapas envolvidas:

a. Representação da matriz de custos:

* O problema é representado como uma matriz de custo onde:
* As linhas representam recursos (por exemplo, encanadores).
* As colunas representam tarefas (por exemplo, casas).
* Cada célula (i, j) contém o custo (ou lucro) da atribuição de recursos i à tarefa j.

b. Redução da linha:

* Para cada linha, encontre o menor elemento nessa linha e subtrai -lo de todos os elementos nessa linha. Isso garante que cada linha tenha pelo menos um zero.

c. Redução da coluna:

* Para cada coluna, encontre o menor elemento nessa coluna e subtrai -la de todos os elementos nessa coluna. Isso garante que cada coluna tenha pelo menos um zero.

d. Cubra todos os zeros com número mínimo de linhas:

* Desenhe o número mínimo de linhas horizontais e verticais para cobrir todos os zeros na matriz de custo reduzida.
* Se o número de linhas for igual ao número de linhas (ou colunas) (n), uma atribuição ideal pode ser encontrada. Vá para a etapa (f).
* Se o número de linhas for menor que n, a solução atual não será ideal. Vá para a etapa (e).

e. Melhore a matriz (se número de linhas

* Encontre o menor elemento descoberto (isto é, um elemento que não é coberto por nenhuma linha).
* Subtrair esse menor elemento descoberto de todos os elementos descobertos.
* Adicione este menor elemento descoberto a todos os elementos que estão na interseção de duas linhas.
* Volte à etapa (D).

f. Atribuição ideal:

* Depois de ter uma matriz de custos em que o número mínimo de linhas para cobrir todos os zeros é igual ao número de linhas (ou colunas), você pode encontrar uma atribuição ideal.
* Procure linhas e colunas com zeros únicos. Atribua o recurso correspondente à tarefa correspondente.
* Remova a linha e a coluna associadas ao zero atribuído.
* Repita o processo até que todos os recursos e tarefas tenham sido atribuídos.

Exemplo (simplificado):

Suponha que você tenha três encanadores (P1, P2, P3) e três casas (H1, H2, H3). A matriz de custo é:

| | H1 | H2 | H3 |
| ------ | ------ | ------ | ------ |
| P1 | 10 | 12 | 15 |
| P2 | 8 | 11 | 13 |
| P3 | 9 | 10 | 12 |

Vamos aplicar o algoritmo húngaro (simplificado):

1. Redução de linha:

| | H1 | H2 | H3 |
| ------ | ------ | ------ | ------ |
| P1 | 0 | 2 | 5 |
| P2 | 0 | 3 | 5 |
| P3 | 0 | 1 | 3 |

2. Redução da coluna :
| | H1 | H2 | H3 |
| ------ | ------ | ------ | ------ |
| P1 | 0 | 1 | 2 |
| P2 | 0 | 2 | 2 |
| P3 | 0 | 0 | 0 |

3. tampa zeros: Você pode cobrir todos os zeros com duas linhas (uma horizontal na linha P3 e uma vertical na coluna H1). Como 2 <3, a solução não é ideal.

4. melhorar a matriz: O menor elemento descoberto é 1.
* Subtrair 1 dos elementos descobertos.
* Adicione 1 aos elementos de interseção.
| | H1 | H2 | H3 |
| ------ | ------ | ------ | ------ |
| P1 | 0 | 0 | 1 |
| P2 | 0 | 1 | 1 |
| P3 | 1 | 0 | 0 |

5. tampa zeros: Agora você pode cobrir todos os zeros com três linhas. 3 =3, então a solução é ideal.

6. atribuição ideal:
* P1 só pode ser atribuído a H2 (zero único).
* P2 só pode ser atribuído a H1 (zero único).
* P3 só pode ser atribuído a H3 (zero único).

Portanto, a atribuição ideal é:P1 -> H2, P2 -> H1, P3 -> H3. O custo total seria 12 + 8 + 12 =32.

Por que o algoritmo húngaro funciona:o princípio subjacente

O algoritmo húngaro aproveita os seguintes conceitos:

* Adicionando ou subtraindo uma constante de uma linha ou coluna: Adicionar ou subtrair um valor constante de todos os elementos em uma linha ou coluna não altera a atribuição ideal. Isso ocorre porque os custos relativos entre os recursos permanecem os mesmos.
* atribuições de custo zero: O algoritmo visa criar uma matriz de custos onde as atribuições ideais têm custo zero. Isso significa que você encontrou a melhor combinação de recursos e tarefas com base na matriz de custo inicial.
* Teorema de König: Este teorema relata o número mínimo de linhas necessárias para cobrir todos os zeros em uma matriz ao número máximo de zeros independentes (zeros, de modo que dois dois estejam na mesma linha ou coluna). Quando o número de linhas de cobertura é igual ao tamanho da matriz, um conjunto máximo de zeros independente pode ser encontrado, o que corresponde a uma atribuição ideal.

2. Outros algoritmos e considerações:

* Algoritmo de leilão: Adequado para problemas de atribuição em larga escala.
* Algoritmos de fluxo de rede: O problema da atribuição pode ser modelado como um problema de fluxo de rede e resolvido usando algoritmos como o algoritmo Ford-Fulkerson ou o algoritmo Edmonds-Karp.

Como o problema de atribuição otimiza a eficiência:

Os algoritmos do problema de atribuição otimizam a atribuição de tarefas aos recursos com eficiência por:

* minimizando os custos/maximizando os lucros: Eles encontram a combinação de tarefas que resulta no menor custo total ou no maior lucro total.
* Garantir uma atribuição individual: Cada recurso é atribuído a apenas uma tarefa e cada tarefa é atribuída a apenas um recurso. Isso impede a sobrecarga de recursos ou a duplicação de tarefas.
* Considerando recursos/custos individuais: A matriz de custo reflete os custos ou lucros específicos associados a cada combinação de tarefas de recursos. Isso permite que o algoritmo leve em consideração as diferentes habilidades e eficiências de cada recurso.
* Encontrando a solução globalmente ideal: Algoritmos como o algoritmo húngaro garantem encontrar a melhor atribuição possível (ideal).

Aplicações do problema de atribuição:

O problema de atribuição tem uma ampla gama de aplicações em vários campos, incluindo:

* Pesquisa sobre operações: Otimizando a alocação de recursos em fabricação, logística e transporte.
* Gerenciamento de projetos: Atribuir membros da equipe para tarefas do projeto.
* saúde: Atribuir enfermeiros a pacientes em um hospital.
* Esportes: Atribuindo jogadores a posições em um time.
* aprendizado de máquina: Pontos de dados correspondentes no reconhecimento de imagem ou algoritmos de cluster.
* Transporte: Atribuindo veículos a rotas nos serviços de entrega.

Em resumo, o problema de atribuição é uma ferramenta poderosa para otimizar a alocação de tarefas em cenários em que os recursos devem ser atribuídos às tarefas individualmente. Algoritmos como o algoritmo húngaro fornecem soluções ótimas eficientes e garantidas, levando a uma economia de custos significativa e uma eficiência aprimorada.

Anterior :

Próximo :
  Os artigos relacionados
·Métodos de limpeza Dispositivos de Armazenamento 
·Como atualizar o Microsoft Office para Mac 
·Exigência OS para o Rosetta Stone Ultimate Language Di…
·Microsoft Dynamics GP Guia do Usuário 
·Como conectar Jive e SharePoint 
·Como salvar um fundo do slide como um gráfico no Open …
·Como obter mais fontes para o Microsoft Word no Windows…
·Medidas de saída de recursos e atividades são? 
·Como mudar as cores dos SAP Layouts 
·Como exibir um painel de dupla em Yummy FTP 
  Artigos em destaque
·Quais são as diferentes áreas em que o software multi…
·Onde está o jogo Stickman vs PC Mouse? 
·Como converter dados 4D 
·Video- to-Text Software de transcrição 
·WYSIWYG Desenvolvimento 
·Como alterar tom de pele usando o GIMP 
·Como formatar Tempo para Access 2007 
·Como fazer um slide show com som 
·Como Encontrar História Deleted em um laptop 
·Como a Palavra de forma audível ler um documento 
Cop e direita © Rede de conhecimento computador https://ptcomputador.com Todos os Direitos Reservados