12.07.2015 Views

Programaç˜ao Linear - Notas de aula - CEUNES

Programaç˜ao Linear - Notas de aula - CEUNES

Programaç˜ao Linear - Notas de aula - CEUNES

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

CAPÍTULO 7. O MÉTODO SIMPLEX 71FILE ∗ arq = NULL; // p o n t e i r o para arquivo <strong>de</strong> dados do PL//Pré−d e f i n i ç ã o <strong>de</strong> funçõesvoid e r r o ( int e ) ;void liberamem ( void ) ;int entra ( void ) ;int s a i ( unsigned int k ) ;void p i v o t e a r ( int k , int r ) ;void imprimiQS ( void ) ;7.9.2 A função principalA função principal realiza o seguinte:• lê o arquivo <strong>de</strong> entrada com os dados do problema segundo formato <strong>de</strong>scrito no preâmbulo;• adiciona variáveis <strong>de</strong> folga para cada restrição (note que estamos supondo que cada restriçãoé <strong>de</strong> <strong>de</strong>sigualda<strong>de</strong>);• monta o QS inicial e i<strong>de</strong>ntifica as VB’s/VNB’s;• aplica o método Simplex, invocando as funções do processo <strong>de</strong> pivoteamento (veja próximasubseção);• imprimi resultado na tela.//Função p r i n c i p a lint main ( int argc , char ∗ argv [ ] ){unsigned int i , j , s a i d a = 0 , entrada = 0 ;i f ( ( arq = fopen ( argv [ 1 ] , ” r t ” ) ) == NULL){p r i n t f ( ”\nErro ! Arquivo nao encontrado ! \ n\n” ) ;e x i t ( 1 ) ;}// l ê número <strong>de</strong> r e s t r i ç õ e s e <strong>de</strong> v a r i á v e i si f ( f s c a n f ( arq , ”%d” , &m) != 1) e r r o ( 1 ) ;i f ( f s c a n f ( arq , ”%d” , &n) != 1) e r r o ( 1 ) ;n += m;// ∗∗∗∗∗∗∗ EXERCÍCIO ∗∗∗∗∗∗∗∗// Porque incrementar o número <strong>de</strong> v a r i á v e i s em m?// aloca matrizes na memóriai f ( (QS = ( double ∗∗) malloc ( (m+1)∗ sizeof ( double ∗ ) ) )== NULL) e r r o ( 2 ) ;for ( i = 0 ; i < m+1; i++)i f ( (QS[ i ] = ( double ∗) malloc ( ( n−m+1)∗ sizeof ( double ) ) )

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!