• Nenhum resultado encontrado

Optimização Combinatória. Guia de Utilização do Software

N/A
N/A
Protected

Academic year: 2021

Share "Optimização Combinatória. Guia de Utilização do Software"

Copied!
7
0
0

Texto

(1)

Optimização Combinatória

Guia de Utilização do Software

José Manuel Vasconcelos Valério de Carvalho

Universidade do Minho 2005

(2)

Introdução

Este documento apresenta diversas informações sobre a utilização dos seguintes packages de programação matemática:

· Problemas de maximização de fluxo: MAXFLOW

· Problema do caminho mais curto: LTHRS

· Problemas de afectação: APC

· Problema do caixeiro viajante: TSP2

· Problema de emparelhamento de custo mínimo em grafos não bipartidos: SAP Todos estes packages se encontram disponíveis:

- na Internet: no endereço http://OpsResearch.com/, local que fornece inúmeras informações de interesse sobre o domínio da Investigação Operacional, ou

- na ORSEP (Operations Research Software Exchange Program), por ftp (usando como login ftp e password um endereço de e-mail válido), no sistema HELIOS.MATHEMATIK.UNI-KL.DE, na directoria pub/Math/ORSEP. Para mais detalhes, ver EJOR 38/1 (1989) e EJOR 48 (1990).

Os programas foram desenvolvidos em Fortran (LTHRS, MAXFLOW e APC) e em Pascal (TSP).

Utilizadores interessados em converter os programas de Fortran para C poderão fazê-lo com software disponível na Internet no seguinte endereço:

- http://www.fortran.com/fortran/free.html

Estes packages usam ficheiros de dados como input. Para construir o ficheiro de dados pode ser usado qualquer processor de texto, desde que o ficheiro seja guardado como um ficheiro de texto, apenas com caracteres ASCII. No caso do WORD, deve ser usada a opção GUARDAR COMO ficheiro do tipo TEXT ONLY (*.TXT), podendo o utilizador escolher o nome que pretende dar ao ficheiro.

Ficheiros do tipo *.DOC não podem ser utilizados, porque contêm um cabeçalho com caracteres invisíveis para o utilizador que os programas interpretam como dados do problema.

Os resultados dos programas são, por defeito, apresentados no écran, podendo, no entanto, ser redireccionados para um ficheiro, através da opção >ficheiro.

Os ficheiros relativos a cada programa encontram-se na diskette, respectivamente, nas directorias fluxo, caminho, afecta e caixeiro.

Problemas de Maximização de Fluxo: MAXFLOW

Autoria

O package é baseado num artigo de D. Goldfarb, M.D. Grigoriadis, "A computational comparison of the Dinic and network simplex methods for maximum flow”, Annals of Operations Research 7, 1988.

Objectivo

Este programa determina o fluxo máximo entre um vértice fonte, abaixo designado por isou, e um terminal designado por isnk. Os dados de entrada devem ser números inteiros.

Definição do Input

(3)

O package aceita dados de input, a partir de um ficheiro de texto, com o seguinte formato:

Na primeira linha:

nodes narcs isou isnk

sendo nodes o número de vértices do grafo e narcs o número de arcos, isou a fonte de fluxo (vértice s) e isnk o terminal (vértice t).

Nas restantes narcs linhas, é feita uma listagem dos narcs arcos, no seguinte formato:

fromnode tonode arccapacity

sendo fromnode o vértice de origem do arco, tonode o vértice de destino, e arccapacity a respectiva capacidade. Se for declarado um valor de capacidade nulo, o programa assume uma capacidade infinita para o arco.

O formato de input é 4I10, pelo que devem ser reservadas 10 posições para cada dado, ou então, os dados devem ser separados por vírgulas.

Exemplo

O input da rede apresentada na Pág. 66 dos Apontamentos (atribuindo aos vértices v1,v2,v3 e v4, os números 1,2,3 e 4, respectivamente, ao vértice s, o número 5, e ao vértice t, o número 6) é o seguinte:

6,9,5,6 5,1,2 5,2,3 1,3,3 1,4,1 1,2,2 2,4,2 3,6,1 3,4,4 4,6,3

Execução do Programa Para executar o programa, fazer - MAXFLOW

sendo pedido o nome do ficheiro de input e do ficheiro de output.

Informações Adicionais

Informações adicionais sobre este programa, nomeadamente sobre a estratégia do algoritmo, as estruturas de dados utilizadas e o desempenho computacional, podem ser obtidas no artigo acima referido.

