In order to sync folders between several computers there is an app based on p2p called btsync.
Installation (This is required in all computers):
Step 1:
-To install btsync is required to change source.list:
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:tuxpoldo/btsync
sudo apt-get update
sudo apt-get install btsync
-There is installation manager in text mode, but you choose default option
Step 2:
- To create a new folder in clients computers to share whose owner is btsync:
sudo mkdir /Dir
sudo chown btsync:btsync -R /Dir
sudo chmod g+w -R /Dir
-To add your user to btsync group and
sudo usermod -G btsync "user"
Step 3:
- Open this web site http:\\localhost:8888 in the original folders computer
3.1 Create an admin user
3.2 Choose the original folder to share
3.3 Generate a key and copy
- Open the same web site http:\\localhost:8888 in the clients computers:
3.4 Create an admin user
3.5 Choose the folders to be sync
3.6 Introduce the key
Remarks:
- One computer has be left on
- If any client is windows there is windows version available
jueves, 23 de octubre de 2014
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;
);
);
);
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
see other improvement
viernes, 6 de septiembre de 2013
2 manners to get "The time of execution" in gams.
lunes, 15 de julio de 2013
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");->->->->->->
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';
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
lunes, 27 de febrero de 2012
Optimization wiki
here we have two optimization web page very interesting Neos_Wiki and optimization tree.
lunes, 26 de septiembre de 2011
Trazar CPLEX
http://yetanothermathprogrammingconsultant.blogspot.com/2008/05/undocumented-gamscplex-options.html
miércoles, 3 de agosto de 2011
Aprovechar multi-core CPLEX
Para que cplex se ejecute en paralelo, añadir la siguiente instrucción en el código de gams:
$onecho > cplex.opt
lpmethod 6
parallelmode 0
threads 0
predual -1
$offecho
model.optfile = 1;
$onecho > cplex.opt
lpmethod 6
parallelmode 0
threads 0
predual -1
$offecho
model.optfile = 1;
lunes, 11 de julio de 2011
Generar combinaciones(n,k)
int generarComb(int i,int l,int k,int n){
if(i==k){
if(l==0){
for(int r=0;r < k;r++){
cout < < mark[r];
}
cout < < endl;
}
}
else{
if(l > 0){
mark[i]=true;
generarComb(i+1,l-1,k,n);
mark[i]=false;
}
generarComb(i+1,l,k,n);
}
return 0;
}
if(i==k){
if(l==0){
for(int r=0;r < k;r++){
cout < < mark[r];
}
cout < < endl;
}
}
else{
if(l > 0){
mark[i]=true;
generarComb(i+1,l-1,k,n);
mark[i]=false;
}
generarComb(i+1,l,k,n);
}
return 0;
}
miércoles, 8 de junio de 2011
Incluir gráficos en MikTex
Hay que incluir el paquete
\usepackage{graphicx}
y no hay que dejar lineas en blanco entre \begin{landscape} y \begin{figure}:
\begin{landscape}
\begin{figure}[ht]
\centering
\includegraphics[scale=0.5]{planning.eps}
\caption{Planning thesis}
\label{fig2}
\end{figure}
\end{landscape}
\usepackage{graphicx}
y no hay que dejar lineas en blanco entre \begin{landscape} y \begin{figure}:
\begin{landscape}
\begin{figure}[ht]
\centering
\includegraphics[scale=0.5]{planning.eps}
\caption{Planning thesis}
\label{fig2}
\end{figure}
\end{landscape}
jueves, 2 de junio de 2011
martes, 24 de mayo de 2011
jueves, 19 de mayo de 2011
GAMS: Running out of Memory
Para obligar a cplex que guarde los nodos de BB en el discoduro, evitando el molesto Running out of memory:
Creamos un fichero: cplex.opt
$onecho > cplex.opt
nodefileind = 2
$offecho
donde nodefileind = 2 guarda temporalmente los nodos por explorar en el discoduro.
porteriormente escribimos anter de invocar al solver
modelo.optfile=1
Suerte
Creamos un fichero: cplex.opt
$onecho > cplex.opt
nodefileind = 2
$offecho
donde nodefileind = 2 guarda temporalmente los nodos por explorar en el discoduro.
porteriormente escribimos anter de invocar al solver
modelo.optfile=1
Suerte
GAMS: Decimales en los displays y put
Para conseguir que gams muestre todos los decimales usando el comando display:
option nombre_param:x:y:z
x el número de decimales que quieres que muestre, en y columnas, en z filas.
Para que te escriba los decimales en un fichero con todas las cifras:
put nombre_param:x:y;
x el número de decimales.
Suerte.
option nombre_param:x:y:z
x el número de decimales que quieres que muestre, en y columnas, en z filas.
Para que te escriba los decimales en un fichero con todas las cifras:
put nombre_param:x:y;
x el número de decimales.
Suerte.
miércoles, 18 de mayo de 2011
GAMS: Cargar set y parámetros desde Excel
Muchas veces resulta bastante molesto tener que cambiar el fichero gms para hacer probar el programa con otros páramtros: Una manera para evitar esto, o por lo menos cambiar menos el fichero gms. Es utilizar cargar los parámetros y los set's directamente del Excel.
Los set's se tiene que declarar de esta manera:
SOL(*) solutions
los parámetros se dejan igual.
Con gdxxrw.exe gams genera un gdx a partir de un fichero excel, donde por cada set o cada párametro que gueramos guardar en el gdx escribimos esto:
set(o par)="nombre_set" rng(rango)=sheet!F1:F3 Rdim=1(numero de filas que ocupa la etiqueta, normalmente 1) Cdim=1(numero de columnas que ocupa la etiqueta, normalmete 1)
Ejemplo:
$call gdxxrw.exe ORed_v3.xls set=itt rng=simple!A2:A669 Rdim=1 set=sol rng=simple!A2:A669 Rdim=1 set=ob rng=simple!B1:M1 Cdim=1 par=impsol rng=simple!A1:M669 Rdim=1 Cdim=1
Posteriormente para cargar los valores se hace así:
$gdxin ORed_v3.gdx
$load ITT, SOL, OB
$gdxin
Importante, antes de cargar los valores de un paremetro se tienen que haber cargado sus sets.
Buena suerte
Los set's se tiene que declarar de esta manera:
SOL(*) solutions
los parámetros se dejan igual.
Con gdxxrw.exe gams genera un gdx a partir de un fichero excel, donde por cada set o cada párametro que gueramos guardar en el gdx escribimos esto:
set(o par)="nombre_set" rng(rango)=sheet!F1:F3 Rdim=1(numero de filas que ocupa la etiqueta, normalmente 1) Cdim=1(numero de columnas que ocupa la etiqueta, normalmete 1)
Ejemplo:
$call gdxxrw.exe ORed_v3.xls set=itt rng=simple!A2:A669 Rdim=1 set=sol rng=simple!A2:A669 Rdim=1 set=ob rng=simple!B1:M1 Cdim=1 par=impsol rng=simple!A1:M669 Rdim=1 Cdim=1
Posteriormente para cargar los valores se hace así:
$gdxin ORed_v3.gdx
$load ITT, SOL, OB
$gdxin
Importante, antes de cargar los valores de un paremetro se tienen que haber cargado sus sets.
Buena suerte
sábado, 8 de enero de 2011
Latex referencias bibliograficas largas
Hacer que latex te corte las referencias bibliograficas largas con hyperlinks
\usepackage[breaklinks=true,colorlinks=true]{hyperref}
breaklinks: rompe los links.
colorlinks: colorea el texto.
\usepackage[breaklinks=true,colorlinks=true]{hyperref}
breaklinks: rompe los links.
colorlinks: colorea el texto.
miércoles, 1 de diciembre de 2010
Ordenar un hash de pares
$pair{$nfile+1} = [($n,$m)];
my @lpair = sort { ssPair($pair{$a},$pair{$b}) } keys %pair;
for(@lpair){
my $ref = $pair{$_};
my @a = @$ref;
print "'m = $a[1] n = $a[0]',\n";
$ref = $allcost{$_};
my @v = @$ref;
for(@v){
print $output "$_\n"
}
}
sub sPair{
my $ref1 = shift;
my $ref2 = shift;
my @aa = @$ref1;
my @bb = @$ref2;
if($aa[0] < $bb[0]){
return -1;
}
elsif($aa[0] == $bb[0] and $aa[1] < $bb[1]){
return -1;
}
elsif($aa[0] == $bb[0] and $aa[1] > $bb[1]){
return 1;
}
elsif($aa[0] == $bb[0] and $aa[1] == $bb[1])
{
return 0;
}
return 1;
}
my @lpair = sort { ssPair($pair{$a},$pair{$b}) } keys %pair;
for(@lpair){
my $ref = $pair{$_};
my @a = @$ref;
print "'m = $a[1] n = $a[0]',\n";
$ref = $allcost{$_};
my @v = @$ref;
for(@v){
print $output "$_\n"
}
}
sub sPair{
my $ref1 = shift;
my $ref2 = shift;
my @aa = @$ref1;
my @bb = @$ref2;
if($aa[0] < $bb[0]){
return -1;
}
elsif($aa[0] == $bb[0] and $aa[1] < $bb[1]){
return -1;
}
elsif($aa[0] == $bb[0] and $aa[1] > $bb[1]){
return 1;
}
elsif($aa[0] == $bb[0] and $aa[1] == $bb[1])
{
return 0;
}
return 1;
}
Suscribirse a:
Entradas (Atom)