moSimple(Move/Solution)TabuList are added

git-svn-id: svn://scm.gforge.inria.fr/svnroot/paradiseo@281 331e1502-861f-0410-8da2-ba01fb791d7f
This commit is contained in:
jboisson 2007-04-19 13:23:06 +00:00
commit a40fc756aa
150 changed files with 2619 additions and 199 deletions

View file

@ -25,6 +25,8 @@ Here are the classes, structs, unions and interfaces with brief descriptions:\be
\item\contentsline{section}{{\bf mo\-Rand\-Impr\-Select$<$ M $>$} (One of the possible \doxyref{mo\-Move}{p.}{classmo_move} selector (\doxyref{mo\-Move\-Select}{p.}{classmo_move_select}) )}{\pageref{classmo_rand_impr_select}}{}
\item\contentsline{section}{{\bf mo\-Rand\-Move$<$ M $>$} (Random move generator )}{\pageref{classmo_rand_move}}{}
\item\contentsline{section}{{\bf mo\-SA$<$ M $>$} (Simulated Annealing (SA) )}{\pageref{classmo_s_a}}{}
\item\contentsline{section}{{\bf mo\-Simple\-Move\-Tabu\-List$<$ M $>$} (Class describing a move tabu list with a limited memory )}{\pageref{classmo_simple_move_tabu_list}}{}
\item\contentsline{section}{{\bf mo\-Simple\-Solution\-Tabu\-List$<$ M $>$} (Class describing a solution tabu list with limited length )}{\pageref{classmo_simple_solution_tabu_list}}{}
\item\contentsline{section}{{\bf mo\-Sol\-Continue$<$ EOT $>$} (Class that describes a stop criterion for a solution-based heuristic )}{\pageref{classmo_sol_continue}}{}
\item\contentsline{section}{{\bf mo\-Tabu\-List$<$ M $>$} (Class describing a tabu list that a \doxyref{mo\-TS}{p.}{classmo_t_s} uses )}{\pageref{classmo_tabu_list}}{}
\item\contentsline{section}{{\bf mo\-TS$<$ M $>$} (Tabu Search (TS) )}{\pageref{classmo_t_s}}{}

View file

