⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tabu_h source file.htm

📁 禁忌算法的源程序和一个示例的PPT演示稿 以及几个使用的关于禁忌算法的HTML文稿
💻 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> 
&nbsp; <A class=qindex 
href="http://geminga.it.nuigalway.ie/~9709864p/html/annotated.html">Compound 
List</A> &nbsp; <A class=qindex 
href="http://geminga.it.nuigalway.ie/~9709864p/html/files.html">File List</A> 
&nbsp; <A class=qindex 
href="http://geminga.it.nuigalway.ie/~9709864p/html/functions.html">Compound 
Members</A> &nbsp; <A class=qindex 
href="http://geminga.it.nuigalway.ie/~9709864p/html/globals.html">File 
Members</A> &nbsp; </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 &lt;stdio.h&gt;</SPAN>
00014 <SPAN class=preprocessor>#include &lt;stdlib.h&gt;</SPAN>
00015 <SPAN class=preprocessor>#include &lt;time.h&gt;</SPAN>
00016 <SPAN class=preprocessor>#include &lt;math.h&gt;</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 + -