Algoritmo Metodo Simplex
Função que obtém os dados do problema.
Dados de entrada: n – nº de variáveis m – nº de restrições c – coeficientes das variáveis na função objectivo (vector com dimensão 1 x n)
A – coeficientes das variáveis nas restrições (matriz com dimensão m x n) b – termos independentes das restrições (vector com dimensão m x1) => mas o utilizador vai introduzir dados na forma de vector linha
Dados de saída:
--Acções a efectuar:
Pede nº de variáveis
Lê n e garante que é um valor positivo e inferior a MAXVAR
Pede nº de restrições
Lê m e garante que é um valor positivo e inferior a MAXRES
Pede coeficientes das variáveis na função objectivo
Lê c e garante que tem dimensão 1xn
Pede coeficientes das variáveis nas restrições
Lê A e garante que tem dimensão mxn
Pede termos independentes das restrições
Lê b e garante que tem dimensão 1xm
Transpõe vector b
Algoritmo da função Apresenta_resultados
Função que apresenta os resultados finais da resolução do problema, ou seja, x* e Z*.
Dados de entrada: n – nº de variáveis m – nº de restrições
SBA – valores das variáveis na solução óptima (x*)
Z – valor óptimo da função objectivo (Z*)
Dados de saída:
--Acções a efectuar:
Mostra os valores da solução óptima que estão armazenados em SBA
Mostra o valor de Z* que se encontra na variável Z
Algoritmo do programa principal Metodo_Simplex
Programa principal que implementa o método Simplex
Acções a efectuar:
1. Obtém valores de m, n, c, A e b, chamando a função Le_dados
2. Transforma a matriz A na sua forma aumentada acrescentando-lhe uma matriz identidade (m x m) à direita
3. Acrescenta m zeros à direita do vector c correspondentes aos coeficientes das variáveis slack
4. Cria um vector xB com os índices das variáveis básicas
Inicialmente as variáveis básicas são as variáveis slack
5. Cria um vector cB com os coeficientes das variáveis básicas na função objectivo
Inicialmente os coeficientes das variáveis básicas na função objectivo