Blogia
Beca CFL

Diario

Y ahora que?

Hoy he dedicado la mañana a hacer trazas para saber donde falla. Pero no encuentro donde.

Esta tarde me tocará más de lo mismo.

Intentaré aplicar la otra mejora por otro lado sola, a ver si por ese lado sale.

El caso es que tengo que estar a punto de conseguirlo, asi que ya veremos.

Más esta tarde...

Nuevos resultados

Después de los examenes, vuelta al PFC.

La semana pasada no saque resultados muy buenos para la nueva mejora a aplicar.

Esta mejora esta basada en hacer más pequeños los subproblemas que tienen que llegar a resolver el problema concreto.

Esta mejora se realiza eliminando las X que sabemos que su multiplicador c >= 0.

 

Otra de las mejoras que debemos aplicar es la actualización de U. Previamente hay que odenar los costes y localizar donde irá situado uj0. Si hay que actualizas uj0, hacerlo con el valor cj que corresponda, y así sucesivamente, en orden creciente. El vector U irá tomando valores cada vez más altos para penalizar los costes.

 

De momento vamos a aplicar la primera mejora y ver los resultados obtenidos.

 

 

Óptimo muy cercano

Ya que acabamos la primera parte de este proyecto ,(ver que alcance tiene CPLEX resolviendo problemas CFL), ahora toca ponerse a optimizar.

En esta pimera parte hemos comprobado como CPLEX resuelve todos los problemas de la bateria de problemas OR-Library, alojada en

http://people.brunel.ac.uk/~mastjjb/jeb/info.html (2009)

Estos datos están analizados en el paper J.E. Beasley  "An algorithm for solving large capacitated warehouse location problems" European Journal of Operational Research 33(1988) 314-325.

He realizado un artículo para presentar en Marzo, por que finalizaba la beca. Hemos entregado los resultados de todas las pruebas, junto con una ubicación del problema, su formulación, las herramientas y el equipo utilizado, y las técnicas que utiliza cada herramienta para resolver cada una de las instancias.

En la segunda parte veremos la relajación semi-Lagrangiana. Esta relajación hace que el problema sea más fácil de resolver que el problema primal o principal. Con esta técnica partimos el problema primal en subproblemas más pequeños, y por tanto más fáciles de solucionar.

Para hacer el problema relajado:

1- Resolver la RL del problema primal.

          De aquí obtenemos un vector de varialbes duales que nos dará el valor del vector U0. Este vector contendrá la penalización que le damos al problema para que tienda a resolverse completamente.

2- Resolver el problema relajado de CFL con relajacion semi-Lagrangiana.

          Los valores de las plantas(y) sólo pueden ser enteros.Esta restricción es importante.

          Necesitamos:

                   - Actulalizar el valor de U

                            Con la actualización hacemos que cada vez se resuelva un problema relajado, acercandonos a la  solución del problema primal.

                   - Criterio de parada

                             Necesitamos este criterio de parada para saber cuando hemos llegado al óptimo.

 

 

 

 

 

Nos centramos en resolver Rardin con mipSolve

Ya he conseguido obtener un resultado para el ejemplo de Rardin.

Lo resuelve con la llamada a mipSolve y despues con tomRun.

El resultado obtenido es el mismo que teniamos para Linprog, ya que mipSolve resuelve ejemplos de tipo mixed-integer linear programming, es decir, resolución para problemas mixtos entero-lineales.

Gracias a IntVars tenemos que el resultado es el correcto, teniendo en cuenta que los ultimos 8 valores de el vector x son realmente los valores de y, que deben ser enteros. El resto de x, es decir, los 112 elementos primeros pueden ser valores entre 0 y 1.

Haciendo algunas pruebas nos damos cuenta que si eliminamos el valor de IntVars, conseguimos el mismo resultado.

Eso es raro, muy raro, ya que parece que esta poniendo los resultados buenos sin necesidad de decirle si queremos que sean enteras o lineales.

 

 

Procedimientos por falta de tiempo

Como es muy díficil que terminemos el trabajo para el dia 1 de Marzo, César y yo hemos acordado que adelantaremos lo máximo posible hasta Marzo, y lo que quede del proyecto lo seguiremos haciendo de cara a entregalo como PFC.

Asi pues, voy a realizar 10h semanales en el aula del Dept II, para poder consultar mis dudas a César cuando las tengas. Así estamos más cerca uno del otro.

Y por otro lado, cuando tenga huecos en casa, también iré adelantando trabajo. Así lograre antes de fin de año haber avanzado algo en el proyecto.

 