@ -0,0 +1,197 @@
%!PS-Adobe-2.0 EPSF-2.0
%%Title: ClassName
%%Creator: Doxygen
%%CreationDate: Time
%%For:
%Magnification: 1.00
%%Orientation: Portrait
%%BoundingBox: 0 0 500 213.904
%%Pages: 0
%%BeginSetup
%%EndSetup
%%EndComments
% ----- variables -----
/boxwidth 0 def
/boxheight 40 def
/fontheight 24 def
/marginwidth 10 def
/distx 20 def
/disty 40 def
/boundaspect 2.3375 def % aspect ratio of the BoundingBox (width/height)
/boundx 500 def
/boundy boundx boundaspect div def
/xspacing 0 def
/yspacing 0 def
/rows 2 def
/cols 1 def
/scalefactor 0 def
/boxfont /Times-Roman findfont fontheight scalefont def
% ----- procedures -----
/dotted { [1 4] 0 setdash } def
/dashed { [5] 0 setdash } def
/solid { [] 0 setdash } def
/max % result = MAX(arg1,arg2)
{
/a exch def
/b exch def
a b gt {a} {b} ifelse
} def
/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2)
{
0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max
} def
/cw % boxwidth = MAX(boxwidth, stringwidth(arg1))
{
/str exch def
/boxwidth boxwidth str stringwidth pop max def
} def
/box % draws a box with text `arg1' at grid pos (arg2,arg3)
{ gsave
2 setlinewidth
newpath
exch xspacing mul xoffset add
exch yspacing mul
moveto
boxwidth 0 rlineto
0 boxheight rlineto
boxwidth neg 0 rlineto
0 boxheight neg rlineto
closepath
dup stringwidth pop neg boxwidth add 2 div
boxheight fontheight 2 div sub 2 div
rmoveto show stroke
grestore
} def
/mark
{ newpath
exch xspacing mul xoffset add boxwidth add
exch yspacing mul
moveto
0 boxheight 4 div rlineto
boxheight neg 4 div boxheight neg 4 div rlineto
closepath
eofill
stroke
} def
/arrow
{ newpath
moveto
3 -8 rlineto
-6 0 rlineto
3 8 rlineto
closepath
eofill
stroke
} def
/out % draws an output connector for the block at (arg1,arg2)
{
newpath
exch xspacing mul xoffset add boxwidth 2 div add
exch yspacing mul boxheight add
/y exch def
/x exch def
x y moveto
0 disty 2 div rlineto
stroke
1 eq { x y disty 2 div add arrow } if
} def
/in % draws an input connector for the block at (arg1,arg2)
{
newpath
exch xspacing mul xoffset add boxwidth 2 div add
exch yspacing mul disty 2 div sub
/y exch def
/x exch def
x y moveto
0 disty 2 div rlineto
stroke
1 eq { x y disty 2 div add arrow } if
} def
/hedge
{
exch xspacing mul xoffset add boxwidth 2 div add
exch yspacing mul boxheight 2 div sub
/y exch def
/x exch def
newpath
x y moveto
boxwidth 2 div distx add 0 rlineto
stroke
1 eq
{ newpath x boxwidth 2 div distx add add y moveto
-8 3 rlineto
0 -6 rlineto
8 3 rlineto
closepath
eofill
stroke
} if
} def
/vedge
{
/ye exch def
/ys exch def
/xs exch def
newpath
xs xspacing mul xoffset add boxwidth 2 div add dup
ys yspacing mul boxheight 2 div sub
moveto
ye yspacing mul boxheight 2 div sub
lineto
stroke
} def
/conn % connections the blocks from col `arg1' to `arg2' of row `arg3'
{
/ys exch def
/xe exch def
/xs exch def
newpath
xs xspacing mul xoffset add boxwidth 2 div add
ys yspacing mul disty 2 div sub
moveto
xspacing xe xs sub mul 0
rlineto
stroke
} def
% ----- main ------
boxfont setfont
1 boundaspect scale
(moSimpleMoveTabuList< M >) cw
(moTabuList< M >) cw
/boxwidth boxwidth marginwidth 2 mul add def
/xspacing boxwidth distx add def
/yspacing boxheight disty add def
/scalefactor
boxwidth cols mul distx cols 1 sub mul add
boxheight rows mul disty rows 1 sub mul add boundaspect mul
max def
boundx scalefactor div boundy scalefactor div scale
% ----- classes -----
(moSimpleMoveTabuList< M >) 0 0 box
(moTabuList< M >) 0 1 box
% ----- relations -----
solid
0 0 0 out
solid
1 0 1 in

View file

@ -0,0 +1,122 @@
\section{mo\-Simple\-Move\-Tabu\-List$<$ M $>$ Class Template Reference}
\label{classmo_simple_move_tabu_list}\index{moSimpleMoveTabuList@{moSimpleMoveTabuList}}
Class describing a move tabu list with a limited memory.
{\tt \#include $<$mo\-Simple\-Move\-Tabu\-List.h$>$}
Inheritance diagram for mo\-Simple\-Move\-Tabu\-List$<$ M $>$::\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=2cm]{classmo_simple_move_tabu_list}
\end{center}
\end{figure}
\subsection*{Public Types}
\begin{CompactItemize}
\item
typedef M::EOType {\bf EOT}\label{classmo_simple_move_tabu_list_91286ff3ba6b1e9e1db9e4fdade2edb7}
\begin{CompactList}\small\item\em Alias for the type. \item\end{CompactList}\end{CompactItemize}
\subsection*{Public Member Functions}
\begin{CompactItemize}
\item
{\bf mo\-Simple\-Move\-Tabu\-List} (unsigned \_\-\_\-size)\label{classmo_simple_move_tabu_list_d29bb1cfc8d1fd2de1cccf821d066b66}
\begin{CompactList}\small\item\em Constructor. \item\end{CompactList}\item
bool {\bf operator()} (const M \&\_\-\_\-move, const {\bf EOT} \&\_\-\_\-sol)
\begin{CompactList}\small\item\em Function that indicates if, in a given state, the \_\-move is tabu or not. \item\end{CompactList}\item
void {\bf add} (const M \&\_\-\_\-move, const {\bf EOT} \&\_\-\_\-sol)
\begin{CompactList}\small\item\em Procedure to add a move in the tabu list. \item\end{CompactList}\item
void {\bf update} ()
\begin{CompactList}\small\item\em Procedure that updates the tabu list content. \item\end{CompactList}\item
void {\bf init} ()
\begin{CompactList}\small\item\em Procedure which initialises the tabu list. \item\end{CompactList}\end{CompactItemize}
\subsection*{Private Attributes}
\begin{CompactItemize}
\item
unsigned {\bf max\-Size}\label{classmo_simple_move_tabu_list_9f4860b378366e774c61a0d2034811e1}
\begin{CompactList}\small\item\em The maximum size of the tabu list. \item\end{CompactList}\item
unsigned {\bf current\-Size}\label{classmo_simple_move_tabu_list_bd417b084e01343cba914a8193dab3a1}
\begin{CompactList}\small\item\em The current size of the tabu list. \item\end{CompactList}\item
std::list$<$ M $>$ {\bf tabu\-List}\label{classmo_simple_move_tabu_list_d91bc838361524720616b44eda9b2c3a}
\begin{CompactList}\small\item\em The move tabu list. \item\end{CompactList}\end{CompactItemize}
\subsection{Detailed Description}
\subsubsection*{template$<$class M$>$ class mo\-Simple\-Move\-Tabu\-List$<$ M $>$}
Class describing a move tabu list with a limited memory.
Definition at line 22 of file mo\-Simple\-Move\-Tabu\-List.h.
\subsection{Member Function Documentation}
\index{moSimpleMoveTabuList@{mo\-Simple\-Move\-Tabu\-List}!operator()@{operator()}}
\index{operator()@{operator()}!moSimpleMoveTabuList@{mo\-Simple\-Move\-Tabu\-List}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ bool {\bf mo\-Simple\-Move\-Tabu\-List}$<$ M $>$::operator() (const M \& {\em \_\-\_\-move}, const {\bf EOT} \& {\em \_\-\_\-sol})\hspace{0.3cm}{\tt [inline]}}\label{classmo_simple_move_tabu_list_bb7fe9da28617f56734af71c42c8265a}
Function that indicates if, in a given state, the \_\-move is tabu or not.
\begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em \_\-\_\-move}]A given \doxyref{mo\-Move}{p.}{classmo_move}. \item[{\em \_\-\_\-sol}]A solution. \end{description}
\end{Desc}
\begin{Desc}
\item[Returns:]true or false. \end{Desc}
Definition at line 46 of file mo\-Simple\-Move\-Tabu\-List.h.
References mo\-Simple\-Move\-Tabu\-List$<$ M $>$::tabu\-List.\index{moSimpleMoveTabuList@{mo\-Simple\-Move\-Tabu\-List}!add@{add}}
\index{add@{add}!moSimpleMoveTabuList@{mo\-Simple\-Move\-Tabu\-List}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ void {\bf mo\-Simple\-Move\-Tabu\-List}$<$ M $>$::add (const M \& {\em \_\-\_\-move}, const {\bf EOT} \& {\em \_\-\_\-sol})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_simple_move_tabu_list_43c979a9ec876c5e5b591b1c422395ef}
Procedure to add a move in the tabu list.
The two parameters have not to be modified so they are constant parameters.
\begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em \_\-\_\-move}]a new tabu move. \item[{\em \_\-\_\-sol}]the origianl solution associated to this move. \end{description}
\end{Desc}
Implements {\bf mo\-Tabu\-List$<$ M $>$} \doxyref{}{p.}{classmo_tabu_list_d279d72cb486d812da1ad3d24a69c286}.
Definition at line 60 of file mo\-Simple\-Move\-Tabu\-List.h.
References mo\-Simple\-Move\-Tabu\-List$<$ M $>$::current\-Size, mo\-Simple\-Move\-Tabu\-List$<$ M $>$::max\-Size, and mo\-Simple\-Move\-Tabu\-List$<$ M $>$::tabu\-List.\index{moSimpleMoveTabuList@{mo\-Simple\-Move\-Tabu\-List}!update@{update}}
\index{update@{update}!moSimpleMoveTabuList@{mo\-Simple\-Move\-Tabu\-List}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ void {\bf mo\-Simple\-Move\-Tabu\-List}$<$ M $>$::update ()\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_simple_move_tabu_list_96cffc8118456ed762b07b9fc0e0679f}
Procedure that updates the tabu list content.
Generally, a counter associated to each saved move is decreased by one.
Implements {\bf mo\-Tabu\-List$<$ M $>$} \doxyref{}{p.}{classmo_tabu_list_a2e5d1132f064093c8ed57046405f5ca}.
Definition at line 75 of file mo\-Simple\-Move\-Tabu\-List.h.\index{moSimpleMoveTabuList@{mo\-Simple\-Move\-Tabu\-List}!init@{init}}
\index{init@{init}!moSimpleMoveTabuList@{mo\-Simple\-Move\-Tabu\-List}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ void {\bf mo\-Simple\-Move\-Tabu\-List}$<$ M $>$::init ()\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_simple_move_tabu_list_b91ae9971be30769757d1ad92c6009dc}
Procedure which initialises the tabu list.
Can be useful if the data structure needs to be allocated before being used.
Implements {\bf mo\-Tabu\-List$<$ M $>$} \doxyref{}{p.}{classmo_tabu_list_0a06c459d56e8e2b408a8f3c6aec4e57}.
Definition at line 81 of file mo\-Simple\-Move\-Tabu\-List.h.
The documentation for this class was generated from the following file:\begin{CompactItemize}
\item
mo\-Simple\-Move\-Tabu\-List.h\end{CompactItemize}

View file

@ -0,0 +1,197 @@
%!PS-Adobe-2.0 EPSF-2.0
%%Title: ClassName
%%Creator: Doxygen
%%CreationDate: Time
%%For:
%Magnification: 1.00
%%Orientation: Portrait
%%BoundingBox: 0 0 500 200
%%Pages: 0
%%BeginSetup
%%EndSetup
%%EndComments
% ----- variables -----
/boxwidth 0 def
/boxheight 40 def
/fontheight 24 def
/marginwidth 10 def
/distx 20 def
/disty 40 def
/boundaspect 2.5 def % aspect ratio of the BoundingBox (width/height)
/boundx 500 def
/boundy boundx boundaspect div def
/xspacing 0 def
/yspacing 0 def
/rows 2 def
/cols 1 def
/scalefactor 0 def
/boxfont /Times-Roman findfont fontheight scalefont def
% ----- procedures -----
/dotted { [1 4] 0 setdash } def
/dashed { [5] 0 setdash } def
/solid { [] 0 setdash } def
/max % result = MAX(arg1,arg2)
{
/a exch def
/b exch def
a b gt {a} {b} ifelse
} def
/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2)
{
0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max
} def
/cw % boxwidth = MAX(boxwidth, stringwidth(arg1))
{
/str exch def
/boxwidth boxwidth str stringwidth pop max def
} def
/box % draws a box with text `arg1' at grid pos (arg2,arg3)
{ gsave
2 setlinewidth
newpath
exch xspacing mul xoffset add
exch yspacing mul
moveto
boxwidth 0 rlineto
0 boxheight rlineto
boxwidth neg 0 rlineto
0 boxheight neg rlineto
closepath
dup stringwidth pop neg boxwidth add 2 div
boxheight fontheight 2 div sub 2 div
rmoveto show stroke
grestore
} def
/mark
{ newpath
exch xspacing mul xoffset add boxwidth add
exch yspacing mul
moveto
0 boxheight 4 div rlineto
boxheight neg 4 div boxheight neg 4 div rlineto
closepath
eofill
stroke
} def
/arrow
{ newpath
moveto
3 -8 rlineto
-6 0 rlineto
3 8 rlineto
closepath
eofill
stroke
} def
/out % draws an output connector for the block at (arg1,arg2)
{
newpath
exch xspacing mul xoffset add boxwidth 2 div add
exch yspacing mul boxheight add
/y exch def
/x exch def
x y moveto
0 disty 2 div rlineto
stroke
1 eq { x y disty 2 div add arrow } if
} def
/in % draws an input connector for the block at (arg1,arg2)
{
newpath
exch xspacing mul xoffset add boxwidth 2 div add
exch yspacing mul disty 2 div sub
/y exch def
/x exch def
x y moveto
0 disty 2 div rlineto
stroke
1 eq { x y disty 2 div add arrow } if
} def
/hedge
{
exch xspacing mul xoffset add boxwidth 2 div add
exch yspacing mul boxheight 2 div sub
/y exch def
/x exch def
newpath
x y moveto
boxwidth 2 div distx add 0 rlineto
stroke
1 eq
{ newpath x boxwidth 2 div distx add add y moveto
-8 3 rlineto
0 -6 rlineto
8 3 rlineto
closepath
eofill
stroke
} if
} def
/vedge
{
/ye exch def
/ys exch def
/xs exch def
newpath
xs xspacing mul xoffset add boxwidth 2 div add dup
ys yspacing mul boxheight 2 div sub
moveto
ye yspacing mul boxheight 2 div sub
lineto
stroke
} def
/conn % connections the blocks from col `arg1' to `arg2' of row `arg3'
{
/ys exch def
/xe exch def
/xs exch def
newpath
xs xspacing mul xoffset add boxwidth 2 div add
ys yspacing mul disty 2 div sub
moveto
xspacing xe xs sub mul 0
rlineto
stroke
} def
% ----- main ------
boxfont setfont
1 boundaspect scale
(moSimpleSolutionTabuList< M >) cw
(moTabuList< M >) cw
/boxwidth boxwidth marginwidth 2 mul add def
/xspacing boxwidth distx add def
/yspacing boxheight disty add def
/scalefactor
boxwidth cols mul distx cols 1 sub mul add
boxheight rows mul disty rows 1 sub mul add boundaspect mul
max def
boundx scalefactor div boundy scalefactor div scale
% ----- classes -----
(moSimpleSolutionTabuList< M >) 0 0 box
(moTabuList< M >) 0 1 box
% ----- relations -----
solid
0 0 0 out
solid
1 0 1 in

