Pergunta

Eu estou usando LPSolve IDE para resolver um LP problema.Eu tenho que testar o modelo em relação a cerca de 10 ou 20 conjuntos de parâmetros diferentes e compará-los.

Existe alguma maneira para me manter o modelo geral, mas para especificar as constantes como eu desejo?Por exemplo, se eu tenho a seguinte restrição:

A >= [c]*B

Quero fazer o teste como o modelo se comporta quando [c] = 10, [c] = 20, e assim por diante.Por agora, eu estou simplesmente preparar diferentes .lp arquivos via pesquisar e substituir, mas:

a) ele não parece muito eficiente

b) em algum ponto, eu tenho que considerar a restrição do formulário A >= B/[c] // =(1/[c]*B).Parece, no entanto, que LPSolve não recogize o operador de divisão.É especificar 1/[c] diretamente a cada vez que a única opção?

Foi útil?

Solução

Ele não é totalmente claro qual o formato que você usa com lp_solve.Com o cplex lp formato, por exemplo, não há nenhuma maneira melhor:você não pode usar a divisão para o coeficiente (ou mesmo de multiplicação para que o assunto) e não há nenhuma função 'incluir' outro arquivo ou introduzir nomes simbólicos para um parâmetro.É uma linguagem muito simples, e não é adequado para qualquer tarefa complexa.

Há várias soluções para o seu problema;depende se você está interessado em algo rápido para implementar, ou "limpar", reutilizáveis e com um curto tempo de execução (é claro que este é um compromisso).

  1. Você tem a possibilidade de gerar o seu lp ficheiros a partir de outro idioma, por exemplo,python, bash, etc.Esta é uma "rápida e suja" em solução:muito lento em tempo de execução, mas, provavelmente, o mais rápido de implementar.

  2. Como todos os lp solver eu sei, lp_solve vem com vários modelação de interfaces:você pode utilizar, por exemplo, o GNU formato mp em vez da atual.Ele reconhece multiplicação, divisão, condicionais, etc.(tudo o que você está procurando, consulte a seção 3.1 'expressões numéricas')

  3. Finalmente, você tem a possibilidade de utilizar diretamente o lp_solve interface a partir de outra linguagem de programação (por exemplo,C) qual será a opção mais flexível, mas pode exigir um pouco mais de trabalho.

Ver o lp_solve documentação para mais detalhes sobre os formatos de entrada suportados e a referência da API.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top