Duda

Tengo dudas de como hacer esto:

 

Sum desde i=1 to m de x_ij >=1.

Por que no se si debe ser con  blkdiag de unos, es decir, una matriz que en su diagonal tenga matrices de unos, y lo demás cero. O directamente toda la matriz tiene que ser de ceros.

A ver si mañana me resuelve la duda César.

Mañana tenemos la reunión a las 9 de la mañana.

Startup.m

He vuelto a repasar el problema y creo que el fallo esta en la matriz A y b. Voy a volver  a repasarlo ahora.

No he conseguido aún hacer que Matlab ejecute startup.m al comienzo siempre, para que no tenga que llamarlo yo siempre desde mi codigo. Aún no tengo la solución pero creo que estoy a punto de conseguirlo.

Queda repasar otra vez el problema a ver si soy capaz de encontrar el fallo.

Editando:

Sólo puedo hacer que el .dll no se comprobado cada vez que se lanza startup pero no puedo ejecutarlo cada vez que se abre Matlab.

 

Sin internet en toda la semana.

Esta semana no he podido publicar avances por que internet no me funciona.

Hoy hago un resumen de todo un poco.

Desesperación....

Llevo toda la semana con lo mismo, y no salgo de este agujero.

Aportes de cosas nuevas:

Con IntVars podemos poner las varialbes que con enteras o binarias.

Puede que la solución este en las variables slacks. Que son aquellas que se añaden a una restricción para cambiar la desigualdad de la ecuación. Requieren que se convierta de una desigualdad a una igualdad en la que una comibnación lineal de variables es <= a una costante dada.Como es una restricción aumentada los valores no pueden ser negativos.

El problema que tengo creo que esta en que el paso de parámetros a la llamada no es el válido, ya que he probado con otros test de ejemplo que trae el tomlab y todos los resuelve con el mismo resultado, siendo que unos los resuelve con Simplex y yo los cambié a Cplex.

Creo que la cuestión está en sabe como poner la matrices de A y b, junto con las de Aeq y beq, que eran necesarias para Linprog y Bintprog.

Haciendo pruebas:

-Si quitamos Aeq y beq, sigue saliendo 0.

-Si quitamos A y b sigue saliendo 0.

-Si igualamos b_L a b_U, teniendo en cuenta que b_U = [b;beq], nos da como resultado que no es fatible. Además se salen 6 variables de rango.

 

Leyendo la documentación del manual deTOMLAB/CPLEX, no encuentro nada para solucionarlo.

También me he leido el Manual de TOMLAB, de donde he sacado ejemplos para hacer pruebas.

También he buscado cosas por Internet pero no logro encontrar nada.

Y en un intento desesperado de ayuda he mandado un email a Marcus , mi amigo de TOMLAB.

Mañana será otro día.

Reunión con César. A ver si me hecha un cable.

 

Avences de la reunión

Estos avances son de la reunión celebrada el dia 3 de octubre. No pude publicar antes por que realmente me iba mal internet.

- Ya el problema del Rardin con Bintprog y Linprog. Tanto en Matlab como en Cplex, pero siempre con las sentencias adecuadas.

Una vez que el Cplex esta activo, lo que hace es ejecutar Bintprog o Linprog bajo su propio software. Con esto lo que obtenemos es que el tiempo que tardaba en Bintprog se reduzca en mucho. Antes necesitaba casi 40 minutos. Ahora en un par de segundos ya lo tienes.

 

Vamos viendo claro las cosillas...

Entre ayer y hoy parece que adelante bastante.

Tengo casi resuletos los problemas de OR-Library. Me faltaba contemplar si teniamos una capacidad mínima.

También, y a modo de idea voy a probar a ver si la suma de las demandas es igual o menor a la suma de las capacidades, para ver si realmente se esta cubriendo toda la demanda.

Otra idea también es añadir más restricciones al linprog a ver si así sale más exacto.

Mñn reunión con César a las 9 a.m.

Casi....

Estos dias sin internet no he podido postear.

A modo de resumen:

-Rardin resuelto con Cplex. Lo raro es que da el mismo resultado, aunque quizas un poco mas rápido.

-Ejercicios de OR-Library me dan 0 los tres probados.

-La llamada utilizada es la que puse anteriormente, utilizando las llamadas a lpAssign y tomRun.

Mañana sigo con las pruebas. También le mande un email a César con un poco los resultados.

 

Teoria