Problema do Caminho mais curto: LTHRS

(4)

Autoria

O package foi desenvolvido por Gallo e Pallotino, sendo o algoritmo baseado em ideias de Glover, Klingman and Philips.

Objectivo

Este programa determina o caminho mais curto entre um vértice de raíz (origem), abaixo designado por nr, e todos os restantes vértices do grafo. São admitidos custos negativos para os arcos, mas o grafo não deve ter nenhum circuito de comprimento negativo. Os valores dos custos devem ser inteiros.

Definição do Input

O programa LTHRS lê o input numa representação designada por uma estrela de sucessores. O programa usa esta estrutura de dados por ser a mais eficiente para a implementação do algoritmo. No entanto, a introdução de dados neste formato pressupõe o trabalho prévio de organização de dados, e está sujeita a erros. Para ultrapassar este problema, foi desenvolvido o programa LA2ES que converte um ficheiro com uma lista de arcos num ficheiro com o grafo representado como uma estrela de

sucessores. Para correr este programa, fazer LA2ES, e fornecer o nome dos ficheiros de input e output.

O ficheiro com a lista de arcos deve ter o seguinte formato:

Nas três primeiras linhas:

n m nr

sendo n o número de vértices do grafo e m o número de arcos, e nr o vértice de raíz (origem). Nas restantes m linhas, é feita uma listagem dos m arcos, no seguinte formato:

org dst custo

sendo org o vértice de origem do arco, dst o vértice de destino, e custo o respectivo custo.

Exemplo

No ficheiro PAG36 está definido um problema com 7 vértices e 12 arcos, sendo o vértice de origem o vértice 7. Este Exemplo corresponde ao grafo apresentado nos Apontamentos na Página 36, e o vértice 7 corresponde ao vértice s, enquanto os restantes vértices têm a numeração apresentada na Figura. O ficheiro PAG44 apresenta outro Exemplo dos Apontamentos.

Execução do Programa Para executar o programa, fazer

- LTHRS <EXEMPLO.INP >EXEMPLO.OUT

em que EXEMPLO.INP deve ser um ficheiro com o formato de lista de adjacências.

(5)

Informações Adicionais

Informações adicionais sobre este programa, nomeadamente sobre a estratégia do algoritmo, as estruturas de dados utilizadas e o desempenho computacional, podem ser obtidas no artigo:

Giorgio Gallo e Stefano Pallotino, “Shortest paths algorithms”, Annals of Operations Research 13, 3-79, 1988.

A estratégia do algoritmo foi concebida por

F.Glover, D. Klingman e N.Phillips, “A new polynomially bounded shortest path algorithm”, Operations Research, 65-74, 1985.

Problema de Afectação: APC

Autoria

O algoritmo de afectação foi desenvolvido por Carpaneto, Martello e Toth e é designado por APC.

Baseia-se em ideias apresentadas no artigo Carpaneto, Martello e Toth, “Algorithms and codes dor the assignment problem”, Annals of Operations Research 13, 193-224, 1988.

O módulo A.FOR destina-se a fazer a interface com o utilizador.

Objectivo

Este programa determina a afectação de custo mínimo, dada uma matriz de custos de dimensão n x n.

Definição do Input

O ficheiro com a matriz de custos deve ter o seguinte formato:

Na primeira linha:

n

sendo n a dimensão da matriz quadrada. Em cada uma das restantes n linhas, é feita uma listagem dos n coeficientes de custo relativos a essa linha.

O formato de input é 10I8, pelo que devem ser reservadas 8 posições para cada dado, ou então, os dados devem ser separados por vírgulas.

Exemplo

Nos ficheiros LOG158.DAT e LOG159.DAT estão definidos os inputs dos problemas apresentados nas páginas 158 e 159 dos Apontamentos, respectivamente.

Execução do Programa Para executar o programa, fazer

(6)

- A

sendo pedido o nome do ficheiro de input e do ficheiro de output.

Informações Adicionais

Informações adicionais sobre este programa, nomeadamente sobre a estratégia do algoritmo, as estruturas de dados utilizadas e o desempenho computacional, podem ser obtidas no artigo acima referido.

Problema do caixeiro viajante: TSP

Autoria

O algoritmo o problema do caixeiro viajante foi desenvolvido por T. Volgenant and W.B. van den Hout do Institute da Universidade de Amsterdão, e está disponível através da ORSEP.

Objectivo

