Blogia
Beca CFL

Pruebas

Como se queda el problema cap41

El problema tendra en cuenta sólo las restricciones de satisfacción de demanda y de capacidad. Ambas quedaran con símbolo de desigualdad.(Demanda - >= y Capacidad - <=)

No tendremos en cuenta, de momento, la restricción x_ij <= y_i, pero si para obtener una optimización, ya que añadir restricciones al problema ayuda a CPlex a una resolución más rápida.

 

Avances

Hoy he leido documentación acerca de CPLEX con Matlab. Acerca de la herramienta TOMLAB, que es la interfaz entre Matlab y CPLEX. Aun no he conseguido resultados pero al menos se como se hacen las llamadas.

Se haria de la siguiente manera:

Prob   = lpAssign(c, A, b_L, b_U, x_L, x_U, x_0, 'cap41');
Result = tomRun('cplex', Prob, 1);

Donde 'cap41' es mi archivo de matlab.

Este seria el aspecto que tendría la salida de CPLEX:

===== * * * =================================================================== * * *
TOMLAB /CPLEX Full - Universidad Rey Juan Carlos Ac. single user  1001116. Valid to 2100-01-01
=====================================================================================
Problem: ---  1: cap41                          f_k       0.000000000000000000

Solver: CPLEX.  EXIT=0.  INFORM=1.
CPLEX Dual Simplex LP solver
Optimal solution found


CPU time: 0.062500 sec. Elapsed time: 0.266000 sec.

Donde en f_k deberia aparecer el valor óptimo, pero como vemos aún no he sido capaz de mostrarlo, pero estoy a punto de conseguirlo.

Voy a terminar el informe para César, y mañana a primera hora se lo mando.

Y voy a probar a hacer el ejercicio 42 con Linprog a ver que resultados salen.

Pruebas

Y sigo haciendo pruebas con los archivos de la pagina de OR Library. Aún no he terminado ninguna, por que tengo problemas con la CallCharge.

El jueves creo que tendre que ir a ver  a Cesar.

Llevo un mes sin tocar el proyecto por culpa de los examenes.

A ver si en Julio saco todo.

Avances de hoy

    La parte de la demanda(CallDemand) ya esta hecha, ahora necesito terminar de hacer la parte de la carga de las llamadas (CallCharge), que es lo que más me esta costando.

    He hecho bastantes graficos de la matrices para poder hacer bien la carga de datos, pero aún así no he encontrado la solución a para la carga de las llamadas.

    La solución tiene que ser algo como que pueda acceder a partir de la posición 19, secuencialmente a las 20, 21, 22, 23, 24, 25 y 26, saltarme una posición, la 27(que la ocupa una demanda), y leer en la 28, para almacenarlo en la segunda fila de CallCharge, ya que a partir de ahí empiezan los costes asociados al segundo cliente.

Nada más.

Avances

De momento no he conseguido probar niguno, primero estoy intentando averiguar como meterle lo datos al problema. Una vez hecho esto también tendré que probar a hacer capturas de tiempo, para saber cuanto tarda en resolver un ejercicio. Por ahora he descubierto que necesito meter los datos en matrices, que tienen que tener todas la filas con el mismo numero de colulmnas. Esta matriz se carga en el Matlab con la siguiente instrucción:

data = load(’-ascii’,’Ruta del archivo que queremos leer’);

Una vez ejecutada esta línea de código, podemos acceder a todos los datos de nuestro fichero mediante la matriz almacenada en data. Esto es, si queremos acceder al primer dato debemos poner data(1,1). En mi caso he almacenado los datos en dos columnas y 467 filas. Así tenemos:

>> size(data) Esta instrucción nos dice el tamaño de la matriz fila x columna

ans =

467 2

Mediante varios for soy capaz de ir almacenando los datos en las variables internas del programa y así poder hacer el calculo después con el Cplex.

Los datos de costes fijos ya están almacenados y estoy teniendo problemas con la demanda y con los costes de llamadas(que en este caso pueden ser costes de otra cosa, pero siempre asociado a que cada cliente tiene un coste con cada una de las localizaciones).

Voy a seguir con ello y cuando termine mi jornada posteo más.

CPlex

Cesar quiere que pruebe a ver si soy capaz de sacar la interfaz entre matlab 7 y CPLex 11. Este mexfile todavía no esta disponible gratuitamente. Asi que tendré que hacer muchas pruebas.

He comprobado que de la versión 9 a la 10 de CPlex no hay tanta diferencia. Sólo una línea de código.

Voy a probar la interfaz de CPlex 10 con CPlex 11, a ver que errores me da. Así sabré lo que tengo que modificar de esa línea de código.