Ya he recopilado un poco todo los aspectos teoricos tratados hasta el momento.

Estoy haciendo el informe en LaTex que es como mejor queda.

Si no utilizais esta herramienta os la recomiendo, es sencilla de usar, aunque hya que programar un pokillo no es dificil. Además yo utilizo el Lyx y esta chupado.También necesitareis Miktex para poder ver vuestras creaciones en .dvi o .pdf.

Por hoy creoq ue ya he terminado por que la pagina de OR-LIBRARY no funciona asi que no puedo hacer más.

Voy a leer un poquillo de la documentación que hay sobre MATLAB/CPLEX a ver si para mañana ya no tengo dudas sobre como hacer las pruebas.

 

Perdida con el Cplex

Ahora resulta que el Cplex no utiliza ni Aeq ni beq, y lo unico que se me ocurre en ponerlas concatenadas con A y b. Pero aun así el resultado es 0.

Aqui si que necesito ayuda de César.

En la pruebas con el linprog se pira unos 400.000, yo creo que no está mal, pero weno.

Se retraso la entrega del informe para César, pero aún asi sigo aqui toda la tarde dandole.

Y mañana más. Ahora mirare para hacer el 42 y asi sucesivamente, aunque de momento no puedo hacer nada de nada con Cplex.

 

Vuelta al trabajo

El jueves tengo que entregar un resumen de todo lo hecho hasta ahora.

En el debe figurar un poco la evolucion que hemos seguido en todo el proyecto teniendo especial atencion sobre la teoria ltrabajada (solo un listado de ellos, sin especificar su contenido).
- Aspectos computacionales que he trabajado: software desarrollado, nuevas herramientas, etc. (solo un listado de ellos mencionando su objetivo o utilidad).
- Resultados computacionales: En una o varias tablas resumir los resultados computacionales que tenemos hasta el momento.

Añadiendo a todo esto algún comentario se lo veo necesario.

En la parte de pruebas he hecho algún avance, pero aún no he conseguido obtener resultados, para decir si la parte ya trabajada esta bien.

Y por hoy terminare empezando un poco el esquemita a entregar que si no me pilla el torito.

 

Tomlab

Ya nos hemos agenciado con el Tomlab/CPlex, para poder trabajr desde mi portatil

Asi que ya todas las pruebas y todo las tendremos que hacer desde mi casita.

Cplex remoto

Hoy dedicaré la tarde a hacer pruebas de acceso remoto a pc’s de la uni desde casa con el programa VNC Server

Tarjeta , otro pc e IWOR

Ya tengo la tarjeta de acceso tanto al aula del master como al aula de becarios. Pero aún sigo teniendo problemas con el pc, por lo que, y comentaba anteriormente, hemos decidido instalar las licencias de Cplex y TOMLAB en mi portatil, para poder trabajar tanto desde la universidad, como desde casa. Así podré sacar mucho más tiempo para hacer la beca.

En el post anterior al final no he comentado nada de IWOR.

Aquí teneis un poquito de información acerca de las conferencias. Muy recomendable la de la vicepresidenta de IBM, que es el jueves a las 15:30.

http://bayes.escet.urjc.es/~iwor/

 

Reunión miércoles

Hoy hemos tenido otra mini reunión para hablar acerca de la posibilidad de meter una licencia de Cplex y TOMLAB en mi portatil. Tiene que ser en el Acer, por que el Vaio tiene Windows Vista y por lo visto no se lleva muy bien con Cplex. A mi me viene mejor por que así ya tengo instalada la versión de Matlab 7.

Yo sigo haciendo pruebas desde la pagina de OR-Library, http://people.brunel.ac.uk/~mastjjb/jeb/info.html, en la sección, Location: capacitated warehouse location. Ahi estoy probrando cada uno de los ejemplos.

 

Reunión

Reunión

He hablado un poco de como va lo del PC, que aún no he podido areglar. Comentamos un poco el paper que tenía que leer. Y ya tengo trabajo para toda la semana. Tengo que hacer pruebas sobre programas ya resueltos con el Cplex. A ver si obtengo los resultado s que quiero.

El lunes ya cobré el segundo mes. Y van mil eurillos. Y mi nuevo portatil que esta ya llegando. Será un Vaio, precioso, y muy potente.

Tengo que hablar aún con Maria Jose de lo de la tarjeta para poder entrar en la sala de becarios, y con Celeste tengo que comentar lo de la licencia de Cplex para la nueva máquina.

Y nada más...

 

Editado: 20-05-08 . Una fotillo del portatil...