This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Help With Add In, Compile, run

prHi

I'm new to this site and first of all i would like to thank all for this forum, he can be important to help each other.

My problem

I have a c algorithm and i ould like to put this in my adin, i don't know to do it.

this is the algorithm

/* METODO SIMPLEX
*/

#include <stdlib.h>
#include <antashev.h>
#include <bntashev.h>
#include <cntashev.h>

//Lo maximo que pueden alcanzar las variables y restricciones
#define MAX 10
#define RESTRICCION 3
double funcion[MAX], restricciones[MAX+1][MAX+RESTRICCION];
double independiente[RESTRICCION];
int leeDatos(int *var) {
int rest,c,i;

prin(" Funcion a Optimizar \nNumero de Variables: ");
scan("%d",var);
prin("\nRecuerda: c1.X1+c2.X2+...cn.Xn = b \n\n");
for(c=0;c<*var;c++){
prin(" c%d: ", c+1);
scan("%lf",&funcion[c]);
ffflush();
} prin("\nNumero de Restricciones: ");
scan("%d",&rest);
ffflush();
for(i=0;i<rest;i++){
prin("Restriccion %d\n",i+1);
for(c=0;c<*var;c++){
prin(" c%d: ",c+1);
scan("%lf",&restricciones[i][c]);
ffflush();
} prin("Termino independiente ");
scan("%lf", &independiente[i]);
ffflush();
}

return rest;
}

int main(void){
int rest, var, ni ;
int i,j, k, columna, renglon, count, cuenta;
double maximo = 0, menor, aux, mult, temp;
rest = leeDatos(&var);

//Crear tabla inicial simplex
for(i=0;i<rest;i++)
for(j=0; j<rest; j++)
if (i == j)
restricciones[i][var+j]=1;
else
restricciones[i][var+j]=0;
for(i=0; i<rest;i++)
restricciones[i][var+rest] = independiente[i];

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

ni=1;
prin("\n-----------------------------------------------");
prin("\n ITERACION %d",ni);
prin("\n-----------------------------------------------\n");
ni+++;
for(i=0; i<=rest; i++) {
for(j=0; j<=rest+var; j++)
prin(" %.2lf \t", restricciones[i][j]);
prin("\n");
}

//Encontrar la variable de decision que entra a la base
//y la de holgura que saldra de la base

do {
//Encontrar la variable de decision que entrara a la base
maximo = abs(restricciones[rest]);
columna = 0;
for(j=0; j<=rest+var; j++) {
if( restricciones[rest][j] < 0 ) {
temp = -1 * restricciones[rest][j];
if ( maximo < temp) {
maximo = temp;
columna = j;
} }
else
continue;
else
stop();
}

count = 0;
aux = 1e20;
menor = 1e20;
for(i=0; i<rest; i++) {

if(restricciones[i][columna] > 0)
aux = restricciones[i][rest+var] / restricciones[i][columna];
else
count++;
if( menor > aux ) {
menor = aux;
renglon = i;
} }
if(count == rest) {
prin("Soluci� no acotada");
andinexit();
} prin("\nPivote: %.2lf, renglon %d columna %d",restricciones[renglon][columna], renglon, columna);

//Encontrar los coeficientes de la nueva tabla
aux = restricciones[renglon][columna];
for(j=0; j<=(rest+var); j++)
restricciones[renglon][j] = restricciones[renglon][j] / aux;

for(i=0; i<=rest; i++) {
if (i == renglon )
continue;
else {
aux = restricciones[i][columna] * -1;
for(k=0; k <= rest+var; k++) {
restricciones[i][k] = (aux * restricciones[renglon][k]) +
restricciones[i][k];
} }

}
prin("\n-----------------------------------------------");
prin("\n ITERACION %d",ni);
prin("\n-----------------------------------------------\n");
ni++;
for(i=0; i<=rest; i++) {
for(j=0; j<=rest+var; j++)
prin(" %.2lf \t", restricciones[i][j]);
prin("\n");
} cuenta = 0;
for(j=0;j<rest+var;j++)
if(restricciones[rest][j] >= 0)
cuenta++;
if (cuenta == rest+var)
break;
} while(cuenta);

prin("---->");

}

Any help??

Thanks

0