📄 tabu_h source file.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0065)http://geminga.it.nuigalway.ie/~9709864p/html/tabu_8h-source.html -->
<HTML><HEAD><TITLE>tabu.h Source File</TITLE>
<META http-equiv=Content-Type content=text/html;charset=iso-8859-1><LINK
href="tabu_h Source File.files/doxygen.css" type=text/css rel=stylesheet>
<META content="MSHTML 6.00.2900.3199" name=GENERATOR></HEAD>
<BODY><!-- Generated by Doxygen 1.2.18 -->
<CENTER><A class=qindex
href="http://geminga.it.nuigalway.ie/~9709864p/html/index.html">Main Page</A>
<A class=qindex
href="http://geminga.it.nuigalway.ie/~9709864p/html/annotated.html">Compound
List</A> <A class=qindex
href="http://geminga.it.nuigalway.ie/~9709864p/html/files.html">File List</A>
<A class=qindex
href="http://geminga.it.nuigalway.ie/~9709864p/html/functions.html">Compound
Members</A> <A class=qindex
href="http://geminga.it.nuigalway.ie/~9709864p/html/globals.html">File
Members</A> </CENTER>
<HR>
<H1>tabu.h</H1><A
href="http://geminga.it.nuigalway.ie/~9709864p/html/tabu_8h.html">Go to the
documentation of this file.</A>
<DIV class=fragment><PRE>00001 <SPAN class=comment>/* </SPAN>
00002 <SPAN class=comment>*</SPAN>
00003 <SPAN class=comment>* Tabu.h</SPAN>
00004 <SPAN class=comment>* Written : April '03 by Ann Tighe</SPAN>
00005 <SPAN class=comment>* National University of Ireland, Galway</SPAN>
00006 <SPAN class=comment>*</SPAN>
00007 <SPAN class=comment>* </SPAN>
00008 <SPAN class=comment>*</SPAN>
00009 <SPAN class=comment>*</SPAN>
00010 <SPAN class=comment>*/</SPAN>
00011
00012
00013 <SPAN class=preprocessor>#include <stdio.h></SPAN>
00014 <SPAN class=preprocessor>#include <stdlib.h></SPAN>
00015 <SPAN class=preprocessor>#include <time.h></SPAN>
00016 <SPAN class=preprocessor>#include <math.h></SPAN>
00017
<A name=l00018></A><A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/tabu_8h.html#a0">00018</A> <SPAN class=preprocessor>#define DATASIZE 12 // Size of the question i.e. How many integers in the question</SPAN>
<A name=l00019></A><A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/tabu_8h.html#a1">00019</A> <SPAN class=preprocessor></SPAN><SPAN class=preprocessor>#define HALFDATASIZE DATASIZE/2 //half the datasize</SPAN>
<A name=l00020></A><A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/tabu_8h.html#a2">00020</A> <SPAN class=preprocessor></SPAN><SPAN class=preprocessor>#define LISTSIZE 10 // Size of the lists</SPAN>
<A name=l00021></A><A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/tabu_8h.html#a3">00021</A> <SPAN class=preprocessor></SPAN><SPAN class=preprocessor>#define TABUSIZE 5 //Size of Tabu list</SPAN>
<A name=l00022></A><A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/tabu_8h.html#a4">00022</A> <SPAN class=preprocessor></SPAN><SPAN class=preprocessor>#define MAXFITNESS 100000.000 //Max value of the worest possible fitness function</SPAN>
00023 <SPAN class=preprocessor></SPAN>
<A name=l00024></A><A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/tabu_8h.html#a5">00024</A> <SPAN class=keywordtype>int</SPAN> <A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/tabu_8h.html#a5">iterations</A>, <A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/tabu_8h.html#a6">it</A>;
00025
00026 <SPAN class=comment>/*</SPAN>
00027 <SPAN class=comment>* Structure of a route includes an array of integers (locations)</SPAN>
00028 <SPAN class=comment>* of DATASIZE and a double that stores the fitness </SPAN>
00029 <SPAN class=comment>* value of the route</SPAN>
00030 <SPAN class=comment>*/</SPAN>
00031
00032 <SPAN class=comment>// The history structure holds the necessary elements toknow if something is tabu or not</SPAN>
<A name=l00033></A><A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structHistory.html">00033</A> <SPAN class=keyword>typedef</SPAN> <SPAN class=keyword>struct </SPAN><A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structHistory.html">History</A>
00034 {
<A name=l00035></A><A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structHistory.html#m0">00035</A> <SPAN class=keywordtype>int</SPAN> <A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structHistory.html#m0">swap</A>;
<A name=l00036></A><A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structHistory.html#m1">00036</A> <SPAN class=keywordtype>int</SPAN> <A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structHistory.html#m1">position1</A>;
<A name=l00037></A><A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structHistory.html#m2">00037</A> <SPAN class=keywordtype>int</SPAN> <A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structHistory.html#m2">position2</A>;
00038 }
00039 <A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structHistory.html">history</A>;
00040
00041
00042 <SPAN class=comment>//The tabu list is a (circular) dynamic link list </SPAN>
<A name=l00043></A><A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structlist__of__tabu.html">00043</A> <SPAN class=keyword>struct </SPAN><A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structlist__of__tabu.html">list_of_tabu</A>
00044 {
<A name=l00045></A><A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structlist__of__tabu.html#m0">00045</A> <A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structHistory.html">history</A> <A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structlist__of__tabu.html#m0">route_history</A>;
<A name=l00046></A><A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structlist__of__tabu.html#m1">00046</A> <SPAN class=keyword>struct </SPAN><A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structlist__of__tabu.html">list_of_tabu</A> *next;
00047 };
00048
<A name=l00049></A><A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/tabu_8h.html#a8">00049</A> <SPAN class=keyword>typedef</SPAN> <SPAN class=keyword>struct </SPAN><A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structlist__of__tabu.html">list_of_tabu</A> element;
<A name=l00050></A><A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/tabu_8h.html#a9">00050</A> <SPAN class=keyword>typedef</SPAN> element *<A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structlist__of__tabu.html">link</A>;
00051
00052
00053 <SPAN class=comment>//A route is one version of what the route could be it also includes the fitness of the route and the history</SPAN>
00054 <SPAN class=keyword>typedef</SPAN> <SPAN class=keyword>struct </SPAN><A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structindividualroute.html">individualroute</A>
00055 {
<A name=l00056></A><A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structindividualroute.html#m2">00056</A> <SPAN class=keywordtype>int</SPAN> *<A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structindividualroute.html#m0">location</A>;
<A name=l00057></A><A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structindividualroute.html#m1">00057</A> <SPAN class=keywordtype>double</SPAN> <A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structindividualroute.html#m1">fitness</A>;
<A name=l00058></A><A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structindividualroute.html#m3">00058</A> <A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structHistory.html">history</A> <A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structindividualroute.html#m3">move</A>;
00059 }
00060 <A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structindividualroute.html">route</A>;
00061
00062
00063 <SPAN class=comment>//The list of routes will the the neighbouthood and the aspirant set I may change the aspirant set to a link list toofor efficienty</SPAN>
<A name=l00064></A><A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structList__routes.html">00064</A> <SPAN class=keyword>typedef</SPAN> <SPAN class=keyword>struct </SPAN><A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structList__routes.html">List_routes</A>
00065 {
<A name=l00066></A><A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structList__routes.html#m0">00066</A> <A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structindividualroute.html">route</A> <A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structList__routes.html#m0">list</A>[<A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/tabu_8h.html#a2">LISTSIZE</A>];
00067 }
00068 <A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structList__routes.html">list_of_routes</A>;
00069
00070
00071
00072
00073 <SPAN class=comment>// This gives all the constraints nessary for one customer or stop</SPAN>
00074 <SPAN class=keyword>typedef</SPAN> <SPAN class=keyword>struct </SPAN><A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structConstraintlist.html">Constraintlist</A>
00075 {
<A name=l00076></A><A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structConstraintlist.html#m0">00076</A> <SPAN class=keywordtype>int</SPAN> <A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structConstraintlist.html#m0">customer_no</A>;
<A name=l00077></A><A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structConstraintlist.html#m1">00077</A> <SPAN class=keywordtype>int</SPAN> <A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structConstraintlist.html#m1">xcoord</A>;
<A name=l00078></A><A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structConstraintlist.html#m2">00078</A> <SPAN class=keywordtype>int</SPAN> <A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structConstraintlist.html#m2">ycoord</A>;
<A name=l00079></A><A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structConstraintlist.html#m3">00079</A> <SPAN class=keywordtype>int</SPAN> <A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structConstraintlist.html#m3">demand</A>;
<A name=l00080></A><A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structConstraintlist.html#m4">00080</A> <SPAN class=keywordtype>int</SPAN> <A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structConstraintlist.html#m4">ready_time</A>;
<A name=l00081></A><A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structConstraintlist.html#m5">00081</A> <SPAN class=keywordtype>int</SPAN> <A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structConstraintlist.html#m5">due_date</A>;
<A name=l00082></A><A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structConstraintlist.html#m6">00082</A> <SPAN class=keywordtype>int</SPAN> <A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structConstraintlist.html#m6">service_time</A>;
<A name=l00083></A><A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structConstraintlist.html#m7">00083</A> <SPAN class=keywordtype>int</SPAN> <A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structConstraintlist.html#m7">pickup</A>;
<A name=l00084></A><A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structConstraintlist.html#m8">00084</A> <SPAN class=keywordtype>int</SPAN> <A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structConstraintlist.html#m8">delivery</A>;
00085 <SPAN class=comment>//a pointer to the distance array</SPAN>
<A name=l00086></A><A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structConstraintlist.html#m12">00086</A> <SPAN class=keywordtype>double</SPAN> *<A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structConstraintlist.html#m9">distance</A>;
00087 }
00088 <A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structConstraintlist.html">constraintlist</A>;
00089
00090 <SPAN class=comment>//This groups all the constraints in an array of customers</SPAN>
00091 <SPAN class=keyword>typedef</SPAN> <SPAN class=keyword>struct </SPAN><A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structConstraints.html">Constraints</A>
00092 {
00093
00094 <SPAN class=comment>//a pointer to the coustomer array</SPAN>
<A name=l00095></A><A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structConstraints.html#m4">00095</A> <A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structConstraintlist.html">constraintlist</A> *<A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structConstraints.html#m0">customer</A>;
<A name=l00096></A><A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structConstraints.html#m1">00096</A> <SPAN class=keywordtype>int</SPAN> <A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structConstraints.html#m1">capacity</A>;
00097 }
00098 <A class=code href="http://geminga.it.nuigalway.ie/~9709864p/html/structConstraints.html">constraints</A>;
00099
</PRE></DIV><SMALL><A href="http://geminga.it.nuigalway.ie/~9709864p/">Ann Tighe
</A></SMALL></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -