Referência ao Ficheiro rlp.c


Descrição Detalhada

Implementação de funções de programação linear.

Autor:
Rui Carlos A. Gonçalves <rcgoncalves.pt@gmail.com>
Versão:
2.1.1
Data:
02/2009

Definido no ficheiro rlp.c.

Ir para o código fonte deste ficheiro.

Macros

#define POS(L, C, NC)   ((L)*(NC)+(C))
 Dado a linha, a coluna e o número de colunas de um array de duas dimensões obtém o índice dessa posição assumindo que o array é de uma dimensão.

Funções

static void fmprint (double *matrix, int nrows, int ncols, FILE *file)
 Imprime uma matriz associada a um problema de programação linear.
static double minimumc (double *matrix, int nrows, int ncols, int col, int *row)
 Determina o menor valor de uma coluna de uma matriz.
static double minimumr (double *matrix, int ncols, int row, int *col)
 Determina o menor valor de uma linha de uma matriz.
int simplex (double *a, int n, int m, FILE *file)
 Aplica o Algoritmo Simplex a um problema de optimização (programação linear).
int simplexp (double *a, int n, int m, int pos, FILE *file)
 Aplica o Algoritmo Simplex primal a um problema de programação linear.
int simplexd (double *a, int n, int m, int pos, FILE *file)
 Aplica o Algoritmo Simplex dual a um problema de programação linear.


Documentação das Funções

static void fmprint ( double *  matrix,
int  nrows,
int  ncols,
FILE *  file 
) [static]

Imprime uma matriz associada a um problema de programação linear.

A matriz é impressa no ficheiro file (que deverá ter sido previamente aberto).

Parâmetros:
matrix matriz que vamos imprimir.
nrows número de linhas.
ncols número de colunas.
file ficheiro onde a matriz será impressa.

Definido na linha 30 do ficheiro rlp.c.

static double minimumc ( double *  matrix,
int  nrows,
int  ncols,
int  col,
int *  row 
) [static]

Determina o menor valor de uma coluna de uma matriz.

Parâmetros:
matrix matriz onde procuramos o valor.
nrows número de linhas da matriz.
ncols número de colunas da matriz.
col coluna onde vamos procurar.
row local onde é colocado o índice da linha em que o elemento ocorreu.
Retorna:
mínimo valor encontrado na coluna col da matriz matrix.

Definido na linha 70 do ficheiro rlp.c.

static double minimumr ( double *  matrix,
int  ncols,
int  row,
int *  col 
) [static]

Determina o menor valor de uma linha de uma matriz.

Parâmetros:
matrix matriz onde procuramos o valor.
ncols número de colunas da matriz.
row linha onde vamos procurar.
col local onde é colocado o índice da coluna em que o elemento ocorreu.
Retorna:
mínimo valor encontrado na linha row da matriz matrix.

Definido na linha 98 do ficheiro rlp.c.

int simplex ( double *  a,
int  n,
int  m,
FILE *  file 
)

Aplica o Algoritmo Simplex a um problema de optimização (programação linear).

Dado um problema de n variáveis (x1 , ... , xn ) e m condições (c1=b1 , ... , cm=bm ), a função deve receber uma matriz a de dimensão (m+1)*(n+m+2) contendo:

  • em a[0][i-1] (para i de 1 até n ) o coeficiente da variável xi na expressão a minimizar;
  • em a[0][i] (para i de n até n+m+1 ) o valor 0;
  • em a[i][j-1] (para i de 1 até m e j de 1 até n ) o coeficiente da variável xj na condição ci;
  • em a[i][j] (para i de 1 até m e j de n até n+m-1 ) a matriz identidade;
  • em a[i][n+m] (para i de 1 até m ) o valor bi;
  • em a[i][n+m+1] (para i de 1 até m ) o valor n+i.
Permite definir um ficheiro onde são colocadas as várias tabelas resultantes da aplicação do algoritmo (através da variável file).

Parâmetros:
a matriz que representa o problema (conforme a descrição acima).
n número de variáveis da função objectivo.
m número de condições.
file ficheiro onde as tabelas serão impressas (ou NULL).
Retorna:
0 se for possível determinar um resultado. 1 caso contrário.

Definido na linha 115 do ficheiro rlp.c.

int simplexd ( double *  a,
int  n,
int  m,
int  pos,
FILE *  file 
)

Aplica o Algoritmo Simplex dual a um problema de programação linear.

A matriz de entrada (a) segue o formato da matriz de entrada da função simplex.
Permite definir um ficheiro onde são colocadas as várias tabelas resultantes da aplicação do algoritmo (através da variável file).

Parâmetros:
a matriz que representa o problema.
n número de variáveis da função objectivo.
m número de condições.
pos posição em que se encontra o menor valor da primeira linha (sendo que o menor valor terá que ser obrigatoriamente negativo).
file ficheiro onde as tabelas serão impressas (ou NULL).
Retorna:
0 se for possível determinar um resultado. 1 caso contrário.

Definido na linha 207 do ficheiro rlp.c.

int simplexp ( double *  a,
int  n,
int  m,
int  pos,
FILE *  file 
)

Aplica o Algoritmo Simplex primal a um problema de programação linear.

A matriz de entrada (a) segue o formato da matriz de entrada da função simplex.
Permite definir um ficheiro onde são colocadas as várias tabelas resultantes da aplicação do algoritmo (através da variável file).

Parâmetros:
a matriz que representa o problema.
n número de variáveis da função objectivo.
m número de condições.
pos posição em que se encontra o menor valor da última coluna das restrições (sendo que o menor valor terá que ser obrigatoriamente negativo).
file ficheiro onde as tabelas serão impressas (ou NULL).
Retorna:
0 se for possível determinar um resultado. 1 caso contrário.

Definido na linha 143 do ficheiro rlp.c.


LibRCG © 2004-2009   Rui Carlos A. Gonçalves