programação linear inteira é a ciência da modelagem de um problema que ou minimiza ou maximiza uma função objetivo linear , de acordo com um conjunto de restrições expressas como desigualdades lineares. Quando resolvido completamente , a solução para o programa linear inteiro garante a melhor solução para o problema . No entanto , a complexidade do problema de escalas exponencialmente com o tamanho do problema . Portanto, ele pode levar um longo tempo para chegar à solução final. Alternativamente , o problema pode ser resolvido parcialmente, e diferentes heurísticas pode ser explorada para obter uma solução sub - óptima de um tempo mais curto . Coisas que você precisa
Linear solver programação
computador com memória suficiente e poder de processamento
Show Mais instruções
formulação e resolução de programas lineares
1
Decida se o problema é um problema de "maximização " ou um problema " minimização " . Um problema de maximização tenta encontrar uma solução tal em que a função objetivo é maximizada. Um problema de minimização tenta encontrar uma solução em que a função objetivo é minimizada. Por exemplo , o problema de encontrar o caminho mais curto entre dois pontos é um problema de minimização . Por outro lado , o problema para embalar o número de tamanhos diferentes seixos máximas em uma garrafa é um problema de maximização .
2
Decidir as variáveis necessárias para a formulação. Escolhendo o direito conjunto de variáveis é necessário para minimizar a complexidade do problema , e, correspondentemente, chegar à solução mais rápida . Normalmente, cada entidade cujo valor afeta a solução final é uma variável.
3
Modele a função objetivo . A função objetivo é modelado como uma soma de produtos de variáveis e seu impacto sobre a solução final. Por exemplo , se o problema é o de minimizar a distância entre dois nós de um gráfico , cada ligação entre dois nós será uma variável que assume um valor de 0 ou 1 , e a sua contribuição para a função de objectivo será a distância entre os nós . Neste caso , a variável pode ser chamado de " X ( i , j ) , " em que "i " e " j " são quaisquer dois nós no gráfico , e a distância entre os dois nós pode ser " V ( i , j ) . " X ( i , j), vai ser de 1 , se a ligação é parte do caminho final entre os dois nós . Assim, a função objetivo será o de minimizar a soma de V (i, j) * X (i, j ), onde a soma é superior a todas as conexões.
4
Configure as restrições. As restrições devem capturar todas as restrições impostas pelo problema. Por exemplo o caminho mais curto , existem as seguintes restrições :
X ( i , j ) pode ser 0 ou 1 . Assim , X ( i , j ) deve ser maior do que ou igual a 0 , e x (i , j ) deve ser inferior ou igual a 1 .
Se conexão X ( i , j ) é escolhido , exatamente uma ligação a partir do nó de "j " de algum outro nó que não seja " i " deve ser escolhido . Assim , X ( i , j ) deve ser maior do que ou igual à soma de todas as variáveis do tipo X ( j , k ) , em que " k " não é igual a " i ".
Uma ligação a partir de o nó inicial deve ser selecionada. Assim , soma de X ( n, k ) deve ser 1 , em que "n " é o nó inicial . Da mesma forma, soma de X (k, m) deve ser de 1 , onde " m" é o nó final.
5
modelo o problema tanto no Sistema de Programação Matemática formato (MPS ) , ou o Linear Programação ( LP) de formato.
6
ou comprar um solver comercial, como FICO ou CLPEX , ou baixar um solucionador livre como GLPK . Observe os solucionadores livres são muito mais lentos do que os solucionadores de comerciais e pode não ser adequado para a solução de grandes problemas.
7
Se o solucionador não converge para a solução final em prazo razoável, tentar heurísticas . Uma heurística pode ser para remover as restrições de integridade sobre as variáveis , e aproximar as variáveis para o número inteiro mais próximo para obter uma solução sub- óptima.