Este programa determina a solução óptima do problema de caixeiro viajante simétrico, ou seja, com custos associados aos arcos cij=cji.

Informações Adicionais Ver ficheiro READ.ME

Problema de emparelhamento de custo mínimo em grafos não bipartidos: SAP

Autoria

O algoritmo é baseado em ideias de U. Derigs.

Objectivo

Este programa determina o emparelhamento perfeito de custo mínimo em grafos não bipartidos com um número par de vértices, significando emparelhamento perfeito que todos os vértices do grafo estão emparelhados. Os valores dos custos associados aos arcos do grafo devem ser inteiros.

Este algoritmo pode também ser usado para resolver o problema de emparelhamento apresentado nos Apontamentos da disciplina, em que se pretende determinar o emparelhamento de maior cardinal num grafo não-bipartido. Para o efeito, todos os custos associados aos arcos devem ser iguais a –1. A solução de menor custo é aquela em que todos os vértices (em número que deve ser sempre par) estão emparelhados.

Definição do Input

(7)

O programa SAP lê o input numa representação própria. O programa usa esta estrutura de dados por ser a mais eficiente para a implementação do algoritmo. No entanto, a introdução de dados neste formato pressupõe o trabalho prévio de organização de dados, e está sujeita a erros.

Para ultrapassar este problema, foi desenvolvido o programa LA2NBM que converte um ficheiro com uma lista de arcos num ficheiro com o grafo representado de uma forma adequada. Para correr este programa, fazer LA2NBM, e fornecer o nome dos ficheiros de input e output. Ver exemplo de aplicação em baixo.

O ficheiro com a lista de arcos deve ter o seguinte formato:

Nas duas primeiras linhas:

n m

sendo n o número de vértices do grafo e m o número de arcos. Nas restantes m linhas, é feita uma listagem dos m arcos, no seguinte formato:

org dst custo

sendo org o vértice de origem do arco, dst o vértice de destino, e custo o respectivo custo.

Exemplo

No ficheiro APONT65 está definido um problema com 12 vértices e 16 arcos. Este Exemplo corresponde ao grafo apresentado no Exemplo dos Apontamentos relativo à solução do problema de emparelhamento em grafos não-bipartidos. Os vértices têm a numeração apresentada na Figura e os custos associados aos arcos são iguais a -1.

A aplicação do programa LA2NBM ao ficheiro APONT65 (que tem uma lista de arcos) produz o ficheiro NBM65 (que tem uma representação própria que serve de input ao programa SAP).

Execução do Programa

Para executar o programa, fazer a nível do MS-DOS - SAP <EXEMPLO.INP >EXEMPLO.OUT

em que EXEMPLO.INP deve ser um ficheiro com o formato próprio.

Informações Adicionais

Informações adicionais sobre este programa, nomeadamente sobre a estratégia do algoritmo, as estruturas de dados utilizadas e o desempenho computacional, podem ser obtidas no artigo:

U. Derigs, “Solving non-bipartite matching problems via shortest path techniques”, Annals of Operations Research 13, 225--261, 1988.

Referências

Documentos relacionados

Neste capítulo, será apresentada a Gestão Pública no município de Telêmaco Borba e a Instituição Privada de Ensino, onde será descrito como ocorre à relação entre

O presente estudo objetivou testar a influência do guano na diversidade e abundância de invertebrados na caverna Toca da Raposa, município de Simão Dias,

O TBC surge como uma das muitas alternativas pensadas para as populações locais, se constituindo como uma atividade econômica solidária que concatena a comunidade com os

Local de realização da avaliação: Centro de Aperfeiçoamento dos Profissionais da Educação - EAPE , endereço : SGAS 907 - Brasília/DF. Estamos à disposição

De seguida, vamos adaptar a nossa demonstrac¸ ˜ao da f ´ormula de M ¨untz, partindo de outras transformadas aritm ´eticas diferentes da transformada de M ¨obius, para dedu-

6 Consideraremos que a narrativa de Lewis Carroll oscila ficcionalmente entre o maravilhoso e o fantástico, chegando mesmo a sugerir-se com aspectos do estranho,

Exposição no Átrio do Auditório Municipal de Mesão Frio Exposição dos trabalhos feitos nas Oficinas de Origamis para alunos, promovida no dia 13 de Abril de 2011 na

Nessa situação temos claramente a relação de tecnovívio apresentado por Dubatti (2012) operando, visto que nessa experiência ambos os atores tra- çam um diálogo que não se dá