View file

@ -0,0 +1,140 @@
\section{mo\-Simple\-Solution\-Tabu\-List$<$ M $>$ Class Template Reference}
\label{classmo_simple_solution_tabu_list}\index{moSimpleSolutionTabuList@{moSimpleSolutionTabuList}}
Class describing a solution tabu list with limited length.
{\tt \#include $<$mo\-Simple\-Solution\-Tabu\-List.h$>$}
Inheritance diagram for mo\-Simple\-Solution\-Tabu\-List$<$ M $>$::\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=2cm]{classmo_simple_solution_tabu_list}
\end{center}
\end{figure}
\subsection*{Public Types}
\begin{CompactItemize}
\item
typedef M::EOType {\bf EOT}\label{classmo_simple_solution_tabu_list_881060871a6b49e5e8554c5df85176d9}
\begin{CompactList}\small\item\em Alias for the type. \item\end{CompactList}\end{CompactItemize}
\subsection*{Public Member Functions}
\begin{CompactItemize}
\item
{\bf mo\-Simple\-Solution\-Tabu\-List} (unsigned \_\-\_\-size)
\begin{CompactList}\small\item\em Constructor. \item\end{CompactList}\item
bool {\bf operator()} (const M \&\_\-\_\-move, const {\bf EOT} \&\_\-\_\-sol)
\begin{CompactList}\small\item\em Function that indicates if, in a given state, the \_\-move is tabu or not. \item\end{CompactList}\item
void {\bf add} (const M \&\_\-\_\-move, const {\bf EOT} \&\_\-\_\-sol)
\begin{CompactList}\small\item\em Procedure to add a move in the tabu list. \item\end{CompactList}\item
void {\bf update} ()
\begin{CompactList}\small\item\em Procedure that updates the tabu list content. \item\end{CompactList}\item
void {\bf init} ()
\begin{CompactList}\small\item\em Procedure which initialises the tabu list. \item\end{CompactList}\end{CompactItemize}
\subsection*{Private Attributes}
\begin{CompactItemize}
\item
unsigned {\bf max\-Size}\label{classmo_simple_solution_tabu_list_d059072e23ba086ede801abdd32f7218}
\begin{CompactList}\small\item\em The maximum size of the tabu list. \item\end{CompactList}\item
unsigned {\bf current\-Size}\label{classmo_simple_solution_tabu_list_ddc7196b9adcba0081810619a978490c}
\begin{CompactList}\small\item\em The current size of the tabu list. \item\end{CompactList}\item
std::list$<$ {\bf EOT} $>$ {\bf tabu\-List}\label{classmo_simple_solution_tabu_list_75df9cd683528d3722d02bac407b710b}
\begin{CompactList}\small\item\em The solution tabu list. \item\end{CompactList}\end{CompactItemize}
\subsection{Detailed Description}
\subsubsection*{template$<$class M$>$ class mo\-Simple\-Solution\-Tabu\-List$<$ M $>$}
Class describing a solution tabu list with limited length.
Definition at line 22 of file mo\-Simple\-Solution\-Tabu\-List.h.
\subsection{Constructor \& Destructor Documentation}
\index{moSimpleSolutionTabuList@{mo\-Simple\-Solution\-Tabu\-List}!moSimpleSolutionTabuList@{moSimpleSolutionTabuList}}
\index{moSimpleSolutionTabuList@{moSimpleSolutionTabuList}!moSimpleSolutionTabuList@{mo\-Simple\-Solution\-Tabu\-List}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ {\bf mo\-Simple\-Solution\-Tabu\-List}$<$ M $>$::{\bf mo\-Simple\-Solution\-Tabu\-List} (unsigned {\em \_\-\_\-size})\hspace{0.3cm}{\tt [inline]}}\label{classmo_simple_solution_tabu_list_24576bd9a907b8925c7d7d5ce6fde445}
Constructor.
\begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em \_\-\_\-size}]The maximum size of the solution tabu list. \end{description}
\end{Desc}
Definition at line 34 of file mo\-Simple\-Solution\-Tabu\-List.h.
References mo\-Simple\-Solution\-Tabu\-List$<$ M $>$::current\-Size.
\subsection{Member Function Documentation}
\index{moSimpleSolutionTabuList@{mo\-Simple\-Solution\-Tabu\-List}!operator()@{operator()}}
\index{operator()@{operator()}!moSimpleSolutionTabuList@{mo\-Simple\-Solution\-Tabu\-List}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ bool {\bf mo\-Simple\-Solution\-Tabu\-List}$<$ M $>$::operator() (const M \& {\em \_\-\_\-move}, const {\bf EOT} \& {\em \_\-\_\-sol})\hspace{0.3cm}{\tt [inline]}}\label{classmo_simple_solution_tabu_list_e1f1cf258b55554d8be88fb5780a0047}
Function that indicates if, in a given state, the \_\-move is tabu or not.
\begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em \_\-\_\-move}]A given \doxyref{mo\-Move}{p.}{classmo_move}. \item[{\em \_\-\_\-sol}]A solution. \end{description}
\end{Desc}
\begin{Desc}
\item[Returns:]true or false. \end{Desc}
Definition at line 45 of file mo\-Simple\-Solution\-Tabu\-List.h.
References mo\-Simple\-Solution\-Tabu\-List$<$ M $>$::tabu\-List.\index{moSimpleSolutionTabuList@{mo\-Simple\-Solution\-Tabu\-List}!add@{add}}
\index{add@{add}!moSimpleSolutionTabuList@{mo\-Simple\-Solution\-Tabu\-List}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ void {\bf mo\-Simple\-Solution\-Tabu\-List}$<$ M $>$::add (const M \& {\em \_\-\_\-move}, const {\bf EOT} \& {\em \_\-\_\-sol})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_simple_solution_tabu_list_fd6b3a1764121169650c969bba895615}
Procedure to add a move in the tabu list.
The two parameters have not to be modified so they are constant parameters.
\begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em \_\-\_\-move}]a new tabu move. \item[{\em \_\-\_\-sol}]the origianl solution associated to this move. \end{description}
\end{Desc}
Implements {\bf mo\-Tabu\-List$<$ M $>$} \doxyref{}{p.}{classmo_tabu_list_d279d72cb486d812da1ad3d24a69c286}.
Definition at line 64 of file mo\-Simple\-Solution\-Tabu\-List.h.
References mo\-Simple\-Solution\-Tabu\-List$<$ M $>$::current\-Size, mo\-Simple\-Solution\-Tabu\-List$<$ M $>$::max\-Size, and mo\-Simple\-Solution\-Tabu\-List$<$ M $>$::tabu\-List.\index{moSimpleSolutionTabuList@{mo\-Simple\-Solution\-Tabu\-List}!update@{update}}
\index{update@{update}!moSimpleSolutionTabuList@{mo\-Simple\-Solution\-Tabu\-List}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ void {\bf mo\-Simple\-Solution\-Tabu\-List}$<$ M $>$::update ()\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_simple_solution_tabu_list_91b8b01dba7ffea8b63765d931e56f56}
Procedure that updates the tabu list content.
Generally, a counter associated to each saved move is decreased by one.
Implements {\bf mo\-Tabu\-List$<$ M $>$} \doxyref{}{p.}{classmo_tabu_list_a2e5d1132f064093c8ed57046405f5ca}.
Definition at line 84 of file mo\-Simple\-Solution\-Tabu\-List.h.\index{moSimpleSolutionTabuList@{mo\-Simple\-Solution\-Tabu\-List}!init@{init}}
\index{init@{init}!moSimpleSolutionTabuList@{mo\-Simple\-Solution\-Tabu\-List}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ void {\bf mo\-Simple\-Solution\-Tabu\-List}$<$ M $>$::init ()\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_simple_solution_tabu_list_d5645c39fec71a6110a2cbccbb08b816}
Procedure which initialises the tabu list.
Can be useful if the data structure needs to be allocated before being used.
Implements {\bf mo\-Tabu\-List$<$ M $>$} \doxyref{}{p.}{classmo_tabu_list_0a06c459d56e8e2b408a8f3c6aec4e57}.
Definition at line 90 of file mo\-Simple\-Solution\-Tabu\-List.h.
The documentation for this class was generated from the following file:\begin{CompactItemize}
\item
mo\-Simple\-Solution\-Tabu\-List.h\end{CompactItemize}

