[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico]
[Índice de assunto]
Re: Re: EP2
Ricardo,
Aparentemente você está usando a mesma
função para simplex (documentada em um trecho de livro em .pdf) que
nós usamos. Não sei se ajuda muito, mas me lembro que
um (o maior) erro que a gente cometeu, apesar de termos lido
direito a documentação, foi passar o número de restrições de igualdade no
parâmetro errado, resultando nessas soluções com números negativos (totalmente
desesperadores). Como no ep supomos que a entrada deveria ser apenas feita com
restrições de igualdade, passamos os parâmetros m1 e m2 como 0, usando as
variáveis "slack" para transformar as restrições do problema
em restrições de igualdade. Se for o mesmo algoritmo (suponho que seja), não
precisa usar gambiarras.. apesar da entrada do algoritmo parecer estranha no
início, ele funciona muito bem. Provavelmente é um erro besta como o nosso mas
que, como qualquer erro pequeno, é muito difícil de
descobrir.
PS: Professor, como usa o fogão?
Tentei esquentar o jantar aqui e tem fumaça pra tudo quanto é lado.
Alguém sabe o número do corpo de bombeiros?? ;o)
----- Original Message -----
Sent: Monday, May 27, 2002 1:51 AM
Subject: Re: EP2
Olha... na verdade, o meu "está funcionando
perfeitamente" era com constraints do tipo <=b[j].
Agora pouco fui
transformar em restrições "=b[j]" (formato standard), e realmente há um
problema com a função.. ela está calculando algumas das variáveis como sendo
negativas... (?!?)
Consequentemente algumas resoluções ele faz direito,
e outras não.
Tentei consertar na gambiarra, e não consegui. Se alguém
puder dar alguma dica...
At 23:05 26/05/02 -0300, you wrote:
Eu usei as funcoes do nr.com.
Talvez vcs estejam tendo o mesmo problema que eu tive.. falta de atenção
;)
Lá no pdf, explicam que a função usa indices da matriz entre
1...m+2 e entre 1...n+1. (ou seja, eles NAO usam o indice zero).
Entao, é preciso alocar (m+3) x (n+2), e na hora de popular a matriz vc vai
começar pelo a[1][1].
Tá até escrito claramente.. "O float **a deve
apontar para memoria alocada que permita referencias no subintervalo a[i][k]
i=1,2,..m+2; k=1,2,..n+1." "You will suffer endless agonies if you
fail to understand this simple point." :)
Tirando esse detalhe, que
me fez perder umas horas, agora tá funcionando perfeitamente.
ps: n+1
é n variaveis + 1 coluna de constantes
m+2 é m
constraints + 1 linha de vetor-custo + 1 linha extra que a funcao as vezes
usa internamente (para calculo de um
vetor-custo-auxiliar)
- Follow-Ups:
- Re: Re: EP2
- From: "Ernesto G. Birgin" <egbirgin@yahoo.com>
- References:
- Re: EP2
- From: Ricardo Drizin <ricardo@linux.ime.usp.br>