1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Algoritmo Húngaro em Matlab

Discussão em 'Programação' iniciada por Belmira Castro, 29 de Novembro de 2012. (Respostas: 7; Visualizações: 2182)

  1. Preciso de ajuda para resolver um problema que envolve o algoritmo húngaro. O objectivo do problema é minimizar uma função, onde temos n numero de trabalhadores e n numeros de tarefas, cada trabalhador cobra um certo preço por cada trabalho e o nosso objectivo é conseguir diminuir os custos ao maximo. Cada trabalho tem de ser feito por todos os trabalhadores e todos os trabalhadores tem de fazer todos os trabalhos. O suposto é começar por efectuar o algoritmo de húngaro apartir de condiçoes que vamos impor a uma matriz ( a matriz dos preços) em que em cada linha dessa matriz escolhemos o elemento mais pequeno e subtraimos de todos os elementos dessa linha o elemento escolhido, fazendo isso para todas as linhas e depois repetimos o processo mas agora para as colunas ( nisto se baseia o algoritmo de hungaro).Gostaria de que me ajudassem , que me dessem alguma luzes ao menos , quero saber como por condiçoes para o menor valor das colunas e das linhas e sei que depois de ter esse valor vou criar uma matriz de 1's e 0's e usar apenas o valor 1 para somar todos os preços , ajudem me por favor
     
  2. St0ned

    St0ned Banido

    Basicamente queres que a malta te resolva o trabalho. Isso até acho q é contra as regras do forum.

    O que tu queres é programação linear, por acaso não estou dentro desse algoritmo.

    Se tiveres dúvidas como fazer qualquer coisa em concreto no matlab, ainda por cima o que tens a fazer é do mais basico como manipular matrizes, pergunta. Agora não ponhas os outros a desenvolver um algoritmo para resolver o teu problema.
     
  3. Tenho uma matriz n x n, como é que eu tiro a cada linha dessa matriz o minimo dessa linha?
     
  4. St0ned

    St0ned Banido

    O mat lab tem as funções min e max que podes usar.
    Deixo-te um código para a primeira linha:

    Assumindo uma matriz com o nome A ( NxN )

    minimo = min ( A(1;1:N) );

    Só tens que fazer isto para todas as linhas. A maneira menos elegante é um ciclo "for" no entanto deve haver maneiras mais elegantes.

    Depois é só ir retirando o valor guardado em minimo.
     
  5. tiagopestana

    tiagopestana Power Member

    Em Matlab a função min (como a esmagadora maioria das funções) funciona de forma matricial. A maneira mais "correcta" de fazer a coisa é fazer min(A). Isto dá-te como retorno um vector linha de dimensão n, em que cada elemento é o mínimo de cada coluna da matriz A. Como o que tu queres é o mínimo por linha, faz primeiro a transposta da matriz
     
  6. St0ned

    St0ned Banido

    Então ainda mais fácil, nem me lembrei dessa.
     
  7. ajuda

    Boa tarde
    Também estou a fazer um projecto similar, e embora já tenha conseguido fazer todas as operações matriciais que o algortimo implica estou presa numa parte. Alguém sabe como posso contar o número minimo de linhas/colunas que atravessadas contêm todos os zeros? Não sei como hei-de traduzir isto para matlab :S

    desde já agradeço a atenção
     
  8. boas...

    estou tb com um trabalho semelhante.

    numa fase do projecto, a matriz aparece me em vectores coluna separados e eu qero qe me apareca em matriz inteira, será qe alguem me pode ajudar?
     

Partilhar esta Página