View file

@ -0,0 +1,203 @@
%!PS-Adobe-2.0 EPSF-2.0
%%Title: ClassName
%%Creator: Doxygen
%%CreationDate: Time
%%For:
%Magnification: 1.00
%%Orientation: Portrait
%%BoundingBox: 0 0 500 100
%%Pages: 0
%%BeginSetup
%%EndSetup
%%EndComments
% ----- variables -----
/boxwidth 0 def
/boxheight 40 def
/fontheight 24 def
/marginwidth 10 def
/distx 20 def
/disty 40 def
/boundaspect 5 def % aspect ratio of the BoundingBox (width/height)
/boundx 500 def
/boundy boundx boundaspect div def
/xspacing 0 def
/yspacing 0 def
/rows 2 def
/cols 2 def
/scalefactor 0 def
/boxfont /Times-Roman findfont fontheight scalefont def
% ----- procedures -----
/dotted { [1 4] 0 setdash } def
/dashed { [5] 0 setdash } def
/solid { [] 0 setdash } def
/max % result = MAX(arg1,arg2)
{
/a exch def
/b exch def
a b gt {a} {b} ifelse
} def
/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2)
{
0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max
} def
/cw % boxwidth = MAX(boxwidth, stringwidth(arg1))
{
/str exch def
/boxwidth boxwidth str stringwidth pop max def
} def
/box % draws a box with text `arg1' at grid pos (arg2,arg3)
{ gsave
2 setlinewidth
newpath
exch xspacing mul xoffset add
exch yspacing mul
moveto
boxwidth 0 rlineto
0 boxheight rlineto
boxwidth neg 0 rlineto
0 boxheight neg rlineto
closepath
dup stringwidth pop neg boxwidth add 2 div
boxheight fontheight 2 div sub 2 div
rmoveto show stroke
grestore
} def
/mark
{ newpath
exch xspacing mul xoffset add boxwidth add
exch yspacing mul
moveto
0 boxheight 4 div rlineto
boxheight neg 4 div boxheight neg 4 div rlineto
closepath
eofill
stroke
} def
/arrow
{ newpath
moveto
3 -8 rlineto
-6 0 rlineto
3 8 rlineto
closepath
eofill
stroke
} def
/out % draws an output connector for the block at (arg1,arg2)
{
newpath
exch xspacing mul xoffset add boxwidth 2 div add
exch yspacing mul boxheight add
/y exch def
/x exch def
x y moveto
0 disty 2 div rlineto
stroke
1 eq { x y disty 2 div add arrow } if
} def
/in % draws an input connector for the block at (arg1,arg2)
{
newpath
exch xspacing mul xoffset add boxwidth 2 div add
exch yspacing mul disty 2 div sub
/y exch def
/x exch def
x y moveto
0 disty 2 div rlineto
stroke
1 eq { x y disty 2 div add arrow } if
} def
/hedge
{
exch xspacing mul xoffset add boxwidth 2 div add
exch yspacing mul boxheight 2 div sub
/y exch def
/x exch def
newpath
x y moveto
boxwidth 2 div distx add 0 rlineto
stroke
1 eq
{ newpath x boxwidth 2 div distx add add y moveto
-8 3 rlineto
0 -6 rlineto
8 3 rlineto
closepath
eofill
stroke
} if
} def
/vedge
{
/ye exch def
/ys exch def
/xs exch def
newpath
xs xspacing mul xoffset add boxwidth 2 div add dup
ys yspacing mul boxheight 2 div sub
moveto
ye yspacing mul boxheight 2 div sub
lineto
stroke
} def
/conn % connections the blocks from col `arg1' to `arg2' of row `arg3'
{
/ys exch def
/xe exch def
/xs exch def
newpath
xs xspacing mul xoffset add boxwidth 2 div add
ys yspacing mul disty 2 div sub
moveto
xspacing xe xs sub mul 0
rlineto
stroke
} def
% ----- main ------
boxfont setfont
1 boundaspect scale
(moTabuList< M >) cw
(moSimpleMoveTabuList< M >) cw
(moSimpleSolutionTabuList< M >) cw
/boxwidth boxwidth marginwidth 2 mul add def
/xspacing boxwidth distx add def
/yspacing boxheight disty add def
/scalefactor
boxwidth cols mul distx cols 1 sub mul add
boxheight rows mul disty rows 1 sub mul add boundaspect mul
max def
boundx scalefactor div boundy scalefactor div scale
% ----- classes -----
(moTabuList< M >) 0.5 1 box
(moSimpleMoveTabuList< M >) 0 0 box
(moSimpleSolutionTabuList< M >) 1 0 box
% ----- relations -----
solid
1 0.5 0.25 out
solid
0 1 1 conn
solid
0 0 0.75 in
solid
0 1 0.75 in

View file

@ -5,6 +5,12 @@ Class describing a tabu list that a \doxyref{mo\-TS}{p.}{classmo_t_s} uses.
{\tt \#include $<$mo\-Tabu\-List.h$>$}
Inheritance diagram for mo\-Tabu\-List$<$ M $>$::\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=2cm]{classmo_tabu_list}
\end{center}
\end{figure}
\subsection*{Public Types}
\begin{CompactItemize}
\item
@ -41,21 +47,25 @@ Definition at line 22 of file mo\-Tabu\-List.h.
Procedure to add a move in the tabu list.
The two parameters have not to be modified so they are constant parameters
The two parameters have not to be modified so they are constant parameters.
\begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em \_\-\_\-move}]a new tabu move \item[{\em \_\-\_\-sol}]the solution associated to this move \end{description}
\item[{\em \_\-\_\-move}]a new tabu move. \item[{\em \_\-\_\-sol}]the origianl solution associated to this move. \end{description}
\end{Desc}
\index{moTabuList@{mo\-Tabu\-List}!update@{update}}
Implemented in {\bf mo\-Simple\-Move\-Tabu\-List$<$ M $>$} \doxyref{}{p.}{classmo_simple_move_tabu_list_43c979a9ec876c5e5b591b1c422395ef}, and {\bf mo\-Simple\-Solution\-Tabu\-List$<$ M $>$} \doxyref{}{p.}{classmo_simple_solution_tabu_list_fd6b3a1764121169650c969bba895615}.\index{moTabuList@{mo\-Tabu\-List}!update@{update}}
\index{update@{update}!moTabuList@{mo\-Tabu\-List}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ virtual void {\bf mo\-Tabu\-List}$<$ M $>$::update ()\hspace{0.3cm}{\tt [pure virtual]}}\label{classmo_tabu_list_a2e5d1132f064093c8ed57046405f5ca}
Procedure that updates the tabu list content.
Generally, a counter associated to each saved move is decreased by one. \index{moTabuList@{mo\-Tabu\-List}!init@{init}}
Generally, a counter associated to each saved move is decreased by one.
Implemented in {\bf mo\-Simple\-Move\-Tabu\-List$<$ M $>$} \doxyref{}{p.}{classmo_simple_move_tabu_list_96cffc8118456ed762b07b9fc0e0679f}, and {\bf mo\-Simple\-Solution\-Tabu\-List$<$ M $>$} \doxyref{}{p.}{classmo_simple_solution_tabu_list_91b8b01dba7ffea8b63765d931e56f56}.\index{moTabuList@{mo\-Tabu\-List}!init@{init}}
\index{init@{init}!moTabuList@{mo\-Tabu\-List}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ virtual void {\bf mo\-Tabu\-List}$<$ M $>$::init ()\hspace{0.3cm}{\tt [pure virtual]}}\label{classmo_tabu_list_0a06c459d56e8e2b408a8f3c6aec4e57}
@ -64,6 +74,8 @@ Procedure which initialises the tabu list.
Can be useful if the data structure needs to be allocated before being used.
Implemented in {\bf mo\-Simple\-Move\-Tabu\-List$<$ M $>$} \doxyref{}{p.}{classmo_simple_move_tabu_list_b91ae9971be30769757d1ad92c6009dc}, and {\bf mo\-Simple\-Solution\-Tabu\-List$<$ M $>$} \doxyref{}{p.}{classmo_simple_solution_tabu_list_d5645c39fec71a6110a2cbccbb08b816}.
The documentation for this class was generated from the following file:\begin{CompactItemize}
\item
mo\-Tabu\-List.h\end{CompactItemize}

View file

@ -10,8 +10,8 @@
{\fancyplain{}{\bfseries\rightmark}}
\rhead[\fancyplain{}{\bfseries\leftmark}]
{\fancyplain{}{\bfseries\thepage}}
\rfoot[\fancyplain{}{\bfseries\scriptsize Generated on Wed Apr 18 10:15:03 2007 for PARADISEO-MO by Doxygen }]{}
\lfoot[]{\fancyplain{}{\bfseries\scriptsize Generated on Wed Apr 18 10:15:03 2007 for PARADISEO-MO by Doxygen }}
\rfoot[\fancyplain{}{\bfseries\scriptsize Generated on Thu Apr 19 15:16:09 2007 for PARADISEO-MO by Doxygen }]{}
\lfoot[]{\fancyplain{}{\bfseries\scriptsize Generated on Thu Apr 19 15:16:09 2007 for PARADISEO-MO by Doxygen }}
\cfoot{}
\newenvironment{Code}
{\footnotesize}

View file

@ -46,4 +46,8 @@ This inheritance list is sorted roughly, but not completely, alphabetically:\beg
\item \contentsline{section}{mo\-Gen\-Sol\-Continue$<$ EOT $>$}{\pageref{classmo_gen_sol_continue}}{}
\end{CompactList}
\item \contentsline{section}{mo\-Tabu\-List$<$ M $>$}{\pageref{classmo_tabu_list}}{}
\begin{CompactList}
\item \contentsline{section}{mo\-Simple\-Move\-Tabu\-List$<$ M $>$}{\pageref{classmo_simple_move_tabu_list}}{}
\item \contentsline{section}{mo\-Simple\-Solution\-Tabu\-List$<$ M $>$}{\pageref{classmo_simple_solution_tabu_list}}{}
\end{CompactList}
\end{CompactList}

View file

@ -19,7 +19,7 @@
\vspace*{1cm}
{\large Generated by Doxygen 1.5.1}\\
\vspace*{0.5cm}
{\small Wed Apr 18 10:15:03 2007}\\
{\small Thu Apr 19 15:16:09 2007}\\
\end{center}
\end{titlepage}
\clearemptydoublepage
@ -59,6 +59,8 @@
\include{classmo_rand_impr_select}
\include{classmo_rand_move}
\include{classmo_s_a}
\include{classmo_simple_move_tabu_list}
\include{classmo_simple_solution_tabu_list}
\include{classmo_sol_continue}
\include{classmo_tabu_list}
\include{classmo_t_s}