[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>