lunes, 20 de enero de 2014

Easy Epsilon-constriant implementation (gams version)

Template in gams of epsilon-constraint method: 

Set
iteration number of iteration /001*010/
ob        objectives in your model /1*20/
ecit      number e-constraints intervals /1*3/;


Parameters
comb(ob)  current combination
cf        carry
indexObj  sum index;
;

*===============================================================================
*YOUR MODEL
*===============================================================================


FILE BIO / comb.xls /;
PUT BIO;
BIO.nd = 4;
BIO.nw = 0;
BIO.nr = 3;
BIO.pc = 6;

comb(ob)=1;

loop(iteration,

*===============================================================================
* Solve .....
*===============================================================================


  loop(ob,
    put sqrt(2);
  );
  put /;


  cf = 1;
  loop(ob$(cf eq 1),
    comb(ob)=comb(ob)+1;
    if(comb(ob)>card(ecit),
      comb(ob)=1;
    else
      cf=0;
    );
  );

);

sábado, 7 de septiembre de 2013

effective epsilon-constraint:

G. Mavrotas introduced an improvement of epsilon-constraint method using lexicographic optimization for the payoff table. The new method is called AUGMECON and is included in gams libray.

see other improvement

viernes, 6 de septiembre de 2013

2 manners to get "The time of execution" in gams.


1. Using function:  timeExec

see Manual 

2. Using function: jnow

startTime = jnow;
...
elapsedTime = (jnow - startTime)*24*3600;

see wiki

jueves, 31 de enero de 2013

Dibujar una superficie con R:

Este el código que hace esto:

require(grDevices) # for trans3d
## More examples in  demo(persp) !!
##                   -----------

# (1) The Obligatory Mathematical surface.
#     Rotated sinc function.

x <- 5="" length="30)<br" seq="">y <- br="" x="">f <- br="" function="" r="" x="" y="">z <- br="" f="" outer="" x="" y="">z[is.na(z)] <- 1="" br="">op <- bg="white" br="" par="">persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "lightblue");

miércoles, 19 de septiembre de 2012

Hacer un pool de solucion en CPLEX

 El el fichero cplex.opt tenemos que introducir la instrucción solnpool  que nos crea el pool de soluciones que está indexado en el gdx solnpool.gdx. Con solnpoolpop 1 las soluciones se generan mediante el procedimiento normal de optimización de Cplex, pero con la instrucción solnpoolpop 2, se generán un número PopulateLim de soluciones mediante un procedimiento especial de Cplex para generar varias soluciones. Las soluciones las filtramos mediante solnpoolintesity 4 y solnpoolAgap 0.0. Para mas info mirar este ejemplo http://www.gams.com/modlib/libhtml/solnpool.htm

  File fcpx / cplex.opt /;
  option limrow=0,limcol=0, optcr=0, mip=cplex;
  LNQP.optfile=1;  LNQP.solprint=%solprint.Quiet%;  LNQP.savepoint = 1;
  

putclose fcpx 'solnpool solnpool.gdx' / 'solnpoolintensity 4' /
  'solnpoolpop 2' / 'solnpoolAgap = 0.0';

viernes, 27 de abril de 2012

web sobre diseño de algoritmos y analisis

http://openclassroom.stanford.edu/MainFolder/CoursePage.php?course=IntroToAlgorithms