Está en la página 1de 3

#include <iostream> printf("\n * Numero de

Restricciones: ");
#include <stdlib.h>
scanf("%d",&rest);
#include <stdio.h>
fflush(stdin);
#include <stdlib.h>
#include <conio.h>
for(i=0;i<rest;i++){
#define MAX 20 //Numero
maxiomo de variables printf("\n * Restriccion
%d\n",i+1);
#define RST 10 // Numero
maximo de restricciones for(c=0;c<*var;c++){
printf(" c%d: ",c+1);
double funcion[MAX],
restricciones[MAX+1][MAX+RST]; scanf("%lf",&restricciones[i][c]);
double independiente[RST]; fflush(stdin);
}
printf("Termino independiente: ");
int leeDatos(int *var) //funcion para leer los scanf("%lf", &independiente[i]);
datos
fflush(stdin);
{
}
int rest,c,i;
return rest;// retorno de la funcion
printf("************************
*** METODO SIMPLEX }
******************************\n");
printf("\n * Funcion a Optimizar"); // PRINCIPAL
printf("\n * Numero de Variables de
la Funcion Objetivo: ");
int main(void)
scanf("%d",var);
{
system("color 0d");//color de fondo
for(c=0;c<*var;c++){ negro "0" color de letras purpura"d"
printf(" c%d: ", c+1); int rest, var, ni ;
scanf("%lf",&funcion[c]); int i,j, k, columna, fila, count, cuenta;
fflush(stdin); double maximo = 0, menor, aux,
} mult, temp;
rest = leeDatos(&var); //retorna del }
valor de la funcion

//Encontrar la variable de decision que entra


for(i=0;i<rest;i++)//Crear tabla inicial a la base
simplex
//y la de holgura que saldra de la base
for(j=0; j<rest; j++)
do //Encontrar la variable de decision que
if (i == j) entrara a la base
{
restricciones[i][var+j]=1;
maximo = abs(restricciones[rest][0]);
else
columna = 0;

restricciones[i][var+j]=0; for(j=0; j<=rest+var; j++){


if( restricciones[rest][j] < 0 ){
for(i=0; i<rest;i++)
restricciones[i][var+rest] = temp = -1 *
independiente[i]; restricciones[rest][j];

for(j=0; j<var; j++) if ( maximo < temp) {

restricciones[rest][j] = maximo =
funcion[j] * -1; temp;
columna = j;
for(j=var; j<rest+var; j++)
restricciones[rest][j] = 0; }

ni=1; }
else
printf("\n********************** continue;
***************************");
}
printf("\n ITERACION
%d",ni); count = 0;
aux = 1e20;
printf("\n********************** menor = 1e20;
***************************\n");
for(i=0; i<rest; i++) {
ni++;
if(restricciones[i][columna] >
for(i=0; i<=rest; i++) { 0)
for(j=0; j<=rest+var; j++) aux =
printf(" %.2lf \t", restricciones[i][rest+var] /
restricciones[i][j]); restricciones[i][columna];

printf("\n"); else
count++; }
if( menor > aux ) { }
menor = aux; }
fila = i;
printf("\n**********************
} ***************************");
} printf("\n ITERACION
if(count == rest) {//CASO ESPECIAL %d",ni);
region no acotada
printf("CASO ESPECIAL: printf("\n**********************
Refgion No Acotada"); ***************************\n");

exit(1); ni++;

} for(i=0; i<=rest; i++) {

printf("\nPivote: %.2lf, fila %d for(j=0; j<=rest+var;


columna %d",restricciones[fila][columna], j++)
fila, columna); printf(" %.2lf
//Encontrar los coeficientes de la \t", restricciones[i][j]);
nueva tabla printf("\n");
aux = restricciones[fila][columna]; }
for(j=0; j<=(rest+var); j++) cuenta = 0;
restricciones[fila][j] = for(j=0;j<rest+var;j++)
restricciones[fila][j] / aux;
if(restricciones[rest][j] >= 0)
for(i=0; i<=rest; i++) {
cuenta++;
if (i == fila )
if (cuenta == rest+var)
continue;
break;
else {
} while(cuenta);
aux =
restricciones[i][columna] * -1;
for(k=0; k <= printf("---->");
rest+var; k++) {

restricciones[i][k] = (aux * getch();


restricciones[fila][k]) + }

restricciones[i][k];

También podría gustarte