diff --git a/branches/paradiseo-ix86-2.0/.mpd.conf b/branches/paradiseo-ix86-2.0/.mpd.conf new file mode 100644 index 000000000..bf47811ab --- /dev/null +++ b/branches/paradiseo-ix86-2.0/.mpd.conf @@ -0,0 +1 @@ +secretword=Nothing diff --git a/branches/paradiseo-ix86-2.0/AUTHORS b/branches/paradiseo-ix86-2.0/AUTHORS new file mode 100644 index 000000000..801947d9a --- /dev/null +++ b/branches/paradiseo-ix86-2.0/AUTHORS @@ -0,0 +1,10 @@ +Jean-Charles Boisson +Sébastien Cahon +Clive Canape +Laetitia Jourdan +Thomas Legrand +Arnaud Liefooghe +Nouredine Melab +El-Ghazali Talbi +Alexandru-Adrian Tantar + diff --git a/branches/paradiseo-ix86-2.0/INSTALL b/branches/paradiseo-ix86-2.0/INSTALL new file mode 100644 index 000000000..4270391a3 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/INSTALL @@ -0,0 +1,118 @@ + +========================================================================================== + BUILDING PARADISEO FULL PACKAGE +========================================================================================== +The basic installation procedure must be done in the directory +which contains the extracted archive. + + --> Example : source installParadiseo.sh + +Please try source installParadiseo.sh --help for further information + +========================================================================================== + DIRECTORY STRUCTURE +========================================================================================== +After unpacking the archive file, you should end up with the following +structure: + +.../ Installation directory (specified with ./installParadiseo.sh) + | + | + +-- AUTHORS Author list + | + | + +-- install.cmake ParadisEO main install config file + | + | + +-- installParadiseo.sh Install script + | + +-- lib/ + | | +-- /libxml2-2.6.0.tar.bz2 LIBXML2 archive (required for ParadisEO) + | | +-- /mpich2-1.0.3.tar.gz MPICH2 archive (required for ParadisEO) + | + | + + LICENCE Licence contents + | + | + +-- paradiseo-eo paradiseo-eo dir + | + | + +-- paradiseo-mo paradiseo-mo dir + | + | + +-- paradiseo-moeo paradiseo-moeo dir + | + | + +-- paradiseo-peo paradiseo-peo dir + | + +-- README README file + | + | + +-- .mpd.conf Paradiseo-peo config file + + +========================================================================================== + DIRECTORY STRUCTURE AFTER INSTALLATION +========================================================================================== +After running the script "installParadiseo.sh" and if the process is successful, +you should have the following structure : + +.../ Installation directory (specified with ./installParadiseo.sh) + | + | + +-- AUTHORS Author list + | + | + +-- install.cmake ParadisEO main install config file + | + | + +-- installParadiseo.sh Install script + | + +-- lib/ + | | +-- /libxml2-2.6.0.tar.bz2 LIBXML2 archive (required for ParadisEO-PEO) + | | +-- /mpich2-1.0.3.tar.gz MPICH2 archive (required for ParadisEO-PEO) + | + +-- libxml2 Libxml2 install directory (required for ParadisEO-PEO) + | + + LICENCE Licence contents + | + | + +-- mpich2 Mpich2 install directory (required for ParadisEO-PEO) + | + | + +-- paradiseo-eo paradiseo-eo dir + | + | + +-- paradiseo-mo paradiseo-mo dir + | + | + +-- paradiseo-moeo paradiseo-moeo dir + | + | + +-- paradiseo-peo paradiseo-peo dir + | + +-- README README file + | + | + +-- .mpd.conf Paradiseo-peo config file + + +========================================================================================== + NOTES +========================================================================================== + +ParadisEO uses EO, a templates-based, ANSI-C++ compliant evolutionary computation library. +It contains classes for almost any kind of evolutionary computation you might come up to - at +least for the ones we could think of. +EO Website: http://eodev.sourceforge.net/. +EO is distributed under the GNU Lesser General Public License: http://www.gnu.org/copyleft/lesser.html + + +Please read README file of each extracted directory if you have +problems for the installation. + +========================================================================================== + CONTACT +========================================================================================== +For further information about ParadisEO, help or to report any +problem : paradiseo-help@lists.gforge.inria.fr diff --git a/branches/paradiseo-ix86-2.0/LICENSE b/branches/paradiseo-ix86-2.0/LICENSE new file mode 100644 index 000000000..abb331a31 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/LICENSE @@ -0,0 +1,1019 @@ +CeCILL FREE SOFTWARE LICENSE AGREEMENT + + Notice + +This Agreement is a Free Software license agreement that is the result +of discussions between its authors in order to ensure compliance with +the two main principles guiding its drafting: + + * firstly, compliance with the principles governing the distribution + of Free Software: access to source code, broad rights granted to + users, + * secondly, the election of a governing law, French law, with which + it is conformant, both as regards the law of torts and + intellectual property law, and the protection that it offers to + both authors and holders of the economic rights over software. + +The authors of the CeCILL (for Ce[a] C[nrs] I[nria] L[ogiciel] L[ibre]) +license are: + +Commissariat à l'Energie Atomique - CEA, a public scientific, technical +and industrial research establishment, having its principal place of +business at 25 rue Leblanc, immeuble Le Ponant D, 75015 Paris, France. + +Centre National de la Recherche Scientifique - CNRS, a public scientific +and technological establishment, having its principal place of business +at 3 rue Michel-Ange, 75794 Paris cedex 16, France. + +Institut National de Recherche en Informatique et en Automatique - +INRIA, a public scientific and technological establishment, having its +principal place of business at Domaine de Voluceau, Rocquencourt, BP +105, 78153 Le Chesnay cedex, France. + + + Preamble + +The purpose of this Free Software license agreement is to grant users +the right to modify and redistribute the software governed by this +license within the framework of an open source distribution model. + +The exercising of these rights is conditional upon certain obligations +for users so as to preserve this status for all subsequent redistributions. + +In consideration of access to the source code and the rights to copy, +modify and redistribute granted by the license, users are provided only +with a limited warranty and the software's author, the holder of the +economic rights, and the successive licensors only have limited liability. + +In this respect, the risks associated with loading, using, modifying +and/or developing or reproducing the software by the user are brought to +the user's attention, given its Free Software status, which may make it +complicated to use, with the result that its use is reserved for +developers and experienced professionals having in-depth computer +knowledge. Users are therefore encouraged to load and test the +suitability of the software as regards their requirements in conditions +enabling the security of their systems and/or data to be ensured and, +more generally, to use and operate it in the same conditions of +security. This Agreement may be freely reproduced and published, +provided it is not altered, and that no provisions are either added or +removed herefrom. + +This Agreement may apply to any or all software for which the holder of +the economic rights decides to submit the use thereof to its provisions. + + + Article 1 - DEFINITIONS + +For the purpose of this Agreement, when the following expressions +commence with a capital letter, they shall have the following meaning: + +Agreement: means this license agreement, and its possible subsequent +versions and annexes. + +Software: means the software in its Object Code and/or Source Code form +and, where applicable, its documentation, "as is" when the Licensee +accepts the Agreement. + +Initial Software: means the Software in its Source Code and possibly its +Object Code form and, where applicable, its documentation, "as is" when +it is first distributed under the terms and conditions of the Agreement. + +Modified Software: means the Software modified by at least one +Contribution. + +Source Code: means all the Software's instructions and program lines to +which access is required so as to modify the Software. + +Object Code: means the binary files originating from the compilation of +the Source Code. + +Holder: means the holder(s) of the economic rights over the Initial +Software. + +Licensee: means the Software user(s) having accepted the Agreement. + +Contributor: means a Licensee having made at least one Contribution. + +Licensor: means the Holder, or any other individual or legal entity, who +distributes the Software under the Agreement. + +Contribution: means any or all modifications, corrections, translations, +adaptations and/or new functions integrated into the Software by any or +all Contributors, as well as any or all Internal Modules. + +Module: means a set of sources files including their documentation that +enables supplementary functions or services in addition to those offered +by the Software. + +External Module: means any or all Modules, not derived from the +Software, so that this Module and the Software run in separate address +spaces, with one calling the other when they are run. + +Internal Module: means any or all Module, connected to the Software so +that they both execute in the same address space. + +GNU GPL: means the GNU General Public License version 2 or any +subsequent version, as published by the Free Software Foundation Inc. + +Parties: mean both the Licensee and the Licensor. + +These expressions may be used both in singular and plural form. + + + Article 2 - PURPOSE + +The purpose of the Agreement is the grant by the Licensor to the +Licensee of a non-exclusive, transferable and worldwide license for the +Software as set forth in Article 5 hereinafter for the whole term of the +protection granted by the rights over said Software. + + + Article 3 - ACCEPTANCE + +3.1 The Licensee shall be deemed as having accepted the terms and +conditions of this Agreement upon the occurrence of the first of the +following events: + + * (i) loading the Software by any or all means, notably, by + downloading from a remote server, or by loading from a physical + medium; + * (ii) the first time the Licensee exercises any of the rights + granted hereunder. + +3.2 One copy of the Agreement, containing a notice relating to the +characteristics of the Software, to the limited warranty, and to the +fact that its use is restricted to experienced users has been provided +to the Licensee prior to its acceptance as set forth in Article 3.1 +hereinabove, and the Licensee hereby acknowledges that it has read and +understood it. + + + Article 4 - EFFECTIVE DATE AND TERM + + + 4.1 EFFECTIVE DATE + +The Agreement shall become effective on the date when it is accepted by +the Licensee as set forth in Article 3.1. + + + 4.2 TERM + +The Agreement shall remain in force for the entire legal term of +protection of the economic rights over the Software. + + + Article 5 - SCOPE OF RIGHTS GRANTED + +The Licensor hereby grants to the Licensee, who accepts, the following +rights over the Software for any or all use, and for the term of the +Agreement, on the basis of the terms and conditions set forth hereinafter. + +Besides, if the Licensor owns or comes to own one or more patents +protecting all or part of the functions of the Software or of its +components, the Licensor undertakes not to enforce the rights granted by +these patents against successive Licensees using, exploiting or +modifying the Software. If these patents are transferred, the Licensor +undertakes to have the transferees subscribe to the obligations set +forth in this paragraph. + + + 5.1 RIGHT OF USE + +The Licensee is authorized to use the Software, without any limitation +as to its fields of application, with it being hereinafter specified +that this comprises: + + 1. permanent or temporary reproduction of all or part of the Software + by any or all means and in any or all form. + + 2. loading, displaying, running, or storing the Software on any or + all medium. + + 3. entitlement to observe, study or test its operation so as to + determine the ideas and principles behind any or all constituent + elements of said Software. This shall apply when the Licensee + carries out any or all loading, displaying, running, transmission + or storage operation as regards the Software, that it is entitled + to carry out hereunder. + + + 5.2 ENTITLEMENT TO MAKE CONTRIBUTIONS + +The right to make Contributions includes the right to translate, adapt, +arrange, or make any or all modifications to the Software, and the right +to reproduce the resulting software. + +The Licensee is authorized to make any or all Contributions to the +Software provided that it includes an explicit notice that it is the +author of said Contribution and indicates the date of the creation thereof. + + + 5.3 RIGHT OF DISTRIBUTION + +In particular, the right of distribution includes the right to publish, +transmit and communicate the Software to the general public on any or +all medium, and by any or all means, and the right to market, either in +consideration of a fee, or free of charge, one or more copies of the +Software by any means. + +The Licensee is further authorized to distribute copies of the modified +or unmodified Software to third parties according to the terms and +conditions set forth hereinafter. + + + 5.3.1 DISTRIBUTION OF SOFTWARE WITHOUT MODIFICATION + +The Licensee is authorized to distribute true copies of the Software in +Source Code or Object Code form, provided that said distribution +complies with all the provisions of the Agreement and is accompanied by: + + 1. a copy of the Agreement, + + 2. a notice relating to the limitation of both the Licensor's + warranty and liability as set forth in Articles 8 and 9, + +and that, in the event that only the Object Code of the Software is +redistributed, the Licensee allows future Licensees unhindered access to +the full Source Code of the Software by indicating how to access it, it +being understood that the additional cost of acquiring the Source Code +shall not exceed the cost of transferring the data. + + + 5.3.2 DISTRIBUTION OF MODIFIED SOFTWARE + +When the Licensee makes a Contribution to the Software, the terms and +conditions for the distribution of the resulting Modified Software +become subject to all the provisions of this Agreement. + +The Licensee is authorized to distribute the Modified Software, in +source code or object code form, provided that said distribution +complies with all the provisions of the Agreement and is accompanied by: + + 1. a copy of the Agreement, + + 2. a notice relating to the limitation of both the Licensor's + warranty and liability as set forth in Articles 8 and 9, + +and that, in the event that only the object code of the Modified +Software is redistributed, the Licensee allows future Licensees +unhindered access to the full source code of the Modified Software by +indicating how to access it, it being understood that the additional +cost of acquiring the source code shall not exceed the cost of +transferring the data. + + + 5.3.3 DISTRIBUTION OF EXTERNAL MODULES + +When the Licensee has developed an External Module, the terms and +conditions of this Agreement do not apply to said External Module, that +may be distributed under a separate license agreement. + + + 5.3.4 COMPATIBILITY WITH THE GNU GPL + +The Licensee can include a code that is subject to the provisions of one +of the versions of the GNU GPL in the Modified or unmodified Software, +and distribute that entire code under the terms of the same version of +the GNU GPL. + +The Licensee can include the Modified or unmodified Software in a code +that is subject to the provisions of one of the versions of the GNU GPL, +and distribute that entire code under the terms of the same version of +the GNU GPL. + + + Article 6 - INTELLECTUAL PROPERTY + + + 6.1 OVER THE INITIAL SOFTWARE + +The Holder owns the economic rights over the Initial Software. Any or +all use of the Initial Software is subject to compliance with the terms +and conditions under which the Holder has elected to distribute its work +and no one shall be entitled to modify the terms and conditions for the +distribution of said Initial Software. + +The Holder undertakes that the Initial Software will remain ruled at +least by this Agreement, for the duration set forth in Article 4.2. + + + 6.2 OVER THE CONTRIBUTIONS + +The Licensee who develops a Contribution is the owner of the +intellectual property rights over this Contribution as defined by +applicable law. + + + 6.3 OVER THE EXTERNAL MODULES + +The Licensee who develops an External Module is the owner of the +intellectual property rights over this External Module as defined by +applicable law and is free to choose the type of agreement that shall +govern its distribution. + + + 6.4 JOINT PROVISIONS + +The Licensee expressly undertakes: + + 1. not to remove, or modify, in any manner, the intellectual property + notices attached to the Software; + + 2. to reproduce said notices, in an identical manner, in the copies + of the Software modified or not. + +The Licensee undertakes not to directly or indirectly infringe the +intellectual property rights of the Holder and/or Contributors on the +Software and to take, where applicable, vis-à-vis its staff, any and all +measures required to ensure respect of said intellectual property rights +of the Holder and/or Contributors. + + + Article 7 - RELATED SERVICES + +7.1 Under no circumstances shall the Agreement oblige the Licensor to +provide technical assistance or maintenance services for the Software. + +However, the Licensor is entitled to offer this type of services. The +terms and conditions of such technical assistance, and/or such +maintenance, shall be set forth in a separate instrument. Only the +Licensor offering said maintenance and/or technical assistance services +shall incur liability therefor. + +7.2 Similarly, any Licensor is entitled to offer to its licensees, under +its sole responsibility, a warranty, that shall only be binding upon +itself, for the redistribution of the Software and/or the Modified +Software, under terms and conditions that it is free to decide. Said +warranty, and the financial terms and conditions of its application, +shall be subject of a separate instrument executed between the Licensor +and the Licensee. + + + Article 8 - LIABILITY + +8.1 Subject to the provisions of Article 8.2, the Licensee shall be +entitled to claim compensation for any direct loss it may have suffered +from the Software as a result of a fault on the part of the relevant +Licensor, subject to providing evidence thereof. + +8.2 The Licensor's liability is limited to the commitments made under +this Agreement and shall not be incurred as a result of in particular: +(i) loss due the Licensee's total or partial failure to fulfill its +obligations, (ii) direct or consequential loss that is suffered by the +Licensee due to the use or performance of the Software, and (iii) more +generally, any consequential loss. In particular the Parties expressly +agree that any or all pecuniary or business loss (i.e. loss of data, +loss of profits, operating loss, loss of customers or orders, +opportunity cost, any disturbance to business activities) or any or all +legal proceedings instituted against the Licensee by a third party, +shall constitute consequential loss and shall not provide entitlement to +any or all compensation from the Licensor. + + + Article 9 - WARRANTY + +9.1 The Licensee acknowledges that the scientific and technical +state-of-the-art when the Software was distributed did not enable all +possible uses to be tested and verified, nor for the presence of +possible defects to be detected. In this respect, the Licensee's +attention has been drawn to the risks associated with loading, using, +modifying and/or developing and reproducing the Software which are +reserved for experienced users. + +The Licensee shall be responsible for verifying, by any or all means, +the suitability of the product for its requirements, its good working +order, and for ensuring that it shall not cause damage to either persons +or properties. + +9.2 The Licensor hereby represents, in good faith, that it is entitled +to grant all the rights over the Software (including in particular the +rights set forth in Article 5). + +9.3 The Licensee acknowledges that the Software is supplied "as is" by +the Licensor without any other express or tacit warranty, other than +that provided for in Article 9.2 and, in particular, without any warranty +as to its commercial value, its secured, safe, innovative or relevant +nature. + +Specifically, the Licensor does not warrant that the Software is free +from any error, that it will operate without interruption, that it will +be compatible with the Licensee's own equipment and software +configuration, nor that it will meet the Licensee's requirements. + +9.4 The Licensor does not either expressly or tacitly warrant that the +Software does not infringe any third party intellectual property right +relating to a patent, software or any other property right. Therefore, +the Licensor disclaims any and all liability towards the Licensee +arising out of any or all proceedings for infringement that may be +instituted in respect of the use, modification and redistribution of the +Software. Nevertheless, should such proceedings be instituted against +the Licensee, the Licensor shall provide it with technical and legal +assistance for its defense. Such technical and legal assistance shall be +decided on a case-by-case basis between the relevant Licensor and the +Licensee pursuant to a memorandum of understanding. The Licensor +disclaims any and all liability as regards the Licensee's use of the +name of the Software. No warranty is given as regards the existence of +prior rights over the name of the Software or as regards the existence +of a trademark. + + + Article 10 - TERMINATION + +10.1 In the event of a breach by the Licensee of its obligations +hereunder, the Licensor may automatically terminate this Agreement +thirty (30) days after notice has been sent to the Licensee and has +remained ineffective. + +10.2 A Licensee whose Agreement is terminated shall no longer be +authorized to use, modify or distribute the Software. However, any +licenses that it may have granted prior to termination of the Agreement +shall remain valid subject to their having been granted in compliance +with the terms and conditions hereof. + + + Article 11 - MISCELLANEOUS + + + 11.1 EXCUSABLE EVENTS + +Neither Party shall be liable for any or all delay, or failure to +perform the Agreement, that may be attributable to an event of force +majeure, an act of God or an outside cause, such as defective +functioning or interruptions of the electricity or telecommunications +networks, network paralysis following a virus attack, intervention by +government authorities, natural disasters, water damage, earthquakes, +fire, explosions, strikes and labor unrest, war, etc. + +11.2 Any failure by either Party, on one or more occasions, to invoke +one or more of the provisions hereof, shall under no circumstances be +interpreted as being a waiver by the interested Party of its right to +invoke said provision(s) subsequently. + +11.3 The Agreement cancels and replaces any or all previous agreements, +whether written or oral, between the Parties and having the same +purpose, and constitutes the entirety of the agreement between said +Parties concerning said purpose. No supplement or modification to the +terms and conditions hereof shall be effective as between the Parties +unless it is made in writing and signed by their duly authorized +representatives. + +11.4 In the event that one or more of the provisions hereof were to +conflict with a current or future applicable act or legislative text, +said act or legislative text shall prevail, and the Parties shall make +the necessary amendments so as to comply with said act or legislative +text. All other provisions shall remain effective. Similarly, invalidity +of a provision of the Agreement, for any reason whatsoever, shall not +cause the Agreement as a whole to be invalid. + + + 11.5 LANGUAGE + +The Agreement is drafted in both French and English and both versions +are deemed authentic. + + + Article 12 - NEW VERSIONS OF THE AGREEMENT + +12.1 Any person is authorized to duplicate and distribute copies of this +Agreement. + +12.2 So as to ensure coherence, the wording of this Agreement is +protected and may only be modified by the authors of the License, who +reserve the right to periodically publish updates or new versions of the +Agreement, each with a separate number. These subsequent versions may +address new issues encountered by Free Software. + +12.3 Any Software distributed under a given version of the Agreement may +only be subsequently distributed under the same version of the Agreement +or a subsequent version, subject to the provisions of Article 5.3.4. + + + Article 13 - GOVERNING LAW AND JURISDICTION + +13.1 The Agreement is governed by French law. The Parties agree to +endeavor to seek an amicable solution to any disagreements or disputes +that may arise during the performance of the Agreement. + +13.2 Failing an amicable solution within two (2) months as from their +occurrence, and unless emergency proceedings are necessary, the +disagreements or disputes shall be referred to the Paris Courts having +jurisdiction, by the more diligent Party. + + +Version 2.0 dated 2006-09-05. + +------------------------------------------------------------------------------ + +CONTRAT DE LICENCE DE LOGICIEL LIBRE CeCILL + + + Avertissement + +Ce contrat est une licence de logiciel libre issue d'une concertation +entre ses auteurs afin que le respect de deux grands principes préside à +sa rédaction: + + * d'une part, le respect des principes de diffusion des logiciels + libres: accès au code source, droits étendus conférés aux + utilisateurs, + * d'autre part, la désignation d'un droit applicable, le droit + français, auquel elle est conforme, tant au regard du droit de la + responsabilité civile que du droit de la propriété intellectuelle + et de la protection qu'il offre aux auteurs et titulaires des + droits patrimoniaux sur un logiciel. + +Les auteurs de la licence CeCILL (pour Ce[a] C[nrs] I[nria] L[ogiciel] +L[ibre]) sont: + +Commissariat à l'Energie Atomique - CEA, établissement public de +recherche à caractère scientifique, technique et industriel, dont le +siège est situé 25 rue Leblanc, immeuble Le Ponant D, 75015 Paris. + +Centre National de la Recherche Scientifique - CNRS, établissement +public à caractère scientifique et technologique, dont le siège est +situé 3 rue Michel-Ange, 75794 Paris cedex 16. + +Institut National de Recherche en Informatique et en Automatique - +INRIA, établissement public à caractère scientifique et technologique, +dont le siège est situé Domaine de Voluceau, Rocquencourt, BP 105, 78153 +Le Chesnay cedex. + + + Préambule + +Ce contrat est une licence de logiciel libre dont l'objectif est de +conférer aux utilisateurs la liberté de modification et de +redistribution du logiciel régi par cette licence dans le cadre d'un +modèle de diffusion en logiciel libre. + +L'exercice de ces libertés est assorti de certains devoirs à la charge +des utilisateurs afin de préserver ce statut au cours des +redistributions ultérieures. + +L'accessibilité au code source et les droits de copie, de modification +et de redistribution qui en découlent ont pour contrepartie de n'offrir +aux utilisateurs qu'une garantie limitée et de ne faire peser sur +l'auteur du logiciel, le titulaire des droits patrimoniaux et les +concédants successifs qu'une responsabilité restreinte. + +A cet égard l'attention de l'utilisateur est attirée sur les risques +associés au chargement, à l'utilisation, à la modification et/ou au +développement et à la reproduction du logiciel par l'utilisateur étant +donné sa spécificité de logiciel libre, qui peut le rendre complexe à +manipuler et qui le réserve donc à des développeurs ou des +professionnels avertis possédant des connaissances informatiques +approfondies. Les utilisateurs sont donc invités à charger et tester +l'adéquation du logiciel à leurs besoins dans des conditions permettant +d'assurer la sécurité de leurs systèmes et/ou de leurs données et, plus +généralement, à l'utiliser et l'exploiter dans les mêmes conditions de +sécurité. Ce contrat peut être reproduit et diffusé librement, sous +réserve de le conserver en l'état, sans ajout ni suppression de clauses. + +Ce contrat est susceptible de s'appliquer à tout logiciel dont le +titulaire des droits patrimoniaux décide de soumettre l'exploitation aux +dispositions qu'il contient. + + + Article 1 - DEFINITIONS + +Dans ce contrat, les termes suivants, lorsqu'ils seront écrits avec une +lettre capitale, auront la signification suivante: + +Contrat: désigne le présent contrat de licence, ses éventuelles versions +postérieures et annexes. + +Logiciel: désigne le logiciel sous sa forme de Code Objet et/ou de Code +Source et le cas échéant sa documentation, dans leur état au moment de +l'acceptation du Contrat par le Licencié. + +Logiciel Initial: désigne le Logiciel sous sa forme de Code Source et +éventuellement de Code Objet et le cas échéant sa documentation, dans +leur état au moment de leur première diffusion sous les termes du Contrat. + +Logiciel Modifié: désigne le Logiciel modifié par au moins une +Contribution. + +Code Source: désigne l'ensemble des instructions et des lignes de +programme du Logiciel et auquel l'accès est nécessaire en vue de +modifier le Logiciel. + +Code Objet: désigne les fichiers binaires issus de la compilation du +Code Source. + +Titulaire: désigne le ou les détenteurs des droits patrimoniaux d'auteur +sur le Logiciel Initial. + +Licencié: désigne le ou les utilisateurs du Logiciel ayant accepté le +Contrat. + +Contributeur: désigne le Licencié auteur d'au moins une Contribution. + +Concédant: désigne le Titulaire ou toute personne physique ou morale +distribuant le Logiciel sous le Contrat. + +Contribution: désigne l'ensemble des modifications, corrections, +traductions, adaptations et/ou nouvelles fonctionnalités intégrées dans +le Logiciel par tout Contributeur, ainsi que tout Module Interne. + +Module: désigne un ensemble de fichiers sources y compris leur +documentation qui permet de réaliser des fonctionnalités ou services +supplémentaires à ceux fournis par le Logiciel. + +Module Externe: désigne tout Module, non dérivé du Logiciel, tel que ce +Module et le Logiciel s'exécutent dans des espaces d'adressage +différents, l'un appelant l'autre au moment de leur exécution. + +Module Interne: désigne tout Module lié au Logiciel de telle sorte +qu'ils s'exécutent dans le même espace d'adressage. + +GNU GPL: désigne la GNU General Public License dans sa version 2 ou +toute version ultérieure, telle que publiée par Free Software Foundation +Inc. + +Parties: désigne collectivement le Licencié et le Concédant. + +Ces termes s'entendent au singulier comme au pluriel. + + + Article 2 - OBJET + +Le Contrat a pour objet la concession par le Concédant au Licencié d'une +licence non exclusive, cessible et mondiale du Logiciel telle que +définie ci-après à l'article 5 pour toute la durée de protection des droits +portant sur ce Logiciel. + + + Article 3 - ACCEPTATION + +3.1 L'acceptation par le Licencié des termes du Contrat est réputée +acquise du fait du premier des faits suivants: + + * (i) le chargement du Logiciel par tout moyen notamment par + téléchargement à partir d'un serveur distant ou par chargement à + partir d'un support physique; + * (ii) le premier exercice par le Licencié de l'un quelconque des + droits concédés par le Contrat. + +3.2 Un exemplaire du Contrat, contenant notamment un avertissement +relatif aux spécificités du Logiciel, à la restriction de garantie et à +la limitation à un usage par des utilisateurs expérimentés a été mis à +disposition du Licencié préalablement à son acceptation telle que +définie à l'article 3.1 ci dessus et le Licencié reconnaît en avoir pris +connaissance. + + + Article 4 - ENTREE EN VIGUEUR ET DUREE + + + 4.1 ENTREE EN VIGUEUR + +Le Contrat entre en vigueur à la date de son acceptation par le Licencié +telle que définie en 3.1. + + + 4.2 DUREE + +Le Contrat produira ses effets pendant toute la durée légale de +protection des droits patrimoniaux portant sur le Logiciel. + + + Article 5 - ETENDUE DES DROITS CONCEDES + +Le Concédant concède au Licencié, qui accepte, les droits suivants sur +le Logiciel pour toutes destinations et pour la durée du Contrat dans +les conditions ci-après détaillées. + +Par ailleurs, si le Concédant détient ou venait à détenir un ou +plusieurs brevets d'invention protégeant tout ou partie des +fonctionnalités du Logiciel ou de ses composants, il s'engage à ne pas +opposer les éventuels droits conférés par ces brevets aux Licenciés +successifs qui utiliseraient, exploiteraient ou modifieraient le +Logiciel. En cas de cession de ces brevets, le Concédant s'engage à +faire reprendre les obligations du présent alinéa aux cessionnaires. + + + 5.1 DROIT D'UTILISATION + +Le Licencié est autorisé à utiliser le Logiciel, sans restriction quant +aux domaines d'application, étant ci-après précisé que cela comporte: + + 1. la reproduction permanente ou provisoire du Logiciel en tout ou + partie par tout moyen et sous toute forme. + + 2. le chargement, l'affichage, l'exécution, ou le stockage du + Logiciel sur tout support. + + 3. la possibilité d'en observer, d'en étudier, ou d'en tester le + fonctionnement afin de déterminer les idées et principes qui sont + à la base de n'importe quel élément de ce Logiciel; et ceci, + lorsque le Licencié effectue toute opération de chargement, + d'affichage, d'exécution, de transmission ou de stockage du + Logiciel qu'il est en droit d'effectuer en vertu du Contrat. + + + 5.2 DROIT D'APPORTER DES CONTRIBUTIONS + +Le droit d'apporter des Contributions comporte le droit de traduire, +d'adapter, d'arranger ou d'apporter toute autre modification au Logiciel +et le droit de reproduire le logiciel en résultant. + +Le Licencié est autorisé à apporter toute Contribution au Logiciel sous +réserve de mentionner, de façon explicite, son nom en tant qu'auteur de +cette Contribution et la date de création de celle-ci. + + + 5.3 DROIT DE DISTRIBUTION + +Le droit de distribution comporte notamment le droit de diffuser, de +transmettre et de communiquer le Logiciel au public sur tout support et +par tout moyen ainsi que le droit de mettre sur le marché à titre +onéreux ou gratuit, un ou des exemplaires du Logiciel par tout procédé. + +Le Licencié est autorisé à distribuer des copies du Logiciel, modifié ou +non, à des tiers dans les conditions ci-après détaillées. + + + 5.3.1 DISTRIBUTION DU LOGICIEL SANS MODIFICATION + +Le Licencié est autorisé à distribuer des copies conformes du Logiciel, +sous forme de Code Source ou de Code Objet, à condition que cette +distribution respecte les dispositions du Contrat dans leur totalité et +soit accompagnée: + + 1. d'un exemplaire du Contrat, + + 2. d'un avertissement relatif à la restriction de garantie et de + responsabilité du Concédant telle que prévue aux articles 8 + et 9, + +et que, dans le cas où seul le Code Objet du Logiciel est redistribué, +le Licencié permette aux futurs Licenciés d'accéder facilement au Code +Source complet du Logiciel en indiquant les modalités d'accès, étant +entendu que le coût additionnel d'acquisition du Code Source ne devra +pas excéder le simple coût de transfert des données. + + + 5.3.2 DISTRIBUTION DU LOGICIEL MODIFIE + +Lorsque le Licencié apporte une Contribution au Logiciel, les conditions +de distribution du Logiciel Modifié en résultant sont alors soumises à +l'intégralité des dispositions du Contrat. + +Le Licencié est autorisé à distribuer le Logiciel Modifié, sous forme de +code source ou de code objet, à condition que cette distribution +respecte les dispositions du Contrat dans leur totalité et soit +accompagnée: + + 1. d'un exemplaire du Contrat, + + 2. d'un avertissement relatif à la restriction de garantie et de + responsabilité du Concédant telle que prévue aux articles 8 + et 9, + +et que, dans le cas où seul le code objet du Logiciel Modifié est +redistribué, le Licencié permette aux futurs Licenciés d'accéder +facilement au code source complet du Logiciel Modifié en indiquant les +modalités d'accès, étant entendu que le coût additionnel d'acquisition +du code source ne devra pas excéder le simple coût de transfert des données. + + + 5.3.3 DISTRIBUTION DES MODULES EXTERNES + +Lorsque le Licencié a développé un Module Externe les conditions du +Contrat ne s'appliquent pas à ce Module Externe, qui peut être distribué +sous un contrat de licence différent. + + + 5.3.4 COMPATIBILITE AVEC LA LICENCE GNU GPL + +Le Licencié peut inclure un code soumis aux dispositions d'une des +versions de la licence GNU GPL dans le Logiciel modifié ou non et +distribuer l'ensemble sous les conditions de la même version de la +licence GNU GPL. + +Le Licencié peut inclure le Logiciel modifié ou non dans un code soumis +aux dispositions d'une des versions de la licence GNU GPL et distribuer +l'ensemble sous les conditions de la même version de la licence GNU GPL. + + + Article 6 - PROPRIETE INTELLECTUELLE + + + 6.1 SUR LE LOGICIEL INITIAL + +Le Titulaire est détenteur des droits patrimoniaux sur le Logiciel +Initial. Toute utilisation du Logiciel Initial est soumise au respect +des conditions dans lesquelles le Titulaire a choisi de diffuser son +oeuvre et nul autre n'a la faculté de modifier les conditions de +diffusion de ce Logiciel Initial. + +Le Titulaire s'engage à ce que le Logiciel Initial reste au moins régi +par le Contrat et ce, pour la durée visée à l'article 4.2. + + + 6.2 SUR LES CONTRIBUTIONS + +Le Licencié qui a développé une Contribution est titulaire sur celle-ci +des droits de propriété intellectuelle dans les conditions définies par +la législation applicable. + + + 6.3 SUR LES MODULES EXTERNES + +Le Licencié qui a développé un Module Externe est titulaire sur celui-ci +des droits de propriété intellectuelle dans les conditions définies par +la législation applicable et reste libre du choix du contrat régissant +sa diffusion. + + + 6.4 DISPOSITIONS COMMUNES + +Le Licencié s'engage expressément: + + 1. à ne pas supprimer ou modifier de quelque manière que ce soit les + mentions de propriété intellectuelle apposées sur le Logiciel; + + 2. à reproduire à l'identique lesdites mentions de propriété + intellectuelle sur les copies du Logiciel modifié ou non. + +Le Licencié s'engage à ne pas porter atteinte, directement ou +indirectement, aux droits de propriété intellectuelle du Titulaire et/ou +des Contributeurs sur le Logiciel et à prendre, le cas échéant, à +l'égard de son personnel toutes les mesures nécessaires pour assurer le +respect des dits droits de propriété intellectuelle du Titulaire et/ou +des Contributeurs. + + + Article 7 - SERVICES ASSOCIES + +7.1 Le Contrat n'oblige en aucun cas le Concédant à la réalisation de +prestations d'assistance technique ou de maintenance du Logiciel. + +Cependant le Concédant reste libre de proposer ce type de services. Les +termes et conditions d'une telle assistance technique et/ou d'une telle +maintenance seront alors déterminés dans un acte séparé. Ces actes de +maintenance et/ou assistance technique n'engageront que la seule +responsabilité du Concédant qui les propose. + +7.2 De même, tout Concédant est libre de proposer, sous sa seule +responsabilité, à ses licenciés une garantie, qui n'engagera que lui, +lors de la redistribution du Logiciel et/ou du Logiciel Modifié et ce, +dans les conditions qu'il souhaite. Cette garantie et les modalités +financières de son application feront l'objet d'un acte séparé entre le +Concédant et le Licencié. + + + Article 8 - RESPONSABILITE + +8.1 Sous réserve des dispositions de l'article 8.2, le Licencié a la +faculté, sous réserve de prouver la faute du Concédant concerné, de +solliciter la réparation du préjudice direct qu'il subirait du fait du +Logiciel et dont il apportera la preuve. + +8.2 La responsabilité du Concédant est limitée aux engagements pris en +application du Contrat et ne saurait être engagée en raison notamment: +(i) des dommages dus à l'inexécution, totale ou partielle, de ses +obligations par le Licencié, (ii) des dommages directs ou indirects +découlant de l'utilisation ou des performances du Logiciel subis par le +Licencié et (iii) plus généralement d'un quelconque dommage indirect. En +particulier, les Parties conviennent expressément que tout préjudice +financier ou commercial (par exemple perte de données, perte de +bénéfices, perte d'exploitation, perte de clientèle ou de commandes, +manque à gagner, trouble commercial quelconque) ou toute action dirigée +contre le Licencié par un tiers, constitue un dommage indirect et +n'ouvre pas droit à réparation par le Concédant. + + + Article 9 - GARANTIE + +9.1 Le Licencié reconnaît que l'état actuel des connaissances +scientifiques et techniques au moment de la mise en circulation du +Logiciel ne permet pas d'en tester et d'en vérifier toutes les +utilisations ni de détecter l'existence d'éventuels défauts. L'attention +du Licencié a été attirée sur ce point sur les risques associés au +chargement, à l'utilisation, la modification et/ou au développement et à +la reproduction du Logiciel qui sont réservés à des utilisateurs avertis. + +Il relève de la responsabilité du Licencié de contrôler, par tous +moyens, l'adéquation du produit à ses besoins, son bon fonctionnement et +de s'assurer qu'il ne causera pas de dommages aux personnes et aux biens. + +9.2 Le Concédant déclare de bonne foi être en droit de concéder +l'ensemble des droits attachés au Logiciel (comprenant notamment les +droits visés à l'article 5). + +9.3 Le Licencié reconnaît que le Logiciel est fourni "en l'état" par le +Concédant sans autre garantie, expresse ou tacite, que celle prévue à +l'article 9.2 et notamment sans aucune garantie sur sa valeur commerciale, +son caractère sécurisé, innovant ou pertinent. + +En particulier, le Concédant ne garantit pas que le Logiciel est exempt +d'erreur, qu'il fonctionnera sans interruption, qu'il sera compatible +avec l'équipement du Licencié et sa configuration logicielle ni qu'il +remplira les besoins du Licencié. + +9.4 Le Concédant ne garantit pas, de manière expresse ou tacite, que le +Logiciel ne porte pas atteinte à un quelconque droit de propriété +intellectuelle d'un tiers portant sur un brevet, un logiciel ou sur tout +autre droit de propriété. Ainsi, le Concédant exclut toute garantie au +profit du Licencié contre les actions en contrefaçon qui pourraient être +diligentées au titre de l'utilisation, de la modification, et de la +redistribution du Logiciel. Néanmoins, si de telles actions sont +exercées contre le Licencié, le Concédant lui apportera son aide +technique et juridique pour sa défense. Cette aide technique et +juridique est déterminée au cas par cas entre le Concédant concerné et +le Licencié dans le cadre d'un protocole d'accord. Le Concédant dégage +toute responsabilité quant à l'utilisation de la dénomination du +Logiciel par le Licencié. Aucune garantie n'est apportée quant à +l'existence de droits antérieurs sur le nom du Logiciel et sur +l'existence d'une marque. + + + Article 10 - RESILIATION + +10.1 En cas de manquement par le Licencié aux obligations mises à sa +charge par le Contrat, le Concédant pourra résilier de plein droit le +Contrat trente (30) jours après notification adressée au Licencié et +restée sans effet. + +10.2 Le Licencié dont le Contrat est résilié n'est plus autorisé à +utiliser, modifier ou distribuer le Logiciel. Cependant, toutes les +licences qu'il aura concédées antérieurement à la résiliation du Contrat +resteront valides sous réserve qu'elles aient été effectuées en +conformité avec le Contrat. + + + Article 11 - DISPOSITIONS DIVERSES + + + 11.1 CAUSE EXTERIEURE + +Aucune des Parties ne sera responsable d'un retard ou d'une défaillance +d'exécution du Contrat qui serait dû à un cas de force majeure, un cas +fortuit ou une cause extérieure, telle que, notamment, le mauvais +fonctionnement ou les interruptions du réseau électrique ou de +télécommunication, la paralysie du réseau liée à une attaque +informatique, l'intervention des autorités gouvernementales, les +catastrophes naturelles, les dégâts des eaux, les tremblements de terre, +le feu, les explosions, les grèves et les conflits sociaux, l'état de +guerre... + +11.2 Le fait, par l'une ou l'autre des Parties, d'omettre en une ou +plusieurs occasions de se prévaloir d'une ou plusieurs dispositions du +Contrat, ne pourra en aucun cas impliquer renonciation par la Partie +intéressée à s'en prévaloir ultérieurement. + +11.3 Le Contrat annule et remplace toute convention antérieure, écrite +ou orale, entre les Parties sur le même objet et constitue l'accord +entier entre les Parties sur cet objet. Aucune addition ou modification +aux termes du Contrat n'aura d'effet à l'égard des Parties à moins +d'être faite par écrit et signée par leurs représentants dûment habilités. + +11.4 Dans l'hypothèse où une ou plusieurs des dispositions du Contrat +s'avèrerait contraire à une loi ou à un texte applicable, existants ou +futurs, cette loi ou ce texte prévaudrait, et les Parties feraient les +amendements nécessaires pour se conformer à cette loi ou à ce texte. +Toutes les autres dispositions resteront en vigueur. De même, la +nullité, pour quelque raison que ce soit, d'une des dispositions du +Contrat ne saurait entraîner la nullité de l'ensemble du Contrat. + + + 11.5 LANGUE + +Le Contrat est rédigé en langue française et en langue anglaise, ces +deux versions faisant également foi. + + + Article 12 - NOUVELLES VERSIONS DU CONTRAT + +12.1 Toute personne est autorisée à copier et distribuer des copies de +ce Contrat. + +12.2 Afin d'en préserver la cohérence, le texte du Contrat est protégé +et ne peut être modifié que par les auteurs de la licence, lesquels se +réservent le droit de publier périodiquement des mises à jour ou de +nouvelles versions du Contrat, qui posséderont chacune un numéro +distinct. Ces versions ultérieures seront susceptibles de prendre en +compte de nouvelles problématiques rencontrées par les logiciels libres. + +12.3 Tout Logiciel diffusé sous une version donnée du Contrat ne pourra +faire l'objet d'une diffusion ultérieure que sous la même version du +Contrat ou une version postérieure, sous réserve des dispositions de +l'article 5.3.4. + + + Article 13 - LOI APPLICABLE ET COMPETENCE TERRITORIALE + +13.1 Le Contrat est régi par la loi française. Les Parties conviennent +de tenter de régler à l'amiable les différends ou litiges qui +viendraient à se produire par suite ou à l'occasion du Contrat. + +13.2 A défaut d'accord amiable dans un délai de deux (2) mois à compter +de leur survenance et sauf situation relevant d'une procédure d'urgence, +les différends ou litiges seront portés par la Partie la plus diligente +devant les Tribunaux compétents de Paris. + + +Version 2.0 du 2006-09-05. + diff --git a/branches/paradiseo-ix86-2.0/README b/branches/paradiseo-ix86-2.0/README new file mode 100644 index 000000000..2b0f670e1 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/README @@ -0,0 +1,125 @@ + +========================================================================================== + BUILDING PARADISEO FULL PACKAGE +========================================================================================== +The basic installation procedure must be done in the directory +which contains the extracted archive. + + --> Example : source installParadiseo.sh + +Please try source installParadiseo.sh --help for further information + +========================================================================================== + DIRECTORY STRUCTURE +========================================================================================== +After unpacking the archive file, you should end up with the following +structure: + +.../ Installation directory (specified with ./installParadiseo.sh) + | + | + +-- AUTHORS Author list + | + | + +-- INSTALL + | + | + +-- install.cmake ParadisEO main install config file + | + | + +-- installParadiseo.sh Install script + | + +-- lib/ + | | +-- /libxml2-2.6.0.tar.bz2 LIBXML2 archive (required for ParadisEO) + | | +-- /mpich2-1.0.3.tar.gz MPICH2 archive (required for ParadisEO) + | + | + + LICENSE Licence contents + | + | + +-- paradiseo-eo paradiseo-eo dir + | + | + +-- paradiseo-mo paradiseo-mo dir + | + | + +-- paradiseo-moeo paradiseo-moeo dir + | + | + +-- paradiseo-peo paradiseo-peo dir + | + +-- README README file + | + | + +-- .mpd.conf Paradiseo-peo config file + + +========================================================================================== + DIRECTORY STRUCTURE AFTER INSTALLATION +========================================================================================== +After running the script "installParadiseo.sh" and if the process is successful, +you should have the following structure : + +.../ Installation directory (specified with ./installParadiseo.sh) + | + | + +-- AUTHORS Author list + | + | + +-- install.cmake ParadisEO main install config file + | + | + +-- installParadiseo.sh Install script + | + | + +-- INSTALL + | + | + +-- lib/ + | | +-- /libxml2-2.6.0.tar.bz2 LIBXML2 archive (required for ParadisEO-PEO) + | | +-- /mpich2-1.0.3.tar.gz MPICH2 archive (required for ParadisEO-PEO) + | + +-- libxml2 Libxml2 install directory (required for ParadisEO-PEO) + | + + LICENSE Licence contents + | + | + +-- mpich2 Mpich2 install directory (required for ParadisEO-PEO) + | + | + +-- paradiseo-eo paradiseo-eo dir + | + | + +-- paradiseo-mo paradiseo-mo dir + | + | + +-- paradiseo-moeo paradiseo-moeo dir + | + | + +-- paradiseo-peo paradiseo-peo dir + | + +-- README README file + | + | + +-- .mpd.conf Paradiseo-peo config file + + +========================================================================================== + NOTES +========================================================================================== + +ParadisEO uses EO, a templates-based, ANSI-C++ compliant evolutionary computation library. +It contains classes for almost any kind of evolutionary computation you might come up to - at +least for the ones we could think of. +EO Website: http://eodev.sourceforge.net/. +EO is distributed under the GNU Lesser General Public License: http://www.gnu.org/copyleft/lesser.html + + +Please read README file of each extracted directory if you have +problems for the installation. + +========================================================================================== + CONTACT +========================================================================================== +For further information about ParadisEO, help or to report any +problem : paradiseo-help@lists.gforge.inria.fr diff --git a/branches/paradiseo-ix86-2.0/install.cmake b/branches/paradiseo-ix86-2.0/install.cmake new file mode 100644 index 000000000..8be5da3c3 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/install.cmake @@ -0,0 +1,18 @@ + +########################################################################################################################################## +### ParadisEO Install Configuration +### The path to the modules EO and MO must be specified above. +########################################################################################################################################## + +SET(EO_SRC_DIR "${CMAKE_SOURCE_DIR}/../paradiseo-eo" CACHE PATH "ParadisEO-EO source directory" FORCE) +SET(EO_BIN_DIR "${CMAKE_BINARY_DIR}/../../paradiseo-eo/build" CACHE PATH "ParadisEO-EO binary directory" FORCE) + +SET(MO_SRC_DIR "${CMAKE_SOURCE_DIR}/../paradiseo-mo" CACHE PATH "ParadisMO-MO source directory" FORCE) +SET(MO_BIN_DIR "${CMAKE_BINARY_DIR}/../../paradiseo-mo/build" CACHE PATH "ParadisMO-MO binary directory" FORCE) + +SET(MOEO_SRC_DIR "${CMAKE_SOURCE_DIR}/../paradiseo-moeo" CACHE PATH "ParadisMOEO-MOEO source directory" FORCE) +SET(MOEO_BIN_DIR "${CMAKE_BINARY_DIR}/../../paradiseo-moeo/build" CACHE PATH "ParadisMOEO-MOEO binary directory" FORCE) + +########################################################################################################################################### + + diff --git a/branches/paradiseo-ix86-2.0/installParadiseo.sh b/branches/paradiseo-ix86-2.0/installParadiseo.sh new file mode 100755 index 000000000..a386fa607 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/installParadiseo.sh @@ -0,0 +1,1161 @@ +#!/bin/sh + +######################################################################################### +# +# Project : paradisEO full package install +# File : installParadiseo.sh +# Comment : # This file attempts to install ParadisEO # +# +######################################################################################### + +# global variables +installStartTime=$SECONDS +resourceKitPath=$PWD +TAR_MSG=" " +DIE=0 +PROG=ParadisEO +CMAKE_PRIMARY_CONFIG_FILE=install.cmake + +# generator types available on Unix platforms +P_UNIX_MAKEFILES=1 +P_KDEVELOP3_PROJECT=2 +G_UNIX_MAKEFILES="Unix Makefiles" +G_KDEVELOP3_PROJECT="KDevelop3" + +# should we compile ParadisEO ? +COMPILE_PARADISEO=1 + +# install types to select in the main menu +P_FULL_INSTALL=1 +P_BASIC_INSTALL=2 +P_PARALLEL_INSTALL=3 +P_RM_PREVIOUS_INSTALLL=4 +P_EXIT_INSTALL=5 + +IS_MPICH_INSTALLED=1 +IS_LIBXML2_INSTALLED=1 +USE_EXISTING_MPICH=-1 +USE_EXISTING_LIBXML2=-1 + +# install steps +S_INTRODUCTION=1000 +S_UNPACK_EO=1001 +S_UNPACK_LIBXML=1002 +S_UNPACK_MPICH=1003 +S_INSTALL_EO=1004 +S_INSTALL_MO=1005 +S_INSTALL_MOEO=1006 +S_INSTALL_LIBXML=1007 +S_INSTALL_MPICH=1008 +S_INSTALL_PEO=1009 +S_REMOVE_TEMP_LIBXML=1010 +S_REMOVE_TEMP_MPICH=1011 +S_CONFIGURE_ENV=1012 +S_CONFIGURE_MPD=1013 +S_PEO_CHECK=1014 +S_REMOVE_INSTALL=1015 +S_END=1016 + +#### define what are the possible installs and their content + +# full install +FULL_INSTALL="$S_INTRODUCTION $S_UNPACK_LIBXML $S_UNPACK_MPICH $S_INSTALL_EO $S_INSTALL_MO $S_INSTALL_MOEO $S_INSTALL_LIBXML $S_REMOVE_TEMP_LIBXML $S_INSTALL_MPICH $S_REMOVE_TEMP_MPICH $S_CONFIGURE_ENV $S_INSTALL_PEO $S_CONFIGURE_MPD $S_END" + +FULL_INSTALL_WITHOUT_LIBXML2="$S_INTRODUCTION $S_UNPACK_MPICH $S_INSTALL_EO $S_INSTALL_MO $S_INSTALL_MOEO $S_INSTALL_MPICH $S_REMOVE_TEMP_MPICH $S_CONFIGURE_MPICH_ENV $S_INSTALL_PEO $S_CONFIGURE_MPD $S_END" + +FULL_INSTALL_WITHOUT_MPICH2="$S_INTRODUCTION $S_UNPACK_LIBXML $S_INSTALL_EO $S_INSTALL_MO $S_INSTALL_MOEO $S_INSTALL_LIBXML $S_REMOVE_TEMP_LIBXML $S_CONFIGURE_LIBXML2_ENV $S_INSTALL_PEO $S_CONFIGURE_MPD $S_END" + +FULL_INSTALL_WITHOUT_LIBXML2_MPICH2="$S_INTRODUCTION $S_INSTALL_EO $S_INSTALL_MO $S_INSTALL_MOEO $S_INSTALL_PEO $S_CONFIGURE_MPD $S_END" + +# basic install +BASIC_INSTALL="$S_INTRODUCTION $S_INSTALL_EO $S_INSTALL_MO $S_INSTALL_MOEO $S_END" + +# install only paradiseo-peo +PARALLEL_INSTALL="$S_PEO_CHECK $S_INTRODUCTION $S_UNPACK_LIBXML $S_INSTALL_LIBXML $S_REMOVE_TEMP_LIBXML $S_UNPACK_MPICH $S_INSTALL_MPICH $S_REMOVE_TEMP_MPICH $S_CONFIGURE_ENV $S_INSTALL_PEO $S_CONFIGURE_MPD $S_END" + +PARALLEL_INSTALL_WITHOUT_LIBXML2="$S_PEO_CHECK $S_INTRODUCTION $S_UNPACK_MPICH $S_INSTALL_MPICH $S_REMOVE_TEMP_MPICH $S_CONFIGURE_MPICH_ENV $S_INSTALL_PEO $S_CONFIGURE_MPD $S_END" + +PARALLEL_INSTALL_WITHOUT_MPICH2="$S_PEO_CHECK $S_INTRODUCTION $S_UNPACK_LIBXML $S_INSTALL_LIBXML $S_REMOVE_TEMP_LIBXML $S_CONFIGURE_LIBXML2_ENV $S_INSTALL_PEO $S_CONFIGURE_MPD $S_END" + +PARALLEL_INSTALL_WITHOUT_LIBXML2_MPICH2="$S_PEO_CHECK $S_INTRODUCTION $S_INSTALL_PEO $S_CONFIGURE_MPD $S_END" + +# remove a previous install +RM_PREVIOUS_INSTALL="$S_REMOVE_INSTALL" + +#others +LIBS_PATH=lib +LIBXML2_ARCHIVE=libxml2-2.6.0 +LIBXML2_ARCHIVE_SUFFIX=.tar.bz2 +MPICH2_ARCHIVE=mpich2-1.0.3 +MPICH2_ARCHIVE_SUFFIX=.tar.gz +# errors +SUCCESSFUL_STEP=0 +EO_UNPACKING_ERROR=100 +LIBXML_UNPACKING_ERROR=104 +MPICH_UNPACKING_ERROR=105 +EO_INSTALL_ERROR=106 +MO_INSTALL_ERROR=107 +MOEO_INSTALL_ERROR=108 +PARADISEO_INSTALL_ERROR=110 +LIBXML_INSTALL_ERROR=111 +MPICH_INSTALL_ERROR=112 +REMOVE_TEMP_DIRECTORY_ERROR=113 +VAR_CONFIG_ERROR=114 +MPD_COPY_ERROR=115 +LIBXML_INSTALL_ERROR=116 +MPICH_INSTALL_ERROR=117 +PEO_CHECK_ERROR=118 +RM_PARADISEO_EO_ERROR=119 +RM_UTIL_ERROR=120 +BASIC_INSTALL_MISSING_ERROR=121 + +#Date +DATE=`/bin/date '+%Y%m%d%H%M%S'` +# create log file +SPY=$PWD/install-paradiseo.${DATE}.log + +#------------------------------------------------------# +#-- FUNCTION : execute_cmd ---# +#------------------------------------------------------# +#-- PARAMETERS : ---# +#-- $1 : cmd line ---# +#-- $2 : comment ---# +#-- $3 : spy file ---# +#-- $4 : output std file ---# +#-- $5 : error log file ---# +#-- ---# +#------------------------------------------------------# +#-- CODE RETURN : 0 : OK ---# +#-- CODE RETURN : 1 : NOK ---# +#------------------------------------------------------# +function execute_cmd +{ + COMMAND=${1} + COMMENT=${2} + FIC_ESP=${3} + FIC_OUT=${4} + FIC_ERR=${5} + + if [ `echo ${FIC_OUT} | wc -c` -eq 1 ] + then + FIC_OUT=${FIC_ESP} + fi + + if [ `echo ${FIC_ERR} | wc -c` -eq 1 ] + then + FIC_ERR=${FIC_ESP} + fi + + echo "" >> ${FIC_ESP} + echo "[execute_cmd][Begin][`/bin/date +%H:%M:%S`]" >> ${FIC_ESP} + + echo "------------------------------------------------------------------------------------------------------------" >> ${FIC_ESP} + echo "${COMMENT}" >> ${FIC_ESP} + echo "------------------------------------------------------------------------------------------------------------" >> ${FIC_ESP} + echo "${COMMAND}" >> ${FIC_ESP} + + ${COMMAND} >> ${FIC_OUT} 2>> ${FIC_ERR} + + RETURN_CODE=$? + echo "RETURN_CODE : ${RETURN_CODE}" >> ${FIC_ESP} + + if [ ${RETURN_CODE} -eq 0 ] + then + echo " ${COMMENT} OK" >> ${FIC_ESP} + echo "[execute_cmd][End][`/bin/date +%H:%M:%S`]" >> ${FIC_ESP} + return 0 + else + echo " $ERROR_TAG ${COMMENT} NOK" >> ${FIC_ESP} + return 1 + fi +} + + + +#------------------------------------------------------# +#-- FUNCTION : on_error ---# +#------------------------------------------------------# +#-- PARAMETERS : ---# +#-- Error number ---# +#------------------------------------------------------# +#-- RETURN: ---# +#------------------------------------------------------# +function on_error() +{ + case $1 in + $LIBXML_UNPACKING_ERROR) + echo + echo " An error has occured : impossible to unpack libxml2 archive.See $SPY for more details" + echo " Make sure that libxml2 archive exists in current directory" + echo + echo " => To report any problem or for help, please contact paradiseo-help@lists.gforge.inria.fr and join $SPY" + echo + kill $$;; + + + $EDIT_BASH_VARIABLES) + echo + echo " " + + kill $$;; + + + $MPICH_UNPACKING_ERROR) + echo + echo " An error has occured : impossible to unpack mpich2 archive.See $SPY for more details" + echo " Make sure that mpich2 archive exists in current directory" + echo + echo " => To report any problem or for help, please contact paradiseo-help@lists.gforge.inria.fr and join $SPY" + echo ;; + + $EO_INSTALL_ERROR) + echo + echo " An error has occured : impossible to install Paradiseo-EO.See $SPY for more details" + echo "If you need help, please contact paradiseo-help@lists.gforge.inria.fr and join $SPY" + echo + echo + kill $$;; + + $MO_INSTALL_ERROR) + echo + echo " An error has occured : impossible to install Paradiseo-MO.See $SPY for more details" + echo " => To report any problem or for help, please contact paradiseo-help@lists.gforge.inria.fr and join $SPY" + echo + kill $$;; + + $MOEO_INSTALL_ERROR) + echo + echo " An error has occured : impossible to install Paradiseo-MOEO.See $SPY for more details" + echo " => To report any problem or for help, please contact paradiseo-help@lists.gforge.inria.fr and join $SPY" + echo + kill $$;; + + $PARADISEO_INSTALL_ERROR) + echo + echo " An error has occured : impossible to install Paradiseo-PEO.See $SPY for more details" + echo ' Make sure you have the required variables in your environment (ex: by using "echo $PATH" for PATH variable) : ' + echo ' -LD_LIBRARY_PATH=/libxml2/lib:$LD_LIBRARY_PATH' + echo ' -PATH=/libxml2/bin:/mpich2/bin:$PATH' + echo + echo " => To report any problem or for help, please contact paradiseo-help@lists.gforge.inria.fr and join $SPY" + echo + kill $$;; + + $LIBXML_INSTALL_ERROR) + echo + echo " An error has occured : impossible to install libxml2. See $SPY for more details" + echo " => To report any problem or for help, please contact paradiseo-help@lists.gforge.inria.fr and join $SPY" + echo + kill $$;; + + $MPICH_INSTALL_ERROR) + echo + echo " An error has occured : impossible to install mpich2 See $SPY for more details" + echo " => To report any problem or for help, please contact paradiseo-help@lists.gforge.inria.fr and join $SPY" + echo + kill $$;; + + $PEO_CHECK_ERROR) + echo + echo " If you want to install ParadisEO-PEO, you should remove the old directories of libxml2 or mpich2 or choose another location." + echo + kill $$;; + + $RM_PARADISEO_EO_ERROR) + echo + echo " An error has occured : impossible to remove ParadisEO-EO. See $SPY for more details" + echo " You may not have a previous ParadisEO install available in the current directory" + echo " => To report any problem or for help, please contact paradiseo-help@lists.gforge.inria.fr and join $SPY" + echo + kill $$;; + + $RM_UTIL_ERROR) + echo + echo " An error has occured : impossible to remove the previous install of mpich2 and libxml2. See $SPY for more details" + echo " You may not have a previous ParadisEO install available in the current directory" + echo " => To report any problem or for help, please contact paradiseo-help@lists.gforge.inria.fr and join $SPY" + echo + kill $$;; + + $BASIC_INSTALL_MISSING_ERROR) + echo + echo " An error has occured : impossible to find the basic install of ParadisEO. See $SPY for more details" + echo " You may not have a basic ParadisEO install available in the current directory" + echo " => To report any problem or for help, please contact paradiseo-help@lists.gforge.inria.fr and join $SPY" + echo + kill $$;; + + $SUCCESSFUL_STEP) + ;; + *) + echo + ;; + esac +} + +#------------------------------------------------------# +#-- FUNCTION : run_install_step ---# +#------------------------------------------------------# +#-- PARAMETERS : ---# +#-- install path ---# +#-- step to launch (0,1 ...) ---# +#-- counter for loop ---# +#-- Major function for install ---# +#------------------------------------------------------# +#-- RETURN: 0 if install OK ---# +#------------------------------------------------------# + +function run_install_step() +{ + installKitPath=$1 + stepToRun=$2 + currentStepCounter=$3 + + RETURN=0 + + case "$stepToRun" in + $S_INTRODUCTION) + ########## Introduction ######### + clear + echo "" + echo -e ' \033[40m\033[1;33m### ParadisEO install starting .... ### \033[0m ' + echo + echo "Installing the environment for ParadisEO...Note that the librairies \"libxml2\" ans \"mpich2\" required for ParadisEO are provided with this package." + sleep 3 + + echo + echo + return $SUCCESSFUL_STEP + ;; + + $S_UNPACK_EO) + ########## unpacking paradiseo-eo ########## + echo -e " \033[40m\033[1;34m# STEP $currentStepCounter \033[0m " + echo ' --> Unpacking Paradiseo-EO (Evolving Objects) ...' + + execute_cmd "tar xvf $resourceKitPath/$LIBS_PATH/$PARADISEO_EO_ARCHIVE --directory $installKitPath" "[$currentStepCounter] Unpack Paradiseo-EO" $SPY + if [ ! "$?" = "0" ] + then + echo '' + echo " --> Error when unpacking Paradiseo-EO" + echo -e ' \033[40m\033[1;33m### END ### \033[0m ' + return $EO_UNPACKING_ERROR + else + echo -e " \033[40m\033[1;34m# STEP $currentStepCounter OK \033[0m" + echo + return $SUCCESSFUL_STEP + fi + ;; + + $S_UNPACK_LIBXML) + ########## unpacking libxml2 ########## + echo -e " \033[40m\033[1;34m# STEP $currentStepCounter \033[0m " + echo ' --> Unpacking libxml2 (required for ParadisEO) ...' + + execute_cmd "rm -Rf $installKitPath/$LIBXML2_ARCHIVE_SUFFIX" "[$currentStepCounter-1] Remove potential existing dir $installKitPath/$LIBXML2_ARCHIVE" $SPY + RETURN=$? + + execute_cmd "tar xvjf $resourceKitPath/$LIBS_PATH/$LIBXML2_ARCHIVE$LIBXML2_ARCHIVE_SUFFIX --directory $installKitPath" "[$currentStepCounter-2] Unpack Libxml2" $SPY + if [ ! "$?" = "0" ] + then + echo '' + echo " --> Error when unpacking libxml2" + echo -e ' \033[40m\033[1;33m### END ### \033[0m ' + return $LIBXML_UNPACKING_ERROR + else + echo -e " \033[40m\033[1;34m# STEP $currentStepCounter OK \033[0m" + echo + return $SUCCESSFUL_STEP + fi + ;; + + $S_UNPACK_MPICH) + ########## unpacking mpich2 ########## + echo -e " \033[40m\033[1;34m# STEP $currentStepCounter \033[0m " + echo ' --> Unpacking mpich2 (required for ParadisEO) ...' + + execute_cmd "rm -Rf $installKitPath/$MPICH2_ARCHIVE" "[$currentStepCounter-1] Remove potential existing dir $installKitPath/$MPICH2_ARCHIVE" $SPY + RETURN=$? + + execute_cmd "tar xzvf $resourceKitPath/$LIBS_PATH/$MPICH2_ARCHIVE$MPICH2_ARCHIVE_SUFFIX --directory $installKitPath" "[$currentStepCounter-2] Unpack Mpich2" $SPY + if [ ! "$?" = "0" ] + then + echo '' + echo " --> Error when unpacking mpich2" + echo -e ' \033[40m\033[1;33m### END ### \033[0m ' + return $MPICH_UNPACKING_ERROR + else + echo -e " \033[40m\033[1;34m# STEP $currentStepCounter OK \033[0m" + echo + return $SUCCESSFUL_STEP + fi + ;; + + + $S_INSTALL_EO) + ########## installing paradiseo-eo ########## + echo -e " \033[40m\033[1;34m# STEP $currentStepCounter \033[0m " + echo ' --> Installing Paradiseo-EO. Please wait ...' + + if [ ! "$installKitPath" = "$resourceKitPath" ] + then + cp -Rf $resourceKitPath/paradiseo-eo/ $installKitPath/ + rm -Rf $installKitPath/paradiseo-eo/build + fi + + execute_cmd "mkdir $installKitPath/paradiseo-eo/build" "[$currentStepCounter-1] Create build directory" $SPY + + execute_cmd "cd $installKitPath/paradiseo-eo/build" "[$currentStepCounter-2] Go in Paradiseo-EO build dir" $SPY + RETURN=`expr $RETURN + $?` + + execute_cmd " echo \"cmake ../ -G$BUILD_PROCESS_TYPE \" " "[$currentStepCounter-3] Run CMake using generator $BUILD_PROCESS_TYPE" $SPY + + cmake ../ -G"$BUILD_PROCESS_TYPE" >> ${SPY} 2>> ${SPY} + RETURN=`expr $RETURN + $?` + + if [ "$COMPILE_PARADISEO" = "1" ] + then + execute_cmd "make" "[$currentStepCounter-4] Compile ParadisEO-EO" $SPY + RETURN=`expr $RETURN + $?` + fi + + if [ ! $(($RETURN)) = 0 ] + then + echo '' + echo " --> Error when installing Paradiseo-EO" + echo -e ' \033[40m\033[1;33m### END ### \033[0m ' + return $EO_INSTALL_ERROR + else + echo -e " \033[40m\033[1;34m# STEP $currentStepCounter OK \033[0m" + echo + return $SUCCESSFUL_STEP + fi + ;; + $S_INSTALL_MO) + ########## installing paradiseo-mo ########## + echo -e " \033[40m\033[1;34m# STEP $currentStepCounter \033[0m " + echo ' --> Installing Paradiseo-MO. Please wait ...' + + if [ ! "$installKitPath" = "$resourceKitPath" ] + then + cp -Rf $resourceKitPath/paradiseo-mo/ $installKitPath/ + cp $resourceKitPath/install.cmake $installKitPath/ + rm -Rf $installKitPath/paradiseo-mo/build/* + fi + + execute_cmd "cd $installKitPath/paradiseo-mo/build" "[$currentStepCounter-1] Go in Paradiseo-MO dir" $SPY + RETURN=$? + + execute_cmd " echo \"cmake ../ -G$BUILD_PROCESS_TYPE \" -DEOdir=$installKitPath/paradiseo-eo" "[$currentStepCounter-2] Run CMake using generator $BUILD_PROCESS_TYPE -Dconfig=$installKitPath/$CMAKE_PRIMARY_CONFIG_FILE" $SPY + cmake ../ -Dconfig=$installKitPath/$CMAKE_PRIMARY_CONFIG_FILE -G"$BUILD_PROCESS_TYPE" >> ${SPY} 2>> ${SPY} + RETURN=`expr $RETURN + $?` + + if [ "$COMPILE_PARADISEO" = "1" ] + then + execute_cmd "make" "[$currentStepCounter-3] Compile ParadisEO-MO" $SPY + RETURN=`expr $RETURN + $?` + execute_cmd "make install" "[$currentStepCounter-4] Make install of ParadisEO-MO" $SPY + RETURN=`expr $RETURN + $?` + fi + + if [ ! $(($RETURN)) = 0 ] + then + echo '' + echo " --> Error when installing Paradiseo-MO" + echo -e ' \033[40m\033[1;33m### END ### \033[0m ' + return $MO_INSTALL_ERROR + else + echo -e " \033[40m\033[1;34m# STEP $currentStepCounter OK \033[0m" + echo + return $SUCCESSFUL_STEP + fi + ;; + $S_INSTALL_MOEO) + ########## installing MOEO ########## + echo -e " \033[40m\033[1;34m# STEP $currentStepCounter \033[0m " + echo ' --> Installing Paradiseo-MOEO. Please wait ...' + + if [ ! "$installKitPath" = "$resourceKitPath" ] + then + cp -Rf $resourceKitPath/paradiseo-moeo/ $installKitPath/ + rm -Rf $installKitPath/paradiseo-moeo/build/* + fi + + execute_cmd "cd $installKitPath/paradiseo-moeo/build" "[$currentStepCounter-1] Go in Paradiseo-MOEO dir" $SPY + RETURN=$? + + execute_cmd " echo \"cmake ../ -G$BUILD_PROCESS_TYPE \" -DEOdir=$installKitPath/paradiseo-eo" "[$currentStepCounter-2] Run CMake using generator $BUILD_PROCESS_TYPE -Dconfig=$installKitPath/$CMAKE_PRIMARY_CONFIG_FILE" $SPY + cmake ../ -Dconfig=$installKitPath/$CMAKE_PRIMARY_CONFIG_FILE -G"$BUILD_PROCESS_TYPE" >> ${SPY} 2>> ${SPY} + RETURN=`expr $RETURN + $?` + + if [ "$COMPILE_PARADISEO" = "1" ] + then + execute_cmd "make" "[$currentStepCounter-3] Compile ParadisEO-MOEO" $SPY + RETURN=`expr $RETURN + $?` + execute_cmd "make install" "[$currentStepCounter-4] Make install ParadisEO-MOEO" $SPY + RETURN=`expr $RETURN + $?` + fi + + if [ ! $(($RETURN)) = 0 ] + then + echo '' + echo " --> Error when installing Paradiseo-MOEO" + echo -e ' \033[40m\033[1;33m### END ### \033[0m ' + return $MOEO_INSTALL_ERROR + else + echo -e " \033[40m\033[1;34m# STEP $currentStepCounter OK \033[0m" + echo + return $SUCCESSFUL_STEP + fi + ;; + $S_INSTALL_LIBXML) + ########## installing LIBXML2 ########## + echo -e " \033[40m\033[1;34m# STEP $currentStepCounter \033[0m " + echo ' --> Installing libxml2. Please wait ...' + + execute_cmd "rm -Rf $installKitPath/libxml2" "[$currentStepCounter-0] Remove potential existing dir $installKitPath/libxml2" $SPY + RETURN=$? + + execute_cmd "mkdir $installKitPath/libxml2" "[$currentStepCounter-1] Create libxml2 dir" $SPY + RETURN=$? + execute_cmd "cd $installKitPath/libxml2-2.6.0/" "[$currentStepCounter-2] Go in libxml2-2.6.0 dir" $SPY + RETURN=`expr $RETURN + $?` + execute_cmd "./configure --prefix=$installKitPath/libxml2/ --exec-prefix=$installKitPath/libxml2/" "[$currentStepCounter-3] Run configure for libxml2" $SPY + RETURN=`expr $RETURN + $?` + execute_cmd "make" "[$currentStepCounter-4] Compile libxml2" $SPY + RETURN=`expr $RETURN + $?` + execute_cmd "make install" "[$currentStepCounter-5] Run install libxml2 " $SPY + RETURN=`expr $RETURN + $?` + if [ ! $(($RETURN)) = 0 ] + then + echo '' + echo " --> Error when installing libxml2" + echo -e ' \033[40m\033[1;33m### END ### \033[0m ' + return $LIBXML_INSTALL_ERROR + else + echo -e " \033[40m\033[1;34m# STEP $currentStepCounter OK \033[0m" + echo + return $SUCCESSFUL_STEP + fi + ;; + $S_INSTALL_MPICH) + ########## installing MPICH2 ########## + echo -e " \033[40m\033[1;34m# STEP $currentStepCounter \033[0m " + echo ' --> Installing mpich2. Please wait ...' + + execute_cmd "rm -Rf $installKitPath/mpich2" "[$currentStepCounter-0] Remove potential existing dir $installKitPath/mpich2" $SPY + RETURN=$? + + execute_cmd "mkdir $installKitPath/mpich2" "[$currentStepCounter-1] Create mpich2 dir" $SPY + RETURN=$? + execute_cmd "cd $installKitPath/mpich2-1.0.3/" "[$currentStepCounter-2] Go in mpich2-1.0.3 dir" $SPY + RETURN=`expr $RETURN + $?` + execute_cmd "./configure --prefix=$installKitPath/mpich2/" "[$currentStepCounter-3] Run configure for mpich2" $SPY + RETURN=`expr $RETURN + $?` + execute_cmd "make" "[$currentStepCounter-4] Compile mpich2" $SPY + RETURN=`expr $RETURN + $?` + execute_cmd "make install" "[$currentStepCounter-5] Run install mpich2 " $SPY + RETURN=`expr $RETURN + $?` + if [ ! $(($RETURN)) = 0 ] + then + echo '' + echo " --> Error when installing MPICH2" + echo -e ' \033[40m\033[1;33m### END ### \033[0m ' + return $MPICH_INSTALL_ERROR + else + echo -e " \033[40m\033[1;34m# STEP $currentStepCounter OK \033[0m" + echo + return $SUCCESSFUL_STEP + fi + ;; + $S_REMOVE_TEMP_LIBXML) + ########## removing temp directory for libxml ########## + echo -e " \033[40m\033[1;34m# STEP $currentStepCounter \033[0m " + echo ' --> Removing libxml2 temp install directory ...' + + execute_cmd "rm -fr $installKitPath/libxml2-2.6.0" "[$currentStepCounter] Remove Libxml2 temporary directory" $SPY + if [ ! "$?" = "0" ] + then + echo '' + echo " --> Error when removing $installKitPath/libxml2-2.6.0" + echo -e ' \033[40m\033[1;33m### END ### \033[0m ' + return $REMOVE_TEMP_DIRECTORY_ERROR + else + echo -e " \033[40m\033[1;34m# STEP $currentStepCounter OK \033[0m" + echo + return $SUCCESSFUL_STEP + fi + ;; + + $S_REMOVE_TEMP_MPICH) + ########## removing temp directory for mpich ########## + echo -e " \033[40m\033[1;34m# STEP $currentStepCounter \033[0m " + echo ' --> Removing mpich2 temp install directory ...' + + execute_cmd "rm -fr $installKitPath/mpich2-1.0.3" "[$currentStepCounter] Remove Mpich2 temporary directory" $SPY + if [ ! "$?" = "0" ] + then + echo '' + echo " --> Error when removing $installKitPath/mpich2-1.0.3" + echo -e ' \033[40m\033[1;33m### END ### \033[0m ' + return $REMOVE_TEMP_DIRECTORY_ERROR + else + echo -e " \033[40m\033[1;34m# STEP $currentStepCounter OK \033[0m" + echo + return $SUCCESSFUL_STEP + fi + ;; + + $S_REMOVE_INSTALL) + ########## removing a previous install of EO ########## + echo -e " \033[40m\033[1;34m# STEP $currentStepCounter \033[0m " + echo ' --> Removing your previous install of ParadisEO ...' + + + if [ -d "$installKitPath/mpich2" ] + then + execute_cmd "rm -r $installKitPath/mpich2" "[$currentStepCounter] Remove previous install of mpich2" $SPY + fi + idx=$? + + if [ -d "$installKitPath/libxml2" ] + then + execute_cmd "rm -r $installKitPath/libxml2" "[$currentStepCounter] Remove previous install of libxml2" $SPY + fi + idx=`expr $idx + $?` + + if [ ! $(($idx)) = 0 ] + then + echo '' + echo " --> Error when removing previous install of libxml2 and mpich2" + echo -e ' \033[40m\033[1;33m### END ### \033[0m ' + return $RM_UTIL_ERROR + else + echo -e " \033[40m\033[1;34m# STEP $currentStepCounter OK \033[0m" + echo + return $SUCCESSFUL_STEP + fi + ;; + + $S_CONFIGURE_MPICH_ENV) + ########## Configuring mpich environment variables ########## + echo -e " \033[40m\033[1;34m# STEP $currentStepCounter \033[0m " + echo ' --> Configuring environment variables for mpich2 ...' + + execute_cmd "export PATH=$PATH:`xml2-config --prefix`/bin:$installKitPath/mpich2/bin" "[$currentStepCounter-2] Export PATH variable" $SPY + idx=$? + + execute_cmd "echo export PATH=$PATH:$installKitPath/mpich2/bin" "[$currentStepCounter-4] Export PATH variable into env" $SPY $homePath/.bashrc + idx=`expr $idx + $?` + + execute_cmd "source $homePath/.bashrc" "[$currentStepCounter-5] Export variables for mpich2" $SPY + idx=`expr $idx + $?` + + if [ ! $(($idx)) = 0 ] + then + echo '' + echo " --> Error when configuring environment variables for mpich2" + echo -e ' \033[40m\033[1;33m### END ### \033[0m ' + return $VAR_CONFIG_ERROR + else + echo -e " \033[40m\033[1;34m# STEP $currentStepCounter OK \033[0m" + echo + return $SUCCESSFUL_STEP + fi + ;; + + $S_CONFIGURE_LIBXML2_ENV) + ########## Configuring environment variables ########## + echo -e " \033[40m\033[1;34m# STEP $currentStepCounter \033[0m " + echo ' --> Configuring environment variables for libxml2 ...' + + execute_cmd "XML2_CONFIG=\`xml2-config --prefix\`" "[$currentStepCounter-1] Run xml2-config variable" $SPY + idx=$? + echo "******** $XML2_CONFIG *********" + + execute_cmd "export LD_LIBRARY_PATH=`xml2-config --prefix`/lib:" "[$currentStepCounter-2] Export LD_LIBRARY_PATH variable" $SPY + idx=$? + + execute_cmd "echo export LD_LIBRARY_PATH=$`xml2-config --prefix`/lib" "[$currentStepCounter-3] Export LD_LIBRARY_PATH variable into env" $SPY $homePath/.bashrc + idx=$? + + execute_cmd "echo export PATH=$PATH:`xml2-config --prefix`/bin" "[$currentStepCounter-4] Export PATH variable into env" $SPY $homePath/.bashrc + idx=`expr $idx + $?` + + execute_cmd "source $homePath/.bashrc" "[$currentStepCounter-5] Export variables for libxml2" $SPY + idx=`expr $idx + $?` + + if [ ! $(($idx)) = 0 ] + then + echo '' + echo " --> Error when configuring environment variables for libxml2" + echo -e ' \033[40m\033[1;33m### END ### \033[0m ' + return $VAR_CONFIG_ERROR + else + echo -e " \033[40m\033[1;34m# STEP $currentStepCounter OK \033[0m" + echo + return $SUCCESSFUL_STEP + fi + ;; + $S_CONFIGURE_ENV) + ########## Configuring environment variables ########## + echo -e " \033[40m\033[1;34m# STEP $currentStepCounter \033[0m " + echo ' --> Configuring environment variables for libxml2 and mpich2 ...' + + execute_cmd "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$installKitPath/libxml2/lib:" "[$currentStepCounter-1] Export LD_LIBRARY_PATH variable" $SPY + idx=$? + execute_cmd "export PATH=$PATH:$installKitPath/libxml2/bin:$installKitPath/mpich2/bin" "[$currentStepCounter-2] Export PATH variable" $SPY + + execute_cmd "echo export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$installKitPath/libxml2/lib" "[$currentStepCounter-3] Export LD_LIBRARY_PATH variable into env" $SPY $homePath/.bashrc + idx=$? + + execute_cmd "echo export PATH=$PATH:$installKitPath/libxml2/bin:$installKitPath/mpich2/bin" "[$currentStepCounter-4] Export PATH variable into env" $SPY $homePath/.bashrc + idx=`expr $idx + $?` + + execute_cmd "source $homePath/.bashrc" "[$currentStepCounter-5] Export variables" $SPY + idx=`expr $idx + $?` + + if [ ! $(($idx)) = 0 ] + then + echo '' + echo " --> Error when configuring environment variables for libxml2 and mpich2" + echo -e ' \033[40m\033[1;33m### END ### \033[0m ' + return $VAR_CONFIG_ERROR + else + echo -e " \033[40m\033[1;34m# STEP $currentStepCounter OK \033[0m" + echo + return $SUCCESSFUL_STEP + fi + ;; + $S_INSTALL_PEO) + ######## installing paradiseo-peo ########## + echo -e " \033[40m\033[1;34m# STEP $currentStepCounter \033[0m " + echo ' --> Installing Paradiseo-PEO. Please wait ...' + + if [ ! "$installKitPath" = "$resourceKitPath" ] + then + cp -Rf $resourceKitPath/paradiseo-peo/ $installKitPath/ + rm -Rf $installKitPath/paradiseo-peo/build/* + fi + + execute_cmd "cd $installKitPath/paradiseo-peo/build" "[$currentStepCounter-1] Go in Paradiseo-PEO dir" $SPY + RETURN=$? + + execute_cmd " echo \"cmake ../ -G$BUILD_PROCESS_TYPE \" -DEOdir=$installKitPath/paradiseo-eo -DMOdir=$installKitPath/paradiseo-mo" "[$currentStepCounter-2] Run CMake using generator $BUILD_PROCESS_TYPE -Dconfig=$installKitPath/$CMAKE_PRIMARY_CONFIG_FILE" $SPY + cmake ../ -Dconfig=$installKitPath/$CMAKE_PRIMARY_CONFIG_FILE -G"$BUILD_PROCESS_TYPE" >> ${SPY} 2>> ${SPY} + RETURN=`expr $RETURN + $?` + + if [ "$COMPILE_PARADISEO" = "1" ] + then + execute_cmd "make" "[$currentStepCounter-3] Compile ParadisEO-PEO " $SPY + RETURN=`expr $RETURN + $?` + execute_cmd "make install" "[$currentStepCounter-4] Make install ParadisEO-PEO " $SPY + RETURN=`expr $RETURN + $?` + fi + + if [ ! $(($RETURN)) = 0 ] + then + echo '' + echo " --> Error when installing Paradiseo-PEO" + echo -e ' \033[40m\033[1;33m### END ### \033[0m ' + return $PARADISEO_INSTALL_ERROR + else + echo -e " \033[40m\033[1;34m# STEP $currentStepCounter OK \033[0m" + echo + return $SUCCESSFUL_STEP + fi + ;; + + $S_CONFIGURE_MPD) + ######## copy .mpd.conf file in your HOME directory or in /etc if you are root (required for mpich2) + echo -e " \033[40m\033[1;34m# STEP $currentStepCounter \033[0m " + echo ' --> Copy .mpd.conf file in your HOME directory or in /etc if you are root (required for mpich2) ...' + if [ "$UID" = "0" ] + then + execute_cmd "cp $resourceKitPath/.mpd.conf /etc" "[$currentStepCounter-1] Copy mpd.conf file in /etc (root)" $SPY + RETURN=$? + execute_cmd "mv /etc/.mpd.conf /etc/mpd.conf" "[$currentStepCounter-2] Move .mpd.conf to mpd.conf" $SPY + RETURN=`expr $RETURN + $?` + execute_cmd "chmod 600 /etc/mpd.conf" "[$currentStepCounter-3] Change .mpd.conf rights" $SPY + RETURN=`expr $RETURN + $?` + else + execute_cmd "cp $resourceKitPath/.mpd.conf $HOME" "[$currentStepCounter-1] Copy mpd.conf file in in your HOME directory" $SPY + RETURN=$? + execute_cmd "chmod 600 $HOME/.mpd.conf" "[$currentStepCounter-2] Change .mpd.conf rights" $SPY + RETURN=`expr $RETURN + $?` + fi + if [ ! $(($RETURN)) = 0 ] + then + echo '' + echo " --> Error when copying .mpd.conf file " + echo -e ' \033[40m\033[1;33m### END ### \033[0m ' + return $MPD_COPY_ERROR + else + echo -e " \033[40m\033[1;34m# STEP $currentStepCounter OK \033[0m" + echo + return $SUCCESSFUL_STEP + fi + ;; + + $S_PEO_CHECK) + if [ -d paradiseo-eo -a -d paradiseo-mo -a -d paradiseo-moeo ] + then + if [ -d libxml2 -o -d mpich2 ] + then + echo + echo "A previous installation of ParadisEO-PEO may exist because libxml2 or mpich2 directory have been detected in $installKitPath." + echo -e " \033[40m\033[1;33m => Do you want to remove these directories for a new installation ? If you choose NO, the installation will stop. (y/n) ? \033[0m " + read ANSWER + if [ "$ANSWER" = "y" ] + then + execute_cmd "rm -rf $installKitPath/libxml2 $installKitPath/mpich2" "[$currentStepCounter] Remove libxml2 ans mpich2 directories for a new install" $SPY "/dev/null" "/dev/null" + else + return $PEO_CHECK_ERROR + fi + fi + else + echo + echo "Basic install not found (at least one of the EO,MO,MOEO components is missing) in $installKitPath." + + execute_cmd "test -d paradiseo-eo" "[$currentStepCounter-1] Check previous basic install" $SPY + execute_cmd "test -d paradiseo-mo" "[$currentStepCounter-2] Check previous basic install" $SPY + execute_cmd "test -d paradiseo-moeo" "[$currentStepCounter-3] Check previous basic install" $SPY + + echo '' + echo " --> Error when searching for a previous basic install in $installKitPath." + echo -e ' \033[40m\033[1;33m### END ### \033[0m ' + return $BASIC_INSTALL_MISSING_ERROR + fi + ;; + $S_END) + echo -e "\033[40m\033[1;33m### + The file \".bashrc\" file located in your directory $homePath has been MODIFIED. + The following lines have been added at the end: + + LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$installKitPath/libxml2/lib: + PATH=$PATH:$installKitPath/libxml2/bin:$installKitPath/mpich2/bin + + These variables are necessary to compile any program using ParadisEO-PEO. If + you want to keep them in your environment in order not to have to set them each time you compile, enter \"source $homePath/.bashrc\". + + If you don't want to use these variables, please remove them from $homePath/.bashrc. ### \033[0m" + + sleep 2 + echo + echo + if [ ! "$COMPILE_PARADISEO" -eq "1" ] + then + echo "=> ParadisEO must now be compiled using the appropriate tool depending on the generator you've chosen." + fi + echo + return $SUCCESSFUL_STEP + ;; + *) + + ;; + esac +} + + +#------------------------------------------------------# +#-- FUNCTION : check_utils_install ---# +#------------------------------------------------------# +#-- PARAMETERS : No ---# +#-- Set some global variables (used for libxml2 ---# +#-- and mpich2 install management) ---# +#------------------------------------------------------# +function check_utils_install +{ + # is there an available version of mpich on the system ? + (mpicxx --version) < /dev/null > /dev/null 2>&1 || + { + IS_MPICH_INSTALLED=0 + } + + # is there an available version of libxml2 on the system ? + (xml2-config --version) < /dev/null > /dev/null 2>&1 || + { + IS_LIBXML2_INSTALLED=0 + } + + # ask the user if he'd like to keep his mpich version instead of the provided one + if [ "$IS_MPICH_INSTALLED" = "1" ] + then + echo + echo -e ' \033[40m\033[1;31m### A version of the MPI compiler has been detected on your system. Do you want to use it (if no, the mpich2 package, provided with ParadisEO, will be installed on your computer) [y/n] \033[0m ' + + execute_cmd "echo \" A version of the MPI compiler has been detected on the system\"" "Is there a previous install of MPI ?" $SPY + + TREATENED=0 + while [ "$TREATENED" = "0" ] + do + read MPICH_YES_NO + if [ ! "$MPICH_YES_NO" = "y" ] && [ ! "$MPICH_YES_NO" = "n" ] + then + TREATENED=0 + else + if [ "$MPICH_YES_NO" = "y" ] + then + USE_EXISTING_MPICH=1 + else + USE_EXISTING_MPICH=0 + fi + TREATENED=1 + fi + done + fi + + + # ask the user if he'd like to keep his libxml2 version instead of the provided one + if [ "$IS_LIBXML2_INSTALLED" = "1" ] + then + echo + echo -e ' \033[40m\033[1;31m### A version of libxml2 has been detected on your system. Do you want to use it (if no, the libxml2 package, provided with ParadisEO, will be installed on your computer) [y/n] \033[0m ' + + execute_cmd "echo \" A version of libxml2 has been detected on the system\"" "Is there a previous install of libxml2 ?" $SPY + + TREATENED=0 + while [ "$TREATENED" = "0" ] + do + read LIBXML2_YES_NO + if [ ! "$LIBXML2_YES_NO" = "y" ] && [ ! "$LIBXML2_YES_NO" = "n" ] + then + TREATENED=0 + else + if [ "$LIBXML2_YES_NO" = "y" ] + then + USE_EXISTING_LIBXML2=1 + else + USE_EXISTING_LIBXML2=0 + fi + TREATENED=1 + fi + done + fi + +} + + + +######################################################## +######### BODY ######## +######################################################### + + +#check if we have all we need +(autoconf --version) < /dev/null > /dev/null 2>&1 || +{ + echo "You must have autoconf installed to compile $PROG. Please update your system to get it before installing $PROG." + execute_cmd "echo \"You must have autoconf installed to compile $PROG. Please update your system to get it before installing $PROG.\"" "[0-1] Check autoconf" $SPY + DIE=1 +} + +(automake --version) < /dev/null > /dev/null 2>&1 || +{ + echo "You must have automake installed to compile $PROG. Please update your system to get it before installing $PROG." + execute_cmd "echo \"You must have automake installed to compile $PROG. Please update your system to get it before installing $PROG.\"" "[0-2] Check autoconf" $SPY + DIE=1 +} + +(cmake --version) < /dev/null > /dev/null 2>&1 || +{ + echo "You must have CMake installed to compile $PROG. Please update your system to get it before installing $PROG." + execute_cmd "echo \"You must have CMake installed to compile $PROG. Please update your system to get it before installing $PROG.\"" "[0-3] Check autoconf" $SPY + DIE=1 +} + + + +if [ "$DIE" = "1" ] +then + exit 1 +fi + + +# main +if [ "$1" = "--help" ] +then + echo + echo 'Use : ./installParadiseo.sh for standard install' + echo + echo 'Use : ./installParadiseo.sh to give your HOME path' + echo 'Example: ./installParadiseo.sh /usr/home/me' + echo + echo 'Use : ./installParadiseo.sh --prefix=' + echo + echo '=> For further help, please contact paradiseo-help@lists.gforge.inria.fr' + echo + exit +fi + +# do we have a valid path ? +if [ ! -d $HOME ] +then + if [ "$1" = "" ] + then + echo " Please give a valid path for your home directory (use ./installParadiseo.sh --help for further information)" + else + homePath=$1 + fi +else + homePath=$HOME +fi + + +# simple menu +INSTALL_TREATENED=0 +INSTALL_PATH=$PWD +for i in $* +do + if [ "${i%=*}" = "--prefix" ] + then + INSTALL_PATH=${i#*=} + fi +done + + + +# need the generator type +BUILD_PROCESS_TYPE=0 +GENERATOR_TREATENED=0 + +while [ ! "$GENERATOR_TREATENED" = "1" ] +do + case "$BUILD_PROCESS_TYPE" in + + $P_UNIX_MAKEFILES) + BUILD_PROCESS_TYPE="$G_UNIX_MAKEFILES" + GENERATOR_TREATENED=1 + ;; + + $P_KDEVELOP3_PROJECT) + BUILD_PROCESS_TYPE="$G_KDEVELOP3_PROJECT" + GENERATOR_TREATENED=1 + COMPILE_PARADISEO=0 + echo " Note: For $P_KDEVELOP3_PROJECT (generator n°$G_KDEVELOP3_PROJECT), this script won't compile ParadisEO. You are to compile using the appropriate tool." + ;; + + *) + echo + echo -e ' \033[40m\033[1;33m### Please select the kind of "Makefile" you want to generate (available on UNIX platforms): ### \033[0m ' + echo + echo " $P_UNIX_MAKEFILES : Unix Makefiles (standard Makefiles)" + echo " $P_KDEVELOP3_PROJECT : KDevelop3 project files" + read BUILD_PROCESS_TYPE + ;; + esac +done + + +while [ ! "$INSTALL_TREATENED" = "1" ] +do + case "$INSTALL_TYPE" in + $P_FULL_INSTALL) + + check_utils_install + + if [ "$USE_EXISTING_MPICH" = "1" ] && [ "$USE_EXISTING_LIBXML2" = "1" ] + then + THE_GOOD_INSTALL=$FULL_INSTALL_WITHOUT_LIBXML2_MPICH2 + + elif [ "$USE_EXISTING_MPICH" = "1" ] && [ "$USE_EXISTING_LIBXML2" = "0" ] + then + THE_GOOD_INSTALL=$FULL_INSTALL_WITHOUT_MPICH + + elif [ "$USE_EXISTING_MPICH" = "0" ] && [ "$USE_EXISTING_LIBXML2" = "1" ] + then + THE_GOOD_INSTALL=$FULL_INSTALL_WITHOUT_LIBXML2 + + elif [ "$USE_EXISTING_MPICH" = "0" ] && [ "$USE_EXISTING_LIBXML2" = "0" ] + then + THE_GOOD_INSTALL=$FULL_INSTALL + else + THE_GOOD_INSTALL=$FULL_INSTALL + fi + + counter=0 + for step in $THE_GOOD_INSTALL + do + run_install_step $INSTALL_PATH $step $counter + on_error $? + counter=`expr $counter + 1` + done + INSTALL_TREATENED=1 + ;; + + $P_BASIC_INSTALL) + counter=0 + for step in $BASIC_INSTALL + do + run_install_step $INSTALL_PATH $step $counter + on_error $? + counter=`expr $counter + 1` + done + INSTALL_TREATENED=1 + ;; + + $P_PARALLEL_INSTALL) + + check_utils_install + + if [ "$USE_EXISTING_MPICH" = "1" ] && [ "$USE_EXISTING_LIBXML2" = "1" ] + then + THE_GOOD_PARALLEL_INSTALL=$PARALLEL_INSTALL_WITHOUT_LIBXML2_MPICH2 + + elif [ "$USE_EXISTING_MPICH" = "1" ] && [ "$USE_EXISTING_LIBXML2" = "0" ] + then + THE_GOOD_PARALLEL_INSTALL=$PARALLEL_INSTALL_WITHOUT_MPICH2 + + elif [ "$USE_EXISTING_MPICH" = "0" ] && [ "$USE_EXISTING_LIBXML2" = "1" ] + then + THE_GOOD_PARALLEL_INSTALL=$PARALLEL_INSTALL_WITHOUT_LIBXML2 + + elif [ "$USE_EXISTING_MPICH" = "0" ] && [ "$USE_EXISTING_LIBXML2" = "0" ] + then + THE_GOOD_PARALLEL_INSTALL=$PARALLEL_INSTALL + else + THE_GOOD_PARALLEL_INSTALL=$PARALLEL_INSTALL + fi + + counter=0 + for step in $THE_GOOD_PARALLEL_INSTALL + do + run_install_step $INSTALL_PATH $step $counter + on_error $? + counter=`expr $counter + 1` + done + INSTALL_TREATENED=1 + ;; + + $P_RM_PREVIOUS_INSTALLL) + counter=0 + for step in $RM_PREVIOUS_INSTALL + do + run_install_step $INSTALL_PATH $step $counter + on_error $? + counter=`expr $counter + 1` + done + INSTALL_TREATENED=1 + ;; + + $P_EXIT_INSTALL) + INSTALL_TREATENED=1 + ;; + + *) + echo + echo -e ' \033[40m\033[1;33m### Please select your install for ParadisEO : ### \033[0m ' + echo + echo " 1 : Full install (all the components : EO,MO,MOEO and PEO)" + echo " 2 : Basic install: only EO,MO and MOEO components will be installed." + echo " 3 : ParadisEO-PEO install. I've already installed the basic version and I want to install ParadisEO-PEO" + echo " 4 : Remove a previous install of ParadisEO located in $INSTALL_PATH" + echo " 5 : Exit install" + read INSTALL_TYPE + ;; + esac +done + + + + diff --git a/branches/paradiseo-ix86-2.0/lib/libxml2-2.6.0.tar.bz2 b/branches/paradiseo-ix86-2.0/lib/libxml2-2.6.0.tar.bz2 new file mode 100644 index 000000000..9ff2c6f9d Binary files /dev/null and b/branches/paradiseo-ix86-2.0/lib/libxml2-2.6.0.tar.bz2 differ diff --git a/branches/paradiseo-ix86-2.0/lib/mpich2-1.0.3.tar.gz b/branches/paradiseo-ix86-2.0/lib/mpich2-1.0.3.tar.gz new file mode 100644 index 000000000..676719b2a Binary files /dev/null and b/branches/paradiseo-ix86-2.0/lib/mpich2-1.0.3.tar.gz differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/AUTHORS b/branches/paradiseo-ix86-2.0/paradiseo-mo/AUTHORS new file mode 100644 index 000000000..5c3a864b2 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/AUTHORS @@ -0,0 +1,9 @@ +Source Code: + Sebastien CAHON + Jean-Charles BOISSON : Jean-Charles.Boisson@lifl.fr + +Lessons: + Sebastien CAHON + +Documentation: + Jean-Charles BOISSON : Jean-Charles.Boisson@lifl.fr diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/CMakeLists.txt b/branches/paradiseo-ix86-2.0/paradiseo-mo/CMakeLists.txt new file mode 100644 index 000000000..efbaa87ef --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/CMakeLists.txt @@ -0,0 +1,141 @@ + +###################################################################################### +### 0) If you want to set your own variables in mo-conf.cmake and avoid the cmd line +###################################################################################### + +INCLUDE(mo-conf.cmake OPTIONAL) + +###################################################################################### + + +###################################################################################### +### 1) Project properties +###################################################################################### + +# set the project name +PROJECT(ParadisEO-MO) + +SET(PACKAGE_BUGREPORT "paradiseo-help@lists.gforge.inria.fr" CACHE STRING "Package bug report" FORCE) +SET(PACKAGE_NAME "ParadisEO-MO Moving Objects" CACHE STRING "Package name" FORCE) +SET(PACKAGE_STRING "ParadisEO-MO 1.0" CACHE STRING "Package string full name" FORCE) +SET(PACKAGE_VERSION "1.0" CACHE STRING "Package version" FORCE) +SET(GLOBAL_VERSION "1.0" CACHE STRING "Global version" FORCE) +SET(VERSION "1.0" CACHE STRING "Version" FORCE) + +# check cmake version compatibility +CMAKE_MINIMUM_REQUIRED(VERSION 2.4 FATAL_ERROR) + +# regular expression checking +INCLUDE_REGULAR_EXPRESSION("^.*$" "^$") + +# set a language for the entire project. +ENABLE_LANGUAGE(CXX) +ENABLE_LANGUAGE(C) + +##################################################################################### + + +##################################################################################### +### 2) Include required modules +##################################################################################### + +INCLUDE(CMakeBackwardCompatibilityCXX) + +INCLUDE(FindDoxygen) + +INCLUDE(FindGnuplot) + +# check for some functions +INCLUDE(CheckLibraryExists) + +###################################################################################### + + +###################################################################################### +### 3) Include the main configuration variables +###################################################################################### + +# The "config" variable must be provided on the command line +IF(NOT DEFINED config OR NOT config) + MESSAGE(FATAL_ERROR "The \"config\" variable must be set on the command line to + give the path of the install configuration file. ") +ENDIF(NOT DEFINED config OR NOT config) + +# Need the config file whose full path is given thanks to the "config" variable +INCLUDE(${config}) + +###################################################################################### + + +###################################################################################### +### 4) Paths checking +###################################################################################### + +IF(WIN32) + SET (ABSOLUTE_PATH_REGEX "^[A-Z]:|^[a-z]:") +ELSE(WIN32) + SET (ABSOLUTE_PATH_REGEX "^/") +ENDIF(WIN32) + +SET(REQUIRED_PATHS "EO_SRC_DIR" "EO_BIN_DIR") +FOREACH (path ${REQUIRED_PATHS}) + IF(EXISTS ${${path}}) + MESSAGE (STATUS "Using ${path}=${${path}}") + ELSE(EXISTS ${${path}}) + MESSAGE (FATAL_ERROR "\n Cannot find \"${${path}}\". Please, fill \"${config}\" with a correct value") + ENDIF(EXISTS ${${path}}) + + IF(NOT ${${path}} MATCHES "${ABSOLUTE_PATH_REGEX}") + MESSAGE (FATAL_ERROR "${${path}} MUST BE an absolute path") + ENDIF(NOT ${${path}} MATCHES "${ABSOLUTE_PATH_REGEX}") +ENDFOREACH (path ${REQUIRED_PATHS}) +###################################################################################### + + +##################################################################################### +### 5) Manage the build type +##################################################################################### + +# the user should choose the build type on windows environments,excepted under cygwin (default=none) +SET(CMAKE_DEFAULT_BUILD_TYPE "Release" CACHE STRING "Variable that stores the default CMake build type" FORCE) + +IF(WIN32 AND NOT CYGWIN) + IF(NOT CMAKE_BUILD_TYPE) + SET( CMAKE_BUILD_TYPE + ${CMAKE_DEFAULT_BUILD_TYPE} CACHE STRING + "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel." + FORCE) + ENDIF(NOT CMAKE_BUILD_TYPE) +ELSE(WIN32 AND NOT CYGWIN) + IF(CMAKE_COMPILER_IS_GNUCXX) + SET(CMAKE_CXX_FLAGS_DEBUG "-Wall -pedantic -Wextra -Wno-import -Winit-self -Wmissing-include-dirs -Wunused-parameter -Wundef -Wshadow -Wunsafe-loop-optimizations -Wcast-align -Wconversion -Wsign-compare -Winline -Wdisabled-optimization") + ENDIF(CMAKE_COMPILER_IS_GNUCXX) +ENDIF(WIN32 AND NOT CYGWIN) + +IF(CMAKE_BUILD_TYPE MATCHES Debug) + ADD_DEFINITIONS(-DCMAKE_VERBOSE_MAKEFILE=ON) +ENDIF(CMAKE_BUILD_TYPE MATCHES Debug) + +##################################################################################### + + +###################################################################################### +### 6) Where must cmake go now ? +###################################################################################### + +SUBDIRS(doc test tutorial) + +###################################################################################### + + +###################################################################################### +### 7) Test config +###################################################################################### + +#SET(ENABLE_CMAKE_TESTING TRUE CACHE BOOL "Should we test using Dart") + +IF (ENABLE_CMAKE_TESTING) + ENABLE_TESTING() +ENDIF (ENABLE_CMAKE_TESTING) + +###################################################################################### diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/README b/branches/paradiseo-ix86-2.0/paradiseo-mo/README new file mode 100644 index 000000000..089902ff4 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/README @@ -0,0 +1,76 @@ + PARADISEO-MO README FILE +======================================================================= + +======================================================================= + +Welcome to PARADISEO-MO (Moving Objects), one part of the ParadisEO framework. + +======================================================================= + BUILDING PARADISEO-MO +======================================================================= +The basic installation procedure goes the following: + +To compile paradiseo-mo in the default directory, +go to paradiseo-mo/build/ and run: + > cmake ../ -Dconfig= + > make + // for an easy-use of the provided lessons + > make install + // optional (if the documentation is not already available) + > make doc + +To compile paradiseo-mo anywhere else, simply run: + > cmake $(MO) -Dconfig= + > make + // for an easy-use of the provided lessons + > make install + // optional (if the documentation is not already available) + > make doc + +where $(MO) is the top-level directory of PARADISEO-MO. + +To clean everything, simply run + > make clean + +====================================================================== + DIRECTORY STRUCTURE +====================================================================== +After unpacking the archive file, you should end up with the following +structure: + +.../ The MAIN PARADISEO-MO directory, created when unpacking. + | + +-- build Repertory where the executables will be produced. + | + | + +-- src SOURCE directory contains most PARADISEO-MO .h files. + | + | + +-- doc DOCUMENTATION directory (generated by Doxygen). + | | + | +- html HTML files - start at index.html. + | | + | +- latex latex files - use to generate Postcript doc. + | | + | +- man Unix man format documentation. + | + | + +-- tutorial TUTORIAL with lessons + | + +- examples APPLICATIONS - one directory per separate application. + | | + | +- tsp traveling salesman problem (TSP) example sources. + | | + | +- benchs TSP instance files. + | + +- Lesson1 How make a Hill Climbing on the TSP example (source file and lesson_1.pdf). + | + +- Lesson2 How make a Tabu Search on the TSP example (source file and lesson_2.pdf). + | + +- Lesson3 How make a Simulated Annealing on the TSP example (source file and lesson_3.pdf). + +=================================================================== + NOTES +=================================================================== + +Mailing list : paradiseo-help@lists.gforge.inria.fr diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/CMakeLists.txt b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/CMakeLists.txt new file mode 100755 index 000000000..8963a9ba5 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/CMakeLists.txt @@ -0,0 +1,26 @@ + +########################################################################################## +### MO Doc generation using Doxygen +########################################################################################## + +IF (DOXYGEN_FOUND) + + SET(DOC_DIR ${CMAKE_BINARY_DIR}/doc CACHE PATH "MO documentation directory") + SET(MO_DOC_CONFIG_FILE "mo.doxyfile" CACHE PATH "MO documentation configuration file") + # define the doc target + IF (DOXYGEN_EXECUTABLE) + ADD_CUSTOM_TARGET(doc + COMMAND ${DOXYGEN_EXECUTABLE} ${MO_DOC_CONFIG_FILE} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + ) + ENDIF (DOXYGEN_EXECUTABLE) + + # configure doxyfile file + CONFIGURE_FILE("${CMAKE_SOURCE_DIR}/doc/${MO_DOC_CONFIG_FILE}.cmake" + "${CMAKE_BINARY_DIR}/doc/${MO_DOC_CONFIG_FILE}") + +ELSE (DOXYGEN_FOUND) + MESSAGE(STATUS "Unable to generate the documentation, Doxygen package not found") +ENDIF (DOXYGEN_FOUND) + +########################################################################################## diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/annotated.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/annotated.html new file mode 100644 index 000000000..c5a61cf40 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/annotated.html @@ -0,0 +1,75 @@ + + +ParadisEO-MOMovingObjects: Class List + + + + +
+ +
+ +

ParadisEO-MOMovingObjects Class List

Here are the classes, structs, unions and interfaces with brief descriptions: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
moAlgo< EOT >Description of an algorithm of the paradiseo-mo library
moAspirCrit< M >Description of the conditions in which a tabu move could be accepted
moBestImprSelect< M >One of the possible moMoveSelect
moComparator< EOT >Template for classes which need to compare two EOT and indicate if the first is "better" than the second
moCoolingScheduleThis class gives the description of a cooling schedule
moExponentialCoolingScheduleOne of the possible moCoolingSchedule
moFirstImprSelect< M >One possible moMoveSelect
moFitComparator< EOT >Comparison according to the fitness
moFitSolContinue< EOT >One possible stop criterion for a solution-based heuristic
moGenSolContinue< EOT >One possible stop criterion for a solution-based heuristic
moHC< M >Hill Climbing (HC)
moHCMoveLoopExpl< M >Iterative explorer used by a moHC
moILS< M >Iterated Local Search (ILS)
moImprBestFitAspirCrit< M >One of the possible moAspirCrit
moItRandNextMove< M >One of the possible moNextMove
moLinearCoolingScheduleOne of the possible moCoolingSchedule
moLSCheckPoint< M >Class which allows a checkpointing system
moMove< EOT >Definition of a move
moMoveExpl< M >Description of a move (moMove) explorer
moMoveIncrEval< M >(generally) Efficient evaluation function based a move and a solution
moMoveInit< M >Move (moMove) initializer
moMoveLoopExpl< M >Class which describes an iterative explorer
moMoveSelect< M >Class that describes a move selector (moMove)
moNextMove< M >Class which allows to generate a new move (moMove)
moNoAspirCrit< M >One of the possible aspiration criterion (moAspirCrit)
moNoFitImprSolContinue< EOT >One possible stop criterion for a solution-based heuristic
moRandImprSelect< M >One of the possible moMove selector (moMoveSelect)
moRandMove< M >Random move generator
moSA< M >Simulated Annealing (SA)
moSimpleMoveTabuList< M >Class describing a move tabu list with a limited memory
moSimpleSolutionTabuList< M >Class describing a solution tabu list with limited length
moSolContinue< EOT >Class that describes a stop criterion for a solution-based heuristic
moSteadyFitSolContinue< EOT >One possible stopping criterion for a solution-based heuristic
moTabuList< M >Class describing a tabu list that a moTS uses
moTS< M >Tabu Search (TS)
moTSMoveLoopExpl< M >Explorer for a Tabu Search algorithm
+
Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classes.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classes.html new file mode 100644 index 000000000..14e71c1d1 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classes.html @@ -0,0 +1,54 @@ + + +ParadisEO-MOMovingObjects: Alphabetical List + + + + +
+ +
+ +

ParadisEO-MOMovingObjects Class Index

A | B | C | E | F | G | H | I | L | M | N | R | S | T

+ +
  A  
+
moHC   moNextMove   
moAlgo   moHCMoveLoopExpl   moNoAspirCrit   
moAspirCrit   
  I  
+
moNoFitImprSolContinue   
  B  
+
moILS   
  R  
+
moBestImprSelect   moImprBestFitAspirCrit   moRandImprSelect   
  C  
+
moItRandNextMove   moRandMove   
moComparator   
  L  
+
  S  
+
moCoolingSchedule   moLinearCoolingSchedule   moSA   
  E  
+
moLSCheckPoint   moSimpleMoveTabuList   
moExponentialCoolingSchedule   
  M  
+
moSimpleSolutionTabuList   
  F  
+
moMove   moSolContinue   
moFirstImprSelect   moMoveExpl   moSteadyFitSolContinue   
moFitComparator   moMoveIncrEval   
  T  
+
moFitSolContinue   moMoveInit   moTabuList   
  G  
+
moMoveLoopExpl   moTS   
moGenSolContinue   moMoveSelect   moTSMoveLoopExpl   
  H  
+
  N  
+

A | B | C | E | F | G | H | I | L | M | N | R | S | T

+


Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_algo-members.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_algo-members.html new file mode 100644 index 000000000..f9656a631 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_algo-members.html @@ -0,0 +1,53 @@ + + +ParadisEO-MOMovingObjects: Member List + + + + +
+ +
+ +

moAlgo< EOT > Member List

This is the complete list of members for moAlgo< EOT >, including all inherited members.

+ + + + + + + + + + + + + + + +
binaryeoOp< EOType >
className() consteoMonOp< EOT > [virtual]
eoMonOp()eoMonOp< EOT >
eoOp(OpType _type)eoOp< EOType >
eoOp(const eoOp &_eop)eoOp< EOType >
functor_category()eoUF< EOT &, bool > [static]
generaleoOp< EOType >
getType() consteoOp< EOType >
operator()(EOT &)=0eoUF< EOT &, bool > [pure virtual]
OpType enum nameeoOp< EOType >
quadraticeoOp< EOType >
unaryeoOp< EOType >
~eoFunctorBase()eoFunctorBase [virtual]
~eoOp()eoOp< EOType > [virtual]
~eoUF()eoUF< EOT &, bool > [virtual]


Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_algo.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_algo.html new file mode 100644 index 000000000..1c2a453e2 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_algo.html @@ -0,0 +1,69 @@ + + +ParadisEO-MOMovingObjects: moAlgo< EOT > Class Template Reference + + + + +
+ +
+ +

moAlgo< EOT > Class Template Reference

Description of an algorithm of the paradiseo-mo library. +More... +

+#include <moAlgo.h> +

+

+Inheritance diagram for moAlgo< EOT >:
+
+ +

+ +eoMonOp< EOT > +eoOp< EOType > +eoUF< EOT &, bool > +eoFunctorBase + +
+ +

+List of all members. + +
+


Detailed Description

+

template<class EOT>
+ class moAlgo< EOT >

+ +Description of an algorithm of the paradiseo-mo library. +

+moHC, moTS and moSA are 3 examples of algorithm of the paradiseo-mo library. +

Definition at line 46 of file moAlgo.h.

+
The documentation for this class was generated from the following file: +
Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_algo.png b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_algo.png new file mode 100644 index 000000000..7c245ada8 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_algo.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_aspir_crit-members.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_aspir_crit-members.html new file mode 100644 index 000000000..48849e8b6 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_aspir_crit-members.html @@ -0,0 +1,43 @@ + + +ParadisEO-MOMovingObjects: Member List + + + + +
+ +
+ +

moAspirCrit< M > Member List

This is the complete list of members for moAspirCrit< M >, including all inherited members.

+ + + + + +
functor_category()eoBF< A1, A2, R > [static]
init()=0moAspirCrit< M > [pure virtual]
operator()(A1, A2)=0eoBF< A1, A2, R > [pure virtual]
~eoBF()eoBF< A1, A2, R > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_aspir_crit.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_aspir_crit.html new file mode 100644 index 000000000..5dd00d546 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_aspir_crit.html @@ -0,0 +1,99 @@ + + +ParadisEO-MOMovingObjects: moAspirCrit< M > Class Template Reference + + + + +
+ +
+ +

moAspirCrit< M > Class Template Reference

Description of the conditions in which a tabu move could be accepted. +More... +

+#include <moAspirCrit.h> +

+

+Inheritance diagram for moAspirCrit< M >:
+
+ +

+ +eoBF< A1, A2, R > +eoFunctorBase +moImprBestFitAspirCrit< M > +moNoAspirCrit< M > + +
+ +

+List of all members. + + + + + +

Public Member Functions

virtual void init ()=0
 Procedure which initialises all that needs an aspiration criterion.
+


Detailed Description

+

template<class M>
+ class moAspirCrit< M >

+ +Description of the conditions in which a tabu move could be accepted. +

+It is only a description... An object that herits from this class is needed to be used in a moTS. See moNoAspriCrit for example. +

Definition at line 47 of file moAspirCrit.h.

+

Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + +
virtual void moAspirCrit< M >::init (  )  [pure virtual]
+
+
+ +

+Procedure which initialises all that needs an aspiration criterion. +

+It can be possible that this procedure does nothing... +

Implemented in moImprBestFitAspirCrit< M >, and moNoAspirCrit< M >.

+ +
+

+


The documentation for this class was generated from the following file: +
Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_aspir_crit.png b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_aspir_crit.png new file mode 100644 index 000000000..e6cefe1bf Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_aspir_crit.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_best_impr_select-members.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_best_impr_select-members.html new file mode 100644 index 000000000..e5854e901 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_best_impr_select-members.html @@ -0,0 +1,48 @@ + + +ParadisEO-MOMovingObjects: Member List + + + + +
+ +
+ +

moBestImprSelect< M > Member List

This is the complete list of members for moBestImprSelect< M >, including all inherited members.

+ + + + + + + + + + +
best_fitnessmoBestImprSelect< M > [private]
best_movemoBestImprSelect< M > [private]
first_timemoBestImprSelect< M > [private]
Fitness typedefmoBestImprSelect< M >
functor_category()eoBF< M &, M::EOType::Fitness &, void > [static]
init(const Fitness &_fitness)moBestImprSelect< M > [inline, virtual]
operator()(M &_move, Fitness &_fitness)moBestImprSelect< M > [inline, virtual]
update(const M &_move, const Fitness &_fitness)moBestImprSelect< M > [inline, virtual]
~eoBF()eoBF< M &, M::EOType::Fitness &, void > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_best_impr_select.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_best_impr_select.html new file mode 100644 index 000000000..677f0b067 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_best_impr_select.html @@ -0,0 +1,224 @@ + + +ParadisEO-MOMovingObjects: moBestImprSelect< M > Class Template Reference + + + + +
+ +
+ +

moBestImprSelect< M > Class Template Reference

One of the possible moMoveSelect. +More... +

+#include <moBestImprSelect.h> +

+

+Inheritance diagram for moBestImprSelect< M >:
+
+ +

+ +moMoveSelect< M > +eoBF< M &, M::EOType::Fitness &, void > +eoFunctorBase + +
+ +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

+typedef M::EOType::Fitness Fitness
 Alias for the fitness.

Public Member Functions

void init (const Fitness &_fitness)
 Procedure which initialise the exploration.
bool update (const M &_move, const Fitness &_fitness)
 Function that indicates if the current move has not improved the fitness.
void operator() (M &_move, Fitness &_fitness)
 Procedure which saved the best move and fitness.

Private Attributes

+bool first_time
 Allowing to know if at least one move has been generated.
+M best_move
 The best move.
+Fitness best_fitness
 The best fitness.
+


Detailed Description

+

template<class M>
+ class moBestImprSelect< M >

+ +One of the possible moMoveSelect. +

+All neighbors are considered, and the movement which enables the best improvement is selected. +

Definition at line 47 of file moBestImprSelect.h.

+

Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + +
void moBestImprSelect< M >::init (const Fitness _fitness  )  [inline, virtual]
+
+
+ +

+Procedure which initialise the exploration. +

+

Parameters:
+ + +
_fitness The current fitness.
+
+ +

Implements moMoveSelect< M >.

+ +

Definition at line 58 of file moBestImprSelect.h.

+ +

References moBestImprSelect< M >::first_time.

+ +
+

+ +

+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
bool moBestImprSelect< M >::update (const M &  _move,
const Fitness _fitness 
) [inline, virtual]
+
+
+ +

+Function that indicates if the current move has not improved the fitness. +

+If the given fitness enables an improvment, the move (moMove) and the fitness linked to this move are saved.

+

Parameters:
+ + + +
_move a move.
_fitness a fitness linked to the move.
+
+
Returns:
TRUE if the move does not improve the fitness.
+ +

Implements moMoveSelect< M >.

+ +

Definition at line 76 of file moBestImprSelect.h.

+ +

References moBestImprSelect< M >::best_fitness, moBestImprSelect< M >::best_move, and moBestImprSelect< M >::first_time.

+ +
+

+ +

+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
void moBestImprSelect< M >::operator() (M &  _move,
Fitness _fitness 
) [inline, virtual]
+
+
+ +

+Procedure which saved the best move and fitness. +

+

Parameters:
+ + + +
_move the current move (result of the procedure).
_fitness the current fitness (result of the procedure).
+
+ +

Implements eoBF< M &, M::EOType::Fitness &, void >.

+ +

Definition at line 94 of file moBestImprSelect.h.

+ +

References moBestImprSelect< M >::best_fitness, moBestImprSelect< M >::best_move, and moBestImprSelect< M >::first_time.

+ +
+

+


The documentation for this class was generated from the following file: +
Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_best_impr_select.png b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_best_impr_select.png new file mode 100644 index 000000000..e803a39a4 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_best_impr_select.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_comparator-members.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_comparator-members.html new file mode 100644 index 000000000..eb360cecc --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_comparator-members.html @@ -0,0 +1,42 @@ + + +ParadisEO-MOMovingObjects: Member List + + + + +
+ +
+ +

moComparator< EOT > Member List

This is the complete list of members for moComparator< EOT >, including all inherited members.

+ + + + +
functor_category()eoBF< A1, A2, R > [static]
operator()(A1, A2)=0eoBF< A1, A2, R > [pure virtual]
~eoBF()eoBF< A1, A2, R > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_comparator.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_comparator.html new file mode 100644 index 000000000..80e6cde5d --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_comparator.html @@ -0,0 +1,68 @@ + + +ParadisEO-MOMovingObjects: moComparator< EOT > Class Template Reference + + + + +
+ +
+ +

moComparator< EOT > Class Template Reference

Template for classes which need to compare two EOT and indicate if the first is "better" than the second. +More... +

+#include <moComparator.h> +

+

+Inheritance diagram for moComparator< EOT >:
+
+ +

+ +eoBF< A1, A2, R > +eoFunctorBase +moFitComparator< EOT > + +
+ +

+List of all members. + +
+


Detailed Description

+

template<class EOT>
+ class moComparator< EOT >

+ +Template for classes which need to compare two EOT and indicate if the first is "better" than the second. +

+The objects that extend this template describe how an EOT is "better" than an other. +

Definition at line 45 of file moComparator.h.

+
The documentation for this class was generated from the following file: +
Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_comparator.png b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_comparator.png new file mode 100644 index 000000000..5c939a24d Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_comparator.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_cooling_schedule-members.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_cooling_schedule-members.html new file mode 100644 index 000000000..99bc9923e --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_cooling_schedule-members.html @@ -0,0 +1,42 @@ + + +ParadisEO-MOMovingObjects: Member List + + + + +
+ +
+ +

moCoolingSchedule Member List

This is the complete list of members for moCoolingSchedule, including all inherited members.

+ + + + +
functor_category()eoUF< double &, bool > [static]
operator()(double &)=0eoUF< double &, bool > [pure virtual]
~eoFunctorBase()eoFunctorBase [virtual]
~eoUF()eoUF< double &, bool > [virtual]


Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_cooling_schedule.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_cooling_schedule.html new file mode 100644 index 000000000..98f819688 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_cooling_schedule.html @@ -0,0 +1,66 @@ + + +ParadisEO-MOMovingObjects: moCoolingSchedule Class Reference + + + + +
+ +
+ +

moCoolingSchedule Class Reference

This class gives the description of a cooling schedule. +More... +

+#include <moCoolingSchedule.h> +

+

+Inheritance diagram for moCoolingSchedule:
+
+ +

+ +eoUF< double &, bool > +eoFunctorBase +moExponentialCoolingSchedule +moLinearCoolingSchedule + +
+ +

+List of all members. + +
+


Detailed Description

+This class gives the description of a cooling schedule. +

+It is only a description... An object that herits from this class is needed to be used in a moSA. See moExponentialCoolingSchedule or moLinearCoolingSchedule for example. +

Definition at line 46 of file moCoolingSchedule.h.

+
The documentation for this class was generated from the following file: +
Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_cooling_schedule.png b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_cooling_schedule.png new file mode 100644 index 000000000..f60c26373 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_cooling_schedule.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_exponential_cooling_schedule-members.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_exponential_cooling_schedule-members.html new file mode 100644 index 000000000..df71f9bbc --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_exponential_cooling_schedule-members.html @@ -0,0 +1,45 @@ + + +ParadisEO-MOMovingObjects: Member List + + + + +
+ +
+ +

moExponentialCoolingSchedule Member List

This is the complete list of members for moExponentialCoolingSchedule, including all inherited members.

+ + + + + + + +
functor_category()eoUF< double &, bool > [static]
moExponentialCoolingSchedule(double _threshold, double _ratio)moExponentialCoolingSchedule [inline]
operator()(double &_temperature)moExponentialCoolingSchedule [inline, virtual]
ratiomoExponentialCoolingSchedule [private]
thresholdmoExponentialCoolingSchedule [private]
~eoFunctorBase()eoFunctorBase [virtual]
~eoUF()eoUF< double &, bool > [virtual]


Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_exponential_cooling_schedule.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_exponential_cooling_schedule.html new file mode 100644 index 000000000..a750e6906 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_exponential_cooling_schedule.html @@ -0,0 +1,157 @@ + + +ParadisEO-MOMovingObjects: moExponentialCoolingSchedule Class Reference + + + + +
+ +
+ +

moExponentialCoolingSchedule Class Reference

One of the possible moCoolingSchedule. +More... +

+#include <moExponentialCoolingSchedule.h> +

+

+Inheritance diagram for moExponentialCoolingSchedule:
+
+ +

+ +moCoolingSchedule +eoUF< double &, bool > +eoFunctorBase + +
+ +

+List of all members. + + + + + + + + + + + + + + + +

Public Member Functions

 moExponentialCoolingSchedule (double _threshold, double _ratio)
 Simple constructor.
bool operator() (double &_temperature)
 Function which proceeds to the cooling.

Private Attributes

+double threshold
 The temperature threhold.
+double ratio
 The decreasing factor of the temperature.
+


Detailed Description

+One of the possible moCoolingSchedule. +

+An other very simple cooling schedule, the temperature decrease according to a ratio while the temperature is greater than a given threshold. +

Definition at line 46 of file moExponentialCoolingSchedule.h.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
moExponentialCoolingSchedule::moExponentialCoolingSchedule (double  _threshold,
double  _ratio 
) [inline]
+
+
+ +

+Simple constructor. +

+

Parameters:
+ + + +
_threshold the threshold.
_ratio the ratio used to descrease the temperature.
+
+ +

Definition at line 55 of file moExponentialCoolingSchedule.h.

+ +
+

+


Member Function Documentation

+ +
+
+ + + + + + + + + +
bool moExponentialCoolingSchedule::operator() (double &  _temperature  )  [inline, virtual]
+
+
+ +

+Function which proceeds to the cooling. +

+It decreases the temperature and indicates if it is greater than the threshold.

+

Parameters:
+ + +
_temperature the current temperature.
+
+
Returns:
if the new temperature (current temperature * ratio) is greater than the threshold.
+ +

Implements eoUF< double &, bool >.

+ +

Definition at line 65 of file moExponentialCoolingSchedule.h.

+ +

References ratio, and threshold.

+ +
+

+


The documentation for this class was generated from the following file: +
Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_exponential_cooling_schedule.png b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_exponential_cooling_schedule.png new file mode 100644 index 000000000..02c711475 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_exponential_cooling_schedule.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_first_impr_select-members.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_first_impr_select-members.html new file mode 100644 index 000000000..788c44ce0 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_first_impr_select-members.html @@ -0,0 +1,49 @@ + + +ParadisEO-MOMovingObjects: Member List + + + + +
+ +
+ +

moFirstImprSelect< M > Member List

This is the complete list of members for moFirstImprSelect< M >, including all inherited members.

+ + + + + + + + + + + +
best_fitnessmoFirstImprSelect< M > [private]
best_movemoFirstImprSelect< M > [private]
Fitness typedefmoFirstImprSelect< M >
functor_category()eoBF< M &, M::EOType::Fitness &, void > [static]
init(const Fitness &_fitness)moFirstImprSelect< M > [inline, virtual]
initial_fitnessmoFirstImprSelect< M > [private]
operator()(M &_move, Fitness &_fitness)moFirstImprSelect< M > [inline, virtual]
update(const M &_move, const Fitness &_fitness)moFirstImprSelect< M > [inline, virtual]
validmoFirstImprSelect< M > [private]
~eoBF()eoBF< M &, M::EOType::Fitness &, void > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_first_impr_select.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_first_impr_select.html new file mode 100644 index 000000000..9a3b79ad4 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_first_impr_select.html @@ -0,0 +1,228 @@ + + +ParadisEO-MOMovingObjects: moFirstImprSelect< M > Class Template Reference + + + + +
+ +
+ +

moFirstImprSelect< M > Class Template Reference

One possible moMoveSelect. +More... +

+#include <moFirstImprSelect.h> +

+

+Inheritance diagram for moFirstImprSelect< M >:
+
+ +

+ +moMoveSelect< M > +eoBF< M &, M::EOType::Fitness &, void > +eoFunctorBase + +
+ +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

+typedef M::EOType::Fitness Fitness
 Alias for the fitness.

Public Member Functions

virtual void init (const Fitness &_fitness)
 Procedure which initialise the exploration.
bool update (const M &_move, const Fitness &_fitness)
 Function that indicates if the current move has not improved the fitness.
void operator() (M &_move, Fitness &_fitness)
 Procedure which saved the best move and fitness.

Private Attributes

+bool valid
 Allow to know if at least one move has improved the solution.
+M best_move
 Best stored movement.
+Fitness initial_fitness
 Initial fitness.
+Fitness best_fitness
 Best stored fitness.
+


Detailed Description

+

template<class M>
+ class moFirstImprSelect< M >

+ +One possible moMoveSelect. +

+The neighborhood is explored until a move enables an improvment of the current solution. +

Definition at line 48 of file moFirstImprSelect.h.

+

Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + +
virtual void moFirstImprSelect< M >::init (const Fitness _fitness  )  [inline, virtual]
+
+
+ +

+Procedure which initialise the exploration. +

+It save the current fitness as the initial value for the fitness.

Parameters:
+ + +
_fitness The current fitness.
+
+ +

Implements moMoveSelect< M >.

+ +

Definition at line 60 of file moFirstImprSelect.h.

+ +

References moFirstImprSelect< M >::initial_fitness, and moFirstImprSelect< M >::valid.

+ +
+

+ +

+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
bool moFirstImprSelect< M >::update (const M &  _move,
const Fitness _fitness 
) [inline, virtual]
+
+
+ +

+Function that indicates if the current move has not improved the fitness. +

+If the given fitness enables an improvment, the move (moMove) should be applied to the current solution.

+

Parameters:
+ + + +
_move a move.
_fitness a fitness linked to the move.
+
+
Returns:
true if the move does not improve the fitness.
+ +

Implements moMoveSelect< M >.

+ +

Definition at line 75 of file moFirstImprSelect.h.

+ +

References moFirstImprSelect< M >::best_fitness, moFirstImprSelect< M >::best_move, moFirstImprSelect< M >::initial_fitness, and moFirstImprSelect< M >::valid.

+ +
+

+ +

+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
void moFirstImprSelect< M >::operator() (M &  _move,
Fitness _fitness 
) [inline, virtual]
+
+
+ +

+Procedure which saved the best move and fitness. +

+

Parameters:
+ + + +
_move the current move (result of the procedure).
_fitness the current fitness (result of the procedure).
+
+ +

Implements eoBF< M &, M::EOType::Fitness &, void >.

+ +

Definition at line 96 of file moFirstImprSelect.h.

+ +

References moFirstImprSelect< M >::best_fitness, moFirstImprSelect< M >::best_move, and moFirstImprSelect< M >::valid.

+ +
+

+


The documentation for this class was generated from the following file: +
Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_first_impr_select.png b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_first_impr_select.png new file mode 100644 index 000000000..a2a1234c8 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_first_impr_select.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_fit_comparator-members.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_fit_comparator-members.html new file mode 100644 index 000000000..9f572187e --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_fit_comparator-members.html @@ -0,0 +1,43 @@ + + +ParadisEO-MOMovingObjects: Member List + + + + +
+ +
+ +

moFitComparator< EOT > Member List

This is the complete list of members for moFitComparator< EOT >, including all inherited members.

+ + + + + +
functor_category()eoBF< A1, A2, R > [static]
operator()(const EOT &_solution1, const EOT &_solution2)moFitComparator< EOT > [inline]
moComparator::operator()(A1, A2)=0eoBF< A1, A2, R > [pure virtual]
~eoBF()eoBF< A1, A2, R > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_fit_comparator.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_fit_comparator.html new file mode 100644 index 000000000..c4c39bdab --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_fit_comparator.html @@ -0,0 +1,115 @@ + + +ParadisEO-MOMovingObjects: moFitComparator< EOT > Class Template Reference + + + + +
+ +
+ +

moFitComparator< EOT > Class Template Reference

Comparison according to the fitness. +More... +

+#include <moFitComparator.h> +

+

+Inheritance diagram for moFitComparator< EOT >:
+
+ +

+ +moComparator< EOT > +eoBF< A1, A2, R > +eoFunctorBase + +
+ +

+List of all members. + + + + + +

Public Member Functions

bool operator() (const EOT &_solution1, const EOT &_solution2)
 Function which makes the comparison and gives the result.
+


Detailed Description

+

template<class EOT>
+ class moFitComparator< EOT >

+ +Comparison according to the fitness. +

+An EOT is better than an other if its fitness is better. +

Definition at line 46 of file moFitComparator.h.

+

Member Function Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + + + + + + + + + + +
bool moFitComparator< EOT >::operator() (const EOT &  _solution1,
const EOT &  _solution2 
) [inline]
+
+
+ +

+Function which makes the comparison and gives the result. +

+

Parameters:
+ + + +
_solution1 The first solution.
_solution2 The second solution.
+
+
Returns:
true if the fitness of the first solution is better than the second solution, false else.
+ +

Definition at line 56 of file moFitComparator.h.

+ +
+

+


The documentation for this class was generated from the following file: +
Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_fit_comparator.png b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_fit_comparator.png new file mode 100644 index 000000000..38eca919c Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_fit_comparator.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_fit_sol_continue-members.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_fit_sol_continue-members.html new file mode 100644 index 000000000..daac51b4b --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_fit_sol_continue-members.html @@ -0,0 +1,46 @@ + + +ParadisEO-MOMovingObjects: Member List + + + + +
+ +
+ +

moFitSolContinue< EOT > Member List

This is the complete list of members for moFitSolContinue< EOT >, including all inherited members.

+ + + + + + + + +
Fitness typedefmoFitSolContinue< EOT >
fitnessmoFitSolContinue< EOT > [private]
functor_category()eoUF< const EOT &, bool > [static]
init()moFitSolContinue< EOT > [inline, virtual]
moFitSolContinue(Fitness _fitness)moFitSolContinue< EOT > [inline]
operator()(const EOT &_solution)moFitSolContinue< EOT > [inline, virtual]
~eoFunctorBase()eoFunctorBase [virtual]
~eoUF()eoUF< const EOT &, bool > [virtual]


Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_fit_sol_continue.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_fit_sol_continue.html new file mode 100644 index 000000000..154e7f05d --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_fit_sol_continue.html @@ -0,0 +1,185 @@ + + +ParadisEO-MOMovingObjects: moFitSolContinue< EOT > Class Template Reference + + + + +
+ +
+ +

moFitSolContinue< EOT > Class Template Reference

One possible stop criterion for a solution-based heuristic. +More... +

+#include <moFitSolContinue.h> +

+

+Inheritance diagram for moFitSolContinue< EOT >:
+
+ +

+ +moSolContinue< EOT > +eoUF< const EOT &, bool > +eoFunctorBase + +
+ +

+List of all members. + + + + + + + + + + + + + + + + + + + +

Public Types

+typedef EOT::Fitness Fitness
 Alias for the fitness.

Public Member Functions

 moFitSolContinue (Fitness _fitness)
 Basic constructor.
bool operator() (const EOT &_solution)
 Function that activates the stopping criterion.
void init ()
 Procedure which allows to initialise all the stuff needed.

Private Attributes

+Fitness fitness
 Fitness target.
+


Detailed Description

+

template<class EOT>
+ class moFitSolContinue< EOT >

+ +One possible stop criterion for a solution-based heuristic. +

+The stop criterion corresponds to a fitness threshold gained. +

Definition at line 46 of file moFitSolContinue.h.

+

Constructor & Destructor Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + +
moFitSolContinue< EOT >::moFitSolContinue (Fitness  _fitness  )  [inline]
+
+
+ +

+Basic constructor. +

+

Parameters:
+ + +
_fitness The fitness to reach.
+
+ +

Definition at line 57 of file moFitSolContinue.h.

+ +
+

+


Member Function Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + +
bool moFitSolContinue< EOT >::operator() (const EOT &  _solution  )  [inline, virtual]
+
+
+ +

+Function that activates the stopping criterion. +

+Indicates if the fitness threshold has not yet been reached.

+

Parameters:
+ + +
_solution the current solution.
+
+
Returns:
true or false according to the value of the fitness.
+ +

Implements eoUF< const EOT &, bool >.

+ +

Definition at line 67 of file moFitSolContinue.h.

+ +

References moFitSolContinue< EOT >::fitness.

+ +
+

+ +

+
+
+template<class EOT>
+ + + + + + + + +
void moFitSolContinue< EOT >::init (  )  [inline, virtual]
+
+
+ +

+Procedure which allows to initialise all the stuff needed. +

+It can be also used to reinitialize all the needed things. +

Implements moSolContinue< EOT >.

+ +

Definition at line 81 of file moFitSolContinue.h.

+ +
+

+


The documentation for this class was generated from the following file: +
Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_fit_sol_continue.png b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_fit_sol_continue.png new file mode 100644 index 000000000..76c36e46c Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_fit_sol_continue.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_gen_sol_continue-members.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_gen_sol_continue-members.html new file mode 100644 index 000000000..bbee03155 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_gen_sol_continue-members.html @@ -0,0 +1,46 @@ + + +ParadisEO-MOMovingObjects: Member List + + + + +
+ +
+ +

moGenSolContinue< EOT > Member List

This is the complete list of members for moGenSolContinue< EOT >, including all inherited members.

+ + + + + + + + +
functor_category()eoUF< const EOT &, bool > [static]
generationMaximumNumbermoGenSolContinue< EOT > [private]
generationNumbermoGenSolContinue< EOT > [private]
init()moGenSolContinue< EOT > [inline, virtual]
moGenSolContinue(unsigned int _generationMaximumNumber)moGenSolContinue< EOT > [inline]
operator()(const EOT &_solution)moGenSolContinue< EOT > [inline, virtual]
~eoFunctorBase()eoFunctorBase [virtual]
~eoUF()eoUF< const EOT &, bool > [virtual]


Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_gen_sol_continue.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_gen_sol_continue.html new file mode 100644 index 000000000..e53845199 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_gen_sol_continue.html @@ -0,0 +1,186 @@ + + +ParadisEO-MOMovingObjects: moGenSolContinue< EOT > Class Template Reference + + + + +
+ +
+ +

moGenSolContinue< EOT > Class Template Reference

One possible stop criterion for a solution-based heuristic. +More... +

+#include <moGenSolContinue.h> +

+

+Inheritance diagram for moGenSolContinue< EOT >:
+
+ +

+ +moSolContinue< EOT > +eoUF< const EOT &, bool > +eoFunctorBase + +
+ +

+List of all members. + + + + + + + + + + + + + + + + + + +

Public Member Functions

 moGenSolContinue (unsigned int _generationMaximumNumber)
 Simple constructor.
bool operator() (const EOT &_solution)
 Function that activates the stop criterion.
void init ()
 Procedure which allows to initialise the generation counter.

Private Attributes

+unsigned int generationMaximumNumber
 Iteration maximum number.
+unsigned int generationNumber
 Iteration current number.
+


Detailed Description

+

template<class EOT>
+ class moGenSolContinue< EOT >

+ +One possible stop criterion for a solution-based heuristic. +

+The stop criterion corresponds to a maximum number of iteration. +

Definition at line 46 of file moGenSolContinue.h.

+

Constructor & Destructor Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + +
moGenSolContinue< EOT >::moGenSolContinue (unsigned int  _generationMaximumNumber  )  [inline]
+
+
+ +

+Simple constructor. +

+

Parameters:
+ + +
_generationMaximumNumber The maximum number of generations.
+
+ +

Definition at line 54 of file moGenSolContinue.h.

+ +
+

+


Member Function Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + +
bool moGenSolContinue< EOT >::operator() (const EOT &  _solution  )  [inline, virtual]
+
+
+ +

+Function that activates the stop criterion. +

+Increments the counter and returns TRUE if the current number of iteration is lower than the given maximum number of iterations.

+

Parameters:
+ + +
_solution The current solution.
+
+
Returns:
true or false according to the current generation number.
+ +

Implements eoUF< const EOT &, bool >.

+ +

Definition at line 66 of file moGenSolContinue.h.

+ +

References moGenSolContinue< EOT >::generationMaximumNumber, and moGenSolContinue< EOT >::generationNumber.

+ +
+

+ +

+
+
+template<class EOT>
+ + + + + + + + +
void moGenSolContinue< EOT >::init (  )  [inline, virtual]
+
+
+ +

+Procedure which allows to initialise the generation counter. +

+It can also be used to reset the iteration counter. +

Implements moSolContinue< EOT >.

+ +

Definition at line 78 of file moGenSolContinue.h.

+ +

References moGenSolContinue< EOT >::generationNumber.

+ +
+

+


The documentation for this class was generated from the following file: +
Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_gen_sol_continue.png b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_gen_sol_continue.png new file mode 100644 index 000000000..b40e34991 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_gen_sol_continue.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_h_c-members.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_h_c-members.html new file mode 100644 index 000000000..08ca515b3 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_h_c-members.html @@ -0,0 +1,59 @@ + + +ParadisEO-MOMovingObjects: Member List + + + + +
+ +
+ +

moHC< M > Member List

This is the complete list of members for moHC< M >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
binaryeoOp< EOType >
className() consteoMonOp< M::EOType > [virtual]
eoMonOp()eoMonOp< M::EOType >
eoOp(OpType _type)eoOp< EOType >
eoOp(const eoOp &_eop)eoOp< EOType >
EOT typedefmoHC< M > [private]
Fitness typedefmoHC< M > [private]
full_evaluationmoHC< M > [private]
functor_category()eoUF< M::EOType &, bool > [static]
generaleoOp< EOType >
getType() consteoOp< EOType >
moHC(moMoveInit< M > &_move_initializer, moNextMove< M > &_next_move_generator, moMoveIncrEval< M > &_incremental_evaluation, moMoveSelect< M > &_move_selection, eoEvalFunc< EOT > &_full_evaluation)moHC< M > [inline]
moHC(moMoveExpl< M > &_move_explorer, eoEvalFunc< EOT > &_full_evaluation)moHC< M > [inline]
move_explorermoHC< M > [private]
operator()(EOT &_solution)moHC< M > [inline, virtual]
OpType enum nameeoOp< EOType >
quadraticeoOp< EOType >
unaryeoOp< EOType >
~eoFunctorBase()eoFunctorBase [virtual]
~eoOp()eoOp< EOType > [virtual]
~eoUF()eoUF< M::EOType &, bool > [virtual]


Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_h_c.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_h_c.html new file mode 100644 index 000000000..8a731042e --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_h_c.html @@ -0,0 +1,231 @@ + + +ParadisEO-MOMovingObjects: moHC< M > Class Template Reference + + + + +
+ +
+ +

moHC< M > Class Template Reference

Hill Climbing (HC). +More... +

+#include <moHC.h> +

+Inherits moAlgo< M::EOType >. +

+ +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 moHC (moMoveInit< M > &_move_initializer, moNextMove< M > &_next_move_generator, moMoveIncrEval< M > &_incremental_evaluation, moMoveSelect< M > &_move_selection, eoEvalFunc< EOT > &_full_evaluation)
 Full constructor.
 moHC (moMoveExpl< M > &_move_explorer, eoEvalFunc< EOT > &_full_evaluation)
 Light constructor.
bool operator() (EOT &_solution)
 Function which launches the HC.

Private Types

+typedef M::EOType EOT
 Alias for the type.
+typedef EOT::Fitness Fitness
 Alias for the fitness.

Private Attributes

+moMoveExpl< M > & move_explorer
 Complete exploration of the neighborhood.
+eoEvalFunc< EOT > & full_evaluation
 A full evaluation function.
+


Detailed Description

+

template<class M>
+ class moHC< M >

+ +Hill Climbing (HC). +

+Class which describes the algorithm for a hill climbing. +

Definition at line 49 of file moHC.h.

+

Constructor & Destructor Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
moHC< M >::moHC (moMoveInit< M > &  _move_initializer,
moNextMove< M > &  _next_move_generator,
moMoveIncrEval< M > &  _incremental_evaluation,
moMoveSelect< M > &  _move_selection,
eoEvalFunc< EOT > &  _full_evaluation 
) [inline]
+
+
+ +

+Full constructor. +

+All the boxes are given in order the HC to use a moHCMoveLoopExpl.

+

Parameters:
+ + + + + + +
_move_initializer a move initialiser.
_next_move_generator a neighborhood explorer.
_incremental_evaluation a (generally) efficient evaluation function.
_move_selection a move selector.
_full_evaluation a full evaluation function.
+
+ +

Definition at line 69 of file moHC.h.

+ +
+

+ +

+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
moHC< M >::moHC (moMoveExpl< M > &  _move_explorer,
eoEvalFunc< EOT > &  _full_evaluation 
) [inline]
+
+
+ +

+Light constructor. +

+This constructor allow to use another moMoveExpl (generally not a moHCMoveLoopExpl).

+

Parameters:
+ + + +
_move_explorer a complete explorer.
_full_evaluation a full evaluation function.
+
+ +

Definition at line 82 of file moHC.h.

+ +
+

+


Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + +
bool moHC< M >::operator() (EOT _solution  )  [inline, virtual]
+
+
+ +

+Function which launches the HC. +

+The HC has to improve a current solution. As the moSA and the mo TS, it can be used for HYBRIDATION in an evolutionnary algorithm.

+

Parameters:
+ + +
_solution a current solution to improve.
+
+
Returns:
true.
+ +

Implements eoUF< M::EOType &, bool >.

+ +

Definition at line 94 of file moHC.h.

+ +

References moHC< M >::full_evaluation, and moHC< M >::move_explorer.

+ +
+

+


The documentation for this class was generated from the following file: +
Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_h_c_move_loop_expl-members.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_h_c_move_loop_expl-members.html new file mode 100644 index 000000000..c8d5d9da2 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_h_c_move_loop_expl-members.html @@ -0,0 +1,49 @@ + + +ParadisEO-MOMovingObjects: Member List + + + + +
+ +
+ +

moHCMoveLoopExpl< M > Member List

This is the complete list of members for moHCMoveLoopExpl< M >, including all inherited members.

+ + + + + + + + + + + +
EOT typedefmoHCMoveLoopExpl< M > [private]
Fitness typedefmoHCMoveLoopExpl< M > [private]
functor_category()eoBF< const M::EOType &, M::EOType &, void > [static]
incremental_evaluationmoHCMoveLoopExpl< M > [private]
moHCMoveLoopExpl(moMoveInit< M > &_move_initializer, moNextMove< M > &_next_move_generator, moMoveIncrEval< M > &_incremental_evaluation, moMoveSelect< M > &_move_selection)moHCMoveLoopExpl< M > [inline]
move_initializermoHCMoveLoopExpl< M > [private]
move_selectionmoHCMoveLoopExpl< M > [private]
next_move_generatormoHCMoveLoopExpl< M > [private]
operator()(const EOT &_old_solution, EOT &_new_solution)moHCMoveLoopExpl< M > [inline, virtual]
~eoBF()eoBF< const M::EOType &, M::EOType &, void > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_h_c_move_loop_expl.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_h_c_move_loop_expl.html new file mode 100644 index 000000000..c3a9848bf --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_h_c_move_loop_expl.html @@ -0,0 +1,204 @@ + + +ParadisEO-MOMovingObjects: moHCMoveLoopExpl< M > Class Template Reference + + + + +
+ +
+ +

moHCMoveLoopExpl< M > Class Template Reference

Iterative explorer used by a moHC. +More... +

+#include <moHCMoveLoopExpl.h> +

+

+Inheritance diagram for moHCMoveLoopExpl< M >:
+
+ +

+ +moMoveLoopExpl< M > +moMoveExpl< M > +eoBF< const M::EOType &, M::EOType &, void > +eoFunctorBase + +
+ +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 moHCMoveLoopExpl (moMoveInit< M > &_move_initializer, moNextMove< M > &_next_move_generator, moMoveIncrEval< M > &_incremental_evaluation, moMoveSelect< M > &_move_selection)
 Constructor.
void operator() (const EOT &_old_solution, EOT &_new_solution)
 Procedure which launches the explorer.

Private Types

+typedef M::EOType EOT
 Alias for the type.
+typedef M::EOType::Fitness Fitness
 Alias for the fitness.

Private Attributes

+moMoveInit< M > & move_initializer
 Move initialiser.
+moNextMove< M > & next_move_generator
 Neighborhood explorer.
+moMoveIncrEval< M > & incremental_evaluation
 (generally) Efficient evaluation.
+moMoveSelect< M > & move_selection
 Move selector.
+


Detailed Description

+

template<class M>
+ class moHCMoveLoopExpl< M >

+ +Iterative explorer used by a moHC. +

Definition at line 47 of file moHCMoveLoopExpl.h.

+

Constructor & Destructor Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
moHCMoveLoopExpl< M >::moHCMoveLoopExpl (moMoveInit< M > &  _move_initializer,
moNextMove< M > &  _next_move_generator,
moMoveIncrEval< M > &  _incremental_evaluation,
moMoveSelect< M > &  _move_selection 
) [inline]
+
+
+ +

+Constructor. +

+All the boxes have to be specified.

+

Parameters:
+ + + + + +
_move_initializer The move initialiser.
_next_move_generator The neighbourhood explorer.
_incremental_evaluation (generally) Efficient evaluation function.
_move_selection The move selector.
+
+ +

Definition at line 66 of file moHCMoveLoopExpl.h.

+ +
+

+


Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
void moHCMoveLoopExpl< M >::operator() (const EOT _old_solution,
EOT _new_solution 
) [inline, virtual]
+
+
+ +

+Procedure which launches the explorer. +

+The exploration starts from an old solution and provides a new solution.

+

Parameters:
+ + + +
_old_solution The current solution.
_new_solution The new solution (result of the procedure).
+
+ +

Implements eoBF< const M::EOType &, M::EOType &, void >.

+ +

Definition at line 79 of file moHCMoveLoopExpl.h.

+ +

References moHCMoveLoopExpl< M >::incremental_evaluation, moHCMoveLoopExpl< M >::move_initializer, moHCMoveLoopExpl< M >::move_selection, and moHCMoveLoopExpl< M >::next_move_generator.

+ +
+

+


The documentation for this class was generated from the following file: +
Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_h_c_move_loop_expl.png b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_h_c_move_loop_expl.png new file mode 100644 index 000000000..8c76fd46e Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_h_c_move_loop_expl.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_i_l_s-members.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_i_l_s-members.html new file mode 100644 index 000000000..d460e67e5 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_i_l_s-members.html @@ -0,0 +1,64 @@ + + +ParadisEO-MOMovingObjects: Member List + + + + +
+ +
+ +

moILS< M > Member List

This is the complete list of members for moILS< M >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
acceptance_criterionmoILS< M > [private]
algorithmmoILS< M > [private]
binaryeoOp< EOType >
className() consteoMonOp< M::EOType > [virtual]
continumoILS< M > [private]
eoMonOp()eoMonOp< M::EOType >
eoOp(OpType _type)eoOp< EOType >
eoOp(const eoOp &_eop)eoOp< EOType >
EOT typedefmoILS< M > [private]
Fitness typedefmoILS< M > [private]
full_evaluationmoILS< M > [private]
functor_category()eoUF< M::EOType &, bool > [static]
generaleoOp< EOType >
getType() consteoOp< EOType >
moILS(moAlgo< EOT > &_algorithm, moSolContinue< EOT > &_continue, moComparator< EOT > &_acceptance_criterion, eoMonOp< EOT > &_perturbation, eoEvalFunc< EOT > &_full_evaluation)moILS< M > [inline]
moILS(moMoveInit< M > &_move_initializer, moNextMove< M > &_next_move_generator, moMoveIncrEval< M > &_incremental_evaluation, moMoveSelect< M > &_move_selection, moSolContinue< EOT > &_continue, moComparator< EOT > &_acceptance_criterion, eoMonOp< EOT > &_perturbation, eoEvalFunc< EOT > &_full_evaluation)moILS< M > [inline]
moILS(moMoveInit< M > &_move_initializer, moNextMove< M > &_next_move_generator, moMoveIncrEval< M > &_incremental_evaluation, moTabuList< M > &_tabu_list, moAspirCrit< M > &_aspiration_criterion, moSolContinue< EOT > &_moTS_continue, moSolContinue< EOT > &_continue, moComparator< EOT > &_acceptance_criterion, eoMonOp< EOT > &_perturbation, eoEvalFunc< EOT > &_full_evaluation)moILS< M > [inline]
moILS(moRandMove< M > &_random_move_generator, moMoveIncrEval< M > &_incremental_evaluation, moSolContinue< EOT > &_moSA_continue, double _initial_temperature, moCoolingSchedule &_cooling_schedule, moSolContinue< EOT > &_continue, moComparator< EOT > &_acceptance_criterion, eoMonOp< EOT > &_perturbation, eoEvalFunc< EOT > &_full_evaluation)moILS< M > [inline]
operator()(EOT &_solution)moILS< M > [inline, virtual]
OpType enum nameeoOp< EOType >
perturbationmoILS< M > [private]
quadraticeoOp< EOType >
unaryeoOp< EOType >
~eoFunctorBase()eoFunctorBase [virtual]
~eoOp()eoOp< EOType > [virtual]
~eoUF()eoUF< M::EOType &, bool > [virtual]


Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_i_l_s.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_i_l_s.html new file mode 100644 index 000000000..646c31b74 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_i_l_s.html @@ -0,0 +1,477 @@ + + +ParadisEO-MOMovingObjects: moILS< M > Class Template Reference + + + + +
+ +
+ +

moILS< M > Class Template Reference

Iterated Local Search (ILS). +More... +

+#include <moILS.h> +

+Inherits moAlgo< M::EOType >. +

+ +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 moILS (moAlgo< EOT > &_algorithm, moSolContinue< EOT > &_continue, moComparator< EOT > &_acceptance_criterion, eoMonOp< EOT > &_perturbation, eoEvalFunc< EOT > &_full_evaluation)
 Generic constructor.
 moILS (moMoveInit< M > &_move_initializer, moNextMove< M > &_next_move_generator, moMoveIncrEval< M > &_incremental_evaluation, moMoveSelect< M > &_move_selection, moSolContinue< EOT > &_continue, moComparator< EOT > &_acceptance_criterion, eoMonOp< EOT > &_perturbation, eoEvalFunc< EOT > &_full_evaluation)
 Constructor for using a moHC for the moAlgo.
 moILS (moMoveInit< M > &_move_initializer, moNextMove< M > &_next_move_generator, moMoveIncrEval< M > &_incremental_evaluation, moTabuList< M > &_tabu_list, moAspirCrit< M > &_aspiration_criterion, moSolContinue< EOT > &_moTS_continue, moSolContinue< EOT > &_continue, moComparator< EOT > &_acceptance_criterion, eoMonOp< EOT > &_perturbation, eoEvalFunc< EOT > &_full_evaluation)
 Constructor for using a moTS for the moAlgo.
 moILS (moRandMove< M > &_random_move_generator, moMoveIncrEval< M > &_incremental_evaluation, moSolContinue< EOT > &_moSA_continue, double _initial_temperature, moCoolingSchedule &_cooling_schedule, moSolContinue< EOT > &_continue, moComparator< EOT > &_acceptance_criterion, eoMonOp< EOT > &_perturbation, eoEvalFunc< EOT > &_full_evaluation)
 Constructor for using a moSA for the moAlgo.
bool operator() (EOT &_solution)
 Function which launches the ILS.

Private Types

+typedef M::EOType EOT
 Alias for the type.
+typedef EOT::Fitness Fitness
 Alias for the fitness.

Private Attributes

+moAlgo< EOT > & algorithm
 The solution based heuristic.
+moSolContinue< EOT > & continu
 The stopping criterion.
+moComparator< EOT > & acceptance_criterion
 The acceptance criterion.
+eoMonOp< EOT > & perturbation
 The perturbation generator.
+eoEvalFunc< EOT > & full_evaluation
 The full evaluation function.
+


Detailed Description

+

template<class M>
+ class moILS< M >

+ +Iterated Local Search (ILS). +

+Class which describes the algorithm for a iterated local search. +

Definition at line 50 of file moILS.h.

+

Constructor & Destructor Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
moILS< M >::moILS (moAlgo< EOT > &  _algorithm,
moSolContinue< EOT > &  _continue,
moComparator< EOT > &  _acceptance_criterion,
eoMonOp< EOT > &  _perturbation,
eoEvalFunc< EOT > &  _full_evaluation 
) [inline]
+
+
+ +

+Generic constructor. +

+Generic constructor using a moAlgo

+

Parameters:
+ + + + + + +
_algorithm The solution based heuristic to use.
_continue The stopping criterion.
_acceptance_criterion The acceptance criterion.
_perturbation The pertubation generator.
_full_evaluation The evaluation function.
+
+ +

Definition at line 70 of file moILS.h.

+ +
+

+ +

+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
moILS< M >::moILS (moMoveInit< M > &  _move_initializer,
moNextMove< M > &  _next_move_generator,
moMoveIncrEval< M > &  _incremental_evaluation,
moMoveSelect< M > &  _move_selection,
moSolContinue< EOT > &  _continue,
moComparator< EOT > &  _acceptance_criterion,
eoMonOp< EOT > &  _perturbation,
eoEvalFunc< EOT > &  _full_evaluation 
) [inline]
+
+
+ +

+Constructor for using a moHC for the moAlgo. +

+

Parameters:
+ + + + + + + + + +
_move_initializer The move initialisation (for the moHC).
_next_move_generator The move generator (for the moHC).
_incremental_evaluation The partial evaluation function (for the moHC).
_move_selection The move selection strategy (for the moHC).
_continue The stopping criterion.
_acceptance_criterion The acceptance criterion.
_perturbation The pertubation generator.
_full_evaluation The evaluation function.
+
+ +

Definition at line 87 of file moILS.h.

+ +
+

+ +

+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
moILS< M >::moILS (moMoveInit< M > &  _move_initializer,
moNextMove< M > &  _next_move_generator,
moMoveIncrEval< M > &  _incremental_evaluation,
moTabuList< M > &  _tabu_list,
moAspirCrit< M > &  _aspiration_criterion,
moSolContinue< EOT > &  _moTS_continue,
moSolContinue< EOT > &  _continue,
moComparator< EOT > &  _acceptance_criterion,
eoMonOp< EOT > &  _perturbation,
eoEvalFunc< EOT > &  _full_evaluation 
) [inline]
+
+
+ +

+Constructor for using a moTS for the moAlgo. +

+

Parameters:
+ + + + + + + + + + + +
_move_initializer The move initialisation (for the moTS).
_next_move_generator The move generator (for the moTS).
_incremental_evaluation The partial evaluation function (for the moTS).
_tabu_list The tabu list (for the moTS !!!!).
_aspiration_criterion The aspiration criterion (for the moTS).
_moTS_continue The stopping criterion (for the moTS).
_continue The stopping criterion.
_acceptance_criterion The acceptance criterion.
_perturbation The pertubation generator.
_full_evaluation The evaluation function.
+
+ +

Definition at line 108 of file moILS.h.

+ +
+

+ +

+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
moILS< M >::moILS (moRandMove< M > &  _random_move_generator,
moMoveIncrEval< M > &  _incremental_evaluation,
moSolContinue< EOT > &  _moSA_continue,
double  _initial_temperature,
moCoolingSchedule _cooling_schedule,
moSolContinue< EOT > &  _continue,
moComparator< EOT > &  _acceptance_criterion,
eoMonOp< EOT > &  _perturbation,
eoEvalFunc< EOT > &  _full_evaluation 
) [inline]
+
+
+ +

+Constructor for using a moSA for the moAlgo. +

+

Parameters:
+ + + + + + + + + + +
_random_move_generator The random move generator (for the moSA).
_incremental_evaluation The partial evaluation function (for the moSA).
_moSA_continue The stopping criterion (for the moSA).
_initial_temperature The initial temperature (for the moSA).
_cooling_schedule The cooling schedule (for the moSA).
_continue The stopping criterion.
_acceptance_criterion The acceptance criterion.
_perturbation The pertubation generator.
_full_evaluation The evaluation function.
+
+ +

Definition at line 130 of file moILS.h.

+ +
+

+


Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + +
bool moILS< M >::operator() (EOT _solution  )  [inline, virtual]
+
+
+ +

+Function which launches the ILS. +

+The ILS has to improve a current solution. As the moSA, the moTS and the moHC, it can be used for HYBRIDATION in an evolutionnary algorithm.

+

Parameters:
+ + +
_solution a current solution to improve.
+
+
Returns:
true.
+ +

Implements eoUF< M::EOType &, bool >.

+ +

Definition at line 146 of file moILS.h.

+ +

References moILS< M >::acceptance_criterion, moILS< M >::algorithm, moILS< M >::continu, moILS< M >::full_evaluation, and moILS< M >::perturbation.

+ +
+

+


The documentation for this class was generated from the following file: +
Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_impr_best_fit_aspir_crit-members.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_impr_best_fit_aspir_crit-members.html new file mode 100644 index 000000000..f040fb109 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_impr_best_fit_aspir_crit-members.html @@ -0,0 +1,48 @@ + + +ParadisEO-MOMovingObjects: Member List + + + + +
+ +
+ +

moImprBestFitAspirCrit< M > Member List

This is the complete list of members for moImprBestFitAspirCrit< M >, including all inherited members.

+ + + + + + + + + + +
best_fitnessmoImprBestFitAspirCrit< M > [private]
first_timemoImprBestFitAspirCrit< M > [private]
Fitness typedefmoImprBestFitAspirCrit< M >
functor_category()eoBF< A1, A2, R > [static]
init()moImprBestFitAspirCrit< M > [inline, virtual]
moImprBestFitAspirCrit()moImprBestFitAspirCrit< M > [inline]
operator()(const M &_move, const Fitness &_fitness)moImprBestFitAspirCrit< M > [inline]
moAspirCrit::operator()(A1, A2)=0eoBF< A1, A2, R > [pure virtual]
~eoBF()eoBF< A1, A2, R > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_impr_best_fit_aspir_crit.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_impr_best_fit_aspir_crit.html new file mode 100644 index 000000000..7db3c3395 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_impr_best_fit_aspir_crit.html @@ -0,0 +1,140 @@ + + +ParadisEO-MOMovingObjects: moImprBestFitAspirCrit< M > Class Template Reference + + + + +
+ +
+ +

moImprBestFitAspirCrit< M > Class Template Reference

One of the possible moAspirCrit. +More... +

+#include <moImprBestFitAspirCrit.h> +

+

+Inheritance diagram for moImprBestFitAspirCrit< M >:
+
+ +

+ +moAspirCrit< M > +eoBF< A1, A2, R > +eoFunctorBase + +
+ +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + +

Public Types

+typedef M::EOType::Fitness Fitness
 Alias for the fitness.

Public Member Functions

moImprBestFitAspirCrit ()
 Contructor.
+void init ()
 Initialisation procedure.
bool operator() (const M &_move, const Fitness &_fitness)
 Function that indicates if the current fitness is better that the already saved fitness.

Private Attributes

+Fitness best_fitness
 Best fitness found until now.
+bool first_time
 Indicates that a fitness has been already saved or not.
+


Detailed Description

+

template<class M>
+ class moImprBestFitAspirCrit< M >

+ +One of the possible moAspirCrit. +

+This criterion is satisfied when a given fitness is the best ever considered. +

Definition at line 47 of file moImprBestFitAspirCrit.h.

+

Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
bool moImprBestFitAspirCrit< M >::operator() (const M &  _move,
const Fitness _fitness 
) [inline]
+
+
+ +

+Function that indicates if the current fitness is better that the already saved fitness. +

+The first time, the function only saved the current move and fitness.

+

Parameters:
+ + + +
_move A move.
_fitness A fitness linked to the move.
+
+
Returns:
true The first time and if _fitntess > best_fitness, else false.
+ +

Definition at line 75 of file moImprBestFitAspirCrit.h.

+ +

References moImprBestFitAspirCrit< M >::best_fitness, and moImprBestFitAspirCrit< M >::first_time.

+ +
+

+


The documentation for this class was generated from the following file: +
Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_impr_best_fit_aspir_crit.png b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_impr_best_fit_aspir_crit.png new file mode 100644 index 000000000..76e0473f0 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_impr_best_fit_aspir_crit.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_it_rand_next_move-members.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_it_rand_next_move-members.html new file mode 100644 index 000000000..363c9db1a --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_it_rand_next_move-members.html @@ -0,0 +1,48 @@ + + +ParadisEO-MOMovingObjects: Member List + + + + +
+ +
+ +

moItRandNextMove< M > Member List

This is the complete list of members for moItRandNextMove< M >, including all inherited members.

+ + + + + + + + + + +
EOT typedefmoItRandNextMove< M > [private]
functor_category()eoBF< A1, A2, R > [static]
iteration_maximum_numbermoItRandNextMove< M > [private]
iteration_numbermoItRandNextMove< M > [private]
moItRandNextMove(moRandMove< M > &_random_move_generator, unsigned int _iteration_maximum_number)moItRandNextMove< M > [inline]
operator()(M &_move, const EOT &_solution)moItRandNextMove< M > [inline]
moNextMove::operator()(A1, A2)=0eoBF< A1, A2, R > [pure virtual]
random_move_generatormoItRandNextMove< M > [private]
~eoBF()eoBF< A1, A2, R > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_it_rand_next_move.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_it_rand_next_move.html new file mode 100644 index 000000000..98565e158 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_it_rand_next_move.html @@ -0,0 +1,182 @@ + + +ParadisEO-MOMovingObjects: moItRandNextMove< M > Class Template Reference + + + + +
+ +
+ +

moItRandNextMove< M > Class Template Reference

One of the possible moNextMove. +More... +

+#include <moItRandNextMove.h> +

+

+Inheritance diagram for moItRandNextMove< M >:
+
+ +

+ +moNextMove< M > +eoBF< A1, A2, R > +eoFunctorBase + +
+ +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 moItRandNextMove (moRandMove< M > &_random_move_generator, unsigned int _iteration_maximum_number)
 The constructor.
bool operator() (M &_move, const EOT &_solution)
 Generation of a new move.

Private Types

+typedef M::EOType EOT
 Alias for the type.

Private Attributes

+moRandMove< M > & random_move_generator
 A move generator (generally randomly).
+unsigned int iteration_maximum_number
 Iteration maximum number.
+unsigned int iteration_number
 Iteration current number.
+


Detailed Description

+

template<class M>
+ class moItRandNextMove< M >

+ +One of the possible moNextMove. +

+This class is a move (moMove) generator with a bound for the maximum number of iterations. +

Definition at line 47 of file moItRandNextMove.h.

+

Constructor & Destructor Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
moItRandNextMove< M >::moItRandNextMove (moRandMove< M > &  _random_move_generator,
unsigned int  _iteration_maximum_number 
) [inline]
+
+
+ +

+The constructor. +

+Parameters only for initialising the attributes.

+

Parameters:
+ + + +
_random_move_generator The random move generator.
_iteration_maximum_number The iteration maximum number.
+
+ +

Definition at line 61 of file moItRandNextMove.h.

+ +
+

+


Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
bool moItRandNextMove< M >::operator() (M &  _move,
const EOT _solution 
) [inline]
+
+
+ +

+Generation of a new move. +

+If the maximum number is not already reached, the current move is forgotten and remplaced by another one.

+

Parameters:
+ + + +
_move the current move.
_solution the current solution.
+
+
Returns:
false if the maximum number of iteration is reached, else true.
+ +

Definition at line 73 of file moItRandNextMove.h.

+ +

References moItRandNextMove< M >::iteration_maximum_number, moItRandNextMove< M >::iteration_number, and moItRandNextMove< M >::random_move_generator.

+ +
+

+


The documentation for this class was generated from the following file: +
Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_it_rand_next_move.png b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_it_rand_next_move.png new file mode 100644 index 000000000..3ec8c9761 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_it_rand_next_move.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_l_s_check_point-members.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_l_s_check_point-members.html new file mode 100644 index 000000000..22f92330f --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_l_s_check_point-members.html @@ -0,0 +1,45 @@ + + +ParadisEO-MOMovingObjects: Member List + + + + +
+ +
+ +

moLSCheckPoint< M > Member List

This is the complete list of members for moLSCheckPoint< M >, including all inherited members.

+ + + + + + + +
add(eoBF< const M &, const typename M::EOType &, void > &_function)moLSCheckPoint< M > [inline]
functionsmoLSCheckPoint< M > [private]
functor_category()eoBF< A1, A2, R > [static]
operator()(const M &_move, const typename M::EOType &_solution)moLSCheckPoint< M > [inline]
eoBF::operator()(A1, A2)=0eoBF< A1, A2, R > [pure virtual]
~eoBF()eoBF< A1, A2, R > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_l_s_check_point.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_l_s_check_point.html new file mode 100644 index 000000000..8b09781d7 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_l_s_check_point.html @@ -0,0 +1,159 @@ + + +ParadisEO-MOMovingObjects: moLSCheckPoint< M > Class Template Reference + + + + +
+ +
+ +

moLSCheckPoint< M > Class Template Reference

Class which allows a checkpointing system. +More... +

+#include <moLSCheckPoint.h> +

+

+Inheritance diagram for moLSCheckPoint< M >:
+
+ +

+ +eoBF< A1, A2, R > +eoFunctorBase + +
+ +

+List of all members. + + + + + + + + + + + + +

Public Member Functions

void operator() (const M &_move, const typename M::EOType &_solution)
 Function which launches the checkpointing.
void add (eoBF< const M &, const typename M::EOType &, void > &_function)
 Procedure which add a new function to the function vector.

Private Attributes

+std::vector< eoBF< const M &,
+ const typename M::EOType &,
+ void > * > 
functions
 Vector of functions.
+


Detailed Description

+

template<class M>
+ class moLSCheckPoint< M >

+ +Class which allows a checkpointing system. +

+Thanks to this class, at each iteration, additionnal function can be used (and not only one). +

Definition at line 46 of file moLSCheckPoint.h.

+

Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
void moLSCheckPoint< M >::operator() (const M &  _move,
const typename M::EOType &  _solution 
) [inline]
+
+
+ +

+Function which launches the checkpointing. +

+Each saved function is used on the current move and the current solution.

+

Parameters:
+ + + +
_move a move.
_solution a solution.
+
+ +

Definition at line 57 of file moLSCheckPoint.h.

+ +

References moLSCheckPoint< M >::functions.

+ +
+

+ +

+
+
+template<class M>
+ + + + + + + + + +
void moLSCheckPoint< M >::add (eoBF< const M &, const typename M::EOType &, void > &  _function  )  [inline]
+
+
+ +

+Procedure which add a new function to the function vector. +

+The new function is added at the end of the vector.

Parameters:
+ + +
_function a new function to add.
+
+ +

Definition at line 72 of file moLSCheckPoint.h.

+ +

References moLSCheckPoint< M >::functions.

+ +
+

+


The documentation for this class was generated from the following file: +
Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_l_s_check_point.png b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_l_s_check_point.png new file mode 100644 index 000000000..1e121e05e Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_l_s_check_point.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_linear_cooling_schedule-members.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_linear_cooling_schedule-members.html new file mode 100644 index 000000000..ae0d9bde3 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_linear_cooling_schedule-members.html @@ -0,0 +1,45 @@ + + +ParadisEO-MOMovingObjects: Member List + + + + +
+ +
+ +

moLinearCoolingSchedule Member List

This is the complete list of members for moLinearCoolingSchedule, including all inherited members.

+ + + + + + + +
functor_category()eoUF< double &, bool > [static]
moLinearCoolingSchedule(double _threshold, double _quantity)moLinearCoolingSchedule [inline]
operator()(double &_current_temperature)moLinearCoolingSchedule [inline, virtual]
quantitymoLinearCoolingSchedule [private]
thresholdmoLinearCoolingSchedule [private]
~eoFunctorBase()eoFunctorBase [virtual]
~eoUF()eoUF< double &, bool > [virtual]


Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_linear_cooling_schedule.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_linear_cooling_schedule.html new file mode 100644 index 000000000..de338d814 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_linear_cooling_schedule.html @@ -0,0 +1,157 @@ + + +ParadisEO-MOMovingObjects: moLinearCoolingSchedule Class Reference + + + + +
+ +
+ +

moLinearCoolingSchedule Class Reference

One of the possible moCoolingSchedule. +More... +

+#include <moLinearCoolingSchedule.h> +

+

+Inheritance diagram for moLinearCoolingSchedule:
+
+ +

+ +moCoolingSchedule +eoUF< double &, bool > +eoFunctorBase + +
+ +

+List of all members. + + + + + + + + + + + + + + + +

Public Member Functions

 moLinearCoolingSchedule (double _threshold, double _quantity)
 Simple constructor.
bool operator() (double &_current_temperature)
 Function which proceeds to the cooling.

Private Attributes

+double threshold
 The temperature threhold.
+double quantity
 The quantity that allows the temperature to decrease.
+


Detailed Description

+One of the possible moCoolingSchedule. +

+An another very simple cooling schedule, the temperature decrease according to a quantity while the temperature is greater than a threshold. +

Definition at line 46 of file moLinearCoolingSchedule.h.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
moLinearCoolingSchedule::moLinearCoolingSchedule (double  _threshold,
double  _quantity 
) [inline]
+
+
+ +

+Simple constructor. +

+

Parameters:
+ + + +
_threshold the threshold.
_quantity the quantity used to descrease the temperature.
+
+ +

Definition at line 55 of file moLinearCoolingSchedule.h.

+ +
+

+


Member Function Documentation

+ +
+
+ + + + + + + + + +
bool moLinearCoolingSchedule::operator() (double &  _current_temperature  )  [inline, virtual]
+
+
+ +

+Function which proceeds to the cooling. +

+It decreases the temperature and indicates if it is greater than the threshold.

+

Parameters:
+ + +
_current_temperature The current temperature.
+
+
Returns:
true if the new temperature (current temperature - quantity) is greater than the threshold, false otherwise.
+ +

Implements eoUF< double &, bool >.

+ +

Definition at line 65 of file moLinearCoolingSchedule.h.

+ +

References quantity, and threshold.

+ +
+

+


The documentation for this class was generated from the following file: +
Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_linear_cooling_schedule.png b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_linear_cooling_schedule.png new file mode 100644 index 000000000..064f41e2d Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_linear_cooling_schedule.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move-members.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move-members.html new file mode 100644 index 000000000..7cbf44a3d --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move-members.html @@ -0,0 +1,43 @@ + + +ParadisEO-MOMovingObjects: Member List + + + + +
+ +
+ +

moMove< EOT > Member List

This is the complete list of members for moMove< EOT >, including all inherited members.

+ + + + + +
EOType typedefmoMove< EOT >
functor_category()eoUF< EOT &, void > [static]
operator()(EOT &)=0eoUF< EOT &, void > [pure virtual]
~eoFunctorBase()eoFunctorBase [virtual]
~eoUF()eoUF< EOT &, void > [virtual]


Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move.html new file mode 100644 index 000000000..02270c789 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move.html @@ -0,0 +1,72 @@ + + +ParadisEO-MOMovingObjects: moMove< EOT > Class Template Reference + + + + +
+ +
+ +

moMove< EOT > Class Template Reference

Definition of a move. +More... +

+#include <moMove.h> +

+

+Inheritance diagram for moMove< EOT >:
+
+ +

+ +eoUF< EOT &, void > +eoFunctorBase + +
+ +

+List of all members. + + + + + +

Public Types

+typedef EOT EOType
 Alias for the type.
+


Detailed Description

+

template<class EOT>
+ class moMove< EOT >

+ +Definition of a move. +

+A move transforms a solution to another close solution. It describes how a solution can be modified to another one. +

Definition at line 49 of file moMove.h.

+
The documentation for this class was generated from the following file: +
Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move.png b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move.png new file mode 100644 index 000000000..df5473c40 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move_expl-members.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move_expl-members.html new file mode 100644 index 000000000..18ee1e09f --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move_expl-members.html @@ -0,0 +1,42 @@ + + +ParadisEO-MOMovingObjects: Member List + + + + +
+ +
+ +

moMoveExpl< M > Member List

This is the complete list of members for moMoveExpl< M >, including all inherited members.

+ + + + +
functor_category()eoBF< const M::EOType &, M::EOType &, void > [static]
operator()(const M::EOType &, M::EOType &)=0eoBF< const M::EOType &, M::EOType &, void > [pure virtual]
~eoBF()eoBF< const M::EOType &, M::EOType &, void > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move_expl.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move_expl.html new file mode 100644 index 000000000..471780ab5 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move_expl.html @@ -0,0 +1,70 @@ + + +ParadisEO-MOMovingObjects: moMoveExpl< M > Class Template Reference + + + + +
+ +
+ +

moMoveExpl< M > Class Template Reference

Description of a move (moMove) explorer. +More... +

+#include <moMoveExpl.h> +

+

+Inheritance diagram for moMoveExpl< M >:
+
+ +

+ +eoBF< const M::EOType &, M::EOType &, void > +eoFunctorBase +moMoveLoopExpl< M > +moHCMoveLoopExpl< M > +moTSMoveLoopExpl< M > + +
+ +

+List of all members. + +
+


Detailed Description

+

template<class M>
+ class moMoveExpl< M >

+ +Description of a move (moMove) explorer. +

+Only a description...See moMoveLoopExpl. +

Definition at line 45 of file moMoveExpl.h.

+
The documentation for this class was generated from the following file: +
Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move_expl.png b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move_expl.png new file mode 100644 index 000000000..66c1602bb Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move_expl.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move_incr_eval-members.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move_incr_eval-members.html new file mode 100644 index 000000000..25c601df5 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move_incr_eval-members.html @@ -0,0 +1,42 @@ + + +ParadisEO-MOMovingObjects: Member List + + + + +
+ +
+ +

moMoveIncrEval< M > Member List

This is the complete list of members for moMoveIncrEval< M >, including all inherited members.

+ + + + +
functor_category()eoBF< A1, A2, R > [static]
operator()(A1, A2)=0eoBF< A1, A2, R > [pure virtual]
~eoBF()eoBF< A1, A2, R > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move_incr_eval.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move_incr_eval.html new file mode 100644 index 000000000..c266fcca3 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move_incr_eval.html @@ -0,0 +1,67 @@ + + +ParadisEO-MOMovingObjects: moMoveIncrEval< M > Class Template Reference + + + + +
+ +
+ +

moMoveIncrEval< M > Class Template Reference

(generally) Efficient evaluation function based a move and a solution. +More... +

+#include <moMoveIncrEval.h> +

+

+Inheritance diagram for moMoveIncrEval< M >:
+
+ +

+ +eoBF< A1, A2, R > +eoFunctorBase + +
+ +

+List of all members. + +
+


Detailed Description

+

template<class M>
+ class moMoveIncrEval< M >

+ +(generally) Efficient evaluation function based a move and a solution. +

+From a move and a solution, it computes a new fitness that could be associated to the solution if this one is updated. +

Definition at line 49 of file moMoveIncrEval.h.

+
The documentation for this class was generated from the following file: +
Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move_incr_eval.png b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move_incr_eval.png new file mode 100644 index 000000000..1a63407f8 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move_incr_eval.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move_init-members.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move_init-members.html new file mode 100644 index 000000000..a8e9c8473 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move_init-members.html @@ -0,0 +1,42 @@ + + +ParadisEO-MOMovingObjects: Member List + + + + +
+ +
+ +

moMoveInit< M > Member List

This is the complete list of members for moMoveInit< M >, including all inherited members.

+ + + + +
functor_category()eoBF< A1, A2, R > [static]
operator()(A1, A2)=0eoBF< A1, A2, R > [pure virtual]
~eoBF()eoBF< A1, A2, R > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move_init.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move_init.html new file mode 100644 index 000000000..1272abb48 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move_init.html @@ -0,0 +1,67 @@ + + +ParadisEO-MOMovingObjects: moMoveInit< M > Class Template Reference + + + + +
+ +
+ +

moMoveInit< M > Class Template Reference

Move (moMove) initializer. +More... +

+#include <moMoveInit.h> +

+

+Inheritance diagram for moMoveInit< M >:
+
+ +

+ +eoBF< A1, A2, R > +eoFunctorBase + +
+ +

+List of all members. + +
+


Detailed Description

+

template<class M>
+ class moMoveInit< M >

+ +Move (moMove) initializer. +

+Class which allows to initiase a move. Only a description... An object that herits from this class needs to be designed to be used. +

Definition at line 47 of file moMoveInit.h.

+
The documentation for this class was generated from the following file: +
Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move_init.png b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move_init.png new file mode 100644 index 000000000..df2d15f95 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move_init.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move_loop_expl-members.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move_loop_expl-members.html new file mode 100644 index 000000000..b491715dd --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move_loop_expl-members.html @@ -0,0 +1,42 @@ + + +ParadisEO-MOMovingObjects: Member List + + + + +
+ +
+ +

moMoveLoopExpl< M > Member List

This is the complete list of members for moMoveLoopExpl< M >, including all inherited members.

+ + + + +
functor_category()eoBF< const M::EOType &, M::EOType &, void > [static]
operator()(const M::EOType &, M::EOType &)=0eoBF< const M::EOType &, M::EOType &, void > [pure virtual]
~eoBF()eoBF< const M::EOType &, M::EOType &, void > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move_loop_expl.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move_loop_expl.html new file mode 100644 index 000000000..386a8ca30 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move_loop_expl.html @@ -0,0 +1,70 @@ + + +ParadisEO-MOMovingObjects: moMoveLoopExpl< M > Class Template Reference + + + + +
+ +
+ +

moMoveLoopExpl< M > Class Template Reference

Class which describes an iterative explorer. +More... +

+#include <moMoveLoopExpl.h> +

+

+Inheritance diagram for moMoveLoopExpl< M >:
+
+ +

+ +moMoveExpl< M > +eoBF< const M::EOType &, M::EOType &, void > +eoFunctorBase +moHCMoveLoopExpl< M > +moTSMoveLoopExpl< M > + +
+ +

+List of all members. + +
+


Detailed Description

+

template<class M>
+ class moMoveLoopExpl< M >

+ +Class which describes an iterative explorer. +

+Only a description... moHCMoveLoopExpl and moTSMoveLoopExpl are exemples of class that are a moMoveLoopExpl. +

Definition at line 47 of file moMoveLoopExpl.h.

+
The documentation for this class was generated from the following file: +
Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move_loop_expl.png b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move_loop_expl.png new file mode 100644 index 000000000..82d725cec Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move_loop_expl.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move_select-members.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move_select-members.html new file mode 100644 index 000000000..75ad57274 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move_select-members.html @@ -0,0 +1,45 @@ + + +ParadisEO-MOMovingObjects: Member List + + + + +
+ +
+ +

moMoveSelect< M > Member List

This is the complete list of members for moMoveSelect< M >, including all inherited members.

+ + + + + + + +
Fitness typedefmoMoveSelect< M >
functor_category()eoBF< M &, M::EOType::Fitness &, void > [static]
init(const Fitness &_fitness)=0moMoveSelect< M > [pure virtual]
operator()(M &, M::EOType::Fitness &)=0eoBF< M &, M::EOType::Fitness &, void > [pure virtual]
update(const M &_move, const Fitness &_fitness)=0moMoveSelect< M > [pure virtual]
~eoBF()eoBF< M &, M::EOType::Fitness &, void > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move_select.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move_select.html new file mode 100644 index 000000000..0c75f4e31 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move_select.html @@ -0,0 +1,157 @@ + + +ParadisEO-MOMovingObjects: moMoveSelect< M > Class Template Reference + + + + +
+ +
+ +

moMoveSelect< M > Class Template Reference

Class that describes a move selector (moMove). +More... +

+#include <moMoveSelect.h> +

+

+Inheritance diagram for moMoveSelect< M >:
+
+ +

+ +eoBF< M &, M::EOType::Fitness &, void > +eoFunctorBase +moBestImprSelect< M > +moFirstImprSelect< M > +moRandImprSelect< M > + +
+ +

+List of all members. + + + + + + + + + + + + +

Public Types

+typedef M::EOType::Fitness Fitness
 Alias for the fitness.

Public Member Functions

virtual void init (const Fitness &_fitness)=0
 Procedure which initialises all that the move selector needs including the initial fitness.
virtual bool update (const M &_move, const Fitness &_fitness)=0
 Function which updates the best solutions.
+


Detailed Description

+

template<class M>
+ class moMoveSelect< M >

+ +Class that describes a move selector (moMove). +

+It iteratively considers some moves (moMove) and their associated fitnesses. The best move is so regularly updated. At any time, it could be accessed. +

Definition at line 50 of file moMoveSelect.h.

+

Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + +
virtual void moMoveSelect< M >::init (const Fitness _fitness  )  [pure virtual]
+
+
+ +

+Procedure which initialises all that the move selector needs including the initial fitness. +

+In order to know the fitness of the solution, for which the neighborhood will be soon explored

+

Parameters:
+ + +
_fitness the current fitness.
+
+ +

Implemented in moBestImprSelect< M >, moFirstImprSelect< M >, and moRandImprSelect< M >.

+ +
+

+ +

+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
virtual bool moMoveSelect< M >::update (const M &  _move,
const Fitness _fitness 
) [pure virtual]
+
+
+ +

+Function which updates the best solutions. +

+

Parameters:
+ + + +
_move a new move.
_fitness a fitness linked to the new move.
+
+
Returns:
a boolean that expresses the need to resume the exploration.
+ +

Implemented in moBestImprSelect< M >, moFirstImprSelect< M >, and moRandImprSelect< M >.

+ +
+

+


The documentation for this class was generated from the following file: +
Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move_select.png b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move_select.png new file mode 100644 index 000000000..10bda515a Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_move_select.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_next_move-members.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_next_move-members.html new file mode 100644 index 000000000..9b189343a --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_next_move-members.html @@ -0,0 +1,42 @@ + + +ParadisEO-MOMovingObjects: Member List + + + + +
+ +
+ +

moNextMove< M > Member List

This is the complete list of members for moNextMove< M >, including all inherited members.

+ + + + +
functor_category()eoBF< A1, A2, R > [static]
operator()(A1, A2)=0eoBF< A1, A2, R > [pure virtual]
~eoBF()eoBF< A1, A2, R > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_next_move.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_next_move.html new file mode 100644 index 000000000..9c1f6d8ed --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_next_move.html @@ -0,0 +1,68 @@ + + +ParadisEO-MOMovingObjects: moNextMove< M > Class Template Reference + + + + +
+ +
+ +

moNextMove< M > Class Template Reference

Class which allows to generate a new move (moMove). +More... +

+#include <moNextMove.h> +

+

+Inheritance diagram for moNextMove< M >:
+
+ +

+ +eoBF< A1, A2, R > +eoFunctorBase +moItRandNextMove< M > + +
+ +

+List of all members. + +
+


Detailed Description

+

template<class M>
+ class moNextMove< M >

+ +Class which allows to generate a new move (moMove). +

+Useful for the explorer (for moTS or moHC). Does nothing... An object that herits from this class needs to be designed for being used. +

Definition at line 47 of file moNextMove.h.

+
The documentation for this class was generated from the following file: +
Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_next_move.png b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_next_move.png new file mode 100644 index 000000000..2021f9a10 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_next_move.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_no_aspir_crit-members.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_no_aspir_crit-members.html new file mode 100644 index 000000000..5cc3a8fbc --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_no_aspir_crit-members.html @@ -0,0 +1,44 @@ + + +ParadisEO-MOMovingObjects: Member List + + + + +
+ +
+ +

moNoAspirCrit< M > Member List

This is the complete list of members for moNoAspirCrit< M >, including all inherited members.

+ + + + + + +
functor_category()eoBF< A1, A2, R > [static]
init()moNoAspirCrit< M > [inline, private, virtual]
operator()(const M &_move, const typename M::EOType::Fitness &_fitness)moNoAspirCrit< M > [inline, private]
moAspirCrit::operator()(A1, A2)=0eoBF< A1, A2, R > [pure virtual]
~eoBF()eoBF< A1, A2, R > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_no_aspir_crit.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_no_aspir_crit.html new file mode 100644 index 000000000..40f2aaf32 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_no_aspir_crit.html @@ -0,0 +1,146 @@ + + +ParadisEO-MOMovingObjects: moNoAspirCrit< M > Class Template Reference + + + + +
+ +
+ +

moNoAspirCrit< M > Class Template Reference

One of the possible aspiration criterion (moAspirCrit). +More... +

+#include <moNoAspirCrit.h> +

+

+Inheritance diagram for moNoAspirCrit< M >:
+
+ +

+ +moAspirCrit< M > +eoBF< A1, A2, R > +eoFunctorBase + +
+ +

+List of all members. + + + + + + + + +

Private Member Functions

bool operator() (const M &_move, const typename M::EOType::Fitness &_fitness)
 Function which describes the aspiration criterion behaviour.
void init ()
 Procedure which initialises all that needs a moNoAspirCrit.
+


Detailed Description

+

template<class M>
+ class moNoAspirCrit< M >

+ +One of the possible aspiration criterion (moAspirCrit). +

+The simplest : never satisfied. +

Definition at line 47 of file moNoAspirCrit.h.

+

Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
bool moNoAspirCrit< M >::operator() (const M &  _move,
const typename M::EOType::Fitness &  _fitness 
) [inline, private]
+
+
+ +

+Function which describes the aspiration criterion behaviour. +

+Does nothing.

+

Parameters:
+ + + +
_move a move.
_fitness a fitness.
+
+
Returns:
false.
+ +

Definition at line 57 of file moNoAspirCrit.h.

+ +
+

+ +

+
+
+template<class M>
+ + + + + + + + +
void moNoAspirCrit< M >::init (  )  [inline, private, virtual]
+
+
+ +

+Procedure which initialises all that needs a moNoAspirCrit. +

+Nothing... +

Implements moAspirCrit< M >.

+ +

Definition at line 66 of file moNoAspirCrit.h.

+ +
+

+


The documentation for this class was generated from the following file: +
Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_no_aspir_crit.png b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_no_aspir_crit.png new file mode 100644 index 000000000..c0687eec9 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_no_aspir_crit.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_no_fit_impr_sol_continue-members.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_no_fit_impr_sol_continue-members.html new file mode 100644 index 000000000..7de5f2b2d --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_no_fit_impr_sol_continue-members.html @@ -0,0 +1,49 @@ + + +ParadisEO-MOMovingObjects: Member List + + + + +
+ +
+ +

moNoFitImprSolContinue< EOT > Member List

This is the complete list of members for moNoFitImprSolContinue< EOT >, including all inherited members.

+ + + + + + + + + + + +
countermoNoFitImprSolContinue< EOT > [private]
firstFitnessSavedmoNoFitImprSolContinue< EOT > [private]
fitnessmoNoFitImprSolContinue< EOT > [private]
Fitness typedefmoNoFitImprSolContinue< EOT >
functor_category()eoUF< const EOT &, bool > [static]
init()moNoFitImprSolContinue< EOT > [inline, virtual]
maxNumberOfIterationsWithoutImprovementmoNoFitImprSolContinue< EOT > [private]
moNoFitImprSolContinue(unsigned int _maxNumberOfIterationWithoutImprovement)moNoFitImprSolContinue< EOT > [inline]
operator()(const EOT &_solution)moNoFitImprSolContinue< EOT > [inline, virtual]
~eoFunctorBase()eoFunctorBase [virtual]
~eoUF()eoUF< const EOT &, bool > [virtual]


Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_no_fit_impr_sol_continue.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_no_fit_impr_sol_continue.html new file mode 100644 index 000000000..1bfb161ed --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_no_fit_impr_sol_continue.html @@ -0,0 +1,198 @@ + + +ParadisEO-MOMovingObjects: moNoFitImprSolContinue< EOT > Class Template Reference + + + + +
+ +
+ +

moNoFitImprSolContinue< EOT > Class Template Reference

One possible stop criterion for a solution-based heuristic. +More... +

+#include <moNoFitImprSolContinue.h> +

+

+Inheritance diagram for moNoFitImprSolContinue< EOT >:
+
+ +

+ +moSolContinue< EOT > +eoUF< const EOT &, bool > +eoFunctorBase + +
+ +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

+typedef EOT::Fitness Fitness
 Alias for the fitness.

Public Member Functions

 moNoFitImprSolContinue (unsigned int _maxNumberOfIterationWithoutImprovement)
 Basic constructor.
bool operator() (const EOT &_solution)
 Function that activates the stopping criterion.
void init ()
 Procedure which allows to initialise all the stuff needed.

Private Attributes

+unsigned int maxNumberOfIterationsWithoutImprovement
 Maximum number of iterations without improvement allowed.
+bool firstFitnessSaved
 Flag that this is the first time that the fitness is used.
+Fitness fitness
 Current Fitness.
+unsigned int counter
 The iteration couter.
+


Detailed Description

+

template<class EOT>
+ class moNoFitImprSolContinue< EOT >

+ +One possible stop criterion for a solution-based heuristic. +

+The stop criterion corresponds to a maximum number of iterations without improvement. +

Definition at line 46 of file moNoFitImprSolContinue.h.

+

Constructor & Destructor Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + +
moNoFitImprSolContinue< EOT >::moNoFitImprSolContinue (unsigned int  _maxNumberOfIterationWithoutImprovement  )  [inline]
+
+
+ +

+Basic constructor. +

+

Parameters:
+ + +
_maxNumberOfIterationWithoutImprovement The number of iterations without fitness improvement to reach for stop.
+
+ +

Definition at line 57 of file moNoFitImprSolContinue.h.

+ +
+

+


Member Function Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + +
bool moNoFitImprSolContinue< EOT >::operator() (const EOT &  _solution  )  [inline, virtual]
+
+
+ +

+Function that activates the stopping criterion. +

+Indicates if the fitness has not been improved since a given number of iterations (after a minimum of iterations).

Parameters:
+ + +
_solution the current solution.
+
+
Returns:
true or false.
+ +

Implements eoUF< const EOT &, bool >.

+ +

Definition at line 67 of file moNoFitImprSolContinue.h.

+ +

References moNoFitImprSolContinue< EOT >::counter, moNoFitImprSolContinue< EOT >::firstFitnessSaved, moNoFitImprSolContinue< EOT >::fitness, and moNoFitImprSolContinue< EOT >::maxNumberOfIterationsWithoutImprovement.

+ +
+

+ +

+
+
+template<class EOT>
+ + + + + + + + +
void moNoFitImprSolContinue< EOT >::init (  )  [inline, virtual]
+
+
+ +

+Procedure which allows to initialise all the stuff needed. +

+It can be also used to reinitialize all the needed things. +

Implements moSolContinue< EOT >.

+ +

Definition at line 102 of file moNoFitImprSolContinue.h.

+ +

References moNoFitImprSolContinue< EOT >::counter, and moNoFitImprSolContinue< EOT >::firstFitnessSaved.

+ +
+

+


The documentation for this class was generated from the following file: +
Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_no_fit_impr_sol_continue.png b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_no_fit_impr_sol_continue.png new file mode 100644 index 000000000..a727d6003 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_no_fit_impr_sol_continue.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_rand_impr_select-members.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_rand_impr_select-members.html new file mode 100644 index 000000000..7a4a266c8 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_rand_impr_select-members.html @@ -0,0 +1,48 @@ + + +ParadisEO-MOMovingObjects: Member List + + + + +
+ +
+ +

moRandImprSelect< M > Member List

This is the complete list of members for moRandImprSelect< M >, including all inherited members.

+ + + + + + + + + + +
better_fitnessesmoRandImprSelect< M > [private]
better_movesmoRandImprSelect< M > [private]
Fitness typedefmoRandImprSelect< M >
functor_category()eoBF< M &, M::EOType::Fitness &, void > [static]
init(const Fitness &_fitness)moRandImprSelect< M > [inline, virtual]
initial_fitnessmoRandImprSelect< M > [private]
operator()(M &_move, Fitness &_fitness)moRandImprSelect< M > [inline, virtual]
update(const M &_move, const Fitness &_fitness)moRandImprSelect< M > [inline, virtual]
~eoBF()eoBF< M &, M::EOType::Fitness &, void > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Wed Jan 16 15:50:41 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_rand_impr_select.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_rand_impr_select.html new file mode 100644 index 000000000..f4fbb137a --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_rand_impr_select.html @@ -0,0 +1,226 @@ + + +ParadisEO-MOMovingObjects: moRandImprSelect< M > Class Template Reference + + + + +
+ +
+ +

moRandImprSelect< M > Class Template Reference

One of the possible moMove selector (moMoveSelect). +More... +

+#include <moRandImprSelect.h> +

+

+Inheritance diagram for moRandImprSelect< M >:
+
+ +

+ +moMoveSelect< M > +eoBF< M &, M::EOType::Fitness &, void > +eoFunctorBase + +
+ +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

+typedef M::EOType::Fitness Fitness
 Alias for the fitness.

Public Member Functions

void init (const Fitness &_fitness)
 Procedure which all that needs a moRandImprSelect.
bool update (const M &_move, const Fitness &_fitness)
 Function that updates the fitness and move vectors.
void operator() (M &_move, Fitness &_fitness)
 The move selection.

Private Attributes

+Fitness initial_fitness
 Fitness of the current solution.
+std::vector< Fitnessbetter_fitnesses
 Candidate fitnesse vector.
+std::vector< M > better_moves
 Candidate move vector.
+


Detailed Description

+

template<class M>
+ class moRandImprSelect< M >

+ +One of the possible moMove selector (moMoveSelect). +

+All the neighbors are considered. One of them that enables an improvment of the objective function is choosen. +

Definition at line 49 of file moRandImprSelect.h.

+

Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + +
void moRandImprSelect< M >::init (const Fitness _fitness  )  [inline, virtual]
+
+
+ +

+Procedure which all that needs a moRandImprSelect. +

+Give a value to the initialise fitness. Clean the move and fitness vectors.

+

Parameters:
+ + +
_fitness the current best fitness
+
+ +

Implements moMoveSelect< M >.

+ +

Definition at line 63 of file moRandImprSelect.h.

+ +

References moRandImprSelect< M >::better_fitnesses, moRandImprSelect< M >::better_moves, and moRandImprSelect< M >::initial_fitness.

+ +
+

+ +

+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
bool moRandImprSelect< M >::update (const M &  _move,
const Fitness _fitness 
) [inline, virtual]
+
+
+ +

+Function that updates the fitness and move vectors. +

+if a move give a better fitness than the initial fitness, it is saved and the fitness too.

+

Parameters:
+ + + +
_move a new move.
_fitness a new fitness associated to the new move.
+
+
Returns:
true.
+ +

Implements moMoveSelect< M >.

+ +

Definition at line 79 of file moRandImprSelect.h.

+ +

References moRandImprSelect< M >::better_fitnesses, moRandImprSelect< M >::better_moves, and moRandImprSelect< M >::initial_fitness.

+ +
+

+ +

+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
void moRandImprSelect< M >::operator() (M &  _move,
Fitness _fitness 
) [inline, virtual]
+
+
+ +

+The move selection. +

+One the saved move is randomly chosen.

+

Parameters:
+ + + +
_move the reference of the move that can be initialised by the function.
_fitness the reference of the fitness that can be initialised by the function.
+
+ +

Implements eoBF< M &, M::EOType::Fitness &, void >.

+ +

Definition at line 98 of file moRandImprSelect.h.

+ +

References moRandImprSelect< M >::better_fitnesses, moRandImprSelect< M >::better_moves, and eoRng::random().

+ +
+

+


The documentation for this class was generated from the following file: +
Generated on Wed Jan 16 15:50:41 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_rand_impr_select.png b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_rand_impr_select.png new file mode 100644 index 000000000..b935a8e2f Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_rand_impr_select.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_rand_move-members.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_rand_move-members.html new file mode 100644 index 000000000..0ace25c4e --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_rand_move-members.html @@ -0,0 +1,42 @@ + + +ParadisEO-MOMovingObjects: Member List + + + + +
+ +
+ +

moRandMove< M > Member List

This is the complete list of members for moRandMove< M >, including all inherited members.

+ + + + +
functor_category()eoUF< M &, void > [static]
operator()(M &)=0eoUF< M &, void > [pure virtual]
~eoFunctorBase()eoFunctorBase [virtual]
~eoUF()eoUF< M &, void > [virtual]


Generated on Wed Jan 16 15:50:41 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_rand_move.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_rand_move.html new file mode 100644 index 000000000..e52b789b6 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_rand_move.html @@ -0,0 +1,67 @@ + + +ParadisEO-MOMovingObjects: moRandMove< M > Class Template Reference + + + + +
+ +
+ +

moRandMove< M > Class Template Reference

Random move generator. +More... +

+#include <moRandMove.h> +

+

+Inheritance diagram for moRandMove< M >:
+
+ +

+ +eoUF< M &, void > +eoFunctorBase + +
+ +

+List of all members. + +
+


Detailed Description

+

template<class M>
+ class moRandMove< M >

+ +Random move generator. +

+Only a description... An object that herits from this class needs to be designed in order to use a moSA. +

Definition at line 46 of file moRandMove.h.

+
The documentation for this class was generated from the following file: +
Generated on Wed Jan 16 15:50:41 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_rand_move.png b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_rand_move.png new file mode 100644 index 000000000..2e8f6148e Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_rand_move.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_s_a-members.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_s_a-members.html new file mode 100644 index 000000000..789422a40 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_s_a-members.html @@ -0,0 +1,62 @@ + + +ParadisEO-MOMovingObjects: Member List + + + + +
+ +
+ +

moSA< M > Member List

This is the complete list of members for moSA< M >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + +
binaryeoOp< EOType >
className() consteoMonOp< M::EOType > [virtual]
continumoSA< M > [private]
cooling_schedulemoSA< M > [private]
eoMonOp()eoMonOp< M::EOType >
eoOp(OpType _type)eoOp< EOType >
eoOp(const eoOp &_eop)eoOp< EOType >
EOT typedefmoSA< M > [private]
Fitness typedefmoSA< M > [private]
full_evaluationmoSA< M > [private]
functor_category()eoUF< M::EOType &, bool > [static]
generaleoOp< EOType >
getType() consteoOp< EOType >
incremental_evaluationmoSA< M > [private]
initial_temperaturemoSA< M > [private]
moSA(moRandMove< M > &_random_move_generator, moMoveIncrEval< M > &_incremental_evaluation, moSolContinue< EOT > &_continue, double _initial_temperature, moCoolingSchedule &_cooling_schedule, eoEvalFunc< EOT > &_full_evaluation)moSA< M > [inline]
operator()(EOT &_solution)moSA< M > [inline, virtual]
OpType enum nameeoOp< EOType >
quadraticeoOp< EOType >
random_move_generatormoSA< M > [private]
unaryeoOp< EOType >
~eoFunctorBase()eoFunctorBase [virtual]
~eoOp()eoOp< EOType > [virtual]
~eoUF()eoUF< M::EOType &, bool > [virtual]


Generated on Wed Jan 16 15:50:41 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_s_a.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_s_a.html new file mode 100644 index 000000000..e44f965fa --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_s_a.html @@ -0,0 +1,209 @@ + + +ParadisEO-MOMovingObjects: moSA< M > Class Template Reference + + + + +
+ +
+ +

moSA< M > Class Template Reference

Simulated Annealing (SA). +More... +

+#include <moSA.h> +

+Inherits moAlgo< M::EOType >. +

+ +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 moSA (moRandMove< M > &_random_move_generator, moMoveIncrEval< M > &_incremental_evaluation, moSolContinue< EOT > &_continue, double _initial_temperature, moCoolingSchedule &_cooling_schedule, eoEvalFunc< EOT > &_full_evaluation)
 SA constructor.
bool operator() (EOT &_solution)
 function that launches the SA algorithm.

Private Types

+typedef M::EOType EOT
 Alias for the type.
+typedef EOT::Fitness Fitness
 Alias for the fitness.

Private Attributes

+moRandMove< M > & random_move_generator
 A move generator (generally randomly).
+moMoveIncrEval< M > & incremental_evaluation
 A (generally) efficient evaluation function.
+moSolContinue< EOT > & continu
 Stopping criterion before temperature update.
+double initial_temperature
 Initial temperature.
+moCoolingSchedulecooling_schedule
 The cooling schedule.
+eoEvalFunc< EOT > & full_evaluation
 A full evaluation function.
+


Detailed Description

+

template<class M>
+ class moSA< M >

+ +Simulated Annealing (SA). +

+Class that describes a Simulated Annealing algorithm. +

Definition at line 53 of file moSA.h.

+

Constructor & Destructor Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
moSA< M >::moSA (moRandMove< M > &  _random_move_generator,
moMoveIncrEval< M > &  _incremental_evaluation,
moSolContinue< EOT > &  _continue,
double  _initial_temperature,
moCoolingSchedule _cooling_schedule,
eoEvalFunc< EOT > &  _full_evaluation 
) [inline]
+
+
+ +

+SA constructor. +

+All the boxes used by a SA need to be given.

+

Parameters:
+ + + + + + + +
_random_move_generator The move generator (generally randomly).
_incremental_evaluation The (generally) efficient evaluation function
_continue The stopping criterion.
_initial_temperature The initial temperature.
_cooling_schedule The cooling schedule, describes how the temperature is modified.
_full_evaluation The full evaluation function.
+
+ +

Definition at line 74 of file moSA.h.

+ +
+

+


Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + +
bool moSA< M >::operator() (EOT _solution  )  [inline, virtual]
+
+
+ +

+function that launches the SA algorithm. +

+As a moTS or a moHC, the SA can be used for HYBRIDATION in an evolutionary algorithm.

+

Parameters:
+ + +
_solution A solution to improve.
+
+
Returns:
TRUE.
+ +

Implements eoUF< M::EOType &, bool >.

+ +

Definition at line 89 of file moSA.h.

+ +

References moSA< M >::continu, moSA< M >::cooling_schedule, moSA< M >::full_evaluation, moSA< M >::incremental_evaluation, moSA< M >::initial_temperature, moSA< M >::random_move_generator, and eoRng::uniform().

+ +
+

+


The documentation for this class was generated from the following file: +
Generated on Wed Jan 16 15:50:41 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_simple_move_tabu_list-members.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_simple_move_tabu_list-members.html new file mode 100644 index 000000000..3ffd0f550 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_simple_move_tabu_list-members.html @@ -0,0 +1,53 @@ + + +ParadisEO-MOMovingObjects: Member List + + + + +
+ +
+ +

moSimpleMoveTabuList< M > Member List

This is the complete list of members for moSimpleMoveTabuList< M >, including all inherited members.

+ + + + + + + + + + + + + + + +
add(const M &_move, const EOT &_solution)moSimpleMoveTabuList< M > [inline, virtual]
EOT typedefmoSimpleMoveTabuList< M >
functor_category()eoBF< A1, A2, R > [static]
init()moSimpleMoveTabuList< M > [inline, virtual]
memory_maximum_sizemoSimpleMoveTabuList< M > [private]
memory_sizemoSimpleMoveTabuList< M > [private]
moSimpleMoveTabuList(unsigned int _memory_maximum_size)moSimpleMoveTabuList< M > [inline]
moveIterator typedefmoSimpleMoveTabuList< M >
operator()(const M &_move, const EOT &_solution)moSimpleMoveTabuList< M > [inline]
moTabuList::operator()(A1, A2)=0eoBF< A1, A2, R > [pure virtual]
removeMove(const M &_move)moSimpleMoveTabuList< M > [inline, private]
tabuListmoSimpleMoveTabuList< M > [private]
update()moSimpleMoveTabuList< M > [inline, virtual]
~eoBF()eoBF< A1, A2, R > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Wed Jan 16 15:50:41 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_simple_move_tabu_list.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_simple_move_tabu_list.html new file mode 100644 index 000000000..60e088e51 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_simple_move_tabu_list.html @@ -0,0 +1,289 @@ + + +ParadisEO-MOMovingObjects: moSimpleMoveTabuList< M > Class Template Reference + + + + +
+ +
+ +

moSimpleMoveTabuList< M > Class Template Reference

Class describing a move tabu list with a limited memory. +More... +

+#include <moSimpleMoveTabuList.h> +

+

+Inheritance diagram for moSimpleMoveTabuList< M >:
+
+ +

+ +moTabuList< M > +eoBF< A1, A2, R > +eoFunctorBase + +
+ +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

+typedef M::EOType EOT
 Alias for the type.
+typedef std::list< M >::iterator moveIterator
 Alias for an iterator of a move list.

Public Member Functions

moSimpleMoveTabuList (unsigned int _memory_maximum_size)
 Constructor.
bool operator() (const M &_move, const EOT &_solution)
 Function that indicates if, in a given state, the _move is tabu or not.
void add (const M &_move, const EOT &_solution)
 Procedure to add a move in the tabu list.
void update ()
 Procedure that updates the tabu list content.
void init ()
 Procedure which initialises the tabu list.

Private Member Functions

void removeMove (const M &_move)
 Procedure that removes a given move from the tabu list (if it is into, else do nothing).

Private Attributes

+unsigned int memory_maximum_size
 The maximum size of the tabu list.
+unsigned int memory_size
 The current size of the tabu list.
+std::list< M > tabuList
 The move tabu list.
+


Detailed Description

+

template<class M>
+ class moSimpleMoveTabuList< M >

+ +Class describing a move tabu list with a limited memory. +

Definition at line 46 of file moSimpleMoveTabuList.h.

+

Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
bool moSimpleMoveTabuList< M >::operator() (const M &  _move,
const EOT _solution 
) [inline]
+
+
+ +

+Function that indicates if, in a given state, the _move is tabu or not. +

+

Parameters:
+ + + +
_move A given moMove.
_solution A solution.
+
+
Returns:
true or false.
+ +

Definition at line 69 of file moSimpleMoveTabuList.h.

+ +

References moSimpleMoveTabuList< M >::tabuList.

+ +
+

+ +

+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
void moSimpleMoveTabuList< M >::add (const M &  _move,
const EOT _solution 
) [inline, virtual]
+
+
+ +

+Procedure to add a move in the tabu list. +

+The two parameters have not to be modified so they are constant parameters.

+

Parameters:
+ + + +
_move a new tabu move.
_solution the origianl solution associated to this move.
+
+ +

Implements moTabuList< M >.

+ +

Definition at line 86 of file moSimpleMoveTabuList.h.

+ +

References moSimpleMoveTabuList< M >::memory_maximum_size, moSimpleMoveTabuList< M >::memory_size, moSimpleMoveTabuList< M >::removeMove(), and moSimpleMoveTabuList< M >::tabuList.

+ +
+

+ +

+
+
+template<class M>
+ + + + + + + + +
void moSimpleMoveTabuList< M >::update (  )  [inline, virtual]
+
+
+ +

+Procedure that updates the tabu list content. +

+Generally, a counter associated to each saved move is decreased by one. +

Implements moTabuList< M >.

+ +

Definition at line 110 of file moSimpleMoveTabuList.h.

+ +
+

+ +

+
+
+template<class M>
+ + + + + + + + +
void moSimpleMoveTabuList< M >::init (  )  [inline, virtual]
+
+
+ +

+Procedure which initialises the tabu list. +

+Can be useful if the data structure needs to be allocated before being used. +

Implements moTabuList< M >.

+ +

Definition at line 115 of file moSimpleMoveTabuList.h.

+ +
+

+ +

+
+
+template<class M>
+ + + + + + + + + +
void moSimpleMoveTabuList< M >::removeMove (const M &  _move  )  [inline, private]
+
+
+ +

+Procedure that removes a given move from the tabu list (if it is into, else do nothing). +

+

Parameters:
+ + +
_move A given moMove.
+
+ +

Definition at line 126 of file moSimpleMoveTabuList.h.

+ +

References moSimpleMoveTabuList< M >::tabuList.

+ +

Referenced by moSimpleMoveTabuList< M >::add().

+ +
+

+


The documentation for this class was generated from the following file: +
Generated on Wed Jan 16 15:50:41 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_simple_move_tabu_list.png b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_simple_move_tabu_list.png new file mode 100644 index 000000000..f4a038c83 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_simple_move_tabu_list.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_simple_solution_tabu_list-members.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_simple_solution_tabu_list-members.html new file mode 100644 index 000000000..2237ff1f8 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_simple_solution_tabu_list-members.html @@ -0,0 +1,53 @@ + + +ParadisEO-MOMovingObjects: Member List + + + + +
+ +
+ +

moSimpleSolutionTabuList< M > Member List

This is the complete list of members for moSimpleSolutionTabuList< M >, including all inherited members.

+ + + + + + + + + + + + + + + +
add(const M &_move, const EOT &_solution)moSimpleSolutionTabuList< M > [inline, virtual]
EOT typedefmoSimpleSolutionTabuList< M >
functor_category()eoBF< A1, A2, R > [static]
init()moSimpleSolutionTabuList< M > [inline, virtual]
memory_maximum_sizemoSimpleSolutionTabuList< M > [private]
memory_sizemoSimpleSolutionTabuList< M > [private]
moSimpleSolutionTabuList(unsigned int _memory_maximum_size)moSimpleSolutionTabuList< M > [inline]
operator()(const M &_move, const EOT &_solution)moSimpleSolutionTabuList< M > [inline]
moTabuList::operator()(A1, A2)=0eoBF< A1, A2, R > [pure virtual]
removeSolution(const EOT &_solution)moSimpleSolutionTabuList< M > [inline, private]
solutionIterator typedefmoSimpleSolutionTabuList< M >
tabuListmoSimpleSolutionTabuList< M > [private]
update()moSimpleSolutionTabuList< M > [inline, virtual]
~eoBF()eoBF< A1, A2, R > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Wed Jan 16 15:50:41 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_simple_solution_tabu_list.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_simple_solution_tabu_list.html new file mode 100644 index 000000000..5c9315b1e --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_simple_solution_tabu_list.html @@ -0,0 +1,320 @@ + + +ParadisEO-MOMovingObjects: moSimpleSolutionTabuList< M > Class Template Reference + + + + +
+ +
+ +

moSimpleSolutionTabuList< M > Class Template Reference

Class describing a solution tabu list with limited length. +More... +

+#include <moSimpleSolutionTabuList.h> +

+

+Inheritance diagram for moSimpleSolutionTabuList< M >:
+
+ +

+ +moTabuList< M > +eoBF< A1, A2, R > +eoFunctorBase + +
+ +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

+typedef M::EOType EOT
 Alias for the type.
+typedef std::list< EOT >::iterator solutionIterator
 Alias for an iterator of a solution list.

Public Member Functions

 moSimpleSolutionTabuList (unsigned int _memory_maximum_size)
 Constructor.
bool operator() (const M &_move, const EOT &_solution)
 Function that indicates if, in a given state, the _move is tabu or not.
void add (const M &_move, const EOT &_solution)
 Procedure to add a move in the tabu list.
void update ()
 Procedure that updates the tabu list content.
void init ()
 Procedure which initialises the tabu list.

Private Member Functions

void removeSolution (const EOT &_solution)
 Procedure that removes a given solution from the tabu list (if it is into, else does nothing).

Private Attributes

+unsigned int memory_maximum_size
 The maximum size of the tabu list.
+unsigned int memory_size
 The current size of the tabu list.
+std::list< EOTtabuList
 The solution tabu list.
+


Detailed Description

+

template<class M>
+ class moSimpleSolutionTabuList< M >

+ +Class describing a solution tabu list with limited length. +

Definition at line 46 of file moSimpleSolutionTabuList.h.

+

Constructor & Destructor Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + +
moSimpleSolutionTabuList< M >::moSimpleSolutionTabuList (unsigned int  _memory_maximum_size  )  [inline]
+
+
+ +

+Constructor. +

+

Parameters:
+ + +
_memory_maximum_size The maximum size of the solution tabu list.
+
+ +

Definition at line 60 of file moSimpleSolutionTabuList.h.

+ +
+

+


Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
bool moSimpleSolutionTabuList< M >::operator() (const M &  _move,
const EOT _solution 
) [inline]
+
+
+ +

+Function that indicates if, in a given state, the _move is tabu or not. +

+

Parameters:
+ + + +
_move A given moMove.
_solution A solution.
+
+
Returns:
true or false.
+ +

Definition at line 69 of file moSimpleSolutionTabuList.h.

+ +

References moSimpleSolutionTabuList< M >::tabuList.

+ +
+

+ +

+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
void moSimpleSolutionTabuList< M >::add (const M &  _move,
const EOT _solution 
) [inline, virtual]
+
+
+ +

+Procedure to add a move in the tabu list. +

+The two parameters have not to be modified so they are constant parameters.

+

Parameters:
+ + + +
_move a new tabu move.
_solution the origianl solution associated to this move.
+
+ +

Implements moTabuList< M >.

+ +

Definition at line 89 of file moSimpleSolutionTabuList.h.

+ +

References moSimpleSolutionTabuList< M >::memory_maximum_size, moSimpleSolutionTabuList< M >::memory_size, moSimpleSolutionTabuList< M >::removeSolution(), and moSimpleSolutionTabuList< M >::tabuList.

+ +
+

+ +

+
+
+template<class M>
+ + + + + + + + +
void moSimpleSolutionTabuList< M >::update (  )  [inline, virtual]
+
+
+ +

+Procedure that updates the tabu list content. +

+Generally, a counter associated to each saved move is decreased by one. +

Implements moTabuList< M >.

+ +

Definition at line 115 of file moSimpleSolutionTabuList.h.

+ +
+

+ +

+
+
+template<class M>
+ + + + + + + + +
void moSimpleSolutionTabuList< M >::init (  )  [inline, virtual]
+
+
+ +

+Procedure which initialises the tabu list. +

+Can be useful if the data structure needs to be allocated before being used. +

Implements moTabuList< M >.

+ +

Definition at line 120 of file moSimpleSolutionTabuList.h.

+ +
+

+ +

+
+
+template<class M>
+ + + + + + + + + +
void moSimpleSolutionTabuList< M >::removeSolution (const EOT _solution  )  [inline, private]
+
+
+ +

+Procedure that removes a given solution from the tabu list (if it is into, else does nothing). +

+

Parameters:
+ + +
_solution A given solution.
+
+ +

Definition at line 131 of file moSimpleSolutionTabuList.h.

+ +

References moSimpleSolutionTabuList< M >::tabuList.

+ +

Referenced by moSimpleSolutionTabuList< M >::add().

+ +
+

+


The documentation for this class was generated from the following file: +
Generated on Wed Jan 16 15:50:41 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_simple_solution_tabu_list.png b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_simple_solution_tabu_list.png new file mode 100644 index 000000000..38d26e329 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_simple_solution_tabu_list.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_sol_continue-members.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_sol_continue-members.html new file mode 100644 index 000000000..e97e4b2f3 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_sol_continue-members.html @@ -0,0 +1,43 @@ + + +ParadisEO-MOMovingObjects: Member List + + + + +
+ +
+ +

moSolContinue< EOT > Member List

This is the complete list of members for moSolContinue< EOT >, including all inherited members.

+ + + + + +
functor_category()eoUF< const EOT &, bool > [static]
init()=0moSolContinue< EOT > [pure virtual]
operator()(const EOT &)=0eoUF< const EOT &, bool > [pure virtual]
~eoFunctorBase()eoFunctorBase [virtual]
~eoUF()eoUF< const EOT &, bool > [virtual]


Generated on Wed Jan 16 15:50:41 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_sol_continue.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_sol_continue.html new file mode 100644 index 000000000..aef94970f --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_sol_continue.html @@ -0,0 +1,101 @@ + + +ParadisEO-MOMovingObjects: moSolContinue< EOT > Class Template Reference + + + + +
+ +
+ +

moSolContinue< EOT > Class Template Reference

Class that describes a stop criterion for a solution-based heuristic. +More... +

+#include <moSolContinue.h> +

+

+Inheritance diagram for moSolContinue< EOT >:
+
+ +

+ +eoUF< const EOT &, bool > +eoFunctorBase +moFitSolContinue< EOT > +moGenSolContinue< EOT > +moNoFitImprSolContinue< EOT > +moSteadyFitSolContinue< EOT > + +
+ +

+List of all members. + + + + + +

Public Member Functions

virtual void init ()=0
 Procedure which initialises all that the stop criterion needs.
+


Detailed Description

+

template<class EOT>
+ class moSolContinue< EOT >

+ +Class that describes a stop criterion for a solution-based heuristic. +

+It allows to add an initialisation procedure to an object that is a unary function (eoUF). +

Definition at line 48 of file moSolContinue.h.

+

Member Function Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + +
virtual void moSolContinue< EOT >::init (  )  [pure virtual]
+
+
+ +

+Procedure which initialises all that the stop criterion needs. +

+Generally, it allocates some data structures or initialises some counters. +

Implemented in moFitSolContinue< EOT >, moGenSolContinue< EOT >, moNoFitImprSolContinue< EOT >, and moSteadyFitSolContinue< EOT >.

+ +
+

+


The documentation for this class was generated from the following file: +
Generated on Wed Jan 16 15:50:41 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_sol_continue.png b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_sol_continue.png new file mode 100644 index 000000000..71ed9397d Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_sol_continue.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_steady_fit_sol_continue-members.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_steady_fit_sol_continue-members.html new file mode 100644 index 000000000..99b75271a --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_steady_fit_sol_continue-members.html @@ -0,0 +1,51 @@ + + +ParadisEO-MOMovingObjects: Member List + + + + +
+ +
+ +

moSteadyFitSolContinue< EOT > Member List

This is the complete list of members for moSteadyFitSolContinue< EOT >, including all inherited members.

+ + + + + + + + + + + + + +
countermoSteadyFitSolContinue< EOT > [private]
firstFitnessSavedmoSteadyFitSolContinue< EOT > [private]
Fitness typedefmoSteadyFitSolContinue< EOT >
fitnessmoSteadyFitSolContinue< EOT > [private]
functor_category()eoUF< const EOT &, bool > [static]
init()moSteadyFitSolContinue< EOT > [inline, virtual]
maxNumberOfIterationsmoSteadyFitSolContinue< EOT > [private]
maxNumberOfIterationsReachedmoSteadyFitSolContinue< EOT > [private]
maxNumberOfIterationsWithoutImprovementmoSteadyFitSolContinue< EOT > [private]
moSteadyFitSolContinue(unsigned int _maxNumberOfIterations, unsigned int _maxNumberOfIterationWithoutImprovement)moSteadyFitSolContinue< EOT > [inline]
operator()(const EOT &_solution)moSteadyFitSolContinue< EOT > [inline, virtual]
~eoFunctorBase()eoFunctorBase [virtual]
~eoUF()eoUF< const EOT &, bool > [virtual]


Generated on Wed Jan 16 15:50:41 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_steady_fit_sol_continue.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_steady_fit_sol_continue.html new file mode 100644 index 000000000..7e229c470 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_steady_fit_sol_continue.html @@ -0,0 +1,217 @@ + + +ParadisEO-MOMovingObjects: moSteadyFitSolContinue< EOT > Class Template Reference + + + + +
+ +
+ +

moSteadyFitSolContinue< EOT > Class Template Reference

One possible stopping criterion for a solution-based heuristic. +More... +

+#include <moSteadyFitSolContinue.h> +

+

+Inheritance diagram for moSteadyFitSolContinue< EOT >:
+
+ +

+ +moSolContinue< EOT > +eoUF< const EOT &, bool > +eoFunctorBase + +
+ +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

+typedef EOT::Fitness Fitness
 Alias for the fitness.

Public Member Functions

 moSteadyFitSolContinue (unsigned int _maxNumberOfIterations, unsigned int _maxNumberOfIterationWithoutImprovement)
 Basic constructor.
bool operator() (const EOT &_solution)
 Function that activates the stopping criterion.
void init ()
 Procedure which allows to initialise the stuff needed.

Private Attributes

+unsigned int maxNumberOfIterations
 Maximum number of iterations before considering the fitness.
+unsigned int maxNumberOfIterationsWithoutImprovement
 Maximum number of iterations without improvement allowed.
+bool maxNumberOfIterationsReached
 Flag that indicates that the maxNumberIteration have been reached.
+bool firstFitnessSaved
 Flag that this is the first time that the fitness is used.
+Fitness fitness
 Current Fitness.
+unsigned int counter
 The iteration couter.
+


Detailed Description

+

template<class EOT>
+ class moSteadyFitSolContinue< EOT >

+ +One possible stopping criterion for a solution-based heuristic. +

+The stop criterion corresponds to a maximum number of iterations without improvement (after a minimum number of iterations). +

Definition at line 46 of file moSteadyFitSolContinue.h.

+

Constructor & Destructor Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + + + + + + + + + + +
moSteadyFitSolContinue< EOT >::moSteadyFitSolContinue (unsigned int  _maxNumberOfIterations,
unsigned int  _maxNumberOfIterationWithoutImprovement 
) [inline]
+
+
+ +

+Basic constructor. +

+

Parameters:
+ + + +
_maxNumberOfIterations The number of iterations to reach before looking for the fitness.
_maxNumberOfIterationWithoutImprovement The number of iterations without fitness improvement to reach for stop.
+
+ +

Definition at line 58 of file moSteadyFitSolContinue.h.

+ +
+

+


Member Function Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + +
bool moSteadyFitSolContinue< EOT >::operator() (const EOT &  _solution  )  [inline, virtual]
+
+
+ +

+Function that activates the stopping criterion. +

+Indicates if the fitness has not been improved since a number of iterations (after a minimum of iterations).

+

Parameters:
+ + +
_solution the current solution.
+
+
Returns:
true or false.
+ +

Implements eoUF< const EOT &, bool >.

+ +

Definition at line 70 of file moSteadyFitSolContinue.h.

+ +

References moSteadyFitSolContinue< EOT >::counter, moSteadyFitSolContinue< EOT >::firstFitnessSaved, moSteadyFitSolContinue< EOT >::fitness, moSteadyFitSolContinue< EOT >::maxNumberOfIterations, moSteadyFitSolContinue< EOT >::maxNumberOfIterationsReached, and moSteadyFitSolContinue< EOT >::maxNumberOfIterationsWithoutImprovement.

+ +
+

+ +

+
+
+template<class EOT>
+ + + + + + + + +
void moSteadyFitSolContinue< EOT >::init (  )  [inline, virtual]
+
+
+ +

+Procedure which allows to initialise the stuff needed. +

+It can be also used to reinitialize the counter all the needed things. +

Implements moSolContinue< EOT >.

+ +

Definition at line 114 of file moSteadyFitSolContinue.h.

+ +

References moSteadyFitSolContinue< EOT >::counter, moSteadyFitSolContinue< EOT >::firstFitnessSaved, and moSteadyFitSolContinue< EOT >::maxNumberOfIterationsReached.

+ +
+

+


The documentation for this class was generated from the following file: +
Generated on Wed Jan 16 15:50:41 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_steady_fit_sol_continue.png b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_steady_fit_sol_continue.png new file mode 100644 index 000000000..702e690a2 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_steady_fit_sol_continue.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_t_s-members.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_t_s-members.html new file mode 100644 index 000000000..991ea87e9 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_t_s-members.html @@ -0,0 +1,60 @@ + + +ParadisEO-MOMovingObjects: Member List + + + + +
+ +
+ +

moTS< M > Member List

This is the complete list of members for moTS< M >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + +
binaryeoOp< EOType >
className() consteoMonOp< M::EOType > [virtual]
continumoTS< M > [private]
eoMonOp()eoMonOp< M::EOType >
eoOp(OpType _type)eoOp< EOType >
eoOp(const eoOp &_eop)eoOp< EOType >
EOT typedefmoTS< M > [private]
Fitness typedefmoTS< M > [private]
full_evaluationmoTS< M > [private]
functor_category()eoUF< M::EOType &, bool > [static]
generaleoOp< EOType >
getType() consteoOp< EOType >
moTS(moMoveInit< M > &_move_initializer, moNextMove< M > &_next_move_generator, moMoveIncrEval< M > &_incremental_evaluation, moTabuList< M > &_tabu_list, moAspirCrit< M > &_aspiration_criterion, moSolContinue< EOT > &_continue, eoEvalFunc< EOT > &_full_evaluation)moTS< M > [inline]
moTS(moMoveExpl< M > &_move_explorer, moSolContinue< EOT > &_continue, eoEvalFunc< EOT > &_full_evaluation)moTS< M > [inline]
move_explorermoTS< M > [private]
operator()(EOT &_solution)moTS< M > [inline, virtual]
OpType enum nameeoOp< EOType >
quadraticeoOp< EOType >
unaryeoOp< EOType >
~eoFunctorBase()eoFunctorBase [virtual]
~eoOp()eoOp< EOType > [virtual]
~eoUF()eoUF< M::EOType &, bool > [virtual]


Generated on Wed Jan 16 15:50:41 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_t_s.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_t_s.html new file mode 100644 index 000000000..3126a0e1d --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_t_s.html @@ -0,0 +1,256 @@ + + +ParadisEO-MOMovingObjects: moTS< M > Class Template Reference + + + + +
+ +
+ +

moTS< M > Class Template Reference

Tabu Search (TS). +More... +

+#include <moTS.h> +

+Inherits moAlgo< M::EOType >. +

+ +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 moTS (moMoveInit< M > &_move_initializer, moNextMove< M > &_next_move_generator, moMoveIncrEval< M > &_incremental_evaluation, moTabuList< M > &_tabu_list, moAspirCrit< M > &_aspiration_criterion, moSolContinue< EOT > &_continue, eoEvalFunc< EOT > &_full_evaluation)
 Constructor of a moTS specifying all the boxes.
 moTS (moMoveExpl< M > &_move_explorer, moSolContinue< EOT > &_continue, eoEvalFunc< EOT > &_full_evaluation)
 Constructor with less parameters.
bool operator() (EOT &_solution)
 Function which launchs the Tabu Search.

Private Types

+typedef M::EOType EOT
 Alias for the type.
+typedef EOT::Fitness Fitness
 Alias for the fitness.

Private Attributes

+moMoveExpl< M > & move_explorer
 Neighborhood explorer.
+moSolContinue< EOT > & continu
 Stop criterion.
+eoEvalFunc< EOT > & full_evaluation
 Full evaluation function.
+


Detailed Description

+

template<class M>
+ class moTS< M >

+ +Tabu Search (TS). +

+Generic algorithm that describes a tabu search. +

Definition at line 50 of file moTS.h.

+

Constructor & Destructor Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
moTS< M >::moTS (moMoveInit< M > &  _move_initializer,
moNextMove< M > &  _next_move_generator,
moMoveIncrEval< M > &  _incremental_evaluation,
moTabuList< M > &  _tabu_list,
moAspirCrit< M > &  _aspiration_criterion,
moSolContinue< EOT > &  _continue,
eoEvalFunc< EOT > &  _full_evaluation 
) [inline]
+
+
+ +

+Constructor of a moTS specifying all the boxes. +

+In this constructor, a moTSMoveLoopExpl is instanciated.

+

Parameters:
+ + + + + + + + +
_move_initializer The move initializer.
_next_move_generator The neighbourhood explorer.
_incremental_evaluation The (generally) efficient evaluation.
_tabu_list The tabu list.
_aspiration_criterion An aspiration criterion.
_continue The stopping criterion.
_full_evaluation A full evaluation function.
+
+ +

Definition at line 72 of file moTS.h.

+ +
+

+ +

+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + + + + + + + +
moTS< M >::moTS (moMoveExpl< M > &  _move_explorer,
moSolContinue< EOT > &  _continue,
eoEvalFunc< EOT > &  _full_evaluation 
) [inline]
+
+
+ +

+Constructor with less parameters. +

+The explorer is given in the parameters.

+

Parameters:
+ + + + +
_move_explorer The explorer (generally different that a moTSMoveLoopExpl).
_continue The stopping criterion.
_full_evaluation A full evaluation function.
+
+ +

Definition at line 89 of file moTS.h.

+ +
+

+


Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + +
bool moTS< M >::operator() (EOT _solution  )  [inline, virtual]
+
+
+ +

+Function which launchs the Tabu Search. +

+Algorithm of the tabu search. As a moSA or a moHC, it can be used for HYBRIDATION in an evolutionary algorithm. For security a lock (pthread_mutex_t) is closed during the algorithm.

+

Parameters:
+ + +
_solution a solution to improve.
+
+
Returns:
TRUE.
+ +

Implements eoUF< M::EOType &, bool >.

+ +

Definition at line 102 of file moTS.h.

+ +

References moTS< M >::continu, moTS< M >::full_evaluation, and moTS< M >::move_explorer.

+ +
+

+


The documentation for this class was generated from the following file: +
Generated on Wed Jan 16 15:50:41 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_t_s_move_loop_expl-members.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_t_s_move_loop_expl-members.html new file mode 100644 index 000000000..943bb0d31 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_t_s_move_loop_expl-members.html @@ -0,0 +1,51 @@ + + +ParadisEO-MOMovingObjects: Member List + + + + +
+ +
+ +

moTSMoveLoopExpl< M > Member List

This is the complete list of members for moTSMoveLoopExpl< M >, including all inherited members.

+ + + + + + + + + + + + + +
aspiration_criterionmoTSMoveLoopExpl< M > [private]
EOT typedefmoTSMoveLoopExpl< M > [private]
Fitness typedefmoTSMoveLoopExpl< M > [private]
functor_category()eoBF< const M::EOType &, M::EOType &, void > [static]
incremental_evaluationmoTSMoveLoopExpl< M > [private]
moTSMoveLoopExpl(moMoveInit< M > &_move_initializer, moNextMove< M > &_next_move_generator, moMoveIncrEval< M > &_incremental_evaluation, moTabuList< M > &_tabu_list, moAspirCrit< M > &_aspiration_criterion)moTSMoveLoopExpl< M > [inline]
move_initializermoTSMoveLoopExpl< M > [private]
move_selectionmoTSMoveLoopExpl< M > [private]
next_move_generatormoTSMoveLoopExpl< M > [private]
operator()(const EOT &_old_solution, EOT &_new_solution)moTSMoveLoopExpl< M > [inline, virtual]
tabu_listmoTSMoveLoopExpl< M > [private]
~eoBF()eoBF< const M::EOType &, M::EOType &, void > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Wed Jan 16 15:50:41 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_t_s_move_loop_expl.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_t_s_move_loop_expl.html new file mode 100644 index 000000000..b0b454f8b --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_t_s_move_loop_expl.html @@ -0,0 +1,222 @@ + + +ParadisEO-MOMovingObjects: moTSMoveLoopExpl< M > Class Template Reference + + + + +
+ +
+ +

moTSMoveLoopExpl< M > Class Template Reference

Explorer for a Tabu Search algorithm. +More... +

+#include <moTSMoveLoopExpl.h> +

+

+Inheritance diagram for moTSMoveLoopExpl< M >:
+
+ +

+ +moMoveLoopExpl< M > +moMoveExpl< M > +eoBF< const M::EOType &, M::EOType &, void > +eoFunctorBase + +
+ +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 moTSMoveLoopExpl (moMoveInit< M > &_move_initializer, moNextMove< M > &_next_move_generator, moMoveIncrEval< M > &_incremental_evaluation, moTabuList< M > &_tabu_list, moAspirCrit< M > &_aspiration_criterion)
 Constructor.
void operator() (const EOT &_old_solution, EOT &_new_solution)
 Procedure which lauches the exploration.

Private Types

+typedef M::EOType EOT
 Alias for the type.
+typedef M::EOType::Fitness Fitness
 Alias for the fitness.

Private Attributes

+moMoveInit< M > & move_initializer
 Move initialisation.
+moNextMove< M > & next_move_generator
 Neighborhood explorer.
+moMoveIncrEval< M > & incremental_evaluation
 Efficient evaluation.
+moBestImprSelect< M > move_selection
 Move selector.
+moTabuList< M > & tabu_list
 Tabu list.
+moAspirCrit< M > & aspiration_criterion
 Aspiration criterion.
+


Detailed Description

+

template<class M>
+ class moTSMoveLoopExpl< M >

+ +Explorer for a Tabu Search algorithm. +

+It is used by a moTS. +

Definition at line 53 of file moTSMoveLoopExpl.h.

+

Constructor & Destructor Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
moTSMoveLoopExpl< M >::moTSMoveLoopExpl (moMoveInit< M > &  _move_initializer,
moNextMove< M > &  _next_move_generator,
moMoveIncrEval< M > &  _incremental_evaluation,
moTabuList< M > &  _tabu_list,
moAspirCrit< M > &  _aspiration_criterion 
) [inline]
+
+
+ +

+Constructor. +

+

Parameters:
+ + + + + + +
_move_initializer The move initializer.
_next_move_generator The neighbourhood explorer.
_incremental_evaluation A (generally) efficient evaluation.
_tabu_list The tabu list.
_aspiration_criterion An aspiration criterion.
+
+ +

Definition at line 71 of file moTSMoveLoopExpl.h.

+ +

References moTSMoveLoopExpl< M >::aspiration_criterion, and moTSMoveLoopExpl< M >::tabu_list.

+ +
+

+


Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
void moTSMoveLoopExpl< M >::operator() (const EOT _old_solution,
EOT _new_solution 
) [inline, virtual]
+
+
+ +

+Procedure which lauches the exploration. +

+The exploration continues while the chosen move is not in the tabu list or the aspiration criterion is true. If these 2 conditions are not true, the exploration stops if the move selector update function returns false.

+

Parameters:
+ + + +
_old_solution the initial solution
_new_solution the new solution
+
+ +

Implements eoBF< const M::EOType &, M::EOType &, void >.

+ +

Definition at line 90 of file moTSMoveLoopExpl.h.

+ +

References moTSMoveLoopExpl< M >::aspiration_criterion, moTSMoveLoopExpl< M >::incremental_evaluation, moTSMoveLoopExpl< M >::move_initializer, moTSMoveLoopExpl< M >::move_selection, moTSMoveLoopExpl< M >::next_move_generator, and moTSMoveLoopExpl< M >::tabu_list.

+ +
+

+


The documentation for this class was generated from the following file: +
Generated on Wed Jan 16 15:50:41 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_t_s_move_loop_expl.png b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_t_s_move_loop_expl.png new file mode 100644 index 000000000..717f30a17 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_t_s_move_loop_expl.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_tabu_list-members.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_tabu_list-members.html new file mode 100644 index 000000000..ced1c7fd5 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_tabu_list-members.html @@ -0,0 +1,46 @@ + + +ParadisEO-MOMovingObjects: Member List + + + + +
+ +
+ +

moTabuList< M > Member List

This is the complete list of members for moTabuList< M >, including all inherited members.

+ + + + + + + + +
add(const M &_move, const EOT &_solution)=0moTabuList< M > [pure virtual]
EOT typedefmoTabuList< M >
functor_category()eoBF< A1, A2, R > [static]
init()=0moTabuList< M > [pure virtual]
operator()(A1, A2)=0eoBF< A1, A2, R > [pure virtual]
update()=0moTabuList< M > [pure virtual]
~eoBF()eoBF< A1, A2, R > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Wed Jan 16 15:50:41 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_tabu_list.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_tabu_list.html new file mode 100644 index 000000000..9454576c4 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_tabu_list.html @@ -0,0 +1,177 @@ + + +ParadisEO-MOMovingObjects: moTabuList< M > Class Template Reference + + + + +
+ +
+ +

moTabuList< M > Class Template Reference

Class describing a tabu list that a moTS uses. +More... +

+#include <moTabuList.h> +

+

+Inheritance diagram for moTabuList< M >:
+
+ +

+ +eoBF< A1, A2, R > +eoFunctorBase +moSimpleMoveTabuList< M > +moSimpleSolutionTabuList< M > + +
+ +

+List of all members. + + + + + + + + + + + + + + + +

Public Types

+typedef M::EOType EOT
 Alias for the type.

Public Member Functions

virtual void add (const M &_move, const EOT &_solution)=0
 Procedure to add a move in the tabu list.
virtual void update ()=0
 Procedure that updates the tabu list content.
virtual void init ()=0
 Procedure which initialises the tabu list.
+


Detailed Description

+

template<class M>
+ class moTabuList< M >

+ +Class describing a tabu list that a moTS uses. +

+It is only a description, does nothing... A new object that herits from this class has to be defined in order to be used in a moTS. +

Definition at line 46 of file moTabuList.h.

+

Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
virtual void moTabuList< M >::add (const M &  _move,
const EOT _solution 
) [pure virtual]
+
+
+ +

+Procedure to add a move in the tabu list. +

+The two parameters have not to be modified so they are constant parameters.

+

Parameters:
+ + + +
_move a new tabu move.
_solution the origianl solution associated to this move.
+
+ +

Implemented in moSimpleMoveTabuList< M >, and moSimpleSolutionTabuList< M >.

+ +
+

+ +

+
+
+template<class M>
+ + + + + + + + +
virtual void moTabuList< M >::update (  )  [pure virtual]
+
+
+ +

+Procedure that updates the tabu list content. +

+Generally, a counter associated to each saved move is decreased by one. +

Implemented in moSimpleMoveTabuList< M >, and moSimpleSolutionTabuList< M >.

+ +
+

+ +

+
+
+template<class M>
+ + + + + + + + +
virtual void moTabuList< M >::init (  )  [pure virtual]
+
+
+ +

+Procedure which initialises the tabu list. +

+Can be useful if the data structure needs to be allocated before being used. +

Implemented in moSimpleMoveTabuList< M >, and moSimpleSolutionTabuList< M >.

+ +
+

+


The documentation for this class was generated from the following file: +
Generated on Wed Jan 16 15:50:41 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_tabu_list.png b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_tabu_list.png new file mode 100644 index 000000000..b4c545581 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/classmo_tabu_list.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/doxygen.css b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/doxygen.css new file mode 100644 index 000000000..e261cf6d5 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/doxygen.css @@ -0,0 +1,359 @@ +BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV { + font-family: Geneva, Arial, Helvetica, sans-serif; +} +BODY,TD { + font-size: 90%; +} +H1 { + text-align: center; + font-size: 160%; +} +H2 { + font-size: 120%; +} +H3 { + font-size: 100%; +} +CAPTION { font-weight: bold } +DIV.qindex { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.nav { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.navtab { + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} +TD.navtab { + font-size: 70%; +} +A.qindex { + text-decoration: none; + font-weight: bold; + color: #1A419D; +} +A.qindex:visited { + text-decoration: none; + font-weight: bold; + color: #1A419D +} +A.qindex:hover { + text-decoration: none; + background-color: #ddddff; +} +A.qindexHL { + text-decoration: none; + font-weight: bold; + background-color: #6666cc; + color: #ffffff; + border: 1px double #9295C2; +} +A.qindexHL:hover { + text-decoration: none; + background-color: #6666cc; + color: #ffffff; +} +A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff } +A.el { text-decoration: none; font-weight: bold } +A.elRef { font-weight: bold } +A.code:link { text-decoration: none; font-weight: normal; color: #0000FF} +A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF} +A.codeRef:link { font-weight: normal; color: #0000FF} +A.codeRef:visited { font-weight: normal; color: #0000FF} +A:hover { text-decoration: none; background-color: #f2f2ff } +DL.el { margin-left: -1cm } +.fragment { + font-family: monospace, fixed; + font-size: 95%; +} +PRE.fragment { + border: 1px solid #CCCCCC; + background-color: #f5f5f5; + margin-top: 4px; + margin-bottom: 4px; + margin-left: 2px; + margin-right: 8px; + padding-left: 6px; + padding-right: 6px; + padding-top: 4px; + padding-bottom: 4px; +} +DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px } + +DIV.groupHeader { + margin-left: 16px; + margin-top: 12px; + margin-bottom: 6px; + font-weight: bold; +} +DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% } +BODY { + background: white; + color: black; + margin-right: 20px; + margin-left: 20px; +} +TD.indexkey { + background-color: #e8eef2; + font-weight: bold; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TD.indexvalue { + background-color: #e8eef2; + font-style: italic; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TR.memlist { + background-color: #f0f0f0; +} +P.formulaDsp { text-align: center; } +IMG.formulaDsp { } +IMG.formulaInl { vertical-align: middle; } +SPAN.keyword { color: #008000 } +SPAN.keywordtype { color: #604020 } +SPAN.keywordflow { color: #e08000 } +SPAN.comment { color: #800000 } +SPAN.preprocessor { color: #806020 } +SPAN.stringliteral { color: #002080 } +SPAN.charliteral { color: #008080 } +.mdescLeft { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.mdescRight { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.memItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplParams { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + color: #606060; + background-color: #FAFAFA; + font-size: 80%; +} +.search { color: #003399; + font-weight: bold; +} +FORM.search { + margin-bottom: 0px; + margin-top: 0px; +} +INPUT.search { font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +TD.tiny { font-size: 75%; +} +a { + color: #1A41A8; +} +a:visited { + color: #2A3798; +} +.dirtab { padding: 4px; + border-collapse: collapse; + border: 1px solid #84b0c7; +} +TH.dirtab { background: #e8eef2; + font-weight: bold; +} +HR { height: 1px; + border: none; + border-top: 1px solid black; +} + +/* Style for detailed member documentation */ +.memtemplate { + font-size: 80%; + color: #606060; + font-weight: normal; + margin-left: 3px; +} +.memnav { + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} +.memitem { + padding: 4px; + background-color: #eef3f5; + border-width: 1px; + border-style: solid; + border-color: #dedeee; + -moz-border-radius: 8px 8px 8px 8px; +} +.memname { + white-space: nowrap; + font-weight: bold; +} +.memdoc{ + padding-left: 10px; +} +.memproto { + background-color: #d5e1e8; + width: 100%; + border-width: 1px; + border-style: solid; + border-color: #84b0c7; + font-weight: bold; + -moz-border-radius: 8px 8px 8px 8px; +} +.paramkey { + text-align: right; +} +.paramtype { + white-space: nowrap; +} +.paramname { + color: #602020; + font-style: italic; + white-space: nowrap; +} +/* End Styling for detailed member documentation */ + +/* for the tree view */ +.ftvtree { + font-family: sans-serif; + margin:0.5em; +} +.directory { font-size: 9pt; font-weight: bold; } +.directory h3 { margin: 0px; margin-top: 1em; font-size: 11pt; } +.directory > h3 { margin-top: 0; } +.directory p { margin: 0px; white-space: nowrap; } +.directory div { display: none; margin: 0px; } +.directory img { vertical-align: -30%; } diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/doxygen.png b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/doxygen.png new file mode 100644 index 000000000..f0a274bba Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/doxygen.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/files.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/files.html new file mode 100644 index 000000000..0997953a4 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/files.html @@ -0,0 +1,69 @@ + + +ParadisEO-MOMovingObjects: File Index + + + + +
+ +
+

ParadisEO-MOMovingObjects File List

Here is a list of all documented files with brief descriptions: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
index.h [code]
mo.h [code]
moAlgo.h [code]
moAspirCrit.h [code]
moBestImprSelect.h [code]
moComparator.h [code]
moCoolingSchedule.h [code]
moExponentialCoolingSchedule.h [code]
moFirstImprSelect.h [code]
moFitComparator.h [code]
moFitSolContinue.h [code]
moGenSolContinue.h [code]
moHC.h [code]
moHCMoveLoopExpl.h [code]
moILS.h [code]
moImprBestFitAspirCrit.h [code]
moItRandNextMove.h [code]
moLinearCoolingSchedule.h [code]
moLSCheckPoint.h [code]
moMove.h [code]
moMoveExpl.h [code]
moMoveIncrEval.h [code]
moMoveInit.h [code]
moMoveLoopExpl.h [code]
moMoveSelect.h [code]
moNextMove.h [code]
moNoAspirCrit.h [code]
moNoFitImprSolContinue.h [code]
moRandImprSelect.h [code]
moRandMove.h [code]
moSA.h [code]
moSimpleMoveTabuList.h [code]
moSimpleSolutionTabuList.h [code]
moSolContinue.h [code]
moSteadyFitSolContinue.h [code]
moTabuList.h [code]
moTS.h [code]
moTSMoveLoopExpl.h [code]
+
Generated on Wed Jan 16 15:50:41 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/ftv2blank.png b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/ftv2blank.png new file mode 100644 index 000000000..493c3c0b6 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/ftv2blank.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/ftv2doc.png b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/ftv2doc.png new file mode 100644 index 000000000..f72999f92 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/ftv2doc.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/ftv2folderclosed.png b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/ftv2folderclosed.png new file mode 100644 index 000000000..d6d063440 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/ftv2folderclosed.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/ftv2folderopen.png b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/ftv2folderopen.png new file mode 100644 index 000000000..bbe2c913c Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/ftv2folderopen.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/ftv2lastnode.png b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/ftv2lastnode.png new file mode 100644 index 000000000..e7b9ba90c Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/ftv2lastnode.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/ftv2link.png b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/ftv2link.png new file mode 100644 index 000000000..14f3fed00 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/ftv2link.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/ftv2mlastnode.png b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/ftv2mlastnode.png new file mode 100644 index 000000000..09ceb6adb Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/ftv2mlastnode.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/ftv2mnode.png b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/ftv2mnode.png new file mode 100644 index 000000000..3254c0511 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/ftv2mnode.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/ftv2node.png b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/ftv2node.png new file mode 100644 index 000000000..c9f06a57f Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/ftv2node.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/ftv2plastnode.png b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/ftv2plastnode.png new file mode 100644 index 000000000..0b07e0091 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/ftv2plastnode.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/ftv2pnode.png b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/ftv2pnode.png new file mode 100644 index 000000000..2001b797b Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/ftv2pnode.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/ftv2vertline.png b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/ftv2vertline.png new file mode 100644 index 000000000..b330f3a33 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/ftv2vertline.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/functions.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/functions.html new file mode 100644 index 000000000..7a393a0b2 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/functions.html @@ -0,0 +1,337 @@ + + +ParadisEO-MOMovingObjects: Class Members + + + + +
+ +
+ + +
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- a -

+

- b -

+

- c -

+

- e -

+

- f -

+

- g -

+

- h -

+

- i -

+

- l -

+

- m -

+

- n -

+

- o -

+

- p -

+

- q -

+

- r -

+

- s -

+

- t -

+

- u -

+

- v -

+
Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/functions_func.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/functions_func.html new file mode 100644 index 000000000..047e0efa2 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/functions_func.html @@ -0,0 +1,180 @@ + + +ParadisEO-MOMovingObjects: Class Members - Functions + + + + +
+ +
+ + +
+ +
+ +

+  +

+

- a -

+

- e -

+

- f -

+

- g -

+

- h -

+

- i -

+

- l -

+

- n -

+

- o -

+

- r -

+

- s -

+

- t -

+

- u -

+
Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/functions_type.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/functions_type.html new file mode 100644 index 000000000..a25a5af2c --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/functions_type.html @@ -0,0 +1,81 @@ + + +ParadisEO-MOMovingObjects: Class Members - Typedefs + + + + +
+ +
+ + +  +

+

+
Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/functions_vars.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/functions_vars.html new file mode 100644 index 000000000..321b4a8a3 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/functions_vars.html @@ -0,0 +1,196 @@ + + +ParadisEO-MOMovingObjects: Class Members - Variables + + + + +
+ +
+ + +
+ +
+ +

+  +

+

- a -

+

- b -

+

- c -

+

- f -

+

- g -

+

- i -

+

- m -

+

- n -

+

- p -

+

- q -

+

- r -

+

- t -

+

- v -

+
Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/hierarchy.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/hierarchy.html new file mode 100644 index 000000000..e82dda96c --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/hierarchy.html @@ -0,0 +1,133 @@ + + +ParadisEO-MOMovingObjects: Hierarchical Index + + + + +
+ +
+ +

ParadisEO-MOMovingObjects Class Hierarchy

This inheritance list is sorted roughly, but not completely, alphabetically: +
Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/index.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/index.html new file mode 100644 index 000000000..80255e80b --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/index.html @@ -0,0 +1,11 @@ + + +ParadisEO-MOMovingObjects + + + + + <a href="main.html">Frames are disabled. Click here to go to the main page.</a> + + + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/index_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/index_8h-source.html new file mode 100644 index 000000000..0b4c1ec31 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/index_8h-source.html @@ -0,0 +1,35 @@ + + +ParadisEO-MOMovingObjects: index.h Source File + + + + +
+ +
+

index.h

00001 
+00064 // coding: iso-8859-1
+00065 // mode: C++
+00066 // c-file-style: "Stroustrup"
+00067 // fill-column: 80
+00068 // End:
+

Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/installdox b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/installdox new file mode 100755 index 000000000..1628445b3 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/installdox @@ -0,0 +1,117 @@ +#!/usr/bin/perl + +%subst = ( "eo.doxytag", ""); +$quiet = 0; + +if (open(F,"search.cfg")) +{ + $_= ; s/[ \t\n]*$//g ; $subst{"_doc"} = $_; + $_= ; s/[ \t\n]*$//g ; $subst{"_cgi"} = $_; +} + +while ( @ARGV ) { + $_ = shift @ARGV; + if ( s/^-// ) { + if ( /^l(.*)/ ) { + $v = ($1 eq "") ? shift @ARGV : $1; + ($v =~ /\/$/) || ($v .= "/"); + $_ = $v; + if ( /(.+)\@(.+)/ ) { + if ( exists $subst{$1} ) { + $subst{$1} = $2; + } else { + print STDERR "Unknown tag file $1 given with option -l\n"; + &usage(); + } + } else { + print STDERR "Argument $_ is invalid for option -l\n"; + &usage(); + } + } + elsif ( /^q/ ) { + $quiet = 1; + } + elsif ( /^\?|^h/ ) { + &usage(); + } + else { + print STDERR "Illegal option -$_\n"; + &usage(); + } + } + else { + push (@files, $_ ); + } +} + +foreach $sub (keys %subst) +{ + if ( $subst{$sub} eq "" ) + { + print STDERR "No substitute given for tag file `$sub'\n"; + &usage(); + } + elsif ( ! $quiet && $sub ne "_doc" && $sub ne "_cgi" ) + { + print "Substituting $subst{$sub} for each occurence of tag file $sub\n"; + } +} + +if ( ! @files ) { + if (opendir(D,".")) { + foreach $file ( readdir(D) ) { + $match = ".html"; + next if ( $file =~ /^\.\.?$/ ); + ($file =~ /$match/) && (push @files, $file); + ($file =~ "tree.js") && (push @files, $file); + } + closedir(D); + } +} + +if ( ! @files ) { + print STDERR "Warning: No input files given and none found!\n"; +} + +foreach $f (@files) +{ + if ( ! $quiet ) { + print "Editing: $f...\n"; + } + $oldf = $f; + $f .= ".bak"; + unless (rename $oldf,$f) { + print STDERR "Error: cannot rename file $oldf\n"; + exit 1; + } + if (open(F,"<$f")) { + unless (open(G,">$oldf")) { + print STDERR "Error: opening file $oldf for writing\n"; + exit 1; + } + if ($oldf ne "tree.js") { + while () { + s/doxygen\=\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\" (href|src)=\"\2/doxygen\=\"$1:$subst{$1}\" \3=\"$subst{$1}/g; + print G "$_"; + } + } + else { + while () { + s/\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\", \"\2/\"$1:$subst{$1}\" ,\"$subst{$1}/g; + print G "$_"; + } + } + } + else { + print STDERR "Warning file $f does not exist\n"; + } + unlink $f; +} + +sub usage { + print STDERR "Usage: installdox [options] [html-file [html-file ...]]\n"; + print STDERR "Options:\n"; + print STDERR " -l tagfile\@linkName tag file + URL or directory \n"; + print STDERR " -q Quiet mode\n\n"; + exit 1; +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/main.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/main.html new file mode 100644 index 000000000..7ea4cc0a2 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/main.html @@ -0,0 +1,51 @@ + + +ParadisEO-MOMovingObjects: Welcome to PARADISEO-Moving Objects + + + + +
+ +
+

Welcome to PARADISEO-Moving Objects

+

+

1.0

+Introduction

+MO is an extension of the ANSI-C++ compliant evolutionary computation library EO.
+ It contains classes for almost any kind of one solution based heuristics.

+AUTHORS

+ + + + + +
Sebastien CAHON
Jean-Charles BOISSON
+

+LICENSE

+This software is governed by the CeCILL license under French law and abiding by the rules of distribution of free software. You can use, modify and/ or redistribute the software under the terms of the CeCILL license as circulated by CEA, CNRS and INRIA at the following URL "http://www.cecill.info".

+As a counterpart to the access to the source code and rights to copy, modify and redistribute granted by the license, users are provided only with a limited warranty and the software's author, the holder of the economic rights, and the successive licensors have only limited liability.

+In this respect, the user's attention is drawn to the risks associated with loading, using, modifying and/or developing or reproducing the software by the user in light of its specific status of free software, that may mean that it is complicated to manipulate, and that also therefore means that it is reserved for developers and experienced professionals having in-depth computer knowledge. Users are therefore encouraged to load and test the software's suitability as regards their requirements in conditions enabling the security of their systems and/or data to be ensured and, more generally, to use and operate it in the same conditions as regards security. The fact that you are presently reading this means that you have had knowledge of the CeCILL license and that you accept its terms.

+ParadisEO WebSite : http://paradiseo.gforge.inria.fr Contact: paradiseo-help@lists.gforge.inria.fr

+Home Page

+http://paradiseo.gforge.inria.fr

+Installation

+The installation procedure of the package is detailed in the README file in the top-directory of the source-tree.
Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_8h-source.html new file mode 100644 index 000000000..30b9ba63e --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_8h-source.html @@ -0,0 +1,105 @@ + + +ParadisEO-MOMovingObjects: mo.h Source File + + + + +
+ +
+

mo.h

00001 /*
+00002   <mo.h>
+00003   Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004   (C) OPAC Team, LIFL, 2002-2007
+00005 
+00006   Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+00007 
+00008   This software is governed by the CeCILL license under French law and
+00009   abiding by the rules of distribution of free software.  You can  use,
+00010   modify and/ or redistribute the software under the terms of the CeCILL
+00011   license as circulated by CEA, CNRS and INRIA at the following URL
+00012   "http://www.cecill.info".
+00013 
+00014   As a counterpart to the access to the source code and  rights to copy,
+00015   modify and redistribute granted by the license, users are provided only
+00016   with a limited warranty  and the software's author,  the holder of the
+00017   economic rights,  and the successive licensors  have only  limited liability.
+00018 
+00019   In this respect, the user's attention is drawn to the risks associated
+00020   with loading,  using,  modifying and/or developing or reproducing the
+00021   software by the user in light of its specific status of free software,
+00022   that may mean  that it is complicated to manipulate,  and  that  also
+00023   therefore means  that it is reserved for developers  and  experienced
+00024   professionals having in-depth computer knowledge. Users are therefore
+00025   encouraged to load and test the software's suitability as regards their
+00026   requirements in conditions enabling the security of their systems and/or
+00027   data to be ensured and,  more generally, to use and operate it in the
+00028   same conditions as regards security.
+00029   The fact that you are presently reading this means that you have had
+00030   knowledge of the CeCILL license and that you accept its terms.
+00031 
+00032   ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033   Contact: paradiseo-help@lists.gforge.inria.fr
+00034 */
+00035 
+00036 #ifndef _mo_h
+00037 #define _mo_h
+00038 
+00039 #include <moAlgo.h>
+00040 #include <moAspirCrit.h>
+00041 #include <moBestImprSelect.h>
+00042 #include <moComparator.h>
+00043 #include <moCoolingSchedule.h>
+00044 #include <moExponentialCoolingSchedule.h>
+00045 #include <moFirstImprSelect.h>
+00046 #include <moFitComparator.h>
+00047 #include <moFitSolContinue.h>
+00048 #include <moGenSolContinue.h>
+00049 #include <moHC.h>
+00050 #include <moHCMoveLoopExpl.h>
+00051 #include <moILS.h>
+00052 #include <moImprBestFitAspirCrit.h>
+00053 #include <moItRandNextMove.h>
+00054 #include <moLinearCoolingSchedule.h>
+00055 #include <moLSCheckPoint.h>
+00056 #include <moMoveExpl.h>
+00057 #include <moMove.h>
+00058 #include <moMoveIncrEval.h>
+00059 #include <moMoveInit.h>
+00060 #include <moMoveLoopExpl.h>
+00061 #include <moMoveSelect.h>
+00062 #include <moNextMove.h>
+00063 #include <moNoAspirCrit.h>
+00064 #include <moNoFitImprSolContinue.h>
+00065 #include <moRandImprSelect.h>
+00066 #include <moRandMove.h>
+00067 #include <moSA.h>
+00068 #include <moSimpleMoveTabuList.h>
+00069 #include <moSimpleSolutionTabuList.h>
+00070 #include <moSolContinue.h>
+00071 #include <moSteadyFitSolContinue.h>
+00072 #include <moTabuList.h>
+00073 #include <moTS.h>
+00074 #include <moTSMoveLoopExpl.h>
+00075 
+00076 #endif
+

Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_algo_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_algo_8h-source.html new file mode 100644 index 000000000..4c5313ab8 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_algo_8h-source.html @@ -0,0 +1,75 @@ + + +ParadisEO-MOMovingObjects: moAlgo.h Source File + + + + +
+ +
+

moAlgo.h

00001 /*
+00002   <moAlgo.h>
+00003   Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+00004   (C) OPAC Team, LIFL, 2002-2008
+00005 
+00006   Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+00007 
+00008   This software is governed by the CeCILL license under French law and
+00009   abiding by the rules of distribution of free software.  You can  use,
+00010   modify and/ or redistribute the software under the terms of the CeCILL
+00011   license as circulated by CEA, CNRS and INRIA at the following URL
+00012   "http://www.cecill.info".
+00013 
+00014   As a counterpart to the access to the source code and  rights to copy,
+00015   modify and redistribute granted by the license, users are provided only
+00016   with a limited warranty  and the software's author,  the holder of the
+00017   economic rights,  and the successive licensors  have only  limited liability.
+00018 
+00019   In this respect, the user's attention is drawn to the risks associated
+00020   with loading,  using,  modifying and/or developing or reproducing the
+00021   software by the user in light of its specific status of free software,
+00022   that may mean  that it is complicated to manipulate,  and  that  also
+00023   therefore means  that it is reserved for developers  and  experienced
+00024   professionals having in-depth computer knowledge. Users are therefore
+00025   encouraged to load and test the software's suitability as regards their
+00026   requirements in conditions enabling the security of their systems and/or
+00027   data to be ensured and,  more generally, to use and operate it in the
+00028   same conditions as regards security.
+00029   The fact that you are presently reading this means that you have had
+00030   knowledge of the CeCILL license and that you accept its terms.
+00031 
+00032   ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033   Contact: paradiseo-help@lists.gforge.inria.fr
+00034 
+00035 */
+00036 
+00037 #ifndef _moAlgo_h
+00038 #define _moAlgo_h
+00039 
+00040 #include <eoOp.h>
+00041 
+00043 
+00046 template < class EOT > class moAlgo:public eoMonOp < EOT >
+00047 {};
+00048 
+00049 #endif
+

Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_aspir_crit_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_aspir_crit_8h-source.html new file mode 100644 index 000000000..36d676c85 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_aspir_crit_8h-source.html @@ -0,0 +1,80 @@ + + +ParadisEO-MOMovingObjects: moAspirCrit.h Source File + + + + +
+ +
+

moAspirCrit.h

00001 /*
+00002   <moAspirCrit.h>
+00003   Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+00004   (C) OPAC Team, LIFL, 2002-2008
+00005 
+00006   Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+00007 
+00008   This software is governed by the CeCILL license under French law and
+00009   abiding by the rules of distribution of free software.  You can  use,
+00010   modify and/ or redistribute the software under the terms of the CeCILL
+00011   license as circulated by CEA, CNRS and INRIA at the following URL
+00012   "http://www.cecill.info".
+00013 
+00014   As a counterpart to the access to the source code and  rights to copy,
+00015   modify and redistribute granted by the license, users are provided only
+00016   with a limited warranty  and the software's author,  the holder of the
+00017   economic rights,  and the successive licensors  have only  limited liability.
+00018 
+00019   In this respect, the user's attention is drawn to the risks associated
+00020   with loading,  using,  modifying and/or developing or reproducing the
+00021   software by the user in light of its specific status of free software,
+00022   that may mean  that it is complicated to manipulate,  and  that  also
+00023   therefore means  that it is reserved for developers  and  experienced
+00024   professionals having in-depth computer knowledge. Users are therefore
+00025   encouraged to load and test the software's suitability as regards their
+00026   requirements in conditions enabling the security of their systems and/or
+00027   data to be ensured and,  more generally, to use and operate it in the
+00028   same conditions as regards security.
+00029   The fact that you are presently reading this means that you have had
+00030   knowledge of the CeCILL license and that you accept its terms.
+00031 
+00032   ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033   Contact: paradiseo-help@lists.gforge.inria.fr
+00034 */
+00035 
+00036 #ifndef _moAspirCrit_h
+00037 #define _moAspirCrit_h
+00038 
+00039 #include <eoFunctor.h>
+00040 
+00042 
+00046 template < class M >
+00047 class moAspirCrit: public eoBF < const M &, const typename M::EOType::Fitness &, bool >
+00048 {
+00049  public:
+00050 
+00052 
+00055   virtual void init () = 0;
+00056 };
+00057 
+00058 #endif
+

Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_best_impr_select_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_best_impr_select_8h-source.html new file mode 100644 index 000000000..bde558b8d --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_best_impr_select_8h-source.html @@ -0,0 +1,123 @@ + + +ParadisEO-MOMovingObjects: moBestImprSelect.h Source File + + + + +
+ +
+

moBestImprSelect.h

00001 /*
+00002   <moBestImprSelect.h>
+00003   Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+00004   (C) OPAC Team, LIFL, 2002-2008
+00005 
+00006   Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+00007 
+00008   This software is governed by the CeCILL license under French law and
+00009   abiding by the rules of distribution of free software.  You can  use,
+00010   modify and/ or redistribute the software under the terms of the CeCILL
+00011   license as circulated by CEA, CNRS and INRIA at the following URL
+00012   "http://www.cecill.info".
+00013 
+00014   As a counterpart to the access to the source code and  rights to copy,
+00015   modify and redistribute granted by the license, users are provided only
+00016   with a limited warranty  and the software's author,  the holder of the
+00017   economic rights,  and the successive licensors  have only  limited liability.
+00018 
+00019   In this respect, the user's attention is drawn to the risks associated
+00020   with loading,  using,  modifying and/or developing or reproducing the
+00021   software by the user in light of its specific status of free software,
+00022   that may mean  that it is complicated to manipulate,  and  that  also
+00023   therefore means  that it is reserved for developers  and  experienced
+00024   professionals having in-depth computer knowledge. Users are therefore
+00025   encouraged to load and test the software's suitability as regards their
+00026   requirements in conditions enabling the security of their systems and/or
+00027   data to be ensured and,  more generally, to use and operate it in the
+00028   same conditions as regards security.
+00029   The fact that you are presently reading this means that you have had
+00030   knowledge of the CeCILL license and that you accept its terms.
+00031 
+00032   ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033   Contact: paradiseo-help@lists.gforge.inria.fr
+00034 */
+00035 
+00036 #ifndef _moBestImprSelect_h
+00037 #define _moBestImprSelect_h
+00038 
+00039 #include <moMoveSelect.h>
+00040 
+00042 
+00046 template < class M >
+00047 class moBestImprSelect:public moMoveSelect < M >
+00048 {
+00049  public:
+00050   
+00052   typedef typename M::EOType::Fitness Fitness;
+00053     
+00055 
+00058   void init (const Fitness & _fitness)
+00059   {
+00060     //Code only used to avoid warning because _fitness is not used in this procedure.
+00061     Fitness fitness=(Fitness)_fitness;
+00062 
+00063     first_time = true;
+00064   }
+00065 
+00066 
+00068 
+00076   bool update (const M & _move, const Fitness & _fitness)
+00077   {
+00078     if ( first_time || (_fitness > best_fitness) )
+00079       {
+00080         best_fitness = _fitness;
+00081         best_move = _move;
+00082           
+00083         first_time = false;
+00084       }
+00085 
+00086     return true;
+00087   }
+00088 
+00090 
+00094   void operator () (M & _move, Fitness & _fitness)
+00095   {
+00096     if(first_time)
+00097       {
+00098         throw std::runtime_error("[moBestImprSelect.h]: no move or/and no fitness already saved, update has to be called first.");
+00099       }
+00100 
+00101     _move = best_move;
+00102     _fitness = best_fitness;
+00103   }
+00104 
+00105  private:
+00106 
+00108   bool first_time;
+00109 
+00111   M best_move;
+00112     
+00114   Fitness best_fitness;
+00115 };
+00116 
+00117 #endif
+

Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_comparator_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_comparator_8h-source.html new file mode 100644 index 000000000..691e4c558 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_comparator_8h-source.html @@ -0,0 +1,74 @@ + + +ParadisEO-MOMovingObjects: moComparator.h Source File + + + + +
+ +
+

moComparator.h

00001 /*
+00002   <moComparator.h>
+00003   Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+00004   (C) OPAC Team, LIFL, 2002-2008
+00005 
+00006   Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+00007 
+00008   This software is governed by the CeCILL license under French law and
+00009   abiding by the rules of distribution of free software.  You can  use,
+00010   modify and/ or redistribute the software under the terms of the CeCILL
+00011   license as circulated by CEA, CNRS and INRIA at the following URL
+00012   "http://www.cecill.info".
+00013 
+00014   As a counterpart to the access to the source code and  rights to copy,
+00015   modify and redistribute granted by the license, users are provided only
+00016   with a limited warranty  and the software's author,  the holder of the
+00017   economic rights,  and the successive licensors  have only  limited liability.
+00018 
+00019   In this respect, the user's attention is drawn to the risks associated
+00020   with loading,  using,  modifying and/or developing or reproducing the
+00021   software by the user in light of its specific status of free software,
+00022   that may mean  that it is complicated to manipulate,  and  that  also
+00023   therefore means  that it is reserved for developers  and  experienced
+00024   professionals having in-depth computer knowledge. Users are therefore
+00025   encouraged to load and test the software's suitability as regards their
+00026   requirements in conditions enabling the security of their systems and/or
+00027   data to be ensured and,  more generally, to use and operate it in the
+00028   same conditions as regards security.
+00029   The fact that you are presently reading this means that you have had
+00030   knowledge of the CeCILL license and that you accept its terms.
+00031 
+00032   ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033   Contact: paradiseo-help@lists.gforge.inria.fr
+00034 */
+00035 
+00036 #ifndef _moComparator_h
+00037 #define _moComparator_h
+00038 
+00039 
+00041 
+00044 template<class EOT>
+00045 class moComparator: public eoBF<const EOT &, const EOT &, bool>
+00046 {};
+00047 
+00048 #endif
+

Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_cooling_schedule_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_cooling_schedule_8h-source.html new file mode 100644 index 000000000..f9ecfd3a4 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_cooling_schedule_8h-source.html @@ -0,0 +1,74 @@ + + +ParadisEO-MOMovingObjects: moCoolingSchedule.h Source File + + + + +
+ +
+

moCoolingSchedule.h

00001 /*
+00002   <moCoolingSchedule.h>
+00003   Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+00004   (C) OPAC Team, LIFL, 2002-2008
+00005 
+00006   Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+00007 
+00008   This software is governed by the CeCILL license under French law and
+00009   abiding by the rules of distribution of free software.  You can  use,
+00010   modify and/ or redistribute the software under the terms of the CeCILL
+00011   license as circulated by CEA, CNRS and INRIA at the following URL
+00012   "http://www.cecill.info".
+00013 
+00014   As a counterpart to the access to the source code and  rights to copy,
+00015   modify and redistribute granted by the license, users are provided only
+00016   with a limited warranty  and the software's author,  the holder of the
+00017   economic rights,  and the successive licensors  have only  limited liability.
+00018 
+00019   In this respect, the user's attention is drawn to the risks associated
+00020   with loading,  using,  modifying and/or developing or reproducing the
+00021   software by the user in light of its specific status of free software,
+00022   that may mean  that it is complicated to manipulate,  and  that  also
+00023   therefore means  that it is reserved for developers  and  experienced
+00024   professionals having in-depth computer knowledge. Users are therefore
+00025   encouraged to load and test the software's suitability as regards their
+00026   requirements in conditions enabling the security of their systems and/or
+00027   data to be ensured and,  more generally, to use and operate it in the
+00028   same conditions as regards security.
+00029   The fact that you are presently reading this means that you have had
+00030   knowledge of the CeCILL license and that you accept its terms.
+00031 
+00032   ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033   Contact: paradiseo-help@lists.gforge.inria.fr
+00034 */
+00035 
+00036 #ifndef _moCoolingSchedule_h
+00037 #define _moCoolingSchedule_h
+00038 
+00039 #include <eoFunctor.h>
+00040 
+00042 
+00046 class moCoolingSchedule : public eoUF < double &, bool >
+00047 {};
+00048 
+00049 #endif
+

Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_exponential_cooling_schedule_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_exponential_cooling_schedule_8h-source.html new file mode 100644 index 000000000..961744a2f --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_exponential_cooling_schedule_8h-source.html @@ -0,0 +1,92 @@ + + +ParadisEO-MOMovingObjects: moExponentialCoolingSchedule.h Source File + + + + +
+ +
+

moExponentialCoolingSchedule.h

00001 /*
+00002   <moExponentialCoolingSchedule.h>
+00003   Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+00004   (C) OPAC Team, LIFL, 2002-2008
+00005  
+00006   Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+00007  
+00008   This software is governed by the CeCILL license under French law and
+00009   abiding by the rules of distribution of free software.  You can  use,
+00010   modify and/ or redistribute the software under the terms of the CeCILL
+00011   license as circulated by CEA, CNRS and INRIA at the following URL
+00012   "http://www.cecill.info".
+00013  
+00014   As a counterpart to the access to the source code and  rights to copy,
+00015   modify and redistribute granted by the license, users are provided only
+00016   with a limited warranty  and the software's author,  the holder of the
+00017   economic rights,  and the successive licensors  have only  limited liability.
+00018  
+00019   In this respect, the user's attention is drawn to the risks associated
+00020   with loading,  using,  modifying and/or developing or reproducing the
+00021   software by the user in light of its specific status of free software,
+00022   that may mean  that it is complicated to manipulate,  and  that  also
+00023   therefore means  that it is reserved for developers  and  experienced
+00024   professionals having in-depth computer knowledge. Users are therefore
+00025   encouraged to load and test the software's suitability as regards their
+00026   requirements in conditions enabling the security of their systems and/or
+00027   data to be ensured and,  more generally, to use and operate it in the
+00028   same conditions as regards security.
+00029   The fact that you are presently reading this means that you have had
+00030   knowledge of the CeCILL license and that you accept its terms.
+00031  
+00032   ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033   Contact: paradiseo-help@lists.gforge.inria.fr
+00034 */
+00035 
+00036 #ifndef _moExponentialCoolingSchedule_h
+00037 #define _moExponentialCoolingSchedule_h
+00038 
+00039 #include <moCoolingSchedule.h>
+00040 
+00042 
+00046 class moExponentialCoolingSchedule: public moCoolingSchedule
+00047 {
+00048  public:
+00049   
+00051 
+00055   moExponentialCoolingSchedule (double _threshold, double _ratio):threshold (_threshold), ratio (_ratio)
+00056   {}
+00057     
+00059 
+00065   bool operator() (double & _temperature)
+00066   {
+00067     return (_temperature *= ratio) > threshold;
+00068   }
+00069 
+00070  private:
+00071     
+00073   double threshold;
+00074     
+00076   double ratio;
+00077 };
+00078 
+00079 #endif
+

Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_first_impr_select_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_first_impr_select_8h-source.html new file mode 100644 index 000000000..4ef3f1d5e --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_first_impr_select_8h-source.html @@ -0,0 +1,123 @@ + + +ParadisEO-MOMovingObjects: moFirstImprSelect.h Source File + + + + +
+ +
+

moFirstImprSelect.h

00001 /*
+00002   <moFirstImprSelect.h>
+00003   Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+00004   (C) OPAC Team, LIFL, 2002-2008
+00005  
+00006   Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+00007  
+00008   This software is governed by the CeCILL license under French law and
+00009   abiding by the rules of distribution of free software.  You can  use,
+00010   modify and/ or redistribute the software under the terms of the CeCILL
+00011   license as circulated by CEA, CNRS and INRIA at the following URL
+00012   "http://www.cecill.info".
+00013  
+00014   As a counterpart to the access to the source code and  rights to copy,
+00015   modify and redistribute granted by the license, users are provided only
+00016   with a limited warranty  and the software's author,  the holder of the
+00017   economic rights,  and the successive licensors  have only  limited liability.
+00018  
+00019   In this respect, the user's attention is drawn to the risks associated
+00020   with loading,  using,  modifying and/or developing or reproducing the
+00021   software by the user in light of its specific status of free software,
+00022   that may mean  that it is complicated to manipulate,  and  that  also
+00023   therefore means  that it is reserved for developers  and  experienced
+00024   professionals having in-depth computer knowledge. Users are therefore
+00025   encouraged to load and test the software's suitability as regards their
+00026   requirements in conditions enabling the security of their systems and/or
+00027   data to be ensured and,  more generally, to use and operate it in the
+00028   same conditions as regards security.
+00029   The fact that you are presently reading this means that you have had
+00030   knowledge of the CeCILL license and that you accept its terms.
+00031  
+00032   ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033   Contact: paradiseo-help@lists.gforge.inria.fr
+00034 */
+00035 
+00036 #ifndef _moFirstImprSelect_h
+00037 #define _moFirstImprSelect_h
+00038 
+00039 #include <moMoveSelect.h>
+00040 
+00042 
+00047 template < class M >
+00048 class moFirstImprSelect:public moMoveSelect < M >
+00049 {
+00050  public:
+00051 
+00053   typedef typename M::EOType::Fitness Fitness;
+00054     
+00056 
+00060   virtual void init (const Fitness & _fitness)
+00061   {
+00062     valid = false;
+00063     initial_fitness = _fitness;
+00064   }
+00065 
+00067 
+00075   bool update (const M & _move, const Fitness & _fitness)
+00076   {
+00077 
+00078     if (_fitness > initial_fitness)
+00079       {
+00080 
+00081         best_fitness = _fitness;
+00082         best_move = _move;
+00083         valid = true;
+00084 
+00085         return false;
+00086       }
+00087 
+00088     return true;
+00089   }
+00090 
+00092 
+00096   void operator   () (M & _move, Fitness & _fitness)
+00097   {
+00098     if (valid)
+00099       {
+00100         _move = best_move;
+00101         _fitness = best_fitness;
+00102       }
+00103   }
+00104 
+00105  private:
+00106     
+00108   bool valid;
+00109 
+00111   M best_move;
+00112 
+00114   Fitness initial_fitness;
+00115 
+00117   Fitness best_fitness;
+00118 };
+00119 
+00120 #endif
+

Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_fit_comparator_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_fit_comparator_8h-source.html new file mode 100644 index 000000000..c16ab1dc7 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_fit_comparator_8h-source.html @@ -0,0 +1,83 @@ + + +ParadisEO-MOMovingObjects: moFitComparator.h Source File + + + + +
+ +
+

moFitComparator.h

00001 /*
+00002   <moFitComparator.h>
+00003   Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+00004   (C) OPAC Team, LIFL, 2002-2008
+00005 
+00006   Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+00007 
+00008   This software is governed by the CeCILL license under French law and
+00009   abiding by the rules of distribution of free software.  You can  use,
+00010   modify and/ or redistribute the software under the terms of the CeCILL
+00011   license as circulated by CEA, CNRS and INRIA at the following URL
+00012   "http://www.cecill.info".
+00013 
+00014   As a counterpart to the access to the source code and  rights to copy,
+00015   modify and redistribute granted by the license, users are provided only
+00016   with a limited warranty  and the software's author,  the holder of the
+00017   economic rights,  and the successive licensors  have only  limited liability.
+00018 
+00019   In this respect, the user's attention is drawn to the risks associated
+00020   with loading,  using,  modifying and/or developing or reproducing the
+00021   software by the user in light of its specific status of free software,
+00022   that may mean  that it is complicated to manipulate,  and  that  also
+00023   therefore means  that it is reserved for developers  and  experienced
+00024   professionals having in-depth computer knowledge. Users are therefore
+00025   encouraged to load and test the software's suitability as regards their
+00026   requirements in conditions enabling the security of their systems and/or
+00027   data to be ensured and,  more generally, to use and operate it in the
+00028   same conditions as regards security.
+00029   The fact that you are presently reading this means that you have had
+00030   knowledge of the CeCILL license and that you accept its terms.
+00031 
+00032   ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033   Contact: paradiseo-help@lists.gforge.inria.fr
+00034 */
+00035 
+00036 #ifndef _moFitComparator_h
+00037 #define _moFitComparator_h
+00038 
+00039 #include <moComparator.h>
+00040 
+00042 
+00045 template<class EOT>
+00046 class moFitComparator: public moComparator<EOT>
+00047 {
+00048  public:
+00049 
+00051 
+00056   bool operator()(const EOT & _solution1, const EOT & _solution2)
+00057   {
+00058     return _solution1.fitness() > _solution2.fitness();
+00059   }
+00060 };
+00061 
+00062 #endif
+

Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_fit_sol_continue_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_fit_sol_continue_8h-source.html new file mode 100644 index 000000000..d848448d2 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_fit_sol_continue_8h-source.html @@ -0,0 +1,102 @@ + + +ParadisEO-MOMovingObjects: moFitSolContinue.h Source File + + + + +
+ +
+

moFitSolContinue.h

00001 /*
+00002   <moFitSolContinue.h>
+00003   Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+00004   (C) OPAC Team, LIFL, 2002-2008
+00005  
+00006   Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+00007  
+00008   This software is governed by the CeCILL license under French law and
+00009   abiding by the rules of distribution of free software.  You can  use,
+00010   modify and/ or redistribute the software under the terms of the CeCILL
+00011   license as circulated by CEA, CNRS and INRIA at the following URL
+00012   "http://www.cecill.info".
+00013  
+00014   As a counterpart to the access to the source code and  rights to copy,
+00015   modify and redistribute granted by the license, users are provided only
+00016   with a limited warranty  and the software's author,  the holder of the
+00017   economic rights,  and the successive licensors  have only  limited liability.
+00018  
+00019   In this respect, the user's attention is drawn to the risks associated
+00020   with loading,  using,  modifying and/or developing or reproducing the
+00021   software by the user in light of its specific status of free software,
+00022   that may mean  that it is complicated to manipulate,  and  that  also
+00023   therefore means  that it is reserved for developers  and  experienced
+00024   professionals having in-depth computer knowledge. Users are therefore
+00025   encouraged to load and test the software's suitability as regards their
+00026   requirements in conditions enabling the security of their systems and/or
+00027   data to be ensured and,  more generally, to use and operate it in the
+00028   same conditions as regards security.
+00029   The fact that you are presently reading this means that you have had
+00030   knowledge of the CeCILL license and that you accept its terms.
+00031  
+00032   ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033   Contact: paradiseo-help@lists.gforge.inria.fr
+00034 */
+00035 
+00036 #ifndef _moFitSolContinue_h
+00037 #define _moFitSolContinue_h
+00038 
+00039 #include <moSolContinue.h>
+00040 
+00042 
+00045 template < class EOT >
+00046 class moFitSolContinue:public moSolContinue < EOT >
+00047 {
+00048  public:
+00049 
+00051   typedef typename EOT::Fitness Fitness;
+00052 
+00054 
+00057   moFitSolContinue (Fitness _fitness): fitness(_fitness)
+00058   {}
+00059 
+00061 
+00067   bool operator () (const EOT & _solution)
+00068   {
+00069     if ( _solution.invalid() )
+00070       {
+00071         throw std::runtime_error("[moFitSolContinue.h]: The current solution has not been evaluated.");
+00072       }
+00073 
+00074     return fitness > _solution.fitness();
+00075   }
+00076 
+00078 
+00081   void init ()
+00082   {}
+00083 
+00084  private:
+00085 
+00087   Fitness fitness;
+00088 };
+00089 
+00090 #endif
+

Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_gen_sol_continue_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_gen_sol_continue_8h-source.html new file mode 100644 index 000000000..b954c1b26 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_gen_sol_continue_8h-source.html @@ -0,0 +1,102 @@ + + +ParadisEO-MOMovingObjects: moGenSolContinue.h Source File + + + + +
+ +
+

moGenSolContinue.h

00001 /*
+00002   <moGenSolContinue.h>
+00003   Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+00004   (C) OPAC Team, LIFL, 2002-2008
+00005  
+00006   Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+00007  
+00008   This software is governed by the CeCILL license under French law and
+00009   abiding by the rules of distribution of free software.  You can  use,
+00010   modify and/ or redistribute the software under the terms of the CeCILL
+00011   license as circulated by CEA, CNRS and INRIA at the following URL
+00012   "http://www.cecill.info".
+00013  
+00014   As a counterpart to the access to the source code and  rights to copy,
+00015   modify and redistribute granted by the license, users are provided only
+00016   with a limited warranty  and the software's author,  the holder of the
+00017   economic rights,  and the successive licensors  have only  limited liability.
+00018  
+00019   In this respect, the user's attention is drawn to the risks associated
+00020   with loading,  using,  modifying and/or developing or reproducing the
+00021   software by the user in light of its specific status of free software,
+00022   that may mean  that it is complicated to manipulate,  and  that  also
+00023   therefore means  that it is reserved for developers  and  experienced
+00024   professionals having in-depth computer knowledge. Users are therefore
+00025   encouraged to load and test the software's suitability as regards their
+00026   requirements in conditions enabling the security of their systems and/or
+00027   data to be ensured and,  more generally, to use and operate it in the
+00028   same conditions as regards security.
+00029   The fact that you are presently reading this means that you have had
+00030   knowledge of the CeCILL license and that you accept its terms.
+00031  
+00032   ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033   Contact: paradiseo-help@lists.gforge.inria.fr
+00034 */
+00035 
+00036 #ifndef _moGenSolContinue_h
+00037 #define _moGenSolContinue_h
+00038 
+00039 #include "moSolContinue.h"
+00040 
+00042 
+00045 template < class EOT >
+00046 class moGenSolContinue:public moSolContinue < EOT >
+00047 {
+00048  public:
+00049 
+00051 
+00054   moGenSolContinue (unsigned int _generationMaximumNumber): generationMaximumNumber(_generationMaximumNumber), generationNumber(0)
+00055     {}
+00056 
+00058 
+00066   bool operator () (const EOT & _solution)
+00067   {
+00068     //code only used for avoiding warning because _sol is not used in this function.
+00069     EOT solution=(EOT)_solution;
+00070 
+00071     return (++generationNumber < generationMaximumNumber);
+00072   }
+00073 
+00075 
+00078   void init ()
+00079   {
+00080     generationNumber = 0;
+00081   }
+00082 
+00083  private:
+00084 
+00086   unsigned int generationMaximumNumber;
+00087 
+00089   unsigned int generationNumber;
+00090 };
+00091 
+00092 #endif
+

Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_h_c_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_h_c_8h-source.html new file mode 100644 index 000000000..4e13cec2c --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_h_c_8h-source.html @@ -0,0 +1,124 @@ + + +ParadisEO-MOMovingObjects: moHC.h Source File + + + + +
+ +
+

moHC.h

00001 /*
+00002   <moHC.h>
+00003   Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+00004   (C) OPAC Team, LIFL, 2002-2008
+00005  
+00006   Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+00007  
+00008   This software is governed by the CeCILL license under French law and
+00009   abiding by the rules of distribution of free software.  You can  use,
+00010   modify and/ or redistribute the software under the terms of the CeCILL
+00011   license as circulated by CEA, CNRS and INRIA at the following URL
+00012   "http://www.cecill.info".
+00013  
+00014   As a counterpart to the access to the source code and  rights to copy,
+00015   modify and redistribute granted by the license, users are provided only
+00016   with a limited warranty  and the software's author,  the holder of the
+00017   economic rights,  and the successive licensors  have only  limited liability.
+00018  
+00019   In this respect, the user's attention is drawn to the risks associated
+00020   with loading,  using,  modifying and/or developing or reproducing the
+00021   software by the user in light of its specific status of free software,
+00022   that may mean  that it is complicated to manipulate,  and  that  also
+00023   therefore means  that it is reserved for developers  and  experienced
+00024   professionals having in-depth computer knowledge. Users are therefore
+00025   encouraged to load and test the software's suitability as regards their
+00026   requirements in conditions enabling the security of their systems and/or
+00027   data to be ensured and,  more generally, to use and operate it in the
+00028   same conditions as regards security.
+00029   The fact that you are presently reading this means that you have had
+00030   knowledge of the CeCILL license and that you accept its terms.
+00031  
+00032   ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033   Contact: paradiseo-help@lists.gforge.inria.fr
+00034 */
+00035 
+00036 #ifndef __moHC_h
+00037 #define __moHC_h
+00038 
+00039 #include <eoEvalFunc.h>
+00040 
+00041 #include <moAlgo.h>
+00042 #include <moHCMoveLoopExpl.h>
+00043 
+00045 
+00048 template < class M >
+00049 class moHC:public moAlgo < typename M::EOType >
+00050 {
+00052   typedef typename M::EOType EOT;
+00053 
+00055   typedef typename EOT::Fitness Fitness;
+00056 
+00057  public:
+00058   
+00060 
+00069   moHC (moMoveInit < M > & _move_initializer, moNextMove < M > & _next_move_generator, 
+00070         moMoveIncrEval < M > & _incremental_evaluation, moMoveSelect < M > & _move_selection, eoEvalFunc < EOT > & _full_evaluation) : 
+00071   move_explorer ( *new moHCMoveLoopExpl < M > (_move_initializer, _next_move_generator, _incremental_evaluation, _move_selection) ),
+00072     full_evaluation (_full_evaluation)
+00073   {}
+00074   
+00076 
+00082   moHC (moMoveExpl < M > & _move_explorer, eoEvalFunc < EOT > & _full_evaluation): 
+00083   move_explorer (_move_explorer), full_evaluation (_full_evaluation)
+00084   {}
+00085   
+00087 
+00094   bool operator ()(EOT & _solution)
+00095   {
+00096     EOT new_solution;
+00097     
+00098     if ( _solution.invalid() )
+00099       {
+00100         full_evaluation(_solution);
+00101       }
+00102     
+00103     new_solution=_solution;
+00104     
+00105     do
+00106       {
+00107         _solution=new_solution;
+00108         move_explorer (_solution, new_solution);
+00109       }
+00110     while ( new_solution.fitness() > _solution.fitness() );
+00111     
+00112     return true;
+00113   }
+00114 
+00115  private:
+00116 
+00118   moMoveExpl < M > & move_explorer;
+00119 
+00121   eoEvalFunc < EOT > & full_evaluation;
+00122 };
+00123 
+00124 #endif
+

Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_h_c_move_loop_expl_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_h_c_move_loop_expl_8h-source.html new file mode 100644 index 000000000..5eaaa88d7 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_h_c_move_loop_expl_8h-source.html @@ -0,0 +1,146 @@ + + +ParadisEO-MOMovingObjects: moHCMoveLoopExpl.h Source File + + + + +
+ +
+

moHCMoveLoopExpl.h

00001 /*
+00002   <moHCMoveLoopExpl.h>
+00003   Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+00004   (C) OPAC Team, LIFL, 2002-2008
+00005  
+00006   Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+00007  
+00008   This software is governed by the CeCILL license under French law and
+00009   abiding by the rules of distribution of free software.  You can  use,
+00010   modify and/ or redistribute the software under the terms of the CeCILL
+00011   license as circulated by CEA, CNRS and INRIA at the following URL
+00012   "http://www.cecill.info".
+00013  
+00014   As a counterpart to the access to the source code and  rights to copy,
+00015   modify and redistribute granted by the license, users are provided only
+00016   with a limited warranty  and the software's author,  the holder of the
+00017   economic rights,  and the successive licensors  have only  limited liability.
+00018  
+00019   In this respect, the user's attention is drawn to the risks associated
+00020   with loading,  using,  modifying and/or developing or reproducing the
+00021   software by the user in light of its specific status of free software,
+00022   that may mean  that it is complicated to manipulate,  and  that  also
+00023   therefore means  that it is reserved for developers  and  experienced
+00024   professionals having in-depth computer knowledge. Users are therefore
+00025   encouraged to load and test the software's suitability as regards their
+00026   requirements in conditions enabling the security of their systems and/or
+00027   data to be ensured and,  more generally, to use and operate it in the
+00028   same conditions as regards security.
+00029   The fact that you are presently reading this means that you have had
+00030   knowledge of the CeCILL license and that you accept its terms.
+00031  
+00032   ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033   Contact: paradiseo-help@lists.gforge.inria.fr
+00034 */
+00035 
+00036 #ifndef __moHCMoveLoopExpl_h
+00037 #define __moHCMoveLoopExpl_h
+00038 
+00039 #include <moMoveLoopExpl.h>
+00040 #include <moMoveInit.h>
+00041 #include <moNextMove.h>
+00042 #include <moMoveIncrEval.h>
+00043 #include <moMoveSelect.h>
+00044 
+00046 template < class M >
+00047 class moHCMoveLoopExpl:public moMoveLoopExpl < M >
+00048 {
+00050   typedef typename M::EOType EOT;
+00051 
+00053   typedef typename M::EOType::Fitness Fitness;
+00054 
+00055  public:
+00056 
+00058 
+00066   moHCMoveLoopExpl (moMoveInit < M > & _move_initializer, moNextMove < M > & _next_move_generator, 
+00067                     moMoveIncrEval < M > & _incremental_evaluation, moMoveSelect < M > & _move_selection) :
+00068   move_initializer (_move_initializer), next_move_generator (_next_move_generator), 
+00069     incremental_evaluation (_incremental_evaluation), move_selection (_move_selection)
+00070   {}
+00071   
+00073 
+00079   void operator () (const EOT & _old_solution, EOT & _new_solution)
+00080   {
+00081     M move, best_move;
+00082     Fitness best_fitness;
+00083     bool has_next_move, selection_update_is_ok;
+00084 
+00085     if( _old_solution.invalid() )
+00086       {
+00087         throw std::runtime_error("[moHCMoveLoopExpl.h]: The current solution has not been evaluated.");
+00088       }
+00089 
+00090     /*
+00091       The two following lines are added to avoid compilation warning.
+00092       <=> current best move fitness is the current fitness.
+00093       <=> move and best move are empty for the moment.
+00094     */
+00095     best_fitness=_old_solution.fitness();
+00096     move=best_move;
+00097 
+00098     //At the begining, the new sol is equivalent to the old one.
+00099     _new_solution=(EOT)_old_solution;
+00100 
+00101     // Restarting the exploration of the neighbourhood
+00102     move_initializer(move, _old_solution); 
+00103 
+00104     move_selection.init(_old_solution.fitness ());
+00105 
+00106     do
+00107       {
+00108         selection_update_is_ok = move_selection.update (move, incremental_evaluation(move, _old_solution) );
+00109         has_next_move = next_move_generator (move, _old_solution);
+00110       }
+00111     while ( selection_update_is_ok && has_next_move);
+00112 
+00113     //The selecter gives the value of the best move and the corresponding best fitness.
+00114     move_selection (best_move, best_fitness);
+00115     
+00116     //The best move is applied on the new solution.
+00117     best_move(_new_solution);
+00118     
+00119     //The fitness is set (avoid an additional fitness compuation).
+00120     _new_solution.fitness (best_fitness);
+00121   }
+00122 
+00123  private:
+00124 
+00126   moMoveInit < M > & move_initializer;
+00127 
+00129   moNextMove < M > & next_move_generator;
+00130 
+00132   moMoveIncrEval < M > & incremental_evaluation;
+00133 
+00135   moMoveSelect < M > & move_selection;
+00136 };
+00137 
+00138 #endif
+

Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_i_l_s_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_i_l_s_8h-source.html new file mode 100644 index 000000000..dca8fce5d --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_i_l_s_8h-source.html @@ -0,0 +1,175 @@ + + +ParadisEO-MOMovingObjects: moILS.h Source File + + + + +
+ +
+

moILS.h

00001 /*
+00002   <moILS.h>
+00003   Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+00004   (C) OPAC Team, LIFL, 2002-2008
+00005  
+00006   Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+00007  
+00008   This software is governed by the CeCILL license under French law and
+00009   abiding by the rules of distribution of free software.  You can  use,
+00010   modify and/ or redistribute the software under the terms of the CeCILL
+00011   license as circulated by CEA, CNRS and INRIA at the following URL
+00012   "http://www.cecill.info".
+00013  
+00014   As a counterpart to the access to the source code and  rights to copy,
+00015   modify and redistribute granted by the license, users are provided only
+00016   with a limited warranty  and the software's author,  the holder of the
+00017   economic rights,  and the successive licensors  have only  limited liability.
+00018  
+00019   In this respect, the user's attention is drawn to the risks associated
+00020   with loading,  using,  modifying and/or developing or reproducing the
+00021   software by the user in light of its specific status of free software,
+00022   that may mean  that it is complicated to manipulate,  and  that  also
+00023   therefore means  that it is reserved for developers  and  experienced
+00024   professionals having in-depth computer knowledge. Users are therefore
+00025   encouraged to load and test the software's suitability as regards their
+00026   requirements in conditions enabling the security of their systems and/or
+00027   data to be ensured and,  more generally, to use and operate it in the
+00028   same conditions as regards security.
+00029   The fact that you are presently reading this means that you have had
+00030   knowledge of the CeCILL license and that you accept its terms.
+00031  
+00032   ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033   Contact: paradiseo-help@lists.gforge.inria.fr
+00034 */
+00035 
+00036 #ifndef _moILS_h
+00037 #define _moILS_h
+00038 
+00039 #include <eoEvalFunc.h>
+00040 
+00041 #include <moHC.h>
+00042 #include <moTS.h>
+00043 #include <moSA.h>
+00044 
+00046 
+00049 template < class M >
+00050 class moILS:public moAlgo < typename M::EOType >
+00051 {
+00053   typedef typename M::EOType EOT;
+00054 
+00056   typedef typename EOT::Fitness Fitness;
+00057 
+00058  public:
+00059 
+00061 
+00070   moILS (moAlgo<EOT> & _algorithm, moSolContinue <EOT> & _continue, moComparator<EOT> & _acceptance_criterion, 
+00071          eoMonOp<EOT> & _perturbation, eoEvalFunc<EOT> & _full_evaluation):
+00072   algorithm(_algorithm), continu(_continue), acceptance_criterion(_acceptance_criterion), 
+00073     perturbation(_perturbation), full_evaluation(_full_evaluation)
+00074   {}
+00075 
+00077 
+00087   moILS (moMoveInit < M > & _move_initializer, moNextMove < M > & _next_move_generator, 
+00088          moMoveIncrEval < M > & _incremental_evaluation, moMoveSelect < M > & _move_selection,
+00089          moSolContinue <EOT> & _continue, moComparator<EOT> & _acceptance_criterion,
+00090          eoMonOp<EOT> & _perturbation, eoEvalFunc<EOT> & _full_evaluation):
+00091   algorithm( *new moHC<M>(_move_initializer, _next_move_generator, _incremental_evaluation, _move_selection, _full_evaluation) ),
+00092     continu(_continue), acceptance_criterion(_acceptance_criterion), perturbation(_perturbation), full_evaluation(_full_evaluation)
+00093   {}
+00094 
+00096 
+00108   moILS (moMoveInit <M> & _move_initializer, moNextMove <M> & _next_move_generator, 
+00109          moMoveIncrEval <M> & _incremental_evaluation, moTabuList <M> & _tabu_list, 
+00110          moAspirCrit <M> & _aspiration_criterion, moSolContinue <EOT> & _moTS_continue,
+00111          moSolContinue <EOT> & _continue, moComparator<EOT> & _acceptance_criterion, eoMonOp<EOT> & _perturbation,
+00112          eoEvalFunc<EOT> & _full_evaluation):
+00113   algorithm( *new moTS<M>(_move_initializer, _next_move_generator, _incremental_evaluation, _tabu_list, _aspiration_criterion, 
+00114                      _moTS_continue, _full_evaluation) ),
+00115     continu(_continue), acceptance_criterion(_acceptance_criterion), perturbation(_perturbation), full_evaluation(_full_evaluation)
+00116   {}
+00117   
+00119 
+00130   moILS (moRandMove<M> & _random_move_generator, moMoveIncrEval <M> & _incremental_evaluation, moSolContinue <EOT> & _moSA_continue, 
+00131          double _initial_temperature, moCoolingSchedule & _cooling_schedule, moSolContinue <EOT> & _continue, 
+00132          moComparator<EOT> & _acceptance_criterion, eoMonOp<EOT> & _perturbation, eoEvalFunc<EOT> & _full_evaluation):
+00133   algorithm( *new moSA<M>(_random_move_generator, _incremental_evaluation, _moSA_continue, _initial_temperature,
+00134                      _cooling_schedule, _full_evaluation) ),
+00135     continu(_continue), acceptance_criterion(_acceptance_criterion), perturbation(_perturbation), full_evaluation(_full_evaluation)
+00136   {}
+00137 
+00139 
+00146   bool operator()(EOT & _solution)
+00147   {
+00148     EOT _solution_saved=_solution;
+00149 
+00150     continu.init ();
+00151 
+00152     // some code has been duplicated in order to avoid one perturbation and one evaluation without adding a test in the loop.
+00153     // better than a do {} while; with a test in the loop.
+00154     
+00155     algorithm(_solution);
+00156 
+00157     if ( acceptance_criterion(_solution, _solution_saved) )
+00158       {
+00159         _solution_saved=_solution;
+00160 
+00161       }
+00162     else
+00163       {
+00164         _solution=_solution_saved;
+00165       }
+00166 
+00167     while ( continu (_solution) )
+00168       {
+00169         perturbation(_solution);
+00170         full_evaluation(_solution);
+00171 
+00172         algorithm(_solution);
+00173 
+00174         if ( acceptance_criterion(_solution, _solution_saved) )
+00175           {
+00176             _solution_saved=_solution;
+00177           }
+00178         else
+00179           {
+00180             _solution=_solution_saved;
+00181           }
+00182       }
+00183 
+00184     return true;
+00185   }
+00186 
+00187  private:
+00188 
+00190   moAlgo<EOT> & algorithm;
+00191 
+00193   moSolContinue<EOT> & continu;
+00194 
+00196   moComparator<EOT> & acceptance_criterion;
+00197 
+00199   eoMonOp<EOT> & perturbation;
+00200 
+00202   eoEvalFunc<EOT> & full_evaluation;
+00203 };
+00204 
+00205 #endif
+

Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_impr_best_fit_aspir_crit_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_impr_best_fit_aspir_crit_8h-source.html new file mode 100644 index 000000000..9b715b611 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_impr_best_fit_aspir_crit_8h-source.html @@ -0,0 +1,117 @@ + + +ParadisEO-MOMovingObjects: moImprBestFitAspirCrit.h Source File + + + + +
+ +
+

moImprBestFitAspirCrit.h

00001 /*
+00002   <moImprBestFitAspirCrit.h>
+00003   Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+00004   (C) OPAC Team, LIFL, 2002-2008
+00005  
+00006   Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+00007  
+00008   This software is governed by the CeCILL license under French law and
+00009   abiding by the rules of distribution of free software.  You can  use,
+00010   modify and/ or redistribute the software under the terms of the CeCILL
+00011   license as circulated by CEA, CNRS and INRIA at the following URL
+00012   "http://www.cecill.info".
+00013  
+00014   As a counterpart to the access to the source code and  rights to copy,
+00015   modify and redistribute granted by the license, users are provided only
+00016   with a limited warranty  and the software's author,  the holder of the
+00017   economic rights,  and the successive licensors  have only  limited liability.
+00018  
+00019   In this respect, the user's attention is drawn to the risks associated
+00020   with loading,  using,  modifying and/or developing or reproducing the
+00021   software by the user in light of its specific status of free software,
+00022   that may mean  that it is complicated to manipulate,  and  that  also
+00023   therefore means  that it is reserved for developers  and  experienced
+00024   professionals having in-depth computer knowledge. Users are therefore
+00025   encouraged to load and test the software's suitability as regards their
+00026   requirements in conditions enabling the security of their systems and/or
+00027   data to be ensured and,  more generally, to use and operate it in the
+00028   same conditions as regards security.
+00029   The fact that you are presently reading this means that you have had
+00030   knowledge of the CeCILL license and that you accept its terms.
+00031  
+00032   ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033   Contact: paradiseo-help@lists.gforge.inria.fr
+00034 */
+00035 
+00036 #ifndef _moImprBestFitAspirCrit_h
+00037 #define _moImprBestFitAspirCrit_h
+00038 
+00039 #include <moAspirCrit.h>
+00040 
+00042 
+00046 template < class M >
+00047 class moImprBestFitAspirCrit:public moAspirCrit < M >
+00048 {
+00049 
+00050  public:
+00051 
+00053   typedef typename M::EOType::Fitness Fitness;
+00054 
+00056   moImprBestFitAspirCrit ()
+00057     {
+00058       first_time = true;
+00059     }
+00060 
+00062   void init ()
+00063   {
+00064     first_time = true;
+00065   }
+00066 
+00068 
+00075   bool operator () (const M & _move, const Fitness & _fitness)
+00076   {
+00077     if (first_time)
+00078       {
+00079         best_fitness = _fitness;
+00080         first_time = false;
+00081 
+00082         return true;
+00083       }
+00084 
+00085     if (_fitness < best_fitness)
+00086       {
+00087         return false;
+00088       }
+00089     
+00090     best_fitness = _fitness;
+00091     
+00092     return true;
+00093   }
+00094 
+00095  private:
+00096 
+00098   Fitness best_fitness;
+00099 
+00101   bool first_time;
+00102 };
+00103 
+00104 #endif
+

Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_it_rand_next_move_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_it_rand_next_move_8h-source.html new file mode 100644 index 000000000..408ad9e50 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_it_rand_next_move_8h-source.html @@ -0,0 +1,111 @@ + + +ParadisEO-MOMovingObjects: moItRandNextMove.h Source File + + + + +
+ +
+

moItRandNextMove.h

00001 /*
+00002   <moItRandNextMove.h>
+00003   Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+00004   (C) OPAC Team, LIFL, 2002-2008
+00005  
+00006   Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+00007  
+00008   This software is governed by the CeCILL license under French law and
+00009   abiding by the rules of distribution of free software.  You can  use,
+00010   modify and/ or redistribute the software under the terms of the CeCILL
+00011   license as circulated by CEA, CNRS and INRIA at the following URL
+00012   "http://www.cecill.info".
+00013  
+00014   As a counterpart to the access to the source code and  rights to copy,
+00015   modify and redistribute granted by the license, users are provided only
+00016   with a limited warranty  and the software's author,  the holder of the
+00017   economic rights,  and the successive licensors  have only  limited liability.
+00018  
+00019   In this respect, the user's attention is drawn to the risks associated
+00020   with loading,  using,  modifying and/or developing or reproducing the
+00021   software by the user in light of its specific status of free software,
+00022   that may mean  that it is complicated to manipulate,  and  that  also
+00023   therefore means  that it is reserved for developers  and  experienced
+00024   professionals having in-depth computer knowledge. Users are therefore
+00025   encouraged to load and test the software's suitability as regards their
+00026   requirements in conditions enabling the security of their systems and/or
+00027   data to be ensured and,  more generally, to use and operate it in the
+00028   same conditions as regards security.
+00029   The fact that you are presently reading this means that you have had
+00030   knowledge of the CeCILL license and that you accept its terms.
+00031  
+00032   ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033   Contact: paradiseo-help@lists.gforge.inria.fr
+00034 */
+00035 
+00036 #ifndef _moItRandNextMove_h
+00037 #define _moItRandNextMove_h
+00038 
+00039 #include <moNextMove.h>
+00040 #include <moRandMove.h>
+00041 
+00043 
+00046 template < class M > 
+00047 class moItRandNextMove:public moNextMove < M >
+00048 {
+00050   typedef typename M::EOType EOT;
+00051 
+00052  public:
+00053 
+00055 
+00061   moItRandNextMove (moRandMove < M > & _random_move_generator, unsigned int _iteration_maximum_number):
+00062   random_move_generator(_random_move_generator), iteration_maximum_number(_iteration_maximum_number), iteration_number(0)
+00063     {}
+00064 
+00066 
+00073   bool operator () (M & _move, const EOT & _solution)
+00074   {
+00075     //code only used to avoid warning because _solution is not used in this function.
+00076     EOT solution=(EOT)_solution;
+00077     
+00078     if (iteration_number++ > iteration_maximum_number)
+00079       {
+00080         iteration_number = 0;
+00081         return false;
+00082       }
+00083     
+00084     random_move_generator (_move);
+00085     iteration_number++;
+00086     
+00087     return true;
+00088   }
+00089 
+00090  private:
+00091 
+00093   moRandMove < M > & random_move_generator;
+00094 
+00096   unsigned int iteration_maximum_number;
+00097 
+00099   unsigned int iteration_number;
+00100 };
+00101 
+00102 #endif
+

Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_l_s_check_point_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_l_s_check_point_8h-source.html new file mode 100644 index 000000000..b1268ea55 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_l_s_check_point_8h-source.html @@ -0,0 +1,98 @@ + + +ParadisEO-MOMovingObjects: moLSCheckPoint.h Source File + + + + +
+ +
+

moLSCheckPoint.h

00001 /*
+00002   <moLSCheckPoint.h>
+00003   Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+00004   (C) OPAC Team, LIFL, 2002-2008
+00005  
+00006   Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+00007  
+00008   This software is governed by the CeCILL license under French law and
+00009   abiding by the rules of distribution of free software.  You can  use,
+00010   modify and/ or redistribute the software under the terms of the CeCILL
+00011   license as circulated by CEA, CNRS and INRIA at the following URL
+00012   "http://www.cecill.info".
+00013  
+00014   As a counterpart to the access to the source code and  rights to copy,
+00015   modify and redistribute granted by the license, users are provided only
+00016   with a limited warranty  and the software's author,  the holder of the
+00017   economic rights,  and the successive licensors  have only  limited liability.
+00018  
+00019   In this respect, the user's attention is drawn to the risks associated
+00020   with loading,  using,  modifying and/or developing or reproducing the
+00021   software by the user in light of its specific status of free software,
+00022   that may mean  that it is complicated to manipulate,  and  that  also
+00023   therefore means  that it is reserved for developers  and  experienced
+00024   professionals having in-depth computer knowledge. Users are therefore
+00025   encouraged to load and test the software's suitability as regards their
+00026   requirements in conditions enabling the security of their systems and/or
+00027   data to be ensured and,  more generally, to use and operate it in the
+00028   same conditions as regards security.
+00029   The fact that you are presently reading this means that you have had
+00030   knowledge of the CeCILL license and that you accept its terms.
+00031  
+00032   ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033   Contact: paradiseo-help@lists.gforge.inria.fr
+00034 */
+00035 
+00036 #ifndef _moLSCheckPoint_h
+00037 #define _moLSCheckPoint_h
+00038 
+00039 #include <eoFunctor.h>
+00040 
+00042 
+00045 template < class M > 
+00046 class moLSCheckPoint:public eoBF < const M &, const typename M::EOType &, void >
+00047 {
+00048  public:
+00049   
+00051 
+00057   void operator () (const M & _move, const typename M::EOType & _solution)
+00058   {
+00059     unsigned int i;
+00060     
+00061     for (i = 0; i < functions.size (); i++)
+00062       {
+00063         functions[i]->operator ()(_move, _solution);
+00064       }
+00065   }
+00066 
+00068 
+00072   void add (eoBF < const M &, const typename M::EOType &, void >& _function)
+00073   {
+00074     functions.push_back(& _function);
+00075   }
+00076   
+00077  private:
+00078 
+00080   std::vector < eoBF < const M &, const typename M::EOType &, void >*>  functions;
+00081 };
+00082 
+00083 #endif
+

Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_linear_cooling_schedule_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_linear_cooling_schedule_8h-source.html new file mode 100644 index 000000000..8edf2d65a --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_linear_cooling_schedule_8h-source.html @@ -0,0 +1,92 @@ + + +ParadisEO-MOMovingObjects: moLinearCoolingSchedule.h Source File + + + + +
+ +
+

moLinearCoolingSchedule.h

00001 /*
+00002   <moLinearCoolingSchedule.h>
+00003   Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+00004   (C) OPAC Team, LIFL, 2002-2008
+00005  
+00006   Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+00007  
+00008   This software is governed by the CeCILL license under French law and
+00009   abiding by the rules of distribution of free software.  You can  use,
+00010   modify and/ or redistribute the software under the terms of the CeCILL
+00011   license as circulated by CEA, CNRS and INRIA at the following URL
+00012   "http://www.cecill.info".
+00013  
+00014   As a counterpart to the access to the source code and  rights to copy,
+00015   modify and redistribute granted by the license, users are provided only
+00016   with a limited warranty  and the software's author,  the holder of the
+00017   economic rights,  and the successive licensors  have only  limited liability.
+00018  
+00019   In this respect, the user's attention is drawn to the risks associated
+00020   with loading,  using,  modifying and/or developing or reproducing the
+00021   software by the user in light of its specific status of free software,
+00022   that may mean  that it is complicated to manipulate,  and  that  also
+00023   therefore means  that it is reserved for developers  and  experienced
+00024   professionals having in-depth computer knowledge. Users are therefore
+00025   encouraged to load and test the software's suitability as regards their
+00026   requirements in conditions enabling the security of their systems and/or
+00027   data to be ensured and,  more generally, to use and operate it in the
+00028   same conditions as regards security.
+00029   The fact that you are presently reading this means that you have had
+00030   knowledge of the CeCILL license and that you accept its terms.
+00031  
+00032   ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033   Contact: paradiseo-help@lists.gforge.inria.fr
+00034 */
+00035 
+00036 #ifndef _moLinearCoolingSchedule_h
+00037 #define _moLinearCoolingSchedule_h
+00038 
+00039 #include <moCoolingSchedule.h>
+00040 
+00042 
+00046 class moLinearCoolingSchedule: public moCoolingSchedule
+00047 {
+00048 
+00049  public:
+00051 
+00055   moLinearCoolingSchedule (double _threshold, double _quantity):threshold (_threshold), quantity (_quantity)
+00056   {}
+00057 
+00059 
+00065   bool operator() (double & _current_temperature)
+00066   {
+00067     return (_current_temperature -= quantity) > threshold;
+00068   }
+00069 
+00070  private:
+00071 
+00073   double threshold;
+00074 
+00076   double quantity;
+00077 };
+00078 
+00079 #endif
+

Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_move_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_move_8h-source.html new file mode 100644 index 000000000..fd6235043 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_move_8h-source.html @@ -0,0 +1,80 @@ + + +ParadisEO-MOMovingObjects: moMove.h Source File + + + + +
+ +
+

moMove.h

00001 /*
+00002   <moMove.h>
+00003   Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+00004   (C) OPAC Team, LIFL, 2002-2008
+00005  
+00006   Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+00007  
+00008   This software is governed by the CeCILL license under French law and
+00009   abiding by the rules of distribution of free software.  You can  use,
+00010   modify and/ or redistribute the software under the terms of the CeCILL
+00011   license as circulated by CEA, CNRS and INRIA at the following URL
+00012   "http://www.cecill.info".
+00013  
+00014   As a counterpart to the access to the source code and  rights to copy,
+00015   modify and redistribute granted by the license, users are provided only
+00016   with a limited warranty  and the software's author,  the holder of the
+00017   economic rights,  and the successive licensors  have only  limited liability.
+00018  
+00019   In this respect, the user's attention is drawn to the risks associated
+00020   with loading,  using,  modifying and/or developing or reproducing the
+00021   software by the user in light of its specific status of free software,
+00022   that may mean  that it is complicated to manipulate,  and  that  also
+00023   therefore means  that it is reserved for developers  and  experienced
+00024   professionals having in-depth computer knowledge. Users are therefore
+00025   encouraged to load and test the software's suitability as regards their
+00026   requirements in conditions enabling the security of their systems and/or
+00027   data to be ensured and,  more generally, to use and operate it in the
+00028   same conditions as regards security.
+00029   The fact that you are presently reading this means that you have had
+00030   knowledge of the CeCILL license and that you accept its terms.
+00031  
+00032   ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033   Contact: paradiseo-help@lists.gforge.inria.fr
+00034  
+00035 */
+00036 
+00037 #ifndef _moMove_h
+00038 #define _moMove_h
+00039 
+00040 #include <eoFunctor.h>
+00041 
+00043 
+00048 template < class EOT >
+00049 class moMove:public eoUF < EOT &, void >
+00050 {
+00051  public:
+00052   
+00054   typedef EOT EOType;
+00055 };
+00056 
+00057 #endif
+

Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_move_expl_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_move_expl_8h-source.html new file mode 100644 index 000000000..d90c691c1 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_move_expl_8h-source.html @@ -0,0 +1,75 @@ + + +ParadisEO-MOMovingObjects: moMoveExpl.h Source File + + + + +
+ +
+

moMoveExpl.h

00001 /*
+00002   <moMoveExpl.h>
+00003   Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+00004   (C) OPAC Team, LIFL, 2002-2008
+00005  
+00006   Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+00007  
+00008   This software is governed by the CeCILL license under French law and
+00009   abiding by the rules of distribution of free software.  You can  use,
+00010   modify and/ or redistribute the software under the terms of the CeCILL
+00011   license as circulated by CEA, CNRS and INRIA at the following URL
+00012   "http://www.cecill.info".
+00013  
+00014   As a counterpart to the access to the source code and  rights to copy,
+00015   modify and redistribute granted by the license, users are provided only
+00016   with a limited warranty  and the software's author,  the holder of the
+00017   economic rights,  and the successive licensors  have only  limited liability.
+00018  
+00019   In this respect, the user's attention is drawn to the risks associated
+00020   with loading,  using,  modifying and/or developing or reproducing the
+00021   software by the user in light of its specific status of free software,
+00022   that may mean  that it is complicated to manipulate,  and  that  also
+00023   therefore means  that it is reserved for developers  and  experienced
+00024   professionals having in-depth computer knowledge. Users are therefore
+00025   encouraged to load and test the software's suitability as regards their
+00026   requirements in conditions enabling the security of their systems and/or
+00027   data to be ensured and,  more generally, to use and operate it in the
+00028   same conditions as regards security.
+00029   The fact that you are presently reading this means that you have had
+00030   knowledge of the CeCILL license and that you accept its terms.
+00031  
+00032   ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033   Contact: paradiseo-help@lists.gforge.inria.fr
+00034 */
+00035 
+00036 #ifndef _moMoveExpl_h
+00037 #define _moMoveExpl_h
+00038 
+00039 #include <eoFunctor.h>
+00040 
+00042 
+00045 template < class M > class 
+00046 moMoveExpl : public eoBF < const typename M::EOType &, typename M::EOType &, void > 
+00047 {};
+00048 
+00049 #endif
+

Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_move_incr_eval_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_move_incr_eval_8h-source.html new file mode 100644 index 000000000..e6798ef20 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_move_incr_eval_8h-source.html @@ -0,0 +1,75 @@ + + +ParadisEO-MOMovingObjects: moMoveIncrEval.h Source File + + + + +
+ +
+

moMoveIncrEval.h

00001 /*
+00002   <moMoveIncrEval.h>
+00003   Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+00004   (C) OPAC Team, LIFL, 2002-2008
+00005  
+00006   Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+00007  
+00008   This software is governed by the CeCILL license under French law and
+00009   abiding by the rules of distribution of free software.  You can  use,
+00010   modify and/ or redistribute the software under the terms of the CeCILL
+00011   license as circulated by CEA, CNRS and INRIA at the following URL
+00012   "http://www.cecill.info".
+00013  
+00014   As a counterpart to the access to the source code and  rights to copy,
+00015   modify and redistribute granted by the license, users are provided only
+00016   with a limited warranty  and the software's author,  the holder of the
+00017   economic rights,  and the successive licensors  have only  limited liability.
+00018  
+00019   In this respect, the user's attention is drawn to the risks associated
+00020   with loading,  using,  modifying and/or developing or reproducing the
+00021   software by the user in light of its specific status of free software,
+00022   that may mean  that it is complicated to manipulate,  and  that  also
+00023   therefore means  that it is reserved for developers  and  experienced
+00024   professionals having in-depth computer knowledge. Users are therefore
+00025   encouraged to load and test the software's suitability as regards their
+00026   requirements in conditions enabling the security of their systems and/or
+00027   data to be ensured and,  more generally, to use and operate it in the
+00028   same conditions as regards security.
+00029   The fact that you are presently reading this means that you have had
+00030   knowledge of the CeCILL license and that you accept its terms.
+00031  
+00032   ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033   Contact: paradiseo-help@lists.gforge.inria.fr
+00034 */
+00035 
+00036 #ifndef _moMoveIncrEval_h
+00037 #define _moMoveIncrEval_h
+00038 
+00039 #include <eoFunctor.h>
+00040 
+00042 
+00048 template < class M >
+00049 class moMoveIncrEval:public eoBF < const M &, const typename M::EOType &, typename M::EOType::Fitness >
+00050 {};
+00051 
+00052 #endif
+

Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_move_init_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_move_init_8h-source.html new file mode 100644 index 000000000..1873c9e27 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_move_init_8h-source.html @@ -0,0 +1,75 @@ + + +ParadisEO-MOMovingObjects: moMoveInit.h Source File + + + + +
+ +
+

moMoveInit.h

00001 /*
+00002   <moMoveInit.h>
+00003   Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+00004   (C) OPAC Team, LIFL, 2002-2008
+00005  
+00006   Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+00007  
+00008   This software is governed by the CeCILL license under French law and
+00009   abiding by the rules of distribution of free software.  You can  use,
+00010   modify and/ or redistribute the software under the terms of the CeCILL
+00011   license as circulated by CEA, CNRS and INRIA at the following URL
+00012   "http://www.cecill.info".
+00013  
+00014   As a counterpart to the access to the source code and  rights to copy,
+00015   modify and redistribute granted by the license, users are provided only
+00016   with a limited warranty  and the software's author,  the holder of the
+00017   economic rights,  and the successive licensors  have only  limited liability.
+00018  
+00019   In this respect, the user's attention is drawn to the risks associated
+00020   with loading,  using,  modifying and/or developing or reproducing the
+00021   software by the user in light of its specific status of free software,
+00022   that may mean  that it is complicated to manipulate,  and  that  also
+00023   therefore means  that it is reserved for developers  and  experienced
+00024   professionals having in-depth computer knowledge. Users are therefore
+00025   encouraged to load and test the software's suitability as regards their
+00026   requirements in conditions enabling the security of their systems and/or
+00027   data to be ensured and,  more generally, to use and operate it in the
+00028   same conditions as regards security.
+00029   The fact that you are presently reading this means that you have had
+00030   knowledge of the CeCILL license and that you accept its terms.
+00031  
+00032   ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033   Contact: paradiseo-help@lists.gforge.inria.fr
+00034 */
+00035 
+00036 #ifndef _moMoveInit_h
+00037 #define _moMoveInit_h
+00038 
+00039 #include <eoFunctor.h>
+00040 
+00042 
+00046 template < class M >
+00047 class moMoveInit:public eoBF < M &, const typename M::EOType &, void >
+00048 {};
+00049 
+00050 #endif
+

Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_move_loop_expl_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_move_loop_expl_8h-source.html new file mode 100644 index 000000000..365c5c611 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_move_loop_expl_8h-source.html @@ -0,0 +1,76 @@ + + +ParadisEO-MOMovingObjects: moMoveLoopExpl.h Source File + + + + +
+ +
+

moMoveLoopExpl.h

00001 /*
+00002   <moMoveLoopExpl.h>
+00003   Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+00004   (C) OPAC Team, LIFL, 2002-2008
+00005  
+00006   Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+00007  
+00008   This software is governed by the CeCILL license under French law and
+00009   abiding by the rules of distribution of free software.  You can  use,
+00010   modify and/ or redistribute the software under the terms of the CeCILL
+00011   license as circulated by CEA, CNRS and INRIA at the following URL
+00012   "http://www.cecill.info".
+00013  
+00014   As a counterpart to the access to the source code and  rights to copy,
+00015   modify and redistribute granted by the license, users are provided only
+00016   with a limited warranty  and the software's author,  the holder of the
+00017   economic rights,  and the successive licensors  have only  limited liability.
+00018  
+00019   In this respect, the user's attention is drawn to the risks associated
+00020   with loading,  using,  modifying and/or developing or reproducing the
+00021   software by the user in light of its specific status of free software,
+00022   that may mean  that it is complicated to manipulate,  and  that  also
+00023   therefore means  that it is reserved for developers  and  experienced
+00024   professionals having in-depth computer knowledge. Users are therefore
+00025   encouraged to load and test the software's suitability as regards their
+00026   requirements in conditions enabling the security of their systems and/or
+00027   data to be ensured and,  more generally, to use and operate it in the
+00028   same conditions as regards security.
+00029   The fact that you are presently reading this means that you have had
+00030   knowledge of the CeCILL license and that you accept its terms.
+00031  
+00032   ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033   Contact: paradiseo-help@lists.gforge.inria.fr
+00034  
+00035 */
+00036 
+00037 #ifndef _moMoveLoopExpl_h
+00038 #define _moMoveLoopExpl_h
+00039 
+00040 #include <moMoveExpl.h>
+00041 
+00043 
+00046 template < class M >
+00047 class moMoveLoopExpl:public moMoveExpl < M >
+00048 {};
+00049 
+00050 #endif
+

Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_move_select_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_move_select_8h-source.html new file mode 100644 index 000000000..163dd240e --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_move_select_8h-source.html @@ -0,0 +1,87 @@ + + +ParadisEO-MOMovingObjects: moMoveSelect.h Source File + + + + +
+ +
+

moMoveSelect.h

00001 /*
+00002   <moMoveSelect.h>
+00003   Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+00004   (C) OPAC Team, LIFL, 2002-2008
+00005  
+00006   Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+00007  
+00008   This software is governed by the CeCILL license under French law and
+00009   abiding by the rules of distribution of free software.  You can  use,
+00010   modify and/ or redistribute the software under the terms of the CeCILL
+00011   license as circulated by CEA, CNRS and INRIA at the following URL
+00012   "http://www.cecill.info".
+00013  
+00014   As a counterpart to the access to the source code and  rights to copy,
+00015   modify and redistribute granted by the license, users are provided only
+00016   with a limited warranty  and the software's author,  the holder of the
+00017   economic rights,  and the successive licensors  have only  limited liability.
+00018  
+00019   In this respect, the user's attention is drawn to the risks associated
+00020   with loading,  using,  modifying and/or developing or reproducing the
+00021   software by the user in light of its specific status of free software,
+00022   that may mean  that it is complicated to manipulate,  and  that  also
+00023   therefore means  that it is reserved for developers  and  experienced
+00024   professionals having in-depth computer knowledge. Users are therefore
+00025   encouraged to load and test the software's suitability as regards their
+00026   requirements in conditions enabling the security of their systems and/or
+00027   data to be ensured and,  more generally, to use and operate it in the
+00028   same conditions as regards security.
+00029   The fact that you are presently reading this means that you have had
+00030   knowledge of the CeCILL license and that you accept its terms.
+00031  
+00032   ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033   Contact: paradiseo-help@lists.gforge.inria.fr
+00034  
+00035 */
+00036 
+00037 #ifndef _moMoveSelect_h
+00038 #define _moMoveSelect_h
+00039 
+00040 #include <eoFunctor.h>
+00041 #include <stdexcept>
+00042 
+00044 
+00049 template < class M >
+00050 class moMoveSelect:public eoBF < M &, typename M::EOType::Fitness &, void >
+00051 {
+00052  public:
+00054   typedef typename M::EOType::Fitness Fitness;
+00055   
+00057 
+00064   virtual void init (const Fitness & _fitness) = 0;
+00065 
+00067 
+00072   virtual bool update (const M & _move, const Fitness & _fitness) = 0;
+00073 
+00074 };
+00075 
+00076 #endif
+

Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_next_move_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_next_move_8h-source.html new file mode 100644 index 000000000..b0e413c62 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_next_move_8h-source.html @@ -0,0 +1,75 @@ + + +ParadisEO-MOMovingObjects: moNextMove.h Source File + + + + +
+ +
+

moNextMove.h

00001 /*
+00002   <moNextMove.h>
+00003   Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+00004   (C) OPAC Team, LIFL, 2002-2008
+00005  
+00006   Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+00007  
+00008   This software is governed by the CeCILL license under French law and
+00009   abiding by the rules of distribution of free software.  You can  use,
+00010   modify and/ or redistribute the software under the terms of the CeCILL
+00011   license as circulated by CEA, CNRS and INRIA at the following URL
+00012   "http://www.cecill.info".
+00013  
+00014   As a counterpart to the access to the source code and  rights to copy,
+00015   modify and redistribute granted by the license, users are provided only
+00016   with a limited warranty  and the software's author,  the holder of the
+00017   economic rights,  and the successive licensors  have only  limited liability.
+00018  
+00019   In this respect, the user's attention is drawn to the risks associated
+00020   with loading,  using,  modifying and/or developing or reproducing the
+00021   software by the user in light of its specific status of free software,
+00022   that may mean  that it is complicated to manipulate,  and  that  also
+00023   therefore means  that it is reserved for developers  and  experienced
+00024   professionals having in-depth computer knowledge. Users are therefore
+00025   encouraged to load and test the software's suitability as regards their
+00026   requirements in conditions enabling the security of their systems and/or
+00027   data to be ensured and,  more generally, to use and operate it in the
+00028   same conditions as regards security.
+00029   The fact that you are presently reading this means that you have had
+00030   knowledge of the CeCILL license and that you accept its terms.
+00031  
+00032   ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033   Contact: paradiseo-help@lists.gforge.inria.fr
+00034 */
+00035 
+00036 #ifndef _moNextMove_h
+00037 #define _moNextMove_h
+00038 
+00039 #include <eoFunctor.h>
+00040 
+00042 
+00046 template < class M > 
+00047 class moNextMove:public eoBF < M &, const typename M::EOType &, bool >
+00048 {};
+00049 
+00050 #endif
+

Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_no_aspir_crit_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_no_aspir_crit_8h-source.html new file mode 100644 index 000000000..85100dd32 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_no_aspir_crit_8h-source.html @@ -0,0 +1,86 @@ + + +ParadisEO-MOMovingObjects: moNoAspirCrit.h Source File + + + + +
+ +
+

moNoAspirCrit.h

00001 /*
+00002   <moNoAspirCrit.h>
+00003   Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+00004   (C) OPAC Team, LIFL, 2002-2008
+00005  
+00006   Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+00007  
+00008   This software is governed by the CeCILL license under French law and
+00009   abiding by the rules of distribution of free software.  You can  use,
+00010   modify and/ or redistribute the software under the terms of the CeCILL
+00011   license as circulated by CEA, CNRS and INRIA at the following URL
+00012   "http://www.cecill.info".
+00013  
+00014   As a counterpart to the access to the source code and  rights to copy,
+00015   modify and redistribute granted by the license, users are provided only
+00016   with a limited warranty  and the software's author,  the holder of the
+00017   economic rights,  and the successive licensors  have only  limited liability.
+00018  
+00019   In this respect, the user's attention is drawn to the risks associated
+00020   with loading,  using,  modifying and/or developing or reproducing the
+00021   software by the user in light of its specific status of free software,
+00022   that may mean  that it is complicated to manipulate,  and  that  also
+00023   therefore means  that it is reserved for developers  and  experienced
+00024   professionals having in-depth computer knowledge. Users are therefore
+00025   encouraged to load and test the software's suitability as regards their
+00026   requirements in conditions enabling the security of their systems and/or
+00027   data to be ensured and,  more generally, to use and operate it in the
+00028   same conditions as regards security.
+00029   The fact that you are presently reading this means that you have had
+00030   knowledge of the CeCILL license and that you accept its terms.
+00031  
+00032   ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033   Contact: paradiseo-help@lists.gforge.inria.fr
+00034  
+00035 */
+00036 
+00037 #ifndef _moNoAspirCrit_h
+00038 #define _moNoAspirCrit_h
+00039 
+00040 #include <moAspirCrit.h>
+00041 
+00043 
+00046 template < class M >
+00047 class moNoAspirCrit:public moAspirCrit < M >
+00048 {
+00050 
+00057   bool operator   () (const M & _move, const typename M::EOType::Fitness & _fitness)
+00058   {
+00059     return false;
+00060   }
+00061 
+00063 
+00066   void init ()
+00067   {}
+00068 };
+00069 
+00070 #endif
+

Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_no_fit_impr_sol_continue_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_no_fit_impr_sol_continue_8h-source.html new file mode 100644 index 000000000..ef7111b94 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_no_fit_impr_sol_continue_8h-source.html @@ -0,0 +1,133 @@ + + +ParadisEO-MOMovingObjects: moNoFitImprSolContinue.h Source File + + + + +
+ +
+

moNoFitImprSolContinue.h

00001 /*
+00002   <moNoFitImprSolContinue.h>
+00003   Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+00004   (C) OPAC Team, LIFL, 2002-2008
+00005  
+00006   Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+00007  
+00008   This software is governed by the CeCILL license under French law and
+00009   abiding by the rules of distribution of free software.  You can  use,
+00010   modify and/ or redistribute the software under the terms of the CeCILL
+00011   license as circulated by CEA, CNRS and INRIA at the following URL
+00012   "http://www.cecill.info".
+00013  
+00014   As a counterpart to the access to the source code and  rights to copy,
+00015   modify and redistribute granted by the license, users are provided only
+00016   with a limited warranty  and the software's author,  the holder of the
+00017   economic rights,  and the successive licensors  have only  limited liability.
+00018  
+00019   In this respect, the user's attention is drawn to the risks associated
+00020   with loading,  using,  modifying and/or developing or reproducing the
+00021   software by the user in light of its specific status of free software,
+00022   that may mean  that it is complicated to manipulate,  and  that  also
+00023   therefore means  that it is reserved for developers  and  experienced
+00024   professionals having in-depth computer knowledge. Users are therefore
+00025   encouraged to load and test the software's suitability as regards their
+00026   requirements in conditions enabling the security of their systems and/or
+00027   data to be ensured and,  more generally, to use and operate it in the
+00028   same conditions as regards security.
+00029   The fact that you are presently reading this means that you have had
+00030   knowledge of the CeCILL license and that you accept its terms.
+00031  
+00032   ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033   Contact: paradiseo-help@lists.gforge.inria.fr
+00034 */
+00035 
+00036 #ifndef _moNoFitImprSolContinue_h
+00037 #define _moNoFitImprSolContinue_h
+00038 
+00039 #include <moSolContinue.h>
+00040 
+00042 
+00045 template < class EOT > 
+00046 class moNoFitImprSolContinue:public moSolContinue < EOT >
+00047 {
+00048  public:
+00049 
+00051   typedef typename EOT::Fitness Fitness;
+00052 
+00054 
+00057   moNoFitImprSolContinue (unsigned int _maxNumberOfIterationWithoutImprovement)
+00058     : maxNumberOfIterationsWithoutImprovement(_maxNumberOfIterationWithoutImprovement), firstFitnessSaved(true), counter(0)
+00059     {}
+00060 
+00062 
+00067   bool operator () (const EOT & _solution)
+00068   {
+00069     if (_solution.invalid())
+00070       {
+00071         throw std::runtime_error("[moNoFitImprSolContinue.h]: The current solution has not been evaluated.");
+00072       }
+00073     
+00074     if (firstFitnessSaved)
+00075       {
+00076         fitness=_solution.fitness();
+00077         counter=0;
+00078         firstFitnessSaved=false;
+00079         return true;
+00080       }
+00081 
+00082     counter++;
+00083 
+00084     if ( _solution.fitness() > fitness)
+00085       {
+00086         fitness=_solution.fitness();
+00087         counter=0;
+00088       }
+00089 
+00090     if (counter==maxNumberOfIterationsWithoutImprovement)
+00091       {
+00092         std::cout << "[moNoFitImrpSolContinue.h]: Done [" << counter  << "] iterations without improvement." << std::endl;
+00093       }
+00094     
+00095     return counter!=maxNumberOfIterationsWithoutImprovement;
+00096   }
+00097 
+00099 
+00102   void init ()
+00103   {
+00104     firstFitnessSaved=true;
+00105     counter=0;
+00106   }
+00107 
+00108  private:
+00109 
+00111   unsigned int maxNumberOfIterationsWithoutImprovement;
+00112 
+00114   bool firstFitnessSaved;
+00115 
+00117   Fitness fitness;
+00118 
+00120   unsigned int counter;
+00121 };
+00122 
+00123 #endif
+

Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_rand_impr_select_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_rand_impr_select_8h-source.html new file mode 100644 index 000000000..d3246e519 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_rand_impr_select_8h-source.html @@ -0,0 +1,128 @@ + + +ParadisEO-MOMovingObjects: moRandImprSelect.h Source File + + + + +
+ +
+

moRandImprSelect.h

00001 /*
+00002   <moRandImprSelect.h>
+00003   Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+00004   (C) OPAC Team, LIFL, 2002-2008
+00005  
+00006   Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+00007  
+00008   This software is governed by the CeCILL license under French law and
+00009   abiding by the rules of distribution of free software.  You can  use,
+00010   modify and/ or redistribute the software under the terms of the CeCILL
+00011   license as circulated by CEA, CNRS and INRIA at the following URL
+00012   "http://www.cecill.info".
+00013  
+00014   As a counterpart to the access to the source code and  rights to copy,
+00015   modify and redistribute granted by the license, users are provided only
+00016   with a limited warranty  and the software's author,  the holder of the
+00017   economic rights,  and the successive licensors  have only  limited liability.
+00018  
+00019   In this respect, the user's attention is drawn to the risks associated
+00020   with loading,  using,  modifying and/or developing or reproducing the
+00021   software by the user in light of its specific status of free software,
+00022   that may mean  that it is complicated to manipulate,  and  that  also
+00023   therefore means  that it is reserved for developers  and  experienced
+00024   professionals having in-depth computer knowledge. Users are therefore
+00025   encouraged to load and test the software's suitability as regards their
+00026   requirements in conditions enabling the security of their systems and/or
+00027   data to be ensured and,  more generally, to use and operate it in the
+00028   same conditions as regards security.
+00029   The fact that you are presently reading this means that you have had
+00030   knowledge of the CeCILL license and that you accept its terms.
+00031  
+00032   ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033   Contact: paradiseo-help@lists.gforge.inria.fr
+00034 */
+00035 
+00036 #ifndef _moRandImprSelect_h
+00037 #define _moRandImprSelect_h
+00038 
+00039 #include <vector>
+00040 #include <utils/eoRNG.h>
+00041 #include <moMoveSelect.h>
+00042 
+00044 
+00048 template < class M > 
+00049 class moRandImprSelect: public moMoveSelect < M >
+00050 {
+00051  public:
+00052 
+00054   typedef typename M::EOType::Fitness Fitness;
+00055 
+00057 
+00063   void init (const Fitness & _fitness)
+00064   {
+00065     initial_fitness = _fitness;
+00066     better_fitnesses.clear();
+00067     better_moves.clear();
+00068   }
+00069 
+00071 
+00079   bool update (const M & _move, const Fitness & _fitness)
+00080   {
+00081 
+00082     if (_fitness > initial_fitness)
+00083       {
+00084         better_fitnesses.push_back(_fitness);
+00085         better_moves.push_back(_move);
+00086       }
+00087 
+00088     return true;
+00089   }
+00090 
+00092 
+00098   void operator () (M & _move, Fitness & _fitness)
+00099   {
+00100     unsigned int index;
+00101     
+00102     index=0;
+00103 
+00104     if( (better_fitnesses.size()==0) || (better_moves.size()==0) )
+00105       {
+00106         throw std::runtime_error("[moRandImprSelect.h]: no move or/and no fitness already saved, update has to be called first.");
+00107       }
+00108 
+00109     index = rng.random (better_fitnesses.size ());
+00110     
+00111     _move = better_moves[index];
+00112     _fitness = better_fitnesses[index];
+00113   }
+00114 
+00115  private:
+00116 
+00118   Fitness initial_fitness;
+00119 
+00121   std::vector < Fitness > better_fitnesses;
+00122 
+00124   std::vector < M > better_moves;
+00125 };
+00126 
+00127 #endif
+

Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_rand_move_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_rand_move_8h-source.html new file mode 100644 index 000000000..c175aa463 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_rand_move_8h-source.html @@ -0,0 +1,75 @@ + + +ParadisEO-MOMovingObjects: moRandMove.h Source File + + + + +
+ +
+

moRandMove.h

00001 /*
+00002   <moRandMove.h>
+00003   Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+00004   (C) OPAC Team, LIFL, 2002-2008
+00005  
+00006   Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+00007  
+00008   This software is governed by the CeCILL license under French law and
+00009   abiding by the rules of distribution of free software.  You can  use,
+00010   modify and/ or redistribute the software under the terms of the CeCILL
+00011   license as circulated by CEA, CNRS and INRIA at the following URL
+00012   "http://www.cecill.info".
+00013  
+00014   As a counterpart to the access to the source code and  rights to copy,
+00015   modify and redistribute granted by the license, users are provided only
+00016   with a limited warranty  and the software's author,  the holder of the
+00017   economic rights,  and the successive licensors  have only  limited liability.
+00018  
+00019   In this respect, the user's attention is drawn to the risks associated
+00020   with loading,  using,  modifying and/or developing or reproducing the
+00021   software by the user in light of its specific status of free software,
+00022   that may mean  that it is complicated to manipulate,  and  that  also
+00023   therefore means  that it is reserved for developers  and  experienced
+00024   professionals having in-depth computer knowledge. Users are therefore
+00025   encouraged to load and test the software's suitability as regards their
+00026   requirements in conditions enabling the security of their systems and/or
+00027   data to be ensured and,  more generally, to use and operate it in the
+00028   same conditions as regards security.
+00029   The fact that you are presently reading this means that you have had
+00030   knowledge of the CeCILL license and that you accept its terms.
+00031  
+00032   ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033   Contact: paradiseo-help@lists.gforge.inria.fr
+00034 */
+00035 
+00036 #ifndef _moRandMove_h
+00037 #define _moRandMove_h
+00038 
+00039 #include <eoFunctor.h>
+00040 
+00042 
+00045 template < class M >
+00046 class moRandMove:public eoUF < M &, void >
+00047 {};
+00048 
+00049 #endif
+

Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_s_a_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_s_a_8h-source.html new file mode 100644 index 000000000..251100ead --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_s_a_8h-source.html @@ -0,0 +1,167 @@ + + +ParadisEO-MOMovingObjects: moSA.h Source File + + + + +
+ +
+

moSA.h

00001 /*
+00002   <moSA.h>
+00003   Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+00004   (C) OPAC Team, LIFL, 2002-2008
+00005  
+00006   Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+00007  
+00008   This software is governed by the CeCILL license under French law and
+00009   abiding by the rules of distribution of free software.  You can  use,
+00010   modify and/ or redistribute the software under the terms of the CeCILL
+00011   license as circulated by CEA, CNRS and INRIA at the following URL
+00012   "http://www.cecill.info".
+00013  
+00014   As a counterpart to the access to the source code and  rights to copy,
+00015   modify and redistribute granted by the license, users are provided only
+00016   with a limited warranty  and the software's author,  the holder of the
+00017   economic rights,  and the successive licensors  have only  limited liability.
+00018  
+00019   In this respect, the user's attention is drawn to the risks associated
+00020   with loading,  using,  modifying and/or developing or reproducing the
+00021   software by the user in light of its specific status of free software,
+00022   that may mean  that it is complicated to manipulate,  and  that  also
+00023   therefore means  that it is reserved for developers  and  experienced
+00024   professionals having in-depth computer knowledge. Users are therefore
+00025   encouraged to load and test the software's suitability as regards their
+00026   requirements in conditions enabling the security of their systems and/or
+00027   data to be ensured and,  more generally, to use and operate it in the
+00028   same conditions as regards security.
+00029   The fact that you are presently reading this means that you have had
+00030   knowledge of the CeCILL license and that you accept its terms.
+00031  
+00032   ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033   Contact: paradiseo-help@lists.gforge.inria.fr
+00034 */
+00035 
+00036 #ifndef _moSA_h
+00037 #define _moSA_h
+00038 
+00039 #include <math.h>
+00040 
+00041 #include <eoEvalFunc.h>
+00042 #include <moAlgo.h>
+00043 #include <moRandMove.h>
+00044 #include <moMoveIncrEval.h>
+00045 #include <moCoolingSchedule.h>
+00046 #include <moSolContinue.h>
+00047 
+00049 
+00052 template < class M >
+00053 class moSA:public moAlgo < typename M::EOType >
+00054 {
+00056   typedef typename M::EOType EOT;
+00057 
+00059   typedef typename EOT::Fitness Fitness;
+00060 
+00061  public:
+00062 
+00064 
+00074   moSA (moRandMove < M > & _random_move_generator, moMoveIncrEval < M > & _incremental_evaluation,
+00075         moSolContinue < EOT > & _continue, double _initial_temperature, moCoolingSchedule & _cooling_schedule,
+00076         eoEvalFunc < EOT > & _full_evaluation):
+00077   random_move_generator(_random_move_generator), incremental_evaluation(_incremental_evaluation),
+00078     continu(_continue), initial_temperature(_initial_temperature),
+00079     cooling_schedule(_cooling_schedule), full_evaluation(_full_evaluation)
+00080   {}
+00081   
+00083 
+00089   bool operator ()(EOT & _solution)
+00090   {
+00091     Fitness incremental_fitness, delta_fit;
+00092     EOT best_solution;
+00093     double temperature;
+00094     M move;
+00095 
+00096     if (_solution.invalid())
+00097       {
+00098         full_evaluation (_solution);
+00099       }
+00100 
+00101     temperature = initial_temperature;
+00102 
+00103     best_solution = _solution;
+00104 
+00105     do
+00106       {
+00107         continu.init ();
+00108         
+00109         do
+00110           {
+00111             random_move_generator(move);
+00112 
+00113             incremental_fitness = incremental_evaluation (move, _solution);
+00114 
+00115             delta_fit = incremental_fitness - _solution.fitness ();
+00116             
+00117             if( (_solution.fitness() > incremental_fitness ) && (exp (delta_fit / temperature) > 1.0) )
+00118               {
+00119                 delta_fit = -delta_fit;
+00120               }
+00121 
+00122             if ( (incremental_fitness > _solution.fitness()) || (rng.uniform () < exp (delta_fit / temperature)) )
+00123               {
+00124                 move(_solution);
+00125                 _solution.fitness(incremental_fitness);
+00126                 
+00127                 // Updating the best solution found  until now ?
+00128                 if ( _solution.fitness() > best_solution.fitness() )
+00129                   {
+00130                     best_solution = _solution;
+00131                   }
+00132               }
+00133             
+00134           }
+00135         while ( continu (_solution) );
+00136       }
+00137     while ( cooling_schedule (temperature) );
+00138 
+00139     _solution = best_solution;
+00140 
+00141     return true;
+00142   }
+00143 
+00144  private:
+00145 
+00147   moRandMove < M > & random_move_generator;
+00148 
+00150   moMoveIncrEval < M > & incremental_evaluation;
+00151 
+00153   moSolContinue < EOT > & continu;
+00154 
+00156   double  initial_temperature;
+00157   
+00159   moCoolingSchedule & cooling_schedule;
+00160   
+00162   eoEvalFunc < EOT > & full_evaluation;
+00163 };
+00164 
+00165 #endif
+

Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_simple_move_tabu_list_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_simple_move_tabu_list_8h-source.html new file mode 100644 index 000000000..3e999905e --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_simple_move_tabu_list_8h-source.html @@ -0,0 +1,168 @@ + + +ParadisEO-MOMovingObjects: moSimpleMoveTabuList.h Source File + + + + +
+ +
+

moSimpleMoveTabuList.h

00001 /*
+00002   <moSimpleMoveTabuList.h>
+00003   Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+00004   (C) OPAC Team, LIFL, 2002-2008
+00005  
+00006   Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+00007  
+00008   This software is governed by the CeCILL license under French law and
+00009   abiding by the rules of distribution of free software.  You can  use,
+00010   modify and/ or redistribute the software under the terms of the CeCILL
+00011   license as circulated by CEA, CNRS and INRIA at the following URL
+00012   "http://www.cecill.info".
+00013  
+00014   As a counterpart to the access to the source code and  rights to copy,
+00015   modify and redistribute granted by the license, users are provided only
+00016   with a limited warranty  and the software's author,  the holder of the
+00017   economic rights,  and the successive licensors  have only  limited liability.
+00018  
+00019   In this respect, the user's attention is drawn to the risks associated
+00020   with loading,  using,  modifying and/or developing or reproducing the
+00021   software by the user in light of its specific status of free software,
+00022   that may mean  that it is complicated to manipulate,  and  that  also
+00023   therefore means  that it is reserved for developers  and  experienced
+00024   professionals having in-depth computer knowledge. Users are therefore
+00025   encouraged to load and test the software's suitability as regards their
+00026   requirements in conditions enabling the security of their systems and/or
+00027   data to be ensured and,  more generally, to use and operate it in the
+00028   same conditions as regards security.
+00029   The fact that you are presently reading this means that you have had
+00030   knowledge of the CeCILL license and that you accept its terms.
+00031  
+00032   ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033   Contact: paradiseo-help@lists.gforge.inria.fr
+00034 */
+00035 
+00036 #ifndef _moSimpleMoveTabuList_h
+00037 #define _moSimpleMoveTabuList_h
+00038 
+00039 #include <list>
+00040 #include <iterator>
+00041 
+00042 #include <moTabuList.h>
+00043 
+00045 template <class M>
+00046 class moSimpleMoveTabuList: public moTabuList < M >
+00047 {
+00048  public:
+00049 
+00051   typedef typename M::EOType EOT;
+00052 
+00054   typedef typename std::list<M>::iterator moveIterator;
+00055 
+00057   /*
+00058     \param _size The maximum size of the move tabu list.
+00059   */
+00060  moSimpleMoveTabuList(unsigned int _memory_maximum_size): memory_maximum_size(_memory_maximum_size), memory_size(0)
+00061     {}
+00062 
+00064 
+00069   bool operator () (const M & _move, const EOT & _solution)
+00070   {
+00071     moveIterator it;
+00072     //code only used to avoid warning because _solution is not used in this function.
+00073     EOT solution=(EOT)_solution;
+00074     
+00075     it=tabuList.begin();
+00076     // The code is !(*it)==_move instead of (*it)!=_move because people designing their specific move representation 
+00077     // will write the "==" operator (I hope) but not necessary the "!=" operator.
+00078     while ( it!=tabuList.end() && !((*it)==_move) )
+00079       {
+00080         it++;
+00081       }
+00082 
+00083     return it!=tabuList.end();
+00084   }
+00085 
+00086   void add(const M & _move, const EOT & _solution)
+00087   {
+00088     //code only used to avoid warning because _solution is not used in this function.
+00089     EOT solution=(EOT)_solution;
+00090 
+00091     if (memory_size!=0)
+00092       {
+00093         // Useful in the case of a move has been kept thanks to the moAspirCrit.
+00094         // In this case, the move can already be in the tabuList.
+00095         removeMove(_move);
+00096       }
+00097 
+00098     tabuList.push_back(_move);
+00099 
+00100     if (memory_size == memory_maximum_size)
+00101       {
+00102         tabuList.erase(tabuList.begin());
+00103       }
+00104     else
+00105       {
+00106         memory_size++;
+00107       }
+00108   }
+00109 
+00110   void update ()
+00111   {
+00112     //nothing to do
+00113   }
+00114   
+00115   void init ()
+00116   {
+00117     //nothing to do
+00118   }
+00119 
+00120  private:
+00121 
+00123 
+00126   void removeMove(const M & _move)
+00127   {
+00128     moveIterator it;
+00129     
+00130     it=tabuList.begin();
+00131     // The code is !(*it)==_move instead of (*it)!=_move because people designing their specific move representation 
+00132     // will write the "==" operator (I hope) but not necessary the "!=" operator.
+00133     while ( it!=tabuList.end() && (!((*it)==_move) ))
+00134       {
+00135         it++;
+00136       }
+00137     
+00138     if (it!=tabuList.end())
+00139       {
+00140         tabuList.erase(it);
+00141       }
+00142   }
+00143 
+00145   unsigned int memory_maximum_size;
+00146 
+00148   unsigned int memory_size;
+00149 
+00151   std::list<M> tabuList;
+00152 };
+00153 
+00154 #endif
+

Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_simple_solution_tabu_list_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_simple_solution_tabu_list_8h-source.html new file mode 100644 index 000000000..0e74a79ff --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_simple_solution_tabu_list_8h-source.html @@ -0,0 +1,171 @@ + + +ParadisEO-MOMovingObjects: moSimpleSolutionTabuList.h Source File + + + + +
+ +
+

moSimpleSolutionTabuList.h

00001 /*
+00002   <moSimpleSolutionTabuList.h>
+00003   Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+00004   (C) OPAC Team, LIFL, 2002-2008
+00005  
+00006   Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+00007  
+00008   This software is governed by the CeCILL license under French law and
+00009   abiding by the rules of distribution of free software.  You can  use,
+00010   modify and/ or redistribute the software under the terms of the CeCILL
+00011   license as circulated by CEA, CNRS and INRIA at the following URL
+00012   "http://www.cecill.info".
+00013  
+00014   As a counterpart to the access to the source code and  rights to copy,
+00015   modify and redistribute granted by the license, users are provided only
+00016   with a limited warranty  and the software's author,  the holder of the
+00017   economic rights,  and the successive licensors  have only  limited liability.
+00018  
+00019   In this respect, the user's attention is drawn to the risks associated
+00020   with loading,  using,  modifying and/or developing or reproducing the
+00021   software by the user in light of its specific status of free software,
+00022   that may mean  that it is complicated to manipulate,  and  that  also
+00023   therefore means  that it is reserved for developers  and  experienced
+00024   professionals having in-depth computer knowledge. Users are therefore
+00025   encouraged to load and test the software's suitability as regards their
+00026   requirements in conditions enabling the security of their systems and/or
+00027   data to be ensured and,  more generally, to use and operate it in the
+00028   same conditions as regards security.
+00029   The fact that you are presently reading this means that you have had
+00030   knowledge of the CeCILL license and that you accept its terms.
+00031  
+00032   ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033   Contact: paradiseo-help@lists.gforge.inria.fr
+00034 */
+00035 
+00036 #ifndef _moSimpleSolutionTabuList_h
+00037 #define _moSimpleSolutionTabuList_h
+00038 
+00039 #include <list>
+00040 #include <iterator>
+00041 
+00042 #include <moTabuList.h>
+00043 
+00045 template <class M>
+00046 class moSimpleSolutionTabuList: public moTabuList < M >
+00047 {
+00048  public:
+00049 
+00051   typedef typename M::EOType EOT;
+00052 
+00054   typedef typename std::list<EOT>::iterator solutionIterator;
+00055   
+00057 
+00060  moSimpleSolutionTabuList(unsigned int _memory_maximum_size): memory_maximum_size(_memory_maximum_size), memory_size(0)
+00061     {}
+00062 
+00064 
+00069   bool operator () (const M & _move, const EOT & _solution)
+00070   {
+00071     solutionIterator it;
+00072 
+00073     M move=(M)_move;
+00074     EOT solution=(EOT) _solution;
+00075 
+00076     move(solution);
+00077 
+00078     it=tabuList.begin();
+00079     // The code is !(*it)==_solution instead of (*it)!=_solution because people designing their specific solution representation 
+00080     // will write the "==" operator (I hope) but not necessary the "!=" operator.
+00081     while (it!=tabuList.end()&&(!((*it)==solution)))
+00082       {
+00083         it++;
+00084       }
+00085 
+00086     return it!=tabuList.end();
+00087   }
+00088 
+00089   void add (const M & _move, const EOT & _solution)
+00090   {
+00091     M move=(M)_move;
+00092     EOT solution=(EOT) _solution;
+00093 
+00094     _move(_solution);
+00095 
+00096     if (memory_size!=0)
+00097       {
+00098         // Useful in the case of a solution has been kept thanks to the moAspirCrit.
+00099         // In this case, the solution can already be in the tabuList.
+00100         removeSolution(_solution);
+00101       }
+00102 
+00103     tabuList.push_back(_solution);
+00104 
+00105     if (memory_size == memory_maximum_size)
+00106       {
+00107         tabuList.erase(tabuList.begin());
+00108       }
+00109     else
+00110       {
+00111         memory_size++;
+00112       }
+00113   }
+00114 
+00115   void update ()
+00116   {
+00117     //nothing to do
+00118   }
+00119 
+00120   void init ()
+00121   {
+00122     //nothing to do
+00123   }
+00124 
+00125  private:
+00126 
+00128 
+00131   void removeSolution(const EOT & _solution)
+00132   {
+00133     solutionIterator it;
+00134 
+00135     it=tabuList.begin();
+00136     // The code is !(*it)==_solution instead of (*it)!=_solution because people designing their specific solution representation 
+00137     // will write the "==" operator (I hope) but not necessary the "!=" operator.
+00138     while ( it!=tabuList.end() && !((*it)==_solution) )
+00139       {
+00140         it++;
+00141       }
+00142 
+00143     if (it!=tabuList.end())
+00144       {
+00145         tabuList.erase(it);
+00146       }
+00147   }
+00148 
+00150   unsigned int memory_maximum_size;
+00151 
+00153   unsigned int memory_size;
+00154 
+00156   std::list<EOT> tabuList;
+00157 };
+00158 
+00159 #endif
+

Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_sol_continue_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_sol_continue_8h-source.html new file mode 100644 index 000000000..557aab8a0 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_sol_continue_8h-source.html @@ -0,0 +1,80 @@ + + +ParadisEO-MOMovingObjects: moSolContinue.h Source File + + + + +
+ +
+

moSolContinue.h

00001 /*
+00002   <moSolContinue.h>
+00003   Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+00004   (C) OPAC Team, LIFL, 2002-2008
+00005  
+00006   Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+00007  
+00008   This software is governed by the CeCILL license under French law and
+00009   abiding by the rules of distribution of free software.  You can  use,
+00010   modify and/ or redistribute the software under the terms of the CeCILL
+00011   license as circulated by CEA, CNRS and INRIA at the following URL
+00012   "http://www.cecill.info".
+00013  
+00014   As a counterpart to the access to the source code and  rights to copy,
+00015   modify and redistribute granted by the license, users are provided only
+00016   with a limited warranty  and the software's author,  the holder of the
+00017   economic rights,  and the successive licensors  have only  limited liability.
+00018  
+00019   In this respect, the user's attention is drawn to the risks associated
+00020   with loading,  using,  modifying and/or developing or reproducing the
+00021   software by the user in light of its specific status of free software,
+00022   that may mean  that it is complicated to manipulate,  and  that  also
+00023   therefore means  that it is reserved for developers  and  experienced
+00024   professionals having in-depth computer knowledge. Users are therefore
+00025   encouraged to load and test the software's suitability as regards their
+00026   requirements in conditions enabling the security of their systems and/or
+00027   data to be ensured and,  more generally, to use and operate it in the
+00028   same conditions as regards security.
+00029   The fact that you are presently reading this means that you have had
+00030   knowledge of the CeCILL license and that you accept its terms.
+00031  
+00032   ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033   Contact: paradiseo-help@lists.gforge.inria.fr
+00034 */
+00035 
+00036 #ifndef _moSolContinue_h
+00037 #define _moSolContinue_h
+00038 
+00039 #include <eoFunctor.h>
+00040 #include <stdexcept>
+00041 
+00043 
+00047 template < class EOT >
+00048 class moSolContinue:public eoUF < const EOT &, bool >
+00049 {
+00050  public:
+00052 
+00055   virtual void init () = 0;
+00056 };
+00057 
+00058 #endif
+

Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_steady_fit_sol_continue_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_steady_fit_sol_continue_8h-source.html new file mode 100644 index 000000000..0481f5f9e --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_steady_fit_sol_continue_8h-source.html @@ -0,0 +1,148 @@ + + +ParadisEO-MOMovingObjects: moSteadyFitSolContinue.h Source File + + + + +
+ +
+

moSteadyFitSolContinue.h

00001 /*
+00002   <moSteadyFitSolContinue.h>
+00003   Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+00004   (C) OPAC Team, LIFL, 2002-2008
+00005  
+00006   Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+00007  
+00008   This software is governed by the CeCILL license under French law and
+00009   abiding by the rules of distribution of free software.  You can  use,
+00010   modify and/ or redistribute the software under the terms of the CeCILL
+00011   license as circulated by CEA, CNRS and INRIA at the following URL
+00012   "http://www.cecill.info".
+00013  
+00014   As a counterpart to the access to the source code and  rights to copy,
+00015   modify and redistribute granted by the license, users are provided only
+00016   with a limited warranty  and the software's author,  the holder of the
+00017   economic rights,  and the successive licensors  have only  limited liability.
+00018  
+00019   In this respect, the user's attention is drawn to the risks associated
+00020   with loading,  using,  modifying and/or developing or reproducing the
+00021   software by the user in light of its specific status of free software,
+00022   that may mean  that it is complicated to manipulate,  and  that  also
+00023   therefore means  that it is reserved for developers  and  experienced
+00024   professionals having in-depth computer knowledge. Users are therefore
+00025   encouraged to load and test the software's suitability as regards their
+00026   requirements in conditions enabling the security of their systems and/or
+00027   data to be ensured and,  more generally, to use and operate it in the
+00028   same conditions as regards security.
+00029   The fact that you are presently reading this means that you have had
+00030   knowledge of the CeCILL license and that you accept its terms.
+00031  
+00032   ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033   Contact: paradiseo-help@lists.gforge.inria.fr
+00034 */
+00035 
+00036 #ifndef _moSteadyFitSolContinue_h
+00037 #define _moSteadyFitSolContinue_h
+00038 
+00039 #include <moSolContinue.h>
+00040 
+00042 
+00045 template < class EOT > 
+00046 class moSteadyFitSolContinue:public moSolContinue < EOT >
+00047 {
+00048  public:
+00049 
+00051   typedef typename EOT::Fitness Fitness;
+00052   
+00054 
+00058   moSteadyFitSolContinue (unsigned int _maxNumberOfIterations, unsigned int _maxNumberOfIterationWithoutImprovement)
+00059     : maxNumberOfIterations (_maxNumberOfIterations), maxNumberOfIterationsWithoutImprovement(_maxNumberOfIterationWithoutImprovement),
+00060     maxNumberOfIterationsReached(false), firstFitnessSaved(true), counter(0)
+00061     {}
+00062 
+00064 
+00070   bool operator () (const EOT & _solution)
+00071   {
+00072     if (!maxNumberOfIterationsReached)
+00073       {
+00074         maxNumberOfIterationsReached=((++counter)==maxNumberOfIterations);
+00075         if (maxNumberOfIterationsReached)
+00076           {
+00077             std::cout << "[moSteadyFitSolContinue.h]: Done the minimum number of iterations [" << counter << "]." << std::endl;
+00078           }
+00079         return true;
+00080       }
+00081     
+00082     if (_solution.invalid())
+00083       {
+00084         return true;
+00085       }
+00086     
+00087     if (firstFitnessSaved)
+00088       {
+00089         fitness=_solution.fitness();
+00090         counter=0;
+00091         firstFitnessSaved=false;
+00092         return true;
+00093       }
+00094 
+00095     counter++;
+00096 
+00097     if ( _solution.fitness() > fitness )
+00098       {
+00099         fitness=_solution.fitness();
+00100         counter=0;
+00101       }
+00102 
+00103     if (counter==maxNumberOfIterationsWithoutImprovement)
+00104       {
+00105         std::cout << "[moSteadyFitSolContinue.h]: Done [" << counter  << "] iterations without improvement." << std::endl;
+00106       }
+00107     return counter!=maxNumberOfIterationsWithoutImprovement;
+00108   }
+00109 
+00111 
+00114   void init ()
+00115   {
+00116     maxNumberOfIterationsReached=false;
+00117     counter=0;
+00118     firstFitnessSaved=true;
+00119   }
+00120 
+00121  private:
+00122 
+00124   unsigned int maxNumberOfIterations;
+00125 
+00127   unsigned int maxNumberOfIterationsWithoutImprovement;
+00128 
+00130   bool maxNumberOfIterationsReached;
+00131 
+00133   bool firstFitnessSaved;
+00134 
+00136   Fitness fitness;
+00137 
+00139   unsigned int counter;
+00140 };
+00141 
+00142 #endif
+

Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_t_s_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_t_s_8h-source.html new file mode 100644 index 000000000..380033247 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_t_s_8h-source.html @@ -0,0 +1,146 @@ + + +ParadisEO-MOMovingObjects: moTS.h Source File + + + + +
+ +
+

moTS.h

00001 /*
+00002   <moTS.h>
+00003   Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+00004   (C) OPAC Team, LIFL, 2002-2008
+00005  
+00006   Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+00007  
+00008   This software is governed by the CeCILL license under French law and
+00009   abiding by the rules of distribution of free software.  You can  use,
+00010   modify and/ or redistribute the software under the terms of the CeCILL
+00011   license as circulated by CEA, CNRS and INRIA at the following URL
+00012   "http://www.cecill.info".
+00013  
+00014   As a counterpart to the access to the source code and  rights to copy,
+00015   modify and redistribute granted by the license, users are provided only
+00016   with a limited warranty  and the software's author,  the holder of the
+00017   economic rights,  and the successive licensors  have only  limited liability.
+00018  
+00019   In this respect, the user's attention is drawn to the risks associated
+00020   with loading,  using,  modifying and/or developing or reproducing the
+00021   software by the user in light of its specific status of free software,
+00022   that may mean  that it is complicated to manipulate,  and  that  also
+00023   therefore means  that it is reserved for developers  and  experienced
+00024   professionals having in-depth computer knowledge. Users are therefore
+00025   encouraged to load and test the software's suitability as regards their
+00026   requirements in conditions enabling the security of their systems and/or
+00027   data to be ensured and,  more generally, to use and operate it in the
+00028   same conditions as regards security.
+00029   The fact that you are presently reading this means that you have had
+00030   knowledge of the CeCILL license and that you accept its terms.
+00031  
+00032   ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033   Contact: paradiseo-help@lists.gforge.inria.fr
+00034 */
+00035 
+00036 #ifndef _moTS_h
+00037 #define _moTS_h
+00038 
+00039 #include <eoEvalFunc.h>
+00040 
+00041 #include <moAlgo.h>
+00042 #include <moSolContinue.h>
+00043 #include <moTSMoveLoopExpl.h>
+00044 
+00046 
+00049 template < class M >
+00050 class moTS:public moAlgo < typename M::EOType >
+00051 {
+00053   typedef typename M::EOType EOT;
+00054 
+00056   typedef typename EOT::Fitness  Fitness;
+00057   
+00058  public:
+00059   
+00061 
+00072   moTS (moMoveInit < M > & _move_initializer, moNextMove < M > & _next_move_generator, 
+00073         moMoveIncrEval < M > & _incremental_evaluation, moTabuList < M > & _tabu_list, 
+00074         moAspirCrit < M > & _aspiration_criterion, moSolContinue < EOT > & _continue, 
+00075         eoEvalFunc < EOT > & _full_evaluation): 
+00076   move_explorer ( *new moTSMoveLoopExpl < M >(_move_initializer, _next_move_generator, _incremental_evaluation,
+00077                                               _tabu_list,_aspiration_criterion) ),
+00078     continu (_continue), full_evaluation (_full_evaluation)
+00079   {}
+00080   
+00082 
+00089   moTS (moMoveExpl < M > & _move_explorer, moSolContinue < EOT > & _continue, eoEvalFunc < EOT > & _full_evaluation):
+00090   move_explorer (_move_explorer), continu (_continue), full_evaluation (_full_evaluation)
+00091   {}
+00092   
+00094 
+00102   bool operator ()(EOT & _solution)
+00103   {
+00104     M move;
+00105     
+00106     EOT best_solution, new_solution;
+00107 
+00108     if ( _solution.invalid () )
+00109       {
+00110         full_evaluation (_solution);
+00111       }
+00112     
+00113     best_solution=_solution;
+00114 
+00115     // code used for avoiding warning because new_solution is indirectly initialized by move_expl.
+00116     new_solution=_solution;
+00117     
+00118     continu.init ();
+00119 
+00120     do
+00121       {
+00122         move_explorer (_solution, new_solution);
+00123         
+00124         // Updating the best solution found until now ?
+00125         if (new_solution.fitness() > _solution.fitness())
+00126           {
+00127             best_solution = new_solution;
+00128           }
+00129         
+00130         _solution = new_solution;
+00131       }
+00132     while ( continu (_solution) );
+00133 
+00134     _solution = best_solution;
+00135 
+00136     return true;
+00137   }
+00138 
+00139  private:
+00140 
+00142   moMoveExpl < M > & move_explorer;
+00143 
+00145   moSolContinue < EOT > & continu;
+00146 
+00148   eoEvalFunc < EOT > & full_evaluation;
+00149 };
+00150 
+00151 #endif
+

Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_t_s_move_loop_expl_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_t_s_move_loop_expl_8h-source.html new file mode 100644 index 000000000..2d96c12a8 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_t_s_move_loop_expl_8h-source.html @@ -0,0 +1,166 @@ + + +ParadisEO-MOMovingObjects: moTSMoveLoopExpl.h Source File + + + + +
+ +
+

moTSMoveLoopExpl.h

00001 /*
+00002   <moTSMoveLoopExpl.h>
+00003   Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+00004   (C) OPAC Team, LIFL, 2002-2008
+00005  
+00006   Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+00007  
+00008   This software is governed by the CeCILL license under French law and
+00009   abiding by the rules of distribution of free software.  You can  use,
+00010   modify and/ or redistribute the software under the terms of the CeCILL
+00011   license as circulated by CEA, CNRS and INRIA at the following URL
+00012   "http://www.cecill.info".
+00013  
+00014   As a counterpart to the access to the source code and  rights to copy,
+00015   modify and redistribute granted by the license, users are provided only
+00016   with a limited warranty  and the software's author,  the holder of the
+00017   economic rights,  and the successive licensors  have only  limited liability.
+00018  
+00019   In this respect, the user's attention is drawn to the risks associated
+00020   with loading,  using,  modifying and/or developing or reproducing the
+00021   software by the user in light of its specific status of free software,
+00022   that may mean  that it is complicated to manipulate,  and  that  also
+00023   therefore means  that it is reserved for developers  and  experienced
+00024   professionals having in-depth computer knowledge. Users are therefore
+00025   encouraged to load and test the software's suitability as regards their
+00026   requirements in conditions enabling the security of their systems and/or
+00027   data to be ensured and,  more generally, to use and operate it in the
+00028   same conditions as regards security.
+00029   The fact that you are presently reading this means that you have had
+00030   knowledge of the CeCILL license and that you accept its terms.
+00031  
+00032   ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033   Contact: paradiseo-help@lists.gforge.inria.fr
+00034 */
+00035 
+00036 #ifndef _moTSMoveLoopExpl_h
+00037 #define _moTSMoveLoopExpl_h
+00038 
+00039 #include <moMoveLoopExpl.h>
+00040 #include <moMoveInit.h>
+00041 #include <moNextMove.h>
+00042 #include <moMoveIncrEval.h>
+00043 #include <moMoveSelect.h>
+00044 #include <moTabuList.h>
+00045 #include <moAspirCrit.h>
+00046 #include <moBestImprSelect.h>
+00047 
+00049 
+00052 template < class M >
+00053 class moTSMoveLoopExpl:public moMoveLoopExpl < M >
+00054 {
+00056   typedef typename M::EOType EOT;
+00057 
+00059   typedef typename M::EOType::Fitness Fitness;
+00060 
+00061  public:
+00062 
+00064 
+00071   moTSMoveLoopExpl (moMoveInit < M > & _move_initializer, moNextMove < M > & _next_move_generator,
+00072                     moMoveIncrEval < M > & _incremental_evaluation, moTabuList < M > & _tabu_list, 
+00073                     moAspirCrit < M > & _aspiration_criterion):
+00074   move_initializer(_move_initializer), next_move_generator(_next_move_generator), incremental_evaluation(_incremental_evaluation),
+00075     tabu_list(_tabu_list), aspiration_criterion(_aspiration_criterion)
+00076   {
+00077     tabu_list.init ();
+00078     aspiration_criterion.init ();
+00079   }
+00080   
+00082 
+00090   void operator () (const EOT & _old_solution, EOT & _new_solution)
+00091   {
+00092     M move, best_move;
+00093     Fitness fitness, best_move_fitness;
+00094 
+00095     bool move_is_tabu, aspiration_criterion_is_verified, selection_update_is_ok, has_next_move;
+00096 
+00097     if( _old_solution.invalid() )
+00098       {
+00099         throw std::runtime_error("[moTSMoveLoopExpl.h]: The current solution has not been evaluated.");
+00100       }
+00101     
+00102     //At the begining, the new solution is equivalent to the old one.
+00103     _new_solution=(EOT)_old_solution;
+00104 
+00105     // Restarting the exploration of  of the neighborhood !
+00106     move_initializer (move, _old_solution);     
+00107 
+00108     move_selection.init( _old_solution.fitness() );
+00109 
+00110     do
+00111       {
+00112         fitness = incremental_evaluation(move, _old_solution);
+00113 
+00114         move_is_tabu = tabu_list(move, _old_solution);
+00115 
+00116         aspiration_criterion_is_verified = aspiration_criterion(move, fitness);
+00117 
+00118         if( !move_is_tabu || aspiration_criterion_is_verified )
+00119           {
+00120             selection_update_is_ok = move_selection.update(move, fitness);
+00121           }
+00122 
+00123         has_next_move = next_move_generator(move, _old_solution);
+00124       }
+00125     while( has_next_move && selection_update_is_ok );
+00126 
+00127     move_selection(best_move, best_move_fitness);
+00128 
+00129     // Apply the best move.
+00130     best_move(_new_solution);
+00131     
+00132     // The fitness is set to avoid an additionnal fitness computation.
+00133     _new_solution.fitness(best_move_fitness);
+00134       
+00135     // Removing moves that are no more tabu.
+00136     tabu_list.update ();
+00137     
+00138     // Updating the tabu list
+00139     tabu_list.add(best_move, _new_solution);
+00140   }
+00141 
+00142  private:
+00143 
+00145   moMoveInit < M > & move_initializer;
+00146 
+00148   moNextMove < M > & next_move_generator;
+00149 
+00151   moMoveIncrEval < M > & incremental_evaluation;
+00152 
+00154   moBestImprSelect < M > move_selection;
+00155 
+00157   moTabuList < M > & tabu_list;
+00158 
+00160   moAspirCrit < M > & aspiration_criterion;
+00161 };
+00162 
+00163 #endif
+

Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_tabu_list_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_tabu_list_8h-source.html new file mode 100644 index 000000000..0c423bf0a --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/mo_tabu_list_8h-source.html @@ -0,0 +1,87 @@ + + +ParadisEO-MOMovingObjects: moTabuList.h Source File + + + + +
+ +
+

moTabuList.h

00001 /*
+00002   <moTabuList.h>
+00003   Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008
+00004   (C) OPAC Team, LIFL, 2002-2008
+00005  
+00006   Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr)
+00007  
+00008   This software is governed by the CeCILL license under French law and
+00009   abiding by the rules of distribution of free software.  You can  use,
+00010   modify and/ or redistribute the software under the terms of the CeCILL
+00011   license as circulated by CEA, CNRS and INRIA at the following URL
+00012   "http://www.cecill.info".
+00013  
+00014   As a counterpart to the access to the source code and  rights to copy,
+00015   modify and redistribute granted by the license, users are provided only
+00016   with a limited warranty  and the software's author,  the holder of the
+00017   economic rights,  and the successive licensors  have only  limited liability.
+00018  
+00019   In this respect, the user's attention is drawn to the risks associated
+00020   with loading,  using,  modifying and/or developing or reproducing the
+00021   software by the user in light of its specific status of free software,
+00022   that may mean  that it is complicated to manipulate,  and  that  also
+00023   therefore means  that it is reserved for developers  and  experienced
+00024   professionals having in-depth computer knowledge. Users are therefore
+00025   encouraged to load and test the software's suitability as regards their
+00026   requirements in conditions enabling the security of their systems and/or
+00027   data to be ensured and,  more generally, to use and operate it in the
+00028   same conditions as regards security.
+00029   The fact that you are presently reading this means that you have had
+00030   knowledge of the CeCILL license and that you accept its terms.
+00031  
+00032   ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033   Contact: paradiseo-help@lists.gforge.inria.fr
+00034 */
+00035 
+00036 #ifndef _moTabuList_h
+00037 #define _moTabuList_h
+00038 
+00039 #include <eoFunctor.h>
+00040 
+00042 
+00046 template < class M > class moTabuList: public eoBF < const M &, const typename M::EOType &, bool >
+00047 {
+00048  public:
+00049 
+00051   typedef typename M::EOType EOT;
+00052   
+00054 
+00060   virtual void add(const M & _move, const EOT & _solution) = 0;
+00061 
+00063 
+00066   virtual void update () = 0;
+00067   
+00069 
+00072   virtual void init () = 0;
+00073 };
+00074 
+00075 #endif
+

Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/search.idx b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/search.idx new file mode 100644 index 000000000..503e75078 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/search.idx differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/search.php b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/search.php new file mode 100644 index 000000000..d90581561 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/search.php @@ -0,0 +1,381 @@ + + +Search + + + + +
+
    +
  • Main Page
  • +
  • Classes
  • +
  • Files
  • +
  • +
    + + + + +1 document matching your query."; + } + else // $num>1 + { + return "Found $num documents matching your query. Showing best matches first."; + } +} + +function report_matches() +{ + return "Matches: "; +} +function end_form($value) +{ + echo " \n \n
    \n
    \n
  • \n
\n
\n"; +} + +function readInt($file) +{ + $b1 = ord(fgetc($file)); $b2 = ord(fgetc($file)); + $b3 = ord(fgetc($file)); $b4 = ord(fgetc($file)); + return ($b1<<24)|($b2<<16)|($b3<<8)|$b4; +} + +function readString($file) +{ + $result=""; + while (ord($c=fgetc($file))) $result.=$c; + return $result; +} + +function readHeader($file) +{ + $header =fgetc($file); $header.=fgetc($file); + $header.=fgetc($file); $header.=fgetc($file); + return $header; +} + +function computeIndex($word) +{ + // Fast string hashing + //$lword = strtolower($word); + //$l = strlen($lword); + //for ($i=0;$i<$l;$i++) + //{ + // $c = ord($lword{$i}); + // $v = (($v & 0xfc00) ^ ($v << 6) ^ $c) & 0xffff; + //} + //return $v; + + // Simple hashing that allows for substring search + if (strlen($word)<2) return -1; + // high char of the index + $hi = ord($word{0}); + if ($hi==0) return -1; + // low char of the index + $lo = ord($word{1}); + if ($lo==0) return -1; + // return index + return $hi*256+$lo; +} + +function search($file,$word,&$statsList) +{ + $index = computeIndex($word); + if ($index!=-1) // found a valid index + { + fseek($file,$index*4+4); // 4 bytes per entry, skip header + $index = readInt($file); + if ($index) // found words matching the hash key + { + $start=sizeof($statsList); + $count=$start; + fseek($file,$index); + $w = readString($file); + while ($w) + { + $statIdx = readInt($file); + if ($word==substr($w,0,strlen($word))) + { // found word that matches (as substring) + $statsList[$count++]=array( + "word"=>$word, + "match"=>$w, + "index"=>$statIdx, + "full"=>strlen($w)==strlen($word), + "docs"=>array() + ); + } + $w = readString($file); + } + $totalHi=0; + $totalFreqHi=0; + $totalFreqLo=0; + for ($count=$start;$count $idx, + "freq" => $freq>>1, + "rank" => 0.0, + "hi" => $freq&1 + ); + if ($freq&1) // word occurs in high priority doc + { + $totalHi++; + $totalFreqHi+=$freq*$multiplier; + } + else // word occurs in low priority doc + { + $totalFreqLo+=$freq*$multiplier; + } + } + // read name and url info for the doc + for ($i=0;$i<$numDocs;$i++) + { + fseek($file,$docInfo[$i]["idx"]); + $docInfo[$i]["name"]=readString($file); + $docInfo[$i]["url"]=readString($file); + } + $statInfo["docs"]=$docInfo; + } + $totalFreq=($totalHi+1)*$totalFreqLo + $totalFreqHi; + for ($count=$start;$count$key, + "name"=>$di["name"], + "rank"=>$rank + ); + } + $docs[$key]["words"][] = array( + "word"=>$wordInfo["word"], + "match"=>$wordInfo["match"], + "freq"=>$di["freq"] + ); + } + } + return $docs; +} + +function filter_results($docs,&$requiredWords,&$forbiddenWords) +{ + $filteredDocs=array(); + while (list ($key, $val) = each ($docs)) + { + $words = &$docs[$key]["words"]; + $copy=1; // copy entry by default + if (sizeof($requiredWords)>0) + { + foreach ($requiredWords as $reqWord) + { + $found=0; + foreach ($words as $wordInfo) + { + $found = $wordInfo["word"]==$reqWord; + if ($found) break; + } + if (!$found) + { + $copy=0; // document contains none of the required words + break; + } + } + } + if (sizeof($forbiddenWords)>0) + { + foreach ($words as $wordInfo) + { + if (in_array($wordInfo["word"],$forbiddenWords)) + { + $copy=0; // document contains a forbidden word + break; + } + } + } + if ($copy) $filteredDocs[$key]=$docs[$key]; + } + return $filteredDocs; +} + +function compare_rank($a,$b) +{ + if ($a["rank"] == $b["rank"]) + { + return 0; + } + return ($a["rank"]>$b["rank"]) ? -1 : 1; +} + +function sort_results($docs,&$sorted) +{ + $sorted = $docs; + usort($sorted,"compare_rank"); + return $sorted; +} + +function report_results(&$docs) +{ + echo "\n"; + echo " \n"; + echo " \n"; + echo " \n"; + $numDocs = sizeof($docs); + if ($numDocs==0) + { + echo " \n"; + echo " \n"; + echo " \n"; + } + else + { + echo " \n"; + echo " \n"; + echo " \n"; + $num=1; + foreach ($docs as $doc) + { + echo " \n"; + echo " "; + echo "\n"; + echo " \n"; + echo " \n"; + echo " \n"; + $num++; + } + } + echo "

".search_results()."

".matches_text(0)."
".matches_text($numDocs); + echo "\n"; + echo "
$num.".$doc["name"]."
".report_matches()." "; + foreach ($doc["words"] as $wordInfo) + { + $word = $wordInfo["word"]; + $matchRight = substr($wordInfo["match"],strlen($word)); + echo "$word$matchRight(".$wordInfo["freq"].") "; + } + echo "
\n"; +} + +function main() +{ + if(strcmp('4.1.0', phpversion()) > 0) + { + die("Error: PHP version 4.1.0 or above required!"); + } + if (!($file=fopen("search.idx","rb"))) + { + die("Error: Search index file could NOT be opened!"); + } + if (readHeader($file)!="DOXS") + { + die("Error: Header of index file is invalid!"); + } + $query=""; + if (array_key_exists("query", $_GET)) + { + $query=$_GET["query"]; + } + end_form($query); + echo " \n
\n"; + $results = array(); + $requiredWords = array(); + $forbiddenWords = array(); + $foundWords = array(); + $word=strtok($query," "); + while ($word) // for each word in the search query + { + if (($word{0}=='+')) { $word=substr($word,1); $requiredWords[]=$word; } + if (($word{0}=='-')) { $word=substr($word,1); $forbiddenWords[]=$word; } + if (!in_array($word,$foundWords)) + { + $foundWords[]=$word; + search($file,strtolower($word),$results); + } + $word=strtok(" "); + } + $docs = array(); + combine_results($results,$docs); + // filter out documents with forbidden word or that do not contain + // required words + $filteredDocs = filter_results($docs,$requiredWords,$forbiddenWords); + // sort the results based on rank + $sorted = array(); + sort_results($filteredDocs,$sorted); + // report results to the user + report_results($sorted); + echo "
\n"; + fclose($file); +} + +main(); + + +?> +
Generated on Wed Jan 16 15:50:41 2008 for ParadisEO-MOMovingObjects by  + +doxygen 1.5.4
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/tab_b.gif b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/tab_b.gif new file mode 100644 index 000000000..0d623483f Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/tab_b.gif differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/tab_l.gif b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/tab_l.gif new file mode 100644 index 000000000..9b1e6337c Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/tab_l.gif differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/tab_r.gif b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/tab_r.gif new file mode 100644 index 000000000..ce9dd9f53 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/tab_r.gif differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/tabs.css b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/tabs.css new file mode 100644 index 000000000..c37faafe8 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/tabs.css @@ -0,0 +1,102 @@ +/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */ + +DIV.tabs +{ + float : left; + width : 100%; + background : url("tab_b.gif") repeat-x bottom; + margin-bottom : 4px; +} + +DIV.tabs UL +{ + margin : 0px; + padding-left : 10px; + list-style : none; +} + +DIV.tabs LI, DIV.tabs FORM +{ + display : inline; + margin : 0px; + padding : 0px; +} + +DIV.tabs FORM +{ + float : right; +} + +DIV.tabs A +{ + float : left; + background : url("tab_r.gif") no-repeat right top; + border-bottom : 1px solid #84B0C7; + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + +DIV.tabs A:hover +{ + background-position: 100% -150px; +} + +DIV.tabs A:link, DIV.tabs A:visited, +DIV.tabs A:active, DIV.tabs A:hover +{ + color: #1A419D; +} + +DIV.tabs SPAN +{ + float : left; + display : block; + background : url("tab_l.gif") no-repeat left top; + padding : 5px 9px; + white-space : nowrap; +} + +DIV.tabs INPUT +{ + float : right; + display : inline; + font-size : 1em; +} + +DIV.tabs TD +{ + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + + + +/* Commented Backslash Hack hides rule from IE5-Mac \*/ +DIV.tabs SPAN {float : none;} +/* End IE5-Mac hack */ + +DIV.tabs A:hover SPAN +{ + background-position: 0% -150px; +} + +DIV.tabs LI.current A +{ + background-position: 100% -150px; + border-width : 0px; +} + +DIV.tabs LI.current SPAN +{ + background-position: 0% -150px; + padding-bottom : 6px; +} + +DIV.nav +{ + background : none; + border : none; + border-bottom : 1px solid #84B0C7; +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/tree.html b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/tree.html new file mode 100644 index 000000000..e627e9067 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/html/tree.html @@ -0,0 +1,248 @@ + + + + + + + TreeView + + + + +
+

ParadisEO-MOMovingObjects

+
+

o*Welcome to PARADISEO-Moving Objects

+

o+ParadisEO-MOMovingObjects Class List

+ +

o+ParadisEO-MOMovingObjects Class Hierarchy

+ +

o*Class Members

+

\+ParadisEO-MOMovingObjects File List

+
+

 o*index.h

+

 o*mo.h

+

 o*moAlgo.h

+

 o*moAspirCrit.h

+

 o*moBestImprSelect.h

+

 o*moComparator.h

+

 o*moCoolingSchedule.h

+

 o*moExponentialCoolingSchedule.h

+

 o*moFirstImprSelect.h

+

 o*moFitComparator.h

+

 o*moFitSolContinue.h

+

 o*moGenSolContinue.h

+

 o*moHC.h

+

 o*moHCMoveLoopExpl.h

+

 o*moILS.h

+

 o*moImprBestFitAspirCrit.h

+

 o*moItRandNextMove.h

+

 o*moLinearCoolingSchedule.h

+

 o*moLSCheckPoint.h

+

 o*moMove.h

+

 o*moMoveExpl.h

+

 o*moMoveIncrEval.h

+

 o*moMoveInit.h

+

 o*moMoveLoopExpl.h

+

 o*moMoveSelect.h

+

 o*moNextMove.h

+

 o*moNoAspirCrit.h

+

 o*moNoFitImprSolContinue.h

+

 o*moRandImprSelect.h

+

 o*moRandMove.h

+

 o*moSA.h

+

 o*moSimpleMoveTabuList.h

+

 o*moSimpleSolutionTabuList.h

+

 o*moSolContinue.h

+

 o*moSteadyFitSolContinue.h

+

 o*moTabuList.h

+

 o*moTS.h

+

 \*moTSMoveLoopExpl.h

+
+
+
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/FreeSans.ttf b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/FreeSans.ttf new file mode 100644 index 000000000..b550b90ba Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/FreeSans.ttf differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/Makefile b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/Makefile new file mode 100644 index 000000000..776fcf968 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/Makefile @@ -0,0 +1,39 @@ +all: clean refman.dvi + +ps: refman.ps + +pdf: refman.pdf + +ps_2on1: refman_2on1.ps + +pdf_2on1: refman_2on1.pdf + +refman.ps: refman.dvi + dvips -o refman.ps refman.dvi + +refman.pdf: refman.ps + ps2pdf refman.ps refman.pdf + +refman.dvi: refman.tex doxygen.sty + echo "Running latex..." + latex refman.tex + echo "Running makeindex..." + makeindex refman.idx + echo "Rerunning latex...." + latex refman.tex + latex_count=5 ; \ + while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\ + do \ + echo "Rerunning latex...." ;\ + latex refman.tex ;\ + latex_count=`expr $$latex_count - 1` ;\ + done + +refman_2on1.ps: refman.ps + psnup -2 refman.ps >refman_2on1.ps + +refman_2on1.pdf: refman_2on1.ps + ps2pdf refman_2on1.ps refman_2on1.pdf + +clean: + rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out refman.pdf diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/annotated.tex b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/annotated.tex new file mode 100644 index 000000000..c8c0c5f5b --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/annotated.tex @@ -0,0 +1,39 @@ +\section{ParadisEO-MOMovingObjects Class List} +Here are the classes, structs, unions and interfaces with brief descriptions:\begin{CompactList} +\item\contentsline{section}{{\bf moAlgo$<$ EOT $>$} (Description of an algorithm of the paradiseo-mo library )}{\pageref{classmo_algo}}{} +\item\contentsline{section}{{\bf moAspirCrit$<$ M $>$} (Description of the conditions in which a tabu move could be accepted )}{\pageref{classmo_aspir_crit}}{} +\item\contentsline{section}{{\bf moBestImprSelect$<$ M $>$} (One of the possible \doxyref{moMoveSelect}{p.}{classmo_move_select} )}{\pageref{classmo_best_impr_select}}{} +\item\contentsline{section}{{\bf moComparator$<$ EOT $>$} (Template for classes which need to compare two EOT and indicate if the first is \char`\"{}better\char`\"{} than the second )}{\pageref{classmo_comparator}}{} +\item\contentsline{section}{{\bf moCoolingSchedule} (This class gives the description of a cooling schedule )}{\pageref{classmo_cooling_schedule}}{} +\item\contentsline{section}{{\bf moExponentialCoolingSchedule} (One of the possible \doxyref{moCoolingSchedule}{p.}{classmo_cooling_schedule} )}{\pageref{classmo_exponential_cooling_schedule}}{} +\item\contentsline{section}{{\bf moFirstImprSelect$<$ M $>$} (One possible \doxyref{moMoveSelect}{p.}{classmo_move_select} )}{\pageref{classmo_first_impr_select}}{} +\item\contentsline{section}{{\bf moFitComparator$<$ EOT $>$} (Comparison according to the fitness )}{\pageref{classmo_fit_comparator}}{} +\item\contentsline{section}{{\bf moFitSolContinue$<$ EOT $>$} (One possible stop criterion for a solution-based heuristic )}{\pageref{classmo_fit_sol_continue}}{} +\item\contentsline{section}{{\bf moGenSolContinue$<$ EOT $>$} (One possible stop criterion for a solution-based heuristic )}{\pageref{classmo_gen_sol_continue}}{} +\item\contentsline{section}{{\bf moHC$<$ M $>$} (Hill Climbing (HC) )}{\pageref{classmo_h_c}}{} +\item\contentsline{section}{{\bf moHCMoveLoopExpl$<$ M $>$} (Iterative explorer used by a \doxyref{moHC}{p.}{classmo_h_c} )}{\pageref{classmo_h_c_move_loop_expl}}{} +\item\contentsline{section}{{\bf moILS$<$ M $>$} (Iterated Local Search (ILS) )}{\pageref{classmo_i_l_s}}{} +\item\contentsline{section}{{\bf moImprBestFitAspirCrit$<$ M $>$} (One of the possible \doxyref{moAspirCrit}{p.}{classmo_aspir_crit} )}{\pageref{classmo_impr_best_fit_aspir_crit}}{} +\item\contentsline{section}{{\bf moItRandNextMove$<$ M $>$} (One of the possible \doxyref{moNextMove}{p.}{classmo_next_move} )}{\pageref{classmo_it_rand_next_move}}{} +\item\contentsline{section}{{\bf moLinearCoolingSchedule} (One of the possible \doxyref{moCoolingSchedule}{p.}{classmo_cooling_schedule} )}{\pageref{classmo_linear_cooling_schedule}}{} +\item\contentsline{section}{{\bf moLSCheckPoint$<$ M $>$} (Class which allows a checkpointing system )}{\pageref{classmo_l_s_check_point}}{} +\item\contentsline{section}{{\bf moMove$<$ EOT $>$} (Definition of a move )}{\pageref{classmo_move}}{} +\item\contentsline{section}{{\bf moMoveExpl$<$ M $>$} (Description of a move (\doxyref{moMove}{p.}{classmo_move}) explorer )}{\pageref{classmo_move_expl}}{} +\item\contentsline{section}{{\bf moMoveIncrEval$<$ M $>$} ((generally) Efficient evaluation function based a move and a solution )}{\pageref{classmo_move_incr_eval}}{} +\item\contentsline{section}{{\bf moMoveInit$<$ M $>$} (Move (\doxyref{moMove}{p.}{classmo_move}) initializer )}{\pageref{classmo_move_init}}{} +\item\contentsline{section}{{\bf moMoveLoopExpl$<$ M $>$} (Class which describes an iterative explorer )}{\pageref{classmo_move_loop_expl}}{} +\item\contentsline{section}{{\bf moMoveSelect$<$ M $>$} (Class that describes a move selector (\doxyref{moMove}{p.}{classmo_move}) )}{\pageref{classmo_move_select}}{} +\item\contentsline{section}{{\bf moNextMove$<$ M $>$} (Class which allows to generate a new move (\doxyref{moMove}{p.}{classmo_move}) )}{\pageref{classmo_next_move}}{} +\item\contentsline{section}{{\bf moNoAspirCrit$<$ M $>$} (One of the possible aspiration criterion (\doxyref{moAspirCrit}{p.}{classmo_aspir_crit}) )}{\pageref{classmo_no_aspir_crit}}{} +\item\contentsline{section}{{\bf moNoFitImprSolContinue$<$ EOT $>$} (One possible stop criterion for a solution-based heuristic )}{\pageref{classmo_no_fit_impr_sol_continue}}{} +\item\contentsline{section}{{\bf moRandImprSelect$<$ M $>$} (One of the possible \doxyref{moMove}{p.}{classmo_move} selector (\doxyref{moMoveSelect}{p.}{classmo_move_select}) )}{\pageref{classmo_rand_impr_select}}{} +\item\contentsline{section}{{\bf moRandMove$<$ M $>$} (Random move generator )}{\pageref{classmo_rand_move}}{} +\item\contentsline{section}{{\bf moSA$<$ M $>$} (Simulated Annealing (SA) )}{\pageref{classmo_s_a}}{} +\item\contentsline{section}{{\bf moSimpleMoveTabuList$<$ M $>$} (Class describing a move tabu list with a limited memory )}{\pageref{classmo_simple_move_tabu_list}}{} +\item\contentsline{section}{{\bf moSimpleSolutionTabuList$<$ M $>$} (Class describing a solution tabu list with limited length )}{\pageref{classmo_simple_solution_tabu_list}}{} +\item\contentsline{section}{{\bf moSolContinue$<$ EOT $>$} (Class that describes a stop criterion for a solution-based heuristic )}{\pageref{classmo_sol_continue}}{} +\item\contentsline{section}{{\bf moSteadyFitSolContinue$<$ EOT $>$} (One possible stopping criterion for a solution-based heuristic )}{\pageref{classmo_steady_fit_sol_continue}}{} +\item\contentsline{section}{{\bf moTabuList$<$ M $>$} (Class describing a tabu list that a \doxyref{moTS}{p.}{classmo_t_s} uses )}{\pageref{classmo_tabu_list}}{} +\item\contentsline{section}{{\bf moTS$<$ M $>$} (Tabu Search (TS) )}{\pageref{classmo_t_s}}{} +\item\contentsline{section}{{\bf moTSMoveLoopExpl$<$ M $>$} (Explorer for a Tabu Search algorithm )}{\pageref{classmo_t_s_move_loop_expl}}{} +\end{CompactList} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_algo.eps b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_algo.eps new file mode 100644 index 000000000..5a1270e24 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_algo.eps @@ -0,0 +1,215 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 273.973 +%%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 1.825 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 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 +(moAlgo< EOT >) cw +(eoMonOp< EOT >) cw +(eoOp< EOType >) cw +(eoUF< EOT &, bool >) cw +(eoFunctorBase) 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 ----- + + (moAlgo< EOT >) 0.5 0 box + (eoMonOp< EOT >) 0.5 1 box + (eoOp< EOType >) 0 2 box + (eoUF< EOT &, bool >) 1 2 box + (eoFunctorBase) 1 3 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +1 0.5 1 in +solid +0 0.5 1 out +solid +0 1 2 conn +solid +1 0 2 in +solid +1 1 2 in +solid +0 1 2 out +solid +1 1 3 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_algo.tex b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_algo.tex new file mode 100644 index 000000000..1a6736e14 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_algo.tex @@ -0,0 +1,27 @@ +\section{moAlgo$<$ EOT $>$ Class Template Reference} +\label{classmo_algo}\index{moAlgo@{moAlgo}} +Description of an algorithm of the paradiseo-mo library. + + +{\tt \#include $<$moAlgo.h$>$} + +Inheritance diagram for moAlgo$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmo_algo} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class moAlgo$<$ EOT $>$} + +Description of an algorithm of the paradiseo-mo library. + +\doxyref{moHC}{p.}{classmo_h_c}, \doxyref{moTS}{p.}{classmo_t_s} and \doxyref{moSA}{p.}{classmo_s_a} are 3 examples of algorithm of the paradiseo-mo library. + +Definition at line 46 of file moAlgo.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moAlgo.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_aspir_crit.eps b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_aspir_crit.eps new file mode 100644 index 000000000..7a0252d70 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_aspir_crit.eps @@ -0,0 +1,215 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 218.579 +%%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.2875 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 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 +(moAspirCrit< M >) cw +(eoBF< A1, A2, R >) cw +(eoFunctorBase) cw +(moImprBestFitAspirCrit< M >) cw +(moNoAspirCrit< 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 ----- + + (moAspirCrit< M >) 0.5 1 box + (eoBF< A1, A2, R >) 0.5 2 box + (eoFunctorBase) 0.5 3 box + (moImprBestFitAspirCrit< M >) 0 0 box + (moNoAspirCrit< M >) 1 0 box + +% ----- relations ----- + +solid +0 0.5 1 out +solid +1 0.5 2 in +solid +0 0.5 2 out +solid +1 0.5 3 in +solid +1 0.5 0.25 out +solid +0 1 1 conn +solid +0 0 0.75 in +solid +0 1 0.75 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_aspir_crit.tex b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_aspir_crit.tex new file mode 100644 index 000000000..1e4a73e8e --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_aspir_crit.tex @@ -0,0 +1,44 @@ +\section{moAspirCrit$<$ M $>$ Class Template Reference} +\label{classmo_aspir_crit}\index{moAspirCrit@{moAspirCrit}} +Description of the conditions in which a tabu move could be accepted. + + +{\tt \#include $<$moAspirCrit.h$>$} + +Inheritance diagram for moAspirCrit$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmo_aspir_crit} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +virtual void {\bf init} ()=0 +\begin{CompactList}\small\item\em Procedure which initialises all that needs an aspiration criterion. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class moAspirCrit$<$ M $>$} + +Description of the conditions in which a tabu move could be accepted. + +It is only a description... An object that herits from this class is needed to be used in a \doxyref{moTS}{p.}{classmo_t_s}. See moNoAspriCrit for example. + +Definition at line 47 of file moAspirCrit.h. + +\subsection{Member Function Documentation} +\index{moAspirCrit@{moAspirCrit}!init@{init}} +\index{init@{init}!moAspirCrit@{moAspirCrit}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ virtual void {\bf moAspirCrit}$<$ M $>$::init ()\hspace{0.3cm}{\tt [pure virtual]}}\label{classmo_aspir_crit_a8ce84510a5ec7c9078381e542c6d140} + + +Procedure which initialises all that needs an aspiration criterion. + +It can be possible that this procedure does nothing... + +Implemented in {\bf moImprBestFitAspirCrit$<$ M $>$} \doxyref{}{p.}{classmo_impr_best_fit_aspir_crit_ffa451a14ff4ea86fb8bd9fdbc348630}, and {\bf moNoAspirCrit$<$ M $>$} \doxyref{}{p.}{classmo_no_aspir_crit_f3a286fc4c2d36bd390ba9a3074f3037}. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moAspirCrit.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_best_impr_select.eps b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_best_impr_select.eps new file mode 100644 index 000000000..e1504ce28 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_best_impr_select.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 303.03 +%%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 1.65 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 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 +(moBestImprSelect< M >) cw +(moMoveSelect< M >) cw +(eoBF< M &, M::EOType::Fitness &, void >) cw +(eoFunctorBase) 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 ----- + + (moBestImprSelect< M >) 0 0 box + (moMoveSelect< M >) 0 1 box + (eoBF< M &, M::EOType::Fitness &, void >) 0 2 box + (eoFunctorBase) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_best_impr_select.tex b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_best_impr_select.tex new file mode 100644 index 000000000..8241c528a --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_best_impr_select.tex @@ -0,0 +1,115 @@ +\section{moBestImprSelect$<$ M $>$ Class Template Reference} +\label{classmo_best_impr_select}\index{moBestImprSelect@{moBestImprSelect}} +One of the possible \doxyref{moMoveSelect}{p.}{classmo_move_select}. + + +{\tt \#include $<$moBestImprSelect.h$>$} + +Inheritance diagram for moBestImprSelect$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmo_best_impr_select} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{CompactItemize} +\item +typedef M::EOType::Fitness {\bf Fitness}\label{classmo_best_impr_select_c4ae17435221fb0a8e8acd285210cfcb} + +\begin{CompactList}\small\item\em Alias for the fitness. \item\end{CompactList}\end{CompactItemize} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +void {\bf init} (const {\bf Fitness} \&\_\-fitness) +\begin{CompactList}\small\item\em Procedure which initialise the exploration. \item\end{CompactList}\item +bool {\bf update} (const M \&\_\-move, const {\bf Fitness} \&\_\-fitness) +\begin{CompactList}\small\item\em {\bf Function} that indicates if the current move has not improved the fitness. \item\end{CompactList}\item +void {\bf operator()} (M \&\_\-move, {\bf Fitness} \&\_\-fitness) +\begin{CompactList}\small\item\em Procedure which saved the best move and fitness. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +bool {\bf first\_\-time}\label{classmo_best_impr_select_352b14d206b0772eb9f40efb7beb0f13} + +\begin{CompactList}\small\item\em Allowing to know if at least one move has been generated. \item\end{CompactList}\item +M {\bf best\_\-move}\label{classmo_best_impr_select_bd86f70519f954c07ff0d8a2a3a8ff6a} + +\begin{CompactList}\small\item\em The best move. \item\end{CompactList}\item +{\bf Fitness} {\bf best\_\-fitness}\label{classmo_best_impr_select_e51345fe28ca7cbaca65bdad1aa8ecb7} + +\begin{CompactList}\small\item\em The best fitness. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class moBestImprSelect$<$ M $>$} + +One of the possible \doxyref{moMoveSelect}{p.}{classmo_move_select}. + +All neighbors are considered, and the movement which enables the best improvement is selected. + +Definition at line 47 of file moBestImprSelect.h. + +\subsection{Member Function Documentation} +\index{moBestImprSelect@{moBestImprSelect}!init@{init}} +\index{init@{init}!moBestImprSelect@{moBestImprSelect}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ void {\bf moBestImprSelect}$<$ M $>$::init (const {\bf Fitness} \& {\em \_\-fitness})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_best_impr_select_83f961549986b8ad94692e433aa79114} + + +Procedure which initialise the exploration. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-fitness}]The current fitness. \end{description} +\end{Desc} + + +Implements {\bf moMoveSelect$<$ M $>$} \doxyref{}{p.}{classmo_move_select_58038bd859632c1bd022d23d9792bdca}. + +Definition at line 58 of file moBestImprSelect.h. + +References moBestImprSelect$<$ M $>$::first\_\-time.\index{moBestImprSelect@{moBestImprSelect}!update@{update}} +\index{update@{update}!moBestImprSelect@{moBestImprSelect}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ bool {\bf moBestImprSelect}$<$ M $>$::update (const M \& {\em \_\-move}, const {\bf Fitness} \& {\em \_\-fitness})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_best_impr_select_5c0729fd316b0ef78406bce5ca91de2a} + + +{\bf Function} that indicates if the current move has not improved the fitness. + +If the given fitness enables an improvment, the move (\doxyref{moMove}{p.}{classmo_move}) and the fitness linked to this move are saved. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-move}]a move. \item[{\em \_\-fitness}]a fitness linked to the move. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]TRUE if the move does not improve the fitness. \end{Desc} + + +Implements {\bf moMoveSelect$<$ M $>$} \doxyref{}{p.}{classmo_move_select_5b4d3b2f030cca80c563c3db0c4af404}. + +Definition at line 76 of file moBestImprSelect.h. + +References moBestImprSelect$<$ M $>$::best\_\-fitness, moBestImprSelect$<$ M $>$::best\_\-move, and moBestImprSelect$<$ M $>$::first\_\-time.\index{moBestImprSelect@{moBestImprSelect}!operator()@{operator()}} +\index{operator()@{operator()}!moBestImprSelect@{moBestImprSelect}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ void {\bf moBestImprSelect}$<$ M $>$::operator() (M \& {\em \_\-move}, {\bf Fitness} \& {\em \_\-fitness})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_best_impr_select_33b3de7bd322f737eb97cce9a5404527} + + +Procedure which saved the best move and fitness. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-move}]the current move (result of the procedure). \item[{\em \_\-fitness}]the current fitness (result of the procedure). \end{description} +\end{Desc} + + +Implements {\bf eoBF$<$ M \&, M::EOType::Fitness \&, void $>$}. + +Definition at line 94 of file moBestImprSelect.h. + +References moBestImprSelect$<$ M $>$::best\_\-fitness, moBestImprSelect$<$ M $>$::best\_\-move, and moBestImprSelect$<$ M $>$::first\_\-time. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moBestImprSelect.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_comparator.eps b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_comparator.eps new file mode 100644 index 000000000..d7869534e --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_comparator.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 484.848 +%%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 1.03125 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 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 +(moComparator< EOT >) cw +(eoBF< A1, A2, R >) cw +(eoFunctorBase) cw +(moFitComparator< EOT >) 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 ----- + + (moComparator< EOT >) 0 1 box + (eoBF< A1, A2, R >) 0 2 box + (eoFunctorBase) 0 3 box + (moFitComparator< EOT >) 0 0 box + +% ----- relations ----- + +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in +solid +1 0 0.25 out +solid +0 0 0.75 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_comparator.tex b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_comparator.tex new file mode 100644 index 000000000..1e3efba12 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_comparator.tex @@ -0,0 +1,27 @@ +\section{moComparator$<$ EOT $>$ Class Template Reference} +\label{classmo_comparator}\index{moComparator@{moComparator}} +Template for classes which need to compare two EOT and indicate if the first is \char`\"{}better\char`\"{} than the second. + + +{\tt \#include $<$moComparator.h$>$} + +Inheritance diagram for moComparator$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmo_comparator} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class moComparator$<$ EOT $>$} + +Template for classes which need to compare two EOT and indicate if the first is \char`\"{}better\char`\"{} than the second. + +The objects that extend this template describe how an EOT is \char`\"{}better\char`\"{} than an other. + +Definition at line 45 of file moComparator.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moComparator.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_cooling_schedule.eps b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_cooling_schedule.eps new file mode 100644 index 000000000..099ff0bb2 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_cooling_schedule.eps @@ -0,0 +1,215 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 203.046 +%%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.4625 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 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 +(moCoolingSchedule) cw +(eoUF< double &, bool >) cw +(eoFunctorBase) cw +(moExponentialCoolingSchedule) cw +(moLinearCoolingSchedule) 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 ----- + + (moCoolingSchedule) 0.5 1 box + (eoUF< double &, bool >) 0.5 2 box + (eoFunctorBase) 0.5 3 box + (moExponentialCoolingSchedule) 0 0 box + (moLinearCoolingSchedule) 1 0 box + +% ----- relations ----- + +solid +0 0.5 1 out +solid +1 0.5 2 in +solid +0 0.5 2 out +solid +1 0.5 3 in +solid +1 0.5 0.25 out +solid +0 1 1 conn +solid +0 0 0.75 in +solid +0 1 0.75 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_cooling_schedule.tex b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_cooling_schedule.tex new file mode 100644 index 000000000..3eb005745 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_cooling_schedule.tex @@ -0,0 +1,25 @@ +\section{moCoolingSchedule Class Reference} +\label{classmo_cooling_schedule}\index{moCoolingSchedule@{moCoolingSchedule}} +This class gives the description of a cooling schedule. + + +{\tt \#include $<$moCoolingSchedule.h$>$} + +Inheritance diagram for moCoolingSchedule::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmo_cooling_schedule} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +This class gives the description of a cooling schedule. + +It is only a description... An object that herits from this class is needed to be used in a \doxyref{moSA}{p.}{classmo_s_a}. See \doxyref{moExponentialCoolingSchedule}{p.}{classmo_exponential_cooling_schedule} or \doxyref{moLinearCoolingSchedule}{p.}{classmo_linear_cooling_schedule} for example. + +Definition at line 46 of file moCoolingSchedule.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moCoolingSchedule.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_exponential_cooling_schedule.eps b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_exponential_cooling_schedule.eps new file mode 100644 index 000000000..92ecef949 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_exponential_cooling_schedule.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 406.091 +%%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 1.23125 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 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 +(moExponentialCoolingSchedule) cw +(moCoolingSchedule) cw +(eoUF< double &, bool >) cw +(eoFunctorBase) 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 ----- + + (moExponentialCoolingSchedule) 0 0 box + (moCoolingSchedule) 0 1 box + (eoUF< double &, bool >) 0 2 box + (eoFunctorBase) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_exponential_cooling_schedule.tex b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_exponential_cooling_schedule.tex new file mode 100644 index 000000000..93b0768db --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_exponential_cooling_schedule.tex @@ -0,0 +1,83 @@ +\section{moExponentialCoolingSchedule Class Reference} +\label{classmo_exponential_cooling_schedule}\index{moExponentialCoolingSchedule@{moExponentialCoolingSchedule}} +One of the possible \doxyref{moCoolingSchedule}{p.}{classmo_cooling_schedule}. + + +{\tt \#include $<$moExponentialCoolingSchedule.h$>$} + +Inheritance diagram for moExponentialCoolingSchedule::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmo_exponential_cooling_schedule} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf moExponentialCoolingSchedule} (double \_\-threshold, double \_\-ratio) +\begin{CompactList}\small\item\em Simple constructor. \item\end{CompactList}\item +bool {\bf operator()} (double \&\_\-temperature) +\begin{CompactList}\small\item\em {\bf Function} which proceeds to the cooling. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +double {\bf threshold}\label{classmo_exponential_cooling_schedule_8d4327c0bb33b7121a322279eea97f84} + +\begin{CompactList}\small\item\em The temperature threhold. \item\end{CompactList}\item +double {\bf ratio}\label{classmo_exponential_cooling_schedule_e8f3f87417c1c7253efb938a740846fa} + +\begin{CompactList}\small\item\em The decreasing factor of the temperature. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +One of the possible \doxyref{moCoolingSchedule}{p.}{classmo_cooling_schedule}. + +An other very simple cooling schedule, the temperature decrease according to a ratio while the temperature is greater than a given threshold. + +Definition at line 46 of file moExponentialCoolingSchedule.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moExponentialCoolingSchedule@{moExponentialCoolingSchedule}!moExponentialCoolingSchedule@{moExponentialCoolingSchedule}} +\index{moExponentialCoolingSchedule@{moExponentialCoolingSchedule}!moExponentialCoolingSchedule@{moExponentialCoolingSchedule}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}moExponentialCoolingSchedule::moExponentialCoolingSchedule (double {\em \_\-threshold}, double {\em \_\-ratio})\hspace{0.3cm}{\tt [inline]}}\label{classmo_exponential_cooling_schedule_e60ce9eb5e632f4758ea96ae92a52774} + + +Simple constructor. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-threshold}]the threshold. \item[{\em \_\-ratio}]the ratio used to descrease the temperature. \end{description} +\end{Desc} + + +Definition at line 55 of file moExponentialCoolingSchedule.h. + +\subsection{Member Function Documentation} +\index{moExponentialCoolingSchedule@{moExponentialCoolingSchedule}!operator()@{operator()}} +\index{operator()@{operator()}!moExponentialCoolingSchedule@{moExponentialCoolingSchedule}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}bool moExponentialCoolingSchedule::operator() (double \& {\em \_\-temperature})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_exponential_cooling_schedule_95b075e9786a5cc984ef1bb59a2107e4} + + +{\bf Function} which proceeds to the cooling. + +It decreases the temperature and indicates if it is greater than the threshold. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-temperature}]the current temperature. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]if the new temperature (current temperature $\ast$ ratio) is greater than the threshold. \end{Desc} + + +Implements {\bf eoUF$<$ double \&, bool $>$}. + +Definition at line 65 of file moExponentialCoolingSchedule.h. + +References ratio, and threshold. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moExponentialCoolingSchedule.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_first_impr_select.eps b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_first_impr_select.eps new file mode 100644 index 000000000..7057473a9 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_first_impr_select.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 303.03 +%%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 1.65 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 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 +(moFirstImprSelect< M >) cw +(moMoveSelect< M >) cw +(eoBF< M &, M::EOType::Fitness &, void >) cw +(eoFunctorBase) 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 ----- + + (moFirstImprSelect< M >) 0 0 box + (moMoveSelect< M >) 0 1 box + (eoBF< M &, M::EOType::Fitness &, void >) 0 2 box + (eoFunctorBase) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_first_impr_select.tex b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_first_impr_select.tex new file mode 100644 index 000000000..e729ba49e --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_first_impr_select.tex @@ -0,0 +1,118 @@ +\section{moFirstImprSelect$<$ M $>$ Class Template Reference} +\label{classmo_first_impr_select}\index{moFirstImprSelect@{moFirstImprSelect}} +One possible \doxyref{moMoveSelect}{p.}{classmo_move_select}. + + +{\tt \#include $<$moFirstImprSelect.h$>$} + +Inheritance diagram for moFirstImprSelect$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmo_first_impr_select} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{CompactItemize} +\item +typedef M::EOType::Fitness {\bf Fitness}\label{classmo_first_impr_select_64763ce3e6d2873266624382b407fa5a} + +\begin{CompactList}\small\item\em Alias for the fitness. \item\end{CompactList}\end{CompactItemize} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +virtual void {\bf init} (const {\bf Fitness} \&\_\-fitness) +\begin{CompactList}\small\item\em Procedure which initialise the exploration. \item\end{CompactList}\item +bool {\bf update} (const M \&\_\-move, const {\bf Fitness} \&\_\-fitness) +\begin{CompactList}\small\item\em {\bf Function} that indicates if the current move has not improved the fitness. \item\end{CompactList}\item +void {\bf operator()} (M \&\_\-move, {\bf Fitness} \&\_\-fitness) +\begin{CompactList}\small\item\em Procedure which saved the best move and fitness. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +bool {\bf valid}\label{classmo_first_impr_select_a99c0586ba07449234705c17a258d58c} + +\begin{CompactList}\small\item\em Allow to know if at least one move has improved the solution. \item\end{CompactList}\item +M {\bf best\_\-move}\label{classmo_first_impr_select_dfed419a608dd7c41f07fa1f1279cb8c} + +\begin{CompactList}\small\item\em Best stored movement. \item\end{CompactList}\item +{\bf Fitness} {\bf initial\_\-fitness}\label{classmo_first_impr_select_669f8f2f74e71bf2b7fdabfc9cca2c0e} + +\begin{CompactList}\small\item\em Initial fitness. \item\end{CompactList}\item +{\bf Fitness} {\bf best\_\-fitness}\label{classmo_first_impr_select_287937f5c059b078ccec94e86e0a8238} + +\begin{CompactList}\small\item\em Best stored fitness. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class moFirstImprSelect$<$ M $>$} + +One possible \doxyref{moMoveSelect}{p.}{classmo_move_select}. + +The neighborhood is explored until a move enables an improvment of the current solution. + +Definition at line 48 of file moFirstImprSelect.h. + +\subsection{Member Function Documentation} +\index{moFirstImprSelect@{moFirstImprSelect}!init@{init}} +\index{init@{init}!moFirstImprSelect@{moFirstImprSelect}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ virtual void {\bf moFirstImprSelect}$<$ M $>$::init (const {\bf Fitness} \& {\em \_\-fitness})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_first_impr_select_a923437ecc3db50e7052b002a9a1bbf8} + + +Procedure which initialise the exploration. + +It save the current fitness as the initial value for the fitness. \begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-fitness}]The current fitness. \end{description} +\end{Desc} + + +Implements {\bf moMoveSelect$<$ M $>$} \doxyref{}{p.}{classmo_move_select_58038bd859632c1bd022d23d9792bdca}. + +Definition at line 60 of file moFirstImprSelect.h. + +References moFirstImprSelect$<$ M $>$::initial\_\-fitness, and moFirstImprSelect$<$ M $>$::valid.\index{moFirstImprSelect@{moFirstImprSelect}!update@{update}} +\index{update@{update}!moFirstImprSelect@{moFirstImprSelect}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ bool {\bf moFirstImprSelect}$<$ M $>$::update (const M \& {\em \_\-move}, const {\bf Fitness} \& {\em \_\-fitness})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_first_impr_select_f68b7ee7b35bf7347c16006f0587d313} + + +{\bf Function} that indicates if the current move has not improved the fitness. + +If the given fitness enables an improvment, the move (\doxyref{moMove}{p.}{classmo_move}) should be applied to the current solution. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-move}]a move. \item[{\em \_\-fitness}]a fitness linked to the move. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]true if the move does not improve the fitness. \end{Desc} + + +Implements {\bf moMoveSelect$<$ M $>$} \doxyref{}{p.}{classmo_move_select_5b4d3b2f030cca80c563c3db0c4af404}. + +Definition at line 75 of file moFirstImprSelect.h. + +References moFirstImprSelect$<$ M $>$::best\_\-fitness, moFirstImprSelect$<$ M $>$::best\_\-move, moFirstImprSelect$<$ M $>$::initial\_\-fitness, and moFirstImprSelect$<$ M $>$::valid.\index{moFirstImprSelect@{moFirstImprSelect}!operator()@{operator()}} +\index{operator()@{operator()}!moFirstImprSelect@{moFirstImprSelect}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ void {\bf moFirstImprSelect}$<$ M $>$::operator() (M \& {\em \_\-move}, {\bf Fitness} \& {\em \_\-fitness})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_first_impr_select_976569efd882886cb13184daeba79766} + + +Procedure which saved the best move and fitness. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-move}]the current move (result of the procedure). \item[{\em \_\-fitness}]the current fitness (result of the procedure). \end{description} +\end{Desc} + + +Implements {\bf eoBF$<$ M \&, M::EOType::Fitness \&, void $>$}. + +Definition at line 96 of file moFirstImprSelect.h. + +References moFirstImprSelect$<$ M $>$::best\_\-fitness, moFirstImprSelect$<$ M $>$::best\_\-move, and moFirstImprSelect$<$ M $>$::valid. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moFirstImprSelect.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_fit_comparator.eps b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_fit_comparator.eps new file mode 100644 index 000000000..902d882c9 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_fit_comparator.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 484.848 +%%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 1.03125 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 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 +(moFitComparator< EOT >) cw +(moComparator< EOT >) cw +(eoBF< A1, A2, R >) cw +(eoFunctorBase) 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 ----- + + (moFitComparator< EOT >) 0 0 box + (moComparator< EOT >) 0 1 box + (eoBF< A1, A2, R >) 0 2 box + (eoFunctorBase) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_fit_comparator.tex b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_fit_comparator.tex new file mode 100644 index 000000000..68b8c3725 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_fit_comparator.tex @@ -0,0 +1,51 @@ +\section{moFitComparator$<$ EOT $>$ Class Template Reference} +\label{classmo_fit_comparator}\index{moFitComparator@{moFitComparator}} +Comparison according to the fitness. + + +{\tt \#include $<$moFitComparator.h$>$} + +Inheritance diagram for moFitComparator$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmo_fit_comparator} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +bool {\bf operator()} (const EOT \&\_\-solution1, const EOT \&\_\-solution2) +\begin{CompactList}\small\item\em {\bf Function} which makes the comparison and gives the result. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class moFitComparator$<$ EOT $>$} + +Comparison according to the fitness. + +An EOT is better than an other if its fitness is better. + +Definition at line 46 of file moFitComparator.h. + +\subsection{Member Function Documentation} +\index{moFitComparator@{moFitComparator}!operator()@{operator()}} +\index{operator()@{operator()}!moFitComparator@{moFitComparator}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ bool {\bf moFitComparator}$<$ EOT $>$::operator() (const EOT \& {\em \_\-solution1}, const EOT \& {\em \_\-solution2})\hspace{0.3cm}{\tt [inline]}}\label{classmo_fit_comparator_c920d5a49deb16710daf1e5fcde6b16c} + + +{\bf Function} which makes the comparison and gives the result. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-solution1}]The first solution. \item[{\em \_\-solution2}]The second solution. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]true if the fitness of the first solution is better than the second solution, false else. \end{Desc} + + +Definition at line 56 of file moFitComparator.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moFitComparator.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_fit_sol_continue.eps b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_fit_sol_continue.eps new file mode 100644 index 000000000..020df214d --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_fit_sol_continue.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 441.989 +%%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 1.13125 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 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 +(moFitSolContinue< EOT >) cw +(moSolContinue< EOT >) cw +(eoUF< const EOT &, bool >) cw +(eoFunctorBase) 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 ----- + + (moFitSolContinue< EOT >) 0 0 box + (moSolContinue< EOT >) 0 1 box + (eoUF< const EOT &, bool >) 0 2 box + (eoFunctorBase) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_fit_sol_continue.tex b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_fit_sol_continue.tex new file mode 100644 index 000000000..09420f13f --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_fit_sol_continue.tex @@ -0,0 +1,101 @@ +\section{moFitSolContinue$<$ EOT $>$ Class Template Reference} +\label{classmo_fit_sol_continue}\index{moFitSolContinue@{moFitSolContinue}} +One possible stop criterion for a solution-based heuristic. + + +{\tt \#include $<$moFitSolContinue.h$>$} + +Inheritance diagram for moFitSolContinue$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmo_fit_sol_continue} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{CompactItemize} +\item +typedef EOT::Fitness {\bf Fitness}\label{classmo_fit_sol_continue_369ed94a788d8bdc08d5554f7669376f} + +\begin{CompactList}\small\item\em Alias for the fitness. \item\end{CompactList}\end{CompactItemize} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf moFitSolContinue} ({\bf Fitness} \_\-fitness) +\begin{CompactList}\small\item\em Basic constructor. \item\end{CompactList}\item +bool {\bf operator()} (const EOT \&\_\-solution) +\begin{CompactList}\small\item\em {\bf Function} that activates the stopping criterion. \item\end{CompactList}\item +void {\bf init} () +\begin{CompactList}\small\item\em Procedure which allows to initialise all the stuff needed. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +{\bf Fitness} {\bf fitness}\label{classmo_fit_sol_continue_87d0ba8f2f76f61c89317eed5f094dfc} + +\begin{CompactList}\small\item\em Fitness target. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class moFitSolContinue$<$ EOT $>$} + +One possible stop criterion for a solution-based heuristic. + +The stop criterion corresponds to a fitness threshold gained. + +Definition at line 46 of file moFitSolContinue.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moFitSolContinue@{moFitSolContinue}!moFitSolContinue@{moFitSolContinue}} +\index{moFitSolContinue@{moFitSolContinue}!moFitSolContinue@{moFitSolContinue}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ {\bf moFitSolContinue}$<$ EOT $>$::{\bf moFitSolContinue} ({\bf Fitness} {\em \_\-fitness})\hspace{0.3cm}{\tt [inline]}}\label{classmo_fit_sol_continue_5f0dc5e529e8cd307ff4a1ae982d5b84} + + +Basic constructor. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-fitness}]The fitness to reach. \end{description} +\end{Desc} + + +Definition at line 57 of file moFitSolContinue.h. + +\subsection{Member Function Documentation} +\index{moFitSolContinue@{moFitSolContinue}!operator()@{operator()}} +\index{operator()@{operator()}!moFitSolContinue@{moFitSolContinue}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ bool {\bf moFitSolContinue}$<$ EOT $>$::operator() (const EOT \& {\em \_\-solution})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_fit_sol_continue_ce4e02895c13bfd131fc759adf83798f} + + +{\bf Function} that activates the stopping criterion. + +Indicates if the fitness threshold has not yet been reached. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-solution}]the current solution. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]true or false according to the value of the fitness. \end{Desc} + + +Implements {\bf eoUF$<$ const EOT \&, bool $>$}. + +Definition at line 67 of file moFitSolContinue.h. + +References moFitSolContinue$<$ EOT $>$::fitness.\index{moFitSolContinue@{moFitSolContinue}!init@{init}} +\index{init@{init}!moFitSolContinue@{moFitSolContinue}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void {\bf moFitSolContinue}$<$ EOT $>$::init ()\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_fit_sol_continue_670bd895b4edfcd3aebb40d2295d7f7c} + + +Procedure which allows to initialise all the stuff needed. + +It can be also used to reinitialize all the needed things. + +Implements {\bf moSolContinue$<$ EOT $>$} \doxyref{}{p.}{classmo_sol_continue_064dc966a210f4ffb9515be3f03ca4c7}. + +Definition at line 81 of file moFitSolContinue.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moFitSolContinue.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_gen_sol_continue.eps b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_gen_sol_continue.eps new file mode 100644 index 000000000..c73c60ba3 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_gen_sol_continue.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 441.989 +%%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 1.13125 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 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 +(moGenSolContinue< EOT >) cw +(moSolContinue< EOT >) cw +(eoUF< const EOT &, bool >) cw +(eoFunctorBase) 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 ----- + + (moGenSolContinue< EOT >) 0 0 box + (moSolContinue< EOT >) 0 1 box + (eoUF< const EOT &, bool >) 0 2 box + (eoFunctorBase) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_gen_sol_continue.tex b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_gen_sol_continue.tex new file mode 100644 index 000000000..61d36459e --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_gen_sol_continue.tex @@ -0,0 +1,100 @@ +\section{moGenSolContinue$<$ EOT $>$ Class Template Reference} +\label{classmo_gen_sol_continue}\index{moGenSolContinue@{moGenSolContinue}} +One possible stop criterion for a solution-based heuristic. + + +{\tt \#include $<$moGenSolContinue.h$>$} + +Inheritance diagram for moGenSolContinue$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmo_gen_sol_continue} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf moGenSolContinue} (unsigned int \_\-generationMaximumNumber) +\begin{CompactList}\small\item\em Simple constructor. \item\end{CompactList}\item +bool {\bf operator()} (const EOT \&\_\-solution) +\begin{CompactList}\small\item\em {\bf Function} that activates the stop criterion. \item\end{CompactList}\item +void {\bf init} () +\begin{CompactList}\small\item\em Procedure which allows to initialise the generation counter. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +unsigned int {\bf generationMaximumNumber}\label{classmo_gen_sol_continue_c838d923436b71c584891c1cbe3f47ba} + +\begin{CompactList}\small\item\em Iteration maximum number. \item\end{CompactList}\item +unsigned int {\bf generationNumber}\label{classmo_gen_sol_continue_af0b3e5ca3ceee0d843670955c8f1e58} + +\begin{CompactList}\small\item\em Iteration current number. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class moGenSolContinue$<$ EOT $>$} + +One possible stop criterion for a solution-based heuristic. + +The stop criterion corresponds to a maximum number of iteration. + +Definition at line 46 of file moGenSolContinue.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moGenSolContinue@{moGenSolContinue}!moGenSolContinue@{moGenSolContinue}} +\index{moGenSolContinue@{moGenSolContinue}!moGenSolContinue@{moGenSolContinue}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ {\bf moGenSolContinue}$<$ EOT $>$::{\bf moGenSolContinue} (unsigned int {\em \_\-generationMaximumNumber})\hspace{0.3cm}{\tt [inline]}}\label{classmo_gen_sol_continue_8e2456421b641d38e3f800f3bbe45159} + + +Simple constructor. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-generationMaximumNumber}]The maximum number of generations. \end{description} +\end{Desc} + + +Definition at line 54 of file moGenSolContinue.h. + +\subsection{Member Function Documentation} +\index{moGenSolContinue@{moGenSolContinue}!operator()@{operator()}} +\index{operator()@{operator()}!moGenSolContinue@{moGenSolContinue}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ bool {\bf moGenSolContinue}$<$ EOT $>$::operator() (const EOT \& {\em \_\-solution})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_gen_sol_continue_2fd5f2f10b6d6208412582578fad48ea} + + +{\bf Function} that activates the stop criterion. + +Increments the counter and returns TRUE if the current number of iteration is lower than the given maximum number of iterations. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-solution}]The current solution. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]true or false according to the current generation number. \end{Desc} + + +Implements {\bf eoUF$<$ const EOT \&, bool $>$}. + +Definition at line 66 of file moGenSolContinue.h. + +References moGenSolContinue$<$ EOT $>$::generationMaximumNumber, and moGenSolContinue$<$ EOT $>$::generationNumber.\index{moGenSolContinue@{moGenSolContinue}!init@{init}} +\index{init@{init}!moGenSolContinue@{moGenSolContinue}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void {\bf moGenSolContinue}$<$ EOT $>$::init ()\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_gen_sol_continue_6c5db8182157584b56507cc9075602d4} + + +Procedure which allows to initialise the generation counter. + +It can also be used to reset the iteration counter. + +Implements {\bf moSolContinue$<$ EOT $>$} \doxyref{}{p.}{classmo_sol_continue_064dc966a210f4ffb9515be3f03ca4c7}. + +Definition at line 78 of file moGenSolContinue.h. + +References moGenSolContinue$<$ EOT $>$::generationNumber. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moGenSolContinue.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_h_c.tex b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_h_c.tex new file mode 100644 index 000000000..a5ca89321 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_h_c.tex @@ -0,0 +1,110 @@ +\section{moHC$<$ M $>$ Class Template Reference} +\label{classmo_h_c}\index{moHC@{moHC}} +Hill Climbing (HC). + + +{\tt \#include $<$moHC.h$>$} + +Inherits {\bf moAlgo$<$ M::EOType $>$}. + +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf moHC} ({\bf moMoveInit}$<$ M $>$ \&\_\-move\_\-initializer, {\bf moNextMove}$<$ M $>$ \&\_\-next\_\-move\_\-generator, {\bf moMoveIncrEval}$<$ M $>$ \&\_\-incremental\_\-evaluation, {\bf moMoveSelect}$<$ M $>$ \&\_\-move\_\-selection, {\bf eoEvalFunc}$<$ {\bf EOT} $>$ \&\_\-full\_\-evaluation) +\begin{CompactList}\small\item\em Full constructor. \item\end{CompactList}\item +{\bf moHC} ({\bf moMoveExpl}$<$ M $>$ \&\_\-move\_\-explorer, {\bf eoEvalFunc}$<$ {\bf EOT} $>$ \&\_\-full\_\-evaluation) +\begin{CompactList}\small\item\em Light constructor. \item\end{CompactList}\item +bool {\bf operator()} ({\bf EOT} \&\_\-solution) +\begin{CompactList}\small\item\em {\bf Function} which launches the HC. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Types} +\begin{CompactItemize} +\item +typedef M::EOType {\bf EOT}\label{classmo_h_c_d219296ede03c679646bce2fe8ff96cb} + +\begin{CompactList}\small\item\em Alias for the type. \item\end{CompactList}\item +typedef EOT::Fitness {\bf Fitness}\label{classmo_h_c_56487c97a7cf0c423cc879d1bbd45027} + +\begin{CompactList}\small\item\em Alias for the fitness. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +{\bf moMoveExpl}$<$ M $>$ \& {\bf move\_\-explorer}\label{classmo_h_c_ec4e702a6ec240f40ff9d262c36d080b} + +\begin{CompactList}\small\item\em Complete exploration of the neighborhood. \item\end{CompactList}\item +{\bf eoEvalFunc}$<$ {\bf EOT} $>$ \& {\bf full\_\-evaluation}\label{classmo_h_c_1175c588c19d3658cfc690d5f3f8d825} + +\begin{CompactList}\small\item\em A full evaluation function. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class moHC$<$ M $>$} + +Hill Climbing (HC). + +Class which describes the algorithm for a hill climbing. + +Definition at line 49 of file moHC.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moHC@{moHC}!moHC@{moHC}} +\index{moHC@{moHC}!moHC@{moHC}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ {\bf moHC}$<$ M $>$::{\bf moHC} ({\bf moMoveInit}$<$ M $>$ \& {\em \_\-move\_\-initializer}, {\bf moNextMove}$<$ M $>$ \& {\em \_\-next\_\-move\_\-generator}, {\bf moMoveIncrEval}$<$ M $>$ \& {\em \_\-incremental\_\-evaluation}, {\bf moMoveSelect}$<$ M $>$ \& {\em \_\-move\_\-selection}, {\bf eoEvalFunc}$<$ {\bf EOT} $>$ \& {\em \_\-full\_\-evaluation})\hspace{0.3cm}{\tt [inline]}}\label{classmo_h_c_44a35bd30df6e79cff95a31b84889bd7} + + +Full constructor. + +All the boxes are given in order the HC to use a \doxyref{moHCMoveLoopExpl}{p.}{classmo_h_c_move_loop_expl}. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-move\_\-initializer}]a move initialiser. \item[{\em \_\-next\_\-move\_\-generator}]a neighborhood explorer. \item[{\em \_\-incremental\_\-evaluation}]a (generally) efficient evaluation function. \item[{\em \_\-move\_\-selection}]a move selector. \item[{\em \_\-full\_\-evaluation}]a full evaluation function. \end{description} +\end{Desc} + + +Definition at line 69 of file moHC.h.\index{moHC@{moHC}!moHC@{moHC}} +\index{moHC@{moHC}!moHC@{moHC}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ {\bf moHC}$<$ M $>$::{\bf moHC} ({\bf moMoveExpl}$<$ M $>$ \& {\em \_\-move\_\-explorer}, {\bf eoEvalFunc}$<$ {\bf EOT} $>$ \& {\em \_\-full\_\-evaluation})\hspace{0.3cm}{\tt [inline]}}\label{classmo_h_c_5002f969ef0a4d959610158fc62f137a} + + +Light constructor. + +This constructor allow to use another \doxyref{moMoveExpl}{p.}{classmo_move_expl} (generally not a \doxyref{moHCMoveLoopExpl}{p.}{classmo_h_c_move_loop_expl}). + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-move\_\-explorer}]a complete explorer. \item[{\em \_\-full\_\-evaluation}]a full evaluation function. \end{description} +\end{Desc} + + +Definition at line 82 of file moHC.h. + +\subsection{Member Function Documentation} +\index{moHC@{moHC}!operator()@{operator()}} +\index{operator()@{operator()}!moHC@{moHC}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ bool {\bf moHC}$<$ M $>$::operator() ({\bf EOT} \& {\em \_\-solution})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_h_c_b739f9586b647e32bf31605066f984ad} + + +{\bf Function} which launches the HC. + +The HC has to improve a current solution. As the \doxyref{moSA}{p.}{classmo_s_a} and the mo TS, it can be used for HYBRIDATION in an evolutionnary algorithm. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-solution}]a current solution to improve. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]true. \end{Desc} + + +Implements {\bf eoUF$<$ M::EOType \&, bool $>$}. + +Definition at line 94 of file moHC.h. + +References moHC$<$ M $>$::full\_\-evaluation, and moHC$<$ M $>$::move\_\-explorer. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moHC.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_h_c_move_loop_expl.eps b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_h_c_move_loop_expl.eps new file mode 100644 index 000000000..1240e010d --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_h_c_move_loop_expl.eps @@ -0,0 +1,215 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 327.869 +%%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 1.525 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 5 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 +(moHCMoveLoopExpl< M >) cw +(moMoveLoopExpl< M >) cw +(moMoveExpl< M >) cw +(eoBF< const M::EOType &, M::EOType &, void >) cw +(eoFunctorBase) 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 ----- + + (moHCMoveLoopExpl< M >) 0 0 box + (moMoveLoopExpl< M >) 0 1 box + (moMoveExpl< M >) 0 2 box + (eoBF< const M::EOType &, M::EOType &, void >) 0 3 box + (eoFunctorBase) 0 4 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in +solid +0 0 3 out +solid +1 0 4 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_h_c_move_loop_expl.tex b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_h_c_move_loop_expl.tex new file mode 100644 index 000000000..8a315110c --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_h_c_move_loop_expl.tex @@ -0,0 +1,98 @@ +\section{moHCMoveLoopExpl$<$ M $>$ Class Template Reference} +\label{classmo_h_c_move_loop_expl}\index{moHCMoveLoopExpl@{moHCMoveLoopExpl}} +Iterative explorer used by a \doxyref{moHC}{p.}{classmo_h_c}. + + +{\tt \#include $<$moHCMoveLoopExpl.h$>$} + +Inheritance diagram for moHCMoveLoopExpl$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=5cm]{classmo_h_c_move_loop_expl} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf moHCMoveLoopExpl} ({\bf moMoveInit}$<$ M $>$ \&\_\-move\_\-initializer, {\bf moNextMove}$<$ M $>$ \&\_\-next\_\-move\_\-generator, {\bf moMoveIncrEval}$<$ M $>$ \&\_\-incremental\_\-evaluation, {\bf moMoveSelect}$<$ M $>$ \&\_\-move\_\-selection) +\begin{CompactList}\small\item\em Constructor. \item\end{CompactList}\item +void {\bf operator()} (const {\bf EOT} \&\_\-old\_\-solution, {\bf EOT} \&\_\-new\_\-solution) +\begin{CompactList}\small\item\em Procedure which launches the explorer. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Types} +\begin{CompactItemize} +\item +typedef M::EOType {\bf EOT}\label{classmo_h_c_move_loop_expl_077befd4106c201eafd3ea22bcea2fe9} + +\begin{CompactList}\small\item\em Alias for the type. \item\end{CompactList}\item +typedef M::EOType::Fitness {\bf Fitness}\label{classmo_h_c_move_loop_expl_f24871224316d5549b9013a2d27ab465} + +\begin{CompactList}\small\item\em Alias for the fitness. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +{\bf moMoveInit}$<$ M $>$ \& {\bf move\_\-initializer}\label{classmo_h_c_move_loop_expl_17506f3f1172714f9adbfa4e8a15953a} + +\begin{CompactList}\small\item\em Move initialiser. \item\end{CompactList}\item +{\bf moNextMove}$<$ M $>$ \& {\bf next\_\-move\_\-generator}\label{classmo_h_c_move_loop_expl_fdc44d40d8859bae1d7b92e77f36aa30} + +\begin{CompactList}\small\item\em Neighborhood explorer. \item\end{CompactList}\item +{\bf moMoveIncrEval}$<$ M $>$ \& {\bf incremental\_\-evaluation}\label{classmo_h_c_move_loop_expl_a044b28f972d007a22736b646d86f265} + +\begin{CompactList}\small\item\em (generally) Efficient evaluation. \item\end{CompactList}\item +{\bf moMoveSelect}$<$ M $>$ \& {\bf move\_\-selection}\label{classmo_h_c_move_loop_expl_5f0532e0ee8ef8ecaeeb4e56342be443} + +\begin{CompactList}\small\item\em Move selector. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class moHCMoveLoopExpl$<$ M $>$} + +Iterative explorer used by a \doxyref{moHC}{p.}{classmo_h_c}. + +Definition at line 47 of file moHCMoveLoopExpl.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moHCMoveLoopExpl@{moHCMoveLoopExpl}!moHCMoveLoopExpl@{moHCMoveLoopExpl}} +\index{moHCMoveLoopExpl@{moHCMoveLoopExpl}!moHCMoveLoopExpl@{moHCMoveLoopExpl}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ {\bf moHCMoveLoopExpl}$<$ M $>$::{\bf moHCMoveLoopExpl} ({\bf moMoveInit}$<$ M $>$ \& {\em \_\-move\_\-initializer}, {\bf moNextMove}$<$ M $>$ \& {\em \_\-next\_\-move\_\-generator}, {\bf moMoveIncrEval}$<$ M $>$ \& {\em \_\-incremental\_\-evaluation}, {\bf moMoveSelect}$<$ M $>$ \& {\em \_\-move\_\-selection})\hspace{0.3cm}{\tt [inline]}}\label{classmo_h_c_move_loop_expl_fac2eb6695ba1b797ffab4f290d760b8} + + +Constructor. + +All the boxes have to be specified. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-move\_\-initializer}]The move initialiser. \item[{\em \_\-next\_\-move\_\-generator}]The neighbourhood explorer. \item[{\em \_\-incremental\_\-evaluation}](generally) Efficient evaluation function. \item[{\em \_\-move\_\-selection}]The move selector. \end{description} +\end{Desc} + + +Definition at line 66 of file moHCMoveLoopExpl.h. + +\subsection{Member Function Documentation} +\index{moHCMoveLoopExpl@{moHCMoveLoopExpl}!operator()@{operator()}} +\index{operator()@{operator()}!moHCMoveLoopExpl@{moHCMoveLoopExpl}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ void {\bf moHCMoveLoopExpl}$<$ M $>$::operator() (const {\bf EOT} \& {\em \_\-old\_\-solution}, {\bf EOT} \& {\em \_\-new\_\-solution})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_h_c_move_loop_expl_fe9362c10d74a5e6ed09b56345396192} + + +Procedure which launches the explorer. + +The exploration starts from an old solution and provides a new solution. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-old\_\-solution}]The current solution. \item[{\em \_\-new\_\-solution}]The new solution (result of the procedure). \end{description} +\end{Desc} + + +Implements {\bf eoBF$<$ const M::EOType \&, M::EOType \&, void $>$}. + +Definition at line 79 of file moHCMoveLoopExpl.h. + +References moHCMoveLoopExpl$<$ M $>$::incremental\_\-evaluation, moHCMoveLoopExpl$<$ M $>$::move\_\-initializer, moHCMoveLoopExpl$<$ M $>$::move\_\-selection, and moHCMoveLoopExpl$<$ M $>$::next\_\-move\_\-generator. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moHCMoveLoopExpl.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_i_l_s.tex b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_i_l_s.tex new file mode 100644 index 000000000..9494ef43a --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_i_l_s.tex @@ -0,0 +1,149 @@ +\section{moILS$<$ M $>$ Class Template Reference} +\label{classmo_i_l_s}\index{moILS@{moILS}} +Iterated Local Search (ILS). + + +{\tt \#include $<$moILS.h$>$} + +Inherits {\bf moAlgo$<$ M::EOType $>$}. + +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf moILS} ({\bf moAlgo}$<$ {\bf EOT} $>$ \&\_\-algorithm, {\bf moSolContinue}$<$ {\bf EOT} $>$ \&\_\-continue, {\bf moComparator}$<$ {\bf EOT} $>$ \&\_\-acceptance\_\-criterion, {\bf eoMonOp}$<$ {\bf EOT} $>$ \&\_\-perturbation, {\bf eoEvalFunc}$<$ {\bf EOT} $>$ \&\_\-full\_\-evaluation) +\begin{CompactList}\small\item\em Generic constructor. \item\end{CompactList}\item +{\bf moILS} ({\bf moMoveInit}$<$ M $>$ \&\_\-move\_\-initializer, {\bf moNextMove}$<$ M $>$ \&\_\-next\_\-move\_\-generator, {\bf moMoveIncrEval}$<$ M $>$ \&\_\-incremental\_\-evaluation, {\bf moMoveSelect}$<$ M $>$ \&\_\-move\_\-selection, {\bf moSolContinue}$<$ {\bf EOT} $>$ \&\_\-continue, {\bf moComparator}$<$ {\bf EOT} $>$ \&\_\-acceptance\_\-criterion, {\bf eoMonOp}$<$ {\bf EOT} $>$ \&\_\-perturbation, {\bf eoEvalFunc}$<$ {\bf EOT} $>$ \&\_\-full\_\-evaluation) +\begin{CompactList}\small\item\em Constructor for using a \doxyref{moHC}{p.}{classmo_h_c} for the \doxyref{moAlgo}{p.}{classmo_algo}. \item\end{CompactList}\item +{\bf moILS} ({\bf moMoveInit}$<$ M $>$ \&\_\-move\_\-initializer, {\bf moNextMove}$<$ M $>$ \&\_\-next\_\-move\_\-generator, {\bf moMoveIncrEval}$<$ M $>$ \&\_\-incremental\_\-evaluation, {\bf moTabuList}$<$ M $>$ \&\_\-tabu\_\-list, {\bf moAspirCrit}$<$ M $>$ \&\_\-aspiration\_\-criterion, {\bf moSolContinue}$<$ {\bf EOT} $>$ \&\_\-moTS\_\-continue, {\bf moSolContinue}$<$ {\bf EOT} $>$ \&\_\-continue, {\bf moComparator}$<$ {\bf EOT} $>$ \&\_\-acceptance\_\-criterion, {\bf eoMonOp}$<$ {\bf EOT} $>$ \&\_\-perturbation, {\bf eoEvalFunc}$<$ {\bf EOT} $>$ \&\_\-full\_\-evaluation) +\begin{CompactList}\small\item\em Constructor for using a \doxyref{moTS}{p.}{classmo_t_s} for the \doxyref{moAlgo}{p.}{classmo_algo}. \item\end{CompactList}\item +{\bf moILS} ({\bf moRandMove}$<$ M $>$ \&\_\-random\_\-move\_\-generator, {\bf moMoveIncrEval}$<$ M $>$ \&\_\-incremental\_\-evaluation, {\bf moSolContinue}$<$ {\bf EOT} $>$ \&\_\-moSA\_\-continue, double \_\-initial\_\-temperature, {\bf moCoolingSchedule} \&\_\-cooling\_\-schedule, {\bf moSolContinue}$<$ {\bf EOT} $>$ \&\_\-continue, {\bf moComparator}$<$ {\bf EOT} $>$ \&\_\-acceptance\_\-criterion, {\bf eoMonOp}$<$ {\bf EOT} $>$ \&\_\-perturbation, {\bf eoEvalFunc}$<$ {\bf EOT} $>$ \&\_\-full\_\-evaluation) +\begin{CompactList}\small\item\em Constructor for using a \doxyref{moSA}{p.}{classmo_s_a} for the \doxyref{moAlgo}{p.}{classmo_algo}. \item\end{CompactList}\item +bool {\bf operator()} ({\bf EOT} \&\_\-solution) +\begin{CompactList}\small\item\em {\bf Function} which launches the ILS. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Types} +\begin{CompactItemize} +\item +typedef M::EOType {\bf EOT}\label{classmo_i_l_s_c81bafc611e4d4fd44347cf7162198c7} + +\begin{CompactList}\small\item\em Alias for the type. \item\end{CompactList}\item +typedef EOT::Fitness {\bf Fitness}\label{classmo_i_l_s_8c464a9eae064a78eff75d4c722b619c} + +\begin{CompactList}\small\item\em Alias for the fitness. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +{\bf moAlgo}$<$ {\bf EOT} $>$ \& {\bf algorithm}\label{classmo_i_l_s_5651a4d94b59d523d341d5d6e24ca311} + +\begin{CompactList}\small\item\em The solution based heuristic. \item\end{CompactList}\item +{\bf moSolContinue}$<$ {\bf EOT} $>$ \& {\bf continu}\label{classmo_i_l_s_30edab439401d7ec04fd8d37b4513d94} + +\begin{CompactList}\small\item\em The stopping criterion. \item\end{CompactList}\item +{\bf moComparator}$<$ {\bf EOT} $>$ \& {\bf acceptance\_\-criterion}\label{classmo_i_l_s_295f6d0342c67bd3dc4cb82e2adc26be} + +\begin{CompactList}\small\item\em The acceptance criterion. \item\end{CompactList}\item +{\bf eoMonOp}$<$ {\bf EOT} $>$ \& {\bf perturbation}\label{classmo_i_l_s_f667a1bda06b6d221292df9aba3db8a2} + +\begin{CompactList}\small\item\em The perturbation generator. \item\end{CompactList}\item +{\bf eoEvalFunc}$<$ {\bf EOT} $>$ \& {\bf full\_\-evaluation}\label{classmo_i_l_s_8e8c383ac6ec34aaf071fa18bb54be67} + +\begin{CompactList}\small\item\em The full evaluation function. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class moILS$<$ M $>$} + +Iterated Local Search (ILS). + +Class which describes the algorithm for a iterated local search. + +Definition at line 50 of file moILS.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moILS@{moILS}!moILS@{moILS}} +\index{moILS@{moILS}!moILS@{moILS}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ {\bf moILS}$<$ M $>$::{\bf moILS} ({\bf moAlgo}$<$ {\bf EOT} $>$ \& {\em \_\-algorithm}, {\bf moSolContinue}$<$ {\bf EOT} $>$ \& {\em \_\-continue}, {\bf moComparator}$<$ {\bf EOT} $>$ \& {\em \_\-acceptance\_\-criterion}, {\bf eoMonOp}$<$ {\bf EOT} $>$ \& {\em \_\-perturbation}, {\bf eoEvalFunc}$<$ {\bf EOT} $>$ \& {\em \_\-full\_\-evaluation})\hspace{0.3cm}{\tt [inline]}}\label{classmo_i_l_s_c83f81ba0836ae262305efa15eeb3da2} + + +Generic constructor. + +Generic constructor using a \doxyref{moAlgo}{p.}{classmo_algo} + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-algorithm}]The solution based heuristic to use. \item[{\em \_\-continue}]The stopping criterion. \item[{\em \_\-acceptance\_\-criterion}]The acceptance criterion. \item[{\em \_\-perturbation}]The pertubation generator. \item[{\em \_\-full\_\-evaluation}]The evaluation function. \end{description} +\end{Desc} + + +Definition at line 70 of file moILS.h.\index{moILS@{moILS}!moILS@{moILS}} +\index{moILS@{moILS}!moILS@{moILS}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ {\bf moILS}$<$ M $>$::{\bf moILS} ({\bf moMoveInit}$<$ M $>$ \& {\em \_\-move\_\-initializer}, {\bf moNextMove}$<$ M $>$ \& {\em \_\-next\_\-move\_\-generator}, {\bf moMoveIncrEval}$<$ M $>$ \& {\em \_\-incremental\_\-evaluation}, {\bf moMoveSelect}$<$ M $>$ \& {\em \_\-move\_\-selection}, {\bf moSolContinue}$<$ {\bf EOT} $>$ \& {\em \_\-continue}, {\bf moComparator}$<$ {\bf EOT} $>$ \& {\em \_\-acceptance\_\-criterion}, {\bf eoMonOp}$<$ {\bf EOT} $>$ \& {\em \_\-perturbation}, {\bf eoEvalFunc}$<$ {\bf EOT} $>$ \& {\em \_\-full\_\-evaluation})\hspace{0.3cm}{\tt [inline]}}\label{classmo_i_l_s_6d684a1d13ad224a911c8b0277812297} + + +Constructor for using a \doxyref{moHC}{p.}{classmo_h_c} for the \doxyref{moAlgo}{p.}{classmo_algo}. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-move\_\-initializer}]The move initialisation (for the \doxyref{moHC}{p.}{classmo_h_c}). \item[{\em \_\-next\_\-move\_\-generator}]The move generator (for the \doxyref{moHC}{p.}{classmo_h_c}). \item[{\em \_\-incremental\_\-evaluation}]The partial evaluation function (for the \doxyref{moHC}{p.}{classmo_h_c}). \item[{\em \_\-move\_\-selection}]The move selection strategy (for the \doxyref{moHC}{p.}{classmo_h_c}). \item[{\em \_\-continue}]The stopping criterion. \item[{\em \_\-acceptance\_\-criterion}]The acceptance criterion. \item[{\em \_\-perturbation}]The pertubation generator. \item[{\em \_\-full\_\-evaluation}]The evaluation function. \end{description} +\end{Desc} + + +Definition at line 87 of file moILS.h.\index{moILS@{moILS}!moILS@{moILS}} +\index{moILS@{moILS}!moILS@{moILS}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ {\bf moILS}$<$ M $>$::{\bf moILS} ({\bf moMoveInit}$<$ M $>$ \& {\em \_\-move\_\-initializer}, {\bf moNextMove}$<$ M $>$ \& {\em \_\-next\_\-move\_\-generator}, {\bf moMoveIncrEval}$<$ M $>$ \& {\em \_\-incremental\_\-evaluation}, {\bf moTabuList}$<$ M $>$ \& {\em \_\-tabu\_\-list}, {\bf moAspirCrit}$<$ M $>$ \& {\em \_\-aspiration\_\-criterion}, {\bf moSolContinue}$<$ {\bf EOT} $>$ \& {\em \_\-moTS\_\-continue}, {\bf moSolContinue}$<$ {\bf EOT} $>$ \& {\em \_\-continue}, {\bf moComparator}$<$ {\bf EOT} $>$ \& {\em \_\-acceptance\_\-criterion}, {\bf eoMonOp}$<$ {\bf EOT} $>$ \& {\em \_\-perturbation}, {\bf eoEvalFunc}$<$ {\bf EOT} $>$ \& {\em \_\-full\_\-evaluation})\hspace{0.3cm}{\tt [inline]}}\label{classmo_i_l_s_740ac81a0d06eb471592ba0861d3a6d7} + + +Constructor for using a \doxyref{moTS}{p.}{classmo_t_s} for the \doxyref{moAlgo}{p.}{classmo_algo}. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-move\_\-initializer}]The move initialisation (for the \doxyref{moTS}{p.}{classmo_t_s}). \item[{\em \_\-next\_\-move\_\-generator}]The move generator (for the \doxyref{moTS}{p.}{classmo_t_s}). \item[{\em \_\-incremental\_\-evaluation}]The partial evaluation function (for the \doxyref{moTS}{p.}{classmo_t_s}). \item[{\em \_\-tabu\_\-list}]The tabu list (for the \doxyref{moTS}{p.}{classmo_t_s} !!!!). \item[{\em \_\-aspiration\_\-criterion}]The aspiration criterion (for the \doxyref{moTS}{p.}{classmo_t_s}). \item[{\em \_\-moTS\_\-continue}]The stopping criterion (for the \doxyref{moTS}{p.}{classmo_t_s}). \item[{\em \_\-continue}]The stopping criterion. \item[{\em \_\-acceptance\_\-criterion}]The acceptance criterion. \item[{\em \_\-perturbation}]The pertubation generator. \item[{\em \_\-full\_\-evaluation}]The evaluation function. \end{description} +\end{Desc} + + +Definition at line 108 of file moILS.h.\index{moILS@{moILS}!moILS@{moILS}} +\index{moILS@{moILS}!moILS@{moILS}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ {\bf moILS}$<$ M $>$::{\bf moILS} ({\bf moRandMove}$<$ M $>$ \& {\em \_\-random\_\-move\_\-generator}, {\bf moMoveIncrEval}$<$ M $>$ \& {\em \_\-incremental\_\-evaluation}, {\bf moSolContinue}$<$ {\bf EOT} $>$ \& {\em \_\-moSA\_\-continue}, double {\em \_\-initial\_\-temperature}, {\bf moCoolingSchedule} \& {\em \_\-cooling\_\-schedule}, {\bf moSolContinue}$<$ {\bf EOT} $>$ \& {\em \_\-continue}, {\bf moComparator}$<$ {\bf EOT} $>$ \& {\em \_\-acceptance\_\-criterion}, {\bf eoMonOp}$<$ {\bf EOT} $>$ \& {\em \_\-perturbation}, {\bf eoEvalFunc}$<$ {\bf EOT} $>$ \& {\em \_\-full\_\-evaluation})\hspace{0.3cm}{\tt [inline]}}\label{classmo_i_l_s_36bab16abf36957dac36c467b86385bc} + + +Constructor for using a \doxyref{moSA}{p.}{classmo_s_a} for the \doxyref{moAlgo}{p.}{classmo_algo}. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-random\_\-move\_\-generator}]The random move generator (for the \doxyref{moSA}{p.}{classmo_s_a}). \item[{\em \_\-incremental\_\-evaluation}]The partial evaluation function (for the \doxyref{moSA}{p.}{classmo_s_a}). \item[{\em \_\-moSA\_\-continue}]The stopping criterion (for the \doxyref{moSA}{p.}{classmo_s_a}). \item[{\em \_\-initial\_\-temperature}]The initial temperature (for the \doxyref{moSA}{p.}{classmo_s_a}). \item[{\em \_\-cooling\_\-schedule}]The cooling schedule (for the \doxyref{moSA}{p.}{classmo_s_a}). \item[{\em \_\-continue}]The stopping criterion. \item[{\em \_\-acceptance\_\-criterion}]The acceptance criterion. \item[{\em \_\-perturbation}]The pertubation generator. \item[{\em \_\-full\_\-evaluation}]The evaluation function. \end{description} +\end{Desc} + + +Definition at line 130 of file moILS.h. + +\subsection{Member Function Documentation} +\index{moILS@{moILS}!operator()@{operator()}} +\index{operator()@{operator()}!moILS@{moILS}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ bool {\bf moILS}$<$ M $>$::operator() ({\bf EOT} \& {\em \_\-solution})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_i_l_s_3f6b950e5a6c363f04b8d4c259502488} + + +{\bf Function} which launches the ILS. + +The ILS has to improve a current solution. As the \doxyref{moSA}{p.}{classmo_s_a}, the \doxyref{moTS}{p.}{classmo_t_s} and the \doxyref{moHC}{p.}{classmo_h_c}, it can be used for HYBRIDATION in an evolutionnary algorithm. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-solution}]a current solution to improve. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]true. \end{Desc} + + +Implements {\bf eoUF$<$ M::EOType \&, bool $>$}. + +Definition at line 146 of file moILS.h. + +References moILS$<$ M $>$::acceptance\_\-criterion, moILS$<$ M $>$::algorithm, moILS$<$ M $>$::continu, moILS$<$ M $>$::full\_\-evaluation, and moILS$<$ M $>$::perturbation. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moILS.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_impr_best_fit_aspir_crit.eps b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_impr_best_fit_aspir_crit.eps new file mode 100644 index 000000000..a00a3c3cb --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_impr_best_fit_aspir_crit.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 437.158 +%%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 1.14375 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 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 +(moImprBestFitAspirCrit< M >) cw +(moAspirCrit< M >) cw +(eoBF< A1, A2, R >) cw +(eoFunctorBase) 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 ----- + + (moImprBestFitAspirCrit< M >) 0 0 box + (moAspirCrit< M >) 0 1 box + (eoBF< A1, A2, R >) 0 2 box + (eoFunctorBase) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_impr_best_fit_aspir_crit.tex b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_impr_best_fit_aspir_crit.tex new file mode 100644 index 000000000..370288469 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_impr_best_fit_aspir_crit.tex @@ -0,0 +1,76 @@ +\section{moImprBestFitAspirCrit$<$ M $>$ Class Template Reference} +\label{classmo_impr_best_fit_aspir_crit}\index{moImprBestFitAspirCrit@{moImprBestFitAspirCrit}} +One of the possible \doxyref{moAspirCrit}{p.}{classmo_aspir_crit}. + + +{\tt \#include $<$moImprBestFitAspirCrit.h$>$} + +Inheritance diagram for moImprBestFitAspirCrit$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmo_impr_best_fit_aspir_crit} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{CompactItemize} +\item +typedef M::EOType::Fitness {\bf Fitness}\label{classmo_impr_best_fit_aspir_crit_0bc1a8c9af99781e662570c04750cca8} + +\begin{CompactList}\small\item\em Alias for the fitness. \item\end{CompactList}\end{CompactItemize} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf moImprBestFitAspirCrit} ()\label{classmo_impr_best_fit_aspir_crit_e2c697a5cf3a7696e38bb52b6694a340} + +\begin{CompactList}\small\item\em Contructor. \item\end{CompactList}\item +void {\bf init} ()\label{classmo_impr_best_fit_aspir_crit_ffa451a14ff4ea86fb8bd9fdbc348630} + +\begin{CompactList}\small\item\em Initialisation procedure. \item\end{CompactList}\item +bool {\bf operator()} (const M \&\_\-move, const {\bf Fitness} \&\_\-fitness) +\begin{CompactList}\small\item\em {\bf Function} that indicates if the current fitness is better that the already saved fitness. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +{\bf Fitness} {\bf best\_\-fitness}\label{classmo_impr_best_fit_aspir_crit_03230e8672389de65aacd2bf7b6c1184} + +\begin{CompactList}\small\item\em Best fitness found until now. \item\end{CompactList}\item +bool {\bf first\_\-time}\label{classmo_impr_best_fit_aspir_crit_2d5226c7dd661b33011402dbbbe78265} + +\begin{CompactList}\small\item\em Indicates that a fitness has been already saved or not. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class moImprBestFitAspirCrit$<$ M $>$} + +One of the possible \doxyref{moAspirCrit}{p.}{classmo_aspir_crit}. + +This criterion is satisfied when a given fitness is the best ever considered. + +Definition at line 47 of file moImprBestFitAspirCrit.h. + +\subsection{Member Function Documentation} +\index{moImprBestFitAspirCrit@{moImprBestFitAspirCrit}!operator()@{operator()}} +\index{operator()@{operator()}!moImprBestFitAspirCrit@{moImprBestFitAspirCrit}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ bool {\bf moImprBestFitAspirCrit}$<$ M $>$::operator() (const M \& {\em \_\-move}, const {\bf Fitness} \& {\em \_\-fitness})\hspace{0.3cm}{\tt [inline]}}\label{classmo_impr_best_fit_aspir_crit_b6e5e96d57a6b846033fc22a9951b067} + + +{\bf Function} that indicates if the current fitness is better that the already saved fitness. + +The first time, the function only saved the current move and fitness. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-move}]A move. \item[{\em \_\-fitness}]A fitness linked to the move. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]true The first time and if \_\-fitntess $>$ best\_\-fitness, else false. \end{Desc} + + +Definition at line 75 of file moImprBestFitAspirCrit.h. + +References moImprBestFitAspirCrit$<$ M $>$::best\_\-fitness, and moImprBestFitAspirCrit$<$ M $>$::first\_\-time. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moImprBestFitAspirCrit.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_it_rand_next_move.eps b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_it_rand_next_move.eps new file mode 100644 index 000000000..5f2df0014 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_it_rand_next_move.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 490.798 +%%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 1.01875 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 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 +(moItRandNextMove< M >) cw +(moNextMove< M >) cw +(eoBF< A1, A2, R >) cw +(eoFunctorBase) 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 ----- + + (moItRandNextMove< M >) 0 0 box + (moNextMove< M >) 0 1 box + (eoBF< A1, A2, R >) 0 2 box + (eoFunctorBase) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_it_rand_next_move.tex b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_it_rand_next_move.tex new file mode 100644 index 000000000..17c436d62 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_it_rand_next_move.tex @@ -0,0 +1,94 @@ +\section{moItRandNextMove$<$ M $>$ Class Template Reference} +\label{classmo_it_rand_next_move}\index{moItRandNextMove@{moItRandNextMove}} +One of the possible \doxyref{moNextMove}{p.}{classmo_next_move}. + + +{\tt \#include $<$moItRandNextMove.h$>$} + +Inheritance diagram for moItRandNextMove$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmo_it_rand_next_move} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf moItRandNextMove} ({\bf moRandMove}$<$ M $>$ \&\_\-random\_\-move\_\-generator, unsigned int \_\-iteration\_\-maximum\_\-number) +\begin{CompactList}\small\item\em The constructor. \item\end{CompactList}\item +bool {\bf operator()} (M \&\_\-move, const {\bf EOT} \&\_\-solution) +\begin{CompactList}\small\item\em Generation of a new move. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Types} +\begin{CompactItemize} +\item +typedef M::EOType {\bf EOT}\label{classmo_it_rand_next_move_ee666007fc494bf4a5f0cd065e5671cf} + +\begin{CompactList}\small\item\em Alias for the type. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +{\bf moRandMove}$<$ M $>$ \& {\bf random\_\-move\_\-generator}\label{classmo_it_rand_next_move_92601819402ad00d01933113d0bcf40d} + +\begin{CompactList}\small\item\em A move generator (generally randomly). \item\end{CompactList}\item +unsigned int {\bf iteration\_\-maximum\_\-number}\label{classmo_it_rand_next_move_1b06067aee7a78f8a255563391514d2d} + +\begin{CompactList}\small\item\em Iteration maximum number. \item\end{CompactList}\item +unsigned int {\bf iteration\_\-number}\label{classmo_it_rand_next_move_2f8d52c88d6c002be518091cc52beca1} + +\begin{CompactList}\small\item\em Iteration current number. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class moItRandNextMove$<$ M $>$} + +One of the possible \doxyref{moNextMove}{p.}{classmo_next_move}. + +This class is a move (\doxyref{moMove}{p.}{classmo_move}) generator with a bound for the maximum number of iterations. + +Definition at line 47 of file moItRandNextMove.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moItRandNextMove@{moItRandNextMove}!moItRandNextMove@{moItRandNextMove}} +\index{moItRandNextMove@{moItRandNextMove}!moItRandNextMove@{moItRandNextMove}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ {\bf moItRandNextMove}$<$ M $>$::{\bf moItRandNextMove} ({\bf moRandMove}$<$ M $>$ \& {\em \_\-random\_\-move\_\-generator}, unsigned int {\em \_\-iteration\_\-maximum\_\-number})\hspace{0.3cm}{\tt [inline]}}\label{classmo_it_rand_next_move_c27b1fb0d64d4862dd886f7a59419b8c} + + +The constructor. + +{\bf Parameters} only for initialising the attributes. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-random\_\-move\_\-generator}]The random move generator. \item[{\em \_\-iteration\_\-maximum\_\-number}]The iteration maximum number. \end{description} +\end{Desc} + + +Definition at line 61 of file moItRandNextMove.h. + +\subsection{Member Function Documentation} +\index{moItRandNextMove@{moItRandNextMove}!operator()@{operator()}} +\index{operator()@{operator()}!moItRandNextMove@{moItRandNextMove}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ bool {\bf moItRandNextMove}$<$ M $>$::operator() (M \& {\em \_\-move}, const {\bf EOT} \& {\em \_\-solution})\hspace{0.3cm}{\tt [inline]}}\label{classmo_it_rand_next_move_21454db723a12fe6c8eb5caeccd32df6} + + +Generation of a new move. + +If the maximum number is not already reached, the current move is forgotten and remplaced by another one. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-move}]the current move. \item[{\em \_\-solution}]the current solution. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]false if the maximum number of iteration is reached, else true. \end{Desc} + + +Definition at line 73 of file moItRandNextMove.h. + +References moItRandNextMove$<$ M $>$::iteration\_\-maximum\_\-number, moItRandNextMove$<$ M $>$::iteration\_\-number, and moItRandNextMove$<$ M $>$::random\_\-move\_\-generator. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moItRandNextMove.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_l_s_check_point.eps b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_l_s_check_point.eps new file mode 100644 index 000000000..dfd4f441a --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_l_s_check_point.eps @@ -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 400 +%%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 1.25 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 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 +(moLSCheckPoint< M >) cw +(eoBF< A1, A2, R >) cw +(eoFunctorBase) 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 ----- + + (moLSCheckPoint< M >) 0 0 box + (eoBF< A1, A2, R >) 0 1 box + (eoFunctorBase) 0 2 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_l_s_check_point.tex b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_l_s_check_point.tex new file mode 100644 index 000000000..1362d6392 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_l_s_check_point.tex @@ -0,0 +1,77 @@ +\section{moLSCheckPoint$<$ M $>$ Class Template Reference} +\label{classmo_l_s_check_point}\index{moLSCheckPoint@{moLSCheckPoint}} +Class which allows a checkpointing system. + + +{\tt \#include $<$moLSCheckPoint.h$>$} + +Inheritance diagram for moLSCheckPoint$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{classmo_l_s_check_point} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +void {\bf operator()} (const M \&\_\-move, const typename M::EOType \&\_\-solution) +\begin{CompactList}\small\item\em {\bf Function} which launches the checkpointing. \item\end{CompactList}\item +void {\bf add} ({\bf eoBF}$<$ const M \&, const typename M::EOType \&, void $>$ \&\_\-function) +\begin{CompactList}\small\item\em Procedure which add a new function to the function vector. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +std::vector$<$ {\bf eoBF}$<$ const M \&, const typename M::EOType \&, void $>$ $\ast$ $>$ {\bf functions}\label{classmo_l_s_check_point_56a7427a6aebac7955c22bab302c050a} + +\begin{CompactList}\small\item\em Vector of functions. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class moLSCheckPoint$<$ M $>$} + +Class which allows a checkpointing system. + +Thanks to this class, at each iteration, additionnal function can be used (and not only one). + +Definition at line 46 of file moLSCheckPoint.h. + +\subsection{Member Function Documentation} +\index{moLSCheckPoint@{moLSCheckPoint}!operator()@{operator()}} +\index{operator()@{operator()}!moLSCheckPoint@{moLSCheckPoint}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ void {\bf moLSCheckPoint}$<$ M $>$::operator() (const M \& {\em \_\-move}, const typename M::EOType \& {\em \_\-solution})\hspace{0.3cm}{\tt [inline]}}\label{classmo_l_s_check_point_e9b9d41e40dd7bab648327686b2b938d} + + +{\bf Function} which launches the checkpointing. + +Each saved function is used on the current move and the current solution. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-move}]a move. \item[{\em \_\-solution}]a solution. \end{description} +\end{Desc} + + +Definition at line 57 of file moLSCheckPoint.h. + +References moLSCheckPoint$<$ M $>$::functions.\index{moLSCheckPoint@{moLSCheckPoint}!add@{add}} +\index{add@{add}!moLSCheckPoint@{moLSCheckPoint}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ void {\bf moLSCheckPoint}$<$ M $>$::add ({\bf eoBF}$<$ const M \&, const typename M::EOType \&, void $>$ \& {\em \_\-function})\hspace{0.3cm}{\tt [inline]}}\label{classmo_l_s_check_point_f95f2dc556cdfbdc81688562ca95202d} + + +Procedure which add a new function to the function vector. + +The new function is added at the end of the vector. \begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-function}]a new function to add. \end{description} +\end{Desc} + + +Definition at line 72 of file moLSCheckPoint.h. + +References moLSCheckPoint$<$ M $>$::functions. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moLSCheckPoint.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_linear_cooling_schedule.eps b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_linear_cooling_schedule.eps new file mode 100644 index 000000000..3e62629a9 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_linear_cooling_schedule.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 476.19 +%%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 1.05 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 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 +(moLinearCoolingSchedule) cw +(moCoolingSchedule) cw +(eoUF< double &, bool >) cw +(eoFunctorBase) 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 ----- + + (moLinearCoolingSchedule) 0 0 box + (moCoolingSchedule) 0 1 box + (eoUF< double &, bool >) 0 2 box + (eoFunctorBase) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_linear_cooling_schedule.tex b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_linear_cooling_schedule.tex new file mode 100644 index 000000000..e4ff3c703 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_linear_cooling_schedule.tex @@ -0,0 +1,83 @@ +\section{moLinearCoolingSchedule Class Reference} +\label{classmo_linear_cooling_schedule}\index{moLinearCoolingSchedule@{moLinearCoolingSchedule}} +One of the possible \doxyref{moCoolingSchedule}{p.}{classmo_cooling_schedule}. + + +{\tt \#include $<$moLinearCoolingSchedule.h$>$} + +Inheritance diagram for moLinearCoolingSchedule::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmo_linear_cooling_schedule} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf moLinearCoolingSchedule} (double \_\-threshold, double \_\-quantity) +\begin{CompactList}\small\item\em Simple constructor. \item\end{CompactList}\item +bool {\bf operator()} (double \&\_\-current\_\-temperature) +\begin{CompactList}\small\item\em {\bf Function} which proceeds to the cooling. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +double {\bf threshold}\label{classmo_linear_cooling_schedule_e7f539f986801ea71392c4a55ba08a76} + +\begin{CompactList}\small\item\em The temperature threhold. \item\end{CompactList}\item +double {\bf quantity}\label{classmo_linear_cooling_schedule_6159dc39ceda89b23ffdab3d6ce8d8ed} + +\begin{CompactList}\small\item\em The quantity that allows the temperature to decrease. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +One of the possible \doxyref{moCoolingSchedule}{p.}{classmo_cooling_schedule}. + +An another very simple cooling schedule, the temperature decrease according to a quantity while the temperature is greater than a threshold. + +Definition at line 46 of file moLinearCoolingSchedule.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moLinearCoolingSchedule@{moLinearCoolingSchedule}!moLinearCoolingSchedule@{moLinearCoolingSchedule}} +\index{moLinearCoolingSchedule@{moLinearCoolingSchedule}!moLinearCoolingSchedule@{moLinearCoolingSchedule}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}moLinearCoolingSchedule::moLinearCoolingSchedule (double {\em \_\-threshold}, double {\em \_\-quantity})\hspace{0.3cm}{\tt [inline]}}\label{classmo_linear_cooling_schedule_420939ebf57f01d242cbe4eb668dffde} + + +Simple constructor. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-threshold}]the threshold. \item[{\em \_\-quantity}]the quantity used to descrease the temperature. \end{description} +\end{Desc} + + +Definition at line 55 of file moLinearCoolingSchedule.h. + +\subsection{Member Function Documentation} +\index{moLinearCoolingSchedule@{moLinearCoolingSchedule}!operator()@{operator()}} +\index{operator()@{operator()}!moLinearCoolingSchedule@{moLinearCoolingSchedule}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}bool moLinearCoolingSchedule::operator() (double \& {\em \_\-current\_\-temperature})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_linear_cooling_schedule_b0a1886aaa7ee2a0c8e929e55ca321ce} + + +{\bf Function} which proceeds to the cooling. + +It decreases the temperature and indicates if it is greater than the threshold. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-current\_\-temperature}]The current temperature. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]true if the new temperature (current temperature - quantity) is greater than the threshold, false otherwise. \end{Desc} + + +Implements {\bf eoUF$<$ double \&, bool $>$}. + +Definition at line 65 of file moLinearCoolingSchedule.h. + +References quantity, and threshold. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moLinearCoolingSchedule.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_move.eps b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_move.eps new file mode 100644 index 000000000..68c490c6c --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_move.eps @@ -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 410.959 +%%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 1.21667 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 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 +(moMove< EOT >) cw +(eoUF< EOT &, void >) cw +(eoFunctorBase) 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 ----- + + (moMove< EOT >) 0 0 box + (eoUF< EOT &, void >) 0 1 box + (eoFunctorBase) 0 2 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_move.tex b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_move.tex new file mode 100644 index 000000000..eff88ad06 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_move.tex @@ -0,0 +1,33 @@ +\section{moMove$<$ EOT $>$ Class Template Reference} +\label{classmo_move}\index{moMove@{moMove}} +Definition of a move. + + +{\tt \#include $<$moMove.h$>$} + +Inheritance diagram for moMove$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{classmo_move} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{CompactItemize} +\item +typedef EOT {\bf EOType}\label{classmo_move_7fb853a91ba1319530529e515380bbba} + +\begin{CompactList}\small\item\em Alias for the type. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class moMove$<$ EOT $>$} + +Definition of a move. + +A move transforms a solution to another close solution. It describes how a solution can be modified to another one. + +Definition at line 49 of file moMove.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moMove.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_move_expl.eps b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_move_expl.eps new file mode 100644 index 000000000..18fb8889f --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_move_expl.eps @@ -0,0 +1,221 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 163.934 +%%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 3.05 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 5 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 +(moMoveExpl< M >) cw +(eoBF< const M::EOType &, M::EOType &, void >) cw +(eoFunctorBase) cw +(moMoveLoopExpl< M >) cw +(moHCMoveLoopExpl< M >) cw +(moTSMoveLoopExpl< 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 ----- + + (moMoveExpl< M >) 0.5 2 box + (eoBF< const M::EOType &, M::EOType &, void >) 0.5 3 box + (eoFunctorBase) 0.5 4 box + (moMoveLoopExpl< M >) 0.5 1 box + (moHCMoveLoopExpl< M >) 0 0 box + (moTSMoveLoopExpl< M >) 1 0 box + +% ----- relations ----- + +solid +0 0.5 2 out +solid +1 0.5 3 in +solid +0 0.5 3 out +solid +1 0.5 4 in +solid +1 0.5 1.25 out +solid +0 0.5 1.75 in +solid +1 0.5 0.25 out +solid +0 1 1 conn +solid +0 0 0.75 in +solid +0 1 0.75 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_move_expl.tex b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_move_expl.tex new file mode 100644 index 000000000..9d53ebd21 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_move_expl.tex @@ -0,0 +1,27 @@ +\section{moMoveExpl$<$ M $>$ Class Template Reference} +\label{classmo_move_expl}\index{moMoveExpl@{moMoveExpl}} +Description of a move (\doxyref{moMove}{p.}{classmo_move}) explorer. + + +{\tt \#include $<$moMoveExpl.h$>$} + +Inheritance diagram for moMoveExpl$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4.59016cm]{classmo_move_expl} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class moMoveExpl$<$ M $>$} + +Description of a move (\doxyref{moMove}{p.}{classmo_move}) explorer. + +Only a description...See \doxyref{moMoveLoopExpl}{p.}{classmo_move_loop_expl}. + +Definition at line 45 of file moMoveExpl.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moMoveExpl.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_move_incr_eval.eps b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_move_incr_eval.eps new file mode 100644 index 000000000..1f107a403 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_move_incr_eval.eps @@ -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 400 +%%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 1.25 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 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 +(moMoveIncrEval< M >) cw +(eoBF< A1, A2, R >) cw +(eoFunctorBase) 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 ----- + + (moMoveIncrEval< M >) 0 0 box + (eoBF< A1, A2, R >) 0 1 box + (eoFunctorBase) 0 2 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_move_incr_eval.tex b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_move_incr_eval.tex new file mode 100644 index 000000000..e49ccdc4c --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_move_incr_eval.tex @@ -0,0 +1,27 @@ +\section{moMoveIncrEval$<$ M $>$ Class Template Reference} +\label{classmo_move_incr_eval}\index{moMoveIncrEval@{moMoveIncrEval}} +(generally) Efficient evaluation function based a move and a solution. + + +{\tt \#include $<$moMoveIncrEval.h$>$} + +Inheritance diagram for moMoveIncrEval$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{classmo_move_incr_eval} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class moMoveIncrEval$<$ M $>$} + +(generally) Efficient evaluation function based a move and a solution. + +From a move and a solution, it computes a new fitness that could be associated to the solution if this one is updated. + +Definition at line 49 of file moMoveIncrEval.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moMoveIncrEval.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_move_init.eps b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_move_init.eps new file mode 100644 index 000000000..e04209e70 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_move_init.eps @@ -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 454.545 +%%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 1.1 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 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 +(moMoveInit< M >) cw +(eoBF< A1, A2, R >) cw +(eoFunctorBase) 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 ----- + + (moMoveInit< M >) 0 0 box + (eoBF< A1, A2, R >) 0 1 box + (eoFunctorBase) 0 2 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_move_init.tex b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_move_init.tex new file mode 100644 index 000000000..949a2d4c9 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_move_init.tex @@ -0,0 +1,27 @@ +\section{moMoveInit$<$ M $>$ Class Template Reference} +\label{classmo_move_init}\index{moMoveInit@{moMoveInit}} +Move (\doxyref{moMove}{p.}{classmo_move}) initializer. + + +{\tt \#include $<$moMoveInit.h$>$} + +Inheritance diagram for moMoveInit$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{classmo_move_init} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class moMoveInit$<$ M $>$} + +Move (\doxyref{moMove}{p.}{classmo_move}) initializer. + +Class which allows to initiase a move. Only a description... An object that herits from this class needs to be designed to be used. + +Definition at line 47 of file moMoveInit.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moMoveInit.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_move_loop_expl.eps b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_move_loop_expl.eps new file mode 100644 index 000000000..c6a78b5b1 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_move_loop_expl.eps @@ -0,0 +1,221 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 163.934 +%%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 3.05 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 5 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 +(moMoveLoopExpl< M >) cw +(moMoveExpl< M >) cw +(eoBF< const M::EOType &, M::EOType &, void >) cw +(eoFunctorBase) cw +(moHCMoveLoopExpl< M >) cw +(moTSMoveLoopExpl< 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 ----- + + (moMoveLoopExpl< M >) 0.5 1 box + (moMoveExpl< M >) 0.5 2 box + (eoBF< const M::EOType &, M::EOType &, void >) 0.5 3 box + (eoFunctorBase) 0.5 4 box + (moHCMoveLoopExpl< M >) 0 0 box + (moTSMoveLoopExpl< M >) 1 0 box + +% ----- relations ----- + +solid +0 0.5 1 out +solid +1 0.5 2 in +solid +0 0.5 2 out +solid +1 0.5 3 in +solid +0 0.5 3 out +solid +1 0.5 4 in +solid +1 0.5 0.25 out +solid +0 1 1 conn +solid +0 0 0.75 in +solid +0 1 0.75 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_move_loop_expl.tex b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_move_loop_expl.tex new file mode 100644 index 000000000..2132e4306 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_move_loop_expl.tex @@ -0,0 +1,27 @@ +\section{moMoveLoopExpl$<$ M $>$ Class Template Reference} +\label{classmo_move_loop_expl}\index{moMoveLoopExpl@{moMoveLoopExpl}} +Class which describes an iterative explorer. + + +{\tt \#include $<$moMoveLoopExpl.h$>$} + +Inheritance diagram for moMoveLoopExpl$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4.59016cm]{classmo_move_loop_expl} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class moMoveLoopExpl$<$ M $>$} + +Class which describes an iterative explorer. + +Only a description... \doxyref{moHCMoveLoopExpl}{p.}{classmo_h_c_move_loop_expl} and \doxyref{moTSMoveLoopExpl}{p.}{classmo_t_s_move_loop_expl} are exemples of class that are a \doxyref{moMoveLoopExpl}{p.}{classmo_move_loop_expl}. + +Definition at line 47 of file moMoveLoopExpl.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moMoveLoopExpl.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_move_select.eps b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_move_select.eps new file mode 100644 index 000000000..b61e2bf9f --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_move_select.eps @@ -0,0 +1,219 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 101.01 +%%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 4.95 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 3 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 +(moMoveSelect< M >) cw +(eoBF< M &, M::EOType::Fitness &, void >) cw +(eoFunctorBase) cw +(moBestImprSelect< M >) cw +(moFirstImprSelect< M >) cw +(moRandImprSelect< 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 ----- + + (moMoveSelect< M >) 1 1 box + (eoBF< M &, M::EOType::Fitness &, void >) 1 2 box + (eoFunctorBase) 1 3 box + (moBestImprSelect< M >) 0 0 box + (moFirstImprSelect< M >) 1 0 box + (moRandImprSelect< M >) 2 0 box + +% ----- relations ----- + +solid +0 1 1 out +solid +1 1 2 in +solid +0 1 2 out +solid +1 1 3 in +solid +1 1 0.25 out +solid +0 2 1 conn +solid +0 0 0.75 in +solid +0 1 0.75 in +solid +0 2 0.75 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_move_select.tex b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_move_select.tex new file mode 100644 index 000000000..62736edfd --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_move_select.tex @@ -0,0 +1,75 @@ +\section{moMoveSelect$<$ M $>$ Class Template Reference} +\label{classmo_move_select}\index{moMoveSelect@{moMoveSelect}} +Class that describes a move selector (\doxyref{moMove}{p.}{classmo_move}). + + +{\tt \#include $<$moMoveSelect.h$>$} + +Inheritance diagram for moMoveSelect$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.82828cm]{classmo_move_select} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{CompactItemize} +\item +typedef M::EOType::Fitness {\bf Fitness}\label{classmo_move_select_8148ccc0e6fbd209c3fe6829559895c8} + +\begin{CompactList}\small\item\em Alias for the fitness. \item\end{CompactList}\end{CompactItemize} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +virtual void {\bf init} (const {\bf Fitness} \&\_\-fitness)=0 +\begin{CompactList}\small\item\em Procedure which initialises all that the move selector needs including the initial fitness. \item\end{CompactList}\item +virtual bool {\bf update} (const M \&\_\-move, const {\bf Fitness} \&\_\-fitness)=0 +\begin{CompactList}\small\item\em {\bf Function} which updates the best solutions. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class moMoveSelect$<$ M $>$} + +Class that describes a move selector (\doxyref{moMove}{p.}{classmo_move}). + +It iteratively considers some moves (\doxyref{moMove}{p.}{classmo_move}) and their associated fitnesses. The best move is so regularly updated. At any time, it could be accessed. + +Definition at line 50 of file moMoveSelect.h. + +\subsection{Member Function Documentation} +\index{moMoveSelect@{moMoveSelect}!init@{init}} +\index{init@{init}!moMoveSelect@{moMoveSelect}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ virtual void {\bf moMoveSelect}$<$ M $>$::init (const {\bf Fitness} \& {\em \_\-fitness})\hspace{0.3cm}{\tt [pure virtual]}}\label{classmo_move_select_58038bd859632c1bd022d23d9792bdca} + + +Procedure which initialises all that the move selector needs including the initial fitness. + +In order to know the fitness of the solution, for which the neighborhood will be soon explored + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-fitness}]the current fitness. \end{description} +\end{Desc} + + +Implemented in {\bf moBestImprSelect$<$ M $>$} \doxyref{}{p.}{classmo_best_impr_select_83f961549986b8ad94692e433aa79114}, {\bf moFirstImprSelect$<$ M $>$} \doxyref{}{p.}{classmo_first_impr_select_a923437ecc3db50e7052b002a9a1bbf8}, and {\bf moRandImprSelect$<$ M $>$} \doxyref{}{p.}{classmo_rand_impr_select_7af99966b31aa387ecef74fd307a42e8}.\index{moMoveSelect@{moMoveSelect}!update@{update}} +\index{update@{update}!moMoveSelect@{moMoveSelect}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ virtual bool {\bf moMoveSelect}$<$ M $>$::update (const M \& {\em \_\-move}, const {\bf Fitness} \& {\em \_\-fitness})\hspace{0.3cm}{\tt [pure virtual]}}\label{classmo_move_select_5b4d3b2f030cca80c563c3db0c4af404} + + +{\bf Function} which updates the best solutions. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-move}]a new move. \item[{\em \_\-fitness}]a fitness linked to the new move. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]a boolean that expresses the need to resume the exploration. \end{Desc} + + +Implemented in {\bf moBestImprSelect$<$ M $>$} \doxyref{}{p.}{classmo_best_impr_select_5c0729fd316b0ef78406bce5ca91de2a}, {\bf moFirstImprSelect$<$ M $>$} \doxyref{}{p.}{classmo_first_impr_select_f68b7ee7b35bf7347c16006f0587d313}, and {\bf moRandImprSelect$<$ M $>$} \doxyref{}{p.}{classmo_rand_impr_select_b20cfd0164266aa75960cba3c1673f69}. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moMoveSelect.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_next_move.eps b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_next_move.eps new file mode 100644 index 000000000..08b997f12 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_next_move.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 490.798 +%%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 1.01875 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 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 +(moNextMove< M >) cw +(eoBF< A1, A2, R >) cw +(eoFunctorBase) cw +(moItRandNextMove< 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 ----- + + (moNextMove< M >) 0 1 box + (eoBF< A1, A2, R >) 0 2 box + (eoFunctorBase) 0 3 box + (moItRandNextMove< M >) 0 0 box + +% ----- relations ----- + +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in +solid +1 0 0.25 out +solid +0 0 0.75 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_next_move.tex b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_next_move.tex new file mode 100644 index 000000000..fe0d8d923 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_next_move.tex @@ -0,0 +1,27 @@ +\section{moNextMove$<$ M $>$ Class Template Reference} +\label{classmo_next_move}\index{moNextMove@{moNextMove}} +Class which allows to generate a new move (\doxyref{moMove}{p.}{classmo_move}). + + +{\tt \#include $<$moNextMove.h$>$} + +Inheritance diagram for moNextMove$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmo_next_move} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class moNextMove$<$ M $>$} + +Class which allows to generate a new move (\doxyref{moMove}{p.}{classmo_move}). + +Useful for the explorer (for \doxyref{moTS}{p.}{classmo_t_s} or \doxyref{moHC}{p.}{classmo_h_c}). Does nothing... An object that herits from this class needs to be designed for being used. + +Definition at line 47 of file moNextMove.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moNextMove.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_no_aspir_crit.eps b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_no_aspir_crit.eps new file mode 100644 index 000000000..f5d50a373 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_no_aspir_crit.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 583.942 +%%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 0.85625 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 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 +(moNoAspirCrit< M >) cw +(moAspirCrit< M >) cw +(eoBF< A1, A2, R >) cw +(eoFunctorBase) 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 ----- + + (moNoAspirCrit< M >) 0 0 box + (moAspirCrit< M >) 0 1 box + (eoBF< A1, A2, R >) 0 2 box + (eoFunctorBase) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_no_aspir_crit.tex b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_no_aspir_crit.tex new file mode 100644 index 000000000..3168eb3e7 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_no_aspir_crit.tex @@ -0,0 +1,66 @@ +\section{moNoAspirCrit$<$ M $>$ Class Template Reference} +\label{classmo_no_aspir_crit}\index{moNoAspirCrit@{moNoAspirCrit}} +One of the possible aspiration criterion (\doxyref{moAspirCrit}{p.}{classmo_aspir_crit}). + + +{\tt \#include $<$moNoAspirCrit.h$>$} + +Inheritance diagram for moNoAspirCrit$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmo_no_aspir_crit} +\end{center} +\end{figure} +\subsection*{Private Member Functions} +\begin{CompactItemize} +\item +bool {\bf operator()} (const M \&\_\-move, const typename M::EOType::Fitness \&\_\-fitness) +\begin{CompactList}\small\item\em {\bf Function} which describes the aspiration criterion behaviour. \item\end{CompactList}\item +void {\bf init} () +\begin{CompactList}\small\item\em Procedure which initialises all that needs a \doxyref{moNoAspirCrit}{p.}{classmo_no_aspir_crit}. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class moNoAspirCrit$<$ M $>$} + +One of the possible aspiration criterion (\doxyref{moAspirCrit}{p.}{classmo_aspir_crit}). + +The simplest : never satisfied. + +Definition at line 47 of file moNoAspirCrit.h. + +\subsection{Member Function Documentation} +\index{moNoAspirCrit@{moNoAspirCrit}!operator()@{operator()}} +\index{operator()@{operator()}!moNoAspirCrit@{moNoAspirCrit}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ bool {\bf moNoAspirCrit}$<$ M $>$::operator() (const M \& {\em \_\-move}, const typename M::EOType::Fitness \& {\em \_\-fitness})\hspace{0.3cm}{\tt [inline, private]}}\label{classmo_no_aspir_crit_289aac56f03c4651fcbcec4a91fb6fd6} + + +{\bf Function} which describes the aspiration criterion behaviour. + +Does nothing. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-move}]a move. \item[{\em \_\-fitness}]a fitness. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]false. \end{Desc} + + +Definition at line 57 of file moNoAspirCrit.h.\index{moNoAspirCrit@{moNoAspirCrit}!init@{init}} +\index{init@{init}!moNoAspirCrit@{moNoAspirCrit}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ void {\bf moNoAspirCrit}$<$ M $>$::init ()\hspace{0.3cm}{\tt [inline, private, virtual]}}\label{classmo_no_aspir_crit_f3a286fc4c2d36bd390ba9a3074f3037} + + +Procedure which initialises all that needs a \doxyref{moNoAspirCrit}{p.}{classmo_no_aspir_crit}. + +Nothing... + +Implements {\bf moAspirCrit$<$ M $>$} \doxyref{}{p.}{classmo_aspir_crit_a8ce84510a5ec7c9078381e542c6d140}. + +Definition at line 66 of file moNoAspirCrit.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moNoAspirCrit.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_no_fit_impr_sol_continue.eps b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_no_fit_impr_sol_continue.eps new file mode 100644 index 000000000..67d7d5048 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_no_fit_impr_sol_continue.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 386.473 +%%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 1.29375 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 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 +(moNoFitImprSolContinue< EOT >) cw +(moSolContinue< EOT >) cw +(eoUF< const EOT &, bool >) cw +(eoFunctorBase) 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 ----- + + (moNoFitImprSolContinue< EOT >) 0 0 box + (moSolContinue< EOT >) 0 1 box + (eoUF< const EOT &, bool >) 0 2 box + (eoFunctorBase) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_no_fit_impr_sol_continue.tex b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_no_fit_impr_sol_continue.tex new file mode 100644 index 000000000..be8997c1c --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_no_fit_impr_sol_continue.tex @@ -0,0 +1,110 @@ +\section{moNoFitImprSolContinue$<$ EOT $>$ Class Template Reference} +\label{classmo_no_fit_impr_sol_continue}\index{moNoFitImprSolContinue@{moNoFitImprSolContinue}} +One possible stop criterion for a solution-based heuristic. + + +{\tt \#include $<$moNoFitImprSolContinue.h$>$} + +Inheritance diagram for moNoFitImprSolContinue$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmo_no_fit_impr_sol_continue} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{CompactItemize} +\item +typedef EOT::Fitness {\bf Fitness}\label{classmo_no_fit_impr_sol_continue_64c184de66bb37d75d53aa600ac947b3} + +\begin{CompactList}\small\item\em Alias for the fitness. \item\end{CompactList}\end{CompactItemize} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf moNoFitImprSolContinue} (unsigned int \_\-maxNumberOfIterationWithoutImprovement) +\begin{CompactList}\small\item\em Basic constructor. \item\end{CompactList}\item +bool {\bf operator()} (const EOT \&\_\-solution) +\begin{CompactList}\small\item\em {\bf Function} that activates the stopping criterion. \item\end{CompactList}\item +void {\bf init} () +\begin{CompactList}\small\item\em Procedure which allows to initialise all the stuff needed. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +unsigned int {\bf maxNumberOfIterationsWithoutImprovement}\label{classmo_no_fit_impr_sol_continue_03612ffc3af9d943c1b1d2cde09d461b} + +\begin{CompactList}\small\item\em Maximum number of iterations without improvement allowed. \item\end{CompactList}\item +bool {\bf firstFitnessSaved}\label{classmo_no_fit_impr_sol_continue_ca3591e47a075b59e0826f31234c71ef} + +\begin{CompactList}\small\item\em Flag that this is the first time that the fitness is used. \item\end{CompactList}\item +{\bf Fitness} {\bf fitness}\label{classmo_no_fit_impr_sol_continue_3d3d2b43a4dd73e38689cc0018d44ee7} + +\begin{CompactList}\small\item\em Current Fitness. \item\end{CompactList}\item +unsigned int {\bf counter}\label{classmo_no_fit_impr_sol_continue_46fc008a8f7cd06dcaaeb4016b433adb} + +\begin{CompactList}\small\item\em The iteration couter. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class moNoFitImprSolContinue$<$ EOT $>$} + +One possible stop criterion for a solution-based heuristic. + +The stop criterion corresponds to a maximum number of iterations without improvement. + +Definition at line 46 of file moNoFitImprSolContinue.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moNoFitImprSolContinue@{moNoFitImprSolContinue}!moNoFitImprSolContinue@{moNoFitImprSolContinue}} +\index{moNoFitImprSolContinue@{moNoFitImprSolContinue}!moNoFitImprSolContinue@{moNoFitImprSolContinue}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ {\bf moNoFitImprSolContinue}$<$ EOT $>$::{\bf moNoFitImprSolContinue} (unsigned int {\em \_\-maxNumberOfIterationWithoutImprovement})\hspace{0.3cm}{\tt [inline]}}\label{classmo_no_fit_impr_sol_continue_0793f68a0ad558c8203b97c33c8f9c90} + + +Basic constructor. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-maxNumberOfIterationWithoutImprovement}]The number of iterations without fitness improvement to reach for stop. \end{description} +\end{Desc} + + +Definition at line 57 of file moNoFitImprSolContinue.h. + +\subsection{Member Function Documentation} +\index{moNoFitImprSolContinue@{moNoFitImprSolContinue}!operator()@{operator()}} +\index{operator()@{operator()}!moNoFitImprSolContinue@{moNoFitImprSolContinue}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ bool {\bf moNoFitImprSolContinue}$<$ EOT $>$::operator() (const EOT \& {\em \_\-solution})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_no_fit_impr_sol_continue_d8966c73cbe625644df9061377f7221a} + + +{\bf Function} that activates the stopping criterion. + +Indicates if the fitness has not been improved since a given number of iterations (after a minimum of iterations). \begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-solution}]the current solution. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]true or false. \end{Desc} + + +Implements {\bf eoUF$<$ const EOT \&, bool $>$}. + +Definition at line 67 of file moNoFitImprSolContinue.h. + +References moNoFitImprSolContinue$<$ EOT $>$::counter, moNoFitImprSolContinue$<$ EOT $>$::firstFitnessSaved, moNoFitImprSolContinue$<$ EOT $>$::fitness, and moNoFitImprSolContinue$<$ EOT $>$::maxNumberOfIterationsWithoutImprovement.\index{moNoFitImprSolContinue@{moNoFitImprSolContinue}!init@{init}} +\index{init@{init}!moNoFitImprSolContinue@{moNoFitImprSolContinue}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void {\bf moNoFitImprSolContinue}$<$ EOT $>$::init ()\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_no_fit_impr_sol_continue_21641c0a38a4501baae6133cbc591de4} + + +Procedure which allows to initialise all the stuff needed. + +It can be also used to reinitialize all the needed things. + +Implements {\bf moSolContinue$<$ EOT $>$} \doxyref{}{p.}{classmo_sol_continue_064dc966a210f4ffb9515be3f03ca4c7}. + +Definition at line 102 of file moNoFitImprSolContinue.h. + +References moNoFitImprSolContinue$<$ EOT $>$::counter, and moNoFitImprSolContinue$<$ EOT $>$::firstFitnessSaved. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moNoFitImprSolContinue.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_rand_impr_select.eps b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_rand_impr_select.eps new file mode 100644 index 000000000..fe55210a4 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_rand_impr_select.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 303.03 +%%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 1.65 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 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 +(moRandImprSelect< M >) cw +(moMoveSelect< M >) cw +(eoBF< M &, M::EOType::Fitness &, void >) cw +(eoFunctorBase) 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 ----- + + (moRandImprSelect< M >) 0 0 box + (moMoveSelect< M >) 0 1 box + (eoBF< M &, M::EOType::Fitness &, void >) 0 2 box + (eoFunctorBase) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_rand_impr_select.tex b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_rand_impr_select.tex new file mode 100644 index 000000000..df5de5fde --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_rand_impr_select.tex @@ -0,0 +1,119 @@ +\section{moRandImprSelect$<$ M $>$ Class Template Reference} +\label{classmo_rand_impr_select}\index{moRandImprSelect@{moRandImprSelect}} +One of the possible \doxyref{moMove}{p.}{classmo_move} selector (\doxyref{moMoveSelect}{p.}{classmo_move_select}). + + +{\tt \#include $<$moRandImprSelect.h$>$} + +Inheritance diagram for moRandImprSelect$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmo_rand_impr_select} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{CompactItemize} +\item +typedef M::EOType::Fitness {\bf Fitness}\label{classmo_rand_impr_select_3bff2fdb963297430543c82ffb567a5c} + +\begin{CompactList}\small\item\em Alias for the fitness. \item\end{CompactList}\end{CompactItemize} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +void {\bf init} (const {\bf Fitness} \&\_\-fitness) +\begin{CompactList}\small\item\em Procedure which all that needs a \doxyref{moRandImprSelect}{p.}{classmo_rand_impr_select}. \item\end{CompactList}\item +bool {\bf update} (const M \&\_\-move, const {\bf Fitness} \&\_\-fitness) +\begin{CompactList}\small\item\em {\bf Function} that updates the fitness and move vectors. \item\end{CompactList}\item +void {\bf operator()} (M \&\_\-move, {\bf Fitness} \&\_\-fitness) +\begin{CompactList}\small\item\em The move selection. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +{\bf Fitness} {\bf initial\_\-fitness}\label{classmo_rand_impr_select_d566fa23689861b1d04257e53c71ae20} + +\begin{CompactList}\small\item\em Fitness of the current solution. \item\end{CompactList}\item +std::vector$<$ {\bf Fitness} $>$ {\bf better\_\-fitnesses}\label{classmo_rand_impr_select_220d6e3db838b11938e59bc7b29a0db6} + +\begin{CompactList}\small\item\em Candidate fitnesse vector. \item\end{CompactList}\item +std::vector$<$ M $>$ {\bf better\_\-moves}\label{classmo_rand_impr_select_8a2e7bd7d7a74d7f7402ef25737b09e1} + +\begin{CompactList}\small\item\em Candidate move vector. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class moRandImprSelect$<$ M $>$} + +One of the possible \doxyref{moMove}{p.}{classmo_move} selector (\doxyref{moMoveSelect}{p.}{classmo_move_select}). + +All the neighbors are considered. One of them that enables an improvment of the objective function is choosen. + +Definition at line 49 of file moRandImprSelect.h. + +\subsection{Member Function Documentation} +\index{moRandImprSelect@{moRandImprSelect}!init@{init}} +\index{init@{init}!moRandImprSelect@{moRandImprSelect}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ void {\bf moRandImprSelect}$<$ M $>$::init (const {\bf Fitness} \& {\em \_\-fitness})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_rand_impr_select_7af99966b31aa387ecef74fd307a42e8} + + +Procedure which all that needs a \doxyref{moRandImprSelect}{p.}{classmo_rand_impr_select}. + +Give a value to the initialise fitness. Clean the move and fitness vectors. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-fitness}]the current best fitness \end{description} +\end{Desc} + + +Implements {\bf moMoveSelect$<$ M $>$} \doxyref{}{p.}{classmo_move_select_58038bd859632c1bd022d23d9792bdca}. + +Definition at line 63 of file moRandImprSelect.h. + +References moRandImprSelect$<$ M $>$::better\_\-fitnesses, moRandImprSelect$<$ M $>$::better\_\-moves, and moRandImprSelect$<$ M $>$::initial\_\-fitness.\index{moRandImprSelect@{moRandImprSelect}!update@{update}} +\index{update@{update}!moRandImprSelect@{moRandImprSelect}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ bool {\bf moRandImprSelect}$<$ M $>$::update (const M \& {\em \_\-move}, const {\bf Fitness} \& {\em \_\-fitness})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_rand_impr_select_b20cfd0164266aa75960cba3c1673f69} + + +{\bf Function} that updates the fitness and move vectors. + +if a move give a better fitness than the initial fitness, it is saved and the fitness too. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-move}]a new move. \item[{\em \_\-fitness}]a new fitness associated to the new move. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]true. \end{Desc} + + +Implements {\bf moMoveSelect$<$ M $>$} \doxyref{}{p.}{classmo_move_select_5b4d3b2f030cca80c563c3db0c4af404}. + +Definition at line 79 of file moRandImprSelect.h. + +References moRandImprSelect$<$ M $>$::better\_\-fitnesses, moRandImprSelect$<$ M $>$::better\_\-moves, and moRandImprSelect$<$ M $>$::initial\_\-fitness.\index{moRandImprSelect@{moRandImprSelect}!operator()@{operator()}} +\index{operator()@{operator()}!moRandImprSelect@{moRandImprSelect}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ void {\bf moRandImprSelect}$<$ M $>$::operator() (M \& {\em \_\-move}, {\bf Fitness} \& {\em \_\-fitness})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_rand_impr_select_1bc88f10830960c1d88e22e444c4e670} + + +The move selection. + +One the saved move is randomly chosen. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-move}]the reference of the move that can be initialised by the function. \item[{\em \_\-fitness}]the reference of the fitness that can be initialised by the function. \end{description} +\end{Desc} + + +Implements {\bf eoBF$<$ M \&, M::EOType::Fitness \&, void $>$}. + +Definition at line 98 of file moRandImprSelect.h. + +References moRandImprSelect$<$ M $>$::better\_\-fitnesses, moRandImprSelect$<$ M $>$::better\_\-moves, and eoRng::random(). + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moRandImprSelect.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_rand_move.eps b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_rand_move.eps new file mode 100644 index 000000000..9fc3a66e9 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_rand_move.eps @@ -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 454.545 +%%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 1.1 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 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 +(moRandMove< M >) cw +(eoUF< M &, void >) cw +(eoFunctorBase) 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 ----- + + (moRandMove< M >) 0 0 box + (eoUF< M &, void >) 0 1 box + (eoFunctorBase) 0 2 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_rand_move.tex b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_rand_move.tex new file mode 100644 index 000000000..3593c7055 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_rand_move.tex @@ -0,0 +1,27 @@ +\section{moRandMove$<$ M $>$ Class Template Reference} +\label{classmo_rand_move}\index{moRandMove@{moRandMove}} +Random move generator. + + +{\tt \#include $<$moRandMove.h$>$} + +Inheritance diagram for moRandMove$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{classmo_rand_move} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class moRandMove$<$ M $>$} + +Random move generator. + +Only a description... An object that herits from this class needs to be designed in order to use a \doxyref{moSA}{p.}{classmo_s_a}. + +Definition at line 46 of file moRandMove.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moRandMove.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_s_a.tex b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_s_a.tex new file mode 100644 index 000000000..d55b636ad --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_s_a.tex @@ -0,0 +1,104 @@ +\section{moSA$<$ M $>$ Class Template Reference} +\label{classmo_s_a}\index{moSA@{moSA}} +Simulated Annealing (SA). + + +{\tt \#include $<$moSA.h$>$} + +Inherits {\bf moAlgo$<$ M::EOType $>$}. + +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf moSA} ({\bf moRandMove}$<$ M $>$ \&\_\-random\_\-move\_\-generator, {\bf moMoveIncrEval}$<$ M $>$ \&\_\-incremental\_\-evaluation, {\bf moSolContinue}$<$ {\bf EOT} $>$ \&\_\-continue, double \_\-initial\_\-temperature, {\bf moCoolingSchedule} \&\_\-cooling\_\-schedule, {\bf eoEvalFunc}$<$ {\bf EOT} $>$ \&\_\-full\_\-evaluation) +\begin{CompactList}\small\item\em SA constructor. \item\end{CompactList}\item +bool {\bf operator()} ({\bf EOT} \&\_\-solution) +\begin{CompactList}\small\item\em function that launches the SA algorithm. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Types} +\begin{CompactItemize} +\item +typedef M::EOType {\bf EOT}\label{classmo_s_a_d5d64a8797bdedc7b3af7893aded0bd5} + +\begin{CompactList}\small\item\em Alias for the type. \item\end{CompactList}\item +typedef EOT::Fitness {\bf Fitness}\label{classmo_s_a_97f1a40d5ab5a0b3f878d0347b34804b} + +\begin{CompactList}\small\item\em Alias for the fitness. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +{\bf moRandMove}$<$ M $>$ \& {\bf random\_\-move\_\-generator}\label{classmo_s_a_92656523f556669862fcffdccea178dd} + +\begin{CompactList}\small\item\em A move generator (generally randomly). \item\end{CompactList}\item +{\bf moMoveIncrEval}$<$ M $>$ \& {\bf incremental\_\-evaluation}\label{classmo_s_a_fdb49f837dc602624554279418c94bdb} + +\begin{CompactList}\small\item\em A (generally) efficient evaluation function. \item\end{CompactList}\item +{\bf moSolContinue}$<$ {\bf EOT} $>$ \& {\bf continu}\label{classmo_s_a_776586a839c2bbd6d12a731c12a1b748} + +\begin{CompactList}\small\item\em Stopping criterion before temperature update. \item\end{CompactList}\item +double {\bf initial\_\-temperature}\label{classmo_s_a_e07bf4ca64248e94ab85e8a1ba32aa8c} + +\begin{CompactList}\small\item\em Initial temperature. \item\end{CompactList}\item +{\bf moCoolingSchedule} \& {\bf cooling\_\-schedule}\label{classmo_s_a_f514ae01cdfc67bf0b87d5389b3792e5} + +\begin{CompactList}\small\item\em The cooling schedule. \item\end{CompactList}\item +{\bf eoEvalFunc}$<$ {\bf EOT} $>$ \& {\bf full\_\-evaluation}\label{classmo_s_a_ace30095ffc4924d84e14a0e59f7746f} + +\begin{CompactList}\small\item\em A full evaluation function. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class moSA$<$ M $>$} + +Simulated Annealing (SA). + +Class that describes a Simulated Annealing algorithm. + +Definition at line 53 of file moSA.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moSA@{moSA}!moSA@{moSA}} +\index{moSA@{moSA}!moSA@{moSA}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ {\bf moSA}$<$ M $>$::{\bf moSA} ({\bf moRandMove}$<$ M $>$ \& {\em \_\-random\_\-move\_\-generator}, {\bf moMoveIncrEval}$<$ M $>$ \& {\em \_\-incremental\_\-evaluation}, {\bf moSolContinue}$<$ {\bf EOT} $>$ \& {\em \_\-continue}, double {\em \_\-initial\_\-temperature}, {\bf moCoolingSchedule} \& {\em \_\-cooling\_\-schedule}, {\bf eoEvalFunc}$<$ {\bf EOT} $>$ \& {\em \_\-full\_\-evaluation})\hspace{0.3cm}{\tt [inline]}}\label{classmo_s_a_12e7da3a56b82daa29a30d1254da5823} + + +SA constructor. + +All the boxes used by a SA need to be given. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-random\_\-move\_\-generator}]The move generator (generally randomly). \item[{\em \_\-incremental\_\-evaluation}]The (generally) efficient evaluation function \item[{\em \_\-continue}]The stopping criterion. \item[{\em \_\-initial\_\-temperature}]The initial temperature. \item[{\em \_\-cooling\_\-schedule}]The cooling schedule, describes how the temperature is modified. \item[{\em \_\-full\_\-evaluation}]The full evaluation function. \end{description} +\end{Desc} + + +Definition at line 74 of file moSA.h. + +\subsection{Member Function Documentation} +\index{moSA@{moSA}!operator()@{operator()}} +\index{operator()@{operator()}!moSA@{moSA}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ bool {\bf moSA}$<$ M $>$::operator() ({\bf EOT} \& {\em \_\-solution})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_s_a_bea8176b0c05a96696b2ab29d3f3c544} + + +function that launches the SA algorithm. + +As a \doxyref{moTS}{p.}{classmo_t_s} or a \doxyref{moHC}{p.}{classmo_h_c}, the SA can be used for HYBRIDATION in an evolutionary algorithm. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-solution}]A solution to improve. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]TRUE. \end{Desc} + + +Implements {\bf eoUF$<$ M::EOType \&, bool $>$}. + +Definition at line 89 of file moSA.h. + +References moSA$<$ M $>$::continu, moSA$<$ M $>$::cooling\_\-schedule, moSA$<$ M $>$::full\_\-evaluation, moSA$<$ M $>$::incremental\_\-evaluation, moSA$<$ M $>$::initial\_\-temperature, moSA$<$ M $>$::random\_\-move\_\-generator, and eoRng::uniform(). + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moSA.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_simple_move_tabu_list.eps b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_simple_move_tabu_list.eps new file mode 100644 index 000000000..b0dcef476 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_simple_move_tabu_list.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 427.807 +%%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 1.16875 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 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 +(eoBF< A1, A2, R >) cw +(eoFunctorBase) 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 + (eoBF< A1, A2, R >) 0 2 box + (eoFunctorBase) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_simple_move_tabu_list.tex b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_simple_move_tabu_list.tex new file mode 100644 index 000000000..992ff613a --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_simple_move_tabu_list.tex @@ -0,0 +1,146 @@ +\section{moSimpleMoveTabuList$<$ 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 $<$moSimpleMoveTabuList.h$>$} + +Inheritance diagram for moSimpleMoveTabuList$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{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}\item +typedef std::list$<$ M $>$::iterator {\bf moveIterator}\label{classmo_simple_move_tabu_list_4ca9387c0a20bb9f4142682cbfee26bf} + +\begin{CompactList}\small\item\em Alias for an iterator of a move list. \item\end{CompactList}\end{CompactItemize} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf moSimpleMoveTabuList} (unsigned int \_\-memory\_\-maximum\_\-size)\label{classmo_simple_move_tabu_list_c27e7fabe1370ea65f56981c5cbc1769} + +\begin{CompactList}\small\item\em Constructor. \item\end{CompactList}\item +bool {\bf operator()} (const M \&\_\-move, const {\bf EOT} \&\_\-solution) +\begin{CompactList}\small\item\em {\bf 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} \&\_\-solution) +\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 Member Functions} +\begin{CompactItemize} +\item +void {\bf removeMove} (const M \&\_\-move) +\begin{CompactList}\small\item\em Procedure that removes a given move from the tabu list (if it is into, else do nothing). \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +unsigned int {\bf memory\_\-maximum\_\-size}\label{classmo_simple_move_tabu_list_fea7fe7c62a6da9b8f087a2732f44251} + +\begin{CompactList}\small\item\em The maximum size of the tabu list. \item\end{CompactList}\item +unsigned int {\bf memory\_\-size}\label{classmo_simple_move_tabu_list_defd20fe6d0d51fdaedbc5b95018aea7} + +\begin{CompactList}\small\item\em The current size of the tabu list. \item\end{CompactList}\item +std::list$<$ M $>$ {\bf tabuList}\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 moSimpleMoveTabuList$<$ M $>$} + +Class describing a move tabu list with a limited memory. + +Definition at line 46 of file moSimpleMoveTabuList.h. + +\subsection{Member Function Documentation} +\index{moSimpleMoveTabuList@{moSimpleMoveTabuList}!operator()@{operator()}} +\index{operator()@{operator()}!moSimpleMoveTabuList@{moSimpleMoveTabuList}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ bool {\bf moSimpleMoveTabuList}$<$ M $>$::operator() (const M \& {\em \_\-move}, const {\bf EOT} \& {\em \_\-solution})\hspace{0.3cm}{\tt [inline]}}\label{classmo_simple_move_tabu_list_8d38f296f3d7721025820f16f25fcf7e} + + +{\bf 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{moMove}{p.}{classmo_move}. \item[{\em \_\-solution}]A solution. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]true or false. \end{Desc} + + +Definition at line 69 of file moSimpleMoveTabuList.h. + +References moSimpleMoveTabuList$<$ M $>$::tabuList.\index{moSimpleMoveTabuList@{moSimpleMoveTabuList}!add@{add}} +\index{add@{add}!moSimpleMoveTabuList@{moSimpleMoveTabuList}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ void {\bf moSimpleMoveTabuList}$<$ M $>$::add (const M \& {\em \_\-move}, const {\bf EOT} \& {\em \_\-solution})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_simple_move_tabu_list_e6c0835fbfab2bdc63097cf2fd5328aa} + + +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 \_\-solution}]the origianl solution associated to this move. \end{description} +\end{Desc} + + +Implements {\bf moTabuList$<$ M $>$} \doxyref{}{p.}{classmo_tabu_list_55204939b6d67b6d37b4af725d70cf6d}. + +Definition at line 86 of file moSimpleMoveTabuList.h. + +References moSimpleMoveTabuList$<$ M $>$::memory\_\-maximum\_\-size, moSimpleMoveTabuList$<$ M $>$::memory\_\-size, moSimpleMoveTabuList$<$ M $>$::removeMove(), and moSimpleMoveTabuList$<$ M $>$::tabuList.\index{moSimpleMoveTabuList@{moSimpleMoveTabuList}!update@{update}} +\index{update@{update}!moSimpleMoveTabuList@{moSimpleMoveTabuList}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ void {\bf moSimpleMoveTabuList}$<$ 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 moTabuList$<$ M $>$} \doxyref{}{p.}{classmo_tabu_list_a2e5d1132f064093c8ed57046405f5ca}. + +Definition at line 110 of file moSimpleMoveTabuList.h.\index{moSimpleMoveTabuList@{moSimpleMoveTabuList}!init@{init}} +\index{init@{init}!moSimpleMoveTabuList@{moSimpleMoveTabuList}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ void {\bf moSimpleMoveTabuList}$<$ 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 moTabuList$<$ M $>$} \doxyref{}{p.}{classmo_tabu_list_0a06c459d56e8e2b408a8f3c6aec4e57}. + +Definition at line 115 of file moSimpleMoveTabuList.h.\index{moSimpleMoveTabuList@{moSimpleMoveTabuList}!removeMove@{removeMove}} +\index{removeMove@{removeMove}!moSimpleMoveTabuList@{moSimpleMoveTabuList}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ void {\bf moSimpleMoveTabuList}$<$ M $>$::removeMove (const M \& {\em \_\-move})\hspace{0.3cm}{\tt [inline, private]}}\label{classmo_simple_move_tabu_list_922ac2e3c45cbb94698517265be95de5} + + +Procedure that removes a given move from the tabu list (if it is into, else do nothing). + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-move}]A given \doxyref{moMove}{p.}{classmo_move}. \end{description} +\end{Desc} + + +Definition at line 126 of file moSimpleMoveTabuList.h. + +References moSimpleMoveTabuList$<$ M $>$::tabuList. + +Referenced by moSimpleMoveTabuList$<$ M $>$::add(). + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moSimpleMoveTabuList.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_simple_solution_tabu_list.eps b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_simple_solution_tabu_list.eps new file mode 100644 index 000000000..06f8e8fc5 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_simple_solution_tabu_list.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 400 +%%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 1.25 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 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 +(eoBF< A1, A2, R >) cw +(eoFunctorBase) 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 + (eoBF< A1, A2, R >) 0 2 box + (eoFunctorBase) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_simple_solution_tabu_list.tex b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_simple_solution_tabu_list.tex new file mode 100644 index 000000000..4706babdc --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_simple_solution_tabu_list.tex @@ -0,0 +1,162 @@ +\section{moSimpleSolutionTabuList$<$ M $>$ Class Template Reference} +\label{classmo_simple_solution_tabu_list}\index{moSimpleSolutionTabuList@{moSimpleSolutionTabuList}} +Class describing a solution tabu list with limited length. + + +{\tt \#include $<$moSimpleSolutionTabuList.h$>$} + +Inheritance diagram for moSimpleSolutionTabuList$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{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}\item +typedef std::list$<$ {\bf EOT} $>$::iterator {\bf solutionIterator}\label{classmo_simple_solution_tabu_list_3438db9ed9e1a94a24c418d8cbadec54} + +\begin{CompactList}\small\item\em Alias for an iterator of a solution list. \item\end{CompactList}\end{CompactItemize} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf moSimpleSolutionTabuList} (unsigned int \_\-memory\_\-maximum\_\-size) +\begin{CompactList}\small\item\em Constructor. \item\end{CompactList}\item +bool {\bf operator()} (const M \&\_\-move, const {\bf EOT} \&\_\-solution) +\begin{CompactList}\small\item\em {\bf 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} \&\_\-solution) +\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 Member Functions} +\begin{CompactItemize} +\item +void {\bf removeSolution} (const {\bf EOT} \&\_\-solution) +\begin{CompactList}\small\item\em Procedure that removes a given solution from the tabu list (if it is into, else does nothing). \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +unsigned int {\bf memory\_\-maximum\_\-size}\label{classmo_simple_solution_tabu_list_06631e7b9a2511e3c11540aa14b9e636} + +\begin{CompactList}\small\item\em The maximum size of the tabu list. \item\end{CompactList}\item +unsigned int {\bf memory\_\-size}\label{classmo_simple_solution_tabu_list_0d54e6b0af0e6088aafae596392c9490} + +\begin{CompactList}\small\item\em The current size of the tabu list. \item\end{CompactList}\item +std::list$<$ {\bf EOT} $>$ {\bf tabuList}\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 moSimpleSolutionTabuList$<$ M $>$} + +Class describing a solution tabu list with limited length. + +Definition at line 46 of file moSimpleSolutionTabuList.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moSimpleSolutionTabuList@{moSimpleSolutionTabuList}!moSimpleSolutionTabuList@{moSimpleSolutionTabuList}} +\index{moSimpleSolutionTabuList@{moSimpleSolutionTabuList}!moSimpleSolutionTabuList@{moSimpleSolutionTabuList}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ {\bf moSimpleSolutionTabuList}$<$ M $>$::{\bf moSimpleSolutionTabuList} (unsigned int {\em \_\-memory\_\-maximum\_\-size})\hspace{0.3cm}{\tt [inline]}}\label{classmo_simple_solution_tabu_list_8499bf947de47519d155e9e45f815d41} + + +Constructor. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-memory\_\-maximum\_\-size}]The maximum size of the solution tabu list. \end{description} +\end{Desc} + + +Definition at line 60 of file moSimpleSolutionTabuList.h. + +\subsection{Member Function Documentation} +\index{moSimpleSolutionTabuList@{moSimpleSolutionTabuList}!operator()@{operator()}} +\index{operator()@{operator()}!moSimpleSolutionTabuList@{moSimpleSolutionTabuList}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ bool {\bf moSimpleSolutionTabuList}$<$ M $>$::operator() (const M \& {\em \_\-move}, const {\bf EOT} \& {\em \_\-solution})\hspace{0.3cm}{\tt [inline]}}\label{classmo_simple_solution_tabu_list_9052858ae3e6765cbe4c344bdae6c692} + + +{\bf 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{moMove}{p.}{classmo_move}. \item[{\em \_\-solution}]A solution. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]true or false. \end{Desc} + + +Definition at line 69 of file moSimpleSolutionTabuList.h. + +References moSimpleSolutionTabuList$<$ M $>$::tabuList.\index{moSimpleSolutionTabuList@{moSimpleSolutionTabuList}!add@{add}} +\index{add@{add}!moSimpleSolutionTabuList@{moSimpleSolutionTabuList}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ void {\bf moSimpleSolutionTabuList}$<$ M $>$::add (const M \& {\em \_\-move}, const {\bf EOT} \& {\em \_\-solution})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_simple_solution_tabu_list_58ae13e7642c429ea51ff679a932aceb} + + +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 \_\-solution}]the origianl solution associated to this move. \end{description} +\end{Desc} + + +Implements {\bf moTabuList$<$ M $>$} \doxyref{}{p.}{classmo_tabu_list_55204939b6d67b6d37b4af725d70cf6d}. + +Definition at line 89 of file moSimpleSolutionTabuList.h. + +References moSimpleSolutionTabuList$<$ M $>$::memory\_\-maximum\_\-size, moSimpleSolutionTabuList$<$ M $>$::memory\_\-size, moSimpleSolutionTabuList$<$ M $>$::removeSolution(), and moSimpleSolutionTabuList$<$ M $>$::tabuList.\index{moSimpleSolutionTabuList@{moSimpleSolutionTabuList}!update@{update}} +\index{update@{update}!moSimpleSolutionTabuList@{moSimpleSolutionTabuList}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ void {\bf moSimpleSolutionTabuList}$<$ 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 moTabuList$<$ M $>$} \doxyref{}{p.}{classmo_tabu_list_a2e5d1132f064093c8ed57046405f5ca}. + +Definition at line 115 of file moSimpleSolutionTabuList.h.\index{moSimpleSolutionTabuList@{moSimpleSolutionTabuList}!init@{init}} +\index{init@{init}!moSimpleSolutionTabuList@{moSimpleSolutionTabuList}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ void {\bf moSimpleSolutionTabuList}$<$ 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 moTabuList$<$ M $>$} \doxyref{}{p.}{classmo_tabu_list_0a06c459d56e8e2b408a8f3c6aec4e57}. + +Definition at line 120 of file moSimpleSolutionTabuList.h.\index{moSimpleSolutionTabuList@{moSimpleSolutionTabuList}!removeSolution@{removeSolution}} +\index{removeSolution@{removeSolution}!moSimpleSolutionTabuList@{moSimpleSolutionTabuList}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ void {\bf moSimpleSolutionTabuList}$<$ M $>$::removeSolution (const {\bf EOT} \& {\em \_\-solution})\hspace{0.3cm}{\tt [inline, private]}}\label{classmo_simple_solution_tabu_list_e4a57001a201e1fb7446902381a7ac7d} + + +Procedure that removes a given solution from the tabu list (if it is into, else does nothing). + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-solution}]A given solution. \end{description} +\end{Desc} + + +Definition at line 131 of file moSimpleSolutionTabuList.h. + +References moSimpleSolutionTabuList$<$ M $>$::tabuList. + +Referenced by moSimpleSolutionTabuList$<$ M $>$::add(). + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moSimpleSolutionTabuList.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_sol_continue.eps b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_sol_continue.eps new file mode 100644 index 000000000..3914bf1d9 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_sol_continue.eps @@ -0,0 +1,223 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 96.6184 +%%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.175 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 4 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 +(moSolContinue< EOT >) cw +(eoUF< const EOT &, bool >) cw +(eoFunctorBase) cw +(moFitSolContinue< EOT >) cw +(moGenSolContinue< EOT >) cw +(moNoFitImprSolContinue< EOT >) cw +(moSteadyFitSolContinue< EOT >) 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 ----- + + (moSolContinue< EOT >) 1.5 1 box + (eoUF< const EOT &, bool >) 1.5 2 box + (eoFunctorBase) 1.5 3 box + (moFitSolContinue< EOT >) 0 0 box + (moGenSolContinue< EOT >) 1 0 box + (moNoFitImprSolContinue< EOT >) 2 0 box + (moSteadyFitSolContinue< EOT >) 3 0 box + +% ----- relations ----- + +solid +0 1.5 1 out +solid +1 1.5 2 in +solid +0 1.5 2 out +solid +1 1.5 3 in +solid +1 1.5 0.25 out +solid +0 3 1 conn +solid +0 0 0.75 in +solid +0 1 0.75 in +solid +0 2 0.75 in +solid +0 3 0.75 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_sol_continue.tex b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_sol_continue.tex new file mode 100644 index 000000000..04ba970c0 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_sol_continue.tex @@ -0,0 +1,44 @@ +\section{moSolContinue$<$ EOT $>$ Class Template Reference} +\label{classmo_sol_continue}\index{moSolContinue@{moSolContinue}} +Class that describes a stop criterion for a solution-based heuristic. + + +{\tt \#include $<$moSolContinue.h$>$} + +Inheritance diagram for moSolContinue$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.70531cm]{classmo_sol_continue} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +virtual void {\bf init} ()=0 +\begin{CompactList}\small\item\em Procedure which initialises all that the stop criterion needs. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class moSolContinue$<$ EOT $>$} + +Class that describes a stop criterion for a solution-based heuristic. + +It allows to add an initialisation procedure to an object that is a unary function ({\bf eoUF}). + +Definition at line 48 of file moSolContinue.h. + +\subsection{Member Function Documentation} +\index{moSolContinue@{moSolContinue}!init@{init}} +\index{init@{init}!moSolContinue@{moSolContinue}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ virtual void {\bf moSolContinue}$<$ EOT $>$::init ()\hspace{0.3cm}{\tt [pure virtual]}}\label{classmo_sol_continue_064dc966a210f4ffb9515be3f03ca4c7} + + +Procedure which initialises all that the stop criterion needs. + +Generally, it allocates some data structures or initialises some counters. + +Implemented in {\bf moFitSolContinue$<$ EOT $>$} \doxyref{}{p.}{classmo_fit_sol_continue_670bd895b4edfcd3aebb40d2295d7f7c}, {\bf moGenSolContinue$<$ EOT $>$} \doxyref{}{p.}{classmo_gen_sol_continue_6c5db8182157584b56507cc9075602d4}, {\bf moNoFitImprSolContinue$<$ EOT $>$} \doxyref{}{p.}{classmo_no_fit_impr_sol_continue_21641c0a38a4501baae6133cbc591de4}, and {\bf moSteadyFitSolContinue$<$ EOT $>$} \doxyref{}{p.}{classmo_steady_fit_sol_continue_87563493addc8e4b58982c55a67179b9}. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moSolContinue.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_steady_fit_sol_continue.eps b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_steady_fit_sol_continue.eps new file mode 100644 index 000000000..944e80b1e --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_steady_fit_sol_continue.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 388.35 +%%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 1.2875 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 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 +(moSteadyFitSolContinue< EOT >) cw +(moSolContinue< EOT >) cw +(eoUF< const EOT &, bool >) cw +(eoFunctorBase) 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 ----- + + (moSteadyFitSolContinue< EOT >) 0 0 box + (moSolContinue< EOT >) 0 1 box + (eoUF< const EOT &, bool >) 0 2 box + (eoFunctorBase) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_steady_fit_sol_continue.tex b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_steady_fit_sol_continue.tex new file mode 100644 index 000000000..a30d99821 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_steady_fit_sol_continue.tex @@ -0,0 +1,118 @@ +\section{moSteadyFitSolContinue$<$ EOT $>$ Class Template Reference} +\label{classmo_steady_fit_sol_continue}\index{moSteadyFitSolContinue@{moSteadyFitSolContinue}} +One possible stopping criterion for a solution-based heuristic. + + +{\tt \#include $<$moSteadyFitSolContinue.h$>$} + +Inheritance diagram for moSteadyFitSolContinue$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmo_steady_fit_sol_continue} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{CompactItemize} +\item +typedef EOT::Fitness {\bf Fitness}\label{classmo_steady_fit_sol_continue_c289721abbbafe50f6e3b8305dd31007} + +\begin{CompactList}\small\item\em Alias for the fitness. \item\end{CompactList}\end{CompactItemize} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf moSteadyFitSolContinue} (unsigned int \_\-maxNumberOfIterations, unsigned int \_\-maxNumberOfIterationWithoutImprovement) +\begin{CompactList}\small\item\em Basic constructor. \item\end{CompactList}\item +bool {\bf operator()} (const EOT \&\_\-solution) +\begin{CompactList}\small\item\em {\bf Function} that activates the stopping criterion. \item\end{CompactList}\item +void {\bf init} () +\begin{CompactList}\small\item\em Procedure which allows to initialise the stuff needed. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +unsigned int {\bf maxNumberOfIterations}\label{classmo_steady_fit_sol_continue_36b43c2a252887ad027165ac32393fe8} + +\begin{CompactList}\small\item\em Maximum number of iterations before considering the fitness. \item\end{CompactList}\item +unsigned int {\bf maxNumberOfIterationsWithoutImprovement}\label{classmo_steady_fit_sol_continue_cde593c09f497a5fa66ff62732544f40} + +\begin{CompactList}\small\item\em Maximum number of iterations without improvement allowed. \item\end{CompactList}\item +bool {\bf maxNumberOfIterationsReached}\label{classmo_steady_fit_sol_continue_7d88c0eb91b2a12121ba1c3ae9139887} + +\begin{CompactList}\small\item\em Flag that indicates that the maxNumberIteration have been reached. \item\end{CompactList}\item +bool {\bf firstFitnessSaved}\label{classmo_steady_fit_sol_continue_025bf2789e470fdde989eee9121035c3} + +\begin{CompactList}\small\item\em Flag that this is the first time that the fitness is used. \item\end{CompactList}\item +{\bf Fitness} {\bf fitness}\label{classmo_steady_fit_sol_continue_a5c62e7049b36f6e71e92b559568c09e} + +\begin{CompactList}\small\item\em Current Fitness. \item\end{CompactList}\item +unsigned int {\bf counter}\label{classmo_steady_fit_sol_continue_245c9099a2c40dfc4f34b3ff216d13ce} + +\begin{CompactList}\small\item\em The iteration couter. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class moSteadyFitSolContinue$<$ EOT $>$} + +One possible stopping criterion for a solution-based heuristic. + +The stop criterion corresponds to a maximum number of iterations without improvement (after a minimum number of iterations). + +Definition at line 46 of file moSteadyFitSolContinue.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moSteadyFitSolContinue@{moSteadyFitSolContinue}!moSteadyFitSolContinue@{moSteadyFitSolContinue}} +\index{moSteadyFitSolContinue@{moSteadyFitSolContinue}!moSteadyFitSolContinue@{moSteadyFitSolContinue}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ {\bf moSteadyFitSolContinue}$<$ EOT $>$::{\bf moSteadyFitSolContinue} (unsigned int {\em \_\-maxNumberOfIterations}, unsigned int {\em \_\-maxNumberOfIterationWithoutImprovement})\hspace{0.3cm}{\tt [inline]}}\label{classmo_steady_fit_sol_continue_c5e0e998b73e3a48ca3e87f4f816569b} + + +Basic constructor. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-maxNumberOfIterations}]The number of iterations to reach before looking for the fitness. \item[{\em \_\-maxNumberOfIterationWithoutImprovement}]The number of iterations without fitness improvement to reach for stop. \end{description} +\end{Desc} + + +Definition at line 58 of file moSteadyFitSolContinue.h. + +\subsection{Member Function Documentation} +\index{moSteadyFitSolContinue@{moSteadyFitSolContinue}!operator()@{operator()}} +\index{operator()@{operator()}!moSteadyFitSolContinue@{moSteadyFitSolContinue}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ bool {\bf moSteadyFitSolContinue}$<$ EOT $>$::operator() (const EOT \& {\em \_\-solution})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_steady_fit_sol_continue_f7432bccb768d50a2fef248c2b174904} + + +{\bf Function} that activates the stopping criterion. + +Indicates if the fitness has not been improved since a number of iterations (after a minimum of iterations). + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-solution}]the current solution. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]true or false. \end{Desc} + + +Implements {\bf eoUF$<$ const EOT \&, bool $>$}. + +Definition at line 70 of file moSteadyFitSolContinue.h. + +References moSteadyFitSolContinue$<$ EOT $>$::counter, moSteadyFitSolContinue$<$ EOT $>$::firstFitnessSaved, moSteadyFitSolContinue$<$ EOT $>$::fitness, moSteadyFitSolContinue$<$ EOT $>$::maxNumberOfIterations, moSteadyFitSolContinue$<$ EOT $>$::maxNumberOfIterationsReached, and moSteadyFitSolContinue$<$ EOT $>$::maxNumberOfIterationsWithoutImprovement.\index{moSteadyFitSolContinue@{moSteadyFitSolContinue}!init@{init}} +\index{init@{init}!moSteadyFitSolContinue@{moSteadyFitSolContinue}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void {\bf moSteadyFitSolContinue}$<$ EOT $>$::init ()\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_steady_fit_sol_continue_87563493addc8e4b58982c55a67179b9} + + +Procedure which allows to initialise the stuff needed. + +It can be also used to reinitialize the counter all the needed things. + +Implements {\bf moSolContinue$<$ EOT $>$} \doxyref{}{p.}{classmo_sol_continue_064dc966a210f4ffb9515be3f03ca4c7}. + +Definition at line 114 of file moSteadyFitSolContinue.h. + +References moSteadyFitSolContinue$<$ EOT $>$::counter, moSteadyFitSolContinue$<$ EOT $>$::firstFitnessSaved, and moSteadyFitSolContinue$<$ EOT $>$::maxNumberOfIterationsReached. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moSteadyFitSolContinue.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_t_s.tex b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_t_s.tex new file mode 100644 index 000000000..4d16a15ef --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_t_s.tex @@ -0,0 +1,113 @@ +\section{moTS$<$ M $>$ Class Template Reference} +\label{classmo_t_s}\index{moTS@{moTS}} +Tabu Search (TS). + + +{\tt \#include $<$moTS.h$>$} + +Inherits {\bf moAlgo$<$ M::EOType $>$}. + +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf moTS} ({\bf moMoveInit}$<$ M $>$ \&\_\-move\_\-initializer, {\bf moNextMove}$<$ M $>$ \&\_\-next\_\-move\_\-generator, {\bf moMoveIncrEval}$<$ M $>$ \&\_\-incremental\_\-evaluation, {\bf moTabuList}$<$ M $>$ \&\_\-tabu\_\-list, {\bf moAspirCrit}$<$ M $>$ \&\_\-aspiration\_\-criterion, {\bf moSolContinue}$<$ {\bf EOT} $>$ \&\_\-continue, {\bf eoEvalFunc}$<$ {\bf EOT} $>$ \&\_\-full\_\-evaluation) +\begin{CompactList}\small\item\em Constructor of a \doxyref{moTS}{p.}{classmo_t_s} specifying all the boxes. \item\end{CompactList}\item +{\bf moTS} ({\bf moMoveExpl}$<$ M $>$ \&\_\-move\_\-explorer, {\bf moSolContinue}$<$ {\bf EOT} $>$ \&\_\-continue, {\bf eoEvalFunc}$<$ {\bf EOT} $>$ \&\_\-full\_\-evaluation) +\begin{CompactList}\small\item\em Constructor with less parameters. \item\end{CompactList}\item +bool {\bf operator()} ({\bf EOT} \&\_\-solution) +\begin{CompactList}\small\item\em {\bf Function} which launchs the Tabu Search. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Types} +\begin{CompactItemize} +\item +typedef M::EOType {\bf EOT}\label{classmo_t_s_90d19d468c12ab5bd796948ce1ce79b1} + +\begin{CompactList}\small\item\em Alias for the type. \item\end{CompactList}\item +typedef EOT::Fitness {\bf Fitness}\label{classmo_t_s_aa0eefbb17111422e495d1255f876fca} + +\begin{CompactList}\small\item\em Alias for the fitness. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +{\bf moMoveExpl}$<$ M $>$ \& {\bf move\_\-explorer}\label{classmo_t_s_9fd948a2c586f1991f5a1eee927af8a6} + +\begin{CompactList}\small\item\em Neighborhood explorer. \item\end{CompactList}\item +{\bf moSolContinue}$<$ {\bf EOT} $>$ \& {\bf continu}\label{classmo_t_s_962a37393faf5239e657388d375cd9b3} + +\begin{CompactList}\small\item\em Stop criterion. \item\end{CompactList}\item +{\bf eoEvalFunc}$<$ {\bf EOT} $>$ \& {\bf full\_\-evaluation}\label{classmo_t_s_f44bb408007e2bff99f7a201842e8e48} + +\begin{CompactList}\small\item\em Full evaluation function. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class moTS$<$ M $>$} + +Tabu Search (TS). + +Generic algorithm that describes a tabu search. + +Definition at line 50 of file moTS.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moTS@{moTS}!moTS@{moTS}} +\index{moTS@{moTS}!moTS@{moTS}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ {\bf moTS}$<$ M $>$::{\bf moTS} ({\bf moMoveInit}$<$ M $>$ \& {\em \_\-move\_\-initializer}, {\bf moNextMove}$<$ M $>$ \& {\em \_\-next\_\-move\_\-generator}, {\bf moMoveIncrEval}$<$ M $>$ \& {\em \_\-incremental\_\-evaluation}, {\bf moTabuList}$<$ M $>$ \& {\em \_\-tabu\_\-list}, {\bf moAspirCrit}$<$ M $>$ \& {\em \_\-aspiration\_\-criterion}, {\bf moSolContinue}$<$ {\bf EOT} $>$ \& {\em \_\-continue}, {\bf eoEvalFunc}$<$ {\bf EOT} $>$ \& {\em \_\-full\_\-evaluation})\hspace{0.3cm}{\tt [inline]}}\label{classmo_t_s_336408ddf8b7a29ffa8e01e9c18d8e10} + + +Constructor of a \doxyref{moTS}{p.}{classmo_t_s} specifying all the boxes. + +In this constructor, a \doxyref{moTSMoveLoopExpl}{p.}{classmo_t_s_move_loop_expl} is instanciated. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-move\_\-initializer}]The move initializer. \item[{\em \_\-next\_\-move\_\-generator}]The neighbourhood explorer. \item[{\em \_\-incremental\_\-evaluation}]The (generally) efficient evaluation. \item[{\em \_\-tabu\_\-list}]The tabu list. \item[{\em \_\-aspiration\_\-criterion}]An aspiration criterion. \item[{\em \_\-continue}]The stopping criterion. \item[{\em \_\-full\_\-evaluation}]A full evaluation function. \end{description} +\end{Desc} + + +Definition at line 72 of file moTS.h.\index{moTS@{moTS}!moTS@{moTS}} +\index{moTS@{moTS}!moTS@{moTS}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ {\bf moTS}$<$ M $>$::{\bf moTS} ({\bf moMoveExpl}$<$ M $>$ \& {\em \_\-move\_\-explorer}, {\bf moSolContinue}$<$ {\bf EOT} $>$ \& {\em \_\-continue}, {\bf eoEvalFunc}$<$ {\bf EOT} $>$ \& {\em \_\-full\_\-evaluation})\hspace{0.3cm}{\tt [inline]}}\label{classmo_t_s_7e435fac1b8d5a410b7374d114e005e2} + + +Constructor with less parameters. + +The explorer is given in the parameters. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-move\_\-explorer}]The explorer (generally different that a \doxyref{moTSMoveLoopExpl}{p.}{classmo_t_s_move_loop_expl}). \item[{\em \_\-continue}]The stopping criterion. \item[{\em \_\-full\_\-evaluation}]A full evaluation function. \end{description} +\end{Desc} + + +Definition at line 89 of file moTS.h. + +\subsection{Member Function Documentation} +\index{moTS@{moTS}!operator()@{operator()}} +\index{operator()@{operator()}!moTS@{moTS}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ bool {\bf moTS}$<$ M $>$::operator() ({\bf EOT} \& {\em \_\-solution})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_t_s_2a011779723e24a5132a37593775bf56} + + +{\bf Function} which launchs the Tabu Search. + +Algorithm of the tabu search. As a \doxyref{moSA}{p.}{classmo_s_a} or a \doxyref{moHC}{p.}{classmo_h_c}, it can be used for HYBRIDATION in an evolutionary algorithm. For security a lock (pthread\_\-mutex\_\-t) is closed during the algorithm. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-solution}]a solution to improve. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]TRUE. \end{Desc} + + +Implements {\bf eoUF$<$ M::EOType \&, bool $>$}. + +Definition at line 102 of file moTS.h. + +References moTS$<$ M $>$::continu, moTS$<$ M $>$::full\_\-evaluation, and moTS$<$ M $>$::move\_\-explorer. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moTS.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_t_s_move_loop_expl.eps b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_t_s_move_loop_expl.eps new file mode 100644 index 000000000..fd31fc02a --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_t_s_move_loop_expl.eps @@ -0,0 +1,215 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 327.869 +%%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 1.525 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 5 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 +(moTSMoveLoopExpl< M >) cw +(moMoveLoopExpl< M >) cw +(moMoveExpl< M >) cw +(eoBF< const M::EOType &, M::EOType &, void >) cw +(eoFunctorBase) 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 ----- + + (moTSMoveLoopExpl< M >) 0 0 box + (moMoveLoopExpl< M >) 0 1 box + (moMoveExpl< M >) 0 2 box + (eoBF< const M::EOType &, M::EOType &, void >) 0 3 box + (eoFunctorBase) 0 4 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in +solid +0 0 3 out +solid +1 0 4 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_t_s_move_loop_expl.tex b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_t_s_move_loop_expl.tex new file mode 100644 index 000000000..3b32dfa1c --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_t_s_move_loop_expl.tex @@ -0,0 +1,106 @@ +\section{moTSMoveLoopExpl$<$ M $>$ Class Template Reference} +\label{classmo_t_s_move_loop_expl}\index{moTSMoveLoopExpl@{moTSMoveLoopExpl}} +Explorer for a Tabu Search algorithm. + + +{\tt \#include $<$moTSMoveLoopExpl.h$>$} + +Inheritance diagram for moTSMoveLoopExpl$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=5cm]{classmo_t_s_move_loop_expl} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf moTSMoveLoopExpl} ({\bf moMoveInit}$<$ M $>$ \&\_\-move\_\-initializer, {\bf moNextMove}$<$ M $>$ \&\_\-next\_\-move\_\-generator, {\bf moMoveIncrEval}$<$ M $>$ \&\_\-incremental\_\-evaluation, {\bf moTabuList}$<$ M $>$ \&\_\-tabu\_\-list, {\bf moAspirCrit}$<$ M $>$ \&\_\-aspiration\_\-criterion) +\begin{CompactList}\small\item\em Constructor. \item\end{CompactList}\item +void {\bf operator()} (const {\bf EOT} \&\_\-old\_\-solution, {\bf EOT} \&\_\-new\_\-solution) +\begin{CompactList}\small\item\em Procedure which lauches the exploration. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Types} +\begin{CompactItemize} +\item +typedef M::EOType {\bf EOT}\label{classmo_t_s_move_loop_expl_47f42225e2ed096374b818bdb848a527} + +\begin{CompactList}\small\item\em Alias for the type. \item\end{CompactList}\item +typedef M::EOType::Fitness {\bf Fitness}\label{classmo_t_s_move_loop_expl_a1ba36c937b195ca2f7d1a24adaa7018} + +\begin{CompactList}\small\item\em Alias for the fitness. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +{\bf moMoveInit}$<$ M $>$ \& {\bf move\_\-initializer}\label{classmo_t_s_move_loop_expl_cd680d22382b9941d2c34133a641d443} + +\begin{CompactList}\small\item\em Move initialisation. \item\end{CompactList}\item +{\bf moNextMove}$<$ M $>$ \& {\bf next\_\-move\_\-generator}\label{classmo_t_s_move_loop_expl_a2bbb593af2beefb05a307277c22b3d5} + +\begin{CompactList}\small\item\em Neighborhood explorer. \item\end{CompactList}\item +{\bf moMoveIncrEval}$<$ M $>$ \& {\bf incremental\_\-evaluation}\label{classmo_t_s_move_loop_expl_491fa46e1cb7935cb515b27b85bf8765} + +\begin{CompactList}\small\item\em Efficient evaluation. \item\end{CompactList}\item +{\bf moBestImprSelect}$<$ M $>$ {\bf move\_\-selection}\label{classmo_t_s_move_loop_expl_1caa6939fbe65ec4255e9e6dc3ce333b} + +\begin{CompactList}\small\item\em Move selector. \item\end{CompactList}\item +{\bf moTabuList}$<$ M $>$ \& {\bf tabu\_\-list}\label{classmo_t_s_move_loop_expl_0e5988a940ba218e87c53b7e56d79790} + +\begin{CompactList}\small\item\em Tabu list. \item\end{CompactList}\item +{\bf moAspirCrit}$<$ M $>$ \& {\bf aspiration\_\-criterion}\label{classmo_t_s_move_loop_expl_bdfc8efb22599c150b3c3d44cd416b09} + +\begin{CompactList}\small\item\em Aspiration criterion. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class moTSMoveLoopExpl$<$ M $>$} + +Explorer for a Tabu Search algorithm. + +It is used by a \doxyref{moTS}{p.}{classmo_t_s}. + +Definition at line 53 of file moTSMoveLoopExpl.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moTSMoveLoopExpl@{moTSMoveLoopExpl}!moTSMoveLoopExpl@{moTSMoveLoopExpl}} +\index{moTSMoveLoopExpl@{moTSMoveLoopExpl}!moTSMoveLoopExpl@{moTSMoveLoopExpl}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ {\bf moTSMoveLoopExpl}$<$ M $>$::{\bf moTSMoveLoopExpl} ({\bf moMoveInit}$<$ M $>$ \& {\em \_\-move\_\-initializer}, {\bf moNextMove}$<$ M $>$ \& {\em \_\-next\_\-move\_\-generator}, {\bf moMoveIncrEval}$<$ M $>$ \& {\em \_\-incremental\_\-evaluation}, {\bf moTabuList}$<$ M $>$ \& {\em \_\-tabu\_\-list}, {\bf moAspirCrit}$<$ M $>$ \& {\em \_\-aspiration\_\-criterion})\hspace{0.3cm}{\tt [inline]}}\label{classmo_t_s_move_loop_expl_be5cf0853777718c3bbcbef456b50bc7} + + +Constructor. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-move\_\-initializer}]The move initializer. \item[{\em \_\-next\_\-move\_\-generator}]The neighbourhood explorer. \item[{\em \_\-incremental\_\-evaluation}]A (generally) efficient evaluation. \item[{\em \_\-tabu\_\-list}]The tabu list. \item[{\em \_\-aspiration\_\-criterion}]An aspiration criterion. \end{description} +\end{Desc} + + +Definition at line 71 of file moTSMoveLoopExpl.h. + +References moTSMoveLoopExpl$<$ M $>$::aspiration\_\-criterion, and moTSMoveLoopExpl$<$ M $>$::tabu\_\-list. + +\subsection{Member Function Documentation} +\index{moTSMoveLoopExpl@{moTSMoveLoopExpl}!operator()@{operator()}} +\index{operator()@{operator()}!moTSMoveLoopExpl@{moTSMoveLoopExpl}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ void {\bf moTSMoveLoopExpl}$<$ M $>$::operator() (const {\bf EOT} \& {\em \_\-old\_\-solution}, {\bf EOT} \& {\em \_\-new\_\-solution})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_t_s_move_loop_expl_853743f2e21def3ea129556f47fafa55} + + +Procedure which lauches the exploration. + +The exploration continues while the chosen move is not in the tabu list or the aspiration criterion is true. If these 2 conditions are not true, the exploration stops if the move selector update function returns false. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-old\_\-solution}]the initial solution \item[{\em \_\-new\_\-solution}]the new solution \end{description} +\end{Desc} + + +Implements {\bf eoBF$<$ const M::EOType \&, M::EOType \&, void $>$}. + +Definition at line 90 of file moTSMoveLoopExpl.h. + +References moTSMoveLoopExpl$<$ M $>$::aspiration\_\-criterion, moTSMoveLoopExpl$<$ M $>$::incremental\_\-evaluation, moTSMoveLoopExpl$<$ M $>$::move\_\-initializer, moTSMoveLoopExpl$<$ M $>$::move\_\-selection, moTSMoveLoopExpl$<$ M $>$::next\_\-move\_\-generator, and moTSMoveLoopExpl$<$ M $>$::tabu\_\-list. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moTSMoveLoopExpl.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_tabu_list.eps b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_tabu_list.eps new file mode 100644 index 000000000..43c125a8a --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_tabu_list.eps @@ -0,0 +1,215 @@ +%!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 4 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 +(eoBF< A1, A2, R >) cw +(eoFunctorBase) 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 + (eoBF< A1, A2, R >) 0.5 2 box + (eoFunctorBase) 0.5 3 box + (moSimpleMoveTabuList< M >) 0 0 box + (moSimpleSolutionTabuList< M >) 1 0 box + +% ----- relations ----- + +solid +0 0.5 1 out +solid +1 0.5 2 in +solid +0 0.5 2 out +solid +1 0.5 3 in +solid +1 0.5 0.25 out +solid +0 1 1 conn +solid +0 0 0.75 in +solid +0 1 0.75 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_tabu_list.tex b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_tabu_list.tex new file mode 100644 index 000000000..b940647c0 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/classmo_tabu_list.tex @@ -0,0 +1,79 @@ +\section{moTabuList$<$ M $>$ Class Template Reference} +\label{classmo_tabu_list}\index{moTabuList@{moTabuList}} +Class describing a tabu list that a \doxyref{moTS}{p.}{classmo_t_s} uses. + + +{\tt \#include $<$moTabuList.h$>$} + +Inheritance diagram for moTabuList$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmo_tabu_list} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{CompactItemize} +\item +typedef M::EOType {\bf EOT}\label{classmo_tabu_list_e219715cc3fdd5626764bc50ce6357df} + +\begin{CompactList}\small\item\em Alias for the type. \item\end{CompactList}\end{CompactItemize} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +virtual void {\bf add} (const M \&\_\-move, const {\bf EOT} \&\_\-solution)=0 +\begin{CompactList}\small\item\em Procedure to add a move in the tabu list. \item\end{CompactList}\item +virtual void {\bf update} ()=0 +\begin{CompactList}\small\item\em Procedure that updates the tabu list content. \item\end{CompactList}\item +virtual void {\bf init} ()=0 +\begin{CompactList}\small\item\em Procedure which initialises the tabu list. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class moTabuList$<$ M $>$} + +Class describing a tabu list that a \doxyref{moTS}{p.}{classmo_t_s} uses. + +It is only a description, does nothing... A new object that herits from this class has to be defined in order to be used in a \doxyref{moTS}{p.}{classmo_t_s}. + +Definition at line 46 of file moTabuList.h. + +\subsection{Member Function Documentation} +\index{moTabuList@{moTabuList}!add@{add}} +\index{add@{add}!moTabuList@{moTabuList}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ virtual void {\bf moTabuList}$<$ M $>$::add (const M \& {\em \_\-move}, const {\bf EOT} \& {\em \_\-solution})\hspace{0.3cm}{\tt [pure virtual]}}\label{classmo_tabu_list_55204939b6d67b6d37b4af725d70cf6d} + + +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 \_\-solution}]the origianl solution associated to this move. \end{description} +\end{Desc} + + +Implemented in {\bf moSimpleMoveTabuList$<$ M $>$} \doxyref{}{p.}{classmo_simple_move_tabu_list_e6c0835fbfab2bdc63097cf2fd5328aa}, and {\bf moSimpleSolutionTabuList$<$ M $>$} \doxyref{}{p.}{classmo_simple_solution_tabu_list_58ae13e7642c429ea51ff679a932aceb}.\index{moTabuList@{moTabuList}!update@{update}} +\index{update@{update}!moTabuList@{moTabuList}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ virtual void {\bf moTabuList}$<$ 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. + +Implemented in {\bf moSimpleMoveTabuList$<$ M $>$} \doxyref{}{p.}{classmo_simple_move_tabu_list_96cffc8118456ed762b07b9fc0e0679f}, and {\bf moSimpleSolutionTabuList$<$ M $>$} \doxyref{}{p.}{classmo_simple_solution_tabu_list_91b8b01dba7ffea8b63765d931e56f56}.\index{moTabuList@{moTabuList}!init@{init}} +\index{init@{init}!moTabuList@{moTabuList}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ virtual void {\bf moTabuList}$<$ M $>$::init ()\hspace{0.3cm}{\tt [pure virtual]}}\label{classmo_tabu_list_0a06c459d56e8e2b408a8f3c6aec4e57} + + +Procedure which initialises the tabu list. + +Can be useful if the data structure needs to be allocated before being used. + +Implemented in {\bf moSimpleMoveTabuList$<$ M $>$} \doxyref{}{p.}{classmo_simple_move_tabu_list_b91ae9971be30769757d1ad92c6009dc}, and {\bf moSimpleSolutionTabuList$<$ M $>$} \doxyref{}{p.}{classmo_simple_solution_tabu_list_d5645c39fec71a6110a2cbccbb08b816}. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moTabuList.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/doxygen.sty b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/doxygen.sty new file mode 100644 index 000000000..d8898e955 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/doxygen.sty @@ -0,0 +1,78 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{doxygen} +\RequirePackage{calc} +\RequirePackage{array} +\pagestyle{fancyplain} +\newcommand{\clearemptydoublepage}{\newpage{\pagestyle{empty}\cleardoublepage}} +\renewcommand{\chaptermark}[1]{\markboth{#1}{}} +\renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}} +\lhead[\fancyplain{}{\bfseries\thepage}] + {\fancyplain{}{\bfseries\rightmark}} +\rhead[\fancyplain{}{\bfseries\leftmark}] + {\fancyplain{}{\bfseries\thepage}} +\rfoot[\fancyplain{}{\bfseries\scriptsize Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by Doxygen }]{} +\lfoot[]{\fancyplain{}{\bfseries\scriptsize Generated on Wed Jan 16 15:50:40 2008 for ParadisEO-MOMovingObjects by Doxygen }} +\cfoot{} +\newenvironment{Code} +{\footnotesize} +{\normalsize} +\newcommand{\doxyref}[3]{\textbf{#1} (\textnormal{#2}\,\pageref{#3})} +\newenvironment{DocInclude} +{\footnotesize} +{\normalsize} +\newenvironment{VerbInclude} +{\footnotesize} +{\normalsize} +\newenvironment{Image} +{\begin{figure}[H]} +{\end{figure}} +\newenvironment{ImageNoCaption}{}{} +\newenvironment{CompactList} +{\begin{list}{}{ + \setlength{\leftmargin}{0.5cm} + \setlength{\itemsep}{0pt} + \setlength{\parsep}{0pt} + \setlength{\topsep}{0pt} + \renewcommand{\makelabel}{\hfill}}} +{\end{list}} +\newenvironment{CompactItemize} +{ + \begin{itemize} + \setlength{\itemsep}{-3pt} + \setlength{\parsep}{0pt} + \setlength{\topsep}{0pt} + \setlength{\partopsep}{0pt} +} +{\end{itemize}} +\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp} +\newlength{\tmplength} +\newenvironment{TabularC}[1] +{ +\setlength{\tmplength} + {\linewidth/(#1)-\tabcolsep*2-\arrayrulewidth*(#1+1)/(#1)} + \par\begin{tabular*}{\linewidth} + {*{#1}{|>{\PBS\raggedright\hspace{0pt}}p{\the\tmplength}}|} +} +{\end{tabular*}\par} +\newcommand{\entrylabel}[1]{ + {\parbox[b]{\labelwidth-4pt}{\makebox[0pt][l]{\textbf{#1}}\vspace{1.5\baselineskip}}}} +\newenvironment{Desc} +{\begin{list}{} + { + \settowidth{\labelwidth}{40pt} + \setlength{\leftmargin}{\labelwidth} + \setlength{\parsep}{0pt} + \setlength{\itemsep}{-4pt} + \renewcommand{\makelabel}{\entrylabel} + } +} +{\end{list}} +\newenvironment{Indent} + {\begin{list}{}{\setlength{\leftmargin}{0.5cm}} + \item[]\ignorespaces} + {\unskip\end{list}} +\setlength{\parindent}{0cm} +\setlength{\parskip}{0.2cm} +\addtocounter{secnumdepth}{1} +\sloppy +\usepackage[T1]{fontenc} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/hierarchy.tex b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/hierarchy.tex new file mode 100644 index 000000000..6f4fa3033 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/hierarchy.tex @@ -0,0 +1,81 @@ +\section{ParadisEO-MOMovingObjects Class Hierarchy} +This inheritance list is sorted roughly, but not completely, alphabetically:\begin{CompactList} +\item eoFunctorBase{\tt [external]}\begin{CompactList} +\item eoBF$<$ A1, A2, R $>${\tt [external]}\begin{CompactList} +\item \contentsline{section}{moAspirCrit$<$ M $>$}{\pageref{classmo_aspir_crit}}{} +\begin{CompactList} +\item \contentsline{section}{moImprBestFitAspirCrit$<$ M $>$}{\pageref{classmo_impr_best_fit_aspir_crit}}{} +\item \contentsline{section}{moNoAspirCrit$<$ M $>$}{\pageref{classmo_no_aspir_crit}}{} +\end{CompactList} +\item \contentsline{section}{moComparator$<$ EOT $>$}{\pageref{classmo_comparator}}{} +\begin{CompactList} +\item \contentsline{section}{moFitComparator$<$ EOT $>$}{\pageref{classmo_fit_comparator}}{} +\end{CompactList} +\item \contentsline{section}{moLSCheckPoint$<$ M $>$}{\pageref{classmo_l_s_check_point}}{} +\item \contentsline{section}{moMoveIncrEval$<$ M $>$}{\pageref{classmo_move_incr_eval}}{} +\item \contentsline{section}{moMoveInit$<$ M $>$}{\pageref{classmo_move_init}}{} +\item \contentsline{section}{moNextMove$<$ M $>$}{\pageref{classmo_next_move}}{} +\begin{CompactList} +\item \contentsline{section}{moItRandNextMove$<$ M $>$}{\pageref{classmo_it_rand_next_move}}{} +\end{CompactList} +\item \contentsline{section}{moTabuList$<$ M $>$}{\pageref{classmo_tabu_list}}{} +\begin{CompactList} +\item \contentsline{section}{moSimpleMoveTabuList$<$ M $>$}{\pageref{classmo_simple_move_tabu_list}}{} +\item \contentsline{section}{moSimpleSolutionTabuList$<$ M $>$}{\pageref{classmo_simple_solution_tabu_list}}{} +\end{CompactList} +\end{CompactList} +\item eoBF$<$ const M::EOType \&, M::EOType \&, void $>${\tt [external]}\begin{CompactList} +\item \contentsline{section}{moMoveExpl$<$ M $>$}{\pageref{classmo_move_expl}}{} +\begin{CompactList} +\item \contentsline{section}{moMoveLoopExpl$<$ M $>$}{\pageref{classmo_move_loop_expl}}{} +\begin{CompactList} +\item \contentsline{section}{moHCMoveLoopExpl$<$ M $>$}{\pageref{classmo_h_c_move_loop_expl}}{} +\item \contentsline{section}{moTSMoveLoopExpl$<$ M $>$}{\pageref{classmo_t_s_move_loop_expl}}{} +\end{CompactList} +\end{CompactList} +\end{CompactList} +\item eoBF$<$ M \&, M::EOType::Fitness \&, void $>${\tt [external]}\begin{CompactList} +\item \contentsline{section}{moMoveSelect$<$ M $>$}{\pageref{classmo_move_select}}{} +\begin{CompactList} +\item \contentsline{section}{moBestImprSelect$<$ M $>$}{\pageref{classmo_best_impr_select}}{} +\item \contentsline{section}{moFirstImprSelect$<$ M $>$}{\pageref{classmo_first_impr_select}}{} +\item \contentsline{section}{moRandImprSelect$<$ M $>$}{\pageref{classmo_rand_impr_select}}{} +\end{CompactList} +\end{CompactList} +\item eoUF$<$ const EOT \&, bool $>${\tt [external]}\begin{CompactList} +\item \contentsline{section}{moSolContinue$<$ EOT $>$}{\pageref{classmo_sol_continue}}{} +\begin{CompactList} +\item \contentsline{section}{moFitSolContinue$<$ EOT $>$}{\pageref{classmo_fit_sol_continue}}{} +\item \contentsline{section}{moGenSolContinue$<$ EOT $>$}{\pageref{classmo_gen_sol_continue}}{} +\item \contentsline{section}{moNoFitImprSolContinue$<$ EOT $>$}{\pageref{classmo_no_fit_impr_sol_continue}}{} +\item \contentsline{section}{moSteadyFitSolContinue$<$ EOT $>$}{\pageref{classmo_steady_fit_sol_continue}}{} +\end{CompactList} +\end{CompactList} +\item eoUF$<$ double \&, bool $>${\tt [external]}\begin{CompactList} +\item \contentsline{section}{moCoolingSchedule}{\pageref{classmo_cooling_schedule}}{} +\begin{CompactList} +\item \contentsline{section}{moExponentialCoolingSchedule}{\pageref{classmo_exponential_cooling_schedule}}{} +\item \contentsline{section}{moLinearCoolingSchedule}{\pageref{classmo_linear_cooling_schedule}}{} +\end{CompactList} +\end{CompactList} +\item eoUF$<$ EOT \&, bool $>${\tt [external]}\begin{CompactList} +\item eoMonOp$<$ EOT $>${\tt [external]}\begin{CompactList} +\item \contentsline{section}{moAlgo$<$ EOT $>$}{\pageref{classmo_algo}}{} +\end{CompactList} +\end{CompactList} +\item eoUF$<$ EOT \&, void $>${\tt [external]}\begin{CompactList} +\item \contentsline{section}{moMove$<$ EOT $>$}{\pageref{classmo_move}}{} +\end{CompactList} +\item eoUF$<$ EOType \&, bool $>${\tt [external]}\item eoUF$<$ M \&, void $>${\tt [external]}\begin{CompactList} +\item \contentsline{section}{moRandMove$<$ M $>$}{\pageref{classmo_rand_move}}{} +\end{CompactList} +\item eoUF$<$ M::EOType \&, bool $>${\tt [external]}\begin{CompactList} +\item eoMonOp$<$ M::EOType $>${\tt [external]}\end{CompactList} +\end{CompactList} +\item eoOp$<$ EOType $>${\tt [external]}\begin{CompactList} +\item eoMonOp$<$ EOT $>${\tt [external]}\item eoMonOp$<$ M::EOType $>${\tt [external]}\end{CompactList} +\item \contentsline{section}{moHC$<$ M $>$}{\pageref{classmo_h_c}}{} +\item \contentsline{section}{moILS$<$ M $>$}{\pageref{classmo_i_l_s}}{} +\item \contentsline{section}{moSA$<$ M $>$}{\pageref{classmo_s_a}}{} +\item \contentsline{section}{moTS$<$ M $>$}{\pageref{classmo_t_s}}{} +\end{CompactList} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/main.tex b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/main.tex new file mode 100644 index 000000000..d5e5ec254 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/main.tex @@ -0,0 +1,18 @@ +\section{Introduction}\label{main_Introduction} +MO is an extension of the ANSI-C++ compliant evolutionary computation library {\bf EO}. \par + It contains classes for almost any kind of one solution based heuristics.\section{AUTHORS}\label{main_authors} +\begin{TabularC}{1} +\hline +Sebastien CAHON \\\hline +{\tt Jean-Charles BOISSON} \\\hline +\end{TabularC} +\section{LICENSE}\label{main_LICENSE} +This software is governed by the CeCILL license under French law and abiding by the rules of distribution of free software. You can use, modify and/ or redistribute the software under the terms of the CeCILL license as circulated by CEA, CNRS and INRIA at the following URL \char`\"{}http://www.cecill.info\char`\"{}. + +As a counterpart to the access to the source code and rights to copy, modify and redistribute granted by the license, users are provided only with a limited warranty and the software's author, the holder of the economic rights, and the successive licensors have only limited liability. + +In this respect, the user's attention is drawn to the risks associated with loading, using, modifying and/or developing or reproducing the software by the user in light of its specific status of free software, that may mean that it is complicated to manipulate, and that also therefore means that it is reserved for developers and experienced professionals having in-depth computer knowledge. Users are therefore encouraged to load and test the software's suitability as regards their requirements in conditions enabling the security of their systems and/or data to be ensured and, more generally, to use and operate it in the same conditions as regards security. The fact that you are presently reading this means that you have had knowledge of the CeCILL license and that you accept its terms. + +ParadisEO WebSite : {\tt http://paradiseo.gforge.inria.fr} Contact: {\tt paradiseo-help@lists.gforge.inria.fr}\section{Home Page}\label{main_Paradiseo} +{\tt http://paradiseo.gforge.inria.fr}\section{Installation}\label{main_Installation} +The installation procedure of the package is detailed in the {\tt README} file in the top-directory of the source-tree. \ No newline at end of file diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/refman.tex b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/refman.tex new file mode 100644 index 000000000..8032f6ef5 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/latex/refman.tex @@ -0,0 +1,75 @@ +\documentclass[a4paper]{book} +\usepackage{a4wide} +\usepackage{makeidx} +\usepackage{fancyhdr} +\usepackage{graphicx} +\usepackage{multicol} +\usepackage{float} +\usepackage{textcomp} +\usepackage{alltt} +\usepackage[utf8]{inputenc} +\usepackage{doxygen} +\makeindex +\setcounter{tocdepth}{1} +\renewcommand{\footrulewidth}{0.4pt} +\begin{document} +\begin{titlepage} +\vspace*{7cm} +\begin{center} +{\Large ParadisEO-MOMovingObjects Reference Manual\\[1ex]\large 1.0 }\\ +\vspace*{1cm} +{\large Generated by Doxygen 1.5.4}\\ +\vspace*{0.5cm} +{\small Wed Jan 16 15:50:40 2008}\\ +\end{center} +\end{titlepage} +\clearemptydoublepage +\pagenumbering{roman} +\tableofcontents +\clearemptydoublepage +\pagenumbering{arabic} +\chapter{Welcome to PARADISEO-Moving Objects } +\label{index}\input{main} +\chapter{ParadisEO-MOMovingObjects Hierarchical Index} +\input{hierarchy} +\chapter{ParadisEO-MOMovingObjects Class Index} +\input{annotated} +\chapter{ParadisEO-MOMovingObjects Class Documentation} +\input{classmo_algo} +\include{classmo_aspir_crit} +\include{classmo_best_impr_select} +\include{classmo_comparator} +\include{classmo_cooling_schedule} +\include{classmo_exponential_cooling_schedule} +\include{classmo_first_impr_select} +\include{classmo_fit_comparator} +\include{classmo_fit_sol_continue} +\include{classmo_gen_sol_continue} +\include{classmo_h_c} +\include{classmo_h_c_move_loop_expl} +\include{classmo_i_l_s} +\include{classmo_impr_best_fit_aspir_crit} +\include{classmo_it_rand_next_move} +\include{classmo_linear_cooling_schedule} +\include{classmo_l_s_check_point} +\include{classmo_move} +\include{classmo_move_expl} +\include{classmo_move_incr_eval} +\include{classmo_move_init} +\include{classmo_move_loop_expl} +\include{classmo_move_select} +\include{classmo_next_move} +\include{classmo_no_aspir_crit} +\include{classmo_no_fit_impr_sol_continue} +\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_steady_fit_sol_continue} +\include{classmo_tabu_list} +\include{classmo_t_s} +\include{classmo_t_s_move_loop_expl} +\printindex +\end{document} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moAlgo.3 b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moAlgo.3 new file mode 100644 index 000000000..66458266c --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moAlgo.3 @@ -0,0 +1,27 @@ +.TH "moAlgo" 3 "16 Jan 2008" "Version 1.0" "ParadisEO-MOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moAlgo \- Description of an algorithm of the paradiseo-mo library. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoMonOp< EOT >\fP. +.PP +.SH "Detailed Description" +.PP + +.SS "template class moAlgo< EOT >" +Description of an algorithm of the paradiseo-mo library. + +\fBmoHC\fP, \fBmoTS\fP and \fBmoSA\fP are 3 examples of algorithm of the paradiseo-mo library. +.PP +Definition at line 46 of file moAlgo.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moAspirCrit.3 b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moAspirCrit.3 new file mode 100644 index 000000000..9e18390f2 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moAspirCrit.3 @@ -0,0 +1,46 @@ +.TH "moAspirCrit" 3 "16 Jan 2008" "Version 1.0" "ParadisEO-MOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moAspirCrit \- Description of the conditions in which a tabu move could be accepted. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoBF< A1, A2, R >< const const M &, M::EOType::Fitness &, bool >\fP. +.PP +Inherited by \fBmoImprBestFitAspirCrit< M >\fP, and \fBmoNoAspirCrit< M >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "virtual void \fBinit\fP ()=0" +.br +.RI "\fIProcedure which initialises all that needs an aspiration criterion. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moAspirCrit< M >" +Description of the conditions in which a tabu move could be accepted. + +It is only a description... An object that herits from this class is needed to be used in a \fBmoTS\fP. See moNoAspriCrit for example. +.PP +Definition at line 47 of file moAspirCrit.h. +.SH "Member Function Documentation" +.PP +.SS "template virtual void \fBmoAspirCrit\fP< M >::init ()\fC [pure virtual]\fP" +.PP +Procedure which initialises all that needs an aspiration criterion. +.PP +It can be possible that this procedure does nothing... +.PP +Implemented in \fBmoImprBestFitAspirCrit< M >\fP, and \fBmoNoAspirCrit< M >\fP. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moBestImprSelect.3 b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moBestImprSelect.3 new file mode 100644 index 000000000..47ba4b7c7 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moBestImprSelect.3 @@ -0,0 +1,128 @@ +.TH "moBestImprSelect" 3 "16 Jan 2008" "Version 1.0" "ParadisEO-MOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moBestImprSelect \- One of the possible \fBmoMoveSelect\fP. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoMoveSelect< M >< M >\fP. +.PP +.SS "Public Types" + +.in +1c +.ti -1c +.RI "typedef M::EOType::Fitness \fBFitness\fP" +.br +.RI "\fIAlias for the fitness. \fP" +.in -1c +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "void \fBinit\fP (const \fBFitness\fP &_fitness)" +.br +.RI "\fIProcedure which initialise the exploration. \fP" +.ti -1c +.RI "bool \fBupdate\fP (const M &_move, const \fBFitness\fP &_fitness)" +.br +.RI "\fI\fBFunction\fP that indicates if the current move has not improved the fitness. \fP" +.ti -1c +.RI "void \fBoperator()\fP (M &_move, \fBFitness\fP &_fitness)" +.br +.RI "\fIProcedure which saved the best move and fitness. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "bool \fBfirst_time\fP" +.br +.RI "\fIAllowing to know if at least one move has been generated. \fP" +.ti -1c +.RI "M \fBbest_move\fP" +.br +.RI "\fIThe best move. \fP" +.ti -1c +.RI "\fBFitness\fP \fBbest_fitness\fP" +.br +.RI "\fIThe best fitness. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moBestImprSelect< M >" +One of the possible \fBmoMoveSelect\fP. + +All neighbors are considered, and the movement which enables the best improvement is selected. +.PP +Definition at line 47 of file moBestImprSelect.h. +.SH "Member Function Documentation" +.PP +.SS "template void \fBmoBestImprSelect\fP< M >::init (const \fBFitness\fP & _fitness)\fC [inline, virtual]\fP" +.PP +Procedure which initialise the exploration. +.PP +\fBParameters:\fP +.RS 4 +\fI_fitness\fP The current fitness. +.RE +.PP + +.PP +Implements \fBmoMoveSelect< M >\fP. +.PP +Definition at line 58 of file moBestImprSelect.h. +.PP +References moBestImprSelect< M >::first_time. +.SS "template bool \fBmoBestImprSelect\fP< M >::update (const M & _move, const \fBFitness\fP & _fitness)\fC [inline, virtual]\fP" +.PP +\fBFunction\fP that indicates if the current move has not improved the fitness. +.PP +If the given fitness enables an improvment, the move (\fBmoMove\fP) and the fitness linked to this move are saved. +.PP +\fBParameters:\fP +.RS 4 +\fI_move\fP a move. +.br +\fI_fitness\fP a fitness linked to the move. +.RE +.PP +\fBReturns:\fP +.RS 4 +TRUE if the move does not improve the fitness. +.RE +.PP + +.PP +Implements \fBmoMoveSelect< M >\fP. +.PP +Definition at line 76 of file moBestImprSelect.h. +.PP +References moBestImprSelect< M >::best_fitness, moBestImprSelect< M >::best_move, and moBestImprSelect< M >::first_time. +.SS "template void \fBmoBestImprSelect\fP< M >::operator() (M & _move, \fBFitness\fP & _fitness)\fC [inline, virtual]\fP" +.PP +Procedure which saved the best move and fitness. +.PP +\fBParameters:\fP +.RS 4 +\fI_move\fP the current move (result of the procedure). +.br +\fI_fitness\fP the current fitness (result of the procedure). +.RE +.PP + +.PP +Implements \fBeoBF< M &, M::EOType::Fitness &, void >\fP. +.PP +Definition at line 94 of file moBestImprSelect.h. +.PP +References moBestImprSelect< M >::best_fitness, moBestImprSelect< M >::best_move, and moBestImprSelect< M >::first_time. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moComparator.3 b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moComparator.3 new file mode 100644 index 000000000..a5cc82367 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moComparator.3 @@ -0,0 +1,29 @@ +.TH "moComparator" 3 "16 Jan 2008" "Version 1.0" "ParadisEO-MOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moComparator \- Template for classes which need to compare two EOT and indicate if the first is 'better' than the second. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoBF< A1, A2, R >< const const EOT &, EOT &, bool >\fP. +.PP +Inherited by \fBmoFitComparator< EOT >\fP. +.PP +.SH "Detailed Description" +.PP + +.SS "template class moComparator< EOT >" +Template for classes which need to compare two EOT and indicate if the first is 'better' than the second. + +The objects that extend this template describe how an EOT is 'better' than an other. +.PP +Definition at line 45 of file moComparator.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moCoolingSchedule.3 b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moCoolingSchedule.3 new file mode 100644 index 000000000..b0e999a18 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moCoolingSchedule.3 @@ -0,0 +1,27 @@ +.TH "moCoolingSchedule" 3 "16 Jan 2008" "Version 1.0" "ParadisEO-MOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moCoolingSchedule \- This class gives the description of a cooling schedule. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoUF< double &, bool >\fP. +.PP +Inherited by \fBmoExponentialCoolingSchedule\fP, and \fBmoLinearCoolingSchedule\fP. +.PP +.SH "Detailed Description" +.PP +This class gives the description of a cooling schedule. + +It is only a description... An object that herits from this class is needed to be used in a \fBmoSA\fP. See \fBmoExponentialCoolingSchedule\fP or \fBmoLinearCoolingSchedule\fP for example. +.PP +Definition at line 46 of file moCoolingSchedule.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moExponentialCoolingSchedule.3 b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moExponentialCoolingSchedule.3 new file mode 100644 index 000000000..42847c550 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moExponentialCoolingSchedule.3 @@ -0,0 +1,90 @@ +.TH "moExponentialCoolingSchedule" 3 "16 Jan 2008" "Version 1.0" "ParadisEO-MOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moExponentialCoolingSchedule \- One of the possible \fBmoCoolingSchedule\fP. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoCoolingSchedule\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoExponentialCoolingSchedule\fP (double _threshold, double _ratio)" +.br +.RI "\fISimple constructor. \fP" +.ti -1c +.RI "bool \fBoperator()\fP (double &_temperature)" +.br +.RI "\fI\fBFunction\fP which proceeds to the cooling. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "double \fBthreshold\fP" +.br +.RI "\fIThe temperature threhold. \fP" +.ti -1c +.RI "double \fBratio\fP" +.br +.RI "\fIThe decreasing factor of the temperature. \fP" +.in -1c +.SH "Detailed Description" +.PP +One of the possible \fBmoCoolingSchedule\fP. + +An other very simple cooling schedule, the temperature decrease according to a ratio while the temperature is greater than a given threshold. +.PP +Definition at line 46 of file moExponentialCoolingSchedule.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "moExponentialCoolingSchedule::moExponentialCoolingSchedule (double _threshold, double _ratio)\fC [inline]\fP" +.PP +Simple constructor. +.PP +\fBParameters:\fP +.RS 4 +\fI_threshold\fP the threshold. +.br +\fI_ratio\fP the ratio used to descrease the temperature. +.RE +.PP + +.PP +Definition at line 55 of file moExponentialCoolingSchedule.h. +.SH "Member Function Documentation" +.PP +.SS "bool moExponentialCoolingSchedule::operator() (double & _temperature)\fC [inline, virtual]\fP" +.PP +\fBFunction\fP which proceeds to the cooling. +.PP +It decreases the temperature and indicates if it is greater than the threshold. +.PP +\fBParameters:\fP +.RS 4 +\fI_temperature\fP the current temperature. +.RE +.PP +\fBReturns:\fP +.RS 4 +if the new temperature (current temperature * ratio) is greater than the threshold. +.RE +.PP + +.PP +Implements \fBeoUF< double &, bool >\fP. +.PP +Definition at line 65 of file moExponentialCoolingSchedule.h. +.PP +References ratio, and threshold. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moFirstImprSelect.3 b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moFirstImprSelect.3 new file mode 100644 index 000000000..e5990c8d0 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moFirstImprSelect.3 @@ -0,0 +1,134 @@ +.TH "moFirstImprSelect" 3 "16 Jan 2008" "Version 1.0" "ParadisEO-MOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moFirstImprSelect \- One possible \fBmoMoveSelect\fP. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoMoveSelect< M >< M >\fP. +.PP +.SS "Public Types" + +.in +1c +.ti -1c +.RI "typedef M::EOType::Fitness \fBFitness\fP" +.br +.RI "\fIAlias for the fitness. \fP" +.in -1c +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "virtual void \fBinit\fP (const \fBFitness\fP &_fitness)" +.br +.RI "\fIProcedure which initialise the exploration. \fP" +.ti -1c +.RI "bool \fBupdate\fP (const M &_move, const \fBFitness\fP &_fitness)" +.br +.RI "\fI\fBFunction\fP that indicates if the current move has not improved the fitness. \fP" +.ti -1c +.RI "void \fBoperator()\fP (M &_move, \fBFitness\fP &_fitness)" +.br +.RI "\fIProcedure which saved the best move and fitness. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "bool \fBvalid\fP" +.br +.RI "\fIAllow to know if at least one move has improved the solution. \fP" +.ti -1c +.RI "M \fBbest_move\fP" +.br +.RI "\fIBest stored movement. \fP" +.ti -1c +.RI "\fBFitness\fP \fBinitial_fitness\fP" +.br +.RI "\fIInitial fitness. \fP" +.ti -1c +.RI "\fBFitness\fP \fBbest_fitness\fP" +.br +.RI "\fIBest stored fitness. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moFirstImprSelect< M >" +One possible \fBmoMoveSelect\fP. + +The neighborhood is explored until a move enables an improvment of the current solution. +.PP +Definition at line 48 of file moFirstImprSelect.h. +.SH "Member Function Documentation" +.PP +.SS "template virtual void \fBmoFirstImprSelect\fP< M >::init (const \fBFitness\fP & _fitness)\fC [inline, virtual]\fP" +.PP +Procedure which initialise the exploration. +.PP +It save the current fitness as the initial value for the fitness. +.PP +\fBParameters:\fP +.RS 4 +\fI_fitness\fP The current fitness. +.RE +.PP + +.PP +Implements \fBmoMoveSelect< M >\fP. +.PP +Definition at line 60 of file moFirstImprSelect.h. +.PP +References moFirstImprSelect< M >::initial_fitness, and moFirstImprSelect< M >::valid. +.SS "template bool \fBmoFirstImprSelect\fP< M >::update (const M & _move, const \fBFitness\fP & _fitness)\fC [inline, virtual]\fP" +.PP +\fBFunction\fP that indicates if the current move has not improved the fitness. +.PP +If the given fitness enables an improvment, the move (\fBmoMove\fP) should be applied to the current solution. +.PP +\fBParameters:\fP +.RS 4 +\fI_move\fP a move. +.br +\fI_fitness\fP a fitness linked to the move. +.RE +.PP +\fBReturns:\fP +.RS 4 +true if the move does not improve the fitness. +.RE +.PP + +.PP +Implements \fBmoMoveSelect< M >\fP. +.PP +Definition at line 75 of file moFirstImprSelect.h. +.PP +References moFirstImprSelect< M >::best_fitness, moFirstImprSelect< M >::best_move, moFirstImprSelect< M >::initial_fitness, and moFirstImprSelect< M >::valid. +.SS "template void \fBmoFirstImprSelect\fP< M >::operator() (M & _move, \fBFitness\fP & _fitness)\fC [inline, virtual]\fP" +.PP +Procedure which saved the best move and fitness. +.PP +\fBParameters:\fP +.RS 4 +\fI_move\fP the current move (result of the procedure). +.br +\fI_fitness\fP the current fitness (result of the procedure). +.RE +.PP + +.PP +Implements \fBeoBF< M &, M::EOType::Fitness &, void >\fP. +.PP +Definition at line 96 of file moFirstImprSelect.h. +.PP +References moFirstImprSelect< M >::best_fitness, moFirstImprSelect< M >::best_move, and moFirstImprSelect< M >::valid. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moFitComparator.3 b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moFitComparator.3 new file mode 100644 index 000000000..f94827437 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moFitComparator.3 @@ -0,0 +1,56 @@ +.TH "moFitComparator" 3 "16 Jan 2008" "Version 1.0" "ParadisEO-MOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moFitComparator \- Comparison according to the fitness. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoComparator< EOT >< EOT >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "bool \fBoperator()\fP (const EOT &_solution1, const EOT &_solution2)" +.br +.RI "\fI\fBFunction\fP which makes the comparison and gives the result. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moFitComparator< EOT >" +Comparison according to the fitness. + +An EOT is better than an other if its fitness is better. +.PP +Definition at line 46 of file moFitComparator.h. +.SH "Member Function Documentation" +.PP +.SS "template bool \fBmoFitComparator\fP< EOT >::operator() (const EOT & _solution1, const EOT & _solution2)\fC [inline]\fP" +.PP +\fBFunction\fP which makes the comparison and gives the result. +.PP +\fBParameters:\fP +.RS 4 +\fI_solution1\fP The first solution. +.br +\fI_solution2\fP The second solution. +.RE +.PP +\fBReturns:\fP +.RS 4 +true if the fitness of the first solution is better than the second solution, false else. +.RE +.PP + +.PP +Definition at line 56 of file moFitComparator.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moFitSolContinue.3 b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moFitSolContinue.3 new file mode 100644 index 000000000..91f0dd14e --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moFitSolContinue.3 @@ -0,0 +1,107 @@ +.TH "moFitSolContinue" 3 "16 Jan 2008" "Version 1.0" "ParadisEO-MOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moFitSolContinue \- One possible stop criterion for a solution-based heuristic. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoSolContinue< EOT >< EOT >\fP. +.PP +.SS "Public Types" + +.in +1c +.ti -1c +.RI "typedef EOT::Fitness \fBFitness\fP" +.br +.RI "\fIAlias for the fitness. \fP" +.in -1c +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoFitSolContinue\fP (\fBFitness\fP _fitness)" +.br +.RI "\fIBasic constructor. \fP" +.ti -1c +.RI "bool \fBoperator()\fP (const EOT &_solution)" +.br +.RI "\fI\fBFunction\fP that activates the stopping criterion. \fP" +.ti -1c +.RI "void \fBinit\fP ()" +.br +.RI "\fIProcedure which allows to initialise all the stuff needed. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBFitness\fP \fBfitness\fP" +.br +.RI "\fIFitness target. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moFitSolContinue< EOT >" +One possible stop criterion for a solution-based heuristic. + +The stop criterion corresponds to a fitness threshold gained. +.PP +Definition at line 46 of file moFitSolContinue.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBmoFitSolContinue\fP< EOT >::\fBmoFitSolContinue\fP (\fBFitness\fP _fitness)\fC [inline]\fP" +.PP +Basic constructor. +.PP +\fBParameters:\fP +.RS 4 +\fI_fitness\fP The fitness to reach. +.RE +.PP + +.PP +Definition at line 57 of file moFitSolContinue.h. +.SH "Member Function Documentation" +.PP +.SS "template bool \fBmoFitSolContinue\fP< EOT >::operator() (const EOT & _solution)\fC [inline, virtual]\fP" +.PP +\fBFunction\fP that activates the stopping criterion. +.PP +Indicates if the fitness threshold has not yet been reached. +.PP +\fBParameters:\fP +.RS 4 +\fI_solution\fP the current solution. +.RE +.PP +\fBReturns:\fP +.RS 4 +true or false according to the value of the fitness. +.RE +.PP + +.PP +Implements \fBeoUF< const EOT &, bool >\fP. +.PP +Definition at line 67 of file moFitSolContinue.h. +.PP +References moFitSolContinue< EOT >::fitness. +.SS "template void \fBmoFitSolContinue\fP< EOT >::init ()\fC [inline, virtual]\fP" +.PP +Procedure which allows to initialise all the stuff needed. +.PP +It can be also used to reinitialize all the needed things. +.PP +Implements \fBmoSolContinue< EOT >\fP. +.PP +Definition at line 81 of file moFitSolContinue.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moGenSolContinue.3 b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moGenSolContinue.3 new file mode 100644 index 000000000..be6b06834 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moGenSolContinue.3 @@ -0,0 +1,105 @@ +.TH "moGenSolContinue" 3 "16 Jan 2008" "Version 1.0" "ParadisEO-MOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moGenSolContinue \- One possible stop criterion for a solution-based heuristic. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoSolContinue< EOT >< EOT >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoGenSolContinue\fP (unsigned int _generationMaximumNumber)" +.br +.RI "\fISimple constructor. \fP" +.ti -1c +.RI "bool \fBoperator()\fP (const EOT &_solution)" +.br +.RI "\fI\fBFunction\fP that activates the stop criterion. \fP" +.ti -1c +.RI "void \fBinit\fP ()" +.br +.RI "\fIProcedure which allows to initialise the generation counter. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "unsigned int \fBgenerationMaximumNumber\fP" +.br +.RI "\fIIteration maximum number. \fP" +.ti -1c +.RI "unsigned int \fBgenerationNumber\fP" +.br +.RI "\fIIteration current number. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moGenSolContinue< EOT >" +One possible stop criterion for a solution-based heuristic. + +The stop criterion corresponds to a maximum number of iteration. +.PP +Definition at line 46 of file moGenSolContinue.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBmoGenSolContinue\fP< EOT >::\fBmoGenSolContinue\fP (unsigned int _generationMaximumNumber)\fC [inline]\fP" +.PP +Simple constructor. +.PP +\fBParameters:\fP +.RS 4 +\fI_generationMaximumNumber\fP The maximum number of generations. +.RE +.PP + +.PP +Definition at line 54 of file moGenSolContinue.h. +.SH "Member Function Documentation" +.PP +.SS "template bool \fBmoGenSolContinue\fP< EOT >::operator() (const EOT & _solution)\fC [inline, virtual]\fP" +.PP +\fBFunction\fP that activates the stop criterion. +.PP +Increments the counter and returns TRUE if the current number of iteration is lower than the given maximum number of iterations. +.PP +\fBParameters:\fP +.RS 4 +\fI_solution\fP The current solution. +.RE +.PP +\fBReturns:\fP +.RS 4 +true or false according to the current generation number. +.RE +.PP + +.PP +Implements \fBeoUF< const EOT &, bool >\fP. +.PP +Definition at line 66 of file moGenSolContinue.h. +.PP +References moGenSolContinue< EOT >::generationMaximumNumber, and moGenSolContinue< EOT >::generationNumber. +.SS "template void \fBmoGenSolContinue\fP< EOT >::init ()\fC [inline, virtual]\fP" +.PP +Procedure which allows to initialise the generation counter. +.PP +It can also be used to reset the iteration counter. +.PP +Implements \fBmoSolContinue< EOT >\fP. +.PP +Definition at line 78 of file moGenSolContinue.h. +.PP +References moGenSolContinue< EOT >::generationNumber. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moHC.3 b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moHC.3 new file mode 100644 index 000000000..2a180b59a --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moHC.3 @@ -0,0 +1,132 @@ +.TH "moHC" 3 "16 Jan 2008" "Version 1.0" "ParadisEO-MOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moHC \- Hill Climbing (HC). + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoAlgo< M::EOType >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoHC\fP (\fBmoMoveInit\fP< M > &_move_initializer, \fBmoNextMove\fP< M > &_next_move_generator, \fBmoMoveIncrEval\fP< M > &_incremental_evaluation, \fBmoMoveSelect\fP< M > &_move_selection, \fBeoEvalFunc\fP< \fBEOT\fP > &_full_evaluation)" +.br +.RI "\fIFull constructor. \fP" +.ti -1c +.RI "\fBmoHC\fP (\fBmoMoveExpl\fP< M > &_move_explorer, \fBeoEvalFunc\fP< \fBEOT\fP > &_full_evaluation)" +.br +.RI "\fILight constructor. \fP" +.ti -1c +.RI "bool \fBoperator()\fP (\fBEOT\fP &_solution)" +.br +.RI "\fI\fBFunction\fP which launches the HC. \fP" +.in -1c +.SS "Private Types" + +.in +1c +.ti -1c +.RI "typedef M::EOType \fBEOT\fP" +.br +.RI "\fIAlias for the type. \fP" +.ti -1c +.RI "typedef EOT::Fitness \fBFitness\fP" +.br +.RI "\fIAlias for the fitness. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBmoMoveExpl\fP< M > & \fBmove_explorer\fP" +.br +.RI "\fIComplete exploration of the neighborhood. \fP" +.ti -1c +.RI "\fBeoEvalFunc\fP< \fBEOT\fP > & \fBfull_evaluation\fP" +.br +.RI "\fIA full evaluation function. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moHC< M >" +Hill Climbing (HC). + +Class which describes the algorithm for a hill climbing. +.PP +Definition at line 49 of file moHC.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBmoHC\fP< M >::\fBmoHC\fP (\fBmoMoveInit\fP< M > & _move_initializer, \fBmoNextMove\fP< M > & _next_move_generator, \fBmoMoveIncrEval\fP< M > & _incremental_evaluation, \fBmoMoveSelect\fP< M > & _move_selection, \fBeoEvalFunc\fP< \fBEOT\fP > & _full_evaluation)\fC [inline]\fP" +.PP +Full constructor. +.PP +All the boxes are given in order the HC to use a \fBmoHCMoveLoopExpl\fP. +.PP +\fBParameters:\fP +.RS 4 +\fI_move_initializer\fP a move initialiser. +.br +\fI_next_move_generator\fP a neighborhood explorer. +.br +\fI_incremental_evaluation\fP a (generally) efficient evaluation function. +.br +\fI_move_selection\fP a move selector. +.br +\fI_full_evaluation\fP a full evaluation function. +.RE +.PP + +.PP +Definition at line 69 of file moHC.h. +.SS "template \fBmoHC\fP< M >::\fBmoHC\fP (\fBmoMoveExpl\fP< M > & _move_explorer, \fBeoEvalFunc\fP< \fBEOT\fP > & _full_evaluation)\fC [inline]\fP" +.PP +Light constructor. +.PP +This constructor allow to use another \fBmoMoveExpl\fP (generally not a \fBmoHCMoveLoopExpl\fP). +.PP +\fBParameters:\fP +.RS 4 +\fI_move_explorer\fP a complete explorer. +.br +\fI_full_evaluation\fP a full evaluation function. +.RE +.PP + +.PP +Definition at line 82 of file moHC.h. +.SH "Member Function Documentation" +.PP +.SS "template bool \fBmoHC\fP< M >::operator() (\fBEOT\fP & _solution)\fC [inline, virtual]\fP" +.PP +\fBFunction\fP which launches the HC. +.PP +The HC has to improve a current solution. As the \fBmoSA\fP and the mo TS, it can be used for HYBRIDATION in an evolutionnary algorithm. +.PP +\fBParameters:\fP +.RS 4 +\fI_solution\fP a current solution to improve. +.RE +.PP +\fBReturns:\fP +.RS 4 +true. +.RE +.PP + +.PP +Implements \fBeoUF< M::EOType &, bool >\fP. +.PP +Definition at line 94 of file moHC.h. +.PP +References moHC< M >::full_evaluation, and moHC< M >::move_explorer. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moHCMoveLoopExpl.3 b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moHCMoveLoopExpl.3 new file mode 100644 index 000000000..a93bf5338 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moHCMoveLoopExpl.3 @@ -0,0 +1,113 @@ +.TH "moHCMoveLoopExpl" 3 "16 Jan 2008" "Version 1.0" "ParadisEO-MOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moHCMoveLoopExpl \- Iterative explorer used by a \fBmoHC\fP. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoMoveLoopExpl< M >< M >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoHCMoveLoopExpl\fP (\fBmoMoveInit\fP< M > &_move_initializer, \fBmoNextMove\fP< M > &_next_move_generator, \fBmoMoveIncrEval\fP< M > &_incremental_evaluation, \fBmoMoveSelect\fP< M > &_move_selection)" +.br +.RI "\fIConstructor. \fP" +.ti -1c +.RI "void \fBoperator()\fP (const \fBEOT\fP &_old_solution, \fBEOT\fP &_new_solution)" +.br +.RI "\fIProcedure which launches the explorer. \fP" +.in -1c +.SS "Private Types" + +.in +1c +.ti -1c +.RI "typedef M::EOType \fBEOT\fP" +.br +.RI "\fIAlias for the type. \fP" +.ti -1c +.RI "typedef M::EOType::Fitness \fBFitness\fP" +.br +.RI "\fIAlias for the fitness. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBmoMoveInit\fP< M > & \fBmove_initializer\fP" +.br +.RI "\fIMove initialiser. \fP" +.ti -1c +.RI "\fBmoNextMove\fP< M > & \fBnext_move_generator\fP" +.br +.RI "\fINeighborhood explorer. \fP" +.ti -1c +.RI "\fBmoMoveIncrEval\fP< M > & \fBincremental_evaluation\fP" +.br +.RI "\fI(generally) Efficient evaluation. \fP" +.ti -1c +.RI "\fBmoMoveSelect\fP< M > & \fBmove_selection\fP" +.br +.RI "\fIMove selector. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moHCMoveLoopExpl< M >" +Iterative explorer used by a \fBmoHC\fP. +.PP +Definition at line 47 of file moHCMoveLoopExpl.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBmoHCMoveLoopExpl\fP< M >::\fBmoHCMoveLoopExpl\fP (\fBmoMoveInit\fP< M > & _move_initializer, \fBmoNextMove\fP< M > & _next_move_generator, \fBmoMoveIncrEval\fP< M > & _incremental_evaluation, \fBmoMoveSelect\fP< M > & _move_selection)\fC [inline]\fP" +.PP +Constructor. +.PP +All the boxes have to be specified. +.PP +\fBParameters:\fP +.RS 4 +\fI_move_initializer\fP The move initialiser. +.br +\fI_next_move_generator\fP The neighbourhood explorer. +.br +\fI_incremental_evaluation\fP (generally) Efficient evaluation function. +.br +\fI_move_selection\fP The move selector. +.RE +.PP + +.PP +Definition at line 66 of file moHCMoveLoopExpl.h. +.SH "Member Function Documentation" +.PP +.SS "template void \fBmoHCMoveLoopExpl\fP< M >::operator() (const \fBEOT\fP & _old_solution, \fBEOT\fP & _new_solution)\fC [inline, virtual]\fP" +.PP +Procedure which launches the explorer. +.PP +The exploration starts from an old solution and provides a new solution. +.PP +\fBParameters:\fP +.RS 4 +\fI_old_solution\fP The current solution. +.br +\fI_new_solution\fP The new solution (result of the procedure). +.RE +.PP + +.PP +Implements \fBeoBF< const M::EOType &, M::EOType &, void >\fP. +.PP +Definition at line 79 of file moHCMoveLoopExpl.h. +.PP +References moHCMoveLoopExpl< M >::incremental_evaluation, moHCMoveLoopExpl< M >::move_initializer, moHCMoveLoopExpl< M >::move_selection, and moHCMoveLoopExpl< M >::next_move_generator. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moILS.3 b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moILS.3 new file mode 100644 index 000000000..7d0086ebd --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moILS.3 @@ -0,0 +1,220 @@ +.TH "moILS" 3 "16 Jan 2008" "Version 1.0" "ParadisEO-MOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moILS \- Iterated Local Search (ILS). + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoAlgo< M::EOType >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoILS\fP (\fBmoAlgo\fP< \fBEOT\fP > &_algorithm, \fBmoSolContinue\fP< \fBEOT\fP > &_continue, \fBmoComparator\fP< \fBEOT\fP > &_acceptance_criterion, \fBeoMonOp\fP< \fBEOT\fP > &_perturbation, \fBeoEvalFunc\fP< \fBEOT\fP > &_full_evaluation)" +.br +.RI "\fIGeneric constructor. \fP" +.ti -1c +.RI "\fBmoILS\fP (\fBmoMoveInit\fP< M > &_move_initializer, \fBmoNextMove\fP< M > &_next_move_generator, \fBmoMoveIncrEval\fP< M > &_incremental_evaluation, \fBmoMoveSelect\fP< M > &_move_selection, \fBmoSolContinue\fP< \fBEOT\fP > &_continue, \fBmoComparator\fP< \fBEOT\fP > &_acceptance_criterion, \fBeoMonOp\fP< \fBEOT\fP > &_perturbation, \fBeoEvalFunc\fP< \fBEOT\fP > &_full_evaluation)" +.br +.RI "\fIConstructor for using a \fBmoHC\fP for the \fBmoAlgo\fP. \fP" +.ti -1c +.RI "\fBmoILS\fP (\fBmoMoveInit\fP< M > &_move_initializer, \fBmoNextMove\fP< M > &_next_move_generator, \fBmoMoveIncrEval\fP< M > &_incremental_evaluation, \fBmoTabuList\fP< M > &_tabu_list, \fBmoAspirCrit\fP< M > &_aspiration_criterion, \fBmoSolContinue\fP< \fBEOT\fP > &_moTS_continue, \fBmoSolContinue\fP< \fBEOT\fP > &_continue, \fBmoComparator\fP< \fBEOT\fP > &_acceptance_criterion, \fBeoMonOp\fP< \fBEOT\fP > &_perturbation, \fBeoEvalFunc\fP< \fBEOT\fP > &_full_evaluation)" +.br +.RI "\fIConstructor for using a \fBmoTS\fP for the \fBmoAlgo\fP. \fP" +.ti -1c +.RI "\fBmoILS\fP (\fBmoRandMove\fP< M > &_random_move_generator, \fBmoMoveIncrEval\fP< M > &_incremental_evaluation, \fBmoSolContinue\fP< \fBEOT\fP > &_moSA_continue, double _initial_temperature, \fBmoCoolingSchedule\fP &_cooling_schedule, \fBmoSolContinue\fP< \fBEOT\fP > &_continue, \fBmoComparator\fP< \fBEOT\fP > &_acceptance_criterion, \fBeoMonOp\fP< \fBEOT\fP > &_perturbation, \fBeoEvalFunc\fP< \fBEOT\fP > &_full_evaluation)" +.br +.RI "\fIConstructor for using a \fBmoSA\fP for the \fBmoAlgo\fP. \fP" +.ti -1c +.RI "bool \fBoperator()\fP (\fBEOT\fP &_solution)" +.br +.RI "\fI\fBFunction\fP which launches the ILS. \fP" +.in -1c +.SS "Private Types" + +.in +1c +.ti -1c +.RI "typedef M::EOType \fBEOT\fP" +.br +.RI "\fIAlias for the type. \fP" +.ti -1c +.RI "typedef EOT::Fitness \fBFitness\fP" +.br +.RI "\fIAlias for the fitness. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBmoAlgo\fP< \fBEOT\fP > & \fBalgorithm\fP" +.br +.RI "\fIThe solution based heuristic. \fP" +.ti -1c +.RI "\fBmoSolContinue\fP< \fBEOT\fP > & \fBcontinu\fP" +.br +.RI "\fIThe stopping criterion. \fP" +.ti -1c +.RI "\fBmoComparator\fP< \fBEOT\fP > & \fBacceptance_criterion\fP" +.br +.RI "\fIThe acceptance criterion. \fP" +.ti -1c +.RI "\fBeoMonOp\fP< \fBEOT\fP > & \fBperturbation\fP" +.br +.RI "\fIThe perturbation generator. \fP" +.ti -1c +.RI "\fBeoEvalFunc\fP< \fBEOT\fP > & \fBfull_evaluation\fP" +.br +.RI "\fIThe full evaluation function. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moILS< M >" +Iterated Local Search (ILS). + +Class which describes the algorithm for a iterated local search. +.PP +Definition at line 50 of file moILS.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBmoILS\fP< M >::\fBmoILS\fP (\fBmoAlgo\fP< \fBEOT\fP > & _algorithm, \fBmoSolContinue\fP< \fBEOT\fP > & _continue, \fBmoComparator\fP< \fBEOT\fP > & _acceptance_criterion, \fBeoMonOp\fP< \fBEOT\fP > & _perturbation, \fBeoEvalFunc\fP< \fBEOT\fP > & _full_evaluation)\fC [inline]\fP" +.PP +Generic constructor. +.PP +Generic constructor using a \fBmoAlgo\fP +.PP +\fBParameters:\fP +.RS 4 +\fI_algorithm\fP The solution based heuristic to use. +.br +\fI_continue\fP The stopping criterion. +.br +\fI_acceptance_criterion\fP The acceptance criterion. +.br +\fI_perturbation\fP The pertubation generator. +.br +\fI_full_evaluation\fP The evaluation function. +.RE +.PP + +.PP +Definition at line 70 of file moILS.h. +.SS "template \fBmoILS\fP< M >::\fBmoILS\fP (\fBmoMoveInit\fP< M > & _move_initializer, \fBmoNextMove\fP< M > & _next_move_generator, \fBmoMoveIncrEval\fP< M > & _incremental_evaluation, \fBmoMoveSelect\fP< M > & _move_selection, \fBmoSolContinue\fP< \fBEOT\fP > & _continue, \fBmoComparator\fP< \fBEOT\fP > & _acceptance_criterion, \fBeoMonOp\fP< \fBEOT\fP > & _perturbation, \fBeoEvalFunc\fP< \fBEOT\fP > & _full_evaluation)\fC [inline]\fP" +.PP +Constructor for using a \fBmoHC\fP for the \fBmoAlgo\fP. +.PP +\fBParameters:\fP +.RS 4 +\fI_move_initializer\fP The move initialisation (for the \fBmoHC\fP). +.br +\fI_next_move_generator\fP The move generator (for the \fBmoHC\fP). +.br +\fI_incremental_evaluation\fP The partial evaluation function (for the \fBmoHC\fP). +.br +\fI_move_selection\fP The move selection strategy (for the \fBmoHC\fP). +.br +\fI_continue\fP The stopping criterion. +.br +\fI_acceptance_criterion\fP The acceptance criterion. +.br +\fI_perturbation\fP The pertubation generator. +.br +\fI_full_evaluation\fP The evaluation function. +.RE +.PP + +.PP +Definition at line 87 of file moILS.h. +.SS "template \fBmoILS\fP< M >::\fBmoILS\fP (\fBmoMoveInit\fP< M > & _move_initializer, \fBmoNextMove\fP< M > & _next_move_generator, \fBmoMoveIncrEval\fP< M > & _incremental_evaluation, \fBmoTabuList\fP< M > & _tabu_list, \fBmoAspirCrit\fP< M > & _aspiration_criterion, \fBmoSolContinue\fP< \fBEOT\fP > & _moTS_continue, \fBmoSolContinue\fP< \fBEOT\fP > & _continue, \fBmoComparator\fP< \fBEOT\fP > & _acceptance_criterion, \fBeoMonOp\fP< \fBEOT\fP > & _perturbation, \fBeoEvalFunc\fP< \fBEOT\fP > & _full_evaluation)\fC [inline]\fP" +.PP +Constructor for using a \fBmoTS\fP for the \fBmoAlgo\fP. +.PP +\fBParameters:\fP +.RS 4 +\fI_move_initializer\fP The move initialisation (for the \fBmoTS\fP). +.br +\fI_next_move_generator\fP The move generator (for the \fBmoTS\fP). +.br +\fI_incremental_evaluation\fP The partial evaluation function (for the \fBmoTS\fP). +.br +\fI_tabu_list\fP The tabu list (for the \fBmoTS\fP !!!!). +.br +\fI_aspiration_criterion\fP The aspiration criterion (for the \fBmoTS\fP). +.br +\fI_moTS_continue\fP The stopping criterion (for the \fBmoTS\fP). +.br +\fI_continue\fP The stopping criterion. +.br +\fI_acceptance_criterion\fP The acceptance criterion. +.br +\fI_perturbation\fP The pertubation generator. +.br +\fI_full_evaluation\fP The evaluation function. +.RE +.PP + +.PP +Definition at line 108 of file moILS.h. +.SS "template \fBmoILS\fP< M >::\fBmoILS\fP (\fBmoRandMove\fP< M > & _random_move_generator, \fBmoMoveIncrEval\fP< M > & _incremental_evaluation, \fBmoSolContinue\fP< \fBEOT\fP > & _moSA_continue, double _initial_temperature, \fBmoCoolingSchedule\fP & _cooling_schedule, \fBmoSolContinue\fP< \fBEOT\fP > & _continue, \fBmoComparator\fP< \fBEOT\fP > & _acceptance_criterion, \fBeoMonOp\fP< \fBEOT\fP > & _perturbation, \fBeoEvalFunc\fP< \fBEOT\fP > & _full_evaluation)\fC [inline]\fP" +.PP +Constructor for using a \fBmoSA\fP for the \fBmoAlgo\fP. +.PP +\fBParameters:\fP +.RS 4 +\fI_random_move_generator\fP The random move generator (for the \fBmoSA\fP). +.br +\fI_incremental_evaluation\fP The partial evaluation function (for the \fBmoSA\fP). +.br +\fI_moSA_continue\fP The stopping criterion (for the \fBmoSA\fP). +.br +\fI_initial_temperature\fP The initial temperature (for the \fBmoSA\fP). +.br +\fI_cooling_schedule\fP The cooling schedule (for the \fBmoSA\fP). +.br +\fI_continue\fP The stopping criterion. +.br +\fI_acceptance_criterion\fP The acceptance criterion. +.br +\fI_perturbation\fP The pertubation generator. +.br +\fI_full_evaluation\fP The evaluation function. +.RE +.PP + +.PP +Definition at line 130 of file moILS.h. +.SH "Member Function Documentation" +.PP +.SS "template bool \fBmoILS\fP< M >::operator() (\fBEOT\fP & _solution)\fC [inline, virtual]\fP" +.PP +\fBFunction\fP which launches the ILS. +.PP +The ILS has to improve a current solution. As the \fBmoSA\fP, the \fBmoTS\fP and the \fBmoHC\fP, it can be used for HYBRIDATION in an evolutionnary algorithm. +.PP +\fBParameters:\fP +.RS 4 +\fI_solution\fP a current solution to improve. +.RE +.PP +\fBReturns:\fP +.RS 4 +true. +.RE +.PP + +.PP +Implements \fBeoUF< M::EOType &, bool >\fP. +.PP +Definition at line 146 of file moILS.h. +.PP +References moILS< M >::acceptance_criterion, moILS< M >::algorithm, moILS< M >::continu, moILS< M >::full_evaluation, and moILS< M >::perturbation. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moImprBestFitAspirCrit.3 b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moImprBestFitAspirCrit.3 new file mode 100644 index 000000000..a8e43fafe --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moImprBestFitAspirCrit.3 @@ -0,0 +1,88 @@ +.TH "moImprBestFitAspirCrit" 3 "16 Jan 2008" "Version 1.0" "ParadisEO-MOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moImprBestFitAspirCrit \- One of the possible \fBmoAspirCrit\fP. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoAspirCrit< M >< M >\fP. +.PP +.SS "Public Types" + +.in +1c +.ti -1c +.RI "typedef M::EOType::Fitness \fBFitness\fP" +.br +.RI "\fIAlias for the fitness. \fP" +.in -1c +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoImprBestFitAspirCrit\fP ()" +.br +.RI "\fIContructor. \fP" +.ti -1c +.RI "void \fBinit\fP ()" +.br +.RI "\fIInitialisation procedure. \fP" +.ti -1c +.RI "bool \fBoperator()\fP (const M &_move, const \fBFitness\fP &_fitness)" +.br +.RI "\fI\fBFunction\fP that indicates if the current fitness is better that the already saved fitness. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBFitness\fP \fBbest_fitness\fP" +.br +.RI "\fIBest fitness found until now. \fP" +.ti -1c +.RI "bool \fBfirst_time\fP" +.br +.RI "\fIIndicates that a fitness has been already saved or not. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moImprBestFitAspirCrit< M >" +One of the possible \fBmoAspirCrit\fP. + +This criterion is satisfied when a given fitness is the best ever considered. +.PP +Definition at line 47 of file moImprBestFitAspirCrit.h. +.SH "Member Function Documentation" +.PP +.SS "template bool \fBmoImprBestFitAspirCrit\fP< M >::operator() (const M & _move, const \fBFitness\fP & _fitness)\fC [inline]\fP" +.PP +\fBFunction\fP that indicates if the current fitness is better that the already saved fitness. +.PP +The first time, the function only saved the current move and fitness. +.PP +\fBParameters:\fP +.RS 4 +\fI_move\fP A move. +.br +\fI_fitness\fP A fitness linked to the move. +.RE +.PP +\fBReturns:\fP +.RS 4 +true The first time and if _fitntess > best_fitness, else false. +.RE +.PP + +.PP +Definition at line 75 of file moImprBestFitAspirCrit.h. +.PP +References moImprBestFitAspirCrit< M >::best_fitness, and moImprBestFitAspirCrit< M >::first_time. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moItRandNextMove.3 b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moItRandNextMove.3 new file mode 100644 index 000000000..fd0dafeb7 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moItRandNextMove.3 @@ -0,0 +1,106 @@ +.TH "moItRandNextMove" 3 "16 Jan 2008" "Version 1.0" "ParadisEO-MOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moItRandNextMove \- One of the possible \fBmoNextMove\fP. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoNextMove< M >< M >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoItRandNextMove\fP (\fBmoRandMove\fP< M > &_random_move_generator, unsigned int _iteration_maximum_number)" +.br +.RI "\fIThe constructor. \fP" +.ti -1c +.RI "bool \fBoperator()\fP (M &_move, const \fBEOT\fP &_solution)" +.br +.RI "\fIGeneration of a new move. \fP" +.in -1c +.SS "Private Types" + +.in +1c +.ti -1c +.RI "typedef M::EOType \fBEOT\fP" +.br +.RI "\fIAlias for the type. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBmoRandMove\fP< M > & \fBrandom_move_generator\fP" +.br +.RI "\fIA move generator (generally randomly). \fP" +.ti -1c +.RI "unsigned int \fBiteration_maximum_number\fP" +.br +.RI "\fIIteration maximum number. \fP" +.ti -1c +.RI "unsigned int \fBiteration_number\fP" +.br +.RI "\fIIteration current number. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moItRandNextMove< M >" +One of the possible \fBmoNextMove\fP. + +This class is a move (\fBmoMove\fP) generator with a bound for the maximum number of iterations. +.PP +Definition at line 47 of file moItRandNextMove.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBmoItRandNextMove\fP< M >::\fBmoItRandNextMove\fP (\fBmoRandMove\fP< M > & _random_move_generator, unsigned int _iteration_maximum_number)\fC [inline]\fP" +.PP +The constructor. +.PP +\fBParameters\fP only for initialising the attributes. +.PP +\fBParameters:\fP +.RS 4 +\fI_random_move_generator\fP The random move generator. +.br +\fI_iteration_maximum_number\fP The iteration maximum number. +.RE +.PP + +.PP +Definition at line 61 of file moItRandNextMove.h. +.SH "Member Function Documentation" +.PP +.SS "template bool \fBmoItRandNextMove\fP< M >::operator() (M & _move, const \fBEOT\fP & _solution)\fC [inline]\fP" +.PP +Generation of a new move. +.PP +If the maximum number is not already reached, the current move is forgotten and remplaced by another one. +.PP +\fBParameters:\fP +.RS 4 +\fI_move\fP the current move. +.br +\fI_solution\fP the current solution. +.RE +.PP +\fBReturns:\fP +.RS 4 +false if the maximum number of iteration is reached, else true. +.RE +.PP + +.PP +Definition at line 73 of file moItRandNextMove.h. +.PP +References moItRandNextMove< M >::iteration_maximum_number, moItRandNextMove< M >::iteration_number, and moItRandNextMove< M >::random_move_generator. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moLSCheckPoint.3 b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moLSCheckPoint.3 new file mode 100644 index 000000000..08fc5f065 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moLSCheckPoint.3 @@ -0,0 +1,83 @@ +.TH "moLSCheckPoint" 3 "16 Jan 2008" "Version 1.0" "ParadisEO-MOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moLSCheckPoint \- Class which allows a checkpointing system. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoBF< A1, A2, R >< const const M &, M::EOType &, void >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "void \fBoperator()\fP (const M &_move, const typename M::EOType &_solution)" +.br +.RI "\fI\fBFunction\fP which launches the checkpointing. \fP" +.ti -1c +.RI "void \fBadd\fP (\fBeoBF\fP< const M &, const typename M::EOType &, void > &_function)" +.br +.RI "\fIProcedure which add a new function to the function vector. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "std::vector< \fBeoBF\fP< const M &, const typename M::EOType &, void > * > \fBfunctions\fP" +.br +.RI "\fIVector of functions. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moLSCheckPoint< M >" +Class which allows a checkpointing system. + +Thanks to this class, at each iteration, additionnal function can be used (and not only one). +.PP +Definition at line 46 of file moLSCheckPoint.h. +.SH "Member Function Documentation" +.PP +.SS "template void \fBmoLSCheckPoint\fP< M >::operator() (const M & _move, const typename M::EOType & _solution)\fC [inline]\fP" +.PP +\fBFunction\fP which launches the checkpointing. +.PP +Each saved function is used on the current move and the current solution. +.PP +\fBParameters:\fP +.RS 4 +\fI_move\fP a move. +.br +\fI_solution\fP a solution. +.RE +.PP + +.PP +Definition at line 57 of file moLSCheckPoint.h. +.PP +References moLSCheckPoint< M >::functions. +.SS "template void \fBmoLSCheckPoint\fP< M >::add (\fBeoBF\fP< const M &, const typename M::EOType &, void > & _function)\fC [inline]\fP" +.PP +Procedure which add a new function to the function vector. +.PP +The new function is added at the end of the vector. +.PP +\fBParameters:\fP +.RS 4 +\fI_function\fP a new function to add. +.RE +.PP + +.PP +Definition at line 72 of file moLSCheckPoint.h. +.PP +References moLSCheckPoint< M >::functions. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moLinearCoolingSchedule.3 b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moLinearCoolingSchedule.3 new file mode 100644 index 000000000..92dace154 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moLinearCoolingSchedule.3 @@ -0,0 +1,90 @@ +.TH "moLinearCoolingSchedule" 3 "16 Jan 2008" "Version 1.0" "ParadisEO-MOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moLinearCoolingSchedule \- One of the possible \fBmoCoolingSchedule\fP. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoCoolingSchedule\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoLinearCoolingSchedule\fP (double _threshold, double _quantity)" +.br +.RI "\fISimple constructor. \fP" +.ti -1c +.RI "bool \fBoperator()\fP (double &_current_temperature)" +.br +.RI "\fI\fBFunction\fP which proceeds to the cooling. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "double \fBthreshold\fP" +.br +.RI "\fIThe temperature threhold. \fP" +.ti -1c +.RI "double \fBquantity\fP" +.br +.RI "\fIThe quantity that allows the temperature to decrease. \fP" +.in -1c +.SH "Detailed Description" +.PP +One of the possible \fBmoCoolingSchedule\fP. + +An another very simple cooling schedule, the temperature decrease according to a quantity while the temperature is greater than a threshold. +.PP +Definition at line 46 of file moLinearCoolingSchedule.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "moLinearCoolingSchedule::moLinearCoolingSchedule (double _threshold, double _quantity)\fC [inline]\fP" +.PP +Simple constructor. +.PP +\fBParameters:\fP +.RS 4 +\fI_threshold\fP the threshold. +.br +\fI_quantity\fP the quantity used to descrease the temperature. +.RE +.PP + +.PP +Definition at line 55 of file moLinearCoolingSchedule.h. +.SH "Member Function Documentation" +.PP +.SS "bool moLinearCoolingSchedule::operator() (double & _current_temperature)\fC [inline, virtual]\fP" +.PP +\fBFunction\fP which proceeds to the cooling. +.PP +It decreases the temperature and indicates if it is greater than the threshold. +.PP +\fBParameters:\fP +.RS 4 +\fI_current_temperature\fP The current temperature. +.RE +.PP +\fBReturns:\fP +.RS 4 +true if the new temperature (current temperature - quantity) is greater than the threshold, false otherwise. +.RE +.PP + +.PP +Implements \fBeoUF< double &, bool >\fP. +.PP +Definition at line 65 of file moLinearCoolingSchedule.h. +.PP +References quantity, and threshold. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moMove.3 b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moMove.3 new file mode 100644 index 000000000..762fc31b5 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moMove.3 @@ -0,0 +1,35 @@ +.TH "moMove" 3 "16 Jan 2008" "Version 1.0" "ParadisEO-MOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moMove \- Definition of a move. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoUF< EOT &, void >\fP. +.PP +.SS "Public Types" + +.in +1c +.ti -1c +.RI "typedef EOT \fBEOType\fP" +.br +.RI "\fIAlias for the type. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moMove< EOT >" +Definition of a move. + +A move transforms a solution to another close solution. It describes how a solution can be modified to another one. +.PP +Definition at line 49 of file moMove.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moMoveExpl.3 b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moMoveExpl.3 new file mode 100644 index 000000000..166c420dd --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moMoveExpl.3 @@ -0,0 +1,29 @@ +.TH "moMoveExpl" 3 "16 Jan 2008" "Version 1.0" "ParadisEO-MOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moMoveExpl \- Description of a move (\fBmoMove\fP) explorer. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoBF< const M::EOType &, M::EOType &, void >\fP. +.PP +Inherited by \fBmoMoveLoopExpl< M >\fP. +.PP +.SH "Detailed Description" +.PP + +.SS "template class moMoveExpl< M >" +Description of a move (\fBmoMove\fP) explorer. + +Only a description...See \fBmoMoveLoopExpl\fP. +.PP +Definition at line 45 of file moMoveExpl.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moMoveIncrEval.3 b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moMoveIncrEval.3 new file mode 100644 index 000000000..299f9023c --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moMoveIncrEval.3 @@ -0,0 +1,27 @@ +.TH "moMoveIncrEval" 3 "16 Jan 2008" "Version 1.0" "ParadisEO-MOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moMoveIncrEval \- (generally) Efficient evaluation function based a move and a solution. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoBF< A1, A2, R >< const const M &, M::EOType &, M::EOType::Fitness >\fP. +.PP +.SH "Detailed Description" +.PP + +.SS "template class moMoveIncrEval< M >" +(generally) Efficient evaluation function based a move and a solution. + +From a move and a solution, it computes a new fitness that could be associated to the solution if this one is updated. +.PP +Definition at line 49 of file moMoveIncrEval.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moMoveInit.3 b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moMoveInit.3 new file mode 100644 index 000000000..935771e0c --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moMoveInit.3 @@ -0,0 +1,27 @@ +.TH "moMoveInit" 3 "16 Jan 2008" "Version 1.0" "ParadisEO-MOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moMoveInit \- Move (\fBmoMove\fP) initializer. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoBF< A1, A2, R >< const M &, M::EOType &, void >\fP. +.PP +.SH "Detailed Description" +.PP + +.SS "template class moMoveInit< M >" +Move (\fBmoMove\fP) initializer. + +Class which allows to initiase a move. Only a description... An object that herits from this class needs to be designed to be used. +.PP +Definition at line 47 of file moMoveInit.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moMoveLoopExpl.3 b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moMoveLoopExpl.3 new file mode 100644 index 000000000..7b0cd19a9 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moMoveLoopExpl.3 @@ -0,0 +1,29 @@ +.TH "moMoveLoopExpl" 3 "16 Jan 2008" "Version 1.0" "ParadisEO-MOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moMoveLoopExpl \- Class which describes an iterative explorer. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoMoveExpl< M >< M >\fP. +.PP +Inherited by \fBmoHCMoveLoopExpl< M >\fP, and \fBmoTSMoveLoopExpl< M >\fP. +.PP +.SH "Detailed Description" +.PP + +.SS "template class moMoveLoopExpl< M >" +Class which describes an iterative explorer. + +Only a description... \fBmoHCMoveLoopExpl\fP and \fBmoTSMoveLoopExpl\fP are exemples of class that are a \fBmoMoveLoopExpl\fP. +.PP +Definition at line 47 of file moMoveLoopExpl.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moMoveSelect.3 b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moMoveSelect.3 new file mode 100644 index 000000000..824acc615 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moMoveSelect.3 @@ -0,0 +1,84 @@ +.TH "moMoveSelect" 3 "16 Jan 2008" "Version 1.0" "ParadisEO-MOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moMoveSelect \- Class that describes a move selector (\fBmoMove\fP). + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoBF< M &, M::EOType::Fitness &, void >\fP. +.PP +Inherited by \fBmoBestImprSelect< M >\fP, \fBmoFirstImprSelect< M >\fP, and \fBmoRandImprSelect< M >\fP. +.PP +.SS "Public Types" + +.in +1c +.ti -1c +.RI "typedef M::EOType::Fitness \fBFitness\fP" +.br +.RI "\fIAlias for the fitness. \fP" +.in -1c +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "virtual void \fBinit\fP (const \fBFitness\fP &_fitness)=0" +.br +.RI "\fIProcedure which initialises all that the move selector needs including the initial fitness. \fP" +.ti -1c +.RI "virtual bool \fBupdate\fP (const M &_move, const \fBFitness\fP &_fitness)=0" +.br +.RI "\fI\fBFunction\fP which updates the best solutions. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moMoveSelect< M >" +Class that describes a move selector (\fBmoMove\fP). + +It iteratively considers some moves (\fBmoMove\fP) and their associated fitnesses. The best move is so regularly updated. At any time, it could be accessed. +.PP +Definition at line 50 of file moMoveSelect.h. +.SH "Member Function Documentation" +.PP +.SS "template virtual void \fBmoMoveSelect\fP< M >::init (const \fBFitness\fP & _fitness)\fC [pure virtual]\fP" +.PP +Procedure which initialises all that the move selector needs including the initial fitness. +.PP +In order to know the fitness of the solution, for which the neighborhood will be soon explored +.PP +\fBParameters:\fP +.RS 4 +\fI_fitness\fP the current fitness. +.RE +.PP + +.PP +Implemented in \fBmoBestImprSelect< M >\fP, \fBmoFirstImprSelect< M >\fP, and \fBmoRandImprSelect< M >\fP. +.SS "template virtual bool \fBmoMoveSelect\fP< M >::update (const M & _move, const \fBFitness\fP & _fitness)\fC [pure virtual]\fP" +.PP +\fBFunction\fP which updates the best solutions. +.PP +\fBParameters:\fP +.RS 4 +\fI_move\fP a new move. +.br +\fI_fitness\fP a fitness linked to the new move. +.RE +.PP +\fBReturns:\fP +.RS 4 +a boolean that expresses the need to resume the exploration. +.RE +.PP + +.PP +Implemented in \fBmoBestImprSelect< M >\fP, \fBmoFirstImprSelect< M >\fP, and \fBmoRandImprSelect< M >\fP. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moNextMove.3 b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moNextMove.3 new file mode 100644 index 000000000..3d5236a6f --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moNextMove.3 @@ -0,0 +1,29 @@ +.TH "moNextMove" 3 "16 Jan 2008" "Version 1.0" "ParadisEO-MOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moNextMove \- Class which allows to generate a new move (\fBmoMove\fP). + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoBF< A1, A2, R >< const M &, M::EOType &, bool >\fP. +.PP +Inherited by \fBmoItRandNextMove< M >\fP. +.PP +.SH "Detailed Description" +.PP + +.SS "template class moNextMove< M >" +Class which allows to generate a new move (\fBmoMove\fP). + +Useful for the explorer (for \fBmoTS\fP or \fBmoHC\fP). Does nothing... An object that herits from this class needs to be designed for being used. +.PP +Definition at line 47 of file moNextMove.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moNoAspirCrit.3 b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moNoAspirCrit.3 new file mode 100644 index 000000000..c6e9c0556 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moNoAspirCrit.3 @@ -0,0 +1,71 @@ +.TH "moNoAspirCrit" 3 "16 Jan 2008" "Version 1.0" "ParadisEO-MOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moNoAspirCrit \- One of the possible aspiration criterion (\fBmoAspirCrit\fP). + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoAspirCrit< M >< M >\fP. +.PP +.SS "Private Member Functions" + +.in +1c +.ti -1c +.RI "bool \fBoperator()\fP (const M &_move, const typename M::EOType::Fitness &_fitness)" +.br +.RI "\fI\fBFunction\fP which describes the aspiration criterion behaviour. \fP" +.ti -1c +.RI "void \fBinit\fP ()" +.br +.RI "\fIProcedure which initialises all that needs a \fBmoNoAspirCrit\fP. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moNoAspirCrit< M >" +One of the possible aspiration criterion (\fBmoAspirCrit\fP). + +The simplest : never satisfied. +.PP +Definition at line 47 of file moNoAspirCrit.h. +.SH "Member Function Documentation" +.PP +.SS "template bool \fBmoNoAspirCrit\fP< M >::operator() (const M & _move, const typename M::EOType::Fitness & _fitness)\fC [inline, private]\fP" +.PP +\fBFunction\fP which describes the aspiration criterion behaviour. +.PP +Does nothing. +.PP +\fBParameters:\fP +.RS 4 +\fI_move\fP a move. +.br +\fI_fitness\fP a fitness. +.RE +.PP +\fBReturns:\fP +.RS 4 +false. +.RE +.PP + +.PP +Definition at line 57 of file moNoAspirCrit.h. +.SS "template void \fBmoNoAspirCrit\fP< M >::init ()\fC [inline, private, virtual]\fP" +.PP +Procedure which initialises all that needs a \fBmoNoAspirCrit\fP. +.PP +Nothing... +.PP +Implements \fBmoAspirCrit< M >\fP. +.PP +Definition at line 66 of file moNoAspirCrit.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moNoFitImprSolContinue.3 b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moNoFitImprSolContinue.3 new file mode 100644 index 000000000..1725f3f45 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moNoFitImprSolContinue.3 @@ -0,0 +1,121 @@ +.TH "moNoFitImprSolContinue" 3 "16 Jan 2008" "Version 1.0" "ParadisEO-MOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moNoFitImprSolContinue \- One possible stop criterion for a solution-based heuristic. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoSolContinue< EOT >< EOT >\fP. +.PP +.SS "Public Types" + +.in +1c +.ti -1c +.RI "typedef EOT::Fitness \fBFitness\fP" +.br +.RI "\fIAlias for the fitness. \fP" +.in -1c +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoNoFitImprSolContinue\fP (unsigned int _maxNumberOfIterationWithoutImprovement)" +.br +.RI "\fIBasic constructor. \fP" +.ti -1c +.RI "bool \fBoperator()\fP (const EOT &_solution)" +.br +.RI "\fI\fBFunction\fP that activates the stopping criterion. \fP" +.ti -1c +.RI "void \fBinit\fP ()" +.br +.RI "\fIProcedure which allows to initialise all the stuff needed. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "unsigned int \fBmaxNumberOfIterationsWithoutImprovement\fP" +.br +.RI "\fIMaximum number of iterations without improvement allowed. \fP" +.ti -1c +.RI "bool \fBfirstFitnessSaved\fP" +.br +.RI "\fIFlag that this is the first time that the fitness is used. \fP" +.ti -1c +.RI "\fBFitness\fP \fBfitness\fP" +.br +.RI "\fICurrent Fitness. \fP" +.ti -1c +.RI "unsigned int \fBcounter\fP" +.br +.RI "\fIThe iteration couter. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moNoFitImprSolContinue< EOT >" +One possible stop criterion for a solution-based heuristic. + +The stop criterion corresponds to a maximum number of iterations without improvement. +.PP +Definition at line 46 of file moNoFitImprSolContinue.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBmoNoFitImprSolContinue\fP< EOT >::\fBmoNoFitImprSolContinue\fP (unsigned int _maxNumberOfIterationWithoutImprovement)\fC [inline]\fP" +.PP +Basic constructor. +.PP +\fBParameters:\fP +.RS 4 +\fI_maxNumberOfIterationWithoutImprovement\fP The number of iterations without fitness improvement to reach for stop. +.RE +.PP + +.PP +Definition at line 57 of file moNoFitImprSolContinue.h. +.SH "Member Function Documentation" +.PP +.SS "template bool \fBmoNoFitImprSolContinue\fP< EOT >::operator() (const EOT & _solution)\fC [inline, virtual]\fP" +.PP +\fBFunction\fP that activates the stopping criterion. +.PP +Indicates if the fitness has not been improved since a given number of iterations (after a minimum of iterations). +.PP +\fBParameters:\fP +.RS 4 +\fI_solution\fP the current solution. +.RE +.PP +\fBReturns:\fP +.RS 4 +true or false. +.RE +.PP + +.PP +Implements \fBeoUF< const EOT &, bool >\fP. +.PP +Definition at line 67 of file moNoFitImprSolContinue.h. +.PP +References moNoFitImprSolContinue< EOT >::counter, moNoFitImprSolContinue< EOT >::firstFitnessSaved, moNoFitImprSolContinue< EOT >::fitness, and moNoFitImprSolContinue< EOT >::maxNumberOfIterationsWithoutImprovement. +.SS "template void \fBmoNoFitImprSolContinue\fP< EOT >::init ()\fC [inline, virtual]\fP" +.PP +Procedure which allows to initialise all the stuff needed. +.PP +It can be also used to reinitialize all the needed things. +.PP +Implements \fBmoSolContinue< EOT >\fP. +.PP +Definition at line 102 of file moNoFitImprSolContinue.h. +.PP +References moNoFitImprSolContinue< EOT >::counter, and moNoFitImprSolContinue< EOT >::firstFitnessSaved. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moRandImprSelect.3 b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moRandImprSelect.3 new file mode 100644 index 000000000..f330879b3 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moRandImprSelect.3 @@ -0,0 +1,132 @@ +.TH "moRandImprSelect" 3 "16 Jan 2008" "Version 1.0" "ParadisEO-MOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moRandImprSelect \- One of the possible \fBmoMove\fP selector (\fBmoMoveSelect\fP). + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoMoveSelect< M >< M >\fP. +.PP +.SS "Public Types" + +.in +1c +.ti -1c +.RI "typedef M::EOType::Fitness \fBFitness\fP" +.br +.RI "\fIAlias for the fitness. \fP" +.in -1c +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "void \fBinit\fP (const \fBFitness\fP &_fitness)" +.br +.RI "\fIProcedure which all that needs a \fBmoRandImprSelect\fP. \fP" +.ti -1c +.RI "bool \fBupdate\fP (const M &_move, const \fBFitness\fP &_fitness)" +.br +.RI "\fI\fBFunction\fP that updates the fitness and move vectors. \fP" +.ti -1c +.RI "void \fBoperator()\fP (M &_move, \fBFitness\fP &_fitness)" +.br +.RI "\fIThe move selection. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBFitness\fP \fBinitial_fitness\fP" +.br +.RI "\fIFitness of the current solution. \fP" +.ti -1c +.RI "std::vector< \fBFitness\fP > \fBbetter_fitnesses\fP" +.br +.RI "\fICandidate fitnesse vector. \fP" +.ti -1c +.RI "std::vector< M > \fBbetter_moves\fP" +.br +.RI "\fICandidate move vector. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moRandImprSelect< M >" +One of the possible \fBmoMove\fP selector (\fBmoMoveSelect\fP). + +All the neighbors are considered. One of them that enables an improvment of the objective function is choosen. +.PP +Definition at line 49 of file moRandImprSelect.h. +.SH "Member Function Documentation" +.PP +.SS "template void \fBmoRandImprSelect\fP< M >::init (const \fBFitness\fP & _fitness)\fC [inline, virtual]\fP" +.PP +Procedure which all that needs a \fBmoRandImprSelect\fP. +.PP +Give a value to the initialise fitness. Clean the move and fitness vectors. +.PP +\fBParameters:\fP +.RS 4 +\fI_fitness\fP the current best fitness +.RE +.PP + +.PP +Implements \fBmoMoveSelect< M >\fP. +.PP +Definition at line 63 of file moRandImprSelect.h. +.PP +References moRandImprSelect< M >::better_fitnesses, moRandImprSelect< M >::better_moves, and moRandImprSelect< M >::initial_fitness. +.SS "template bool \fBmoRandImprSelect\fP< M >::update (const M & _move, const \fBFitness\fP & _fitness)\fC [inline, virtual]\fP" +.PP +\fBFunction\fP that updates the fitness and move vectors. +.PP +if a move give a better fitness than the initial fitness, it is saved and the fitness too. +.PP +\fBParameters:\fP +.RS 4 +\fI_move\fP a new move. +.br +\fI_fitness\fP a new fitness associated to the new move. +.RE +.PP +\fBReturns:\fP +.RS 4 +true. +.RE +.PP + +.PP +Implements \fBmoMoveSelect< M >\fP. +.PP +Definition at line 79 of file moRandImprSelect.h. +.PP +References moRandImprSelect< M >::better_fitnesses, moRandImprSelect< M >::better_moves, and moRandImprSelect< M >::initial_fitness. +.SS "template void \fBmoRandImprSelect\fP< M >::operator() (M & _move, \fBFitness\fP & _fitness)\fC [inline, virtual]\fP" +.PP +The move selection. +.PP +One the saved move is randomly chosen. +.PP +\fBParameters:\fP +.RS 4 +\fI_move\fP the reference of the move that can be initialised by the function. +.br +\fI_fitness\fP the reference of the fitness that can be initialised by the function. +.RE +.PP + +.PP +Implements \fBeoBF< M &, M::EOType::Fitness &, void >\fP. +.PP +Definition at line 98 of file moRandImprSelect.h. +.PP +References moRandImprSelect< M >::better_fitnesses, moRandImprSelect< M >::better_moves, and eoRng::random(). + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moRandMove.3 b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moRandMove.3 new file mode 100644 index 000000000..2998012ac --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moRandMove.3 @@ -0,0 +1,27 @@ +.TH "moRandMove" 3 "16 Jan 2008" "Version 1.0" "ParadisEO-MOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moRandMove \- Random move generator. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoUF< M &, void >\fP. +.PP +.SH "Detailed Description" +.PP + +.SS "template class moRandMove< M >" +Random move generator. + +Only a description... An object that herits from this class needs to be designed in order to use a \fBmoSA\fP. +.PP +Definition at line 46 of file moRandMove.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moSA.3 b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moSA.3 new file mode 100644 index 000000000..25a657ab4 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moSA.3 @@ -0,0 +1,130 @@ +.TH "moSA" 3 "16 Jan 2008" "Version 1.0" "ParadisEO-MOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moSA \- Simulated Annealing (SA). + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoAlgo< M::EOType >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoSA\fP (\fBmoRandMove\fP< M > &_random_move_generator, \fBmoMoveIncrEval\fP< M > &_incremental_evaluation, \fBmoSolContinue\fP< \fBEOT\fP > &_continue, double _initial_temperature, \fBmoCoolingSchedule\fP &_cooling_schedule, \fBeoEvalFunc\fP< \fBEOT\fP > &_full_evaluation)" +.br +.RI "\fISA constructor. \fP" +.ti -1c +.RI "bool \fBoperator()\fP (\fBEOT\fP &_solution)" +.br +.RI "\fIfunction that launches the SA algorithm. \fP" +.in -1c +.SS "Private Types" + +.in +1c +.ti -1c +.RI "typedef M::EOType \fBEOT\fP" +.br +.RI "\fIAlias for the type. \fP" +.ti -1c +.RI "typedef EOT::Fitness \fBFitness\fP" +.br +.RI "\fIAlias for the fitness. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBmoRandMove\fP< M > & \fBrandom_move_generator\fP" +.br +.RI "\fIA move generator (generally randomly). \fP" +.ti -1c +.RI "\fBmoMoveIncrEval\fP< M > & \fBincremental_evaluation\fP" +.br +.RI "\fIA (generally) efficient evaluation function. \fP" +.ti -1c +.RI "\fBmoSolContinue\fP< \fBEOT\fP > & \fBcontinu\fP" +.br +.RI "\fIStopping criterion before temperature update. \fP" +.ti -1c +.RI "double \fBinitial_temperature\fP" +.br +.RI "\fIInitial temperature. \fP" +.ti -1c +.RI "\fBmoCoolingSchedule\fP & \fBcooling_schedule\fP" +.br +.RI "\fIThe cooling schedule. \fP" +.ti -1c +.RI "\fBeoEvalFunc\fP< \fBEOT\fP > & \fBfull_evaluation\fP" +.br +.RI "\fIA full evaluation function. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moSA< M >" +Simulated Annealing (SA). + +Class that describes a Simulated Annealing algorithm. +.PP +Definition at line 53 of file moSA.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBmoSA\fP< M >::\fBmoSA\fP (\fBmoRandMove\fP< M > & _random_move_generator, \fBmoMoveIncrEval\fP< M > & _incremental_evaluation, \fBmoSolContinue\fP< \fBEOT\fP > & _continue, double _initial_temperature, \fBmoCoolingSchedule\fP & _cooling_schedule, \fBeoEvalFunc\fP< \fBEOT\fP > & _full_evaluation)\fC [inline]\fP" +.PP +SA constructor. +.PP +All the boxes used by a SA need to be given. +.PP +\fBParameters:\fP +.RS 4 +\fI_random_move_generator\fP The move generator (generally randomly). +.br +\fI_incremental_evaluation\fP The (generally) efficient evaluation function +.br +\fI_continue\fP The stopping criterion. +.br +\fI_initial_temperature\fP The initial temperature. +.br +\fI_cooling_schedule\fP The cooling schedule, describes how the temperature is modified. +.br +\fI_full_evaluation\fP The full evaluation function. +.RE +.PP + +.PP +Definition at line 74 of file moSA.h. +.SH "Member Function Documentation" +.PP +.SS "template bool \fBmoSA\fP< M >::operator() (\fBEOT\fP & _solution)\fC [inline, virtual]\fP" +.PP +function that launches the SA algorithm. +.PP +As a \fBmoTS\fP or a \fBmoHC\fP, the SA can be used for HYBRIDATION in an evolutionary algorithm. +.PP +\fBParameters:\fP +.RS 4 +\fI_solution\fP A solution to improve. +.RE +.PP +\fBReturns:\fP +.RS 4 +TRUE. +.RE +.PP + +.PP +Implements \fBeoUF< M::EOType &, bool >\fP. +.PP +Definition at line 89 of file moSA.h. +.PP +References moSA< M >::continu, moSA< M >::cooling_schedule, moSA< M >::full_evaluation, moSA< M >::incremental_evaluation, moSA< M >::initial_temperature, moSA< M >::random_move_generator, and eoRng::uniform(). + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moSimpleMoveTabuList.3 b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moSimpleMoveTabuList.3 new file mode 100644 index 000000000..7774c967d --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moSimpleMoveTabuList.3 @@ -0,0 +1,162 @@ +.TH "moSimpleMoveTabuList" 3 "16 Jan 2008" "Version 1.0" "ParadisEO-MOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moSimpleMoveTabuList \- Class describing a move tabu list with a limited memory. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoTabuList< M >< M >\fP. +.PP +.SS "Public Types" + +.in +1c +.ti -1c +.RI "typedef M::EOType \fBEOT\fP" +.br +.RI "\fIAlias for the type. \fP" +.ti -1c +.RI "typedef std::list< M >::iterator \fBmoveIterator\fP" +.br +.RI "\fIAlias for an iterator of a move list. \fP" +.in -1c +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoSimpleMoveTabuList\fP (unsigned int _memory_maximum_size)" +.br +.RI "\fIConstructor. \fP" +.ti -1c +.RI "bool \fBoperator()\fP (const M &_move, const \fBEOT\fP &_solution)" +.br +.RI "\fI\fBFunction\fP that indicates if, in a given state, the _move is tabu or not. \fP" +.ti -1c +.RI "void \fBadd\fP (const M &_move, const \fBEOT\fP &_solution)" +.br +.RI "\fIProcedure to add a move in the tabu list. \fP" +.ti -1c +.RI "void \fBupdate\fP ()" +.br +.RI "\fIProcedure that updates the tabu list content. \fP" +.ti -1c +.RI "void \fBinit\fP ()" +.br +.RI "\fIProcedure which initialises the tabu list. \fP" +.in -1c +.SS "Private Member Functions" + +.in +1c +.ti -1c +.RI "void \fBremoveMove\fP (const M &_move)" +.br +.RI "\fIProcedure that removes a given move from the tabu list (if it is into, else do nothing). \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "unsigned int \fBmemory_maximum_size\fP" +.br +.RI "\fIThe maximum size of the tabu list. \fP" +.ti -1c +.RI "unsigned int \fBmemory_size\fP" +.br +.RI "\fIThe current size of the tabu list. \fP" +.ti -1c +.RI "std::list< M > \fBtabuList\fP" +.br +.RI "\fIThe move tabu list. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moSimpleMoveTabuList< M >" +Class describing a move tabu list with a limited memory. +.PP +Definition at line 46 of file moSimpleMoveTabuList.h. +.SH "Member Function Documentation" +.PP +.SS "template bool \fBmoSimpleMoveTabuList\fP< M >::operator() (const M & _move, const \fBEOT\fP & _solution)\fC [inline]\fP" +.PP +\fBFunction\fP that indicates if, in a given state, the _move is tabu or not. +.PP +\fBParameters:\fP +.RS 4 +\fI_move\fP A given \fBmoMove\fP. +.br +\fI_solution\fP A solution. +.RE +.PP +\fBReturns:\fP +.RS 4 +true or false. +.RE +.PP + +.PP +Definition at line 69 of file moSimpleMoveTabuList.h. +.PP +References moSimpleMoveTabuList< M >::tabuList. +.SS "template void \fBmoSimpleMoveTabuList\fP< M >::add (const M & _move, const \fBEOT\fP & _solution)\fC [inline, virtual]\fP" +.PP +Procedure to add a move in the tabu list. +.PP +The two parameters have not to be modified so they are constant parameters. +.PP +\fBParameters:\fP +.RS 4 +\fI_move\fP a new tabu move. +.br +\fI_solution\fP the origianl solution associated to this move. +.RE +.PP + +.PP +Implements \fBmoTabuList< M >\fP. +.PP +Definition at line 86 of file moSimpleMoveTabuList.h. +.PP +References moSimpleMoveTabuList< M >::memory_maximum_size, moSimpleMoveTabuList< M >::memory_size, moSimpleMoveTabuList< M >::removeMove(), and moSimpleMoveTabuList< M >::tabuList. +.SS "template void \fBmoSimpleMoveTabuList\fP< M >::update ()\fC [inline, virtual]\fP" +.PP +Procedure that updates the tabu list content. +.PP +Generally, a counter associated to each saved move is decreased by one. +.PP +Implements \fBmoTabuList< M >\fP. +.PP +Definition at line 110 of file moSimpleMoveTabuList.h. +.SS "template void \fBmoSimpleMoveTabuList\fP< M >::init ()\fC [inline, virtual]\fP" +.PP +Procedure which initialises the tabu list. +.PP +Can be useful if the data structure needs to be allocated before being used. +.PP +Implements \fBmoTabuList< M >\fP. +.PP +Definition at line 115 of file moSimpleMoveTabuList.h. +.SS "template void \fBmoSimpleMoveTabuList\fP< M >::removeMove (const M & _move)\fC [inline, private]\fP" +.PP +Procedure that removes a given move from the tabu list (if it is into, else do nothing). +.PP +\fBParameters:\fP +.RS 4 +\fI_move\fP A given \fBmoMove\fP. +.RE +.PP + +.PP +Definition at line 126 of file moSimpleMoveTabuList.h. +.PP +References moSimpleMoveTabuList< M >::tabuList. +.PP +Referenced by moSimpleMoveTabuList< M >::add(). + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moSimpleSolutionTabuList.3 b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moSimpleSolutionTabuList.3 new file mode 100644 index 000000000..2dabb93b2 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moSimpleSolutionTabuList.3 @@ -0,0 +1,176 @@ +.TH "moSimpleSolutionTabuList" 3 "16 Jan 2008" "Version 1.0" "ParadisEO-MOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moSimpleSolutionTabuList \- Class describing a solution tabu list with limited length. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoTabuList< M >< M >\fP. +.PP +.SS "Public Types" + +.in +1c +.ti -1c +.RI "typedef M::EOType \fBEOT\fP" +.br +.RI "\fIAlias for the type. \fP" +.ti -1c +.RI "typedef std::list< \fBEOT\fP >::iterator \fBsolutionIterator\fP" +.br +.RI "\fIAlias for an iterator of a solution list. \fP" +.in -1c +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoSimpleSolutionTabuList\fP (unsigned int _memory_maximum_size)" +.br +.RI "\fIConstructor. \fP" +.ti -1c +.RI "bool \fBoperator()\fP (const M &_move, const \fBEOT\fP &_solution)" +.br +.RI "\fI\fBFunction\fP that indicates if, in a given state, the _move is tabu or not. \fP" +.ti -1c +.RI "void \fBadd\fP (const M &_move, const \fBEOT\fP &_solution)" +.br +.RI "\fIProcedure to add a move in the tabu list. \fP" +.ti -1c +.RI "void \fBupdate\fP ()" +.br +.RI "\fIProcedure that updates the tabu list content. \fP" +.ti -1c +.RI "void \fBinit\fP ()" +.br +.RI "\fIProcedure which initialises the tabu list. \fP" +.in -1c +.SS "Private Member Functions" + +.in +1c +.ti -1c +.RI "void \fBremoveSolution\fP (const \fBEOT\fP &_solution)" +.br +.RI "\fIProcedure that removes a given solution from the tabu list (if it is into, else does nothing). \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "unsigned int \fBmemory_maximum_size\fP" +.br +.RI "\fIThe maximum size of the tabu list. \fP" +.ti -1c +.RI "unsigned int \fBmemory_size\fP" +.br +.RI "\fIThe current size of the tabu list. \fP" +.ti -1c +.RI "std::list< \fBEOT\fP > \fBtabuList\fP" +.br +.RI "\fIThe solution tabu list. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moSimpleSolutionTabuList< M >" +Class describing a solution tabu list with limited length. +.PP +Definition at line 46 of file moSimpleSolutionTabuList.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBmoSimpleSolutionTabuList\fP< M >::\fBmoSimpleSolutionTabuList\fP (unsigned int _memory_maximum_size)\fC [inline]\fP" +.PP +Constructor. +.PP +\fBParameters:\fP +.RS 4 +\fI_memory_maximum_size\fP The maximum size of the solution tabu list. +.RE +.PP + +.PP +Definition at line 60 of file moSimpleSolutionTabuList.h. +.SH "Member Function Documentation" +.PP +.SS "template bool \fBmoSimpleSolutionTabuList\fP< M >::operator() (const M & _move, const \fBEOT\fP & _solution)\fC [inline]\fP" +.PP +\fBFunction\fP that indicates if, in a given state, the _move is tabu or not. +.PP +\fBParameters:\fP +.RS 4 +\fI_move\fP A given \fBmoMove\fP. +.br +\fI_solution\fP A solution. +.RE +.PP +\fBReturns:\fP +.RS 4 +true or false. +.RE +.PP + +.PP +Definition at line 69 of file moSimpleSolutionTabuList.h. +.PP +References moSimpleSolutionTabuList< M >::tabuList. +.SS "template void \fBmoSimpleSolutionTabuList\fP< M >::add (const M & _move, const \fBEOT\fP & _solution)\fC [inline, virtual]\fP" +.PP +Procedure to add a move in the tabu list. +.PP +The two parameters have not to be modified so they are constant parameters. +.PP +\fBParameters:\fP +.RS 4 +\fI_move\fP a new tabu move. +.br +\fI_solution\fP the origianl solution associated to this move. +.RE +.PP + +.PP +Implements \fBmoTabuList< M >\fP. +.PP +Definition at line 89 of file moSimpleSolutionTabuList.h. +.PP +References moSimpleSolutionTabuList< M >::memory_maximum_size, moSimpleSolutionTabuList< M >::memory_size, moSimpleSolutionTabuList< M >::removeSolution(), and moSimpleSolutionTabuList< M >::tabuList. +.SS "template void \fBmoSimpleSolutionTabuList\fP< M >::update ()\fC [inline, virtual]\fP" +.PP +Procedure that updates the tabu list content. +.PP +Generally, a counter associated to each saved move is decreased by one. +.PP +Implements \fBmoTabuList< M >\fP. +.PP +Definition at line 115 of file moSimpleSolutionTabuList.h. +.SS "template void \fBmoSimpleSolutionTabuList\fP< M >::init ()\fC [inline, virtual]\fP" +.PP +Procedure which initialises the tabu list. +.PP +Can be useful if the data structure needs to be allocated before being used. +.PP +Implements \fBmoTabuList< M >\fP. +.PP +Definition at line 120 of file moSimpleSolutionTabuList.h. +.SS "template void \fBmoSimpleSolutionTabuList\fP< M >::removeSolution (const \fBEOT\fP & _solution)\fC [inline, private]\fP" +.PP +Procedure that removes a given solution from the tabu list (if it is into, else does nothing). +.PP +\fBParameters:\fP +.RS 4 +\fI_solution\fP A given solution. +.RE +.PP + +.PP +Definition at line 131 of file moSimpleSolutionTabuList.h. +.PP +References moSimpleSolutionTabuList< M >::tabuList. +.PP +Referenced by moSimpleSolutionTabuList< M >::add(). + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moSolContinue.3 b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moSolContinue.3 new file mode 100644 index 000000000..c66bbf35b --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moSolContinue.3 @@ -0,0 +1,46 @@ +.TH "moSolContinue" 3 "16 Jan 2008" "Version 1.0" "ParadisEO-MOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moSolContinue \- Class that describes a stop criterion for a solution-based heuristic. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoUF< const EOT &, bool >\fP. +.PP +Inherited by \fBmoFitSolContinue< EOT >\fP, \fBmoGenSolContinue< EOT >\fP, \fBmoNoFitImprSolContinue< EOT >\fP, and \fBmoSteadyFitSolContinue< EOT >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "virtual void \fBinit\fP ()=0" +.br +.RI "\fIProcedure which initialises all that the stop criterion needs. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moSolContinue< EOT >" +Class that describes a stop criterion for a solution-based heuristic. + +It allows to add an initialisation procedure to an object that is a unary function (\fBeoUF\fP). +.PP +Definition at line 48 of file moSolContinue.h. +.SH "Member Function Documentation" +.PP +.SS "template virtual void \fBmoSolContinue\fP< EOT >::init ()\fC [pure virtual]\fP" +.PP +Procedure which initialises all that the stop criterion needs. +.PP +Generally, it allocates some data structures or initialises some counters. +.PP +Implemented in \fBmoFitSolContinue< EOT >\fP, \fBmoGenSolContinue< EOT >\fP, \fBmoNoFitImprSolContinue< EOT >\fP, and \fBmoSteadyFitSolContinue< EOT >\fP. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moSteadyFitSolContinue.3 b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moSteadyFitSolContinue.3 new file mode 100644 index 000000000..2dccea0a5 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moSteadyFitSolContinue.3 @@ -0,0 +1,131 @@ +.TH "moSteadyFitSolContinue" 3 "16 Jan 2008" "Version 1.0" "ParadisEO-MOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moSteadyFitSolContinue \- One possible stopping criterion for a solution-based heuristic. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoSolContinue< EOT >< EOT >\fP. +.PP +.SS "Public Types" + +.in +1c +.ti -1c +.RI "typedef EOT::Fitness \fBFitness\fP" +.br +.RI "\fIAlias for the fitness. \fP" +.in -1c +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoSteadyFitSolContinue\fP (unsigned int _maxNumberOfIterations, unsigned int _maxNumberOfIterationWithoutImprovement)" +.br +.RI "\fIBasic constructor. \fP" +.ti -1c +.RI "bool \fBoperator()\fP (const EOT &_solution)" +.br +.RI "\fI\fBFunction\fP that activates the stopping criterion. \fP" +.ti -1c +.RI "void \fBinit\fP ()" +.br +.RI "\fIProcedure which allows to initialise the stuff needed. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "unsigned int \fBmaxNumberOfIterations\fP" +.br +.RI "\fIMaximum number of iterations before considering the fitness. \fP" +.ti -1c +.RI "unsigned int \fBmaxNumberOfIterationsWithoutImprovement\fP" +.br +.RI "\fIMaximum number of iterations without improvement allowed. \fP" +.ti -1c +.RI "bool \fBmaxNumberOfIterationsReached\fP" +.br +.RI "\fIFlag that indicates that the maxNumberIteration have been reached. \fP" +.ti -1c +.RI "bool \fBfirstFitnessSaved\fP" +.br +.RI "\fIFlag that this is the first time that the fitness is used. \fP" +.ti -1c +.RI "\fBFitness\fP \fBfitness\fP" +.br +.RI "\fICurrent Fitness. \fP" +.ti -1c +.RI "unsigned int \fBcounter\fP" +.br +.RI "\fIThe iteration couter. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moSteadyFitSolContinue< EOT >" +One possible stopping criterion for a solution-based heuristic. + +The stop criterion corresponds to a maximum number of iterations without improvement (after a minimum number of iterations). +.PP +Definition at line 46 of file moSteadyFitSolContinue.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBmoSteadyFitSolContinue\fP< EOT >::\fBmoSteadyFitSolContinue\fP (unsigned int _maxNumberOfIterations, unsigned int _maxNumberOfIterationWithoutImprovement)\fC [inline]\fP" +.PP +Basic constructor. +.PP +\fBParameters:\fP +.RS 4 +\fI_maxNumberOfIterations\fP The number of iterations to reach before looking for the fitness. +.br +\fI_maxNumberOfIterationWithoutImprovement\fP The number of iterations without fitness improvement to reach for stop. +.RE +.PP + +.PP +Definition at line 58 of file moSteadyFitSolContinue.h. +.SH "Member Function Documentation" +.PP +.SS "template bool \fBmoSteadyFitSolContinue\fP< EOT >::operator() (const EOT & _solution)\fC [inline, virtual]\fP" +.PP +\fBFunction\fP that activates the stopping criterion. +.PP +Indicates if the fitness has not been improved since a number of iterations (after a minimum of iterations). +.PP +\fBParameters:\fP +.RS 4 +\fI_solution\fP the current solution. +.RE +.PP +\fBReturns:\fP +.RS 4 +true or false. +.RE +.PP + +.PP +Implements \fBeoUF< const EOT &, bool >\fP. +.PP +Definition at line 70 of file moSteadyFitSolContinue.h. +.PP +References moSteadyFitSolContinue< EOT >::counter, moSteadyFitSolContinue< EOT >::firstFitnessSaved, moSteadyFitSolContinue< EOT >::fitness, moSteadyFitSolContinue< EOT >::maxNumberOfIterations, moSteadyFitSolContinue< EOT >::maxNumberOfIterationsReached, and moSteadyFitSolContinue< EOT >::maxNumberOfIterationsWithoutImprovement. +.SS "template void \fBmoSteadyFitSolContinue\fP< EOT >::init ()\fC [inline, virtual]\fP" +.PP +Procedure which allows to initialise the stuff needed. +.PP +It can be also used to reinitialize the counter all the needed things. +.PP +Implements \fBmoSolContinue< EOT >\fP. +.PP +Definition at line 114 of file moSteadyFitSolContinue.h. +.PP +References moSteadyFitSolContinue< EOT >::counter, moSteadyFitSolContinue< EOT >::firstFitnessSaved, and moSteadyFitSolContinue< EOT >::maxNumberOfIterationsReached. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moTS.3 b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moTS.3 new file mode 100644 index 000000000..734711fd2 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moTS.3 @@ -0,0 +1,142 @@ +.TH "moTS" 3 "16 Jan 2008" "Version 1.0" "ParadisEO-MOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moTS \- Tabu Search (TS). + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoAlgo< M::EOType >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoTS\fP (\fBmoMoveInit\fP< M > &_move_initializer, \fBmoNextMove\fP< M > &_next_move_generator, \fBmoMoveIncrEval\fP< M > &_incremental_evaluation, \fBmoTabuList\fP< M > &_tabu_list, \fBmoAspirCrit\fP< M > &_aspiration_criterion, \fBmoSolContinue\fP< \fBEOT\fP > &_continue, \fBeoEvalFunc\fP< \fBEOT\fP > &_full_evaluation)" +.br +.RI "\fIConstructor of a \fBmoTS\fP specifying all the boxes. \fP" +.ti -1c +.RI "\fBmoTS\fP (\fBmoMoveExpl\fP< M > &_move_explorer, \fBmoSolContinue\fP< \fBEOT\fP > &_continue, \fBeoEvalFunc\fP< \fBEOT\fP > &_full_evaluation)" +.br +.RI "\fIConstructor with less parameters. \fP" +.ti -1c +.RI "bool \fBoperator()\fP (\fBEOT\fP &_solution)" +.br +.RI "\fI\fBFunction\fP which launchs the Tabu Search. \fP" +.in -1c +.SS "Private Types" + +.in +1c +.ti -1c +.RI "typedef M::EOType \fBEOT\fP" +.br +.RI "\fIAlias for the type. \fP" +.ti -1c +.RI "typedef EOT::Fitness \fBFitness\fP" +.br +.RI "\fIAlias for the fitness. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBmoMoveExpl\fP< M > & \fBmove_explorer\fP" +.br +.RI "\fINeighborhood explorer. \fP" +.ti -1c +.RI "\fBmoSolContinue\fP< \fBEOT\fP > & \fBcontinu\fP" +.br +.RI "\fIStop criterion. \fP" +.ti -1c +.RI "\fBeoEvalFunc\fP< \fBEOT\fP > & \fBfull_evaluation\fP" +.br +.RI "\fIFull evaluation function. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moTS< M >" +Tabu Search (TS). + +Generic algorithm that describes a tabu search. +.PP +Definition at line 50 of file moTS.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBmoTS\fP< M >::\fBmoTS\fP (\fBmoMoveInit\fP< M > & _move_initializer, \fBmoNextMove\fP< M > & _next_move_generator, \fBmoMoveIncrEval\fP< M > & _incremental_evaluation, \fBmoTabuList\fP< M > & _tabu_list, \fBmoAspirCrit\fP< M > & _aspiration_criterion, \fBmoSolContinue\fP< \fBEOT\fP > & _continue, \fBeoEvalFunc\fP< \fBEOT\fP > & _full_evaluation)\fC [inline]\fP" +.PP +Constructor of a \fBmoTS\fP specifying all the boxes. +.PP +In this constructor, a \fBmoTSMoveLoopExpl\fP is instanciated. +.PP +\fBParameters:\fP +.RS 4 +\fI_move_initializer\fP The move initializer. +.br +\fI_next_move_generator\fP The neighbourhood explorer. +.br +\fI_incremental_evaluation\fP The (generally) efficient evaluation. +.br +\fI_tabu_list\fP The tabu list. +.br +\fI_aspiration_criterion\fP An aspiration criterion. +.br +\fI_continue\fP The stopping criterion. +.br +\fI_full_evaluation\fP A full evaluation function. +.RE +.PP + +.PP +Definition at line 72 of file moTS.h. +.SS "template \fBmoTS\fP< M >::\fBmoTS\fP (\fBmoMoveExpl\fP< M > & _move_explorer, \fBmoSolContinue\fP< \fBEOT\fP > & _continue, \fBeoEvalFunc\fP< \fBEOT\fP > & _full_evaluation)\fC [inline]\fP" +.PP +Constructor with less parameters. +.PP +The explorer is given in the parameters. +.PP +\fBParameters:\fP +.RS 4 +\fI_move_explorer\fP The explorer (generally different that a \fBmoTSMoveLoopExpl\fP). +.br +\fI_continue\fP The stopping criterion. +.br +\fI_full_evaluation\fP A full evaluation function. +.RE +.PP + +.PP +Definition at line 89 of file moTS.h. +.SH "Member Function Documentation" +.PP +.SS "template bool \fBmoTS\fP< M >::operator() (\fBEOT\fP & _solution)\fC [inline, virtual]\fP" +.PP +\fBFunction\fP which launchs the Tabu Search. +.PP +Algorithm of the tabu search. As a \fBmoSA\fP or a \fBmoHC\fP, it can be used for HYBRIDATION in an evolutionary algorithm. For security a lock (pthread_mutex_t) is closed during the algorithm. +.PP +\fBParameters:\fP +.RS 4 +\fI_solution\fP a solution to improve. +.RE +.PP +\fBReturns:\fP +.RS 4 +TRUE. +.RE +.PP + +.PP +Implements \fBeoUF< M::EOType &, bool >\fP. +.PP +Definition at line 102 of file moTS.h. +.PP +References moTS< M >::continu, moTS< M >::full_evaluation, and moTS< M >::move_explorer. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moTSMoveLoopExpl.3 b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moTSMoveLoopExpl.3 new file mode 100644 index 000000000..1026a5a38 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moTSMoveLoopExpl.3 @@ -0,0 +1,125 @@ +.TH "moTSMoveLoopExpl" 3 "16 Jan 2008" "Version 1.0" "ParadisEO-MOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moTSMoveLoopExpl \- Explorer for a Tabu Search algorithm. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoMoveLoopExpl< M >< M >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoTSMoveLoopExpl\fP (\fBmoMoveInit\fP< M > &_move_initializer, \fBmoNextMove\fP< M > &_next_move_generator, \fBmoMoveIncrEval\fP< M > &_incremental_evaluation, \fBmoTabuList\fP< M > &_tabu_list, \fBmoAspirCrit\fP< M > &_aspiration_criterion)" +.br +.RI "\fIConstructor. \fP" +.ti -1c +.RI "void \fBoperator()\fP (const \fBEOT\fP &_old_solution, \fBEOT\fP &_new_solution)" +.br +.RI "\fIProcedure which lauches the exploration. \fP" +.in -1c +.SS "Private Types" + +.in +1c +.ti -1c +.RI "typedef M::EOType \fBEOT\fP" +.br +.RI "\fIAlias for the type. \fP" +.ti -1c +.RI "typedef M::EOType::Fitness \fBFitness\fP" +.br +.RI "\fIAlias for the fitness. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBmoMoveInit\fP< M > & \fBmove_initializer\fP" +.br +.RI "\fIMove initialisation. \fP" +.ti -1c +.RI "\fBmoNextMove\fP< M > & \fBnext_move_generator\fP" +.br +.RI "\fINeighborhood explorer. \fP" +.ti -1c +.RI "\fBmoMoveIncrEval\fP< M > & \fBincremental_evaluation\fP" +.br +.RI "\fIEfficient evaluation. \fP" +.ti -1c +.RI "\fBmoBestImprSelect\fP< M > \fBmove_selection\fP" +.br +.RI "\fIMove selector. \fP" +.ti -1c +.RI "\fBmoTabuList\fP< M > & \fBtabu_list\fP" +.br +.RI "\fITabu list. \fP" +.ti -1c +.RI "\fBmoAspirCrit\fP< M > & \fBaspiration_criterion\fP" +.br +.RI "\fIAspiration criterion. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moTSMoveLoopExpl< M >" +Explorer for a Tabu Search algorithm. + +It is used by a \fBmoTS\fP. +.PP +Definition at line 53 of file moTSMoveLoopExpl.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBmoTSMoveLoopExpl\fP< M >::\fBmoTSMoveLoopExpl\fP (\fBmoMoveInit\fP< M > & _move_initializer, \fBmoNextMove\fP< M > & _next_move_generator, \fBmoMoveIncrEval\fP< M > & _incremental_evaluation, \fBmoTabuList\fP< M > & _tabu_list, \fBmoAspirCrit\fP< M > & _aspiration_criterion)\fC [inline]\fP" +.PP +Constructor. +.PP +\fBParameters:\fP +.RS 4 +\fI_move_initializer\fP The move initializer. +.br +\fI_next_move_generator\fP The neighbourhood explorer. +.br +\fI_incremental_evaluation\fP A (generally) efficient evaluation. +.br +\fI_tabu_list\fP The tabu list. +.br +\fI_aspiration_criterion\fP An aspiration criterion. +.RE +.PP + +.PP +Definition at line 71 of file moTSMoveLoopExpl.h. +.PP +References moTSMoveLoopExpl< M >::aspiration_criterion, and moTSMoveLoopExpl< M >::tabu_list. +.SH "Member Function Documentation" +.PP +.SS "template void \fBmoTSMoveLoopExpl\fP< M >::operator() (const \fBEOT\fP & _old_solution, \fBEOT\fP & _new_solution)\fC [inline, virtual]\fP" +.PP +Procedure which lauches the exploration. +.PP +The exploration continues while the chosen move is not in the tabu list or the aspiration criterion is true. If these 2 conditions are not true, the exploration stops if the move selector update function returns false. +.PP +\fBParameters:\fP +.RS 4 +\fI_old_solution\fP the initial solution +.br +\fI_new_solution\fP the new solution +.RE +.PP + +.PP +Implements \fBeoBF< const M::EOType &, M::EOType &, void >\fP. +.PP +Definition at line 90 of file moTSMoveLoopExpl.h. +.PP +References moTSMoveLoopExpl< M >::aspiration_criterion, moTSMoveLoopExpl< M >::incremental_evaluation, moTSMoveLoopExpl< M >::move_initializer, moTSMoveLoopExpl< M >::move_selection, moTSMoveLoopExpl< M >::next_move_generator, and moTSMoveLoopExpl< M >::tabu_list. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moTabuList.3 b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moTabuList.3 new file mode 100644 index 000000000..b3f521143 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/man/man3/moTabuList.3 @@ -0,0 +1,85 @@ +.TH "moTabuList" 3 "16 Jan 2008" "Version 1.0" "ParadisEO-MOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moTabuList \- Class describing a tabu list that a \fBmoTS\fP uses. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoBF< A1, A2, R >< const const M &, M::EOType &, bool >\fP. +.PP +Inherited by \fBmoSimpleMoveTabuList< M >\fP, and \fBmoSimpleSolutionTabuList< M >\fP. +.PP +.SS "Public Types" + +.in +1c +.ti -1c +.RI "typedef M::EOType \fBEOT\fP" +.br +.RI "\fIAlias for the type. \fP" +.in -1c +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "virtual void \fBadd\fP (const M &_move, const \fBEOT\fP &_solution)=0" +.br +.RI "\fIProcedure to add a move in the tabu list. \fP" +.ti -1c +.RI "virtual void \fBupdate\fP ()=0" +.br +.RI "\fIProcedure that updates the tabu list content. \fP" +.ti -1c +.RI "virtual void \fBinit\fP ()=0" +.br +.RI "\fIProcedure which initialises the tabu list. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moTabuList< M >" +Class describing a tabu list that a \fBmoTS\fP uses. + +It is only a description, does nothing... A new object that herits from this class has to be defined in order to be used in a \fBmoTS\fP. +.PP +Definition at line 46 of file moTabuList.h. +.SH "Member Function Documentation" +.PP +.SS "template virtual void \fBmoTabuList\fP< M >::add (const M & _move, const \fBEOT\fP & _solution)\fC [pure virtual]\fP" +.PP +Procedure to add a move in the tabu list. +.PP +The two parameters have not to be modified so they are constant parameters. +.PP +\fBParameters:\fP +.RS 4 +\fI_move\fP a new tabu move. +.br +\fI_solution\fP the origianl solution associated to this move. +.RE +.PP + +.PP +Implemented in \fBmoSimpleMoveTabuList< M >\fP, and \fBmoSimpleSolutionTabuList< M >\fP. +.SS "template virtual void \fBmoTabuList\fP< M >::update ()\fC [pure virtual]\fP" +.PP +Procedure that updates the tabu list content. +.PP +Generally, a counter associated to each saved move is decreased by one. +.PP +Implemented in \fBmoSimpleMoveTabuList< M >\fP, and \fBmoSimpleSolutionTabuList< M >\fP. +.SS "template virtual void \fBmoTabuList\fP< M >::init ()\fC [pure virtual]\fP" +.PP +Procedure which initialises the tabu list. +.PP +Can be useful if the data structure needs to be allocated before being used. +.PP +Implemented in \fBmoSimpleMoveTabuList< M >\fP, and \fBmoSimpleSolutionTabuList< M >\fP. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/mo.doxyfile.cmake b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/mo.doxyfile.cmake new file mode 100644 index 000000000..ab30c3021 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/mo.doxyfile.cmake @@ -0,0 +1,1268 @@ +# Doxyfile 1.5.2 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file that +# follow. The default is UTF-8 which is also the encoding used for all text before +# the first occurrence of this tag. Doxygen uses libiconv (or the iconv built into +# libc) for the transcoding. See http://www.gnu.org/software/libiconv for the list of +# possible encodings. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = @PACKAGE_NAME@ + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = @PACKAGE_VERSION@ + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = @CMAKE_BINARY_DIR@/doc + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +# 4096 sub-directories (in 2 levels) under the output directory of each output +# format and will distribute the generated files over these directories. +# Enabling this option can be useful when feeding doxygen a huge amount of +# source files, where putting all generated files in the same directory would +# otherwise cause performance problems for the file system. + +CREATE_SUBDIRS = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, +# Croatian, Czech, Danish, Dutch, Finnish, French, German, Greek, Hungarian, +# Italian, Japanese, Japanese-en (Japanese with English messages), Korean, +# Korean-en, Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian, +# Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator +# that is used to form the text in various listings. Each string +# in this list, if found as the leading text of the brief description, will be +# stripped from the text and the result after processing the whole list, is +# used as the annotated text. Otherwise, the brief description is used as-is. +# If left blank, the following values are used ("$name" is automatically +# replaced with the name of the entity): "The $name class" "The $name widget" +# "The $name file" "is" "provides" "specifies" "contains" +# "represents" "a" "an" "the" + +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = NO + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the +# path to strip. + +STRIP_FROM_PATH = @CMAKE_SOURCE_DIR@ + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +# the path mentioned in the documentation of a class, which tells +# the reader which header file to include in order to use a class. +# If left blank only the name of the header file containing the class +# definition is used. Otherwise one should specify the include paths that +# are normally passed to the compiler using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful is your file systems +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like the Qt-style comments (thus requiring an +# explicit @brief command for a brief description. + +JAVADOC_AUTOBRIEF = YES + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the DETAILS_AT_TOP tag is set to YES then Doxygen +# will output the detailed description near the top, like JavaDoc. +# If set to NO, the detailed description appears after the member +# documentation. + +DETAILS_AT_TOP = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# re-implements. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce +# a new page for each member. If set to NO, the documentation of a member will +# be part of the file/class/namespace that contains it. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 8 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +# sources only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java +# sources only. Doxygen will then generate output that is more tailored for Java. +# For instance, namespaces will be presented as packages, qualified scopes +# will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to +# include (a tag file for) the STL sources as input, then you should +# set this tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. +# func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. + +CPP_CLI_SUPPORT = NO + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = YES + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = YES + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = YES + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = YES + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = YES + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. + +CASE_SENSE_NAMES = NO + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = NO + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in +# declaration order. + +SORT_BRIEF_DOCS = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the +# alphabetical list. + +SORT_BY_SCOPE_NAME = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or define consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and defines in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +# If the sources in your project are distributed over multiple directories +# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy +# in the documentation. The default is NO. + +SHOW_DIRECTORIES = NO + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from the +# version control system). Doxygen will invoke the program by executing (via +# popen()) the command , where is the value of +# the FILE_VERSION_FILTER tag, and is the name of an input file +# provided by doxygen. Whatever the program writes to standard output +# is used as the file version. See the manual for examples. + +FILE_VERSION_FILTER = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = YES + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = NO + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = NO + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be abled to get warnings for +# functions that are documented, but have no documentation for their parameters +# or return value. If set to NO (the default) doxygen will only warn about +# wrong or incomplete parameter documentation, but not about the absence of +# documentation. + +WARN_NO_PARAMDOC = NO + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. Optionally the format may contain +# $version, which will be replaced by the version of the file (if it could +# be obtained via FILE_VERSION_FILTER) + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = @CMAKE_SOURCE_DIR@/src + +# This tag can be used to specify the character encoding of the source files that +# doxygen parses. Internally doxygen uses the UTF-8 encoding, which is also the default +# input encoding. Doxygen uses libiconv (or the iconv built into libc) for the transcoding. +# See http://www.gnu.org/software/libiconv for the list of possible encodings. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx +# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py + +FILE_PATTERNS = *.cpp \ + *.h + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or +# directories that are symbolic links (a Unix filesystem feature) are excluded +# from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. Note that the wildcards are matched +# against the file with absolute path, so to exclude all test directories +# for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the output. +# The symbol name can be a fully qualified name, a word, or if the wildcard * is used, +# a substring. Examples: ANamespace, AClass, AClass::ANamespace, ANamespace::*Test + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = * + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. If FILTER_PATTERNS is specified, this tag will be +# ignored. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER +# is applied to all files. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also +# VERBATIM_HEADERS is set to NO. + +SOURCE_BROWSER = YES + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES (the default) +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = YES + +# If the REFERENCES_RELATION tag is set to YES (the default) +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = YES + +# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) +# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from +# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will +# link to the source code. Otherwise they will link to the documentstion. + +REFERENCES_LINK_SOURCE = YES + +# If the USE_HTAGS tag is set to YES then the references to source code +# will point to the HTML generated by the htags(1) tool instead of doxygen +# built-in source browser. The htags tool is part of GNU's global source +# tagging system (see http://www.gnu.org/software/global/global.html). You +# will need version 4.8.6 or higher. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = YES + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 3 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = mo + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet. Note that doxygen will try to copy +# the style sheet file to the HTML output directory, so don't put your own +# stylesheet in the HTML output directory as well, or it will be erased! + +HTML_STYLESHEET = + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output directory. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = NO + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be +# generated containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, +# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are +# probably better off using the HTML help feature. + +GENERATE_TREEVIEW = YES + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = YES + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = NO + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = NO + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = YES + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. This is useful +# if you want to understand what is going on. On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_DEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator +# instead of the = operator. + +PREDEFINED = + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all function-like macros that are alone +# on a line, have an all uppercase name, and do not end with a semicolon. Such +# function macros are typically used for boiler-plate code, and will confuse +# the parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. +# Optionally an initial location of the external documentation +# can be added for each tagfile. The format of a tag file without +# this location is as follows: +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths or +# URLs. If a location is present for each tag, the installdox tool +# does not have to be run to correct the links. +# Note that each tag file must have a unique name +# (where the name does NOT include the path) +# If a tag file is not located in the directory in which doxygen +# is run, you must also specify the path to the tagfile here. + +TAGFILES = @EO_BIN_DIR@/doc/eo.doxytag=http://eodev.sourceforge.net/eo/doc/html + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = @CMAKE_BINARY_DIR@/doc/mo.doxytag + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option is superseded by the HAVE_DOT option below. This is only a +# fallback. It is recommended to install and use dot, since it yields more +# powerful graphs. + +CLASS_DIAGRAMS = YES + +# You can define message sequence charts within doxygen comments using the \msc +# command. Doxygen will then run the mscgen tool (see http://www.mcternan.me.uk/mscgen/) to +# produce the chart and insert it in the documentation. The MSCGEN_PATH tag allows you to +# specify the directory where the mscgen tool resides. If left empty the tool is assumed to +# be found in the default search path. + +MSCGEN_PATH = + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = NO + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for groups, showing the direct groups dependencies + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. + +UML_LOOK = NO + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = NO + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will +# generate a call dependency graph for every global function or class method. +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable call graphs for selected +# functions only using the \callgraph command. + +CALL_GRAPH = NO + +# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then doxygen will +# generate a caller dependency graph for every global function or class method. +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable caller graphs for selected +# functions only using the \callergraph command. + +CALLER_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES +# then doxygen will show the dependencies a directory has on other directories +# in a graphical way. The dependency relations are determined by the #include +# relations between the files in the directories. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are png, jpg, or gif +# If left blank png will be used. + +DOT_IMAGE_FORMAT = png + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The MAX_DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of +# nodes that will be shown in the graph. If the number of nodes in a graph +# becomes larger than this value, doxygen will truncate the graph, which is +# visualized by representing a node as a red box. Note that doxygen will always +# show the root nodes and its direct children regardless of this setting. + +DOT_GRAPH_MAX_NODES = 50 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is disabled by default, which results in a white background. +# Warning: Depending on the platform used, enabling this option may lead to +# badly anti-aliased labels on the edges of a graph (i.e. they become hard to +# read). + +DOT_TRANSPARENT = NO + +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) +# support this, this feature is disabled by default. + +DOT_MULTI_TARGETS = NO + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- + +# The SEARCHENGINE tag specifies whether or not a search engine should be +# used. If set to NO the values of all tags below this one will be ignored. + +SEARCHENGINE = YES diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/mo.doxytag b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/mo.doxytag new file mode 100644 index 000000000..7ca1a54d1 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/doc/mo.doxytag @@ -0,0 +1,1367 @@ + + + + main + Welcome to PARADISEO-Moving Objects + main + Paradiseo + authors + Introduction + LICENSE + Installation + + + moAlgo + classmo_algo.html + EOT + eoMonOp< EOT > + + + moAspirCrit + classmo_aspir_crit.html + M + eoBF + + virtual void + init + classmo_aspir_crit.html + a8ce84510a5ec7c9078381e542c6d140 + ()=0 + + + + moBestImprSelect + classmo_best_impr_select.html + M + moMoveSelect + + M::EOType::Fitness + Fitness + classmo_best_impr_select.html + c4ae17435221fb0a8e8acd285210cfcb + + + + void + init + classmo_best_impr_select.html + 83f961549986b8ad94692e433aa79114 + (const Fitness &_fitness) + + + bool + update + classmo_best_impr_select.html + 5c0729fd316b0ef78406bce5ca91de2a + (const M &_move, const Fitness &_fitness) + + + void + operator() + classmo_best_impr_select.html + 33b3de7bd322f737eb97cce9a5404527 + (M &_move, Fitness &_fitness) + + + bool + first_time + classmo_best_impr_select.html + 352b14d206b0772eb9f40efb7beb0f13 + + + + M + best_move + classmo_best_impr_select.html + bd86f70519f954c07ff0d8a2a3a8ff6a + + + + Fitness + best_fitness + classmo_best_impr_select.html + e51345fe28ca7cbaca65bdad1aa8ecb7 + + + + + moComparator + classmo_comparator.html + EOT + eoBF + + + moCoolingSchedule + classmo_cooling_schedule.html + eoUF< double &, bool > + + + moExponentialCoolingSchedule + classmo_exponential_cooling_schedule.html + moCoolingSchedule + + + moExponentialCoolingSchedule + classmo_exponential_cooling_schedule.html + e60ce9eb5e632f4758ea96ae92a52774 + (double _threshold, double _ratio) + + + bool + operator() + classmo_exponential_cooling_schedule.html + 95b075e9786a5cc984ef1bb59a2107e4 + (double &_temperature) + + + double + threshold + classmo_exponential_cooling_schedule.html + 8d4327c0bb33b7121a322279eea97f84 + + + + double + ratio + classmo_exponential_cooling_schedule.html + e8f3f87417c1c7253efb938a740846fa + + + + + moFirstImprSelect + classmo_first_impr_select.html + M + moMoveSelect + + M::EOType::Fitness + Fitness + classmo_first_impr_select.html + 64763ce3e6d2873266624382b407fa5a + + + + virtual void + init + classmo_first_impr_select.html + a923437ecc3db50e7052b002a9a1bbf8 + (const Fitness &_fitness) + + + bool + update + classmo_first_impr_select.html + f68b7ee7b35bf7347c16006f0587d313 + (const M &_move, const Fitness &_fitness) + + + void + operator() + classmo_first_impr_select.html + 976569efd882886cb13184daeba79766 + (M &_move, Fitness &_fitness) + + + bool + valid + classmo_first_impr_select.html + a99c0586ba07449234705c17a258d58c + + + + M + best_move + classmo_first_impr_select.html + dfed419a608dd7c41f07fa1f1279cb8c + + + + Fitness + initial_fitness + classmo_first_impr_select.html + 669f8f2f74e71bf2b7fdabfc9cca2c0e + + + + Fitness + best_fitness + classmo_first_impr_select.html + 287937f5c059b078ccec94e86e0a8238 + + + + + moFitComparator + classmo_fit_comparator.html + EOT + moComparator + + bool + operator() + classmo_fit_comparator.html + c920d5a49deb16710daf1e5fcde6b16c + (const EOT &_solution1, const EOT &_solution2) + + + + moFitSolContinue + classmo_fit_sol_continue.html + EOT + moSolContinue + + EOT::Fitness + Fitness + classmo_fit_sol_continue.html + 369ed94a788d8bdc08d5554f7669376f + + + + + moFitSolContinue + classmo_fit_sol_continue.html + 5f0dc5e529e8cd307ff4a1ae982d5b84 + (Fitness _fitness) + + + bool + operator() + classmo_fit_sol_continue.html + ce4e02895c13bfd131fc759adf83798f + (const EOT &_solution) + + + void + init + classmo_fit_sol_continue.html + 670bd895b4edfcd3aebb40d2295d7f7c + () + + + Fitness + fitness + classmo_fit_sol_continue.html + 87d0ba8f2f76f61c89317eed5f094dfc + + + + + moGenSolContinue + classmo_gen_sol_continue.html + EOT + moSolContinue + + + moGenSolContinue + classmo_gen_sol_continue.html + 8e2456421b641d38e3f800f3bbe45159 + (unsigned int _generationMaximumNumber) + + + bool + operator() + classmo_gen_sol_continue.html + 2fd5f2f10b6d6208412582578fad48ea + (const EOT &_solution) + + + void + init + classmo_gen_sol_continue.html + 6c5db8182157584b56507cc9075602d4 + () + + + unsigned int + generationMaximumNumber + classmo_gen_sol_continue.html + c838d923436b71c584891c1cbe3f47ba + + + + unsigned int + generationNumber + classmo_gen_sol_continue.html + af0b3e5ca3ceee0d843670955c8f1e58 + + + + + moHC + classmo_h_c.html + M + moAlgo< M::EOType > + + + moHC + classmo_h_c.html + 44a35bd30df6e79cff95a31b84889bd7 + (moMoveInit< M > &_move_initializer, moNextMove< M > &_next_move_generator, moMoveIncrEval< M > &_incremental_evaluation, moMoveSelect< M > &_move_selection, eoEvalFunc< EOT > &_full_evaluation) + + + + moHC + classmo_h_c.html + 5002f969ef0a4d959610158fc62f137a + (moMoveExpl< M > &_move_explorer, eoEvalFunc< EOT > &_full_evaluation) + + + bool + operator() + classmo_h_c.html + b739f9586b647e32bf31605066f984ad + (EOT &_solution) + + + M::EOType + EOT + classmo_h_c.html + d219296ede03c679646bce2fe8ff96cb + + + + EOT::Fitness + Fitness + classmo_h_c.html + 56487c97a7cf0c423cc879d1bbd45027 + + + + moMoveExpl< M > & + move_explorer + classmo_h_c.html + ec4e702a6ec240f40ff9d262c36d080b + + + + eoEvalFunc< EOT > & + full_evaluation + classmo_h_c.html + 1175c588c19d3658cfc690d5f3f8d825 + + + + + moHCMoveLoopExpl + classmo_h_c_move_loop_expl.html + M + moMoveLoopExpl + + + moHCMoveLoopExpl + classmo_h_c_move_loop_expl.html + fac2eb6695ba1b797ffab4f290d760b8 + (moMoveInit< M > &_move_initializer, moNextMove< M > &_next_move_generator, moMoveIncrEval< M > &_incremental_evaluation, moMoveSelect< M > &_move_selection) + + + void + operator() + classmo_h_c_move_loop_expl.html + fe9362c10d74a5e6ed09b56345396192 + (const EOT &_old_solution, EOT &_new_solution) + + + M::EOType + EOT + classmo_h_c_move_loop_expl.html + 077befd4106c201eafd3ea22bcea2fe9 + + + + M::EOType::Fitness + Fitness + classmo_h_c_move_loop_expl.html + f24871224316d5549b9013a2d27ab465 + + + + moMoveInit< M > & + move_initializer + classmo_h_c_move_loop_expl.html + 17506f3f1172714f9adbfa4e8a15953a + + + + moNextMove< M > & + next_move_generator + classmo_h_c_move_loop_expl.html + fdc44d40d8859bae1d7b92e77f36aa30 + + + + moMoveIncrEval< M > & + incremental_evaluation + classmo_h_c_move_loop_expl.html + a044b28f972d007a22736b646d86f265 + + + + moMoveSelect< M > & + move_selection + classmo_h_c_move_loop_expl.html + 5f0532e0ee8ef8ecaeeb4e56342be443 + + + + + moILS + classmo_i_l_s.html + M + moAlgo< M::EOType > + + + moILS + classmo_i_l_s.html + c83f81ba0836ae262305efa15eeb3da2 + (moAlgo< EOT > &_algorithm, moSolContinue< EOT > &_continue, moComparator< EOT > &_acceptance_criterion, eoMonOp< EOT > &_perturbation, eoEvalFunc< EOT > &_full_evaluation) + + + + moILS + classmo_i_l_s.html + 6d684a1d13ad224a911c8b0277812297 + (moMoveInit< M > &_move_initializer, moNextMove< M > &_next_move_generator, moMoveIncrEval< M > &_incremental_evaluation, moMoveSelect< M > &_move_selection, moSolContinue< EOT > &_continue, moComparator< EOT > &_acceptance_criterion, eoMonOp< EOT > &_perturbation, eoEvalFunc< EOT > &_full_evaluation) + + + + moILS + classmo_i_l_s.html + 740ac81a0d06eb471592ba0861d3a6d7 + (moMoveInit< M > &_move_initializer, moNextMove< M > &_next_move_generator, moMoveIncrEval< M > &_incremental_evaluation, moTabuList< M > &_tabu_list, moAspirCrit< M > &_aspiration_criterion, moSolContinue< EOT > &_moTS_continue, moSolContinue< EOT > &_continue, moComparator< EOT > &_acceptance_criterion, eoMonOp< EOT > &_perturbation, eoEvalFunc< EOT > &_full_evaluation) + + + + moILS + classmo_i_l_s.html + 36bab16abf36957dac36c467b86385bc + (moRandMove< M > &_random_move_generator, moMoveIncrEval< M > &_incremental_evaluation, moSolContinue< EOT > &_moSA_continue, double _initial_temperature, moCoolingSchedule &_cooling_schedule, moSolContinue< EOT > &_continue, moComparator< EOT > &_acceptance_criterion, eoMonOp< EOT > &_perturbation, eoEvalFunc< EOT > &_full_evaluation) + + + bool + operator() + classmo_i_l_s.html + 3f6b950e5a6c363f04b8d4c259502488 + (EOT &_solution) + + + M::EOType + EOT + classmo_i_l_s.html + c81bafc611e4d4fd44347cf7162198c7 + + + + EOT::Fitness + Fitness + classmo_i_l_s.html + 8c464a9eae064a78eff75d4c722b619c + + + + moAlgo< EOT > & + algorithm + classmo_i_l_s.html + 5651a4d94b59d523d341d5d6e24ca311 + + + + moSolContinue< EOT > & + continu + classmo_i_l_s.html + 30edab439401d7ec04fd8d37b4513d94 + + + + moComparator< EOT > & + acceptance_criterion + classmo_i_l_s.html + 295f6d0342c67bd3dc4cb82e2adc26be + + + + eoMonOp< EOT > & + perturbation + classmo_i_l_s.html + f667a1bda06b6d221292df9aba3db8a2 + + + + eoEvalFunc< EOT > & + full_evaluation + classmo_i_l_s.html + 8e8c383ac6ec34aaf071fa18bb54be67 + + + + + moImprBestFitAspirCrit + classmo_impr_best_fit_aspir_crit.html + M + moAspirCrit + + M::EOType::Fitness + Fitness + classmo_impr_best_fit_aspir_crit.html + 0bc1a8c9af99781e662570c04750cca8 + + + + + moImprBestFitAspirCrit + classmo_impr_best_fit_aspir_crit.html + e2c697a5cf3a7696e38bb52b6694a340 + () + + + void + init + classmo_impr_best_fit_aspir_crit.html + ffa451a14ff4ea86fb8bd9fdbc348630 + () + + + bool + operator() + classmo_impr_best_fit_aspir_crit.html + b6e5e96d57a6b846033fc22a9951b067 + (const M &_move, const Fitness &_fitness) + + + Fitness + best_fitness + classmo_impr_best_fit_aspir_crit.html + 03230e8672389de65aacd2bf7b6c1184 + + + + bool + first_time + classmo_impr_best_fit_aspir_crit.html + 2d5226c7dd661b33011402dbbbe78265 + + + + + moItRandNextMove + classmo_it_rand_next_move.html + M + moNextMove + + + moItRandNextMove + classmo_it_rand_next_move.html + c27b1fb0d64d4862dd886f7a59419b8c + (moRandMove< M > &_random_move_generator, unsigned int _iteration_maximum_number) + + + bool + operator() + classmo_it_rand_next_move.html + 21454db723a12fe6c8eb5caeccd32df6 + (M &_move, const EOT &_solution) + + + M::EOType + EOT + classmo_it_rand_next_move.html + ee666007fc494bf4a5f0cd065e5671cf + + + + moRandMove< M > & + random_move_generator + classmo_it_rand_next_move.html + 92601819402ad00d01933113d0bcf40d + + + + unsigned int + iteration_maximum_number + classmo_it_rand_next_move.html + 1b06067aee7a78f8a255563391514d2d + + + + unsigned int + iteration_number + classmo_it_rand_next_move.html + 2f8d52c88d6c002be518091cc52beca1 + + + + + moLinearCoolingSchedule + classmo_linear_cooling_schedule.html + moCoolingSchedule + + + moLinearCoolingSchedule + classmo_linear_cooling_schedule.html + 420939ebf57f01d242cbe4eb668dffde + (double _threshold, double _quantity) + + + bool + operator() + classmo_linear_cooling_schedule.html + b0a1886aaa7ee2a0c8e929e55ca321ce + (double &_current_temperature) + + + double + threshold + classmo_linear_cooling_schedule.html + e7f539f986801ea71392c4a55ba08a76 + + + + double + quantity + classmo_linear_cooling_schedule.html + 6159dc39ceda89b23ffdab3d6ce8d8ed + + + + + moLSCheckPoint + classmo_l_s_check_point.html + M + eoBF + + void + operator() + classmo_l_s_check_point.html + e9b9d41e40dd7bab648327686b2b938d + (const M &_move, const typename M::EOType &_solution) + + + void + add + classmo_l_s_check_point.html + f95f2dc556cdfbdc81688562ca95202d + (eoBF< const M &, const typename M::EOType &, void > &_function) + + + std::vector< eoBF< const M &, const typename M::EOType &, void > * > + functions + classmo_l_s_check_point.html + 56a7427a6aebac7955c22bab302c050a + + + + + moMove + classmo_move.html + EOT + eoUF< EOT &, void > + + EOT + EOType + classmo_move.html + 7fb853a91ba1319530529e515380bbba + + + + + moMoveExpl + classmo_move_expl.html + M + eoBF< const M::EOType &, M::EOType &, void > + + + moMoveIncrEval + classmo_move_incr_eval.html + M + eoBF + + + moMoveInit + classmo_move_init.html + M + eoBF + + + moMoveLoopExpl + classmo_move_loop_expl.html + M + moMoveExpl + + + moMoveSelect + classmo_move_select.html + M + eoBF< M &, M::EOType::Fitness &, void > + + M::EOType::Fitness + Fitness + classmo_move_select.html + 8148ccc0e6fbd209c3fe6829559895c8 + + + + virtual void + init + classmo_move_select.html + 58038bd859632c1bd022d23d9792bdca + (const Fitness &_fitness)=0 + + + virtual bool + update + classmo_move_select.html + 5b4d3b2f030cca80c563c3db0c4af404 + (const M &_move, const Fitness &_fitness)=0 + + + + moNextMove + classmo_next_move.html + M + eoBF + + + moNoAspirCrit + classmo_no_aspir_crit.html + M + moAspirCrit + + bool + operator() + classmo_no_aspir_crit.html + 289aac56f03c4651fcbcec4a91fb6fd6 + (const M &_move, const typename M::EOType::Fitness &_fitness) + + + void + init + classmo_no_aspir_crit.html + f3a286fc4c2d36bd390ba9a3074f3037 + () + + + + moNoFitImprSolContinue + classmo_no_fit_impr_sol_continue.html + EOT + moSolContinue + + EOT::Fitness + Fitness + classmo_no_fit_impr_sol_continue.html + 64c184de66bb37d75d53aa600ac947b3 + + + + + moNoFitImprSolContinue + classmo_no_fit_impr_sol_continue.html + 0793f68a0ad558c8203b97c33c8f9c90 + (unsigned int _maxNumberOfIterationWithoutImprovement) + + + bool + operator() + classmo_no_fit_impr_sol_continue.html + d8966c73cbe625644df9061377f7221a + (const EOT &_solution) + + + void + init + classmo_no_fit_impr_sol_continue.html + 21641c0a38a4501baae6133cbc591de4 + () + + + unsigned int + maxNumberOfIterationsWithoutImprovement + classmo_no_fit_impr_sol_continue.html + 03612ffc3af9d943c1b1d2cde09d461b + + + + bool + firstFitnessSaved + classmo_no_fit_impr_sol_continue.html + ca3591e47a075b59e0826f31234c71ef + + + + Fitness + fitness + classmo_no_fit_impr_sol_continue.html + 3d3d2b43a4dd73e38689cc0018d44ee7 + + + + unsigned int + counter + classmo_no_fit_impr_sol_continue.html + 46fc008a8f7cd06dcaaeb4016b433adb + + + + + moRandImprSelect + classmo_rand_impr_select.html + M + moMoveSelect + + M::EOType::Fitness + Fitness + classmo_rand_impr_select.html + 3bff2fdb963297430543c82ffb567a5c + + + + void + init + classmo_rand_impr_select.html + 7af99966b31aa387ecef74fd307a42e8 + (const Fitness &_fitness) + + + bool + update + classmo_rand_impr_select.html + b20cfd0164266aa75960cba3c1673f69 + (const M &_move, const Fitness &_fitness) + + + void + operator() + classmo_rand_impr_select.html + 1bc88f10830960c1d88e22e444c4e670 + (M &_move, Fitness &_fitness) + + + Fitness + initial_fitness + classmo_rand_impr_select.html + d566fa23689861b1d04257e53c71ae20 + + + + std::vector< Fitness > + better_fitnesses + classmo_rand_impr_select.html + 220d6e3db838b11938e59bc7b29a0db6 + + + + std::vector< M > + better_moves + classmo_rand_impr_select.html + 8a2e7bd7d7a74d7f7402ef25737b09e1 + + + + + moRandMove + classmo_rand_move.html + M + eoUF< M &, void > + + + moSA + classmo_s_a.html + M + moAlgo< M::EOType > + + + moSA + classmo_s_a.html + 12e7da3a56b82daa29a30d1254da5823 + (moRandMove< M > &_random_move_generator, moMoveIncrEval< M > &_incremental_evaluation, moSolContinue< EOT > &_continue, double _initial_temperature, moCoolingSchedule &_cooling_schedule, eoEvalFunc< EOT > &_full_evaluation) + + + bool + operator() + classmo_s_a.html + bea8176b0c05a96696b2ab29d3f3c544 + (EOT &_solution) + + + M::EOType + EOT + classmo_s_a.html + d5d64a8797bdedc7b3af7893aded0bd5 + + + + EOT::Fitness + Fitness + classmo_s_a.html + 97f1a40d5ab5a0b3f878d0347b34804b + + + + moRandMove< M > & + random_move_generator + classmo_s_a.html + 92656523f556669862fcffdccea178dd + + + + moMoveIncrEval< M > & + incremental_evaluation + classmo_s_a.html + fdb49f837dc602624554279418c94bdb + + + + moSolContinue< EOT > & + continu + classmo_s_a.html + 776586a839c2bbd6d12a731c12a1b748 + + + + double + initial_temperature + classmo_s_a.html + e07bf4ca64248e94ab85e8a1ba32aa8c + + + + moCoolingSchedule & + cooling_schedule + classmo_s_a.html + f514ae01cdfc67bf0b87d5389b3792e5 + + + + eoEvalFunc< EOT > & + full_evaluation + classmo_s_a.html + ace30095ffc4924d84e14a0e59f7746f + + + + + moSimpleMoveTabuList + classmo_simple_move_tabu_list.html + M + moTabuList + + M::EOType + EOT + classmo_simple_move_tabu_list.html + 91286ff3ba6b1e9e1db9e4fdade2edb7 + + + + std::list< M >::iterator + moveIterator + classmo_simple_move_tabu_list.html + 4ca9387c0a20bb9f4142682cbfee26bf + + + + + moSimpleMoveTabuList + classmo_simple_move_tabu_list.html + c27e7fabe1370ea65f56981c5cbc1769 + (unsigned int _memory_maximum_size) + + + bool + operator() + classmo_simple_move_tabu_list.html + 8d38f296f3d7721025820f16f25fcf7e + (const M &_move, const EOT &_solution) + + + void + add + classmo_simple_move_tabu_list.html + e6c0835fbfab2bdc63097cf2fd5328aa + (const M &_move, const EOT &_solution) + + + void + update + classmo_simple_move_tabu_list.html + 96cffc8118456ed762b07b9fc0e0679f + () + + + void + init + classmo_simple_move_tabu_list.html + b91ae9971be30769757d1ad92c6009dc + () + + + void + removeMove + classmo_simple_move_tabu_list.html + 922ac2e3c45cbb94698517265be95de5 + (const M &_move) + + + unsigned int + memory_maximum_size + classmo_simple_move_tabu_list.html + fea7fe7c62a6da9b8f087a2732f44251 + + + + unsigned int + memory_size + classmo_simple_move_tabu_list.html + defd20fe6d0d51fdaedbc5b95018aea7 + + + + std::list< M > + tabuList + classmo_simple_move_tabu_list.html + d91bc838361524720616b44eda9b2c3a + + + + + moSimpleSolutionTabuList + classmo_simple_solution_tabu_list.html + M + moTabuList + + M::EOType + EOT + classmo_simple_solution_tabu_list.html + 881060871a6b49e5e8554c5df85176d9 + + + + std::list< EOT >::iterator + solutionIterator + classmo_simple_solution_tabu_list.html + 3438db9ed9e1a94a24c418d8cbadec54 + + + + + moSimpleSolutionTabuList + classmo_simple_solution_tabu_list.html + 8499bf947de47519d155e9e45f815d41 + (unsigned int _memory_maximum_size) + + + bool + operator() + classmo_simple_solution_tabu_list.html + 9052858ae3e6765cbe4c344bdae6c692 + (const M &_move, const EOT &_solution) + + + void + add + classmo_simple_solution_tabu_list.html + 58ae13e7642c429ea51ff679a932aceb + (const M &_move, const EOT &_solution) + + + void + update + classmo_simple_solution_tabu_list.html + 91b8b01dba7ffea8b63765d931e56f56 + () + + + void + init + classmo_simple_solution_tabu_list.html + d5645c39fec71a6110a2cbccbb08b816 + () + + + void + removeSolution + classmo_simple_solution_tabu_list.html + e4a57001a201e1fb7446902381a7ac7d + (const EOT &_solution) + + + unsigned int + memory_maximum_size + classmo_simple_solution_tabu_list.html + 06631e7b9a2511e3c11540aa14b9e636 + + + + unsigned int + memory_size + classmo_simple_solution_tabu_list.html + 0d54e6b0af0e6088aafae596392c9490 + + + + std::list< EOT > + tabuList + classmo_simple_solution_tabu_list.html + 75df9cd683528d3722d02bac407b710b + + + + + moSolContinue + classmo_sol_continue.html + EOT + eoUF< const EOT &, bool > + + virtual void + init + classmo_sol_continue.html + 064dc966a210f4ffb9515be3f03ca4c7 + ()=0 + + + + moSteadyFitSolContinue + classmo_steady_fit_sol_continue.html + EOT + moSolContinue + + EOT::Fitness + Fitness + classmo_steady_fit_sol_continue.html + c289721abbbafe50f6e3b8305dd31007 + + + + + moSteadyFitSolContinue + classmo_steady_fit_sol_continue.html + c5e0e998b73e3a48ca3e87f4f816569b + (unsigned int _maxNumberOfIterations, unsigned int _maxNumberOfIterationWithoutImprovement) + + + bool + operator() + classmo_steady_fit_sol_continue.html + f7432bccb768d50a2fef248c2b174904 + (const EOT &_solution) + + + void + init + classmo_steady_fit_sol_continue.html + 87563493addc8e4b58982c55a67179b9 + () + + + unsigned int + maxNumberOfIterations + classmo_steady_fit_sol_continue.html + 36b43c2a252887ad027165ac32393fe8 + + + + unsigned int + maxNumberOfIterationsWithoutImprovement + classmo_steady_fit_sol_continue.html + cde593c09f497a5fa66ff62732544f40 + + + + bool + maxNumberOfIterationsReached + classmo_steady_fit_sol_continue.html + 7d88c0eb91b2a12121ba1c3ae9139887 + + + + bool + firstFitnessSaved + classmo_steady_fit_sol_continue.html + 025bf2789e470fdde989eee9121035c3 + + + + Fitness + fitness + classmo_steady_fit_sol_continue.html + a5c62e7049b36f6e71e92b559568c09e + + + + unsigned int + counter + classmo_steady_fit_sol_continue.html + 245c9099a2c40dfc4f34b3ff216d13ce + + + + + moTabuList + classmo_tabu_list.html + M + eoBF + + M::EOType + EOT + classmo_tabu_list.html + e219715cc3fdd5626764bc50ce6357df + + + + virtual void + add + classmo_tabu_list.html + 55204939b6d67b6d37b4af725d70cf6d + (const M &_move, const EOT &_solution)=0 + + + virtual void + update + classmo_tabu_list.html + a2e5d1132f064093c8ed57046405f5ca + ()=0 + + + virtual void + init + classmo_tabu_list.html + 0a06c459d56e8e2b408a8f3c6aec4e57 + ()=0 + + + + moTS + classmo_t_s.html + M + moAlgo< M::EOType > + + + moTS + classmo_t_s.html + 336408ddf8b7a29ffa8e01e9c18d8e10 + (moMoveInit< M > &_move_initializer, moNextMove< M > &_next_move_generator, moMoveIncrEval< M > &_incremental_evaluation, moTabuList< M > &_tabu_list, moAspirCrit< M > &_aspiration_criterion, moSolContinue< EOT > &_continue, eoEvalFunc< EOT > &_full_evaluation) + + + + moTS + classmo_t_s.html + 7e435fac1b8d5a410b7374d114e005e2 + (moMoveExpl< M > &_move_explorer, moSolContinue< EOT > &_continue, eoEvalFunc< EOT > &_full_evaluation) + + + bool + operator() + classmo_t_s.html + 2a011779723e24a5132a37593775bf56 + (EOT &_solution) + + + M::EOType + EOT + classmo_t_s.html + 90d19d468c12ab5bd796948ce1ce79b1 + + + + EOT::Fitness + Fitness + classmo_t_s.html + aa0eefbb17111422e495d1255f876fca + + + + moMoveExpl< M > & + move_explorer + classmo_t_s.html + 9fd948a2c586f1991f5a1eee927af8a6 + + + + moSolContinue< EOT > & + continu + classmo_t_s.html + 962a37393faf5239e657388d375cd9b3 + + + + eoEvalFunc< EOT > & + full_evaluation + classmo_t_s.html + f44bb408007e2bff99f7a201842e8e48 + + + + + moTSMoveLoopExpl + classmo_t_s_move_loop_expl.html + M + moMoveLoopExpl + + + moTSMoveLoopExpl + classmo_t_s_move_loop_expl.html + be5cf0853777718c3bbcbef456b50bc7 + (moMoveInit< M > &_move_initializer, moNextMove< M > &_next_move_generator, moMoveIncrEval< M > &_incremental_evaluation, moTabuList< M > &_tabu_list, moAspirCrit< M > &_aspiration_criterion) + + + void + operator() + classmo_t_s_move_loop_expl.html + 853743f2e21def3ea129556f47fafa55 + (const EOT &_old_solution, EOT &_new_solution) + + + M::EOType + EOT + classmo_t_s_move_loop_expl.html + 47f42225e2ed096374b818bdb848a527 + + + + M::EOType::Fitness + Fitness + classmo_t_s_move_loop_expl.html + a1ba36c937b195ca2f7d1a24adaa7018 + + + + moMoveInit< M > & + move_initializer + classmo_t_s_move_loop_expl.html + cd680d22382b9941d2c34133a641d443 + + + + moNextMove< M > & + next_move_generator + classmo_t_s_move_loop_expl.html + a2bbb593af2beefb05a307277c22b3d5 + + + + moMoveIncrEval< M > & + incremental_evaluation + classmo_t_s_move_loop_expl.html + 491fa46e1cb7935cb515b27b85bf8765 + + + + moBestImprSelect< M > + move_selection + classmo_t_s_move_loop_expl.html + 1caa6939fbe65ec4255e9e6dc3ce333b + + + + moTabuList< M > & + tabu_list + classmo_t_s_move_loop_expl.html + 0e5988a940ba218e87c53b7e56d79790 + + + + moAspirCrit< M > & + aspiration_criterion + classmo_t_s_move_loop_expl.html + bdfc8efb22599c150b3c3d44cd416b09 + + + + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/mo-conf.cmake b/branches/paradiseo-ix86-2.0/paradiseo-mo/mo-conf.cmake new file mode 100755 index 000000000..2920c6c47 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/mo-conf.cmake @@ -0,0 +1,25 @@ + +###################################################################################### +###################################################################################### +### In this file, you can specify many CMake variables used to build paradisEO-MO. +###################################################################################### +###################################################################################### + + +###################################################################################### +### 1) OPTIONNAL +###################################################################################### + +# SET (MYVAR MYVALUE) + +###################################################################################### + + +##################################################################################### +### 2) OPTIONNAL - Overwrite subdirs +###################################################################################### + +# SUBDIRS(doc tutorial) + +###################################################################################### + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/src/index.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/index.h new file mode 100644 index 000000000..c18fd6b98 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/index.h @@ -0,0 +1,68 @@ +/** @mainpage Welcome to PARADISEO-Moving Objects + + @section Introduction + + MO is an extension of the ANSI-C++ compliant evolutionary computation library EO. +
+ It contains classes for almost any kind of one solution based heuristics. + + @section authors AUTHORS + + + + + + + + +
Sebastien CAHON
+ Jean-Charles BOISSON +
+ + @section LICENSE + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + ParadisEO WebSite : http://paradiseo.gforge.inria.fr + Contact: paradiseo-help@lists.gforge.inria.fr + + + @section Paradiseo Home Page + + http://paradiseo.gforge.inria.fr + + @section Installation + + The installation procedure of the package is detailed in the + README file in the top-directory of the source-tree. + +*/ + + +// coding: iso-8859-1 +// mode: C++ +// c-file-style: "Stroustrup" +// fill-column: 80 +// End: diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/src/mo b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/mo new file mode 100755 index 000000000..d0319b60a --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/mo @@ -0,0 +1,41 @@ +/* + + Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 + (C) OPAC Team, LIFL, 2002-2008 + + Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr) + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + ParadisEO WebSite : http://paradiseo.gforge.inria.fr + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __mo +#define __mo + +#include "mo.h" + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/src/mo.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/mo.h new file mode 100755 index 000000000..69dfaf350 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/mo.h @@ -0,0 +1,76 @@ +/* + + Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 + (C) OPAC Team, LIFL, 2002-2007 + + Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr) + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + ParadisEO WebSite : http://paradiseo.gforge.inria.fr + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef _mo_h +#define _mo_h + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moAlgo.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moAlgo.h new file mode 100755 index 000000000..a5152bb7f --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moAlgo.h @@ -0,0 +1,49 @@ +/* + + Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 + (C) OPAC Team, LIFL, 2002-2008 + + Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr) + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + ParadisEO WebSite : http://paradiseo.gforge.inria.fr + Contact: paradiseo-help@lists.gforge.inria.fr + +*/ + +#ifndef _moAlgo_h +#define _moAlgo_h + +#include + +//! Description of an algorithm of the paradiseo-mo library +/*! + moHC, moTS and moSA are 3 examples of algorithm of the paradiseo-mo library. +*/ +template < class EOT > class moAlgo:public eoMonOp < EOT > +{}; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moAspirCrit.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moAspirCrit.h new file mode 100755 index 000000000..efb6f74c2 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moAspirCrit.h @@ -0,0 +1,58 @@ +/* + + Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 + (C) OPAC Team, LIFL, 2002-2008 + + Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr) + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + ParadisEO WebSite : http://paradiseo.gforge.inria.fr + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef _moAspirCrit_h +#define _moAspirCrit_h + +#include + +//! Description of the conditions in which a tabu move could be accepted +/*! + It is only a description... An object that herits from this class is needed to be used in a moTS. + See moNoAspriCrit for example. +*/ +template < class M > +class moAspirCrit: public eoBF < const M &, const typename M::EOType::Fitness &, bool > +{ + public: + + //! Procedure which initialises all that needs an aspiration criterion. + /*! + It can be possible that this procedure does nothing... + */ + virtual void init () = 0; +}; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moBestImprSelect.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moBestImprSelect.h new file mode 100755 index 000000000..6442ecc46 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moBestImprSelect.h @@ -0,0 +1,117 @@ +/* + + Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 + (C) OPAC Team, LIFL, 2002-2008 + + Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr) + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + ParadisEO WebSite : http://paradiseo.gforge.inria.fr + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef _moBestImprSelect_h +#define _moBestImprSelect_h + +#include + +//! One of the possible moMoveSelect. +/*! + All neighbors are considered, and the movement + which enables the best improvement is selected. +*/ +template < class M > +class moBestImprSelect:public moMoveSelect < M > +{ + public: + + //! Alias for the fitness. + typedef typename M::EOType::Fitness Fitness; + + //! Procedure which initialise the exploration + /*! + \param _fitness The current fitness. + */ + void init (const Fitness & _fitness) + { + //Code only used to avoid warning because _fitness is not used in this procedure. + Fitness fitness=(Fitness)_fitness; + + first_time = true; + } + + + //!Function that indicates if the current move has not improved the fitness. + /*! + If the given fitness enables an improvment, + the move (moMove) and the fitness linked to this move are saved. + + \param _move a move. + \param _fitness a fitness linked to the move. + \return TRUE if the move does not improve the fitness. + */ + bool update (const M & _move, const Fitness & _fitness) + { + if ( first_time || (_fitness > best_fitness) ) + { + best_fitness = _fitness; + best_move = _move; + + first_time = false; + } + + return true; + } + + //! Procedure which saved the best move and fitness. + /*! + \param _move the current move (result of the procedure). + \param _fitness the current fitness (result of the procedure). + */ + void operator () (M & _move, Fitness & _fitness) + { + if(first_time) + { + throw std::runtime_error("[moBestImprSelect.h]: no move or/and no fitness already saved, update has to be called first."); + } + + _move = best_move; + _fitness = best_fitness; + } + + private: + + //! Allowing to know if at least one move has been generated. + bool first_time; + + //! The best move. + M best_move; + + //! The best fitness. + Fitness best_fitness; +}; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moComparator.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moComparator.h new file mode 100644 index 000000000..8c0f9ff60 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moComparator.h @@ -0,0 +1,48 @@ +/* + + Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 + (C) OPAC Team, LIFL, 2002-2008 + + Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr) + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + ParadisEO WebSite : http://paradiseo.gforge.inria.fr + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef _moComparator_h +#define _moComparator_h + + +//! Template for classes which need to compare two EOT and indicate if the first is "better" than the second. +/*! + The objects that extend this template describe how an EOT is "better" than an other. +*/ +template +class moComparator: public eoBF +{}; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moCoolingSchedule.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moCoolingSchedule.h new file mode 100644 index 000000000..f2cd44164 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moCoolingSchedule.h @@ -0,0 +1,49 @@ +/* + + Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 + (C) OPAC Team, LIFL, 2002-2008 + + Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr) + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + ParadisEO WebSite : http://paradiseo.gforge.inria.fr + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef _moCoolingSchedule_h +#define _moCoolingSchedule_h + +#include + +//! This class gives the description of a cooling schedule. +/*! + It is only a description... An object that herits from this class is needed to be used in a moSA. + See moExponentialCoolingSchedule or moLinearCoolingSchedule for example. +*/ +class moCoolingSchedule : public eoUF < double &, bool > +{}; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moExponentialCoolingSchedule.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moExponentialCoolingSchedule.h new file mode 100644 index 000000000..038f438fe --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moExponentialCoolingSchedule.h @@ -0,0 +1,79 @@ +/* + + Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 + (C) OPAC Team, LIFL, 2002-2008 + + Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr) + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + ParadisEO WebSite : http://paradiseo.gforge.inria.fr + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef _moExponentialCoolingSchedule_h +#define _moExponentialCoolingSchedule_h + +#include + +//! One of the possible moCoolingSchedule +/*! + An other very simple cooling schedule, the temperature decrease according to a ratio while + the temperature is greater than a given threshold. +*/ +class moExponentialCoolingSchedule: public moCoolingSchedule +{ + public: + + //! Simple constructor + /*! + \param _threshold the threshold. + \param _ratio the ratio used to descrease the temperature. + */ + moExponentialCoolingSchedule (double _threshold, double _ratio):threshold (_threshold), ratio (_ratio) + {} + + //! Function which proceeds to the cooling. + /*! + It decreases the temperature and indicates if it is greater than the threshold. + + \param _temperature the current temperature. + \return if the new temperature (current temperature * ratio) is greater than the threshold. + */ + bool operator() (double & _temperature) + { + return (_temperature *= ratio) > threshold; + } + + private: + + //! The temperature threhold. + double threshold; + + //! The decreasing factor of the temperature. + double ratio; +}; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moFirstImprSelect.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moFirstImprSelect.h new file mode 100755 index 000000000..94ca93c16 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moFirstImprSelect.h @@ -0,0 +1,120 @@ +/* + + Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 + (C) OPAC Team, LIFL, 2002-2008 + + Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr) + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + ParadisEO WebSite : http://paradiseo.gforge.inria.fr + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef _moFirstImprSelect_h +#define _moFirstImprSelect_h + +#include + +//! One possible moMoveSelect. +/*! + The neighborhood is explored until + a move enables an improvment of the + current solution. +*/ +template < class M > +class moFirstImprSelect:public moMoveSelect < M > +{ + public: + + //! Alias for the fitness. + typedef typename M::EOType::Fitness Fitness; + + //! Procedure which initialise the exploration. + /*! + It save the current fitness as the initial value for the fitness. + \param _fitness The current fitness. + */ + virtual void init (const Fitness & _fitness) + { + valid = false; + initial_fitness = _fitness; + } + + //!Function that indicates if the current move has not improved the fitness. + /*! + If the given fitness enables an improvment, + the move (moMove) should be applied to the current solution. + + \param _move a move. + \param _fitness a fitness linked to the move. + \return true if the move does not improve the fitness. + */ + bool update (const M & _move, const Fitness & _fitness) + { + + if (_fitness > initial_fitness) + { + + best_fitness = _fitness; + best_move = _move; + valid = true; + + return false; + } + + return true; + } + + //! Procedure which saved the best move and fitness. + /*! + \param _move the current move (result of the procedure). + \param _fitness the current fitness (result of the procedure). + */ + void operator () (M & _move, Fitness & _fitness) + { + if (valid) + { + _move = best_move; + _fitness = best_fitness; + } + } + + private: + + //! Allow to know if at least one move has improved the solution. + bool valid; + + //! Best stored movement. + M best_move; + + //! Initial fitness. + Fitness initial_fitness; + + //! Best stored fitness. + Fitness best_fitness; +}; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moFitComparator.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moFitComparator.h new file mode 100644 index 000000000..6dd75b5ce --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moFitComparator.h @@ -0,0 +1,62 @@ +/* + + Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 + (C) OPAC Team, LIFL, 2002-2008 + + Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr) + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + ParadisEO WebSite : http://paradiseo.gforge.inria.fr + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef _moFitComparator_h +#define _moFitComparator_h + +#include + +//! Comparison according to the fitness. +/*! + An EOT is better than an other if its fitness is better. +*/ +template +class moFitComparator: public moComparator +{ + public: + + //! Function which makes the comparison and gives the result. + /*! + \param _solution1 The first solution. + \param _solution2 The second solution. + \return true if the fitness of the first solution is better than the second solution, false else. + */ + bool operator()(const EOT & _solution1, const EOT & _solution2) + { + return _solution1.fitness() > _solution2.fitness(); + } +}; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moFitSolContinue.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moFitSolContinue.h new file mode 100644 index 000000000..af3d375fc --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moFitSolContinue.h @@ -0,0 +1,90 @@ +/* + + Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 + (C) OPAC Team, LIFL, 2002-2008 + + Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr) + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + ParadisEO WebSite : http://paradiseo.gforge.inria.fr + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef _moFitSolContinue_h +#define _moFitSolContinue_h + +#include + +//! One possible stop criterion for a solution-based heuristic. +/*! + The stop criterion corresponds to a fitness threshold gained. +*/ +template < class EOT > +class moFitSolContinue:public moSolContinue < EOT > +{ + public: + + //! Alias for the fitness. + typedef typename EOT::Fitness Fitness; + + //! Basic constructor. + /*! + \param _fitness The fitness to reach. + */ + moFitSolContinue (Fitness _fitness): fitness(_fitness) + {} + + //! Function that activates the stopping criterion. + /*! + Indicates if the fitness threshold has not yet been reached. + + \param _solution the current solution. + \return true or false according to the value of the fitness. + */ + bool operator () (const EOT & _solution) + { + if ( _solution.invalid() ) + { + throw std::runtime_error("[moFitSolContinue.h]: The current solution has not been evaluated."); + } + + return fitness > _solution.fitness(); + } + + //! Procedure which allows to initialise all the stuff needed. + /*! + It can be also used to reinitialize all the needed things. + */ + void init () + {} + + private: + + //! Fitness target. + Fitness fitness; +}; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moGenSolContinue.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moGenSolContinue.h new file mode 100755 index 000000000..cacbe8071 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moGenSolContinue.h @@ -0,0 +1,92 @@ +/* + + Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 + (C) OPAC Team, LIFL, 2002-2008 + + Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr) + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + ParadisEO WebSite : http://paradiseo.gforge.inria.fr + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef _moGenSolContinue_h +#define _moGenSolContinue_h + +#include "moSolContinue.h" + +//! One possible stop criterion for a solution-based heuristic. +/*! + The stop criterion corresponds to a maximum number of iteration. +*/ +template < class EOT > +class moGenSolContinue:public moSolContinue < EOT > +{ + public: + + //! Simple constructor. + /*! + \param _generationMaximumNumber The maximum number of generations. + */ + moGenSolContinue (unsigned int _generationMaximumNumber): generationMaximumNumber(_generationMaximumNumber), generationNumber(0) + {} + + //! Function that activates the stop criterion. + /*! + Increments the counter and returns TRUE if the + current number of iteration is lower than the given + maximum number of iterations. + + \param _solution The current solution. + \return true or false according to the current generation number. + */ + bool operator () (const EOT & _solution) + { + //code only used for avoiding warning because _sol is not used in this function. + EOT solution=(EOT)_solution; + + return (++generationNumber < generationMaximumNumber); + } + + //! Procedure which allows to initialise the generation counter. + /*! + It can also be used to reset the iteration counter. + */ + void init () + { + generationNumber = 0; + } + + private: + + //! Iteration maximum number. + unsigned int generationMaximumNumber; + + //! Iteration current number. + unsigned int generationNumber; +}; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moHC.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moHC.h new file mode 100755 index 000000000..ed77f7048 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moHC.h @@ -0,0 +1,124 @@ +/* + + Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 + (C) OPAC Team, LIFL, 2002-2008 + + Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr) + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + ParadisEO WebSite : http://paradiseo.gforge.inria.fr + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moHC_h +#define __moHC_h + +#include + +#include +#include + +//! Hill Climbing (HC) +/*! + Class which describes the algorithm for a hill climbing. +*/ +template < class M > +class moHC:public moAlgo < typename M::EOType > +{ + //! Alias for the type. + typedef typename M::EOType EOT; + + //! Alias for the fitness. + typedef typename EOT::Fitness Fitness; + + public: + + //! Full constructor. + /*! + All the boxes are given in order the HC to use a moHCMoveLoopExpl. + + \param _move_initializer a move initialiser. + \param _next_move_generator a neighborhood explorer. + \param _incremental_evaluation a (generally) efficient evaluation function. + \param _move_selection a move selector. + \param _full_evaluation a full evaluation function. + */ + moHC (moMoveInit < M > & _move_initializer, moNextMove < M > & _next_move_generator, + moMoveIncrEval < M > & _incremental_evaluation, moMoveSelect < M > & _move_selection, eoEvalFunc < EOT > & _full_evaluation) : + move_explorer ( *new moHCMoveLoopExpl < M > (_move_initializer, _next_move_generator, _incremental_evaluation, _move_selection) ), + full_evaluation (_full_evaluation) + {} + + //! Light constructor. + /*! + This constructor allow to use another moMoveExpl (generally not a moHCMoveLoopExpl). + + \param _move_explorer a complete explorer. + \param _full_evaluation a full evaluation function. + */ + moHC (moMoveExpl < M > & _move_explorer, eoEvalFunc < EOT > & _full_evaluation): + move_explorer (_move_explorer), full_evaluation (_full_evaluation) + {} + + //! Function which launches the HC + /*! + The HC has to improve a current solution. + As the moSA and the mo TS, it can be used for HYBRIDATION in an evolutionnary algorithm. + + \param _solution a current solution to improve. + \return true. + */ + bool operator ()(EOT & _solution) + { + EOT new_solution; + + if ( _solution.invalid() ) + { + full_evaluation(_solution); + } + + new_solution=_solution; + + do + { + _solution=new_solution; + move_explorer (_solution, new_solution); + } + while ( new_solution.fitness() > _solution.fitness() ); + + return true; + } + + private: + + //! Complete exploration of the neighborhood. + moMoveExpl < M > & move_explorer; + + //! A full evaluation function. + eoEvalFunc < EOT > & full_evaluation; +}; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moHCMoveLoopExpl.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moHCMoveLoopExpl.h new file mode 100755 index 000000000..44f806ecb --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moHCMoveLoopExpl.h @@ -0,0 +1,138 @@ +/* + + Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 + (C) OPAC Team, LIFL, 2002-2008 + + Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr) + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + ParadisEO WebSite : http://paradiseo.gforge.inria.fr + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moHCMoveLoopExpl_h +#define __moHCMoveLoopExpl_h + +#include +#include +#include +#include +#include + +//! Iterative explorer used by a moHC. +template < class M > +class moHCMoveLoopExpl:public moMoveLoopExpl < M > +{ + //! Alias for the type. + typedef typename M::EOType EOT; + + //! Alias for the fitness. + typedef typename M::EOType::Fitness Fitness; + + public: + + //! Constructor. + /*! + All the boxes have to be specified. + + \param _move_initializer The move initialiser. + \param _next_move_generator The neighbourhood explorer. + \param _incremental_evaluation (generally) Efficient evaluation function. + \param _move_selection The move selector. + */ + moHCMoveLoopExpl (moMoveInit < M > & _move_initializer, moNextMove < M > & _next_move_generator, + moMoveIncrEval < M > & _incremental_evaluation, moMoveSelect < M > & _move_selection) : + move_initializer (_move_initializer), next_move_generator (_next_move_generator), + incremental_evaluation (_incremental_evaluation), move_selection (_move_selection) + {} + + //! Procedure which launches the explorer. + /*! + The exploration starts from an old solution and provides a new solution. + + \param _old_solution The current solution. + \param _new_solution The new solution (result of the procedure). + */ + void operator () (const EOT & _old_solution, EOT & _new_solution) + { + M move, best_move; + Fitness best_fitness; + bool has_next_move, selection_update_is_ok; + + if( _old_solution.invalid() ) + { + throw std::runtime_error("[moHCMoveLoopExpl.h]: The current solution has not been evaluated."); + } + + /* + The two following lines are added to avoid compilation warning. + <=> current best move fitness is the current fitness. + <=> move and best move are empty for the moment. + */ + best_fitness=_old_solution.fitness(); + move=best_move; + + //At the begining, the new sol is equivalent to the old one. + _new_solution=(EOT)_old_solution; + + // Restarting the exploration of the neighbourhood + move_initializer(move, _old_solution); + + move_selection.init(_old_solution.fitness ()); + + do + { + selection_update_is_ok = move_selection.update (move, incremental_evaluation(move, _old_solution) ); + has_next_move = next_move_generator (move, _old_solution); + } + while ( selection_update_is_ok && has_next_move); + + //The selecter gives the value of the best move and the corresponding best fitness. + move_selection (best_move, best_fitness); + + //The best move is applied on the new solution. + best_move(_new_solution); + + //The fitness is set (avoid an additional fitness compuation). + _new_solution.fitness (best_fitness); + } + + private: + + //! Move initialiser. + moMoveInit < M > & move_initializer; + + //! Neighborhood explorer. + moNextMove < M > & next_move_generator; + + //! (generally) Efficient evaluation. + moMoveIncrEval < M > & incremental_evaluation; + + //! Move selector. + moMoveSelect < M > & move_selection; +}; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moILS.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moILS.h new file mode 100644 index 000000000..87ee02691 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moILS.h @@ -0,0 +1,205 @@ +/* + + Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 + (C) OPAC Team, LIFL, 2002-2008 + + Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr) + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + ParadisEO WebSite : http://paradiseo.gforge.inria.fr + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef _moILS_h +#define _moILS_h + +#include + +#include +#include +#include + +//! Iterated Local Search (ILS) +/*! + Class which describes the algorithm for a iterated local search. +*/ +template < class M > +class moILS:public moAlgo < typename M::EOType > +{ + //! Alias for the type. + typedef typename M::EOType EOT; + + //! Alias for the fitness. + typedef typename EOT::Fitness Fitness; + + public: + + //! Generic constructor + /*! + Generic constructor using a moAlgo + + \param _algorithm The solution based heuristic to use. + \param _continue The stopping criterion. + \param _acceptance_criterion The acceptance criterion. + \param _perturbation The pertubation generator. + \param _full_evaluation The evaluation function. + */ + moILS (moAlgo & _algorithm, moSolContinue & _continue, moComparator & _acceptance_criterion, + eoMonOp & _perturbation, eoEvalFunc & _full_evaluation): + algorithm(_algorithm), continu(_continue), acceptance_criterion(_acceptance_criterion), + perturbation(_perturbation), full_evaluation(_full_evaluation) + {} + + //! Constructor for using a moHC for the moAlgo + /*! + \param _move_initializer The move initialisation (for the moHC). + \param _next_move_generator The move generator (for the moHC). + \param _incremental_evaluation The partial evaluation function (for the moHC). + \param _move_selection The move selection strategy (for the moHC). + \param _continue The stopping criterion. + \param _acceptance_criterion The acceptance criterion. + \param _perturbation The pertubation generator. + \param _full_evaluation The evaluation function. + */ + moILS (moMoveInit < M > & _move_initializer, moNextMove < M > & _next_move_generator, + moMoveIncrEval < M > & _incremental_evaluation, moMoveSelect < M > & _move_selection, + moSolContinue & _continue, moComparator & _acceptance_criterion, + eoMonOp & _perturbation, eoEvalFunc & _full_evaluation): + algorithm( *new moHC(_move_initializer, _next_move_generator, _incremental_evaluation, _move_selection, _full_evaluation) ), + continu(_continue), acceptance_criterion(_acceptance_criterion), perturbation(_perturbation), full_evaluation(_full_evaluation) + {} + + //! Constructor for using a moTS for the moAlgo + /*! + \param _move_initializer The move initialisation (for the moTS). + \param _next_move_generator The move generator (for the moTS). + \param _incremental_evaluation The partial evaluation function (for the moTS). + \param _tabu_list The tabu list (for the moTS !!!!). + \param _aspiration_criterion The aspiration criterion (for the moTS). + \param _moTS_continue The stopping criterion (for the moTS). + \param _continue The stopping criterion. + \param _acceptance_criterion The acceptance criterion. + \param _perturbation The pertubation generator. + \param _full_evaluation The evaluation function. + */ + moILS (moMoveInit & _move_initializer, moNextMove & _next_move_generator, + moMoveIncrEval & _incremental_evaluation, moTabuList & _tabu_list, + moAspirCrit & _aspiration_criterion, moSolContinue & _moTS_continue, + moSolContinue & _continue, moComparator & _acceptance_criterion, eoMonOp & _perturbation, + eoEvalFunc & _full_evaluation): + algorithm( *new moTS(_move_initializer, _next_move_generator, _incremental_evaluation, _tabu_list, _aspiration_criterion, + _moTS_continue, _full_evaluation) ), + continu(_continue), acceptance_criterion(_acceptance_criterion), perturbation(_perturbation), full_evaluation(_full_evaluation) + {} + + //! Constructor for using a moSA for the moAlgo + /*! + \param _random_move_generator The random move generator (for the moSA). + \param _incremental_evaluation The partial evaluation function (for the moSA). + \param _moSA_continue The stopping criterion (for the moSA). + \param _initial_temperature The initial temperature (for the moSA). + \param _cooling_schedule The cooling schedule (for the moSA). + \param _continue The stopping criterion. + \param _acceptance_criterion The acceptance criterion. + \param _perturbation The pertubation generator. + \param _full_evaluation The evaluation function. + */ + moILS (moRandMove & _random_move_generator, moMoveIncrEval & _incremental_evaluation, moSolContinue & _moSA_continue, + double _initial_temperature, moCoolingSchedule & _cooling_schedule, moSolContinue & _continue, + moComparator & _acceptance_criterion, eoMonOp & _perturbation, eoEvalFunc & _full_evaluation): + algorithm( *new moSA(_random_move_generator, _incremental_evaluation, _moSA_continue, _initial_temperature, + _cooling_schedule, _full_evaluation) ), + continu(_continue), acceptance_criterion(_acceptance_criterion), perturbation(_perturbation), full_evaluation(_full_evaluation) + {} + + //! Function which launches the ILS + /*! + The ILS has to improve a current solution. + As the moSA, the moTS and the moHC, it can be used for HYBRIDATION in an evolutionnary algorithm. + + \param _solution a current solution to improve. + \return true. + */ + bool operator()(EOT & _solution) + { + EOT _solution_saved=_solution; + + continu.init (); + + // some code has been duplicated in order to avoid one perturbation and one evaluation without adding a test in the loop. + // better than a do {} while; with a test in the loop. + + algorithm(_solution); + + if ( acceptance_criterion(_solution, _solution_saved) ) + { + _solution_saved=_solution; + + } + else + { + _solution=_solution_saved; + } + + while ( continu (_solution) ) + { + perturbation(_solution); + full_evaluation(_solution); + + algorithm(_solution); + + if ( acceptance_criterion(_solution, _solution_saved) ) + { + _solution_saved=_solution; + } + else + { + _solution=_solution_saved; + } + } + + return true; + } + + private: + + //! The solution based heuristic. + moAlgo & algorithm; + + //! The stopping criterion. + moSolContinue & continu; + + //! The acceptance criterion. + moComparator & acceptance_criterion; + + //! The perturbation generator + eoMonOp & perturbation; + + //! The full evaluation function + eoEvalFunc & full_evaluation; +}; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moImprBestFitAspirCrit.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moImprBestFitAspirCrit.h new file mode 100755 index 000000000..562319f0f --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moImprBestFitAspirCrit.h @@ -0,0 +1,104 @@ +/* + + Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 + (C) OPAC Team, LIFL, 2002-2008 + + Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr) + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + ParadisEO WebSite : http://paradiseo.gforge.inria.fr + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef _moImprBestFitAspirCrit_h +#define _moImprBestFitAspirCrit_h + +#include + +//! One of the possible moAspirCrit +/*! + This criterion is satisfied when a given fitness + is the best ever considered. +*/ +template < class M > +class moImprBestFitAspirCrit:public moAspirCrit < M > +{ + + public: + + //! Alias for the fitness + typedef typename M::EOType::Fitness Fitness; + + //! Contructor + moImprBestFitAspirCrit () + { + first_time = true; + } + + //! Initialisation procedure + void init () + { + first_time = true; + } + + //! Function that indicates if the current fitness is better that the already saved fitness + /*! + The first time, the function only saved the current move and fitness. + + \param _move A move. + \param _fitness A fitness linked to the move. + \return true The first time and if _fitntess > best_fitness, else false. + */ + bool operator () (const M & _move, const Fitness & _fitness) + { + if (first_time) + { + best_fitness = _fitness; + first_time = false; + + return true; + } + + if (_fitness < best_fitness) + { + return false; + } + + best_fitness = _fitness; + + return true; + } + + private: + + //! Best fitness found until now + Fitness best_fitness; + + //! Indicates that a fitness has been already saved or not + bool first_time; +}; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moItRandNextMove.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moItRandNextMove.h new file mode 100755 index 000000000..9d91af3e0 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moItRandNextMove.h @@ -0,0 +1,102 @@ +/* + + Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 + (C) OPAC Team, LIFL, 2002-2008 + + Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr) + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + ParadisEO WebSite : http://paradiseo.gforge.inria.fr + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef _moItRandNextMove_h +#define _moItRandNextMove_h + +#include +#include + +//! One of the possible moNextMove. +/*! + This class is a move (moMove) generator with a bound for the maximum number of iterations. +*/ +template < class M > +class moItRandNextMove:public moNextMove < M > +{ + //! Alias for the type. + typedef typename M::EOType EOT; + + public: + + //! The constructor. + /*! + Parameters only for initialising the attributes. + + \param _random_move_generator The random move generator. + \param _iteration_maximum_number The iteration maximum number. + */ + moItRandNextMove (moRandMove < M > & _random_move_generator, unsigned int _iteration_maximum_number): + random_move_generator(_random_move_generator), iteration_maximum_number(_iteration_maximum_number), iteration_number(0) + {} + + //! Generation of a new move + /*! + If the maximum number is not already reached, the current move is forgotten and remplaced by another one. + + \param _move the current move. + \param _solution the current solution. + \return false if the maximum number of iteration is reached, else true. + */ + bool operator () (M & _move, const EOT & _solution) + { + //code only used to avoid warning because _solution is not used in this function. + EOT solution=(EOT)_solution; + + if (iteration_number++ > iteration_maximum_number) + { + iteration_number = 0; + return false; + } + + random_move_generator (_move); + iteration_number++; + + return true; + } + + private: + + //! A move generator (generally randomly). + moRandMove < M > & random_move_generator; + + //! Iteration maximum number. + unsigned int iteration_maximum_number; + + //! Iteration current number. + unsigned int iteration_number; +}; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moLSCheckPoint.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moLSCheckPoint.h new file mode 100755 index 000000000..1b5c64943 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moLSCheckPoint.h @@ -0,0 +1,83 @@ +/* + + Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 + (C) OPAC Team, LIFL, 2002-2008 + + Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr) + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + ParadisEO WebSite : http://paradiseo.gforge.inria.fr + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef _moLSCheckPoint_h +#define _moLSCheckPoint_h + +#include + +//! Class which allows a checkpointing system. +/*! + Thanks to this class, at each iteration, additionnal function can be used (and not only one). +*/ +template < class M > +class moLSCheckPoint:public eoBF < const M &, const typename M::EOType &, void > +{ + public: + + //! Function which launches the checkpointing + /*! + Each saved function is used on the current move and the current solution. + + \param _move a move. + \param _solution a solution. + */ + void operator () (const M & _move, const typename M::EOType & _solution) + { + unsigned int i; + + for (i = 0; i < functions.size (); i++) + { + functions[i]->operator ()(_move, _solution); + } + } + + //! Procedure which add a new function to the function vector + /*! + The new function is added at the end of the vector. + \param _function a new function to add. + */ + void add (eoBF < const M &, const typename M::EOType &, void >& _function) + { + functions.push_back(& _function); + } + + private: + + //! Vector of functions. + std::vector < eoBF < const M &, const typename M::EOType &, void >*> functions; +}; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moLinearCoolingSchedule.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moLinearCoolingSchedule.h new file mode 100644 index 000000000..205593ce4 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moLinearCoolingSchedule.h @@ -0,0 +1,79 @@ +/* + + Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 + (C) OPAC Team, LIFL, 2002-2008 + + Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr) + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + ParadisEO WebSite : http://paradiseo.gforge.inria.fr + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef _moLinearCoolingSchedule_h +#define _moLinearCoolingSchedule_h + +#include + +//! One of the possible moCoolingSchedule +/*! + An another very simple cooling schedule, the temperature decrease according to a quantity while + the temperature is greater than a threshold. +*/ +class moLinearCoolingSchedule: public moCoolingSchedule +{ + + public: + //! Simple constructor + /*! + \param _threshold the threshold. + \param _quantity the quantity used to descrease the temperature. + */ + moLinearCoolingSchedule (double _threshold, double _quantity):threshold (_threshold), quantity (_quantity) + {} + + //! Function which proceeds to the cooling. + /*! + It decreases the temperature and indicates if it is greater than the threshold. + + \param _current_temperature The current temperature. + \return true if the new temperature (current temperature - quantity) is greater than the threshold, false otherwise. + */ + bool operator() (double & _current_temperature) + { + return (_current_temperature -= quantity) > threshold; + } + + private: + + //! The temperature threhold. + double threshold; + + //! The quantity that allows the temperature to decrease. + double quantity; +}; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moMove.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moMove.h new file mode 100755 index 000000000..d24832db3 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moMove.h @@ -0,0 +1,57 @@ +/* + + Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 + (C) OPAC Team, LIFL, 2002-2008 + + Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr) + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + ParadisEO WebSite : http://paradiseo.gforge.inria.fr + Contact: paradiseo-help@lists.gforge.inria.fr + +*/ + +#ifndef _moMove_h +#define _moMove_h + +#include + +//! Definition of a move. + +/*! + A move transforms a solution to another close solution. + It describes how a solution can be modified to another one. +*/ +template < class EOT > +class moMove:public eoUF < EOT &, void > +{ + public: + + //! Alias for the type + typedef EOT EOType; +}; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moMoveExpl.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moMoveExpl.h new file mode 100755 index 000000000..6b3a4b788 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moMoveExpl.h @@ -0,0 +1,49 @@ +/* + + Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 + (C) OPAC Team, LIFL, 2002-2008 + + Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr) + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + ParadisEO WebSite : http://paradiseo.gforge.inria.fr + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef _moMoveExpl_h +#define _moMoveExpl_h + +#include + +//! Description of a move (moMove) explorer +/*! + Only a description...See moMoveLoopExpl. +*/ +template < class M > class +moMoveExpl : public eoBF < const typename M::EOType &, typename M::EOType &, void > +{}; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moMoveIncrEval.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moMoveIncrEval.h new file mode 100755 index 000000000..046aa2636 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moMoveIncrEval.h @@ -0,0 +1,52 @@ +/* + + Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 + (C) OPAC Team, LIFL, 2002-2008 + + Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr) + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + ParadisEO WebSite : http://paradiseo.gforge.inria.fr + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef _moMoveIncrEval_h +#define _moMoveIncrEval_h + +#include + +//! (generally) Efficient evaluation function based a move and a solution. + +/*! + From a move and a solution, it computes + a new fitness that could be associated to + the solution if this one is updated. +*/ +template < class M > +class moMoveIncrEval:public eoBF < const M &, const typename M::EOType &, typename M::EOType::Fitness > +{}; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moMoveInit.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moMoveInit.h new file mode 100755 index 000000000..bd521d90a --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moMoveInit.h @@ -0,0 +1,50 @@ +/* + + Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 + (C) OPAC Team, LIFL, 2002-2008 + + Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr) + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + ParadisEO WebSite : http://paradiseo.gforge.inria.fr + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef _moMoveInit_h +#define _moMoveInit_h + +#include + +//! Move (moMove) initializer +/*! + Class which allows to initiase a move. + Only a description... An object that herits from this class needs to be designed to be used. +*/ +template < class M > +class moMoveInit:public eoBF < M &, const typename M::EOType &, void > +{}; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moMoveLoopExpl.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moMoveLoopExpl.h new file mode 100755 index 000000000..9068f1c81 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moMoveLoopExpl.h @@ -0,0 +1,50 @@ +/* + + Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 + (C) OPAC Team, LIFL, 2002-2008 + + Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr) + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + ParadisEO WebSite : http://paradiseo.gforge.inria.fr + Contact: paradiseo-help@lists.gforge.inria.fr + +*/ + +#ifndef _moMoveLoopExpl_h +#define _moMoveLoopExpl_h + +#include + +//! Class which describes an iterative explorer +/*! + Only a description... moHCMoveLoopExpl and moTSMoveLoopExpl are exemples of class that are a moMoveLoopExpl. +*/ +template < class M > +class moMoveLoopExpl:public moMoveExpl < M > +{}; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moMoveSelect.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moMoveSelect.h new file mode 100755 index 000000000..0b7b863a5 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moMoveSelect.h @@ -0,0 +1,76 @@ +/* + + Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 + (C) OPAC Team, LIFL, 2002-2008 + + Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr) + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + ParadisEO WebSite : http://paradiseo.gforge.inria.fr + Contact: paradiseo-help@lists.gforge.inria.fr + +*/ + +#ifndef _moMoveSelect_h +#define _moMoveSelect_h + +#include +#include + +//! Class that describes a move selector (moMove). +/*! + It iteratively considers some moves (moMove) and their + associated fitnesses. The best move is so regularly updated. + At any time, it could be accessed. +*/ +template < class M > +class moMoveSelect:public eoBF < M &, typename M::EOType::Fitness &, void > +{ + public: + //! Alias for the fitness + typedef typename M::EOType::Fitness Fitness; + + //! Procedure which initialises all that the move selector needs including the initial fitness. + /*! + In order to know the fitness of the solution, + for which the neighborhood will + be soon explored + + \param _fitness the current fitness. + */ + virtual void init (const Fitness & _fitness) = 0; + + //! Function which updates the best solutions. + /*! + \param _move a new move. + \param _fitness a fitness linked to the new move. + \return a boolean that expresses the need to resume the exploration. + */ + virtual bool update (const M & _move, const Fitness & _fitness) = 0; + +}; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moNextMove.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moNextMove.h new file mode 100755 index 000000000..5a067039c --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moNextMove.h @@ -0,0 +1,50 @@ +/* + + Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 + (C) OPAC Team, LIFL, 2002-2008 + + Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr) + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + ParadisEO WebSite : http://paradiseo.gforge.inria.fr + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef _moNextMove_h +#define _moNextMove_h + +#include + +//! Class which allows to generate a new move (moMove). +/*! + Useful for the explorer (for moTS or moHC). + Does nothing... An object that herits from this class needs to be designed for being used. +*/ +template < class M > +class moNextMove:public eoBF < M &, const typename M::EOType &, bool > +{}; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moNoAspirCrit.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moNoAspirCrit.h new file mode 100755 index 000000000..137fbc5db --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moNoAspirCrit.h @@ -0,0 +1,70 @@ +/* + + Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 + (C) OPAC Team, LIFL, 2002-2008 + + Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr) + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + ParadisEO WebSite : http://paradiseo.gforge.inria.fr + Contact: paradiseo-help@lists.gforge.inria.fr + +*/ + +#ifndef _moNoAspirCrit_h +#define _moNoAspirCrit_h + +#include + +//! One of the possible aspiration criterion (moAspirCrit) +/*! + The simplest : never satisfied. +*/ +template < class M > +class moNoAspirCrit:public moAspirCrit < M > +{ + //! Function which describes the aspiration criterion behaviour + /*! + Does nothing. + + \param _move a move. + \param _fitness a fitness. + \return false. + */ + bool operator () (const M & _move, const typename M::EOType::Fitness & _fitness) + { + return false; + } + + //! Procedure which initialises all that needs a moNoAspirCrit. + /*! + Nothing... + */ + void init () + {} +}; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moNoFitImprSolContinue.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moNoFitImprSolContinue.h new file mode 100644 index 000000000..1ff44a788 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moNoFitImprSolContinue.h @@ -0,0 +1,123 @@ +/* + + Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 + (C) OPAC Team, LIFL, 2002-2008 + + Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr) + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + ParadisEO WebSite : http://paradiseo.gforge.inria.fr + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef _moNoFitImprSolContinue_h +#define _moNoFitImprSolContinue_h + +#include + +//! One possible stop criterion for a solution-based heuristic. +/*! + The stop criterion corresponds to a maximum number of iterations without improvement. +*/ +template < class EOT > +class moNoFitImprSolContinue:public moSolContinue < EOT > +{ + public: + + //! Alias for the fitness. + typedef typename EOT::Fitness Fitness; + + //! Basic constructor. + /*! + \param _maxNumberOfIterationWithoutImprovement The number of iterations without fitness improvement to reach for stop. + */ + moNoFitImprSolContinue (unsigned int _maxNumberOfIterationWithoutImprovement) + : maxNumberOfIterationsWithoutImprovement(_maxNumberOfIterationWithoutImprovement), firstFitnessSaved(true), counter(0) + {} + + //! Function that activates the stopping criterion. + /*! + Indicates if the fitness has not been improved since a given number of iterations (after a minimum of iterations). + \param _solution the current solution. + \return true or false. + */ + bool operator () (const EOT & _solution) + { + if (_solution.invalid()) + { + throw std::runtime_error("[moNoFitImprSolContinue.h]: The current solution has not been evaluated."); + } + + if (firstFitnessSaved) + { + fitness=_solution.fitness(); + counter=0; + firstFitnessSaved=false; + return true; + } + + counter++; + + if ( _solution.fitness() > fitness) + { + fitness=_solution.fitness(); + counter=0; + } + + if (counter==maxNumberOfIterationsWithoutImprovement) + { + std::cout << "[moNoFitImrpSolContinue.h]: Done [" << counter << "] iterations without improvement." << std::endl; + } + + return counter!=maxNumberOfIterationsWithoutImprovement; + } + + //! Procedure which allows to initialise all the stuff needed. + /*! + It can be also used to reinitialize all the needed things. + */ + void init () + { + firstFitnessSaved=true; + counter=0; + } + + private: + + //! Maximum number of iterations without improvement allowed. + unsigned int maxNumberOfIterationsWithoutImprovement; + + //! Flag that this is the first time that the fitness is used. + bool firstFitnessSaved; + + //! Current Fitness. + Fitness fitness; + + //! The iteration couter. + unsigned int counter; +}; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moRandImprSelect.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moRandImprSelect.h new file mode 100755 index 000000000..71e2fd51f --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moRandImprSelect.h @@ -0,0 +1,127 @@ +/* + + Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 + (C) OPAC Team, LIFL, 2002-2008 + + Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr) + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + ParadisEO WebSite : http://paradiseo.gforge.inria.fr + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef _moRandImprSelect_h +#define _moRandImprSelect_h + +#include +#include +#include + +//! One of the possible moMove selector (moMoveSelect) +/*! + All the neighbors are considered. + One of them that enables an improvment of the objective function is choosen. +*/ +template < class M > +class moRandImprSelect: public moMoveSelect < M > +{ + public: + + //! Alias for the fitness + typedef typename M::EOType::Fitness Fitness; + + //!Procedure which all that needs a moRandImprSelect + /*! + Give a value to the initialise fitness. + Clean the move and fitness vectors. + + \param _fitness the current best fitness + */ + void init (const Fitness & _fitness) + { + initial_fitness = _fitness; + better_fitnesses.clear(); + better_moves.clear(); + } + + //! Function that updates the fitness and move vectors + /*! + if a move give a better fitness than the initial fitness, + it is saved and the fitness too. + + \param _move a new move. + \param _fitness a new fitness associated to the new move. + \return true. + */ + bool update (const M & _move, const Fitness & _fitness) + { + + if (_fitness > initial_fitness) + { + better_fitnesses.push_back(_fitness); + better_moves.push_back(_move); + } + + return true; + } + + //! The move selection + /*! + One the saved move is randomly chosen. + + \param _move the reference of the move that can be initialised by the function. + \param _fitness the reference of the fitness that can be initialised by the function. + */ + void operator () (M & _move, Fitness & _fitness) + { + unsigned int index; + + index=0; + + if( (better_fitnesses.size()==0) || (better_moves.size()==0) ) + { + throw std::runtime_error("[moRandImprSelect.h]: no move or/and no fitness already saved, update has to be called first."); + } + + index = rng.random (better_fitnesses.size ()); + + _move = better_moves[index]; + _fitness = better_fitnesses[index]; + } + + private: + + //! Fitness of the current solution. + Fitness initial_fitness; + + //! Candidate fitnesse vector. + std::vector < Fitness > better_fitnesses; + + //! Candidate move vector. + std::vector < M > better_moves; +}; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moRandMove.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moRandMove.h new file mode 100755 index 000000000..0ed46072a --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moRandMove.h @@ -0,0 +1,49 @@ +/* + + Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 + (C) OPAC Team, LIFL, 2002-2008 + + Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr) + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + ParadisEO WebSite : http://paradiseo.gforge.inria.fr + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef _moRandMove_h +#define _moRandMove_h + +#include + +//! Random move generator +/*! + Only a description... An object that herits from this class needs to be designed in order to use a moSA. +*/ +template < class M > +class moRandMove:public eoUF < M &, void > +{}; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moSA.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moSA.h new file mode 100755 index 000000000..296f45192 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moSA.h @@ -0,0 +1,165 @@ +/* + + Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 + (C) OPAC Team, LIFL, 2002-2008 + + Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr) + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + ParadisEO WebSite : http://paradiseo.gforge.inria.fr + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef _moSA_h +#define _moSA_h + +#include + +#include +#include +#include +#include +#include +#include + +//! Simulated Annealing (SA) +/*! + Class that describes a Simulated Annealing algorithm. +*/ +template < class M > +class moSA:public moAlgo < typename M::EOType > +{ + //! Alias for the type + typedef typename M::EOType EOT; + + //! Alias for the fitness + typedef typename EOT::Fitness Fitness; + + public: + + //! SA constructor + /*! + All the boxes used by a SA need to be given. + + \param _random_move_generator The move generator (generally randomly). + \param _incremental_evaluation The (generally) efficient evaluation function + \param _continue The stopping criterion. + \param _initial_temperature The initial temperature. + \param _cooling_schedule The cooling schedule, describes how the temperature is modified. + \param _full_evaluation The full evaluation function. + */ + moSA (moRandMove < M > & _random_move_generator, moMoveIncrEval < M > & _incremental_evaluation, + moSolContinue < EOT > & _continue, double _initial_temperature, moCoolingSchedule & _cooling_schedule, + eoEvalFunc < EOT > & _full_evaluation): + random_move_generator(_random_move_generator), incremental_evaluation(_incremental_evaluation), + continu(_continue), initial_temperature(_initial_temperature), + cooling_schedule(_cooling_schedule), full_evaluation(_full_evaluation) + {} + + //! function that launches the SA algorithm. + /*! + As a moTS or a moHC, the SA can be used for HYBRIDATION in an evolutionary algorithm. + + \param _solution A solution to improve. + \return TRUE. + */ + bool operator ()(EOT & _solution) + { + Fitness incremental_fitness, delta_fit; + EOT best_solution; + double temperature; + M move; + + if (_solution.invalid()) + { + full_evaluation (_solution); + } + + temperature = initial_temperature; + + best_solution = _solution; + + do + { + continu.init (); + + do + { + random_move_generator(move); + + incremental_fitness = incremental_evaluation (move, _solution); + + delta_fit = incremental_fitness - _solution.fitness (); + + if( (_solution.fitness() > incremental_fitness ) && (exp (delta_fit / temperature) > 1.0) ) + { + delta_fit = -delta_fit; + } + + if ( (incremental_fitness > _solution.fitness()) || (rng.uniform () < exp (delta_fit / temperature)) ) + { + move(_solution); + _solution.fitness(incremental_fitness); + + // Updating the best solution found until now ? + if ( _solution.fitness() > best_solution.fitness() ) + { + best_solution = _solution; + } + } + + } + while ( continu (_solution) ); + } + while ( cooling_schedule (temperature) ); + + _solution = best_solution; + + return true; + } + + private: + + //! A move generator (generally randomly) + moRandMove < M > & random_move_generator; + + //! A (generally) efficient evaluation function. + moMoveIncrEval < M > & incremental_evaluation; + + //! Stopping criterion before temperature update + moSolContinue < EOT > & continu; + + //! Initial temperature + double initial_temperature; + + //! The cooling schedule + moCoolingSchedule & cooling_schedule; + + //! A full evaluation function. + eoEvalFunc < EOT > & full_evaluation; +}; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moSimpleMoveTabuList.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moSimpleMoveTabuList.h new file mode 100755 index 000000000..7f88f5bc9 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moSimpleMoveTabuList.h @@ -0,0 +1,154 @@ +/* + + Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 + (C) OPAC Team, LIFL, 2002-2008 + + Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr) + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + ParadisEO WebSite : http://paradiseo.gforge.inria.fr + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef _moSimpleMoveTabuList_h +#define _moSimpleMoveTabuList_h + +#include +#include + +#include + +//! Class describing a move tabu list with a limited memory. +template +class moSimpleMoveTabuList: public moTabuList < M > +{ + public: + + //! Alias for the type + typedef typename M::EOType EOT; + + //! Alias for an iterator of a move list. + typedef typename std::list::iterator moveIterator; + + //! Constructor + /* + \param _size The maximum size of the move tabu list. + */ + moSimpleMoveTabuList(unsigned int _memory_maximum_size): memory_maximum_size(_memory_maximum_size), memory_size(0) + {} + + //! Function that indicates if, in a given state, the _move is tabu or not. + /*! + \param _move A given moMove. + \param _solution A solution. + \return true or false. + */ + bool operator () (const M & _move, const EOT & _solution) + { + moveIterator it; + //code only used to avoid warning because _solution is not used in this function. + EOT solution=(EOT)_solution; + + it=tabuList.begin(); + // The code is !(*it)==_move instead of (*it)!=_move because people designing their specific move representation + // will write the "==" operator (I hope) but not necessary the "!=" operator. + while ( it!=tabuList.end() && !((*it)==_move) ) + { + it++; + } + + return it!=tabuList.end(); + } + + void add(const M & _move, const EOT & _solution) + { + //code only used to avoid warning because _solution is not used in this function. + EOT solution=(EOT)_solution; + + if (memory_size!=0) + { + // Useful in the case of a move has been kept thanks to the moAspirCrit. + // In this case, the move can already be in the tabuList. + removeMove(_move); + } + + tabuList.push_back(_move); + + if (memory_size == memory_maximum_size) + { + tabuList.erase(tabuList.begin()); + } + else + { + memory_size++; + } + } + + void update () + { + //nothing to do + } + + void init () + { + //nothing to do + } + + private: + + //! Procedure that removes a given move from the tabu list (if it is into, else do nothing). + /*! + \param _move A given moMove. + */ + void removeMove(const M & _move) + { + moveIterator it; + + it=tabuList.begin(); + // The code is !(*it)==_move instead of (*it)!=_move because people designing their specific move representation + // will write the "==" operator (I hope) but not necessary the "!=" operator. + while ( it!=tabuList.end() && (!((*it)==_move) )) + { + it++; + } + + if (it!=tabuList.end()) + { + tabuList.erase(it); + } + } + + //! The maximum size of the tabu list. + unsigned int memory_maximum_size; + + //! The current size of the tabu list. + unsigned int memory_size; + + //! The move tabu list. + std::list tabuList; +}; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moSimpleSolutionTabuList.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moSimpleSolutionTabuList.h new file mode 100755 index 000000000..2865f9973 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moSimpleSolutionTabuList.h @@ -0,0 +1,159 @@ +/* + + Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 + (C) OPAC Team, LIFL, 2002-2008 + + Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr) + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + ParadisEO WebSite : http://paradiseo.gforge.inria.fr + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef _moSimpleSolutionTabuList_h +#define _moSimpleSolutionTabuList_h + +#include +#include + +#include + +//! Class describing a solution tabu list with limited length. +template +class moSimpleSolutionTabuList: public moTabuList < M > +{ + public: + + //! Alias for the type + typedef typename M::EOType EOT; + + //! Alias for an iterator of a solution list. + typedef typename std::list::iterator solutionIterator; + + //! Constructor + /*! + \param _memory_maximum_size The maximum size of the solution tabu list. + */ + moSimpleSolutionTabuList(unsigned int _memory_maximum_size): memory_maximum_size(_memory_maximum_size), memory_size(0) + {} + + //! Function that indicates if, in a given state, the _move is tabu or not. + /*! + \param _move A given moMove. + \param _solution A solution. + \return true or false. + */ + bool operator () (const M & _move, const EOT & _solution) + { + solutionIterator it; + + M move=(M)_move; + EOT solution=(EOT) _solution; + + move(solution); + + it=tabuList.begin(); + // The code is !(*it)==_solution instead of (*it)!=_solution because people designing their specific solution representation + // will write the "==" operator (I hope) but not necessary the "!=" operator. + while (it!=tabuList.end()&&(!((*it)==solution))) + { + it++; + } + + return it!=tabuList.end(); + } + + void add (const M & _move, const EOT & _solution) + { + M move=(M)_move; + EOT solution=(EOT) _solution; + + _move(_solution); + + if (memory_size!=0) + { + // Useful in the case of a solution has been kept thanks to the moAspirCrit. + // In this case, the solution can already be in the tabuList. + removeSolution(_solution); + } + + tabuList.push_back(_solution); + + if (memory_size == memory_maximum_size) + { + tabuList.erase(tabuList.begin()); + } + else + { + memory_size++; + } + } + + void update () + { + //nothing to do + } + + void init () + { + //nothing to do + } + + private: + + //! Procedure that removes a given solution from the tabu list (if it is into, else does nothing). + /*! + \param _solution A given solution. + */ + void removeSolution(const EOT & _solution) + { + solutionIterator it; + + it=tabuList.begin(); + // The code is !(*it)==_solution instead of (*it)!=_solution because people designing their specific solution representation + // will write the "==" operator (I hope) but not necessary the "!=" operator. + while ( it!=tabuList.end() && !((*it)==_solution) ) + { + it++; + } + + if (it!=tabuList.end()) + { + tabuList.erase(it); + } + } + + //! The maximum size of the tabu list. + unsigned int memory_maximum_size; + + //! The current size of the tabu list. + unsigned int memory_size; + + //! The solution tabu list. + std::list tabuList; +}; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moSolContinue.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moSolContinue.h new file mode 100755 index 000000000..eb4c72cc0 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moSolContinue.h @@ -0,0 +1,58 @@ +/* + + Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 + (C) OPAC Team, LIFL, 2002-2008 + + Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr) + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + ParadisEO WebSite : http://paradiseo.gforge.inria.fr + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef _moSolContinue_h +#define _moSolContinue_h + +#include +#include + +//! Class that describes a stop criterion for a solution-based heuristic + +/*! + It allows to add an initialisation procedure to an object that is a unary function (eoUF). +*/ +template < class EOT > +class moSolContinue:public eoUF < const EOT &, bool > +{ + public: + //! Procedure which initialises all that the stop criterion needs + /*! + Generally, it allocates some data structures or initialises some counters. + */ + virtual void init () = 0; +}; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moSteadyFitSolContinue.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moSteadyFitSolContinue.h new file mode 100644 index 000000000..10457da05 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moSteadyFitSolContinue.h @@ -0,0 +1,142 @@ +/* + + Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 + (C) OPAC Team, LIFL, 2002-2008 + + Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr) + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + ParadisEO WebSite : http://paradiseo.gforge.inria.fr + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef _moSteadyFitSolContinue_h +#define _moSteadyFitSolContinue_h + +#include + +//! One possible stopping criterion for a solution-based heuristic. +/*! + The stop criterion corresponds to a maximum number of iterations without improvement (after a minimum number of iterations). +*/ +template < class EOT > +class moSteadyFitSolContinue:public moSolContinue < EOT > +{ + public: + + //! Alias for the fitness. + typedef typename EOT::Fitness Fitness; + + //! Basic constructor. + /*! + \param _maxNumberOfIterations The number of iterations to reach before looking for the fitness. + \param _maxNumberOfIterationWithoutImprovement The number of iterations without fitness improvement to reach for stop. + */ + moSteadyFitSolContinue (unsigned int _maxNumberOfIterations, unsigned int _maxNumberOfIterationWithoutImprovement) + : maxNumberOfIterations (_maxNumberOfIterations), maxNumberOfIterationsWithoutImprovement(_maxNumberOfIterationWithoutImprovement), + maxNumberOfIterationsReached(false), firstFitnessSaved(true), counter(0) + {} + + //! Function that activates the stopping criterion. + /*! + Indicates if the fitness has not been improved since a number of iterations (after a minimum of iterations). + + \param _solution the current solution. + \return true or false. + */ + bool operator () (const EOT & _solution) + { + if (!maxNumberOfIterationsReached) + { + maxNumberOfIterationsReached=((++counter)==maxNumberOfIterations); + if (maxNumberOfIterationsReached) + { + std::cout << "[moSteadyFitSolContinue.h]: Done the minimum number of iterations [" << counter << "]." << std::endl; + } + return true; + } + + if (_solution.invalid()) + { + return true; + } + + if (firstFitnessSaved) + { + fitness=_solution.fitness(); + counter=0; + firstFitnessSaved=false; + return true; + } + + counter++; + + if ( _solution.fitness() > fitness ) + { + fitness=_solution.fitness(); + counter=0; + } + + if (counter==maxNumberOfIterationsWithoutImprovement) + { + std::cout << "[moSteadyFitSolContinue.h]: Done [" << counter << "] iterations without improvement." << std::endl; + } + return counter!=maxNumberOfIterationsWithoutImprovement; + } + + //! Procedure which allows to initialise the stuff needed. + /*! + It can be also used to reinitialize the counter all the needed things. + */ + void init () + { + maxNumberOfIterationsReached=false; + counter=0; + firstFitnessSaved=true; + } + + private: + + //! Maximum number of iterations before considering the fitness. + unsigned int maxNumberOfIterations; + + //! Maximum number of iterations without improvement allowed. + unsigned int maxNumberOfIterationsWithoutImprovement; + + //! Flag that indicates that the maxNumberIteration have been reached. + bool maxNumberOfIterationsReached; + + //! Flag that this is the first time that the fitness is used. + bool firstFitnessSaved; + + //! Current Fitness. + Fitness fitness; + + //! The iteration couter. + unsigned int counter; +}; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moTS.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moTS.h new file mode 100755 index 000000000..e205151b5 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moTS.h @@ -0,0 +1,151 @@ +/* + + Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 + (C) OPAC Team, LIFL, 2002-2008 + + Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr) + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + ParadisEO WebSite : http://paradiseo.gforge.inria.fr + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef _moTS_h +#define _moTS_h + +#include + +#include +#include +#include + +//! Tabu Search (TS) +/*! + Generic algorithm that describes a tabu search. +*/ +template < class M > +class moTS:public moAlgo < typename M::EOType > +{ + //!Alias for the type + typedef typename M::EOType EOT; + + //!Alias for the fitness + typedef typename EOT::Fitness Fitness; + + public: + + //!Constructor of a moTS specifying all the boxes + /*! + In this constructor, a moTSMoveLoopExpl is instanciated. + + \param _move_initializer The move initializer. + \param _next_move_generator The neighbourhood explorer. + \param _incremental_evaluation The (generally) efficient evaluation. + \param _tabu_list The tabu list. + \param _aspiration_criterion An aspiration criterion. + \param _continue The stopping criterion. + \param _full_evaluation A full evaluation function. + */ + moTS (moMoveInit < M > & _move_initializer, moNextMove < M > & _next_move_generator, + moMoveIncrEval < M > & _incremental_evaluation, moTabuList < M > & _tabu_list, + moAspirCrit < M > & _aspiration_criterion, moSolContinue < EOT > & _continue, + eoEvalFunc < EOT > & _full_evaluation): + move_explorer ( *new moTSMoveLoopExpl < M >(_move_initializer, _next_move_generator, _incremental_evaluation, + _tabu_list,_aspiration_criterion) ), + continu (_continue), full_evaluation (_full_evaluation) + {} + + //! Constructor with less parameters + /*! + The explorer is given in the parameters. + + \param _move_explorer The explorer (generally different that a moTSMoveLoopExpl). + \param _continue The stopping criterion. + \param _full_evaluation A full evaluation function. + */ + moTS (moMoveExpl < M > & _move_explorer, moSolContinue < EOT > & _continue, eoEvalFunc < EOT > & _full_evaluation): + move_explorer (_move_explorer), continu (_continue), full_evaluation (_full_evaluation) + {} + + //! Function which launchs the Tabu Search + /*! + Algorithm of the tabu search. + As a moSA or a moHC, it can be used for HYBRIDATION in an evolutionary algorithm. + For security a lock (pthread_mutex_t) is closed during the algorithm. + + \param _solution a solution to improve. + \return TRUE. + */ + bool operator ()(EOT & _solution) + { + M move; + + EOT best_solution, new_solution; + + if ( _solution.invalid () ) + { + full_evaluation (_solution); + } + + best_solution=_solution; + + // code used for avoiding warning because new_solution is indirectly initialized by move_expl. + new_solution=_solution; + + continu.init (); + + do + { + move_explorer (_solution, new_solution); + + // Updating the best solution found until now ? + if (new_solution.fitness() > _solution.fitness()) + { + best_solution = new_solution; + } + + _solution = new_solution; + } + while ( continu (_solution) ); + + _solution = best_solution; + + return true; + } + + private: + + //! Neighborhood explorer + moMoveExpl < M > & move_explorer; + + //! Stop criterion + moSolContinue < EOT > & continu; + + //! Full evaluation function + eoEvalFunc < EOT > & full_evaluation; +}; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moTSMoveLoopExpl.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moTSMoveLoopExpl.h new file mode 100755 index 000000000..a11e2972b --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moTSMoveLoopExpl.h @@ -0,0 +1,163 @@ +/* + + Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 + (C) OPAC Team, LIFL, 2002-2008 + + Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr) + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + ParadisEO WebSite : http://paradiseo.gforge.inria.fr + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef _moTSMoveLoopExpl_h +#define _moTSMoveLoopExpl_h + +#include +#include +#include +#include +#include +#include +#include +#include + +//! Explorer for a Tabu Search algorithm +/*! + It is used by a moTS. +*/ +template < class M > +class moTSMoveLoopExpl:public moMoveLoopExpl < M > +{ + //!Alias for the type + typedef typename M::EOType EOT; + + //!Alias for the fitness + typedef typename M::EOType::Fitness Fitness; + + public: + + //!Constructor + /*! + \param _move_initializer The move initializer. + \param _next_move_generator The neighbourhood explorer. + \param _incremental_evaluation A (generally) efficient evaluation. + \param _tabu_list The tabu list. + \param _aspiration_criterion An aspiration criterion. + */ + moTSMoveLoopExpl (moMoveInit < M > & _move_initializer, moNextMove < M > & _next_move_generator, + moMoveIncrEval < M > & _incremental_evaluation, moTabuList < M > & _tabu_list, + moAspirCrit < M > & _aspiration_criterion): + move_initializer(_move_initializer), next_move_generator(_next_move_generator), incremental_evaluation(_incremental_evaluation), + tabu_list(_tabu_list), aspiration_criterion(_aspiration_criterion) + { + tabu_list.init (); + aspiration_criterion.init (); + } + + //!Procedure which lauches the exploration + /*! + The exploration continues while the chosen move is not in the tabu list + or the aspiration criterion is true. If these 2 conditions are not true, the + exploration stops if the move selector update function returns false. + + \param _old_solution the initial solution + \param _new_solution the new solution + */ + void operator () (const EOT & _old_solution, EOT & _new_solution) + { + M move, best_move; + Fitness fitness, best_move_fitness; + + bool move_is_tabu, aspiration_criterion_is_verified, selection_update_is_ok, has_next_move; + + if( _old_solution.invalid() ) + { + throw std::runtime_error("[moTSMoveLoopExpl.h]: The current solution has not been evaluated."); + } + + //At the begining, the new solution is equivalent to the old one. + _new_solution=(EOT)_old_solution; + + // Restarting the exploration of of the neighborhood ! + move_initializer (move, _old_solution); + + move_selection.init( _old_solution.fitness() ); + + do + { + fitness = incremental_evaluation(move, _old_solution); + + move_is_tabu = tabu_list(move, _old_solution); + + aspiration_criterion_is_verified = aspiration_criterion(move, fitness); + + if( !move_is_tabu || aspiration_criterion_is_verified ) + { + selection_update_is_ok = move_selection.update(move, fitness); + } + + has_next_move = next_move_generator(move, _old_solution); + } + while( has_next_move && selection_update_is_ok ); + + move_selection(best_move, best_move_fitness); + + // Apply the best move. + best_move(_new_solution); + + // The fitness is set to avoid an additionnal fitness computation. + _new_solution.fitness(best_move_fitness); + + // Removing moves that are no more tabu. + tabu_list.update (); + + // Updating the tabu list + tabu_list.add(best_move, _new_solution); + } + + private: + + //! Move initialisation + moMoveInit < M > & move_initializer; + + //! Neighborhood explorer + moNextMove < M > & next_move_generator; + + //! Efficient evaluation + moMoveIncrEval < M > & incremental_evaluation; + + //! Move selector + moBestImprSelect < M > move_selection; + + //! Tabu list + moTabuList < M > & tabu_list; + + //! Aspiration criterion + moAspirCrit < M > & aspiration_criterion; +}; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moTabuList.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moTabuList.h new file mode 100755 index 000000000..8a254edad --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/src/moTabuList.h @@ -0,0 +1,75 @@ +/* + + Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 + (C) OPAC Team, LIFL, 2002-2008 + + Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr) + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + ParadisEO WebSite : http://paradiseo.gforge.inria.fr + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef _moTabuList_h +#define _moTabuList_h + +#include + +//! Class describing a tabu list that a moTS uses. +/*! + It is only a description, does nothing... A new object that herits from this class has to be defined in order + to be used in a moTS. +*/ +template < class M > class moTabuList: public eoBF < const M &, const typename M::EOType &, bool > +{ + public: + + //! Alias for the type + typedef typename M::EOType EOT; + + //! Procedure to add a move in the tabu list + /*! + The two parameters have not to be modified so they are constant parameters. + + \param _move a new tabu move. + \param _solution the origianl solution associated to this move. + */ + virtual void add(const M & _move, const EOT & _solution) = 0; + + //! Procedure that updates the tabu list content. + /*! + Generally, a counter associated to each saved move is decreased by one. + */ + virtual void update () = 0; + + //! Procedure which initialises the tabu list. + /*! + Can be useful if the data structure needs to be allocated before being used. + */ + virtual void init () = 0; +}; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/test/CMakeLists.txt b/branches/paradiseo-ix86-2.0/paradiseo-mo/test/CMakeLists.txt new file mode 100644 index 000000000..1b69ae868 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/test/CMakeLists.txt @@ -0,0 +1,87 @@ +############################################################################### +## +## CMakeLists file for ParadisEO-MO/test +## +############################################################################### + + +###################################################################################### +### 1) Include the sources +###################################################################################### + +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src) +INCLUDE_DIRECTORIES(${ParadisEO-MO_SOURCE_DIR}/src) +INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}) + +###################################################################################### + + +###################################################################################### +### 2) Specify where CMake can find the libraries +###################################################################################### + +IF(NOT WIN32 OR CYGWIN) + LINK_DIRECTORIES(${EO_BIN_DIR}/lib ${ParadisEO-MO_BINARY_DIR}/lib) +ENDIF(NOT WIN32 OR CYGWIN) + +# especially for Visual Studio +IF(WIN32 AND NOT CYGWIN) + LINK_DIRECTORIES(${EO_BIN_DIR}\\lib\\${CMAKE_BUILD_TYPE} + ${ParadisEO-MO_BINARY_DIR}\\lib\\${CMAKE_BUILD_TYPE} + ) +ENDIF(WIN32 AND NOT CYGWIN) + +###################################################################################### + + + +###################################################################################### +### 3) Define your targets and link the librairies +###################################################################################### + +SET (TEST_LIST t-mo) + +FOREACH (test ${TEST_LIST}) + SET ("T_${test}_SOURCES" "${test}.cpp") +ENDFOREACH (test) + + +IF(ENABLE_CMAKE_TESTING) + + # Add the tests + FOREACH (test ${TEST_LIST}) + ADD_EXECUTABLE(${test} ${T_${test}_SOURCES}) + ADD_TEST(${test} ${test}) + ENDFOREACH (test) + + # Link the librairies + FOREACH (test ${TEST_LIST}) + TARGET_LINK_LIBRARIES(${test} ga es eoutils eo) + ENDFOREACH (test) + +ENDIF(ENABLE_CMAKE_TESTING) + +###################################################################################### + + +###################################################################################### +### 5) Windows advanced config - especially for Microsoft Visual Studio 8 +###################################################################################### + + IF(CMAKE_CXX_COMPILER MATCHES cl) + IF(NOT WITH_SHARED_LIBS) + IF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + SET(CMAKE_CXX_FLAGS "/nologo /W3 /Gy") + SET(CMAKE_CXX_FLAGS_DEBUG "/MTd /Z7 /Od") + SET(CMAKE_CXX_FLAGS_RELEASE "/MT /O2") + SET(CMAKE_CXX_FLAGS_MINSIZEREL "/MT /O2") + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MTd /Z7 /Od") + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:CONSOLE") + + ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + ENDIF(NOT WITH_SHARED_LIBS) + ENDIF(CMAKE_CXX_COMPILER MATCHES cl) +###################################################################################### + + + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/test/t-mo.cpp b/branches/paradiseo-ix86-2.0/paradiseo-mo/test/t-mo.cpp new file mode 100644 index 000000000..64d0211c5 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/test/t-mo.cpp @@ -0,0 +1,59 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr) +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- +// t-mo.cpp +//----------------------------------------------------------------------------- + +#include // EO +#include // MO + +//----------------------------------------------------------------------------- + +typedef EO Chrom; + +//----------------------------------------------------------------------------- + +int main() +{ + Chrom chrom1, chrom2; + + std::cout << "chrom1 = " << chrom1 << std::endl + << "chrom2 = " << chrom2 << std::endl; + + return 0; +} + +//----------------------------------------------------------------------------- diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/CMakeLists.txt b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/CMakeLists.txt new file mode 100644 index 000000000..e8d84ac73 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/CMakeLists.txt @@ -0,0 +1,17 @@ + +###################################################################################### +### 1) Definitions (required for tsp target) +###################################################################################### + +SET(TSP_SRC_DIR ${ParadisEO-MO_SOURCE_DIR}/tutorial/examples/tsp CACHE PATH "TSP src directory") +SET(TSP_BINARY_DIR ${ParadisEO-MO_BINARY_DIR}/tutorial/examples/tsp CACHE PATH "TSP binary directory") + +###################################################################################### + +###################################################################################### +### 2) Where must cmake go now ? +###################################################################################### + +SUBDIRS(examples Lesson1 Lesson2 Lesson3 Lesson4) + +###################################################################################### diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/Lesson1/CMakeLists.txt b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/Lesson1/CMakeLists.txt new file mode 100644 index 000000000..22cb04f68 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/Lesson1/CMakeLists.txt @@ -0,0 +1,83 @@ + + +###################################################################################### +### 1) Include the sources +###################################################################################### + +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src) +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src/utils) +INCLUDE_DIRECTORIES(${ParadisEO-MO_SOURCE_DIR}/src) +INCLUDE_DIRECTORIES(${TSP_SRC_DIR}) +###################################################################################### + + + +###################################################################################### +### 2) Specify where CMake can find the libraries +###################################################################################### + +IF(NOT WIN32 OR CYGWIN) + LINK_DIRECTORIES(${EO_BIN_DIR}/lib ${TSP_BINARY_DIR}/lib) +ENDIF(NOT WIN32 OR CYGWIN) + +# especially for Visual Studio +IF(WIN32 AND NOT CYGWIN) + LINK_DIRECTORIES(${EO_BIN_DIR}\\lib\\${CMAKE_BUILD_TYPE}) +ENDIF(WIN32 AND NOT CYGWIN) + +###################################################################################### + + + +###################################################################################### +### 3) Define your target(s): just an executable here +###################################################################################### + +ADD_EXECUTABLE(hill_climbing hill_climbing.cpp) + +ADD_DEPENDENCIES(hill_climbing tsp) +###################################################################################### + + + +###################################################################################### +### 4) Optionnal: define your target(s)'s version: no effect for windows +###################################################################################### + +SET(HILLCLIMBING_VERSION ${GLOBAL_VERSION}) +SET_TARGET_PROPERTIES(hill_climbing PROPERTIES VERSION "${HILLCLIMBING_VERSION}") +###################################################################################### + + + +###################################################################################### +### 5) Link the librairies for your target(s) +###################################################################################### + +TARGET_LINK_LIBRARIES(hill_climbing tsp eo eoutils) + +###################################################################################### + + + +###################################################################################### +### 6) Windows advanced config - especially for Microsoft Visual Studio 8 +###################################################################################### + + IF(CMAKE_CXX_COMPILER MATCHES cl) + IF(NOT WITH_SHARED_LIBS) + IF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + SET(CMAKE_CXX_FLAGS "/nologo /W3 /Gy") + SET(CMAKE_CXX_FLAGS_DEBUG "/MTd /Z7 /Od") + SET(CMAKE_CXX_FLAGS_RELEASE "/MT /O2") + SET(CMAKE_CXX_FLAGS_MINSIZEREL "/MT /O2") + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MTd /Z7 /Od") + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:CONSOLE") + + ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + ENDIF(NOT WITH_SHARED_LIBS) + ENDIF(CMAKE_CXX_COMPILER MATCHES cl) +###################################################################################### + + + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/Lesson1/hill_climbing.cpp b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/Lesson1/hill_climbing.cpp new file mode 100644 index 000000000..2b3833b7b --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/Lesson1/hill_climbing.cpp @@ -0,0 +1,84 @@ +/* + + Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 + (C) OPAC Team, LIFL, 2002-2008 + + Sébastien Cahon, Jean-Charles Boisson + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + ParadisEO WebSite : http://paradiseo.gforge.inria.fr + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include +#include + +int +main (int _argc, char* _argv []) +{ + if (_argc != 2) + { + + std :: cerr << "Usage : ./hill_climbing [instance]" << std :: endl; + return EXIT_FAILURE; + } + + srand (1000); + + Graph::load(_argv [1]); + + Route solution; + + RouteInit initializer; + initializer (solution); + + RouteEval full_evaluation; + full_evaluation (solution); + + std :: cout << "[From] " << solution << std :: endl; + + /* Tools for an efficient (? :-)) + local search ! */ + + TwoOptInit two_opt_initializer; + + TwoOptNext two_opt_next_move_generator; + + TwoOptIncrEval two_opt_incremental_evaluation; + + //moFirstImprSelect two_opt_selection; + moBestImprSelect two_opt_selection; + //moRandImprSelect two_opt_selection; + + moHC hill_climbing (two_opt_initializer, two_opt_next_move_generator, two_opt_incremental_evaluation, + two_opt_selection, full_evaluation); + hill_climbing (solution) ; + + std :: cout << "[To] " << solution << std :: endl; + + return EXIT_SUCCESS; +} + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/Lesson1/lesson_1.pdf b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/Lesson1/lesson_1.pdf new file mode 100644 index 000000000..7b9e4d80b Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/Lesson1/lesson_1.pdf differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/Lesson2/CMakeLists.txt b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/Lesson2/CMakeLists.txt new file mode 100644 index 000000000..e9f8b6602 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/Lesson2/CMakeLists.txt @@ -0,0 +1,81 @@ + + +###################################################################################### +### 1) Include the sources +###################################################################################### + +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src) +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src/utils) +INCLUDE_DIRECTORIES(${ParadisEO-MO_SOURCE_DIR}/src) +INCLUDE_DIRECTORIES(${TSP_SRC_DIR}) +###################################################################################### + + + +###################################################################################### +### 2) Specify where CMake can find the libraries +###################################################################################### + +IF(NOT WIN32 OR CYGWIN) + LINK_DIRECTORIES(${EO_BIN_DIR}/lib ${TSP_BINARY_DIR}/lib) +ENDIF(NOT WIN32 OR CYGWIN) + +# especially for Visual Studio +IF(WIN32 AND NOT CYGWIN) + LINK_DIRECTORIES(${EO_BIN_DIR}\\lib\\${CMAKE_BUILD_TYPE}) +ENDIF(WIN32 AND NOT CYGWIN) + +###################################################################################### + + + +###################################################################################### +### 3) Define your target(s): just an executable here +###################################################################################### + +ADD_EXECUTABLE(tabu_search tabu_search.cpp) + +ADD_DEPENDENCIES(tabu_search tsp) +###################################################################################### + + + +###################################################################################### +### 4) Optionnal: define your target(s)'s version: no effect for windows +###################################################################################### + +SET(TABUSEARCH_VERSION ${GLOBAL_VERSION}) +SET_TARGET_PROPERTIES(tabu_search PROPERTIES VERSION "${TABUSEARCH_VERSION}") +###################################################################################### + + + +###################################################################################### +### 5) Link the librairies for your target(s) +###################################################################################### + +TARGET_LINK_LIBRARIES(tabu_search tsp eo eoutils) + +###################################################################################### + + + +###################################################################################### +### 6) Windows advanced config - especially for Microsoft Visual Studio 8 +###################################################################################### + + IF(CMAKE_CXX_COMPILER MATCHES cl) + IF(NOT WITH_SHARED_LIBS) + IF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + SET(CMAKE_CXX_FLAGS "/nologo /W3 /Gy") + SET(CMAKE_CXX_FLAGS_DEBUG "/MTd /Z7 /Od") + SET(CMAKE_CXX_FLAGS_RELEASE "/MT /O2") + SET(CMAKE_CXX_FLAGS_MINSIZEREL "/MT /O2") + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MTd /Z7 /Od") + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:CONSOLE") + + ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + ENDIF(NOT WITH_SHARED_LIBS) + ENDIF(CMAKE_CXX_COMPILER MATCHES cl) +###################################################################################### + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/Lesson2/lesson_2.pdf b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/Lesson2/lesson_2.pdf new file mode 100644 index 000000000..06b152206 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/Lesson2/lesson_2.pdf differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/Lesson2/tabu_search.cpp b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/Lesson2/tabu_search.cpp new file mode 100644 index 000000000..6cc7e1a5c --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/Lesson2/tabu_search.cpp @@ -0,0 +1,86 @@ +/* + + Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 + (C) OPAC Team, LIFL, 2002-2008 + + Sébastien Cahon, Jean-Charles Boisson + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + ParadisEO WebSite : http://paradiseo.gforge.inria.fr + Contact: paradiseo-help@lists.gforge.inria.fr + +*/ + +#include +#include + +int +main (int _argc, char* _argv []) +{ + if (_argc != 2) + { + std :: cerr << "Usage : ./tabu_search [instance]" << std :: endl ; + return 1 ; + } + + Graph::load (_argv [1]); + + Route solution; + + RouteInit initializer; + initializer(solution); + + RouteEval full_evaluation; + full_evaluation(solution); + + std :: cout << "[From] " << solution << std :: endl; + + /* Tools for an efficient (? :-)) + local search ! */ + + TwoOptInit two_opt_initializer; + + TwoOptNext two_opt_next_move_generator; + + TwoOptIncrEval two_opt_incremental_evaluation; + + TwoOptTabuList tabu_list; + //moSimpleMoveTabuList tabu_list(10); + //moSimpleSolutionTabuList tabu_list(10); + + moNoAspirCrit aspiration_criterion; + + moGenSolContinue continu (10000); + + moTS tabu_search (two_opt_initializer, two_opt_next_move_generator, + two_opt_incremental_evaluation, tabu_list, aspiration_criterion, continu, full_evaluation); + tabu_search(solution); + + std :: cout << "[To] " << solution << std :: endl; + + return EXIT_SUCCESS; +} + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/Lesson3/CMakeLists.txt b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/Lesson3/CMakeLists.txt new file mode 100644 index 000000000..f2e974bad --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/Lesson3/CMakeLists.txt @@ -0,0 +1,81 @@ + + +###################################################################################### +### 1) Include the sources +###################################################################################### + +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src) +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src/utils) +INCLUDE_DIRECTORIES(${ParadisEO-MO_SOURCE_DIR}/src) +INCLUDE_DIRECTORIES(${TSP_SRC_DIR}) +###################################################################################### + + + +###################################################################################### +### 2) Specify where CMake can find the libraries +###################################################################################### + +IF(NOT WIN32 OR CYGWIN) + LINK_DIRECTORIES(${EO_BIN_DIR}/lib ${TSP_BINARY_DIR}/lib) +ENDIF(NOT WIN32 OR CYGWIN) + +# especially for Visual Studio +IF(WIN32 AND NOT CYGWIN) + LINK_DIRECTORIES(${EO_BIN_DIR}\\lib\\${CMAKE_BUILD_TYPE}) +ENDIF(WIN32 AND NOT CYGWIN) + +###################################################################################### + + + +###################################################################################### +### 3) Define your target(s): just an executable here +###################################################################################### + +ADD_EXECUTABLE(simulated_annealing simulated_annealing.cpp) + +ADD_DEPENDENCIES(simulated_annealing tsp) +###################################################################################### + + + +###################################################################################### +### 4) Optionnal: define your target(s)'s version: no effect for windows +###################################################################################### + +SET(SIMULATEDANNEALING_VERSION ${GLOBAL_VERSION}) +SET_TARGET_PROPERTIES(simulated_annealing PROPERTIES VERSION "${SIMULATEDANNEALING_VERSION}") +###################################################################################### + + + +###################################################################################### +### 5) Link the librairies for your target(s) +###################################################################################### + +TARGET_LINK_LIBRARIES(simulated_annealing tsp eo eoutils) + +###################################################################################### + + + +###################################################################################### +### 6) Windows advanced config - especially for Microsoft Visual Studio 8 +###################################################################################### + + IF(CMAKE_CXX_COMPILER MATCHES cl) + IF(NOT WITH_SHARED_LIBS) + IF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + SET(CMAKE_CXX_FLAGS "/nologo /W3 /Gy") + SET(CMAKE_CXX_FLAGS_DEBUG "/MTd /Z7 /Od") + SET(CMAKE_CXX_FLAGS_RELEASE "/MT /O2") + SET(CMAKE_CXX_FLAGS_MINSIZEREL "/MT /O2") + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MTd /Z7 /Od") + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:CONSOLE") + + ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + ENDIF(NOT WITH_SHARED_LIBS) + ENDIF(CMAKE_CXX_COMPILER MATCHES cl) +###################################################################################### + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/Lesson3/lesson_3.pdf b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/Lesson3/lesson_3.pdf new file mode 100644 index 000000000..e9f5bd0a1 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/Lesson3/lesson_3.pdf differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/Lesson3/simulated_annealing.cpp b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/Lesson3/simulated_annealing.cpp new file mode 100644 index 000000000..3a32ff509 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/Lesson3/simulated_annealing.cpp @@ -0,0 +1,84 @@ +/* + + Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 + (C) OPAC Team, LIFL, 2002-2008 + + Sébastien Cahon, Jean-Charles Boisson + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + ParadisEO WebSite : http://paradiseo.gforge.inria.fr + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include +#include + +int +main (int _argc, char* _argv []) +{ + if (_argc != 2) + { + std :: cerr << "Usage : ./simulated_annealing [instance]" << std :: endl; + return EXIT_FAILURE; + } + + Graph::load (_argv [1]); + + Route solution; + + RouteInit initializer; + initializer (solution); + + RouteEval full_evaluation; + full_evaluation (solution); + + std :: cout << "[From] " << solution << std :: endl; + + /* Tools for an efficient (? :-)) + local search ! */ + + TwoOptRand two_opt_random_move_generator; + + TwoOptIncrEval two_opt_incremental_evaluation; + + TwoOpt move; + + moExponentialCoolingSchedule cooling_schedule (0.1, 0.98); + //moLinearCoolingSchedule cooling_schedule (0.1, 0.5); + + moGenSolContinue continu (1000); /* Temperature Descreasing + will occur each 1000 + iterations */ + + moSA simulated_annealing (two_opt_random_move_generator, two_opt_incremental_evaluation, + continu, 1000, cooling_schedule, full_evaluation); + simulated_annealing (solution); + + std :: cout << "[To] " << solution << std :: endl; + + return EXIT_SUCCESS ; +} + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/Lesson4/CMakeLists.txt b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/Lesson4/CMakeLists.txt new file mode 100644 index 000000000..5afdc8647 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/Lesson4/CMakeLists.txt @@ -0,0 +1,81 @@ + + +###################################################################################### +### 1) Include the sources +###################################################################################### + +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src) +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src/utils) +INCLUDE_DIRECTORIES(${ParadisEO-MO_SOURCE_DIR}/src) +INCLUDE_DIRECTORIES(${TSP_SRC_DIR}) +###################################################################################### + + + +###################################################################################### +### 2) Specify where CMake can find the libraries +###################################################################################### + +IF(NOT WIN32 OR CYGWIN) + LINK_DIRECTORIES(${EO_BIN_DIR}/lib ${TSP_BINARY_DIR}/lib) +ENDIF(NOT WIN32 OR CYGWIN) + +# especially for Visual Studio +IF(WIN32 AND NOT CYGWIN) + LINK_DIRECTORIES(${EO_BIN_DIR}\\lib\\${CMAKE_BUILD_TYPE}) +ENDIF(WIN32 AND NOT CYGWIN) + +###################################################################################### + + + +###################################################################################### +### 3) Define your target(s): just an executable here +###################################################################################### + +ADD_EXECUTABLE(iterated_local_search iterated_local_search.cpp) + +ADD_DEPENDENCIES(iterated_local_search tsp) +###################################################################################### + + + +###################################################################################### +### 4) Optionnal: define your target(s)'s version: no effect for windows +###################################################################################### + +SET(ITERATEDLOCALSEARCH_VERSION ${GLOBAL_VERSION}) +SET_TARGET_PROPERTIES(iterated_local_search PROPERTIES VERSION "${ITERATEDLOCALSEARCH_VERSION}") +###################################################################################### + + + +###################################################################################### +### 5) Link the librairies for your target(s) +###################################################################################### + +TARGET_LINK_LIBRARIES(iterated_local_search tsp eo eoutils) + +###################################################################################### + + + +###################################################################################### +### 6) Windows advanced config - especially for Microsoft Visual Studio 8 +###################################################################################### + + IF(CMAKE_CXX_COMPILER MATCHES cl) + IF(NOT WITH_SHARED_LIBS) + IF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + SET(CMAKE_CXX_FLAGS "/nologo /W3 /Gy") + SET(CMAKE_CXX_FLAGS_DEBUG "/MTd /Z7 /Od") + SET(CMAKE_CXX_FLAGS_RELEASE "/MT /O2") + SET(CMAKE_CXX_FLAGS_MINSIZEREL "/MT /O2") + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MTd /Z7 /Od") + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:CONSOLE") + + ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + ENDIF(NOT WITH_SHARED_LIBS) + ENDIF(CMAKE_CXX_COMPILER MATCHES cl) +###################################################################################### + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/Lesson4/iterated_local_search.cpp b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/Lesson4/iterated_local_search.cpp new file mode 100644 index 000000000..0ff328049 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/Lesson4/iterated_local_search.cpp @@ -0,0 +1,82 @@ +/* + + Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2008 + (C) OPAC Team, LIFL, 2002-2008 + + Sébastien Cahon, Jean-Charles Boisson + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + ParadisEO WebSite : http://paradiseo.gforge.inria.fr + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include +#include + +int +main (int _argc, char* _argv []) +{ + if (_argc != 2) + { + std :: cerr << "Usage : ./iterated_local_search [instance]" << std :: endl ; + return EXIT_FAILURE; + } + + Graph::load (_argv [1]); + + Route solution; + + RouteInit initializer; + initializer (solution); + + RouteEval full_evaluation; + full_evaluation (solution); + + std :: cout << "[From] " << solution << std :: endl; + + TwoOptInit two_opt_initializer; + + TwoOptNext two_opt_next_move_generator; + + TwoOptIncrEval two_opt_incremental_evaluation; + + moBestImprSelect two_opt_selection; + + moGenSolContinue continu(1000); + + moFitComparator comparator; + + CitySwap perturbation; + + moILS iterated_local_search (two_opt_initializer, two_opt_next_move_generator, two_opt_incremental_evaluation, + two_opt_selection, continu, comparator, perturbation, full_evaluation) ; + iterated_local_search(solution); + + std :: cout << "[To] " << solution << std :: endl; + + return EXIT_SUCCESS; +} + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/Lesson4/lesson_4.pdf b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/Lesson4/lesson_4.pdf new file mode 100644 index 000000000..2e5e51c55 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/Lesson4/lesson_4.pdf differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/CMakeLists.txt b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/CMakeLists.txt new file mode 100644 index 000000000..7d024ee3a --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/CMakeLists.txt @@ -0,0 +1,11 @@ + + +###################################################################################### +### 1) Where must cmake go now ? +###################################################################################### + +SUBDIRS(tsp) + +###################################################################################### + + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/CMakeLists.txt b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/CMakeLists.txt new file mode 100755 index 000000000..bb9731bf5 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/CMakeLists.txt @@ -0,0 +1,85 @@ + +###################################################################################### +### 0) Copy the "benchs" directory in the build directory to easily run the lessons +###################################################################################### + +ADD_CUSTOM_TARGET(install DEPENDS ${ParadisEO-MO_SOURCE_DIR}/tutorial/examples/tsp/benchs) +ADD_CUSTOM_COMMAND( + TARGET install + POST_BUILD + COMMAND ${CMAKE_COMMAND} + ARGS -E copy_directory + ${ParadisEO-MO_SOURCE_DIR}/tutorial/examples/tsp/benchs + ${ParadisEO-MO_BINARY_DIR}/tutorial/examples/tsp/benchs) + +###################################################################################### + + +###################################################################################### +### 1) Include the sources +###################################################################################### + +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src) +INCLUDE_DIRECTORIES(${ParadisEO-MO_SOURCE_DIR}/src) + +###################################################################################### + + +###################################################################################### +### 2) Define your target(s): just the tsp here +###################################################################################### + +SET(TSP_LIB_OUTPUT_PATH ${TSP_BINARY_DIR}/lib) +SET(LIBRARY_OUTPUT_PATH ${TSP_LIB_OUTPUT_PATH}) + +SET (TSP_SOURCES graph.cpp + route_init.cpp + route_eval.cpp + part_route_eval.cpp + edge_xover.cpp + order_xover.cpp + route_valid.cpp + partial_mapped_xover.cpp + city_swap.cpp + two_opt.cpp + two_opt_init.cpp + two_opt_next.cpp + two_opt_incr_eval.cpp + two_opt_tabu_list.cpp + two_opt_rand.cpp) + +ADD_LIBRARY(tsp STATIC ${TSP_SOURCES}) + +###################################################################################### + + + +###################################################################################### +### 3) Optionnal: define your target(s)'s version: no effect for windows +###################################################################################### + +SET(TSP_VERSION "${GLOBAL_VERSION}") +SET_TARGET_PROPERTIES(tsp PROPERTIES VERSION "${TSP_VERSION}") +###################################################################################### + + + +###################################################################################### +### 4) Windows advanced config - especially for Microsoft Visual Studio 8 +###################################################################################### + + IF(CMAKE_CXX_COMPILER MATCHES cl) + IF(NOT WITH_SHARED_LIBS) + IF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + SET(CMAKE_CXX_FLAGS "/nologo /W3 /Gy") + SET(CMAKE_CXX_FLAGS_DEBUG "/MTd /Z7 /Od") + SET(CMAKE_CXX_FLAGS_RELEASE "/MT /O2") + SET(CMAKE_CXX_FLAGS_MINSIZEREL "/MT /O2") + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MTd /Z7 /Od") + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:CONSOLE") + + ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + ENDIF(NOT WITH_SHARED_LIBS) + ENDIF(CMAKE_CXX_COMPILER MATCHES cl) +###################################################################################### + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/benchs/berlin52.tsp b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/benchs/berlin52.tsp new file mode 100644 index 000000000..6f3579180 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/benchs/berlin52.tsp @@ -0,0 +1,60 @@ +NAME: berlin52 +TYPE: TSP +COMMENT: 52 locations in Berlin (Groetschel) +DIMENSION: 52 +EDGE_WEIGHT_TYPE: EUC_2D +NODE_COORD_SECTION +1 565.0 575.0 +2 25.0 185.0 +3 345.0 750.0 +4 945.0 685.0 +5 845.0 655.0 +6 880.0 660.0 +7 25.0 230.0 +8 525.0 1000.0 +9 580.0 1175.0 +10 650.0 1130.0 +11 1605.0 620.0 +12 1220.0 580.0 +13 1465.0 200.0 +14 1530.0 5.0 +15 845.0 680.0 +16 725.0 370.0 +17 145.0 665.0 +18 415.0 635.0 +19 510.0 875.0 +20 560.0 365.0 +21 300.0 465.0 +22 520.0 585.0 +23 480.0 415.0 +24 835.0 625.0 +25 975.0 580.0 +26 1215.0 245.0 +27 1320.0 315.0 +28 1250.0 400.0 +29 660.0 180.0 +30 410.0 250.0 +31 420.0 555.0 +32 575.0 665.0 +33 1150.0 1160.0 +34 700.0 580.0 +35 685.0 595.0 +36 685.0 610.0 +37 770.0 610.0 +38 795.0 645.0 +39 720.0 635.0 +40 760.0 650.0 +41 475.0 960.0 +42 95.0 260.0 +43 875.0 920.0 +44 700.0 500.0 +45 555.0 815.0 +46 830.0 485.0 +47 1170.0 65.0 +48 830.0 610.0 +49 605.0 625.0 +50 595.0 360.0 +51 1340.0 725.0 +52 1740.0 245.0 +EOF + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/benchs/eil101.tsp b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/benchs/eil101.tsp new file mode 100644 index 000000000..46ff3bcc6 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/benchs/eil101.tsp @@ -0,0 +1,108 @@ +NAME: eil101 +TYPE: TSP +COMMENT: 101-city problem (Christofides/Eilon) +DIMENSION: 101 +EDGE_WEIGHT_TYPE: EUC_2D +NODE_COORD_SECTION +1 41 49 +2 35 17 +3 55 45 +4 55 20 +5 15 30 +6 25 30 +7 20 50 +8 10 43 +9 55 60 +10 30 60 +11 20 65 +12 50 35 +13 30 25 +14 15 10 +15 30 5 +16 10 20 +17 5 30 +18 20 40 +19 15 60 +20 45 65 +21 45 20 +22 45 10 +23 55 5 +24 65 35 +25 65 20 +26 45 30 +27 35 40 +28 41 37 +29 64 42 +30 40 60 +31 31 52 +32 35 69 +33 53 52 +34 65 55 +35 63 65 +36 2 60 +37 20 20 +38 5 5 +39 60 12 +40 40 25 +41 42 7 +42 24 12 +43 23 3 +44 11 14 +45 6 38 +46 2 48 +47 8 56 +48 13 52 +49 6 68 +50 47 47 +51 49 58 +52 27 43 +53 37 31 +54 57 29 +55 63 23 +56 53 12 +57 32 12 +58 36 26 +59 21 24 +60 17 34 +61 12 24 +62 24 58 +63 27 69 +64 15 77 +65 62 77 +66 49 73 +67 67 5 +68 56 39 +69 37 47 +70 37 56 +71 57 68 +72 47 16 +73 44 17 +74 46 13 +75 49 11 +76 49 42 +77 53 43 +78 61 52 +79 57 48 +80 56 37 +81 55 54 +82 15 47 +83 14 37 +84 11 31 +85 16 22 +86 4 18 +87 28 18 +88 26 52 +89 26 35 +90 31 67 +91 15 19 +92 22 22 +93 18 24 +94 26 27 +95 25 24 +96 22 27 +97 25 21 +98 19 21 +99 20 26 +100 18 18 +101 35 35 +EOF diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/benchs/pr2392.tsp b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/benchs/pr2392.tsp new file mode 100644 index 000000000..2cd96eff4 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/benchs/pr2392.tsp @@ -0,0 +1,2399 @@ +NAME: pr2392 +TYPE: TSP +COMMENT: 2392-city problem (Padberg/Rinaldi) +DIMENSION: 2392 +EDGE_WEIGHT_TYPE: EUC_2D +NODE_COORD_SECTION +1 1.63900e+03 2.15600e+03 +2 1.87500e+03 2.92500e+03 +3 2.15000e+03 2.92500e+03 +4 2.42500e+03 2.92500e+03 +5 2.52500e+03 2.67500e+03 +6 2.52500e+03 2.57500e+03 +7 2.52500e+03 2.37500e+03 +8 2.52500e+03 2.27500e+03 +9 2.52500e+03 2.17500e+03 +10 2.78600e+03 2.14800e+03 +11 2.78600e+03 2.24900e+03 +12 2.78600e+03 2.35200e+03 +13 2.78500e+03 2.45100e+03 +14 2.78500e+03 2.55200e+03 +15 2.78700e+03 2.65100e+03 +16 2.92500e+03 2.92500e+03 +17 3.19800e+03 2.92500e+03 +18 3.47500e+03 2.92500e+03 +19 3.72500e+03 2.92500e+03 +20 3.67500e+03 2.67500e+03 +21 3.67500e+03 2.57500e+03 +22 3.67500e+03 2.37500e+03 +23 3.67500e+03 2.27500e+03 +24 3.67500e+03 2.17500e+03 +25 4.18900e+03 2.15600e+03 +26 4.19000e+03 2.25600e+03 +27 4.19000e+03 2.35500e+03 +28 4.18900e+03 2.45600e+03 +29 4.18900e+03 2.55600e+03 +30 4.19000e+03 2.65600e+03 +31 4.27500e+03 2.97500e+03 +32 4.42500e+03 2.92500e+03 +33 4.70000e+03 2.92500e+03 +34 4.97500e+03 2.92500e+03 +35 5.07500e+03 2.67500e+03 +36 5.07500e+03 2.57500e+03 +37 5.07500e+03 2.37500e+03 +38 5.07500e+03 2.27500e+03 +39 5.07500e+03 2.17500e+03 +40 5.33600e+03 2.14800e+03 +41 5.33600e+03 2.24900e+03 +42 5.33600e+03 2.35200e+03 +43 5.33500e+03 2.45100e+03 +44 5.33500e+03 2.55200e+03 +45 5.33700e+03 2.65100e+03 +46 5.47500e+03 2.92500e+03 +47 5.74800e+03 2.92500e+03 +48 6.02500e+03 2.92500e+03 +49 6.27500e+03 2.92500e+03 +50 6.22500e+03 2.67500e+03 +51 6.22500e+03 2.57500e+03 +52 6.22500e+03 2.37500e+03 +53 6.22500e+03 2.27500e+03 +54 6.22500e+03 2.17500e+03 +55 6.73900e+03 2.15600e+03 +56 6.74000e+03 2.25600e+03 +57 6.74000e+03 2.35500e+03 +58 6.73900e+03 2.45600e+03 +59 6.73900e+03 2.55600e+03 +60 6.74000e+03 2.65600e+03 +61 6.82500e+03 2.97500e+03 +62 6.97500e+03 2.92500e+03 +63 7.25000e+03 2.92500e+03 +64 7.52500e+03 2.92500e+03 +65 7.62500e+03 2.67500e+03 +66 7.62500e+03 2.57500e+03 +67 7.62500e+03 2.37500e+03 +68 7.62500e+03 2.27500e+03 +69 7.62500e+03 2.17500e+03 +70 7.88600e+03 2.14800e+03 +71 7.88600e+03 2.24900e+03 +72 7.88600e+03 2.35200e+03 +73 7.88500e+03 2.45100e+03 +74 7.88500e+03 2.55200e+03 +75 7.88700e+03 2.65100e+03 +76 8.02500e+03 2.92500e+03 +77 8.29800e+03 2.92500e+03 +78 8.57500e+03 2.92500e+03 +79 8.82500e+03 2.92500e+03 +80 8.77500e+03 2.67500e+03 +81 8.77500e+03 2.57500e+03 +82 8.77500e+03 2.37500e+03 +83 8.77500e+03 2.27500e+03 +84 8.77500e+03 2.17500e+03 +85 9.28900e+03 2.15600e+03 +86 9.29000e+03 2.25600e+03 +87 9.29000e+03 2.35500e+03 +88 9.28900e+03 2.45600e+03 +89 9.28900e+03 2.55600e+03 +90 9.29000e+03 2.65600e+03 +91 9.37500e+03 2.97500e+03 +92 9.52500e+03 2.92500e+03 +93 9.80000e+03 2.92500e+03 +94 1.00750e+04 2.92500e+03 +95 1.01750e+04 2.67500e+03 +96 1.01750e+04 2.57500e+03 +97 1.01750e+04 2.37500e+03 +98 1.01750e+04 2.27500e+03 +99 1.01750e+04 2.17500e+03 +100 1.04360e+04 2.14800e+03 +101 1.04360e+04 2.24900e+03 +102 1.04360e+04 2.35200e+03 +103 1.04350e+04 2.45100e+03 +104 1.04350e+04 2.55200e+03 +105 1.04370e+04 2.65100e+03 +106 1.05750e+04 2.92500e+03 +107 1.08480e+04 2.92500e+03 +108 1.11250e+04 2.92500e+03 +109 1.13250e+04 2.17500e+03 +110 1.13250e+04 2.27500e+03 +111 1.13250e+04 2.37500e+03 +112 1.13250e+04 2.57500e+03 +113 1.13250e+04 2.67500e+03 +114 1.13750e+04 2.92500e+03 +115 1.13750e+04 3.12500e+03 +116 1.14000e+04 3.22500e+03 +117 1.14000e+04 3.32500e+03 +118 1.14000e+04 3.47500e+03 +119 1.14000e+04 3.62500e+03 +120 1.13000e+04 3.82500e+03 +121 1.11250e+04 3.82500e+03 +122 1.11250e+04 3.92500e+03 +123 1.10250e+04 3.97500e+03 +124 1.09250e+04 3.97500e+03 +125 1.09250e+04 3.87500e+03 +126 1.05500e+04 3.92500e+03 +127 1.05500e+04 3.72500e+03 +128 1.05500e+04 3.32500e+03 +129 1.01000e+04 3.32500e+03 +130 1.01000e+04 3.72500e+03 +131 1.01000e+04 3.92500e+03 +132 9.72500e+03 3.87500e+03 +133 9.72500e+03 3.97500e+03 +134 9.62500e+03 3.97500e+03 +135 9.55000e+03 3.87500e+03 +136 9.42500e+03 3.87500e+03 +137 9.27500e+03 3.90000e+03 +138 9.25000e+03 3.70000e+03 +139 9.25000e+03 3.57500e+03 +140 9.25000e+03 3.47500e+03 +141 9.25000e+03 3.37500e+03 +142 9.25000e+03 3.27500e+03 +143 8.82500e+03 3.12500e+03 +144 8.85000e+03 3.22500e+03 +145 8.85000e+03 3.32500e+03 +146 8.85000e+03 3.47500e+03 +147 8.85000e+03 3.62500e+03 +148 8.75000e+03 3.82500e+03 +149 8.57500e+03 3.82500e+03 +150 8.57500e+03 3.92500e+03 +151 8.47500e+03 3.97500e+03 +152 8.37500e+03 3.87500e+03 +153 8.37500e+03 3.97500e+03 +154 8.40000e+03 4.12500e+03 +155 8.30000e+03 4.17500e+03 +156 8.40000e+03 4.27500e+03 +157 8.50000e+03 4.17500e+03 +158 8.67500e+03 4.32500e+03 +159 8.77500e+03 4.42500e+03 +160 8.82500e+03 4.32500e+03 +161 9.27500e+03 4.27500e+03 +162 9.37500e+03 4.27500e+03 +163 9.32500e+03 4.37500e+03 +164 9.40000e+03 4.45000e+03 +165 9.40000e+03 4.55000e+03 +166 9.32500e+03 4.50000e+03 +167 9.21500e+03 4.56000e+03 +168 9.21500e+03 4.71000e+03 +169 9.37500e+03 4.77500e+03 +170 9.21500e+03 4.86000e+03 +171 9.21500e+03 5.01000e+03 +172 9.21500e+03 5.16000e+03 +173 9.21500e+03 5.31000e+03 +174 9.21500e+03 5.46000e+03 +175 9.21500e+03 5.61000e+03 +176 9.47500e+03 5.67500e+03 +177 9.47500e+03 5.52500e+03 +178 9.47500e+03 5.42500e+03 +179 9.47500e+03 5.27500e+03 +180 9.47500e+03 5.02500e+03 +181 9.57500e+03 5.07500e+03 +182 9.72500e+03 5.07500e+03 +183 9.67500e+03 4.97500e+03 +184 9.57500e+03 4.92500e+03 +185 9.52500e+03 4.77500e+03 +186 9.60000e+03 4.67500e+03 +187 9.62500e+03 4.77500e+03 +188 9.77500e+03 4.77500e+03 +189 9.97500e+03 4.60000e+03 +190 9.87500e+03 4.60000e+03 +191 9.80000e+03 4.52500e+03 +192 9.70000e+03 4.52500e+03 +193 9.70000e+03 4.42500e+03 +194 9.80000e+03 4.42500e+03 +195 9.80000e+03 4.32500e+03 +196 9.70000e+03 4.27500e+03 +197 9.60000e+03 4.17500e+03 +198 9.70000e+03 4.12500e+03 +199 9.80000e+03 4.17500e+03 +200 9.87500e+03 4.27500e+03 +201 9.97500e+03 4.27500e+03 +202 1.00750e+04 4.17500e+03 +203 1.02750e+04 4.17500e+03 +204 1.03750e+04 4.17500e+03 +205 1.05750e+04 4.17500e+03 +206 1.06750e+04 4.27500e+03 +207 1.07750e+04 4.27500e+03 +208 1.08500e+04 4.32500e+03 +209 1.08500e+04 4.42500e+03 +210 1.08500e+04 4.52500e+03 +211 1.07750e+04 4.57500e+03 +212 1.06750e+04 4.57500e+03 +213 1.08750e+04 4.77500e+03 +214 1.10250e+04 4.77500e+03 +215 1.11750e+04 4.72500e+03 +216 1.10500e+04 4.67500e+03 +217 1.09500e+04 4.50000e+03 +218 1.09500e+04 4.40000e+03 +219 1.09500e+04 4.27500e+03 +220 1.08500e+04 4.17500e+03 +221 1.09500e+04 4.12500e+03 +222 1.10500e+04 4.17500e+03 +223 1.12250e+04 4.32500e+03 +224 1.13750e+04 4.32500e+03 +225 1.13250e+04 4.42500e+03 +226 1.13250e+04 4.57500e+03 +227 1.13250e+04 4.67500e+03 +228 1.13250e+04 4.77500e+03 +229 1.13250e+04 4.92500e+03 +230 1.14500e+04 4.92500e+03 +231 1.14500e+04 5.07500e+03 +232 1.14220e+04 5.20400e+03 +233 1.14250e+04 5.32500e+03 +234 1.13250e+04 5.27500e+03 +235 1.13250e+04 5.37500e+03 +236 1.11750e+04 5.37500e+03 +237 1.11750e+04 5.27500e+03 +238 1.11250e+04 5.17500e+03 +239 1.11000e+04 5.02500e+03 +240 1.09750e+04 4.97500e+03 +241 1.09250e+04 5.07500e+03 +242 1.09500e+04 5.17500e+03 +243 1.09000e+04 5.27500e+03 +244 1.09000e+04 5.37500e+03 +245 1.08000e+04 5.17500e+03 +246 1.05250e+04 5.17500e+03 +247 1.03250e+04 5.17500e+03 +248 1.03250e+04 5.02500e+03 +249 1.04250e+04 5.07500e+03 +250 1.04750e+04 4.97500e+03 +251 1.03250e+04 4.87500e+03 +252 1.01750e+04 4.97500e+03 +253 1.02250e+04 5.07500e+03 +254 1.01250e+04 5.17500e+03 +255 9.97500e+03 5.17500e+03 +256 1.00500e+04 5.25000e+03 +257 1.00500e+04 5.35000e+03 +258 1.00250e+04 5.45000e+03 +259 1.01750e+04 5.45000e+03 +260 1.03250e+04 5.45000e+03 +261 1.04750e+04 5.45000e+03 +262 1.05750e+04 5.45000e+03 +263 1.06750e+04 5.45000e+03 +264 1.05250e+04 6.02500e+03 +265 1.05250e+04 6.12500e+03 +266 1.06750e+04 6.12500e+03 +267 1.08250e+04 6.02500e+03 +268 1.10250e+04 6.05000e+03 +269 1.12240e+04 5.90800e+03 +270 1.14000e+04 5.97500e+03 +271 1.14000e+04 6.37500e+03 +272 1.14000e+04 6.57500e+03 +273 1.11750e+04 6.57500e+03 +274 1.10250e+04 6.45000e+03 +275 1.09750e+04 6.67500e+03 +276 1.10750e+04 6.77500e+03 +277 1.09750e+04 6.87500e+03 +278 1.11750e+04 6.97500e+03 +279 1.13750e+04 6.97500e+03 +280 1.13250e+04 7.07500e+03 +281 1.14000e+04 7.15000e+03 +282 1.11250e+04 7.15000e+03 +283 1.09750e+04 7.15000e+03 +284 1.08750e+04 7.32500e+03 +285 1.09250e+04 7.42500e+03 +286 1.10750e+04 7.42500e+03 +287 1.11750e+04 7.47500e+03 +288 1.10750e+04 7.57500e+03 +289 1.11750e+04 7.62500e+03 +290 1.11750e+04 7.72500e+03 +291 1.10250e+04 7.72500e+03 +292 1.10250e+04 7.82500e+03 +293 1.11750e+04 7.82500e+03 +294 1.13250e+04 7.87500e+03 +295 1.14250e+04 7.92500e+03 +296 1.14250e+04 8.07500e+03 +297 1.13250e+04 8.07500e+03 +298 1.12750e+04 8.17500e+03 +299 1.14250e+04 8.22500e+03 +300 1.14250e+04 8.37500e+03 +301 1.12750e+04 8.32500e+03 +302 1.11750e+04 8.32500e+03 +303 1.10750e+04 8.22500e+03 +304 1.09750e+04 8.22500e+03 +305 1.09250e+04 7.97500e+03 +306 1.07750e+04 7.82500e+03 +307 1.08250e+04 7.60000e+03 +308 1.07250e+04 7.57500e+03 +309 1.07750e+04 7.42500e+03 +310 1.06750e+04 7.42500e+03 +311 1.05250e+04 7.42500e+03 +312 1.05250e+04 7.57500e+03 +313 1.04500e+04 7.75000e+03 +314 1.03000e+04 7.75000e+03 +315 1.04250e+04 7.87500e+03 +316 1.05250e+04 7.92500e+03 +317 1.05750e+04 7.82500e+03 +318 1.06250e+04 7.97500e+03 +319 1.07250e+04 7.97500e+03 +320 1.07250e+04 8.07500e+03 +321 1.06250e+04 8.12500e+03 +322 1.05250e+04 8.07500e+03 +323 1.04250e+04 8.02500e+03 +324 1.04250e+04 8.12500e+03 +325 1.02500e+04 8.22500e+03 +326 1.01500e+04 8.22500e+03 +327 1.02250e+04 8.12500e+03 +328 1.02750e+04 7.97500e+03 +329 1.01250e+04 7.97500e+03 +330 1.00000e+04 7.87500e+03 +331 1.00000e+04 7.77500e+03 +332 9.82500e+03 7.82500e+03 +333 9.62500e+03 7.72500e+03 +334 9.47500e+03 7.72500e+03 +335 9.42500e+03 7.62500e+03 +336 9.57500e+03 7.62500e+03 +337 9.62500e+03 7.47500e+03 +338 9.72500e+03 7.57500e+03 +339 9.82500e+03 7.47500e+03 +340 1.00250e+04 7.52500e+03 +341 9.97500e+03 7.42500e+03 +342 9.92500e+03 7.27500e+03 +343 9.82500e+03 7.07500e+03 +344 9.62500e+03 7.07500e+03 +345 9.72500e+03 6.97500e+03 +346 9.87500e+03 6.77500e+03 +347 9.72500e+03 6.77500e+03 +348 9.57500e+03 6.82500e+03 +349 9.57500e+03 6.67500e+03 +350 9.72500e+03 6.42500e+03 +351 9.62500e+03 6.20000e+03 +352 9.72500e+03 6.02500e+03 +353 9.62500e+03 6.00000e+03 +354 9.22500e+03 6.37500e+03 +355 9.22500e+03 6.52500e+03 +356 9.37500e+03 6.52500e+03 +357 9.37500e+03 6.67500e+03 +358 9.22500e+03 6.67500e+03 +359 9.22500e+03 6.87500e+03 +360 9.22500e+03 7.07500e+03 +361 9.22600e+03 7.25900e+03 +362 9.22500e+03 7.26000e+03 +363 9.22600e+03 7.40900e+03 +364 9.22500e+03 7.41000e+03 +365 9.22500e+03 7.56000e+03 +366 9.22600e+03 7.56000e+03 +367 9.22500e+03 7.71000e+03 +368 9.22500e+03 7.71100e+03 +369 9.32500e+03 7.82500e+03 +370 9.22500e+03 7.87500e+03 +371 9.22500e+03 7.97500e+03 +372 9.22500e+03 8.07500e+03 +373 9.22500e+03 8.17500e+03 +374 9.22500e+03 8.27500e+03 +375 9.22500e+03 8.37500e+03 +376 9.22500e+03 8.47500e+03 +377 9.27500e+03 8.82500e+03 +378 9.47500e+03 8.82500e+03 +379 9.57800e+03 8.82000e+03 +380 9.84700e+03 8.70300e+03 +381 9.87500e+03 8.82500e+03 +382 1.00250e+04 8.72500e+03 +383 1.00750e+04 8.82500e+03 +384 1.01750e+04 8.72500e+03 +385 1.01000e+04 8.57500e+03 +386 1.02500e+04 8.37500e+03 +387 1.02500e+04 8.47500e+03 +388 1.02500e+04 8.62500e+03 +389 1.04750e+04 8.77500e+03 +390 1.05750e+04 8.77500e+03 +391 1.06750e+04 8.77500e+03 +392 1.07750e+04 8.77500e+03 +393 1.09250e+04 8.77500e+03 +394 1.08750e+04 8.62500e+03 +395 1.08750e+04 8.52500e+03 +396 1.09750e+04 8.57500e+03 +397 1.11750e+04 8.47500e+03 +398 1.12750e+04 8.42500e+03 +399 1.13500e+04 8.57500e+03 +400 1.14500e+04 8.67500e+03 +401 1.13500e+04 8.77500e+03 +402 1.13250e+04 9.32500e+03 +403 1.13250e+04 9.42500e+03 +404 1.13250e+04 9.52500e+03 +405 1.13250e+04 9.72500e+03 +406 1.13250e+04 9.82500e+03 +407 1.11250e+04 1.00750e+04 +408 1.13750e+04 1.00750e+04 +409 1.13750e+04 1.02750e+04 +410 1.14000e+04 1.03750e+04 +411 1.14000e+04 1.04750e+04 +412 1.14000e+04 1.06250e+04 +413 1.14000e+04 1.07750e+04 +414 1.13000e+04 1.09750e+04 +415 1.11250e+04 1.09750e+04 +416 1.11250e+04 1.10750e+04 +417 1.10250e+04 1.11250e+04 +418 1.09250e+04 1.11250e+04 +419 1.09250e+04 1.10250e+04 +420 1.05500e+04 1.08750e+04 +421 1.05500e+04 1.10750e+04 +422 1.02750e+04 1.13250e+04 +423 1.03750e+04 1.13250e+04 +424 1.05750e+04 1.13250e+04 +425 1.06750e+04 1.14250e+04 +426 1.07750e+04 1.14250e+04 +427 1.08500e+04 1.14750e+04 +428 1.08500e+04 1.15750e+04 +429 1.08500e+04 1.16750e+04 +430 1.07750e+04 1.17250e+04 +431 1.06750e+04 1.17250e+04 +432 1.08750e+04 1.19250e+04 +433 1.10250e+04 1.19250e+04 +434 1.11750e+04 1.18750e+04 +435 1.10500e+04 1.18250e+04 +436 1.09500e+04 1.16500e+04 +437 1.09500e+04 1.15500e+04 +438 1.09500e+04 1.14250e+04 +439 1.08500e+04 1.13250e+04 +440 1.09500e+04 1.12750e+04 +441 1.10500e+04 1.13250e+04 +442 1.12250e+04 1.14750e+04 +443 1.13750e+04 1.14750e+04 +444 1.13250e+04 1.15750e+04 +445 1.13250e+04 1.17250e+04 +446 1.13250e+04 1.18250e+04 +447 1.13250e+04 1.19250e+04 +448 1.13250e+04 1.20750e+04 +449 1.14500e+04 1.20750e+04 +450 1.14500e+04 1.22250e+04 +451 1.14220e+04 1.23540e+04 +452 1.14250e+04 1.24750e+04 +453 1.13250e+04 1.24250e+04 +454 1.13250e+04 1.25250e+04 +455 1.11750e+04 1.25250e+04 +456 1.11750e+04 1.24250e+04 +457 1.11250e+04 1.23250e+04 +458 1.11000e+04 1.21750e+04 +459 1.09750e+04 1.21250e+04 +460 1.09250e+04 1.22250e+04 +461 1.09500e+04 1.23250e+04 +462 1.09000e+04 1.24250e+04 +463 1.09000e+04 1.25250e+04 +464 1.08000e+04 1.23250e+04 +465 1.05250e+04 1.23250e+04 +466 1.04250e+04 1.22250e+04 +467 1.04750e+04 1.21250e+04 +468 1.03250e+04 1.20250e+04 +469 1.01750e+04 1.21250e+04 +470 1.02250e+04 1.22250e+04 +471 1.03250e+04 1.21750e+04 +472 1.03250e+04 1.23250e+04 +473 1.01250e+04 1.23250e+04 +474 9.97500e+03 1.23250e+04 +475 1.00500e+04 1.24000e+04 +476 1.00500e+04 1.25000e+04 +477 1.00250e+04 1.26000e+04 +478 1.01750e+04 1.26000e+04 +479 1.03250e+04 1.26000e+04 +480 1.04750e+04 1.26000e+04 +481 1.05750e+04 1.26000e+04 +482 1.06750e+04 1.26000e+04 +483 1.05250e+04 1.31750e+04 +484 1.05250e+04 1.32750e+04 +485 1.06750e+04 1.32750e+04 +486 1.08250e+04 1.31750e+04 +487 1.10250e+04 1.32000e+04 +488 1.12240e+04 1.30580e+04 +489 1.14000e+04 1.31250e+04 +490 1.14000e+04 1.35250e+04 +491 1.14000e+04 1.37250e+04 +492 1.11750e+04 1.37250e+04 +493 1.10250e+04 1.36000e+04 +494 1.09750e+04 1.38250e+04 +495 1.10750e+04 1.39250e+04 +496 1.09750e+04 1.40250e+04 +497 1.11750e+04 1.41250e+04 +498 1.13750e+04 1.41250e+04 +499 1.13250e+04 1.42250e+04 +500 1.14000e+04 1.43000e+04 +501 1.11250e+04 1.43000e+04 +502 1.09750e+04 1.43000e+04 +503 1.08750e+04 1.44750e+04 +504 1.09250e+04 1.45750e+04 +505 1.08250e+04 1.47500e+04 +506 1.07250e+04 1.47250e+04 +507 1.07750e+04 1.45750e+04 +508 1.06750e+04 1.45750e+04 +509 1.05250e+04 1.45750e+04 +510 1.05250e+04 1.47250e+04 +511 1.04500e+04 1.49000e+04 +512 1.03000e+04 1.49000e+04 +513 1.04250e+04 1.50250e+04 +514 1.04250e+04 1.51750e+04 +515 1.04250e+04 1.52750e+04 +516 1.05250e+04 1.52250e+04 +517 1.06250e+04 1.52750e+04 +518 1.07250e+04 1.52250e+04 +519 1.07250e+04 1.51250e+04 +520 1.06250e+04 1.51250e+04 +521 1.05250e+04 1.50750e+04 +522 1.05750e+04 1.49750e+04 +523 1.07750e+04 1.49750e+04 +524 1.09250e+04 1.51250e+04 +525 1.10250e+04 1.49750e+04 +526 1.10250e+04 1.48750e+04 +527 1.10750e+04 1.47250e+04 +528 1.10750e+04 1.45750e+04 +529 1.11750e+04 1.46250e+04 +530 1.11750e+04 1.47750e+04 +531 1.11750e+04 1.48750e+04 +532 1.11750e+04 1.49750e+04 +533 1.13250e+04 1.50250e+04 +534 1.14250e+04 1.50750e+04 +535 1.14250e+04 1.52250e+04 +536 1.13250e+04 1.52250e+04 +537 1.12750e+04 1.53250e+04 +538 1.14250e+04 1.53750e+04 +539 1.14250e+04 1.55250e+04 +540 1.13500e+04 1.57250e+04 +541 1.14500e+04 1.58250e+04 +542 1.13500e+04 1.59250e+04 +543 1.11750e+04 1.56250e+04 +544 1.12750e+04 1.55750e+04 +545 1.12750e+04 1.54750e+04 +546 1.11750e+04 1.54750e+04 +547 1.10750e+04 1.53750e+04 +548 1.09750e+04 1.53750e+04 +549 1.08750e+04 1.56750e+04 +550 1.09750e+04 1.57250e+04 +551 1.08750e+04 1.57750e+04 +552 1.09250e+04 1.59250e+04 +553 1.07750e+04 1.59250e+04 +554 1.06750e+04 1.59250e+04 +555 1.05750e+04 1.59250e+04 +556 1.04750e+04 1.59250e+04 +557 1.02500e+04 1.57750e+04 +558 1.01750e+04 1.58750e+04 +559 1.00750e+04 1.59750e+04 +560 9.87500e+03 1.59750e+04 +561 9.84700e+03 1.58530e+04 +562 1.00250e+04 1.58750e+04 +563 1.01000e+04 1.57250e+04 +564 1.02500e+04 1.56250e+04 +565 1.02500e+04 1.55250e+04 +566 1.02500e+04 1.53750e+04 +567 1.01500e+04 1.53750e+04 +568 1.02250e+04 1.52750e+04 +569 1.02750e+04 1.51250e+04 +570 1.01250e+04 1.51250e+04 +571 1.00000e+04 1.50250e+04 +572 1.00000e+04 1.49250e+04 +573 9.82500e+03 1.49750e+04 +574 9.62500e+03 1.48750e+04 +575 9.47500e+03 1.48750e+04 +576 9.42500e+03 1.47750e+04 +577 9.57500e+03 1.47750e+04 +578 9.62500e+03 1.46250e+04 +579 9.72500e+03 1.47250e+04 +580 9.82500e+03 1.46250e+04 +581 1.00250e+04 1.46750e+04 +582 9.97500e+03 1.45750e+04 +583 9.92500e+03 1.44250e+04 +584 9.82500e+03 1.42250e+04 +585 9.62500e+03 1.42250e+04 +586 9.72500e+03 1.41250e+04 +587 9.87500e+03 1.39250e+04 +588 9.72500e+03 1.39250e+04 +589 9.57500e+03 1.39750e+04 +590 9.57500e+03 1.38250e+04 +591 9.72500e+03 1.35750e+04 +592 9.62500e+03 1.33500e+04 +593 9.72500e+03 1.31750e+04 +594 9.62500e+03 1.31500e+04 +595 9.22500e+03 1.35250e+04 +596 9.22500e+03 1.36750e+04 +597 9.37500e+03 1.36750e+04 +598 9.37500e+03 1.38250e+04 +599 9.22500e+03 1.38250e+04 +600 9.22500e+03 1.40250e+04 +601 9.22500e+03 1.42250e+04 +602 9.22600e+03 1.44090e+04 +603 9.22500e+03 1.44100e+04 +604 9.22600e+03 1.45590e+04 +605 9.22500e+03 1.45600e+04 +606 9.22500e+03 1.47100e+04 +607 9.22600e+03 1.47100e+04 +608 9.22500e+03 1.48600e+04 +609 9.22500e+03 1.48610e+04 +610 9.32500e+03 1.49750e+04 +611 9.22500e+03 1.50250e+04 +612 9.22500e+03 1.51250e+04 +613 9.22500e+03 1.52250e+04 +614 9.22500e+03 1.53250e+04 +615 9.22500e+03 1.54250e+04 +616 9.22500e+03 1.55250e+04 +617 9.22500e+03 1.56250e+04 +618 9.57800e+03 1.59700e+04 +619 9.47500e+03 1.59750e+04 +620 9.27500e+03 1.59750e+04 +621 8.90000e+03 1.58250e+04 +622 8.80000e+03 1.59250e+04 +623 8.80000e+03 1.57250e+04 +624 8.72500e+03 1.55750e+04 +625 8.62500e+03 1.56250e+04 +626 8.42500e+03 1.57250e+04 +627 8.32500e+03 1.56750e+04 +628 8.32500e+03 1.57750e+04 +629 8.37500e+03 1.59250e+04 +630 8.22500e+03 1.59250e+04 +631 8.12500e+03 1.59250e+04 +632 8.02500e+03 1.59250e+04 +633 7.92500e+03 1.59250e+04 +634 7.70000e+03 1.57750e+04 +635 7.70000e+03 1.56250e+04 +636 7.70000e+03 1.55250e+04 +637 7.55000e+03 1.57250e+04 +638 7.62500e+03 1.58750e+04 +639 7.52500e+03 1.59750e+04 +640 7.47500e+03 1.58750e+04 +641 7.32500e+03 1.59750e+04 +642 7.29700e+03 1.58530e+04 +643 7.02800e+03 1.59700e+04 +644 6.92500e+03 1.59750e+04 +645 6.72500e+03 1.59750e+04 +646 6.67500e+03 1.56250e+04 +647 6.67500e+03 1.55250e+04 +648 6.67500e+03 1.54250e+04 +649 6.67500e+03 1.53250e+04 +650 6.67500e+03 1.52250e+04 +651 6.67500e+03 1.51250e+04 +652 6.67500e+03 1.50250e+04 +653 6.77500e+03 1.49750e+04 +654 6.67500e+03 1.48610e+04 +655 6.67500e+03 1.48600e+04 +656 6.67600e+03 1.47100e+04 +657 6.67500e+03 1.47100e+04 +658 6.67500e+03 1.45600e+04 +659 6.67600e+03 1.45590e+04 +660 6.67500e+03 1.44100e+04 +661 6.67600e+03 1.44090e+04 +662 6.67500e+03 1.42250e+04 +663 6.67500e+03 1.40250e+04 +664 6.67500e+03 1.38250e+04 +665 6.82500e+03 1.38250e+04 +666 6.82500e+03 1.36750e+04 +667 6.67500e+03 1.36750e+04 +668 6.67500e+03 1.35250e+04 +669 7.07500e+03 1.31500e+04 +670 7.17500e+03 1.31750e+04 +671 7.07500e+03 1.33500e+04 +672 7.17500e+03 1.35750e+04 +673 7.02500e+03 1.38250e+04 +674 7.02500e+03 1.39750e+04 +675 7.17500e+03 1.39250e+04 +676 7.32500e+03 1.39250e+04 +677 7.17500e+03 1.41250e+04 +678 7.07500e+03 1.42250e+04 +679 7.27500e+03 1.42250e+04 +680 7.37500e+03 1.44250e+04 +681 7.42500e+03 1.45750e+04 +682 7.47500e+03 1.46750e+04 +683 7.27500e+03 1.46250e+04 +684 7.17500e+03 1.47250e+04 +685 7.07500e+03 1.46250e+04 +686 7.02500e+03 1.47750e+04 +687 6.87500e+03 1.47750e+04 +688 6.92500e+03 1.48750e+04 +689 7.07500e+03 1.48750e+04 +690 7.27500e+03 1.49750e+04 +691 7.45000e+03 1.49250e+04 +692 7.45000e+03 1.50250e+04 +693 7.57500e+03 1.51250e+04 +694 7.72500e+03 1.51250e+04 +695 7.67500e+03 1.52750e+04 +696 7.60000e+03 1.53750e+04 +697 7.70000e+03 1.53750e+04 +698 7.87500e+03 1.52750e+04 +699 7.87500e+03 1.51750e+04 +700 7.97500e+03 1.52250e+04 +701 8.07500e+03 1.52750e+04 +702 8.17500e+03 1.52250e+04 +703 8.17500e+03 1.51250e+04 +704 8.07500e+03 1.51250e+04 +705 8.02500e+03 1.49750e+04 +706 7.97500e+03 1.50750e+04 +707 7.87500e+03 1.50250e+04 +708 7.75000e+03 1.49000e+04 +709 7.90000e+03 1.49000e+04 +710 7.97500e+03 1.47250e+04 +711 7.97500e+03 1.45750e+04 +712 8.12500e+03 1.45750e+04 +713 8.22500e+03 1.45750e+04 +714 8.17500e+03 1.47250e+04 +715 8.27500e+03 1.47500e+04 +716 8.22500e+03 1.49750e+04 +717 8.37500e+03 1.51250e+04 +718 8.42500e+03 1.53750e+04 +719 8.52500e+03 1.53750e+04 +720 8.62500e+03 1.54750e+04 +721 8.72500e+03 1.54750e+04 +722 8.87500e+03 1.55250e+04 +723 8.87500e+03 1.53750e+04 +724 8.72500e+03 1.53250e+04 +725 8.77500e+03 1.52250e+04 +726 8.87500e+03 1.52250e+04 +727 8.87500e+03 1.50750e+04 +728 8.77500e+03 1.50250e+04 +729 8.62500e+03 1.49750e+04 +730 8.47500e+03 1.49750e+04 +731 8.47500e+03 1.48750e+04 +732 8.62500e+03 1.48750e+04 +733 8.62500e+03 1.47750e+04 +734 8.52500e+03 1.47250e+04 +735 8.62500e+03 1.46250e+04 +736 8.52500e+03 1.45750e+04 +737 8.37500e+03 1.45750e+04 +738 8.32500e+03 1.44750e+04 +739 8.42500e+03 1.43000e+04 +740 8.57500e+03 1.43000e+04 +741 8.85000e+03 1.43000e+04 +742 8.77500e+03 1.42250e+04 +743 8.82500e+03 1.41250e+04 +744 8.62500e+03 1.41250e+04 +745 8.42500e+03 1.40250e+04 +746 8.52500e+03 1.39250e+04 +747 8.42500e+03 1.38250e+04 +748 8.47500e+03 1.36000e+04 +749 8.62500e+03 1.37250e+04 +750 8.85000e+03 1.37250e+04 +751 8.85000e+03 1.35250e+04 +752 8.85000e+03 1.31250e+04 +753 8.67400e+03 1.30580e+04 +754 8.47500e+03 1.32000e+04 +755 8.27500e+03 1.31750e+04 +756 8.12500e+03 1.32750e+04 +757 7.97500e+03 1.32750e+04 +758 7.97500e+03 1.31750e+04 +759 8.12500e+03 1.26000e+04 +760 8.02500e+03 1.26000e+04 +761 7.92500e+03 1.26000e+04 +762 7.77500e+03 1.26000e+04 +763 7.62500e+03 1.26000e+04 +764 7.47500e+03 1.26000e+04 +765 7.50000e+03 1.25000e+04 +766 7.50000e+03 1.24000e+04 +767 7.42500e+03 1.23250e+04 +768 7.57500e+03 1.23250e+04 +769 7.67500e+03 1.22250e+04 +770 7.62500e+03 1.21250e+04 +771 7.77500e+03 1.20250e+04 +772 7.92500e+03 1.21250e+04 +773 7.87500e+03 1.22250e+04 +774 7.77500e+03 1.21750e+04 +775 7.77500e+03 1.23250e+04 +776 7.97500e+03 1.23250e+04 +777 8.25000e+03 1.23250e+04 +778 8.35000e+03 1.25250e+04 +779 8.35000e+03 1.24250e+04 +780 8.40000e+03 1.23250e+04 +781 8.37500e+03 1.22250e+04 +782 8.42500e+03 1.21250e+04 +783 8.55000e+03 1.21750e+04 +784 8.57500e+03 1.23250e+04 +785 8.62500e+03 1.24250e+04 +786 8.62500e+03 1.25250e+04 +787 8.77500e+03 1.25250e+04 +788 8.77500e+03 1.24250e+04 +789 8.87500e+03 1.24750e+04 +790 8.87200e+03 1.23540e+04 +791 8.90000e+03 1.22250e+04 +792 8.90000e+03 1.20750e+04 +793 8.77500e+03 1.20750e+04 +794 8.77500e+03 1.19250e+04 +795 8.77500e+03 1.18250e+04 +796 8.77500e+03 1.17250e+04 +797 8.77500e+03 1.15750e+04 +798 8.82500e+03 1.14750e+04 +799 8.67500e+03 1.14750e+04 +800 8.50000e+03 1.13250e+04 +801 8.40000e+03 1.12750e+04 +802 8.30000e+03 1.13250e+04 +803 8.40000e+03 1.14250e+04 +804 8.40000e+03 1.15500e+04 +805 8.40000e+03 1.16500e+04 +806 8.50000e+03 1.18250e+04 +807 8.62500e+03 1.18750e+04 +808 8.47500e+03 1.19250e+04 +809 8.32500e+03 1.19250e+04 +810 8.12500e+03 1.17250e+04 +811 8.22500e+03 1.17250e+04 +812 8.30000e+03 1.16750e+04 +813 8.30000e+03 1.15750e+04 +814 8.30000e+03 1.14750e+04 +815 8.22500e+03 1.14250e+04 +816 8.12500e+03 1.14250e+04 +817 8.02500e+03 1.13250e+04 +818 7.82500e+03 1.13250e+04 +819 7.72500e+03 1.13250e+04 +820 7.52500e+03 1.13250e+04 +821 7.42500e+03 1.14250e+04 +822 7.32500e+03 1.14250e+04 +823 7.25000e+03 1.13250e+04 +824 7.15000e+03 1.12750e+04 +825 7.05000e+03 1.13250e+04 +826 7.15000e+03 1.14250e+04 +827 7.25000e+03 1.14750e+04 +828 7.25000e+03 1.15750e+04 +829 7.15000e+03 1.15750e+04 +830 7.15000e+03 1.16750e+04 +831 7.25000e+03 1.16750e+04 +832 7.32500e+03 1.17500e+04 +833 7.42500e+03 1.17500e+04 +834 7.22500e+03 1.19250e+04 +835 7.07500e+03 1.19250e+04 +836 7.05000e+03 1.18250e+04 +837 6.97500e+03 1.19250e+04 +838 7.02500e+03 1.20750e+04 +839 7.12500e+03 1.21250e+04 +840 7.17500e+03 1.22250e+04 +841 7.02500e+03 1.22250e+04 +842 6.92500e+03 1.21750e+04 +843 6.92500e+03 1.24250e+04 +844 6.92500e+03 1.25750e+04 +845 6.92500e+03 1.26750e+04 +846 6.92500e+03 1.28250e+04 +847 6.66500e+03 1.27600e+04 +848 6.66500e+03 1.26100e+04 +849 6.66500e+03 1.24600e+04 +850 6.66500e+03 1.23100e+04 +851 6.66500e+03 1.21600e+04 +852 6.66500e+03 1.20100e+04 +853 6.82500e+03 1.19250e+04 +854 6.66500e+03 1.18600e+04 +855 6.66500e+03 1.17100e+04 +856 6.77500e+03 1.16500e+04 +857 6.85000e+03 1.17000e+04 +858 6.85000e+03 1.16000e+04 +859 6.77500e+03 1.15250e+04 +860 6.82500e+03 1.14250e+04 +861 6.72500e+03 1.14250e+04 +862 6.27500e+03 1.14750e+04 +863 6.22500e+03 1.15750e+04 +864 6.12500e+03 1.14750e+04 +865 5.95000e+03 1.13250e+04 +866 5.85000e+03 1.14250e+04 +867 5.75000e+03 1.13250e+04 +868 5.85000e+03 1.12750e+04 +869 5.82500e+03 1.11250e+04 +870 5.82500e+03 1.10250e+04 +871 5.92500e+03 1.11250e+04 +872 6.02500e+03 1.10750e+04 +873 6.02500e+03 1.09750e+04 +874 6.20000e+03 1.09750e+04 +875 6.30000e+03 1.07750e+04 +876 6.30000e+03 1.06250e+04 +877 6.30000e+03 1.04750e+04 +878 6.30000e+03 1.03750e+04 +879 6.27500e+03 1.02750e+04 +880 6.70000e+03 1.04250e+04 +881 6.70000e+03 1.05250e+04 +882 6.70000e+03 1.06250e+04 +883 6.70000e+03 1.07250e+04 +884 6.70000e+03 1.08500e+04 +885 6.72500e+03 1.10500e+04 +886 6.87500e+03 1.10250e+04 +887 7.00000e+03 1.10250e+04 +888 7.07500e+03 1.11250e+04 +889 7.17500e+03 1.11250e+04 +890 7.17500e+03 1.10250e+04 +891 7.55000e+03 1.10750e+04 +892 7.55000e+03 1.08750e+04 +893 7.55000e+03 1.04750e+04 +894 8.00000e+03 1.04750e+04 +895 8.00000e+03 1.08750e+04 +896 8.00000e+03 1.10750e+04 +897 8.37500e+03 1.10250e+04 +898 8.37500e+03 1.11250e+04 +899 8.47500e+03 1.11250e+04 +900 8.57500e+03 1.10750e+04 +901 8.57500e+03 1.09750e+04 +902 8.75000e+03 1.09750e+04 +903 8.85000e+03 1.07750e+04 +904 8.85000e+03 1.06250e+04 +905 8.85000e+03 1.04750e+04 +906 8.85000e+03 1.03750e+04 +907 8.82500e+03 1.02750e+04 +908 9.25000e+03 1.04250e+04 +909 9.25000e+03 1.05250e+04 +910 9.25000e+03 1.06250e+04 +911 9.25000e+03 1.07250e+04 +912 9.25000e+03 1.08500e+04 +913 9.27500e+03 1.10500e+04 +914 9.42500e+03 1.10250e+04 +915 9.55000e+03 1.10250e+04 +916 9.62500e+03 1.11250e+04 +917 9.72500e+03 1.10250e+04 +918 9.72500e+03 1.11250e+04 +919 9.70000e+03 1.12750e+04 +920 9.80000e+03 1.13250e+04 +921 9.70000e+03 1.14250e+04 +922 9.60000e+03 1.13250e+04 +923 9.37500e+03 1.14250e+04 +924 9.27500e+03 1.14250e+04 +925 9.32500e+03 1.15250e+04 +926 9.40000e+03 1.16000e+04 +927 9.40000e+03 1.17000e+04 +928 9.32500e+03 1.16500e+04 +929 9.21500e+03 1.17100e+04 +930 9.21500e+03 1.18600e+04 +931 9.37500e+03 1.19250e+04 +932 9.21500e+03 1.20100e+04 +933 9.21500e+03 1.21600e+04 +934 9.21500e+03 1.23100e+04 +935 9.21500e+03 1.24600e+04 +936 9.21500e+03 1.26100e+04 +937 9.21500e+03 1.27600e+04 +938 9.47500e+03 1.28250e+04 +939 9.47500e+03 1.26750e+04 +940 9.47500e+03 1.25750e+04 +941 9.47500e+03 1.24250e+04 +942 9.47500e+03 1.21750e+04 +943 9.57500e+03 1.22250e+04 +944 9.72500e+03 1.22250e+04 +945 9.67500e+03 1.21250e+04 +946 9.57500e+03 1.20750e+04 +947 9.52500e+03 1.19250e+04 +948 9.60000e+03 1.18250e+04 +949 9.62500e+03 1.19250e+04 +950 9.77500e+03 1.19250e+04 +951 9.97500e+03 1.17500e+04 +952 9.87500e+03 1.17500e+04 +953 9.80000e+03 1.16750e+04 +954 9.70000e+03 1.16750e+04 +955 9.70000e+03 1.15750e+04 +956 9.80000e+03 1.15750e+04 +957 9.80000e+03 1.14750e+04 +958 9.87500e+03 1.14250e+04 +959 9.97500e+03 1.14250e+04 +960 1.00750e+04 1.13250e+04 +961 1.01000e+04 1.10750e+04 +962 1.01000e+04 1.08750e+04 +963 1.01000e+04 1.04750e+04 +964 1.05500e+04 1.04750e+04 +965 1.08480e+04 1.00750e+04 +966 1.05750e+04 1.00750e+04 +967 1.04370e+04 9.80100e+03 +968 1.04350e+04 9.70200e+03 +969 1.04350e+04 9.60100e+03 +970 1.04360e+04 9.50200e+03 +971 1.04360e+04 9.39900e+03 +972 1.04360e+04 9.29800e+03 +973 1.01750e+04 9.32500e+03 +974 1.01750e+04 9.42500e+03 +975 1.01750e+04 9.52500e+03 +976 1.01750e+04 9.72500e+03 +977 1.01750e+04 9.82500e+03 +978 1.00750e+04 1.00750e+04 +979 9.80000e+03 1.00750e+04 +980 9.52500e+03 1.00750e+04 +981 9.37500e+03 1.01250e+04 +982 9.29000e+03 9.80600e+03 +983 9.28900e+03 9.70600e+03 +984 9.28900e+03 9.60600e+03 +985 9.29000e+03 9.50500e+03 +986 9.29000e+03 9.40600e+03 +987 9.28900e+03 9.30600e+03 +988 8.77500e+03 9.32500e+03 +989 8.77500e+03 9.42500e+03 +990 8.77500e+03 9.52500e+03 +991 8.77500e+03 9.72500e+03 +992 8.77500e+03 9.82500e+03 +993 8.82500e+03 1.00750e+04 +994 8.57500e+03 1.00750e+04 +995 8.29800e+03 1.00750e+04 +996 8.02500e+03 1.00750e+04 +997 7.88700e+03 9.80100e+03 +998 7.88500e+03 9.70200e+03 +999 7.88500e+03 9.60100e+03 +1000 7.88600e+03 9.50200e+03 +1001 7.88600e+03 9.39900e+03 +1002 7.88600e+03 9.29800e+03 +1003 7.62500e+03 9.32500e+03 +1004 7.62500e+03 9.42500e+03 +1005 7.62500e+03 9.52500e+03 +1006 7.62500e+03 9.72500e+03 +1007 7.62500e+03 9.82500e+03 +1008 7.52500e+03 1.00750e+04 +1009 7.25000e+03 1.00750e+04 +1010 6.97500e+03 1.00750e+04 +1011 6.82500e+03 1.01250e+04 +1012 6.74000e+03 9.80600e+03 +1013 6.73900e+03 9.70600e+03 +1014 6.73900e+03 9.60600e+03 +1015 6.74000e+03 9.50500e+03 +1016 6.74000e+03 9.40600e+03 +1017 6.73900e+03 9.30600e+03 +1018 7.02800e+03 8.82000e+03 +1019 6.92500e+03 8.82500e+03 +1020 6.72500e+03 8.82500e+03 +1021 6.67500e+03 8.47500e+03 +1022 6.67500e+03 8.37500e+03 +1023 6.67500e+03 8.27500e+03 +1024 6.67500e+03 8.17500e+03 +1025 6.67500e+03 8.07500e+03 +1026 6.67500e+03 7.97500e+03 +1027 6.67500e+03 7.87500e+03 +1028 6.77500e+03 7.82500e+03 +1029 6.67500e+03 7.71100e+03 +1030 6.67500e+03 7.71000e+03 +1031 6.67600e+03 7.56000e+03 +1032 6.67500e+03 7.56000e+03 +1033 6.67500e+03 7.41000e+03 +1034 6.67600e+03 7.40900e+03 +1035 6.67500e+03 7.26000e+03 +1036 6.67600e+03 7.25900e+03 +1037 6.67500e+03 7.07500e+03 +1038 6.67500e+03 6.87500e+03 +1039 6.67500e+03 6.67500e+03 +1040 6.82500e+03 6.67500e+03 +1041 6.82500e+03 6.52500e+03 +1042 6.67500e+03 6.52500e+03 +1043 6.67500e+03 6.37500e+03 +1044 7.07500e+03 6.00000e+03 +1045 7.17500e+03 6.02500e+03 +1046 7.07500e+03 6.20000e+03 +1047 7.17500e+03 6.42500e+03 +1048 7.02500e+03 6.67500e+03 +1049 7.02500e+03 6.82500e+03 +1050 7.17500e+03 6.77500e+03 +1051 7.32500e+03 6.77500e+03 +1052 7.17500e+03 6.97500e+03 +1053 7.07500e+03 7.07500e+03 +1054 7.27500e+03 7.07500e+03 +1055 7.37500e+03 7.27500e+03 +1056 7.42500e+03 7.42500e+03 +1057 7.47500e+03 7.52500e+03 +1058 7.27500e+03 7.47500e+03 +1059 7.17500e+03 7.57500e+03 +1060 7.07500e+03 7.47500e+03 +1061 7.02500e+03 7.62500e+03 +1062 6.87500e+03 7.62500e+03 +1063 6.92500e+03 7.72500e+03 +1064 7.07500e+03 7.72500e+03 +1065 7.27500e+03 7.82500e+03 +1066 7.45000e+03 7.77500e+03 +1067 7.45000e+03 7.87500e+03 +1068 7.57500e+03 7.97500e+03 +1069 7.72500e+03 7.97500e+03 +1070 7.67500e+03 8.12500e+03 +1071 7.60000e+03 8.22500e+03 +1072 7.70000e+03 8.22500e+03 +1073 7.70000e+03 8.37500e+03 +1074 7.70000e+03 8.47500e+03 +1075 7.55000e+03 8.57500e+03 +1076 7.47500e+03 8.72500e+03 +1077 7.29700e+03 8.70300e+03 +1078 7.32500e+03 8.82500e+03 +1079 7.52500e+03 8.82500e+03 +1080 7.62500e+03 8.72500e+03 +1081 7.70000e+03 8.62500e+03 +1082 7.92500e+03 8.77500e+03 +1083 8.02500e+03 8.77500e+03 +1084 8.12500e+03 8.77500e+03 +1085 8.22500e+03 8.77500e+03 +1086 8.37500e+03 8.77500e+03 +1087 8.32500e+03 8.62500e+03 +1088 8.42500e+03 8.57500e+03 +1089 8.32500e+03 8.52500e+03 +1090 8.42500e+03 8.22500e+03 +1091 8.52500e+03 8.22500e+03 +1092 8.62500e+03 8.32500e+03 +1093 8.72500e+03 8.32500e+03 +1094 8.72500e+03 8.42500e+03 +1095 8.62500e+03 8.47500e+03 +1096 8.80000e+03 8.77500e+03 +1097 8.90000e+03 8.67500e+03 +1098 8.80000e+03 8.57500e+03 +1099 8.87500e+03 8.37500e+03 +1100 8.87500e+03 8.22500e+03 +1101 8.72500e+03 8.17500e+03 +1102 8.77500e+03 8.07500e+03 +1103 8.87500e+03 8.07500e+03 +1104 8.87500e+03 7.92500e+03 +1105 8.77500e+03 7.87500e+03 +1106 8.62500e+03 7.82500e+03 +1107 8.62500e+03 7.72500e+03 +1108 8.62500e+03 7.62500e+03 +1109 8.62500e+03 7.47500e+03 +1110 8.52500e+03 7.42500e+03 +1111 8.52500e+03 7.57500e+03 +1112 8.47500e+03 7.72500e+03 +1113 8.47500e+03 7.82500e+03 +1114 8.37500e+03 7.97500e+03 +1115 8.22500e+03 7.82500e+03 +1116 8.02500e+03 7.82500e+03 +1117 7.97500e+03 7.92500e+03 +1118 8.07500e+03 7.97500e+03 +1119 8.17500e+03 7.97500e+03 +1120 8.17500e+03 8.07500e+03 +1121 8.07500e+03 8.12500e+03 +1122 7.97500e+03 8.07500e+03 +1123 7.87500e+03 8.12500e+03 +1124 7.87500e+03 8.02500e+03 +1125 7.87500e+03 7.87500e+03 +1126 7.75000e+03 7.75000e+03 +1127 7.90000e+03 7.75000e+03 +1128 7.97500e+03 7.57500e+03 +1129 7.97500e+03 7.42500e+03 +1130 8.12500e+03 7.42500e+03 +1131 8.22500e+03 7.42500e+03 +1132 8.17500e+03 7.57500e+03 +1133 8.27500e+03 7.60000e+03 +1134 8.37500e+03 7.42500e+03 +1135 8.32500e+03 7.32500e+03 +1136 8.42500e+03 7.15000e+03 +1137 8.57500e+03 7.15000e+03 +1138 8.85000e+03 7.15000e+03 +1139 8.77500e+03 7.07500e+03 +1140 8.82500e+03 6.97500e+03 +1141 8.62500e+03 6.97500e+03 +1142 8.42500e+03 6.87500e+03 +1143 8.52500e+03 6.77500e+03 +1144 8.42500e+03 6.67500e+03 +1145 8.47500e+03 6.45000e+03 +1146 8.62500e+03 6.57500e+03 +1147 8.85000e+03 6.57500e+03 +1148 8.85000e+03 6.37500e+03 +1149 8.85000e+03 5.97500e+03 +1150 8.67400e+03 5.90800e+03 +1151 8.47500e+03 6.05000e+03 +1152 8.27500e+03 6.02500e+03 +1153 8.12500e+03 6.12500e+03 +1154 7.97500e+03 6.12500e+03 +1155 7.97500e+03 6.02500e+03 +1156 8.12500e+03 5.45000e+03 +1157 8.02500e+03 5.45000e+03 +1158 7.92500e+03 5.45000e+03 +1159 7.77500e+03 5.45000e+03 +1160 7.62500e+03 5.45000e+03 +1161 7.47500e+03 5.45000e+03 +1162 7.50000e+03 5.35000e+03 +1163 7.50000e+03 5.25000e+03 +1164 7.42500e+03 5.17500e+03 +1165 7.57500e+03 5.17500e+03 +1166 7.67500e+03 5.07500e+03 +1167 7.62500e+03 4.97500e+03 +1168 7.77500e+03 4.87500e+03 +1169 7.92500e+03 4.97500e+03 +1170 7.87500e+03 5.07500e+03 +1171 7.77500e+03 5.02500e+03 +1172 7.77500e+03 5.17500e+03 +1173 7.97500e+03 5.17500e+03 +1174 8.25000e+03 5.17500e+03 +1175 8.35000e+03 5.37500e+03 +1176 8.35000e+03 5.27500e+03 +1177 8.40000e+03 5.17500e+03 +1178 8.37500e+03 5.07500e+03 +1179 8.42500e+03 4.97500e+03 +1180 8.55000e+03 5.02500e+03 +1181 8.57500e+03 5.17500e+03 +1182 8.62500e+03 5.27500e+03 +1183 8.62500e+03 5.37500e+03 +1184 8.77500e+03 5.37500e+03 +1185 8.77500e+03 5.27500e+03 +1186 8.87500e+03 5.32500e+03 +1187 8.87200e+03 5.20400e+03 +1188 8.90000e+03 5.07500e+03 +1189 8.90000e+03 4.92500e+03 +1190 8.77500e+03 4.92500e+03 +1191 8.77500e+03 4.77500e+03 +1192 8.77500e+03 4.67500e+03 +1193 8.77500e+03 4.57500e+03 +1194 8.62500e+03 4.72500e+03 +1195 8.50000e+03 4.67500e+03 +1196 8.47500e+03 4.77500e+03 +1197 8.32500e+03 4.77500e+03 +1198 8.12500e+03 4.57500e+03 +1199 8.22500e+03 4.57500e+03 +1200 8.30000e+03 4.52500e+03 +1201 8.40000e+03 4.50000e+03 +1202 8.40000e+03 4.40000e+03 +1203 8.30000e+03 4.42500e+03 +1204 8.30000e+03 4.32500e+03 +1205 8.22500e+03 4.27500e+03 +1206 8.12500e+03 4.27500e+03 +1207 8.02500e+03 4.17500e+03 +1208 8.00000e+03 3.92500e+03 +1209 8.00000e+03 3.72500e+03 +1210 8.00000e+03 3.32500e+03 +1211 7.55000e+03 3.32500e+03 +1212 7.55000e+03 3.72500e+03 +1213 7.55000e+03 3.92500e+03 +1214 7.82500e+03 4.17500e+03 +1215 7.72500e+03 4.17500e+03 +1216 7.52500e+03 4.17500e+03 +1217 7.42500e+03 4.27500e+03 +1218 7.32500e+03 4.27500e+03 +1219 7.25000e+03 4.32500e+03 +1220 7.25000e+03 4.42500e+03 +1221 7.15000e+03 4.42500e+03 +1222 7.15000e+03 4.52500e+03 +1223 7.25000e+03 4.52500e+03 +1224 7.32500e+03 4.60000e+03 +1225 7.42500e+03 4.60000e+03 +1226 7.22500e+03 4.77500e+03 +1227 7.07500e+03 4.77500e+03 +1228 7.05000e+03 4.67500e+03 +1229 6.97500e+03 4.77500e+03 +1230 7.02500e+03 4.92500e+03 +1231 7.12500e+03 4.97500e+03 +1232 7.17500e+03 5.07500e+03 +1233 7.02500e+03 5.07500e+03 +1234 6.92500e+03 5.02500e+03 +1235 6.92500e+03 5.27500e+03 +1236 6.92500e+03 5.42500e+03 +1237 6.92500e+03 5.52500e+03 +1238 6.92500e+03 5.67500e+03 +1239 6.66500e+03 5.61000e+03 +1240 6.66500e+03 5.46000e+03 +1241 6.66500e+03 5.31000e+03 +1242 6.66500e+03 5.16000e+03 +1243 6.66500e+03 5.01000e+03 +1244 6.66500e+03 4.86000e+03 +1245 6.82500e+03 4.77500e+03 +1246 6.66500e+03 4.71000e+03 +1247 6.66500e+03 4.56000e+03 +1248 6.77500e+03 4.50000e+03 +1249 6.85000e+03 4.55000e+03 +1250 6.85000e+03 4.45000e+03 +1251 6.77500e+03 4.37500e+03 +1252 6.72500e+03 4.27500e+03 +1253 6.82500e+03 4.27500e+03 +1254 7.05000e+03 4.17500e+03 +1255 7.15000e+03 4.27500e+03 +1256 7.25000e+03 4.17500e+03 +1257 7.15000e+03 4.12500e+03 +1258 7.17500e+03 3.97500e+03 +1259 7.17500e+03 3.87500e+03 +1260 7.07500e+03 3.97500e+03 +1261 7.00000e+03 3.87500e+03 +1262 6.87500e+03 3.87500e+03 +1263 6.72500e+03 3.90000e+03 +1264 6.70000e+03 3.70000e+03 +1265 6.70000e+03 3.57500e+03 +1266 6.70000e+03 3.47500e+03 +1267 6.70000e+03 3.37500e+03 +1268 6.70000e+03 3.27500e+03 +1269 6.27500e+03 3.12500e+03 +1270 6.30000e+03 3.22500e+03 +1271 6.30000e+03 3.32500e+03 +1272 6.30000e+03 3.47500e+03 +1273 6.30000e+03 3.62500e+03 +1274 6.20000e+03 3.82500e+03 +1275 6.02500e+03 3.82500e+03 +1276 6.02500e+03 3.92500e+03 +1277 5.92500e+03 3.97500e+03 +1278 5.82500e+03 3.97500e+03 +1279 5.82500e+03 3.87500e+03 +1280 5.45000e+03 3.92500e+03 +1281 5.45000e+03 3.72500e+03 +1282 5.45000e+03 3.32500e+03 +1283 5.00000e+03 3.32500e+03 +1284 5.00000e+03 3.72500e+03 +1285 5.00000e+03 3.92500e+03 +1286 4.62500e+03 3.87500e+03 +1287 4.62500e+03 3.97500e+03 +1288 4.52500e+03 3.97500e+03 +1289 4.45000e+03 3.87500e+03 +1290 4.32500e+03 3.87500e+03 +1291 4.17500e+03 3.90000e+03 +1292 4.15000e+03 3.70000e+03 +1293 4.15000e+03 3.57500e+03 +1294 4.15000e+03 3.47500e+03 +1295 4.15000e+03 3.37500e+03 +1296 4.15000e+03 3.27500e+03 +1297 3.72500e+03 3.12500e+03 +1298 3.75000e+03 3.22500e+03 +1299 3.75000e+03 3.32500e+03 +1300 3.75000e+03 3.47500e+03 +1301 3.75000e+03 3.62500e+03 +1302 3.65000e+03 3.82500e+03 +1303 3.47500e+03 3.82500e+03 +1304 3.47500e+03 3.92500e+03 +1305 3.37500e+03 3.97500e+03 +1306 3.27500e+03 3.87500e+03 +1307 3.27500e+03 3.97500e+03 +1308 3.30000e+03 4.12500e+03 +1309 3.20000e+03 4.17500e+03 +1310 3.30000e+03 4.27500e+03 +1311 3.40000e+03 4.17500e+03 +1312 3.57500e+03 4.32500e+03 +1313 3.67500e+03 4.42500e+03 +1314 3.72500e+03 4.32500e+03 +1315 4.17500e+03 4.27500e+03 +1316 4.27500e+03 4.27500e+03 +1317 4.22500e+03 4.37500e+03 +1318 4.30000e+03 4.45000e+03 +1319 4.30000e+03 4.55000e+03 +1320 4.22500e+03 4.50000e+03 +1321 4.11500e+03 4.56000e+03 +1322 4.11500e+03 4.71000e+03 +1323 4.27500e+03 4.77500e+03 +1324 4.11500e+03 4.86000e+03 +1325 4.11500e+03 5.01000e+03 +1326 4.11500e+03 5.16000e+03 +1327 4.11500e+03 5.31000e+03 +1328 4.11500e+03 5.46000e+03 +1329 4.11500e+03 5.61000e+03 +1330 4.37500e+03 5.67500e+03 +1331 4.37500e+03 5.52500e+03 +1332 4.37500e+03 5.42500e+03 +1333 4.37500e+03 5.27500e+03 +1334 4.37500e+03 5.02500e+03 +1335 4.47500e+03 5.07500e+03 +1336 4.62500e+03 5.07500e+03 +1337 4.57500e+03 4.97500e+03 +1338 4.47500e+03 4.92500e+03 +1339 4.42500e+03 4.77500e+03 +1340 4.50000e+03 4.67500e+03 +1341 4.52500e+03 4.77500e+03 +1342 4.67500e+03 4.77500e+03 +1343 4.87500e+03 4.60000e+03 +1344 4.77500e+03 4.60000e+03 +1345 4.70000e+03 4.52500e+03 +1346 4.60000e+03 4.52500e+03 +1347 4.60000e+03 4.42500e+03 +1348 4.70000e+03 4.42500e+03 +1349 4.70000e+03 4.32500e+03 +1350 4.60000e+03 4.27500e+03 +1351 4.50000e+03 4.17500e+03 +1352 4.60000e+03 4.12500e+03 +1353 4.70000e+03 4.17500e+03 +1354 4.77500e+03 4.27500e+03 +1355 4.87500e+03 4.27500e+03 +1356 4.97500e+03 4.17500e+03 +1357 5.17500e+03 4.17500e+03 +1358 5.27500e+03 4.17500e+03 +1359 5.47500e+03 4.17500e+03 +1360 5.57500e+03 4.27500e+03 +1361 5.67500e+03 4.27500e+03 +1362 5.75000e+03 4.32500e+03 +1363 5.75000e+03 4.42500e+03 +1364 5.75000e+03 4.52500e+03 +1365 5.67500e+03 4.57500e+03 +1366 5.57500e+03 4.57500e+03 +1367 5.77500e+03 4.77500e+03 +1368 5.92500e+03 4.77500e+03 +1369 6.07500e+03 4.72500e+03 +1370 5.95000e+03 4.67500e+03 +1371 5.85000e+03 4.50000e+03 +1372 5.85000e+03 4.40000e+03 +1373 5.85000e+03 4.27500e+03 +1374 5.75000e+03 4.17500e+03 +1375 5.85000e+03 4.12500e+03 +1376 5.95000e+03 4.17500e+03 +1377 6.12500e+03 4.32500e+03 +1378 6.27500e+03 4.32500e+03 +1379 6.22500e+03 4.42500e+03 +1380 6.22500e+03 4.57500e+03 +1381 6.22500e+03 4.67500e+03 +1382 6.22500e+03 4.77500e+03 +1383 6.22500e+03 4.92500e+03 +1384 6.35000e+03 4.92500e+03 +1385 6.35000e+03 5.07500e+03 +1386 6.32200e+03 5.20400e+03 +1387 6.32500e+03 5.32500e+03 +1388 6.22500e+03 5.27500e+03 +1389 6.22500e+03 5.37500e+03 +1390 6.07500e+03 5.37500e+03 +1391 6.07500e+03 5.27500e+03 +1392 6.02500e+03 5.17500e+03 +1393 6.00000e+03 5.02500e+03 +1394 5.87500e+03 4.97500e+03 +1395 5.82500e+03 5.07500e+03 +1396 5.85000e+03 5.17500e+03 +1397 5.80000e+03 5.27500e+03 +1398 5.80000e+03 5.37500e+03 +1399 5.70000e+03 5.17500e+03 +1400 5.42500e+03 5.17500e+03 +1401 5.32500e+03 5.07500e+03 +1402 5.37500e+03 4.97500e+03 +1403 5.22500e+03 4.87500e+03 +1404 5.07500e+03 4.97500e+03 +1405 5.12500e+03 5.07500e+03 +1406 5.22500e+03 5.02500e+03 +1407 5.22500e+03 5.17500e+03 +1408 5.02500e+03 5.17500e+03 +1409 4.87500e+03 5.17500e+03 +1410 4.95000e+03 5.25000e+03 +1411 4.95000e+03 5.35000e+03 +1412 4.92500e+03 5.45000e+03 +1413 5.07500e+03 5.45000e+03 +1414 5.22500e+03 5.45000e+03 +1415 5.37500e+03 5.45000e+03 +1416 5.47500e+03 5.45000e+03 +1417 5.57500e+03 5.45000e+03 +1418 5.42500e+03 6.02500e+03 +1419 5.42500e+03 6.12500e+03 +1420 5.57500e+03 6.12500e+03 +1421 5.72500e+03 6.02500e+03 +1422 5.92500e+03 6.05000e+03 +1423 6.12400e+03 5.90800e+03 +1424 6.30000e+03 5.97500e+03 +1425 6.30000e+03 6.37500e+03 +1426 6.30000e+03 6.57500e+03 +1427 6.07500e+03 6.57500e+03 +1428 5.92500e+03 6.45000e+03 +1429 5.87500e+03 6.67500e+03 +1430 5.97500e+03 6.77500e+03 +1431 5.87500e+03 6.87500e+03 +1432 6.07500e+03 6.97500e+03 +1433 6.27500e+03 6.97500e+03 +1434 6.22500e+03 7.07500e+03 +1435 6.30000e+03 7.15000e+03 +1436 6.02500e+03 7.15000e+03 +1437 5.87500e+03 7.15000e+03 +1438 5.77500e+03 7.32500e+03 +1439 5.82500e+03 7.42500e+03 +1440 5.97500e+03 7.42500e+03 +1441 6.07500e+03 7.47500e+03 +1442 5.97500e+03 7.57500e+03 +1443 6.07500e+03 7.62500e+03 +1444 6.07500e+03 7.72500e+03 +1445 5.92500e+03 7.72500e+03 +1446 5.92500e+03 7.82500e+03 +1447 6.07500e+03 7.82500e+03 +1448 6.22500e+03 7.87500e+03 +1449 6.32500e+03 7.92500e+03 +1450 6.32500e+03 8.07500e+03 +1451 6.22500e+03 8.07500e+03 +1452 6.17500e+03 8.17500e+03 +1453 6.32500e+03 8.22500e+03 +1454 6.32500e+03 8.37500e+03 +1455 6.17500e+03 8.32500e+03 +1456 6.07500e+03 8.32500e+03 +1457 5.97500e+03 8.22500e+03 +1458 5.87500e+03 8.22500e+03 +1459 5.82500e+03 7.97500e+03 +1460 5.67500e+03 7.82500e+03 +1461 5.72500e+03 7.60000e+03 +1462 5.62500e+03 7.57500e+03 +1463 5.67500e+03 7.42500e+03 +1464 5.57500e+03 7.42500e+03 +1465 5.42500e+03 7.42500e+03 +1466 5.42500e+03 7.57500e+03 +1467 5.35000e+03 7.75000e+03 +1468 5.20000e+03 7.75000e+03 +1469 5.32500e+03 7.87500e+03 +1470 5.47500e+03 7.82500e+03 +1471 5.42500e+03 7.92500e+03 +1472 5.52500e+03 7.97500e+03 +1473 5.62500e+03 7.97500e+03 +1474 5.62500e+03 8.07500e+03 +1475 5.52500e+03 8.12500e+03 +1476 5.42500e+03 8.07500e+03 +1477 5.32500e+03 8.02500e+03 +1478 5.32500e+03 8.12500e+03 +1479 5.15000e+03 8.22500e+03 +1480 5.05000e+03 8.22500e+03 +1481 5.12500e+03 8.12500e+03 +1482 5.17500e+03 7.97500e+03 +1483 5.02500e+03 7.97500e+03 +1484 4.90000e+03 7.87500e+03 +1485 4.90000e+03 7.77500e+03 +1486 4.72500e+03 7.82500e+03 +1487 4.52500e+03 7.72500e+03 +1488 4.37500e+03 7.72500e+03 +1489 4.32500e+03 7.62500e+03 +1490 4.47500e+03 7.62500e+03 +1491 4.52500e+03 7.47500e+03 +1492 4.62500e+03 7.57500e+03 +1493 4.72500e+03 7.47500e+03 +1494 4.92500e+03 7.52500e+03 +1495 4.87500e+03 7.42500e+03 +1496 4.82500e+03 7.27500e+03 +1497 4.72500e+03 7.07500e+03 +1498 4.52500e+03 7.07500e+03 +1499 4.62500e+03 6.97500e+03 +1500 4.77500e+03 6.77500e+03 +1501 4.62500e+03 6.77500e+03 +1502 4.47500e+03 6.82500e+03 +1503 4.47500e+03 6.67500e+03 +1504 4.62500e+03 6.42500e+03 +1505 4.52500e+03 6.20000e+03 +1506 4.62500e+03 6.02500e+03 +1507 4.52500e+03 6.00000e+03 +1508 4.12500e+03 6.37500e+03 +1509 4.12500e+03 6.52500e+03 +1510 4.27500e+03 6.52500e+03 +1511 4.27500e+03 6.67500e+03 +1512 4.12500e+03 6.67500e+03 +1513 4.12500e+03 6.87500e+03 +1514 4.12500e+03 7.07500e+03 +1515 4.12600e+03 7.25900e+03 +1516 4.12500e+03 7.26000e+03 +1517 4.12600e+03 7.40900e+03 +1518 4.12500e+03 7.41000e+03 +1519 4.12500e+03 7.56000e+03 +1520 4.12600e+03 7.56000e+03 +1521 4.12500e+03 7.71000e+03 +1522 4.12500e+03 7.71100e+03 +1523 4.22500e+03 7.82500e+03 +1524 4.12500e+03 7.87500e+03 +1525 4.12500e+03 7.97500e+03 +1526 4.12500e+03 8.07500e+03 +1527 4.12500e+03 8.17500e+03 +1528 4.12500e+03 8.27500e+03 +1529 4.12500e+03 8.37500e+03 +1530 4.12500e+03 8.47500e+03 +1531 4.17500e+03 8.82500e+03 +1532 4.37500e+03 8.82500e+03 +1533 4.47800e+03 8.82000e+03 +1534 4.74700e+03 8.70300e+03 +1535 4.77500e+03 8.82500e+03 +1536 4.92500e+03 8.72500e+03 +1537 4.97500e+03 8.82500e+03 +1538 5.07500e+03 8.72500e+03 +1539 5.00000e+03 8.57500e+03 +1540 5.15000e+03 8.37500e+03 +1541 5.15000e+03 8.47500e+03 +1542 5.15000e+03 8.62500e+03 +1543 5.37500e+03 8.77500e+03 +1544 5.47500e+03 8.77500e+03 +1545 5.57500e+03 8.77500e+03 +1546 5.67500e+03 8.77500e+03 +1547 5.82500e+03 8.77500e+03 +1548 5.77500e+03 8.62500e+03 +1549 5.77500e+03 8.52500e+03 +1550 5.87500e+03 8.57500e+03 +1551 6.07500e+03 8.47500e+03 +1552 6.17500e+03 8.42500e+03 +1553 6.25000e+03 8.57500e+03 +1554 6.35000e+03 8.67500e+03 +1555 6.25000e+03 8.77500e+03 +1556 6.22500e+03 9.32500e+03 +1557 6.22500e+03 9.42500e+03 +1558 6.22500e+03 9.52500e+03 +1559 6.22500e+03 9.72500e+03 +1560 6.22500e+03 9.82500e+03 +1561 6.27500e+03 1.00750e+04 +1562 6.02500e+03 1.00750e+04 +1563 5.74800e+03 1.00750e+04 +1564 5.47500e+03 1.00750e+04 +1565 5.33700e+03 9.80100e+03 +1566 5.33500e+03 9.70200e+03 +1567 5.33500e+03 9.60100e+03 +1568 5.33600e+03 9.50200e+03 +1569 5.33600e+03 9.39900e+03 +1570 5.33600e+03 9.29800e+03 +1571 5.07500e+03 9.32500e+03 +1572 5.07500e+03 9.42500e+03 +1573 5.07500e+03 9.52500e+03 +1574 5.07500e+03 9.72500e+03 +1575 5.07500e+03 9.82500e+03 +1576 4.97500e+03 1.00750e+04 +1577 4.70000e+03 1.00750e+04 +1578 4.42500e+03 1.00750e+04 +1579 4.27500e+03 1.01250e+04 +1580 4.19000e+03 9.80600e+03 +1581 4.18900e+03 9.70600e+03 +1582 4.18900e+03 9.60600e+03 +1583 4.19000e+03 9.50500e+03 +1584 4.19000e+03 9.40600e+03 +1585 4.18900e+03 9.30600e+03 +1586 3.67500e+03 9.32500e+03 +1587 3.67500e+03 9.42500e+03 +1588 3.67500e+03 9.52500e+03 +1589 3.67500e+03 9.72500e+03 +1590 3.67500e+03 9.82500e+03 +1591 3.72500e+03 1.00750e+04 +1592 3.47500e+03 1.00750e+04 +1593 3.19800e+03 1.00750e+04 +1594 2.92500e+03 1.00750e+04 +1595 2.78700e+03 9.80100e+03 +1596 2.78500e+03 9.70200e+03 +1597 2.78500e+03 9.60100e+03 +1598 2.78600e+03 9.50200e+03 +1599 2.78600e+03 9.39900e+03 +1600 2.78600e+03 9.29800e+03 +1601 2.52500e+03 9.32500e+03 +1602 2.52500e+03 9.42500e+03 +1603 2.52500e+03 9.52500e+03 +1604 2.52500e+03 9.72500e+03 +1605 2.52500e+03 9.82500e+03 +1606 2.42500e+03 1.00750e+04 +1607 2.15000e+03 1.00750e+04 +1608 2.45000e+03 1.04750e+04 +1609 2.90000e+03 1.04750e+04 +1610 2.90000e+03 1.08750e+04 +1611 2.90000e+03 1.10750e+04 +1612 3.27500e+03 1.10250e+04 +1613 3.27500e+03 1.11250e+04 +1614 3.37500e+03 1.11250e+04 +1615 3.47500e+03 1.10750e+04 +1616 3.47500e+03 1.09750e+04 +1617 3.65000e+03 1.09750e+04 +1618 3.75000e+03 1.07750e+04 +1619 3.75000e+03 1.06250e+04 +1620 3.75000e+03 1.04750e+04 +1621 3.75000e+03 1.03750e+04 +1622 3.72500e+03 1.02750e+04 +1623 4.15000e+03 1.04250e+04 +1624 4.15000e+03 1.05250e+04 +1625 4.15000e+03 1.06250e+04 +1626 4.15000e+03 1.07250e+04 +1627 4.15000e+03 1.08500e+04 +1628 4.17500e+03 1.10500e+04 +1629 4.32500e+03 1.10250e+04 +1630 4.45000e+03 1.10250e+04 +1631 4.52500e+03 1.11250e+04 +1632 4.62500e+03 1.10250e+04 +1633 4.62500e+03 1.11250e+04 +1634 4.60000e+03 1.12750e+04 +1635 4.70000e+03 1.13250e+04 +1636 4.60000e+03 1.14250e+04 +1637 4.50000e+03 1.13250e+04 +1638 4.27500e+03 1.14250e+04 +1639 4.17500e+03 1.14250e+04 +1640 4.22500e+03 1.15250e+04 +1641 4.30000e+03 1.16000e+04 +1642 4.30000e+03 1.17000e+04 +1643 4.22500e+03 1.16500e+04 +1644 4.11500e+03 1.17100e+04 +1645 4.11500e+03 1.18600e+04 +1646 4.27500e+03 1.19250e+04 +1647 4.11500e+03 1.20100e+04 +1648 4.11500e+03 1.21600e+04 +1649 4.11500e+03 1.23100e+04 +1650 4.11500e+03 1.24600e+04 +1651 4.11500e+03 1.26100e+04 +1652 4.11500e+03 1.27600e+04 +1653 4.37500e+03 1.28250e+04 +1654 4.37500e+03 1.26750e+04 +1655 4.37500e+03 1.25750e+04 +1656 4.37500e+03 1.24250e+04 +1657 4.37500e+03 1.21750e+04 +1658 4.47500e+03 1.22250e+04 +1659 4.62500e+03 1.22250e+04 +1660 4.57500e+03 1.21250e+04 +1661 4.47500e+03 1.20750e+04 +1662 4.42500e+03 1.19250e+04 +1663 4.50000e+03 1.18250e+04 +1664 4.52500e+03 1.19250e+04 +1665 4.67500e+03 1.19250e+04 +1666 4.87500e+03 1.17500e+04 +1667 4.77500e+03 1.17500e+04 +1668 4.70000e+03 1.16750e+04 +1669 4.60000e+03 1.16750e+04 +1670 4.60000e+03 1.15750e+04 +1671 4.70000e+03 1.15750e+04 +1672 4.70000e+03 1.14750e+04 +1673 4.77500e+03 1.14250e+04 +1674 4.87500e+03 1.14250e+04 +1675 4.97500e+03 1.13250e+04 +1676 5.17500e+03 1.13250e+04 +1677 5.27500e+03 1.13250e+04 +1678 5.00000e+03 1.10750e+04 +1679 5.00000e+03 1.08750e+04 +1680 5.00000e+03 1.04750e+04 +1681 5.45000e+03 1.04750e+04 +1682 5.45000e+03 1.08750e+04 +1683 5.45000e+03 1.10750e+04 +1684 5.47500e+03 1.13250e+04 +1685 5.57500e+03 1.14250e+04 +1686 5.67500e+03 1.14250e+04 +1687 5.75000e+03 1.14750e+04 +1688 5.75000e+03 1.15750e+04 +1689 5.85000e+03 1.15500e+04 +1690 5.85000e+03 1.16500e+04 +1691 5.75000e+03 1.16750e+04 +1692 5.67500e+03 1.17250e+04 +1693 5.57500e+03 1.17250e+04 +1694 5.77500e+03 1.19250e+04 +1695 5.92500e+03 1.19250e+04 +1696 5.95000e+03 1.18250e+04 +1697 6.07500e+03 1.18750e+04 +1698 6.22500e+03 1.17250e+04 +1699 6.22500e+03 1.18250e+04 +1700 6.22500e+03 1.19250e+04 +1701 6.22500e+03 1.20750e+04 +1702 6.35000e+03 1.20750e+04 +1703 6.35000e+03 1.22250e+04 +1704 6.32200e+03 1.23540e+04 +1705 6.32500e+03 1.24750e+04 +1706 6.22500e+03 1.24250e+04 +1707 6.22500e+03 1.25250e+04 +1708 6.07500e+03 1.25250e+04 +1709 6.07500e+03 1.24250e+04 +1710 6.02500e+03 1.23250e+04 +1711 6.00000e+03 1.21750e+04 +1712 5.87500e+03 1.21250e+04 +1713 5.82500e+03 1.22250e+04 +1714 5.85000e+03 1.23250e+04 +1715 5.80000e+03 1.24250e+04 +1716 5.80000e+03 1.25250e+04 +1717 5.70000e+03 1.23250e+04 +1718 5.42500e+03 1.23250e+04 +1719 5.32500e+03 1.22250e+04 +1720 5.37500e+03 1.21250e+04 +1721 5.22500e+03 1.20250e+04 +1722 5.07500e+03 1.21250e+04 +1723 5.12500e+03 1.22250e+04 +1724 5.22500e+03 1.21750e+04 +1725 5.22500e+03 1.23250e+04 +1726 5.02500e+03 1.23250e+04 +1727 4.87500e+03 1.23250e+04 +1728 4.95000e+03 1.24000e+04 +1729 4.95000e+03 1.25000e+04 +1730 4.92500e+03 1.26000e+04 +1731 5.07500e+03 1.26000e+04 +1732 5.22500e+03 1.26000e+04 +1733 5.37500e+03 1.26000e+04 +1734 5.47500e+03 1.26000e+04 +1735 5.57500e+03 1.26000e+04 +1736 5.42500e+03 1.31750e+04 +1737 5.42500e+03 1.32750e+04 +1738 5.57500e+03 1.32750e+04 +1739 5.72500e+03 1.31750e+04 +1740 5.92500e+03 1.32000e+04 +1741 6.12400e+03 1.30580e+04 +1742 6.30000e+03 1.31250e+04 +1743 6.30000e+03 1.35250e+04 +1744 6.30000e+03 1.37250e+04 +1745 6.07500e+03 1.37250e+04 +1746 5.92500e+03 1.36000e+04 +1747 5.87500e+03 1.38250e+04 +1748 5.97500e+03 1.39250e+04 +1749 5.87500e+03 1.40250e+04 +1750 6.07500e+03 1.41250e+04 +1751 6.27500e+03 1.41250e+04 +1752 6.22500e+03 1.42250e+04 +1753 6.30000e+03 1.43000e+04 +1754 6.02500e+03 1.43000e+04 +1755 5.87500e+03 1.43000e+04 +1756 5.77500e+03 1.44750e+04 +1757 5.82500e+03 1.45750e+04 +1758 5.72500e+03 1.47500e+04 +1759 5.62500e+03 1.47250e+04 +1760 5.67500e+03 1.45750e+04 +1761 5.57500e+03 1.45750e+04 +1762 5.42500e+03 1.45750e+04 +1763 5.42500e+03 1.47250e+04 +1764 5.35000e+03 1.49000e+04 +1765 5.20000e+03 1.49000e+04 +1766 5.32500e+03 1.50250e+04 +1767 5.32500e+03 1.51750e+04 +1768 5.32500e+03 1.52750e+04 +1769 5.42500e+03 1.52250e+04 +1770 5.52500e+03 1.52750e+04 +1771 5.62500e+03 1.52250e+04 +1772 5.62500e+03 1.51250e+04 +1773 5.52500e+03 1.51250e+04 +1774 5.42500e+03 1.50750e+04 +1775 5.47500e+03 1.49750e+04 +1776 5.67500e+03 1.49750e+04 +1777 5.82500e+03 1.51250e+04 +1778 5.92500e+03 1.49750e+04 +1779 5.92500e+03 1.48750e+04 +1780 5.97500e+03 1.47250e+04 +1781 5.97500e+03 1.45750e+04 +1782 6.07500e+03 1.46250e+04 +1783 6.07500e+03 1.47750e+04 +1784 6.07500e+03 1.48750e+04 +1785 6.07500e+03 1.49750e+04 +1786 6.22500e+03 1.50250e+04 +1787 6.32500e+03 1.50750e+04 +1788 6.32500e+03 1.52250e+04 +1789 6.22500e+03 1.52250e+04 +1790 6.17500e+03 1.53250e+04 +1791 6.32500e+03 1.53750e+04 +1792 6.32500e+03 1.55250e+04 +1793 6.25000e+03 1.57250e+04 +1794 6.35000e+03 1.58250e+04 +1795 6.25000e+03 1.59250e+04 +1796 6.07500e+03 1.56250e+04 +1797 6.17500e+03 1.55750e+04 +1798 6.17500e+03 1.54750e+04 +1799 6.07500e+03 1.54750e+04 +1800 5.97500e+03 1.53750e+04 +1801 5.87500e+03 1.53750e+04 +1802 5.77500e+03 1.56750e+04 +1803 5.87500e+03 1.57250e+04 +1804 5.77500e+03 1.57750e+04 +1805 5.82500e+03 1.59250e+04 +1806 5.67500e+03 1.59250e+04 +1807 5.57500e+03 1.59250e+04 +1808 5.47500e+03 1.59250e+04 +1809 5.37500e+03 1.59250e+04 +1810 5.15000e+03 1.57750e+04 +1811 5.07500e+03 1.58750e+04 +1812 4.97500e+03 1.59750e+04 +1813 4.77500e+03 1.59750e+04 +1814 4.74700e+03 1.58530e+04 +1815 4.92500e+03 1.58750e+04 +1816 5.00000e+03 1.57250e+04 +1817 5.15000e+03 1.56250e+04 +1818 5.15000e+03 1.55250e+04 +1819 5.15000e+03 1.53750e+04 +1820 5.05000e+03 1.53750e+04 +1821 5.12500e+03 1.52750e+04 +1822 5.17500e+03 1.51250e+04 +1823 5.02500e+03 1.51250e+04 +1824 4.90000e+03 1.50250e+04 +1825 4.90000e+03 1.49250e+04 +1826 4.72500e+03 1.49750e+04 +1827 4.52500e+03 1.48750e+04 +1828 4.37500e+03 1.48750e+04 +1829 4.32500e+03 1.47750e+04 +1830 4.47500e+03 1.47750e+04 +1831 4.52500e+03 1.46250e+04 +1832 4.62500e+03 1.47250e+04 +1833 4.72500e+03 1.46250e+04 +1834 4.92500e+03 1.46750e+04 +1835 4.87500e+03 1.45750e+04 +1836 4.82500e+03 1.44250e+04 +1837 4.72500e+03 1.42250e+04 +1838 4.52500e+03 1.42250e+04 +1839 4.62500e+03 1.41250e+04 +1840 4.77500e+03 1.39250e+04 +1841 4.62500e+03 1.39250e+04 +1842 4.47500e+03 1.39750e+04 +1843 4.47500e+03 1.38250e+04 +1844 4.62500e+03 1.35750e+04 +1845 4.52500e+03 1.33500e+04 +1846 4.62500e+03 1.31750e+04 +1847 4.52500e+03 1.31500e+04 +1848 4.12500e+03 1.35250e+04 +1849 4.12500e+03 1.36750e+04 +1850 4.27500e+03 1.36750e+04 +1851 4.27500e+03 1.38250e+04 +1852 4.12500e+03 1.38250e+04 +1853 4.12500e+03 1.40250e+04 +1854 4.12500e+03 1.42250e+04 +1855 4.12600e+03 1.44090e+04 +1856 4.12500e+03 1.44100e+04 +1857 4.12600e+03 1.45590e+04 +1858 4.12500e+03 1.45600e+04 +1859 4.12500e+03 1.47100e+04 +1860 4.12600e+03 1.47100e+04 +1861 4.12500e+03 1.48600e+04 +1862 4.12500e+03 1.48610e+04 +1863 4.22500e+03 1.49750e+04 +1864 4.12500e+03 1.50250e+04 +1865 4.12500e+03 1.51250e+04 +1866 4.12500e+03 1.52250e+04 +1867 4.12500e+03 1.53250e+04 +1868 4.12500e+03 1.54250e+04 +1869 4.12500e+03 1.55250e+04 +1870 4.12500e+03 1.56250e+04 +1871 4.47800e+03 1.59700e+04 +1872 4.37500e+03 1.59750e+04 +1873 4.17500e+03 1.59750e+04 +1874 3.80000e+03 1.58250e+04 +1875 3.70000e+03 1.59250e+04 +1876 3.70000e+03 1.57250e+04 +1877 3.62500e+03 1.55750e+04 +1878 3.52500e+03 1.56250e+04 +1879 3.32500e+03 1.57250e+04 +1880 3.22500e+03 1.56750e+04 +1881 3.22500e+03 1.57750e+04 +1882 3.27500e+03 1.59250e+04 +1883 3.12500e+03 1.59250e+04 +1884 3.02500e+03 1.59250e+04 +1885 2.92500e+03 1.59250e+04 +1886 2.82500e+03 1.59250e+04 +1887 2.60000e+03 1.57750e+04 +1888 2.60000e+03 1.56250e+04 +1889 2.60000e+03 1.55250e+04 +1890 2.45000e+03 1.57250e+04 +1891 2.52500e+03 1.58750e+04 +1892 2.42500e+03 1.59750e+04 +1893 2.37500e+03 1.58750e+04 +1894 2.22500e+03 1.59750e+04 +1895 2.19700e+03 1.58530e+04 +1896 1.92800e+03 1.59700e+04 +1897 1.82500e+03 1.59750e+04 +1898 1.62500e+03 1.59750e+04 +1899 1.57500e+03 1.56250e+04 +1900 1.57500e+03 1.55250e+04 +1901 1.57500e+03 1.54250e+04 +1902 1.57500e+03 1.53250e+04 +1903 1.57500e+03 1.52250e+04 +1904 1.57500e+03 1.51250e+04 +1905 1.57500e+03 1.50250e+04 +1906 1.67500e+03 1.49750e+04 +1907 1.57500e+03 1.48610e+04 +1908 1.57500e+03 1.48600e+04 +1909 1.57500e+03 1.47100e+04 +1910 1.57600e+03 1.47100e+04 +1911 1.57500e+03 1.45600e+04 +1912 1.57600e+03 1.45590e+04 +1913 1.57500e+03 1.44100e+04 +1914 1.57600e+03 1.44090e+04 +1915 1.57500e+03 1.42250e+04 +1916 1.57500e+03 1.40250e+04 +1917 1.57500e+03 1.38250e+04 +1918 1.72500e+03 1.38250e+04 +1919 1.72500e+03 1.36750e+04 +1920 1.57500e+03 1.36750e+04 +1921 1.57500e+03 1.35250e+04 +1922 1.97500e+03 1.31500e+04 +1923 2.07500e+03 1.31750e+04 +1924 1.97500e+03 1.33500e+04 +1925 2.07500e+03 1.35750e+04 +1926 1.92500e+03 1.38250e+04 +1927 1.92500e+03 1.39750e+04 +1928 2.07500e+03 1.39250e+04 +1929 2.22500e+03 1.39250e+04 +1930 2.07500e+03 1.41250e+04 +1931 1.97500e+03 1.42250e+04 +1932 2.17500e+03 1.42250e+04 +1933 2.27500e+03 1.44250e+04 +1934 2.32500e+03 1.45750e+04 +1935 2.37500e+03 1.46750e+04 +1936 2.17500e+03 1.46250e+04 +1937 2.07500e+03 1.47250e+04 +1938 1.97500e+03 1.46250e+04 +1939 1.92500e+03 1.47750e+04 +1940 1.77500e+03 1.47750e+04 +1941 1.82500e+03 1.48750e+04 +1942 1.97500e+03 1.48750e+04 +1943 2.17500e+03 1.49750e+04 +1944 2.35000e+03 1.49250e+04 +1945 2.35000e+03 1.50250e+04 +1946 2.47500e+03 1.51250e+04 +1947 2.62500e+03 1.51250e+04 +1948 2.57500e+03 1.52750e+04 +1949 2.50000e+03 1.53750e+04 +1950 2.60000e+03 1.53750e+04 +1951 2.77500e+03 1.52750e+04 +1952 2.77500e+03 1.51750e+04 +1953 2.87500e+03 1.52250e+04 +1954 2.97500e+03 1.52750e+04 +1955 3.07500e+03 1.52250e+04 +1956 3.07500e+03 1.51250e+04 +1957 2.97500e+03 1.51250e+04 +1958 2.92500e+03 1.49750e+04 +1959 2.87500e+03 1.50750e+04 +1960 2.77500e+03 1.50250e+04 +1961 2.65000e+03 1.49000e+04 +1962 2.80000e+03 1.49000e+04 +1963 2.87500e+03 1.47250e+04 +1964 2.87500e+03 1.45750e+04 +1965 3.02500e+03 1.45750e+04 +1966 3.12500e+03 1.45750e+04 +1967 3.07500e+03 1.47250e+04 +1968 3.17500e+03 1.47500e+04 +1969 3.12500e+03 1.49750e+04 +1970 3.27500e+03 1.51250e+04 +1971 3.32500e+03 1.53750e+04 +1972 3.42500e+03 1.53750e+04 +1973 3.52500e+03 1.54750e+04 +1974 3.62500e+03 1.54750e+04 +1975 3.77500e+03 1.55250e+04 +1976 3.77500e+03 1.53750e+04 +1977 3.62500e+03 1.53250e+04 +1978 3.67500e+03 1.52250e+04 +1979 3.77500e+03 1.52250e+04 +1980 3.77500e+03 1.50750e+04 +1981 3.67500e+03 1.50250e+04 +1982 3.52500e+03 1.49750e+04 +1983 3.37500e+03 1.49750e+04 +1984 3.37500e+03 1.48750e+04 +1985 3.52500e+03 1.48750e+04 +1986 3.52500e+03 1.47750e+04 +1987 3.42500e+03 1.47250e+04 +1988 3.52500e+03 1.46250e+04 +1989 3.42500e+03 1.45750e+04 +1990 3.27500e+03 1.45750e+04 +1991 3.22500e+03 1.44750e+04 +1992 3.32500e+03 1.43000e+04 +1993 3.47500e+03 1.43000e+04 +1994 3.75000e+03 1.43000e+04 +1995 3.67500e+03 1.42250e+04 +1996 3.72500e+03 1.41250e+04 +1997 3.52500e+03 1.41250e+04 +1998 3.32500e+03 1.40250e+04 +1999 3.42500e+03 1.39250e+04 +2000 3.32500e+03 1.38250e+04 +2001 3.37500e+03 1.36000e+04 +2002 3.52500e+03 1.37250e+04 +2003 3.75000e+03 1.37250e+04 +2004 3.75000e+03 1.35250e+04 +2005 3.75000e+03 1.31250e+04 +2006 3.57400e+03 1.30580e+04 +2007 3.37500e+03 1.32000e+04 +2008 3.17500e+03 1.31750e+04 +2009 3.02500e+03 1.32750e+04 +2010 2.87500e+03 1.32750e+04 +2011 2.87500e+03 1.31750e+04 +2012 3.02500e+03 1.26000e+04 +2013 2.92500e+03 1.26000e+04 +2014 2.82500e+03 1.26000e+04 +2015 2.67500e+03 1.26000e+04 +2016 2.52500e+03 1.26000e+04 +2017 2.37500e+03 1.26000e+04 +2018 2.40000e+03 1.25000e+04 +2019 2.40000e+03 1.24000e+04 +2020 2.32500e+03 1.23250e+04 +2021 2.47500e+03 1.23250e+04 +2022 2.57500e+03 1.22250e+04 +2023 2.52500e+03 1.21250e+04 +2024 2.67500e+03 1.20250e+04 +2025 2.82500e+03 1.21250e+04 +2026 2.77500e+03 1.22250e+04 +2027 2.67500e+03 1.21750e+04 +2028 2.67500e+03 1.23250e+04 +2029 2.87500e+03 1.23250e+04 +2030 3.15000e+03 1.23250e+04 +2031 3.25000e+03 1.25250e+04 +2032 3.25000e+03 1.24250e+04 +2033 3.30000e+03 1.23250e+04 +2034 3.27500e+03 1.22250e+04 +2035 3.32500e+03 1.21250e+04 +2036 3.45000e+03 1.21750e+04 +2037 3.47500e+03 1.23250e+04 +2038 3.52500e+03 1.24250e+04 +2039 3.52500e+03 1.25250e+04 +2040 3.67500e+03 1.25250e+04 +2041 3.67500e+03 1.24250e+04 +2042 3.77500e+03 1.24750e+04 +2043 3.77200e+03 1.23540e+04 +2044 3.80000e+03 1.22250e+04 +2045 3.80000e+03 1.20750e+04 +2046 3.67500e+03 1.20750e+04 +2047 3.67500e+03 1.19250e+04 +2048 3.67500e+03 1.18250e+04 +2049 3.67500e+03 1.17250e+04 +2050 3.67500e+03 1.15750e+04 +2051 3.72500e+03 1.14750e+04 +2052 3.57500e+03 1.14750e+04 +2053 3.40000e+03 1.13250e+04 +2054 3.30000e+03 1.12750e+04 +2055 3.20000e+03 1.13250e+04 +2056 3.30000e+03 1.14250e+04 +2057 3.30000e+03 1.15500e+04 +2058 3.30000e+03 1.16500e+04 +2059 3.40000e+03 1.18250e+04 +2060 3.52500e+03 1.18750e+04 +2061 3.37500e+03 1.19250e+04 +2062 3.22500e+03 1.19250e+04 +2063 3.02500e+03 1.17250e+04 +2064 3.12500e+03 1.17250e+04 +2065 3.20000e+03 1.16750e+04 +2066 3.20000e+03 1.15750e+04 +2067 3.20000e+03 1.14750e+04 +2068 3.12500e+03 1.14250e+04 +2069 3.02500e+03 1.14250e+04 +2070 2.92500e+03 1.13250e+04 +2071 2.72500e+03 1.13250e+04 +2072 2.62500e+03 1.13250e+04 +2073 2.45000e+03 1.08750e+04 +2074 2.45000e+03 1.10750e+04 +2075 2.42500e+03 1.13250e+04 +2076 2.32500e+03 1.14250e+04 +2077 2.22500e+03 1.14250e+04 +2078 2.15000e+03 1.14750e+04 +2079 2.15000e+03 1.15750e+04 +2080 2.05000e+03 1.15750e+04 +2081 2.05000e+03 1.16750e+04 +2082 2.15000e+03 1.16750e+04 +2083 2.22500e+03 1.17500e+04 +2084 2.32500e+03 1.17500e+04 +2085 2.12500e+03 1.19250e+04 +2086 1.97500e+03 1.19250e+04 +2087 1.95000e+03 1.18250e+04 +2088 1.87500e+03 1.19250e+04 +2089 1.92500e+03 1.20750e+04 +2090 2.02500e+03 1.21250e+04 +2091 2.07500e+03 1.22250e+04 +2092 1.92500e+03 1.22250e+04 +2093 1.82500e+03 1.21750e+04 +2094 1.82500e+03 1.24250e+04 +2095 1.82500e+03 1.25750e+04 +2096 1.82500e+03 1.26750e+04 +2097 1.82500e+03 1.28250e+04 +2098 1.56500e+03 1.27600e+04 +2099 1.56500e+03 1.26100e+04 +2100 1.56500e+03 1.24600e+04 +2101 1.56500e+03 1.23100e+04 +2102 1.56500e+03 1.21600e+04 +2103 1.56500e+03 1.20100e+04 +2104 1.72500e+03 1.19250e+04 +2105 1.56500e+03 1.18600e+04 +2106 1.56500e+03 1.17100e+04 +2107 1.67500e+03 1.16500e+04 +2108 1.75000e+03 1.17000e+04 +2109 1.75000e+03 1.16000e+04 +2110 1.67500e+03 1.15250e+04 +2111 1.62500e+03 1.14250e+04 +2112 1.72500e+03 1.14250e+04 +2113 1.95000e+03 1.13250e+04 +2114 2.05000e+03 1.14250e+04 +2115 2.15000e+03 1.13250e+04 +2116 2.05000e+03 1.12750e+04 +2117 2.07500e+03 1.11250e+04 +2118 2.07500e+03 1.10250e+04 +2119 1.97500e+03 1.11250e+04 +2120 1.90000e+03 1.10250e+04 +2121 1.77500e+03 1.10250e+04 +2122 1.62500e+03 1.10500e+04 +2123 1.60000e+03 1.08500e+04 +2124 1.60000e+03 1.07250e+04 +2125 1.60000e+03 1.06250e+04 +2126 1.60000e+03 1.05250e+04 +2127 1.60000e+03 1.04250e+04 +2128 1.72500e+03 1.01250e+04 +2129 1.87500e+03 1.00750e+04 +2130 1.64000e+03 9.80600e+03 +2131 1.63900e+03 9.70600e+03 +2132 1.63900e+03 9.60600e+03 +2133 1.64000e+03 9.50500e+03 +2134 1.64000e+03 9.40600e+03 +2135 1.63900e+03 9.30600e+03 +2136 1.92800e+03 8.82000e+03 +2137 1.82500e+03 8.82500e+03 +2138 1.62500e+03 8.82500e+03 +2139 1.57500e+03 8.47500e+03 +2140 1.57500e+03 8.37500e+03 +2141 1.57500e+03 8.27500e+03 +2142 1.57500e+03 8.17500e+03 +2143 1.57500e+03 8.07500e+03 +2144 1.57500e+03 7.97500e+03 +2145 1.57500e+03 7.87500e+03 +2146 1.67500e+03 7.82500e+03 +2147 1.57500e+03 7.71100e+03 +2148 1.57500e+03 7.71000e+03 +2149 1.57600e+03 7.56000e+03 +2150 1.57500e+03 7.56000e+03 +2151 1.57500e+03 7.41000e+03 +2152 1.57600e+03 7.40900e+03 +2153 1.57500e+03 7.26000e+03 +2154 1.57600e+03 7.25900e+03 +2155 1.57500e+03 7.07500e+03 +2156 1.57500e+03 6.87500e+03 +2157 1.57500e+03 6.67500e+03 +2158 1.72500e+03 6.67500e+03 +2159 1.72500e+03 6.52500e+03 +2160 1.57500e+03 6.52500e+03 +2161 1.57500e+03 6.37500e+03 +2162 1.97500e+03 6.00000e+03 +2163 2.07500e+03 6.02500e+03 +2164 1.97500e+03 6.20000e+03 +2165 2.07500e+03 6.42500e+03 +2166 1.92500e+03 6.67500e+03 +2167 1.92500e+03 6.82500e+03 +2168 2.07500e+03 6.77500e+03 +2169 2.22500e+03 6.77500e+03 +2170 2.07500e+03 6.97500e+03 +2171 1.97500e+03 7.07500e+03 +2172 2.17500e+03 7.07500e+03 +2173 2.27500e+03 7.27500e+03 +2174 2.32500e+03 7.42500e+03 +2175 2.37500e+03 7.52500e+03 +2176 2.17500e+03 7.47500e+03 +2177 2.07500e+03 7.57500e+03 +2178 1.97500e+03 7.47500e+03 +2179 1.92500e+03 7.62500e+03 +2180 1.77500e+03 7.62500e+03 +2181 1.82500e+03 7.72500e+03 +2182 1.97500e+03 7.72500e+03 +2183 2.17500e+03 7.82500e+03 +2184 2.35000e+03 7.77500e+03 +2185 2.35000e+03 7.87500e+03 +2186 2.47500e+03 7.97500e+03 +2187 2.62500e+03 7.97500e+03 +2188 2.57500e+03 8.12500e+03 +2189 2.50000e+03 8.22500e+03 +2190 2.60000e+03 8.22500e+03 +2191 2.60000e+03 8.37500e+03 +2192 2.60000e+03 8.47500e+03 +2193 2.45000e+03 8.57500e+03 +2194 2.37500e+03 8.72500e+03 +2195 2.19700e+03 8.70300e+03 +2196 2.22500e+03 8.82500e+03 +2197 2.42500e+03 8.82500e+03 +2198 2.52500e+03 8.72500e+03 +2199 2.60000e+03 8.62500e+03 +2200 2.82500e+03 8.77500e+03 +2201 2.92500e+03 8.77500e+03 +2202 3.02500e+03 8.77500e+03 +2203 3.12500e+03 8.77500e+03 +2204 3.27500e+03 8.77500e+03 +2205 3.22500e+03 8.62500e+03 +2206 3.32500e+03 8.57500e+03 +2207 3.22500e+03 8.52500e+03 +2208 3.32500e+03 8.22500e+03 +2209 3.42500e+03 8.22500e+03 +2210 3.52500e+03 8.32500e+03 +2211 3.62500e+03 8.32500e+03 +2212 3.62500e+03 8.42500e+03 +2213 3.52500e+03 8.47500e+03 +2214 3.70000e+03 8.77500e+03 +2215 3.80000e+03 8.67500e+03 +2216 3.70000e+03 8.57500e+03 +2217 3.77500e+03 8.37500e+03 +2218 3.77500e+03 8.22500e+03 +2219 3.62500e+03 8.17500e+03 +2220 3.67500e+03 8.07500e+03 +2221 3.77500e+03 8.07500e+03 +2222 3.77500e+03 7.92500e+03 +2223 3.67500e+03 7.87500e+03 +2224 3.52500e+03 7.82500e+03 +2225 3.52500e+03 7.72500e+03 +2226 3.52500e+03 7.62500e+03 +2227 3.52500e+03 7.47500e+03 +2228 3.42500e+03 7.42500e+03 +2229 3.42500e+03 7.57500e+03 +2230 3.37500e+03 7.72500e+03 +2231 3.37500e+03 7.82500e+03 +2232 3.27500e+03 7.97500e+03 +2233 3.12500e+03 7.82500e+03 +2234 2.92500e+03 7.82500e+03 +2235 2.87500e+03 7.92500e+03 +2236 2.97500e+03 7.97500e+03 +2237 3.07500e+03 7.97500e+03 +2238 3.07500e+03 8.07500e+03 +2239 2.97500e+03 8.12500e+03 +2240 2.87500e+03 8.07500e+03 +2241 2.77500e+03 8.12500e+03 +2242 2.77500e+03 8.02500e+03 +2243 2.77500e+03 7.87500e+03 +2244 2.65000e+03 7.75000e+03 +2245 2.80000e+03 7.75000e+03 +2246 2.87500e+03 7.57500e+03 +2247 2.87500e+03 7.42500e+03 +2248 3.02500e+03 7.42500e+03 +2249 3.12500e+03 7.42500e+03 +2250 3.07500e+03 7.57500e+03 +2251 3.17500e+03 7.60000e+03 +2252 3.27500e+03 7.42500e+03 +2253 3.22500e+03 7.32500e+03 +2254 3.32500e+03 7.15000e+03 +2255 3.47500e+03 7.15000e+03 +2256 3.75000e+03 7.15000e+03 +2257 3.67500e+03 7.07500e+03 +2258 3.72500e+03 6.97500e+03 +2259 3.52500e+03 6.97500e+03 +2260 3.32500e+03 6.87500e+03 +2261 3.42500e+03 6.77500e+03 +2262 3.32500e+03 6.67500e+03 +2263 3.37500e+03 6.45000e+03 +2264 3.52500e+03 6.57500e+03 +2265 3.75000e+03 6.57500e+03 +2266 3.75000e+03 6.37500e+03 +2267 3.75000e+03 5.97500e+03 +2268 3.57400e+03 5.90800e+03 +2269 3.37500e+03 6.05000e+03 +2270 3.17500e+03 6.02500e+03 +2271 3.02500e+03 6.12500e+03 +2272 2.87500e+03 6.12500e+03 +2273 2.87500e+03 6.02500e+03 +2274 3.02500e+03 5.45000e+03 +2275 2.92500e+03 5.45000e+03 +2276 2.82500e+03 5.45000e+03 +2277 2.67500e+03 5.45000e+03 +2278 2.52500e+03 5.45000e+03 +2279 2.37500e+03 5.45000e+03 +2280 2.40000e+03 5.35000e+03 +2281 2.40000e+03 5.25000e+03 +2282 2.32500e+03 5.17500e+03 +2283 2.47500e+03 5.17500e+03 +2284 2.57500e+03 5.07500e+03 +2285 2.52500e+03 4.97500e+03 +2286 2.67500e+03 4.87500e+03 +2287 2.82500e+03 4.97500e+03 +2288 2.77500e+03 5.07500e+03 +2289 2.67500e+03 5.02500e+03 +2290 2.67500e+03 5.17500e+03 +2291 2.87500e+03 5.17500e+03 +2292 3.15000e+03 5.17500e+03 +2293 3.25000e+03 5.37500e+03 +2294 3.25000e+03 5.27500e+03 +2295 3.30000e+03 5.17500e+03 +2296 3.27500e+03 5.07500e+03 +2297 3.32500e+03 4.97500e+03 +2298 3.45000e+03 5.02500e+03 +2299 3.47500e+03 5.17500e+03 +2300 3.52500e+03 5.27500e+03 +2301 3.52500e+03 5.37500e+03 +2302 3.67500e+03 5.37500e+03 +2303 3.67500e+03 5.27500e+03 +2304 3.77500e+03 5.32500e+03 +2305 3.77200e+03 5.20400e+03 +2306 3.80000e+03 5.07500e+03 +2307 3.80000e+03 4.92500e+03 +2308 3.67500e+03 4.92500e+03 +2309 3.67500e+03 4.77500e+03 +2310 3.67500e+03 4.67500e+03 +2311 3.67500e+03 4.57500e+03 +2312 3.52500e+03 4.72500e+03 +2313 3.40000e+03 4.67500e+03 +2314 3.37500e+03 4.77500e+03 +2315 3.22500e+03 4.77500e+03 +2316 3.02500e+03 4.57500e+03 +2317 3.12500e+03 4.57500e+03 +2318 3.20000e+03 4.52500e+03 +2319 3.30000e+03 4.50000e+03 +2320 3.30000e+03 4.40000e+03 +2321 3.20000e+03 4.42500e+03 +2322 3.20000e+03 4.32500e+03 +2323 3.12500e+03 4.27500e+03 +2324 3.02500e+03 4.27500e+03 +2325 2.92500e+03 4.17500e+03 +2326 2.90000e+03 3.92500e+03 +2327 2.90000e+03 3.72500e+03 +2328 2.90000e+03 3.32500e+03 +2329 2.45000e+03 3.32500e+03 +2330 2.45000e+03 3.72500e+03 +2331 2.45000e+03 3.92500e+03 +2332 2.72500e+03 4.17500e+03 +2333 2.62500e+03 4.17500e+03 +2334 2.42500e+03 4.17500e+03 +2335 2.32500e+03 4.27500e+03 +2336 2.22500e+03 4.27500e+03 +2337 2.15000e+03 4.32500e+03 +2338 2.15000e+03 4.42500e+03 +2339 2.05000e+03 4.42500e+03 +2340 2.05000e+03 4.52500e+03 +2341 2.15000e+03 4.52500e+03 +2342 2.22500e+03 4.60000e+03 +2343 2.32500e+03 4.60000e+03 +2344 2.12500e+03 4.77500e+03 +2345 1.97500e+03 4.77500e+03 +2346 1.95000e+03 4.67500e+03 +2347 1.87500e+03 4.77500e+03 +2348 1.92500e+03 4.92500e+03 +2349 2.02500e+03 4.97500e+03 +2350 2.07500e+03 5.07500e+03 +2351 1.92500e+03 5.07500e+03 +2352 1.82500e+03 5.02500e+03 +2353 1.82500e+03 5.27500e+03 +2354 1.82500e+03 5.42500e+03 +2355 1.82500e+03 5.52500e+03 +2356 1.82500e+03 5.67500e+03 +2357 1.56500e+03 5.61000e+03 +2358 1.56500e+03 5.46000e+03 +2359 1.56500e+03 5.31000e+03 +2360 1.56500e+03 5.16000e+03 +2361 1.56500e+03 5.01000e+03 +2362 1.56500e+03 4.86000e+03 +2363 1.72500e+03 4.77500e+03 +2364 1.56500e+03 4.71000e+03 +2365 1.56500e+03 4.56000e+03 +2366 1.67500e+03 4.50000e+03 +2367 1.75000e+03 4.55000e+03 +2368 1.75000e+03 4.45000e+03 +2369 1.67500e+03 4.37500e+03 +2370 1.62500e+03 4.27500e+03 +2371 1.72500e+03 4.27500e+03 +2372 1.95000e+03 4.17500e+03 +2373 2.05000e+03 4.27500e+03 +2374 2.15000e+03 4.17500e+03 +2375 2.05000e+03 4.12500e+03 +2376 2.07500e+03 3.97500e+03 +2377 2.07500e+03 3.87500e+03 +2378 1.97500e+03 3.97500e+03 +2379 1.90000e+03 3.87500e+03 +2380 1.77500e+03 3.87500e+03 +2381 1.62500e+03 3.90000e+03 +2382 1.60000e+03 3.70000e+03 +2383 1.60000e+03 3.57500e+03 +2384 1.60000e+03 3.47500e+03 +2385 1.60000e+03 3.37500e+03 +2386 1.60000e+03 3.27500e+03 +2387 1.72500e+03 2.97500e+03 +2388 1.64000e+03 2.65600e+03 +2389 1.63900e+03 2.55600e+03 +2390 1.63900e+03 2.45600e+03 +2391 1.64000e+03 2.35500e+03 +2392 1.64000e+03 2.25600e+03 +EOF diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/benchs/readme b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/benchs/readme new file mode 100644 index 000000000..6a9fb5488 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/benchs/readme @@ -0,0 +1,93 @@ +All the instances in this directory come from the TSPLIB database. All the TSPLIB instances can be downloaded at this address: +http://www.iwr.uni-heidelberg.de/groups/comopt/software/TSPLIB95/tsp/ + +The accepted format is: + +NAME: instance_name +TYPE: TSP +COMMENT: comments about the instance +DIMENSION: number of towns. +EDGE_WEIGHT_TYPE: EUC_2D +NODE_COORD_SECTION +1 565.0 575.0 +2 25.0 185.0 +3 345.0 750.0 +. +. +. +. +. +. +EOF + +Compatibility bugs with some TSPLIB instances (soon corrected): + +==> some instances have a space after a section title, for example "NAME :" instead of "NAME:". +==> several instances have the "COMMENT:" section before the "TYPE:" section. +==> several section are not yet implemented ("DISPLAY_DATA_TYPE:", ...). + +Already corrected bugs: + +==> some instances have several lines with the keyword "COMMENTS:" + +For instance, the Berlin52 instance: + +NAME: berlin52 +TYPE: TSP +COMMENT: 52 locations in Berlin (Groetschel) +DIMENSION: 52 +EDGE_WEIGHT_TYPE: EUC_2D +NODE_COORD_SECTION +1 565.0 575.0 +2 25.0 185.0 +3 345.0 750.0 +4 945.0 685.0 +5 845.0 655.0 +6 880.0 660.0 +7 25.0 230.0 +8 525.0 1000.0 +9 580.0 1175.0 +10 650.0 1130.0 +11 1605.0 620.0 +12 1220.0 580.0 +13 1465.0 200.0 +14 1530.0 5.0 +15 845.0 680.0 +16 725.0 370.0 +17 145.0 665.0 +18 415.0 635.0 +19 510.0 875.0 +20 560.0 365.0 +21 300.0 465.0 +22 520.0 585.0 +23 480.0 415.0 +24 835.0 625.0 +25 975.0 580.0 +26 1215.0 245.0 +27 1320.0 315.0 +28 1250.0 400.0 +29 660.0 180.0 +30 410.0 250.0 +31 420.0 555.0 +32 575.0 665.0 +33 1150.0 1160.0 +34 700.0 580.0 +35 685.0 595.0 +36 685.0 610.0 +37 770.0 610.0 +38 795.0 645.0 +39 720.0 635.0 +40 760.0 650.0 +41 475.0 960.0 +42 95.0 260.0 +43 875.0 920.0 +44 700.0 500.0 +45 555.0 815.0 +46 830.0 485.0 +47 1170.0 65.0 +48 830.0 610.0 +49 605.0 625.0 +50 595.0 360.0 +51 1340.0 725.0 +52 1740.0 245.0 +EOF diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/benchs/rl5915.tsp b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/benchs/rl5915.tsp new file mode 100644 index 000000000..86f6a24fd --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/benchs/rl5915.tsp @@ -0,0 +1,5922 @@ +NAME: rl5915 +TYPE: TSP +COMMENT: 5915-city TSP (Reinelt) +DIMENSION: 5915 +EDGE_WEIGHT_TYPE: EUC_2D +NODE_COORD_SECTION +1 1.81920e+04 8.95400e+03 +2 1.81920e+04 9.85600e+03 +3 1.81920e+04 1.13190e+04 +4 1.82720e+04 8.62400e+03 +5 1.84160e+04 7.34800e+03 +6 1.84160e+04 8.29400e+03 +7 1.20000e+03 7.37000e+03 +8 1.20000e+03 8.18400e+03 +9 1.20000e+03 1.09120e+04 +10 1.20000e+03 1.14400e+04 +11 1.79040e+04 5.72000e+02 +12 1.79040e+04 2.68400e+03 +13 1.79040e+04 6.90800e+03 +14 1.79040e+04 7.34800e+03 +15 1.79040e+04 8.62400e+03 +16 8.27200e+03 3.08000e+02 +17 8.27200e+03 2.06800e+03 +18 8.27200e+03 2.50800e+03 +19 8.27200e+03 3.08000e+03 +20 8.27200e+03 3.60800e+03 +21 8.27200e+03 5.30200e+03 +22 8.33600e+03 7.26000e+03 +23 8.46400e+03 7.26000e+03 +24 8.49600e+03 9.54800e+03 +25 8.49600e+03 1.05820e+04 +26 8.49600e+03 1.14400e+04 +27 1.58880e+04 9.06400e+03 +28 1.58880e+04 9.50400e+03 +29 1.58880e+04 1.02520e+04 +30 1.58880e+04 1.10000e+04 +31 1.59360e+04 8.18400e+03 +32 1.60480e+04 8.18400e+03 +33 1.62080e+04 8.18400e+03 +34 1.63360e+04 5.72000e+02 +35 1.63360e+04 1.01200e+03 +36 1.63360e+04 1.45200e+03 +37 1.63360e+04 2.99200e+03 +38 1.63360e+04 4.81800e+03 +39 1.63360e+04 6.02800e+03 +40 1.63360e+04 7.34800e+03 +41 1.04000e+03 7.37000e+03 +42 1.04000e+03 8.18400e+03 +43 1.04000e+03 1.09120e+04 +44 1.04000e+03 1.14400e+04 +45 4.46400e+03 3.08000e+02 +46 4.64000e+03 3.08000e+02 +47 4.81600e+03 3.08000e+02 +48 4.94400e+03 3.08000e+02 +49 5.16800e+03 3.08000e+02 +50 5.44000e+03 3.08000e+02 +51 5.61600e+03 3.08000e+02 +52 5.72800e+03 3.08000e+02 +53 5.80800e+03 3.08000e+03 +54 5.80800e+03 3.60800e+03 +55 5.80800e+03 4.66400e+03 +56 5.80800e+03 5.36800e+03 +57 5.80800e+03 6.07200e+03 +58 5.80800e+03 7.12800e+03 +59 5.93600e+03 9.65800e+03 +60 5.93600e+03 1.12860e+04 +61 1.68480e+04 5.72000e+02 +62 1.68480e+04 1.45200e+03 +63 1.68480e+04 2.99200e+03 +64 1.68480e+04 4.70800e+03 +65 1.68480e+04 6.02800e+03 +66 1.68480e+04 7.34800e+03 +67 1.68480e+04 8.51400e+03 +68 1.68480e+04 9.28400e+03 +69 1.68480e+04 9.92200e+03 +70 1.68480e+04 1.11980e+04 +71 8.24000e+03 7.48000e+03 +72 8.40000e+03 9.54800e+03 +73 8.40000e+03 1.05820e+04 +74 8.40000e+03 1.14400e+04 +75 1.52000e+03 9.15200e+03 +76 1.52000e+03 1.09120e+04 +77 1.52000e+03 1.14400e+04 +78 1.58400e+03 6.44600e+03 +79 1.58400e+03 7.59000e+03 +80 1.58400e+03 8.29400e+03 +81 5.16800e+03 1.14400e+04 +82 5.28000e+03 1.14400e+04 +83 5.45600e+03 1.14400e+04 +84 5.58400e+03 1.14400e+04 +85 5.71200e+03 1.14400e+04 +86 2.67200e+03 6.33600e+03 +87 2.78400e+03 6.55600e+03 +88 2.97600e+03 6.55600e+03 +89 3.10400e+03 6.55600e+03 +90 3.26400e+03 6.55600e+03 +91 3.36000e+03 6.55600e+03 +92 3.60000e+03 6.55600e+03 +93 3.85600e+03 6.55600e+03 +94 3.92000e+03 6.55600e+03 +95 4.01600e+03 6.55600e+03 +96 4.14400e+03 6.55600e+03 +97 4.20800e+03 6.55600e+03 +98 4.35200e+03 6.55600e+03 +99 4.46400e+03 6.55600e+03 +100 4.56000e+03 6.55600e+03 +101 4.68800e+03 6.55600e+03 +102 4.72000e+03 7.26000e+03 +103 4.72000e+03 8.14000e+03 +104 4.72000e+03 9.70200e+03 +105 4.72000e+03 1.05820e+04 +106 4.72000e+03 1.11320e+04 +107 1.70080e+04 5.72000e+02 +108 1.70080e+04 1.45200e+03 +109 1.70080e+04 2.99200e+03 +110 1.70080e+04 5.87400e+03 +111 1.70080e+04 7.34800e+03 +112 1.70720e+04 8.09600e+03 +113 1.71360e+04 8.09600e+03 +114 1.72800e+04 8.09600e+03 +115 1.74560e+04 8.09600e+03 +116 1.75200e+04 8.40400e+03 +117 1.75200e+04 8.95400e+03 +118 1.75200e+04 1.01420e+04 +119 1.75200e+04 1.13190e+04 +120 8.80000e+02 7.37000e+03 +121 8.80000e+02 8.18400e+03 +122 8.80000e+02 1.14400e+04 +123 4.14400e+03 4.84000e+03 +124 4.14400e+03 7.70000e+03 +125 4.30400e+03 8.36000e+03 +126 4.41600e+03 8.36000e+03 +127 4.57600e+03 8.36000e+03 +128 4.65600e+03 8.36000e+03 +129 4.86400e+03 8.36000e+03 +130 5.04000e+03 8.36000e+03 +131 5.29600e+03 8.36000e+03 +132 5.45600e+03 8.84400e+03 +133 5.45600e+03 9.81200e+03 +134 5.52000e+03 3.60800e+03 +135 5.52000e+03 4.66400e+03 +136 5.52000e+03 5.36800e+03 +137 5.52000e+03 5.91800e+03 +138 5.52000e+03 6.93000e+03 +139 1.65600e+04 8.95400e+03 +140 1.65600e+04 9.92200e+03 +141 1.65920e+04 5.72000e+02 +142 1.65920e+04 1.45200e+03 +143 1.65920e+04 2.99200e+03 +144 1.65920e+04 4.81800e+03 +145 1.65920e+04 6.13800e+03 +146 1.65920e+04 7.34800e+03 +147 7.72800e+03 7.74400e+03 +148 7.72800e+03 9.54800e+03 +149 7.72800e+03 1.08460e+04 +150 7.79200e+03 7.04000e+03 +151 7.85600e+03 7.04000e+03 +152 7.95200e+03 7.04000e+03 +153 8.01600e+03 3.08000e+02 +154 8.01600e+03 2.06800e+03 +155 8.01600e+03 2.50800e+03 +156 8.01600e+03 3.08000e+03 +157 8.01600e+03 3.60800e+03 +158 8.01600e+03 4.26800e+03 +159 8.01600e+03 5.85200e+03 +160 1.62720e+04 9.06400e+03 +161 1.62720e+04 9.50400e+03 +162 1.62720e+04 9.92200e+03 +163 1.62720e+04 1.10000e+04 +164 1.66400e+04 8.84400e+03 +165 1.67200e+04 8.84400e+03 +166 1.67840e+04 6.02800e+03 +167 1.67840e+04 7.34800e+03 +168 1.67840e+04 8.51400e+03 +169 4.64000e+02 1.14400e+04 +170 5.28000e+02 8.18400e+03 +171 6.40000e+02 8.18400e+03 +172 7.84000e+02 7.37000e+03 +173 7.84000e+02 7.96400e+03 +174 7.66400e+03 6.44600e+03 +175 7.66400e+03 8.07400e+03 +176 7.66400e+03 9.54800e+03 +177 7.66400e+03 1.08460e+04 +178 7.72800e+03 3.08000e+02 +179 7.72800e+03 2.06800e+03 +180 7.72800e+03 2.50800e+03 +181 7.72800e+03 3.08000e+03 +182 7.72800e+03 3.60800e+03 +183 7.72800e+03 4.04800e+03 +184 7.72800e+03 4.48800e+03 +185 5.23200e+03 3.60800e+03 +186 5.23200e+03 4.66400e+03 +187 5.23200e+03 5.36800e+03 +188 5.23200e+03 5.91800e+03 +189 5.23200e+03 6.77600e+03 +190 5.52000e+03 7.92000e+03 +191 3.85600e+03 7.48000e+03 +192 3.92000e+03 7.92000e+03 +193 4.01600e+03 7.92000e+03 +194 4.17600e+03 9.15200e+03 +195 4.17600e+03 9.92200e+03 +196 4.17600e+03 1.04720e+04 +197 4.17600e+03 1.09120e+04 +198 4.17600e+03 1.14400e+04 +199 5.98400e+03 7.48000e+02 +200 6.09600e+03 3.08000e+03 +201 6.09600e+03 3.60800e+03 +202 6.09600e+03 4.66400e+03 +203 6.16000e+03 5.36800e+03 +204 6.22400e+03 5.36800e+03 +205 6.32000e+03 5.36800e+03 +206 6.49600e+03 5.36800e+03 +207 6.60800e+03 5.69800e+03 +208 6.60800e+03 6.33600e+03 +209 6.60800e+03 7.50200e+03 +210 6.60800e+03 9.06400e+03 +211 6.60800e+03 1.01420e+04 +212 6.60800e+03 1.10220e+04 +213 1.72000e+04 5.87400e+03 +214 1.72000e+04 7.34800e+03 +215 1.72000e+04 9.28400e+03 +216 1.72000e+04 9.92200e+03 +217 1.72000e+04 1.11980e+04 +218 1.72960e+04 5.19200e+03 +219 1.74400e+04 5.19200e+03 +220 1.75680e+04 5.19200e+03 +221 1.76160e+04 5.72000e+02 +222 1.76160e+04 2.99200e+03 +223 7.24800e+03 1.03620e+04 +224 7.24800e+03 1.12860e+04 +225 7.37600e+03 3.08000e+02 +226 7.37600e+03 9.68000e+02 +227 7.37600e+03 2.06800e+03 +228 7.37600e+03 2.50800e+03 +229 7.37600e+03 3.08000e+03 +230 7.37600e+03 3.60800e+03 +231 7.37600e+03 4.48800e+03 +232 7.37600e+03 5.58800e+03 +233 7.37600e+03 6.55600e+03 +234 7.37600e+03 7.74400e+03 +235 1.80800e+03 6.44600e+03 +236 1.84000e+03 7.43600e+03 +237 1.84000e+03 8.40400e+03 +238 1.84000e+03 9.04200e+03 +239 1.84000e+03 1.09120e+04 +240 1.84000e+03 1.14400e+04 +241 1.22720e+04 9.87800e+03 +242 1.24640e+04 9.06400e+03 +243 1.25920e+04 9.06400e+03 +244 1.27360e+04 9.06400e+03 +245 1.28480e+04 9.02000e+02 +246 1.28480e+04 1.98000e+03 +247 1.28480e+04 2.64000e+03 +248 1.28480e+04 3.16800e+03 +249 1.28480e+04 3.60800e+03 +250 1.28480e+04 4.15800e+03 +251 1.28480e+04 5.36800e+03 +252 1.28480e+04 6.55600e+03 +253 1.28480e+04 6.99600e+03 +254 1.28480e+04 8.00800e+03 +255 1.28480e+04 8.84400e+03 +256 1.64800e+03 8.40400e+03 +257 1.64800e+03 9.15200e+03 +258 1.64800e+03 1.09120e+04 +259 1.64800e+03 1.14400e+04 +260 1.68000e+03 6.44600e+03 +261 1.68000e+03 7.59000e+03 +262 6.25600e+03 9.65800e+03 +263 6.25600e+03 1.10220e+04 +264 1.69760e+04 8.51400e+03 +265 1.69760e+04 9.28400e+03 +266 1.69760e+04 9.92200e+03 +267 1.69760e+04 1.11980e+04 +268 1.70720e+04 5.72000e+03 +269 1.71360e+04 5.72000e+03 +270 1.74400e+04 5.72000e+03 +271 1.76000e+04 5.72000e+03 +272 1.16000e+04 5.72000e+02 +273 1.16000e+04 1.76000e+03 +274 1.16000e+04 3.38800e+03 +275 1.16000e+04 5.25800e+03 +276 1.16000e+04 6.55600e+03 +277 1.16000e+04 6.99600e+03 +278 1.16000e+04 7.89800e+03 +279 1.16320e+04 8.60200e+03 +280 1.16320e+04 9.28400e+03 +281 1.16320e+04 1.02080e+04 +282 1.73760e+04 1.01420e+04 +283 1.77280e+04 1.01420e+04 +284 1.84160e+04 1.01420e+04 +285 1.86080e+04 1.01420e+04 +286 1.87040e+04 1.01420e+04 +287 1.88640e+04 1.01420e+04 +288 1.89920e+04 1.01420e+04 +289 1.90880e+04 1.01420e+04 +290 6.22400e+03 9.68000e+02 +291 6.22400e+03 3.08000e+03 +292 6.22400e+03 3.60800e+03 +293 6.22400e+03 4.66400e+03 +294 6.40000e+03 1.09120e+04 +295 6.76800e+03 1.09120e+04 +296 6.86400e+03 1.12860e+04 +297 1.93600e+03 6.33600e+03 +298 1.93600e+03 7.43600e+03 +299 1.96800e+03 8.40400e+03 +300 1.96800e+03 9.15200e+03 +301 1.96800e+03 1.09120e+04 +302 1.96800e+03 1.14400e+04 +303 3.98400e+03 8.71200e+03 +304 4.30400e+03 8.93200e+03 +305 4.41600e+03 8.93200e+03 +306 4.49600e+03 1.08020e+04 +307 1.54400e+04 1.23200e+03 +308 1.54400e+04 3.60800e+03 +309 1.54400e+04 4.18000e+03 +310 1.54400e+04 4.81800e+03 +311 1.55360e+04 5.80800e+03 +312 1.56480e+04 5.80800e+03 +313 1.57600e+04 5.80800e+03 +314 1.58400e+04 5.80800e+03 +315 1.59360e+04 5.80800e+03 +316 1.60480e+04 5.80800e+03 +317 1.62080e+04 5.80800e+03 +318 5.58400e+03 1.02520e+04 +319 5.72800e+03 1.02520e+04 +320 6.00000e+03 1.02520e+04 +321 6.06400e+03 1.02520e+04 +322 6.16000e+03 1.02520e+04 +323 6.32000e+03 9.68000e+02 +324 6.32000e+03 3.08000e+03 +325 6.32000e+03 3.60800e+03 +326 6.32000e+03 4.66400e+03 +327 6.38400e+03 9.54800e+03 +328 6.38400e+03 1.04720e+04 +329 1.67200e+04 1.11980e+04 +330 1.70880e+04 1.11980e+04 +331 1.73760e+04 1.11980e+04 +332 1.77280e+04 1.11980e+04 +333 1.84160e+04 1.11980e+04 +334 1.86080e+04 1.11980e+04 +335 1.87040e+04 1.11980e+04 +336 1.88480e+04 1.11980e+04 +337 1.52800e+04 5.72000e+02 +338 1.52800e+04 1.23200e+03 +339 1.52800e+04 3.60800e+03 +340 1.52800e+04 4.18000e+03 +341 1.52800e+04 4.81800e+03 +342 1.52800e+04 6.13800e+03 +343 1.52800e+04 7.34800e+03 +344 1.52800e+04 8.22800e+03 +345 1.52800e+04 9.06400e+03 +346 1.52800e+04 9.50400e+03 +347 1.52800e+04 1.02520e+04 +348 1.52800e+04 1.10000e+04 +349 3.47200e+03 7.92000e+03 +350 3.47200e+03 8.71200e+03 +351 3.47200e+03 9.37200e+03 +352 3.47200e+03 1.04720e+04 +353 3.47200e+03 1.09120e+04 +354 3.47200e+03 1.14400e+04 +355 2.08000e+02 1.14400e+04 +356 4.32000e+02 7.96400e+03 +357 9.44000e+02 7.96400e+03 +358 1.10400e+03 7.37000e+03 +359 1.42400e+03 6.44600e+03 +360 1.42400e+03 7.37000e+03 +361 1.42400e+03 8.29400e+03 +362 1.00960e+04 4.37800e+03 +363 1.00960e+04 5.47800e+03 +364 1.00960e+04 6.55600e+03 +365 1.00960e+04 7.48000e+03 +366 1.00960e+04 8.00800e+03 +367 1.00960e+04 8.60200e+03 +368 1.00960e+04 9.28400e+03 +369 1.00960e+04 1.03180e+04 +370 1.00960e+04 1.14400e+04 +371 1.02560e+04 3.60800e+03 +372 1.03360e+04 3.60800e+03 +373 1.04480e+04 3.60800e+03 +374 1.05440e+04 3.60800e+03 +375 1.06080e+04 3.60800e+03 +376 1.06720e+04 3.60800e+03 +377 1.07520e+04 3.60800e+03 +378 1.08640e+04 3.60800e+03 +379 1.09920e+04 3.60800e+03 +380 1.10880e+04 3.60800e+03 +381 1.11680e+04 3.60800e+03 +382 1.12800e+04 3.60800e+03 +383 1.14080e+04 3.60800e+03 +384 6.88000e+02 7.37000e+03 +385 6.88000e+02 1.14400e+04 +386 6.16000e+03 9.68000e+02 +387 6.49600e+03 9.68000e+02 +388 6.59200e+03 9.68000e+02 +389 6.73600e+03 9.68000e+02 +390 6.84800e+03 9.68000e+02 +391 6.94400e+03 9.68000e+02 +392 7.10400e+03 9.68000e+02 +393 7.23200e+03 9.68000e+02 +394 7.55200e+03 9.68000e+02 +395 7.60000e+03 3.08000e+02 +396 7.60000e+03 2.06800e+03 +397 7.60000e+03 2.50800e+03 +398 7.60000e+03 3.08000e+03 +399 7.60000e+03 3.60800e+03 +400 7.60000e+03 4.04800e+03 +401 7.60000e+03 4.48800e+03 +402 7.63200e+03 5.14800e+03 +403 7.79200e+03 5.14800e+03 +404 7.85600e+03 5.14800e+03 +405 7.92000e+03 5.14800e+03 +406 8.11200e+03 5.14800e+03 +407 8.38400e+03 5.14800e+03 +408 8.46400e+03 5.14800e+03 +409 8.62400e+03 5.14800e+03 +410 8.80000e+03 5.14800e+03 +411 8.91200e+03 5.14800e+03 +412 9.21600e+03 5.14800e+03 +413 9.50400e+03 5.14800e+03 +414 9.61600e+03 5.14800e+03 +415 9.74400e+03 5.14800e+03 +416 9.88800e+03 5.14800e+03 +417 9.93600e+03 6.55600e+03 +418 9.93600e+03 7.48000e+03 +419 9.93600e+03 8.38200e+03 +420 9.93600e+03 9.28400e+03 +421 9.93600e+03 1.14400e+04 +422 1.00320e+04 5.72000e+02 +423 1.00320e+04 1.45200e+03 +424 1.00320e+04 2.72800e+03 +425 6.49600e+03 7.08400e+03 +426 6.73600e+03 7.08400e+03 +427 6.76800e+03 9.06400e+03 +428 6.76800e+03 1.01420e+04 +429 9.93600e+03 5.72000e+02 +430 9.93600e+03 1.45200e+03 +431 5.20000e+03 1.00320e+04 +432 7.40800e+03 1.03620e+04 +433 7.56800e+03 1.06920e+04 +434 7.85600e+03 1.06920e+04 +435 7.93600e+03 1.06920e+04 +436 8.03200e+03 1.06920e+04 +437 8.14400e+03 1.06920e+04 +438 8.22400e+03 1.06920e+04 +439 8.32000e+03 1.06920e+04 +440 8.78400e+03 1.06920e+04 +441 8.97600e+03 1.06920e+04 +442 9.40800e+03 1.06920e+04 +443 1.02880e+04 1.06920e+04 +444 1.04000e+04 1.06920e+04 +445 1.05600e+04 1.06920e+04 +446 1.07040e+04 1.06920e+04 +447 1.08640e+04 1.06920e+04 +448 1.09600e+04 1.06920e+04 +449 1.11360e+04 1.06920e+04 +450 1.12640e+04 1.06920e+04 +451 1.13920e+04 1.06920e+04 +452 1.14720e+04 1.06920e+04 +453 1.15680e+04 1.06920e+04 +454 4.88000e+03 9.21800e+03 +455 4.88000e+03 1.00320e+04 +456 4.88000e+03 1.05820e+04 +457 4.88000e+03 1.11320e+04 +458 4.94400e+03 3.60800e+03 +459 4.94400e+03 4.66400e+03 +460 4.94400e+03 5.36800e+03 +461 4.94400e+03 5.91800e+03 +462 4.94400e+03 6.77600e+03 +463 4.94400e+03 7.43600e+03 +464 6.94400e+03 3.08000e+02 +465 7.10400e+03 3.08000e+02 +466 7.23200e+03 3.08000e+02 +467 7.79200e+03 3.08000e+02 +468 7.85600e+03 3.08000e+02 +469 7.92000e+03 3.08000e+02 +470 8.12800e+03 3.08000e+02 +471 8.38400e+03 3.08000e+02 +472 8.46400e+03 3.08000e+02 +473 8.52800e+03 3.08000e+02 +474 8.59200e+03 3.08000e+02 +475 8.68800e+03 3.08000e+02 +476 8.80000e+03 3.08000e+02 +477 8.91200e+03 3.08000e+02 +478 9.00800e+03 3.08000e+02 +479 9.10400e+03 3.08000e+02 +480 9.20000e+03 3.08000e+02 +481 9.23200e+03 1.45200e+03 +482 9.23200e+03 2.28800e+03 +483 9.23200e+03 3.38800e+03 +484 9.34400e+03 7.26000e+03 +485 9.45600e+03 8.60200e+03 +486 9.45600e+03 1.14400e+04 +487 3.56800e+03 7.92000e+03 +488 3.66400e+03 7.92000e+03 +489 3.72800e+03 7.92000e+03 +490 8.24000e+03 9.54800e+03 +491 8.24000e+03 1.14400e+04 +492 9.37600e+03 6.77600e+03 +493 9.77600e+03 5.72000e+02 +494 9.77600e+03 1.45200e+03 +495 9.77600e+03 2.50800e+03 +496 9.77600e+03 3.38800e+03 +497 6.99200e+03 7.85400e+03 +498 6.99200e+03 9.17400e+03 +499 6.99200e+03 9.81200e+03 +500 6.99200e+03 1.03620e+04 +501 7.05600e+03 2.06800e+03 +502 7.05600e+03 3.08000e+03 +503 7.05600e+03 3.60800e+03 +504 7.05600e+03 4.66400e+03 +505 7.05600e+03 5.58800e+03 +506 7.05600e+03 6.55600e+03 +507 1.45120e+04 6.82000e+02 +508 1.46400e+04 3.60800e+03 +509 1.46400e+04 4.04800e+03 +510 1.46400e+04 4.59800e+03 +511 1.46400e+04 6.13800e+03 +512 1.46400e+04 7.56800e+03 +513 1.46400e+04 8.22800e+03 +514 1.46400e+04 9.06400e+03 +515 1.46400e+04 9.50400e+03 +516 1.46400e+04 1.02520e+04 +517 1.46400e+04 1.10000e+04 +518 1.47680e+04 1.01200e+03 +519 1.48480e+04 1.01200e+03 +520 1.49600e+04 1.01200e+03 +521 1.53760e+04 1.01200e+03 +522 1.55360e+04 1.01200e+03 +523 1.56640e+04 1.01200e+03 +524 1.57600e+04 1.01200e+03 +525 1.58400e+04 1.01200e+03 +526 1.59360e+04 1.01200e+03 +527 1.60480e+04 1.01200e+03 +528 1.62080e+04 1.01200e+03 +529 1.64640e+04 1.01200e+03 +530 1.65280e+04 5.72000e+02 +531 1.47360e+04 6.13800e+03 +532 1.47360e+04 7.56800e+03 +533 1.47360e+04 8.22800e+03 +534 1.47360e+04 9.06400e+03 +535 1.47360e+04 9.50400e+03 +536 1.47360e+04 1.02520e+04 +537 1.47360e+04 1.08900e+04 +538 1.47680e+04 4.92800e+03 +539 1.48800e+04 4.92800e+03 +540 1.49760e+04 4.92800e+03 +541 1.53760e+04 4.92800e+03 +542 1.55360e+04 4.92800e+03 +543 1.56480e+04 4.92800e+03 +544 1.57600e+04 4.92800e+03 +545 1.58400e+04 4.92800e+03 +546 1.59360e+04 4.92800e+03 +547 1.60480e+04 4.92800e+03 +548 1.62080e+04 4.92800e+03 +549 1.64640e+04 4.92800e+03 +550 1.67040e+04 4.92800e+03 +551 1.38080e+04 6.02800e+03 +552 1.38080e+04 6.77600e+03 +553 1.38080e+04 7.78800e+03 +554 1.38080e+04 8.22800e+03 +555 1.38080e+04 9.50400e+03 +556 1.38080e+04 1.03620e+04 +557 1.38080e+04 1.11100e+04 +558 1.40320e+04 4.70800e+03 +559 1.41440e+04 4.70800e+03 +560 1.43200e+04 4.70800e+03 +561 1.44640e+04 4.70800e+03 +562 1.69440e+04 4.70800e+03 +563 3.66400e+03 8.71200e+03 +564 3.72800e+03 9.28400e+03 +565 3.76000e+03 9.70200e+03 +566 3.76000e+03 1.04720e+04 +567 3.76000e+03 1.09120e+04 +568 3.76000e+03 1.14400e+04 +569 3.60000e+03 8.71200e+03 +570 3.60000e+03 9.48200e+03 +571 4.04800e+03 9.81200e+03 +572 4.33600e+03 9.81200e+03 +573 4.57600e+03 9.81200e+03 +574 4.65600e+03 9.81200e+03 +575 4.97600e+03 8.84400e+03 +576 8.97600e+03 8.11800e+03 +577 8.97600e+03 9.39400e+03 +578 8.97600e+03 1.14400e+04 +579 1.01760e+04 6.55600e+03 +580 1.03040e+04 6.55600e+03 +581 1.04480e+04 6.55600e+03 +582 1.05760e+04 6.55600e+03 +583 1.07360e+04 6.55600e+03 +584 1.08320e+04 6.55600e+03 +585 1.08960e+04 6.55600e+03 +586 1.09760e+04 6.55600e+03 +587 1.10880e+04 6.55600e+03 +588 1.11680e+04 6.55600e+03 +589 1.12640e+04 6.55600e+03 +590 1.14240e+04 6.55600e+03 +591 1.15360e+04 6.55600e+03 +592 1.16640e+04 6.55600e+03 +593 1.17280e+04 6.55600e+03 +594 1.17920e+04 6.55600e+03 +595 1.18720e+04 6.55600e+03 +596 1.19680e+04 6.55600e+03 +597 1.21120e+04 6.55600e+03 +598 1.22720e+04 6.55600e+03 +599 1.24480e+04 6.55600e+03 +600 1.26080e+04 6.55600e+03 +601 1.27360e+04 6.55600e+03 +602 1.30080e+04 6.55600e+03 +603 1.30720e+04 1.01200e+03 +604 1.30720e+04 1.98000e+03 +605 1.30720e+04 2.64000e+03 +606 1.30720e+04 3.60800e+03 +607 1.30720e+04 4.26800e+03 +608 1.30720e+04 5.36800e+03 +609 1.31680e+04 5.72000e+02 +610 1.32640e+04 5.72000e+02 +611 1.34080e+04 5.72000e+02 +612 1.35680e+04 5.72000e+02 +613 1.36960e+04 5.72000e+02 +614 1.40160e+04 5.72000e+02 +615 1.41600e+04 5.72000e+02 +616 1.43200e+04 5.72000e+02 +617 1.51200e+04 5.72000e+02 +618 1.53760e+04 5.72000e+02 +619 1.04800e+04 5.72000e+02 +620 1.04800e+04 1.45200e+03 +621 1.04800e+04 6.00600e+03 +622 7.12000e+03 2.50800e+03 +623 7.12000e+03 3.08000e+03 +624 7.12000e+03 3.60800e+03 +625 7.12000e+03 4.66400e+03 +626 7.12000e+03 5.58800e+03 +627 7.12000e+03 6.55600e+03 +628 7.12000e+03 7.74400e+03 +629 7.12000e+03 9.06400e+03 +630 7.12000e+03 9.81200e+03 +631 7.12000e+03 1.03620e+04 +632 7.12000e+03 1.12860e+04 +633 3.72800e+03 8.71200e+03 +634 4.01600e+03 1.04720e+04 +635 4.01600e+03 1.09120e+04 +636 4.01600e+03 1.14400e+04 +637 6.48000e+03 9.06400e+03 +638 6.89600e+03 9.06400e+03 +639 7.24800e+03 2.06800e+03 +640 7.24800e+03 2.50800e+03 +641 7.24800e+03 3.08000e+03 +642 7.24800e+03 3.60800e+03 +643 7.24800e+03 4.66400e+03 +644 7.24800e+03 5.58800e+03 +645 7.24800e+03 6.55600e+03 +646 7.24800e+03 7.48000e+03 +647 3.92000e+03 8.71200e+03 +648 5.05600e+03 9.37200e+03 +649 3.53600e+03 9.37200e+03 +650 3.53600e+03 1.04720e+04 +651 3.53600e+03 1.09120e+04 +652 3.53600e+03 1.14400e+04 +653 8.78400e+03 8.44800e+03 +654 1.03040e+04 8.44800e+03 +655 1.05600e+04 8.44800e+03 +656 1.07040e+04 8.44800e+03 +657 1.07680e+04 8.44800e+03 +658 1.08480e+04 8.44800e+03 +659 1.09760e+04 8.44800e+03 +660 1.11200e+04 8.44800e+03 +661 1.12640e+04 8.44800e+03 +662 1.15520e+04 8.44800e+03 +663 1.17600e+04 8.44800e+03 +664 1.18880e+04 8.44800e+03 +665 1.20800e+04 8.44800e+03 +666 1.22400e+04 8.44800e+03 +667 1.27200e+04 5.72000e+02 +668 1.27200e+04 1.98000e+03 +669 1.27200e+04 3.71800e+03 +670 1.27200e+04 5.36800e+03 +671 1.27200e+04 6.99600e+03 +672 2.80000e+03 7.32600e+03 +673 2.92800e+03 7.70000e+03 +674 2.99200e+03 7.70000e+03 +675 3.10400e+03 7.70000e+03 +676 3.26400e+03 7.70000e+03 +677 4.20800e+03 7.70000e+03 +678 8.11200e+03 2.06800e+03 +679 8.11200e+03 2.50800e+03 +680 8.11200e+03 3.08000e+03 +681 8.11200e+03 3.60800e+03 +682 8.11200e+03 4.26800e+03 +683 8.11200e+03 7.48000e+03 +684 9.58400e+03 2.72800e+03 +685 9.58400e+03 3.38800e+03 +686 9.84000e+03 2.28800e+03 +687 1.14400e+04 2.28800e+03 +688 1.17280e+04 2.28800e+03 +689 1.18240e+04 2.28800e+03 +690 1.19840e+04 2.28800e+03 +691 1.21120e+04 2.28800e+03 +692 1.22560e+04 2.28800e+03 +693 1.23840e+04 2.28800e+03 +694 1.24640e+04 2.28800e+03 +695 1.24960e+04 5.72000e+02 +696 1.24960e+04 1.23200e+03 +697 1.26080e+04 1.01200e+03 +698 5.58400e+03 7.92000e+03 +699 5.68000e+03 7.92000e+03 +700 5.76000e+03 7.92000e+03 +701 6.89600e+03 7.92000e+03 +702 7.56800e+03 7.92000e+03 +703 8.14400e+03 7.92000e+03 +704 8.20800e+03 7.92000e+03 +705 9.13600e+03 7.59000e+03 +706 1.05440e+04 6.11600e+03 +707 1.10880e+04 6.11600e+03 +708 1.11680e+04 6.11600e+03 +709 1.12640e+04 6.11600e+03 +710 1.13120e+04 5.72000e+02 +711 1.13120e+04 1.49600e+03 +712 1.13120e+04 5.25800e+03 +713 1.07680e+04 5.72000e+02 +714 1.07680e+04 1.34200e+03 +715 1.07680e+04 4.48800e+03 +716 1.07680e+04 5.03800e+03 +717 1.07680e+04 5.58800e+03 +718 1.07680e+04 6.99600e+03 +719 1.07680e+04 9.28400e+03 +720 1.07680e+04 9.87800e+03 +721 5.58400e+03 8.84400e+03 +722 5.61600e+03 3.08000e+03 +723 6.16000e+03 3.08000e+03 +724 6.49600e+03 3.08000e+03 +725 6.60800e+03 3.08000e+03 +726 6.73600e+03 3.08000e+03 +727 6.84800e+03 3.08000e+03 +728 6.94400e+03 3.08000e+03 +729 7.79200e+03 3.08000e+03 +730 7.85600e+03 3.08000e+03 +731 7.92000e+03 3.08000e+03 +732 8.38400e+03 3.08000e+03 +733 8.46400e+03 3.08000e+03 +734 8.56000e+03 3.08000e+03 +735 8.68800e+03 3.08000e+03 +736 8.80000e+03 3.08000e+03 +737 8.91200e+03 3.08000e+03 +738 9.00800e+03 3.08000e+03 +739 8.68800e+03 2.28800e+03 +740 8.46400e+03 6.11600e+03 +741 8.52800e+03 2.06800e+03 +742 8.52800e+03 2.50800e+03 +743 8.52800e+03 3.60800e+03 +744 8.46400e+03 2.06800e+03 +745 8.46400e+03 2.50800e+03 +746 8.46400e+03 3.60800e+03 +747 1.74560e+04 5.72000e+02 +748 1.74560e+04 2.99200e+03 +749 1.74560e+04 7.23800e+03 +750 1.17280e+04 2.94800e+03 +751 1.18240e+04 2.94800e+03 +752 1.19840e+04 2.94800e+03 +753 1.21120e+04 2.94800e+03 +754 1.22560e+04 2.94800e+03 +755 1.23840e+04 2.94800e+03 +756 1.24640e+04 2.94800e+03 +757 1.25600e+04 5.72000e+02 +758 1.25600e+04 1.98000e+03 +759 1.25600e+04 2.72800e+03 +760 1.75520e+04 7.23800e+03 +761 1.76320e+04 8.18400e+03 +762 1.77760e+04 8.18400e+03 +763 1.80800e+04 8.18400e+03 +764 1.82560e+04 9.06400e+03 +765 1.04480e+04 1.00320e+04 +766 1.05600e+04 1.00320e+04 +767 1.07040e+04 1.00320e+04 +768 1.08640e+04 1.00320e+04 +769 1.09760e+04 1.00320e+04 +770 1.11360e+04 1.00320e+04 +771 1.17600e+04 1.00320e+04 +772 1.18880e+04 1.00320e+04 +773 1.20320e+04 1.00320e+04 +774 1.21440e+04 1.00320e+04 +775 1.28800e+04 1.00320e+04 +776 1.30080e+04 1.00320e+04 +777 1.31680e+04 1.00320e+04 +778 1.33120e+04 1.00320e+04 +779 1.34720e+04 1.00320e+04 +780 1.35840e+04 1.00320e+04 +781 1.36800e+04 3.60800e+03 +782 1.36800e+04 4.26800e+03 +783 1.36800e+04 6.02800e+03 +784 1.36800e+04 6.77600e+03 +785 1.36800e+04 8.00800e+03 +786 1.36800e+04 9.50400e+03 +787 1.77600e+04 6.90800e+03 +788 1.80480e+04 6.90800e+03 +789 1.81280e+04 7.34800e+03 +790 1.26400e+04 3.38800e+03 +791 1.27840e+04 2.64000e+03 +792 1.27840e+04 3.16800e+03 +793 1.09760e+04 8.00800e+03 +794 1.10880e+04 8.00800e+03 +795 1.12640e+04 8.00800e+03 +796 1.16640e+04 8.00800e+03 +797 1.17280e+04 8.00800e+03 +798 1.17920e+04 8.00800e+03 +799 1.18880e+04 8.00800e+03 +800 1.29120e+04 8.00800e+03 +801 1.30080e+04 8.00800e+03 +802 1.31840e+04 8.00800e+03 +803 1.33280e+04 8.00800e+03 +804 1.34560e+04 8.00800e+03 +805 1.35680e+04 8.00800e+03 +806 8.40000e+03 2.06800e+03 +807 8.40000e+03 2.50800e+03 +808 8.40000e+03 3.60800e+03 +809 9.32800e+03 1.45200e+03 +810 9.52000e+03 1.45200e+03 +811 9.63200e+03 1.45200e+03 +812 9.84000e+03 1.45200e+03 +813 1.01600e+04 1.45200e+03 +814 1.02560e+04 1.45200e+03 +815 1.03360e+04 1.45200e+03 +816 1.05440e+04 1.45200e+03 +817 1.06080e+04 1.45200e+03 +818 1.06720e+04 1.45200e+03 +819 1.08640e+04 1.45200e+03 +820 1.09920e+04 1.45200e+03 +821 1.10880e+04 1.45200e+03 +822 1.11680e+04 1.45200e+03 +823 1.23040e+04 5.72000e+02 +824 1.48640e+04 3.60800e+03 +825 1.48640e+04 4.04800e+03 +826 1.48640e+04 6.13800e+03 +827 1.48640e+04 7.56800e+03 +828 1.48640e+04 8.22800e+03 +829 1.48640e+04 9.06400e+03 +830 1.48640e+04 9.50400e+03 +831 1.48640e+04 1.02520e+04 +832 1.48640e+04 1.08900e+04 +833 7.79200e+03 2.06800e+03 +834 7.79200e+03 2.50800e+03 +835 7.79200e+03 3.60800e+03 +836 7.79200e+03 4.04800e+03 +837 7.79200e+03 4.48800e+03 +838 7.79200e+03 6.44600e+03 +839 1.53760e+04 3.60800e+03 +840 1.53760e+04 4.18000e+03 +841 1.53760e+04 6.13800e+03 +842 1.53760e+04 7.34800e+03 +843 6.86400e+03 2.06800e+03 +844 6.86400e+03 3.60800e+03 +845 6.86400e+03 4.77400e+03 +846 6.92800e+03 5.36800e+03 +847 1.05440e+04 5.36800e+03 +848 1.06720e+04 5.36800e+03 +849 1.07040e+04 9.28400e+03 +850 1.24640e+04 1.10000e+04 +851 1.25920e+04 1.10000e+04 +852 1.27360e+04 1.10000e+04 +853 1.28800e+04 1.10000e+04 +854 1.30080e+04 1.10000e+04 +855 1.31680e+04 1.10000e+04 +856 1.33120e+04 1.10000e+04 +857 1.34560e+04 1.10000e+04 +858 1.35840e+04 1.10000e+04 +859 1.41440e+04 1.10000e+04 +860 1.42240e+04 1.10000e+04 +861 1.43360e+04 1.10000e+04 +862 1.44160e+04 1.10000e+04 +863 1.49920e+04 1.10000e+04 +864 1.54400e+04 1.10000e+04 +865 1.56320e+04 1.10000e+04 +866 1.57600e+04 1.10000e+04 +867 1.58240e+04 1.10000e+04 +868 1.61600e+04 1.10000e+04 +869 1.64640e+04 1.10000e+04 +870 1.59520e+04 5.72000e+02 +871 1.59520e+04 1.45200e+03 +872 1.60480e+04 2.99200e+03 +873 1.62080e+04 2.99200e+03 +874 1.64640e+04 2.99200e+03 +875 1.67040e+04 2.99200e+03 +876 1.70720e+04 2.99200e+03 +877 1.71360e+04 2.99200e+03 +878 1.72960e+04 2.99200e+03 +879 1.56640e+04 5.72000e+02 +880 1.56640e+04 3.60800e+03 +881 1.56640e+04 4.18000e+03 +882 1.56640e+04 7.34800e+03 +883 1.56640e+04 7.78800e+03 +884 1.56640e+04 9.06400e+03 +885 1.56640e+04 9.50400e+03 +886 1.56640e+04 1.02520e+04 +887 1.64320e+04 1.45200e+03 +888 8.14400e+03 9.54800e+03 +889 8.14400e+03 1.14400e+04 +890 9.61600e+03 5.72000e+02 +891 1.21120e+04 5.72000e+02 +892 1.21120e+04 3.93800e+03 +893 1.21120e+04 5.25800e+03 +894 8.30400e+03 9.54800e+03 +895 8.30400e+03 1.14400e+04 +896 1.29120e+04 8.84400e+03 +897 1.30080e+04 8.84400e+03 +898 1.31840e+04 8.84400e+03 +899 1.33280e+04 8.84400e+03 +900 1.34560e+04 8.84400e+03 +901 1.35520e+04 3.60800e+03 +902 1.35520e+04 4.37800e+03 +903 1.35520e+04 5.36800e+03 +904 1.35520e+04 6.02800e+03 +905 1.35520e+04 6.77600e+03 +906 1.19200e+04 6.99600e+03 +907 1.19200e+04 9.28400e+03 +908 1.19520e+04 5.72000e+02 +909 1.19520e+04 3.93800e+03 +910 1.19520e+04 5.25800e+03 +911 1.03200e+04 5.72000e+02 +912 1.04480e+04 1.14400e+04 +913 1.18240e+04 5.72000e+02 +914 1.18240e+04 3.93800e+03 +915 1.18240e+04 5.25800e+03 +916 1.26560e+04 5.36800e+03 +917 5.00800e+03 1.06920e+04 +918 5.00800e+03 1.11320e+04 +919 1.31680e+04 1.98000e+03 +920 1.31680e+04 2.64000e+03 +921 1.31680e+04 3.60800e+03 +922 1.31680e+04 4.37800e+03 +923 1.31680e+04 5.47800e+03 +924 1.32320e+04 6.02800e+03 +925 1.33760e+04 6.02800e+03 +926 1.34880e+04 6.02800e+03 +927 1.40320e+04 6.02800e+03 +928 1.41440e+04 6.02800e+03 +929 1.42240e+04 6.02800e+03 +930 1.43200e+04 6.02800e+03 +931 1.44640e+04 6.02800e+03 +932 1.49760e+04 6.02800e+03 +933 1.67040e+04 6.02800e+03 +934 3.28000e+03 1.09120e+04 +935 3.28000e+03 1.14400e+04 +936 6.73600e+03 3.08000e+02 +937 6.73600e+03 2.06800e+03 +938 6.73600e+03 3.60800e+03 +939 6.73600e+03 4.77400e+03 +940 6.73600e+03 5.69800e+03 +941 6.73600e+03 6.33600e+03 +942 8.78400e+03 1.14400e+04 +943 1.02880e+04 1.14400e+04 +944 1.05120e+04 1.14400e+04 +945 1.17920e+04 6.99600e+03 +946 8.72000e+03 4.15800e+03 +947 6.80000e+03 5.80800e+03 +948 6.80000e+03 6.33600e+03 +949 6.91200e+03 6.55600e+03 +950 7.85600e+03 6.55600e+03 +951 8.89600e+03 6.55600e+03 +952 8.94400e+03 2.28800e+03 +953 8.94400e+03 3.60800e+03 +954 7.56800e+03 9.50400e+03 +955 7.85600e+03 9.50400e+03 +956 8.78400e+03 9.50400e+03 +957 1.41440e+04 8.22800e+03 +958 1.42240e+04 8.22800e+03 +959 1.43360e+04 8.22800e+03 +960 1.44160e+04 8.22800e+03 +961 1.44800e+04 8.22800e+03 +962 1.54400e+04 8.22800e+03 +963 1.55040e+04 8.22800e+03 +964 1.55360e+04 3.60800e+03 +965 1.55360e+04 4.18000e+03 +966 1.55360e+04 7.34800e+03 +967 1.55680e+04 5.72000e+02 +968 1.57600e+04 5.72000e+02 +969 1.58400e+04 5.72000e+02 +970 1.60480e+04 5.72000e+02 +971 1.62080e+04 5.72000e+02 +972 1.67040e+04 5.72000e+02 +973 1.71040e+04 5.72000e+02 +974 1.72960e+04 5.72000e+02 +975 1.80000e+04 5.72000e+02 +976 1.80800e+04 5.72000e+02 +977 1.17280e+04 5.72000e+02 +978 1.17280e+04 3.93800e+03 +979 1.17280e+04 5.25800e+03 +980 1.17280e+04 6.99600e+03 +981 1.17600e+04 9.28400e+03 +982 1.22720e+04 3.93800e+03 +983 1.22720e+04 5.25800e+03 +984 1.05120e+04 9.28400e+03 +985 7.85600e+03 4.04800e+03 +986 7.92000e+03 4.04800e+03 +987 8.78400e+03 2.28800e+03 +988 8.78400e+03 3.60800e+03 +989 8.78400e+03 4.26800e+03 +990 7.92000e+03 2.06800e+03 +991 7.92000e+03 2.50800e+03 +992 7.92000e+03 3.60800e+03 +993 7.92000e+03 4.48800e+03 +994 8.88000e+03 4.26800e+03 +995 1.05440e+04 5.72000e+02 +996 1.05440e+04 6.99600e+03 +997 1.06080e+04 4.48800e+03 +998 9.00800e+03 2.28800e+03 +999 9.31200e+03 2.28800e+03 +1000 1.14400e+04 5.72000e+02 +1001 1.14400e+04 5.25800e+03 +1002 1.14400e+04 6.99600e+03 +1003 1.15360e+04 6.99600e+03 +1004 1.58240e+04 7.34800e+03 +1005 1.58240e+04 7.78800e+03 +1006 1.58240e+04 9.06400e+03 +1007 1.58240e+04 9.50400e+03 +1008 1.58240e+04 1.02520e+04 +1009 6.60800e+03 2.06800e+03 +1010 6.60800e+03 3.60800e+03 +1011 6.60800e+03 4.66400e+03 +1012 6.89600e+03 5.80800e+03 +1013 1.12000e+02 1.11980e+04 +1014 1.06720e+04 4.48800e+03 +1015 1.08320e+04 4.48800e+03 +1016 1.08640e+04 5.72000e+02 +1017 1.08640e+04 5.03800e+03 +1018 1.10880e+04 6.99600e+03 +1019 9.52000e+03 5.72000e+02 +1020 9.52000e+03 2.06800e+03 +1021 1.22400e+04 6.99600e+03 +1022 3.28000e+03 8.71200e+03 +1023 3.28000e+03 9.15200e+03 +1024 3.63200e+03 1.04720e+04 +1025 3.63200e+03 1.09120e+04 +1026 3.63200e+03 1.14400e+04 +1027 1.15680e+04 9.28400e+03 +1028 1.41280e+04 1.04720e+04 +1029 1.41600e+04 1.34200e+03 +1030 1.41600e+04 3.60800e+03 +1031 1.41600e+04 4.04800e+03 +1032 1.41600e+04 6.77600e+03 +1033 1.41600e+04 7.67800e+03 +1034 1.41600e+04 9.50400e+03 +1035 4.08000e+03 1.04720e+04 +1036 4.33600e+03 1.04720e+04 +1037 4.57600e+03 1.04720e+04 +1038 4.97600e+03 1.00320e+04 +1039 5.28000e+02 7.37000e+03 +1040 1.60160e+04 1.45200e+03 +1041 1.60160e+04 7.34800e+03 +1042 1.60160e+04 9.06400e+03 +1043 1.60160e+04 9.50400e+03 +1044 1.61600e+04 9.92200e+03 +1045 1.64640e+04 9.92200e+03 +1046 1.66400e+04 9.92200e+03 +1047 1.67200e+04 9.92200e+03 +1048 1.70880e+04 9.92200e+03 +1049 1.74400e+03 1.09120e+04 +1050 2.11200e+03 1.09120e+04 +1051 2.36800e+03 1.09120e+04 +1052 2.54400e+03 1.09120e+04 +1053 2.94400e+03 1.09120e+04 +1054 3.05600e+03 8.71200e+03 +1055 3.05600e+03 9.15200e+03 +1056 3.08800e+03 1.09120e+04 +1057 4.08000e+03 1.09120e+04 +1058 4.33600e+03 1.09120e+04 +1059 4.43200e+03 1.09120e+04 +1060 1.34560e+04 9.50400e+03 +1061 1.42240e+04 7.78800e+03 +1062 1.43360e+04 7.78800e+03 +1063 1.44160e+04 7.78800e+03 +1064 1.44480e+04 1.34200e+03 +1065 1.44480e+04 3.60800e+03 +1066 1.44480e+04 4.04800e+03 +1067 1.28000e+03 8.40400e+03 +1068 1.74400e+03 8.40400e+03 +1069 1.90400e+03 8.40400e+03 +1070 2.16000e+03 8.40400e+03 +1071 2.22400e+03 8.40400e+03 +1072 2.36800e+03 8.40400e+03 +1073 2.54400e+03 8.40400e+03 +1074 2.70400e+03 7.54600e+03 +1075 1.40320e+04 1.34200e+03 +1076 1.40320e+04 3.60800e+03 +1077 1.40320e+04 6.77600e+03 +1078 1.49760e+04 7.56800e+03 +1079 1.43200e+04 4.04800e+03 +1080 1.47680e+04 4.04800e+03 +1081 1.33920e+04 1.98000e+03 +1082 1.33920e+04 3.60800e+03 +1083 1.33920e+04 4.37800e+03 +1084 1.33920e+04 5.36800e+03 +1085 1.66880e+04 1.45200e+03 +1086 1.33600e+04 6.77600e+03 +1087 1.62080e+04 1.45200e+03 +1088 1.62080e+04 7.34800e+03 +1089 1.50400e+03 6.33600e+03 +1090 2.06400e+03 6.33600e+03 +1091 2.16000e+03 6.33600e+03 +1092 2.22400e+03 6.33600e+03 +1093 2.38400e+03 6.33600e+03 +1094 2.54400e+03 6.33600e+03 +1095 4.56000e+03 7.37000e+03 +1096 4.30400e+03 7.26000e+03 +1097 4.38400e+03 7.26000e+03 +1098 4.46400e+03 7.26000e+03 +1099 4.81600e+03 7.26000e+03 +1100 4.88000e+03 7.26000e+03 +1101 1.43520e+04 1.34200e+03 +1102 1.43520e+04 3.60800e+03 +1103 1.43520e+04 9.50400e+03 +1104 1.43520e+04 1.02520e+04 +1105 5.74400e+03 8.84400e+03 +1106 4.33600e+03 1.14400e+04 +1107 6.16000e+03 3.60800e+03 +1108 6.16000e+03 4.66400e+03 +1109 6.16000e+03 1.11320e+04 +1110 6.51200e+03 3.60800e+03 +1111 6.51200e+03 4.66400e+03 +1112 6.92800e+03 2.06800e+03 +1113 6.92800e+03 3.60800e+03 +1114 6.92800e+03 4.66400e+03 +1115 1.12800e+04 6.99600e+03 +1116 1.25920e+04 6.99600e+03 +1117 1.34880e+04 3.60800e+03 +1118 1.47680e+04 3.60800e+03 +1119 1.49600e+04 3.60800e+03 +1120 1.57600e+04 3.60800e+03 +1121 1.58400e+04 3.60800e+03 +1122 1.59200e+04 7.34800e+03 +1123 1.23680e+04 5.72000e+02 +1124 1.23680e+04 1.23200e+03 +1125 1.23680e+04 3.93800e+03 +1126 1.23680e+04 5.25800e+03 +1127 1.16640e+04 6.99600e+03 +1128 1.77760e+04 2.68400e+03 +1129 1.24640e+04 3.93800e+03 +1130 1.34880e+04 4.26800e+03 +1131 1.32320e+04 6.66600e+03 +1132 1.01920e+04 5.72000e+02 +1133 9.44000e+02 7.37000e+03 +1134 1.08480e+04 9.28400e+03 +1135 1.70880e+04 9.28400e+03 +1136 1.73440e+04 9.28400e+03 +1137 4.59200e+03 4.84000e+03 +1138 4.59200e+03 6.02800e+03 +1139 1.10240e+04 5.72000e+02 +1140 1.10240e+04 5.03800e+03 +1141 2.38400e+03 7.43600e+03 +1142 2.38400e+03 9.15200e+03 +1143 2.38400e+03 1.14400e+04 +1144 2.92800e+03 8.71200e+03 +1145 2.92800e+03 9.15200e+03 +1146 2.92800e+03 1.14400e+04 +1147 2.54400e+03 7.54600e+03 +1148 2.54400e+03 9.15200e+03 +1149 2.54400e+03 1.14400e+04 +1150 9.64800e+03 7.48000e+03 +1151 2.04800e+03 7.17200e+03 +1152 2.16000e+03 7.17200e+03 +1153 2.22400e+03 7.17200e+03 +1154 3.44000e+03 7.17200e+03 +1155 1.74400e+03 9.04200e+03 +1156 1.74400e+03 1.14400e+04 +1157 2.09600e+03 9.15200e+03 +1158 2.09600e+03 1.14400e+04 +1159 3.05600e+03 1.14400e+04 +1160 1.09600e+04 6.99600e+03 +1161 2.99200e+03 8.71200e+03 +1162 2.99200e+03 9.15200e+03 +1163 1.08960e+04 6.99600e+03 +1164 4.08000e+03 1.14400e+04 +1165 1.61440e+04 9.06400e+03 +1166 1.61440e+04 9.50400e+03 +1167 1.42240e+04 6.77600e+03 +1168 1.42240e+04 9.50400e+03 +1169 1.42240e+04 1.02520e+04 +1170 1.71040e+04 8.62400e+03 +1171 1.71360e+04 7.34800e+03 +1172 1.54400e+04 9.06400e+03 +1173 1.54400e+04 9.50400e+03 +1174 1.54400e+04 1.02520e+04 +1175 1.57600e+04 7.78800e+03 +1176 1.58560e+04 1.45200e+03 +1177 4.20800e+03 4.84000e+03 +1178 1.83200e+04 7.34800e+03 +1179 1.57600e+04 4.18000e+03 +1180 9.71200e+03 7.48000e+03 +1181 1.70720e+04 1.45200e+03 +1182 1.70720e+04 7.34800e+03 +1183 1.64640e+04 9.50400e+03 +1184 7.85600e+03 2.06800e+03 +1185 7.85600e+03 2.50800e+03 +1186 7.85600e+03 3.60800e+03 +1187 7.85600e+03 4.48800e+03 +1188 1.67200e+04 7.34800e+03 +1189 1.55040e+04 9.06400e+03 +1190 4.36800e+03 4.84000e+03 +1191 6.00000e+03 1.11320e+04 +1192 6.06400e+03 1.11320e+04 +1193 4.68800e+03 5.80800e+03 +1194 4.81600e+03 5.80800e+03 +1195 4.88000e+03 5.80800e+03 +1196 9.00800e+03 3.60800e+03 +1197 1.57600e+04 9.06400e+03 +1198 1.74240e+04 9.06400e+03 +1199 1.85120e+04 8.29400e+03 +1200 4.88000e+03 4.66400e+03 +1201 4.88000e+03 5.36800e+03 +1202 4.88000e+03 6.77600e+03 +1203 4.68800e+03 4.48800e+03 +1204 4.75200e+03 4.48800e+03 +1205 4.81600e+03 4.48800e+03 +1206 1.86080e+04 8.86600e+03 +1207 1.44160e+04 9.50400e+03 +1208 1.44160e+04 1.02520e+04 +1209 1.57600e+04 7.34800e+03 +1210 1.82240e+04 7.34800e+03 +1211 1.34240e+04 6.77600e+03 +1212 1.87040e+04 8.86600e+03 +1213 1.10880e+04 4.92800e+03 +1214 1.11680e+04 4.92800e+03 +1215 1.24640e+04 5.36800e+03 +1216 1.57600e+04 1.45200e+03 +1217 1.57600e+04 9.50400e+03 +1218 1.57600e+04 1.02520e+04 +1219 4.32000e+02 7.48000e+03 +1220 1.11680e+04 6.99600e+03 +1221 1.34880e+04 6.77600e+03 +1222 1.35840e+04 9.50400e+03 +1223 1.34880e+04 5.36800e+03 +1224 1.11840e+04 5.72000e+02 +1225 4.46400e+03 4.84000e+03 +1226 4.52800e+03 4.84000e+03 +1227 4.81600e+03 5.36800e+03 +1228 4.81600e+03 6.77600e+03 +1229 1.10880e+04 5.72000e+02 +1230 1.06720e+04 5.72000e+02 +1231 1.02560e+04 5.72000e+02 +1232 9.84000e+03 5.72000e+02 +1233 1.81920e+04 1.06700e+04 +1234 1.83790e+04 8.62400e+03 +1235 1.84160e+04 3.61900e+03 +1236 1.84160e+04 7.76600e+03 +1237 1.20000e+03 3.57500e+03 +1238 1.20000e+03 9.65800e+03 +1239 1.79040e+04 2.31000e+02 +1240 1.79040e+04 1.62800e+03 +1241 1.79040e+04 4.79600e+03 +1242 1.79040e+04 7.76600e+03 +1243 1.79040e+04 9.43800e+03 +1244 1.79400e+04 9.57000e+03 +1245 1.82240e+04 1.06700e+04 +1246 8.27200e+03 1.18800e+03 +1247 8.27200e+03 7.02900e+03 +1248 8.41600e+03 7.26000e+03 +1249 8.49600e+03 8.86600e+03 +1250 1.58880e+04 8.50300e+03 +1251 1.58880e+04 9.87800e+03 +1252 1.58880e+04 1.06260e+04 +1253 1.58880e+04 1.14290e+04 +1254 1.59840e+04 8.18400e+03 +1255 1.61280e+04 8.18400e+03 +1256 1.62990e+04 8.18400e+03 +1257 1.63360e+04 2.22200e+03 +1258 1.63360e+04 3.85000e+03 +1259 1.63360e+04 5.36800e+03 +1260 1.63360e+04 6.79800e+03 +1261 1.63360e+04 7.88700e+03 +1262 1.04000e+03 3.57500e+03 +1263 1.04000e+03 9.65800e+03 +1264 4.43200e+03 2.20000e+02 +1265 4.49600e+03 3.08000e+02 +1266 4.78400e+03 3.08000e+02 +1267 4.84800e+03 3.08000e+02 +1268 5.04000e+03 3.08000e+02 +1269 5.29600e+03 3.08000e+02 +1270 5.58400e+03 3.08000e+02 +1271 5.64800e+03 3.08000e+02 +1272 5.80800e+03 2.20000e+02 +1273 5.80800e+03 2.02400e+03 +1274 5.80800e+03 4.04800e+03 +1275 5.93600e+03 8.38200e+03 +1276 5.93600e+03 1.08020e+04 +1277 1.68480e+04 1.01200e+03 +1278 1.68480e+04 2.22200e+03 +1279 1.68480e+04 3.85000e+03 +1280 1.68480e+04 5.36800e+03 +1281 1.68480e+04 6.68800e+03 +1282 1.68480e+04 7.87600e+03 +1283 1.68480e+04 1.05600e+04 +1284 1.68480e+04 1.15280e+04 +1285 8.24000e+03 1.18800e+03 +1286 8.24000e+03 7.01800e+03 +1287 8.26000e+03 7.70000e+03 +1288 8.40000e+03 8.75600e+03 +1289 1.52000e+03 1.00320e+04 +1290 1.55200e+03 8.93200e+03 +1291 1.58400e+03 3.11300e+03 +1292 1.58400e+03 7.01800e+03 +1293 1.58400e+03 8.78900e+03 +1294 5.13600e+03 1.15280e+04 +1295 5.20000e+03 1.14400e+04 +1296 5.36000e+03 1.14400e+04 +1297 5.55200e+03 1.15280e+04 +1298 5.61600e+03 1.14400e+04 +1299 5.80800e+03 1.14400e+04 +1300 5.96800e+03 1.15280e+04 +1301 2.67200e+03 3.11300e+03 +1302 2.73600e+03 6.55600e+03 +1303 2.88000e+03 6.55600e+03 +1304 3.02400e+03 6.55600e+03 +1305 3.20000e+03 6.55600e+03 +1306 3.31200e+03 6.55600e+03 +1307 3.40800e+03 6.55600e+03 +1308 3.80800e+03 6.55600e+03 +1309 3.88800e+03 6.55600e+03 +1310 3.95200e+03 6.55600e+03 +1311 4.09600e+03 6.55600e+03 +1312 4.17600e+03 6.55600e+03 +1313 4.25600e+03 6.55600e+03 +1314 4.43200e+03 6.55600e+03 +1315 4.49600e+03 6.55600e+03 +1316 4.64000e+03 6.55600e+03 +1317 4.72000e+03 7.59000e+03 +1318 4.72000e+03 8.86600e+03 +1319 4.72000e+03 1.14950e+04 +1320 1.70080e+04 1.01200e+03 +1321 1.70080e+04 2.22200e+03 +1322 1.70080e+04 4.35600e+03 +1323 1.70080e+04 6.68800e+03 +1324 1.70080e+04 7.84300e+03 +1325 1.70280e+04 8.09600e+03 +1326 1.71040e+04 8.09600e+03 +1327 1.71680e+04 8.09600e+03 +1328 1.74080e+04 8.09600e+03 +1329 1.74990e+04 8.09600e+03 +1330 1.75200e+04 9.60300e+03 +1331 1.75200e+04 1.06700e+04 +1332 8.80000e+02 3.57500e+03 +1333 8.80000e+02 9.92200e+03 +1334 4.14400e+03 2.36500e+03 +1335 4.14400e+03 5.43400e+03 +1336 4.14400e+03 6.90800e+03 +1337 4.27200e+03 8.36000e+03 +1338 4.33600e+03 8.36000e+03 +1339 4.51200e+03 8.36000e+03 +1340 4.62400e+03 8.36000e+03 +1341 4.68800e+03 8.36000e+03 +1342 4.78400e+03 8.36000e+03 +1343 4.94400e+03 8.36000e+03 +1344 5.13600e+03 8.36000e+03 +1345 5.48800e+03 7.30400e+03 +1346 5.45600e+03 8.48100e+03 +1347 5.45600e+03 1.06920e+04 +1348 5.52000e+03 2.17800e+03 +1349 5.52000e+03 4.04800e+03 +1350 5.52000e+03 6.40200e+03 +1351 1.65600e+04 1.08900e+04 +1352 1.65760e+04 8.18400e+03 +1353 1.65920e+04 1.01200e+03 +1354 1.65920e+04 2.22200e+03 +1355 1.65920e+04 3.85000e+03 +1356 1.65920e+04 5.47800e+03 +1357 1.65920e+04 6.79800e+03 +1358 1.65920e+04 7.88700e+03 +1359 7.72800e+03 8.75600e+03 +1360 7.74800e+03 7.04000e+03 +1361 7.82400e+03 7.04000e+03 +1362 7.88800e+03 7.04000e+03 +1363 8.01600e+03 1.18800e+03 +1364 8.01600e+03 4.81800e+03 +1365 8.01600e+03 6.91900e+03 +1366 1.62720e+04 1.04610e+04 +1367 1.62720e+04 1.14290e+04 +1368 1.64320e+04 8.84400e+03 +1369 1.65920e+04 8.84400e+03 +1370 1.66880e+04 8.84400e+03 +1371 1.67630e+04 8.84400e+03 +1372 1.67840e+04 1.01200e+03 +1373 1.67840e+04 2.22200e+03 +1374 1.67840e+04 3.85000e+03 +1375 1.67840e+04 5.47800e+03 +1376 1.67840e+04 6.68800e+03 +1377 1.67840e+04 7.87600e+03 +1378 4.64000e+02 9.69100e+03 +1379 4.84000e+02 8.18400e+03 +1380 5.60000e+02 8.18400e+03 +1381 7.47000e+02 8.18400e+03 +1382 7.84000e+02 3.57500e+03 +1383 7.66400e+03 6.90800e+03 +1384 7.66400e+03 8.75600e+03 +1385 7.72800e+03 1.18800e+03 +1386 7.72800e+03 4.81800e+03 +1387 5.23200e+03 2.17800e+03 +1388 5.23200e+03 4.04800e+03 +1389 5.23200e+03 6.40200e+03 +1390 5.23200e+03 7.31500e+03 +1391 5.49900e+03 7.61200e+03 +1392 5.52000e+03 8.38200e+03 +1393 5.52000e+03 1.06920e+04 +1394 3.85600e+03 2.95900e+03 +1395 3.85600e+03 6.90800e+03 +1396 3.87600e+03 7.92000e+03 +1397 3.95200e+03 7.92000e+03 +1398 4.09600e+03 7.92000e+03 +1399 4.78400e+03 7.48000e+02 +1400 4.84800e+03 7.48000e+02 +1401 5.04000e+03 7.48000e+02 +1402 5.29600e+03 7.48000e+02 +1403 5.58400e+03 7.48000e+02 +1404 5.64800e+03 7.48000e+02 +1405 5.87200e+03 7.48000e+02 +1406 6.09600e+03 2.64000e+02 +1407 6.09600e+03 2.02400e+03 +1408 6.09600e+03 4.04800e+03 +1409 6.09600e+03 5.22500e+03 +1410 6.11600e+03 5.36800e+03 +1411 6.19200e+03 5.36800e+03 +1412 6.25600e+03 5.36800e+03 +1413 6.41600e+03 5.36800e+03 +1414 6.57100e+03 5.36800e+03 +1415 6.09600e+03 5.94000e+02 +1416 6.60800e+03 8.64600e+03 +1417 6.60800e+03 9.43800e+03 +1418 6.60800e+03 1.14950e+04 +1419 1.72000e+04 5.33500e+03 +1420 1.72000e+04 6.68800e+03 +1421 1.72000e+04 7.72200e+03 +1422 1.72000e+04 1.05600e+04 +1423 1.72000e+04 1.15280e+04 +1424 1.73920e+04 5.19200e+03 +1425 1.75040e+04 5.19200e+03 +1426 1.76160e+04 2.31000e+02 +1427 1.76160e+04 1.78200e+03 +1428 1.76160e+04 4.21300e+03 +1429 7.24800e+03 1.08020e+04 +1430 7.37600e+03 6.38000e+02 +1431 7.37600e+03 1.51800e+03 +1432 7.37600e+03 4.04800e+03 +1433 7.37600e+03 4.92800e+03 +1434 7.37600e+03 8.75600e+03 +1435 1.80800e+03 3.11300e+03 +1436 1.82400e+03 6.86400e+03 +1437 1.84000e+03 8.05200e+03 +1438 1.84000e+03 1.00320e+04 +1439 1.22720e+04 1.11650e+04 +1440 1.23840e+04 9.06400e+03 +1441 1.25280e+04 9.06400e+03 +1442 1.26560e+04 9.06400e+03 +1443 1.28270e+04 9.06400e+03 +1444 1.28480e+04 1.60600e+03 +1445 1.28480e+04 2.31000e+03 +1446 1.28480e+04 4.70800e+03 +1447 1.28480e+04 6.07200e+03 +1448 1.28480e+04 7.39200e+03 +1449 1.28480e+04 8.53600e+03 +1450 1.64800e+03 8.77800e+03 +1451 1.64800e+03 1.00320e+04 +1452 1.66400e+03 8.18400e+03 +1453 1.68000e+03 3.11300e+03 +1454 1.68000e+03 7.01800e+03 +1455 1.68000e+03 8.06300e+03 +1456 4.78400e+03 5.28000e+02 +1457 4.84800e+03 5.28000e+02 +1458 5.04000e+03 5.28000e+02 +1459 5.29600e+03 5.28000e+02 +1460 5.58400e+03 5.28000e+02 +1461 5.64800e+03 5.28000e+02 +1462 5.87200e+03 5.28000e+02 +1463 5.93600e+03 3.30000e+02 +1464 5.93600e+03 2.02400e+03 +1465 5.93600e+03 4.04800e+03 +1466 5.93600e+03 5.32400e+03 +1467 6.09600e+03 6.55600e+03 +1468 6.19200e+03 6.55600e+03 +1469 6.25600e+03 8.38200e+03 +1470 6.25600e+03 1.14950e+04 +1471 1.69760e+04 6.68800e+03 +1472 1.69760e+04 7.87600e+03 +1473 1.69760e+04 1.05600e+04 +1474 1.69760e+04 1.15280e+04 +1475 1.70400e+04 5.72000e+03 +1476 1.71040e+04 5.72000e+03 +1477 1.71680e+04 5.72000e+03 +1478 1.73920e+04 5.72000e+03 +1479 1.75040e+04 5.72000e+03 +1480 1.76800e+04 2.31000e+02 +1481 1.76800e+04 1.78200e+03 +1482 1.76800e+04 4.24600e+03 +1483 1.16000e+04 2.31000e+02 +1484 1.16000e+04 9.02000e+02 +1485 1.16000e+04 4.48800e+03 +1486 1.16000e+04 6.07200e+03 +1487 1.16000e+04 7.39200e+03 +1488 1.16160e+04 8.22800e+03 +1489 1.16320e+04 1.12750e+04 +1490 1.72640e+04 1.05490e+04 +1491 1.72640e+04 1.15280e+04 +1492 1.72840e+04 1.01420e+04 +1493 1.74720e+04 1.01420e+04 +1494 1.75520e+04 1.01420e+04 +1495 1.79200e+04 1.01420e+04 +1496 1.83680e+04 1.01420e+04 +1497 1.85120e+04 1.01420e+04 +1498 1.86560e+04 1.01420e+04 +1499 1.87840e+04 1.01420e+04 +1500 1.89280e+04 1.01420e+04 +1501 1.90240e+04 1.01420e+04 +1502 6.22400e+03 4.29000e+02 +1503 6.22400e+03 2.02400e+03 +1504 6.22400e+03 4.04800e+03 +1505 6.22400e+03 8.38200e+03 +1506 6.22400e+03 1.08130e+04 +1507 6.35200e+03 1.09120e+04 +1508 6.46400e+03 1.09120e+04 +1509 6.67200e+03 1.09120e+04 +1510 6.84300e+03 1.09120e+04 +1511 1.93600e+03 3.11300e+03 +1512 1.93600e+03 6.75400e+03 +1513 1.93600e+03 8.06300e+03 +1514 1.95200e+03 8.18400e+03 +1515 1.96800e+03 8.77800e+03 +1516 1.96800e+03 1.00320e+04 +1517 8.16000e+02 3.57500e+03 +1518 8.16000e+02 9.92200e+03 +1519 3.98400e+03 2.95900e+03 +1520 3.98400e+03 6.90800e+03 +1521 4.12800e+03 8.93200e+03 +1522 4.27200e+03 8.93200e+03 +1523 4.33600e+03 8.93200e+03 +1524 4.49600e+03 9.03100e+03 +1525 4.49600e+03 1.14950e+04 +1526 1.54400e+04 5.83000e+02 +1527 1.54400e+04 2.53000e+03 +1528 1.54400e+04 5.48900e+03 +1529 1.54600e+04 5.80800e+03 +1530 1.56000e+04 5.80800e+03 +1531 1.57120e+04 5.80800e+03 +1532 1.57920e+04 5.80800e+03 +1533 1.58880e+04 5.80800e+03 +1534 1.59840e+04 5.80800e+03 +1535 1.61280e+04 5.80800e+03 +1536 1.62880e+04 5.80800e+03 +1537 1.64000e+04 6.79800e+03 +1538 1.64000e+04 7.87600e+03 +1539 1.64000e+04 1.04610e+04 +1540 1.64000e+04 1.14290e+04 +1541 5.36000e+03 2.17800e+03 +1542 5.36000e+03 4.04800e+03 +1543 5.36000e+03 7.19400e+03 +1544 5.55200e+03 1.02520e+04 +1545 5.63200e+03 1.02520e+04 +1546 5.80800e+03 1.02520e+04 +1547 5.96800e+03 1.02520e+04 +1548 6.03200e+03 1.02520e+04 +1549 6.11200e+03 1.02520e+04 +1550 6.19200e+03 1.02520e+04 +1551 6.30400e+03 8.53600e+03 +1552 6.28800e+03 1.14950e+04 +1553 6.32000e+03 4.29000e+02 +1554 6.32000e+03 2.02400e+03 +1555 6.32000e+03 4.04800e+03 +1556 1.16800e+03 9.65800e+03 +1557 1.23200e+03 3.57500e+03 +1558 1.23200e+03 7.84300e+03 +1559 6.35200e+03 4.29000e+02 +1560 6.35200e+03 2.02400e+03 +1561 6.35200e+03 4.04800e+03 +1562 6.35200e+03 8.65700e+03 +1563 6.36800e+03 8.84400e+03 +1564 6.38400e+03 1.14950e+04 +1565 1.66880e+04 1.14070e+04 +1566 1.67840e+04 1.11980e+04 +1567 1.69120e+04 1.11980e+04 +1568 1.70400e+04 1.11980e+04 +1569 1.71360e+04 1.11980e+04 +1570 1.72960e+04 1.11980e+04 +1571 1.74720e+04 1.11980e+04 +1572 1.75520e+04 1.11980e+04 +1573 1.79200e+04 1.11980e+04 +1574 1.83680e+04 1.11980e+04 +1575 1.85120e+04 1.11980e+04 +1576 1.86560e+04 1.11980e+04 +1577 1.87680e+04 1.11980e+04 +1578 1.89280e+04 1.11980e+04 +1579 1.52800e+04 2.53000e+03 +1580 1.52800e+04 5.47800e+03 +1581 1.52800e+04 6.79800e+03 +1582 1.52800e+04 7.78800e+03 +1583 1.52800e+04 8.64600e+03 +1584 1.52800e+04 9.87800e+03 +1585 1.52800e+04 1.06260e+04 +1586 1.52800e+04 1.14290e+04 +1587 3.47200e+03 1.00320e+04 +1588 3.48800e+03 7.48000e+03 +1589 3.50400e+03 3.11300e+03 +1590 3.50400e+03 7.13900e+03 +1591 2.08000e+02 9.58100e+03 +1592 3.08000e+02 7.96400e+03 +1593 4.80000e+02 7.96400e+03 +1594 5.60000e+02 7.96400e+03 +1595 7.36000e+02 7.96400e+03 +1596 8.48000e+02 7.96400e+03 +1597 9.12000e+02 7.96400e+03 +1598 9.76000e+02 7.96400e+03 +1599 1.08300e+03 7.96400e+03 +1600 1.10400e+03 3.57500e+03 +1601 1.10400e+03 7.84300e+03 +1602 1.39200e+03 2.90400e+03 +1603 1.39200e+03 5.85200e+03 +1604 1.40800e+03 6.02800e+03 +1605 1.42400e+03 8.77800e+03 +1606 1.42400e+03 1.00320e+04 +1607 1.02240e+04 3.60800e+03 +1608 1.02880e+04 3.60800e+03 +1609 1.03840e+04 3.60800e+03 +1610 1.05120e+04 3.60800e+03 +1611 1.05760e+04 3.60800e+03 +1612 1.06400e+04 3.60800e+03 +1613 1.07040e+04 3.60800e+03 +1614 1.08000e+04 3.60800e+03 +1615 1.09280e+04 3.60800e+03 +1616 1.10560e+04 3.60800e+03 +1617 1.11200e+04 3.60800e+03 +1618 1.12160e+04 3.60800e+03 +1619 1.13440e+04 3.60800e+03 +1620 1.14880e+04 3.60800e+03 +1621 1.16640e+04 9.02000e+02 +1622 6.88000e+02 3.57500e+03 +1623 6.88000e+02 9.92200e+03 +1624 5.87200e+03 9.68000e+02 +1625 6.12800e+03 9.68000e+02 +1626 6.19200e+03 9.68000e+02 +1627 6.25600e+03 9.68000e+02 +1628 6.41600e+03 9.68000e+02 +1629 6.54400e+03 9.68000e+02 +1630 6.67200e+03 9.68000e+02 +1631 6.78400e+03 9.68000e+02 +1632 6.89600e+03 9.68000e+02 +1633 7.00800e+03 9.68000e+02 +1634 7.18400e+03 9.68000e+02 +1635 7.31200e+03 9.68000e+02 +1636 7.50400e+03 9.68000e+02 +1637 7.60000e+03 7.59000e+02 +1638 7.60000e+03 1.39700e+03 +1639 7.60000e+03 4.93900e+03 +1640 7.66400e+03 5.14800e+03 +1641 7.76000e+03 5.14800e+03 +1642 7.82400e+03 5.14800e+03 +1643 7.88800e+03 5.14800e+03 +1644 7.95200e+03 5.14800e+03 +1645 8.04800e+03 5.14800e+03 +1646 8.17600e+03 5.14800e+03 +1647 8.33600e+03 5.14800e+03 +1648 8.43200e+03 5.14800e+03 +1649 8.49600e+03 5.14800e+03 +1650 8.75200e+03 5.14800e+03 +1651 8.84800e+03 5.14800e+03 +1652 8.99200e+03 5.14800e+03 +1653 9.44000e+03 5.14800e+03 +1654 9.55200e+03 5.14800e+03 +1655 9.68000e+03 5.14800e+03 +1656 9.82400e+03 5.14800e+03 +1657 1.00110e+04 5.14800e+03 +1658 1.00320e+04 2.31000e+02 +1659 1.00320e+04 1.01200e+03 +1660 1.00320e+04 1.76000e+03 +1661 5.48800e+03 2.17800e+03 +1662 5.48800e+03 4.04800e+03 +1663 5.48800e+03 6.40200e+03 +1664 5.64800e+03 7.08400e+03 +1665 5.93600e+03 7.08400e+03 +1666 6.09600e+03 7.08400e+03 +1667 6.19200e+03 7.08400e+03 +1668 6.41600e+03 7.08400e+03 +1669 6.54400e+03 7.08400e+03 +1670 6.67200e+03 7.08400e+03 +1671 6.76800e+03 7.16100e+03 +1672 6.76800e+03 8.64600e+03 +1673 6.76800e+03 9.43800e+03 +1674 9.93600e+03 2.31000e+02 +1675 9.93600e+03 1.01200e+03 +1676 9.93600e+03 1.76000e+03 +1677 5.20000e+03 2.17800e+03 +1678 5.20000e+03 4.04800e+03 +1679 5.20000e+03 6.40200e+03 +1680 5.20000e+03 7.45800e+03 +1681 5.20000e+03 1.05930e+04 +1682 7.40800e+03 6.38000e+02 +1683 7.40800e+03 1.51800e+03 +1684 7.40800e+03 4.04800e+03 +1685 7.40800e+03 4.92800e+03 +1686 7.40800e+03 8.75600e+03 +1687 7.53600e+03 1.06920e+04 +1688 7.60000e+03 1.06920e+04 +1689 7.69600e+03 1.06920e+04 +1690 7.82400e+03 1.06920e+04 +1691 7.88800e+03 1.06920e+04 +1692 7.98400e+03 1.06920e+04 +1693 8.09600e+03 1.06920e+04 +1694 8.17600e+03 1.06920e+04 +1695 8.27200e+03 1.06920e+04 +1696 8.36800e+03 1.06920e+04 +1697 8.43200e+03 1.06920e+04 +1698 8.72000e+03 1.06920e+04 +1699 8.84800e+03 1.06920e+04 +1700 9.10400e+03 1.06920e+04 +1701 9.72800e+03 1.06920e+04 +1702 1.00320e+04 1.06920e+04 +1703 1.02560e+04 1.06920e+04 +1704 1.03200e+04 1.06920e+04 +1705 1.04800e+04 1.06920e+04 +1706 1.06560e+04 1.06920e+04 +1707 1.07680e+04 1.06920e+04 +1708 1.09280e+04 1.06920e+04 +1709 1.10240e+04 1.06920e+04 +1710 1.12160e+04 1.06920e+04 +1711 1.13280e+04 1.06920e+04 +1712 1.14400e+04 1.06920e+04 +1713 1.15200e+04 1.06920e+04 +1714 1.16000e+04 1.06920e+04 +1715 1.17070e+04 1.06920e+04 +1716 1.17280e+04 1.13300e+04 +1717 1.17280e+04 1.08680e+04 +1718 4.88000e+03 1.14950e+04 +1719 4.94400e+03 2.17800e+03 +1720 4.94400e+03 4.04800e+03 +1721 4.94400e+03 6.40200e+03 +1722 6.89600e+03 2.20000e+02 +1723 7.00800e+03 3.08000e+02 +1724 7.18400e+03 3.08000e+02 +1725 7.31200e+03 3.08000e+02 +1726 7.50400e+03 3.08000e+02 +1727 7.66400e+03 3.08000e+02 +1728 7.76000e+03 3.08000e+02 +1729 7.82400e+03 3.08000e+02 +1730 7.88800e+03 3.08000e+02 +1731 7.95200e+03 3.08000e+02 +1732 8.04800e+03 3.08000e+02 +1733 8.20800e+03 3.08000e+02 +1734 8.33600e+03 3.08000e+02 +1735 8.43200e+03 3.08000e+02 +1736 8.49600e+03 3.08000e+02 +1737 8.56000e+03 3.08000e+02 +1738 8.62400e+03 3.08000e+02 +1739 8.75200e+03 3.08000e+02 +1740 8.84800e+03 3.08000e+02 +1741 8.97600e+03 3.08000e+02 +1742 9.04000e+03 3.08000e+02 +1743 9.16800e+03 3.08000e+02 +1744 9.23200e+03 2.20000e+02 +1745 9.23200e+03 7.59000e+02 +1746 9.23200e+03 1.76000e+03 +1747 9.23200e+03 2.94800e+03 +1748 9.23200e+03 7.02900e+03 +1749 3.44000e+03 1.00320e+04 +1750 3.50400e+03 7.92000e+03 +1751 3.63200e+03 7.92000e+03 +1752 3.69600e+03 7.92000e+03 +1753 3.76000e+03 3.11300e+03 +1754 3.76000e+03 6.90800e+03 +1755 8.24000e+03 8.89900e+03 +1756 8.27200e+03 8.75600e+03 +1757 8.30400e+03 1.18800e+03 +1758 8.30400e+03 6.90800e+03 +1759 8.30400e+03 8.61300e+03 +1760 9.29600e+03 6.89700e+03 +1761 9.29600e+03 9.87800e+03 +1762 9.45600e+03 6.77600e+03 +1763 9.55200e+03 6.77600e+03 +1764 9.68000e+03 6.77600e+03 +1765 9.77600e+03 2.31000e+02 +1766 9.77600e+03 1.01200e+03 +1767 9.77600e+03 1.76000e+03 +1768 6.99200e+03 8.64600e+03 +1769 6.99200e+03 1.08020e+04 +1770 7.02400e+03 7.26000e+03 +1771 7.05600e+03 6.38000e+02 +1772 7.05600e+03 1.51800e+03 +1773 7.05600e+03 2.57400e+03 +1774 7.05600e+03 4.04800e+03 +1775 7.05600e+03 7.13900e+03 +1776 1.46400e+04 2.53000e+03 +1777 1.46400e+04 5.36800e+03 +1778 1.46400e+04 6.79800e+03 +1779 1.46400e+04 8.64600e+03 +1780 1.46400e+04 9.87800e+03 +1781 1.46400e+04 1.15390e+04 +1782 1.47360e+04 1.01200e+03 +1783 1.48000e+04 1.01200e+03 +1784 1.49120e+04 1.01200e+03 +1785 1.51200e+04 1.01200e+03 +1786 1.53280e+04 1.01200e+03 +1787 1.54080e+04 1.01200e+03 +1788 1.54720e+04 1.01200e+03 +1789 1.56000e+04 1.01200e+03 +1790 1.57280e+04 1.01200e+03 +1791 1.57920e+04 1.01200e+03 +1792 1.58880e+04 1.01200e+03 +1793 1.59840e+04 1.01200e+03 +1794 1.61280e+04 1.01200e+03 +1795 1.62720e+04 1.01200e+03 +1796 1.64000e+04 1.01200e+03 +1797 1.65280e+04 9.13000e+02 +1798 1.47040e+04 2.53000e+03 +1799 1.47200e+04 4.92800e+03 +1800 1.47360e+04 5.35700e+03 +1801 1.47360e+04 6.79800e+03 +1802 1.47360e+04 8.64600e+03 +1803 1.47360e+04 9.87800e+03 +1804 1.47360e+04 1.14290e+04 +1805 1.48160e+04 4.92800e+03 +1806 1.49280e+04 4.92800e+03 +1807 1.51360e+04 4.92800e+03 +1808 1.53280e+04 4.92800e+03 +1809 1.54080e+04 4.92800e+03 +1810 1.54720e+04 4.92800e+03 +1811 1.56000e+04 4.92800e+03 +1812 1.57120e+04 4.92800e+03 +1813 1.57920e+04 4.92800e+03 +1814 1.58880e+04 4.92800e+03 +1815 1.59840e+04 4.92800e+03 +1816 1.61280e+04 4.92800e+03 +1817 1.62880e+04 4.92800e+03 +1818 1.64000e+04 4.92800e+03 +1819 1.65440e+04 4.92800e+03 +1820 1.66560e+04 4.92800e+03 +1821 1.67520e+04 4.92800e+03 +1822 1.68160e+04 1.01200e+03 +1823 1.68160e+04 2.22200e+03 +1824 1.68160e+04 3.85000e+03 +1825 1.38080e+04 5.13700e+03 +1826 1.38080e+04 7.28200e+03 +1827 1.38080e+04 8.86600e+03 +1828 1.38080e+04 9.87800e+03 +1829 1.38080e+04 1.15390e+04 +1830 1.39080e+04 4.70800e+03 +1831 1.40800e+04 4.70800e+03 +1832 1.42240e+04 4.70800e+03 +1833 1.44000e+04 4.70800e+03 +1834 1.45120e+04 4.70800e+03 +1835 1.47360e+04 4.70800e+03 +1836 1.48160e+04 4.70800e+03 +1837 1.49280e+04 4.70800e+03 +1838 1.51360e+04 4.70800e+03 +1839 1.53280e+04 4.70800e+03 +1840 1.54080e+04 4.70800e+03 +1841 1.54720e+04 4.70800e+03 +1842 1.56000e+04 4.70800e+03 +1843 1.57120e+04 4.70800e+03 +1844 1.57920e+04 4.70800e+03 +1845 1.58880e+04 4.70800e+03 +1846 1.59840e+04 4.70800e+03 +1847 1.61280e+04 4.70800e+03 +1848 1.62880e+04 4.70800e+03 +1849 1.64000e+04 4.70800e+03 +1850 1.65440e+04 4.70800e+03 +1851 1.66560e+04 4.70800e+03 +1852 1.67520e+04 4.70800e+03 +1853 1.69120e+04 4.70800e+03 +1854 1.69760e+04 1.01200e+03 +1855 1.69760e+04 2.22200e+03 +1856 1.69760e+04 3.97100e+03 +1857 3.66400e+03 3.11300e+03 +1858 3.66400e+03 7.01800e+03 +1859 3.66400e+03 9.11900e+03 +1860 3.68400e+03 9.28400e+03 +1861 3.76000e+03 1.01420e+04 +1862 3.60000e+03 3.11300e+03 +1863 3.60000e+03 7.12800e+03 +1864 3.60000e+03 9.04200e+03 +1865 3.71200e+03 9.81200e+03 +1866 3.88800e+03 9.81200e+03 +1867 4.12800e+03 9.81200e+03 +1868 4.27200e+03 9.81200e+03 +1869 4.40000e+03 9.81200e+03 +1870 4.52800e+03 9.81200e+03 +1871 4.62400e+03 9.81200e+03 +1872 4.68800e+03 9.81200e+03 +1873 4.79500e+03 9.81200e+03 +1874 4.95500e+03 9.15200e+03 +1875 4.81600e+03 1.14950e+04 +1876 4.97600e+03 2.17800e+03 +1877 4.97600e+03 4.04800e+03 +1878 4.97600e+03 6.40200e+03 +1879 8.97600e+03 6.89700e+03 +1880 8.97600e+03 9.87800e+03 +1881 8.99600e+03 6.55600e+03 +1882 9.29600e+03 6.55600e+03 +1883 9.45600e+03 6.55600e+03 +1884 9.55200e+03 6.55600e+03 +1885 9.68000e+03 6.55600e+03 +1886 9.80800e+03 6.55600e+03 +1887 1.00160e+04 6.55600e+03 +1888 1.01280e+04 6.55600e+03 +1889 1.02240e+04 6.55600e+03 +1890 1.03840e+04 6.55600e+03 +1891 1.05120e+04 6.55600e+03 +1892 1.06560e+04 6.55600e+03 +1893 1.08000e+04 6.55600e+03 +1894 1.08640e+04 6.55600e+03 +1895 1.09280e+04 6.55600e+03 +1896 1.10400e+04 6.55600e+03 +1897 1.11200e+04 6.55600e+03 +1898 1.12160e+04 6.55600e+03 +1899 1.13280e+04 6.55600e+03 +1900 1.15040e+04 6.55600e+03 +1901 1.15680e+04 6.55600e+03 +1902 1.16320e+04 6.55600e+03 +1903 1.16960e+04 6.55600e+03 +1904 1.17600e+04 6.55600e+03 +1905 1.18240e+04 6.55600e+03 +1906 1.19200e+04 6.55600e+03 +1907 1.20320e+04 6.55600e+03 +1908 1.21760e+04 6.55600e+03 +1909 1.23840e+04 6.55600e+03 +1910 1.25120e+04 6.55600e+03 +1911 1.26880e+04 6.55600e+03 +1912 1.28000e+04 6.55600e+03 +1913 1.29120e+04 6.55600e+03 +1914 1.30720e+04 4.84000e+02 +1915 1.30720e+04 1.60600e+03 +1916 1.30720e+04 2.31000e+03 +1917 1.30720e+04 3.12400e+03 +1918 1.30720e+04 3.93800e+03 +1919 1.30720e+04 4.70800e+03 +1920 1.30720e+04 6.19300e+03 +1921 1.31080e+04 5.72000e+02 +1922 1.32000e+04 5.72000e+02 +1923 1.33440e+04 5.72000e+02 +1924 1.34880e+04 5.72000e+02 +1925 1.36320e+04 5.72000e+02 +1926 1.38560e+04 5.72000e+02 +1927 1.40960e+04 5.72000e+02 +1928 1.42240e+04 5.72000e+02 +1929 1.44000e+04 5.72000e+02 +1930 1.46400e+04 5.72000e+02 +1931 1.47360e+04 5.72000e+02 +1932 1.48000e+04 5.72000e+02 +1933 1.49120e+04 5.72000e+02 +1934 1.50400e+04 5.72000e+02 +1935 1.52000e+04 5.72000e+02 +1936 1.53280e+04 5.72000e+02 +1937 1.54080e+04 4.84000e+02 +1938 1.00160e+04 6.77600e+03 +1939 1.01280e+04 6.77600e+03 +1940 1.02240e+04 6.77600e+03 +1941 1.03840e+04 6.77600e+03 +1942 1.04800e+04 2.31000e+02 +1943 1.04800e+04 1.01200e+03 +1944 1.04800e+04 1.76000e+03 +1945 7.12000e+03 6.38000e+02 +1946 7.12000e+03 1.51800e+03 +1947 7.12000e+03 4.04800e+03 +1948 7.12000e+03 8.53600e+03 +1949 7.12000e+03 1.08020e+04 +1950 3.72800e+03 3.11300e+03 +1951 3.72800e+03 6.90800e+03 +1952 3.89900e+03 9.59200e+03 +1953 4.01600e+03 1.01420e+04 +1954 5.77600e+03 1.08020e+04 +1955 5.79600e+03 9.06400e+03 +1956 5.96800e+03 9.06400e+03 +1957 6.03200e+03 9.06400e+03 +1958 6.11200e+03 9.06400e+03 +1959 6.19200e+03 9.06400e+03 +1960 6.35200e+03 9.06400e+03 +1961 6.43200e+03 9.06400e+03 +1962 6.51200e+03 9.06400e+03 +1963 6.67200e+03 9.06400e+03 +1964 6.86400e+03 9.06400e+03 +1965 6.92800e+03 9.06400e+03 +1966 7.02400e+03 9.06400e+03 +1967 7.21100e+03 9.06400e+03 +1968 7.24800e+03 6.38000e+02 +1969 7.24800e+03 1.51800e+03 +1970 7.24800e+03 4.04800e+03 +1971 7.24800e+03 7.12800e+03 +1972 7.24800e+03 8.76700e+03 +1973 3.92000e+03 2.95900e+03 +1974 3.92000e+03 6.90800e+03 +1975 3.92000e+03 9.16300e+03 +1976 3.97200e+03 9.37200e+03 +1977 4.12800e+03 9.37200e+03 +1978 4.27200e+03 9.37200e+03 +1979 4.52800e+03 9.37200e+03 +1980 4.62400e+03 9.37200e+03 +1981 4.68800e+03 9.37200e+03 +1982 4.78400e+03 9.37200e+03 +1983 4.96000e+03 9.37200e+03 +1984 5.13600e+03 9.37200e+03 +1985 5.55200e+03 9.37200e+03 +1986 5.63200e+03 9.37200e+03 +1987 5.80800e+03 9.37200e+03 +1988 5.96800e+03 9.37200e+03 +1989 6.03200e+03 9.37200e+03 +1990 6.11200e+03 9.37200e+03 +1991 6.19200e+03 9.37200e+03 +1992 6.35200e+03 9.37200e+03 +1993 6.43200e+03 9.37200e+03 +1994 6.51200e+03 9.47100e+03 +1995 6.51200e+03 1.14950e+04 +1996 1.63680e+04 2.22200e+03 +1997 1.63680e+04 3.85000e+03 +1998 1.63680e+04 5.36800e+03 +1999 1.63680e+04 6.79800e+03 +2000 1.63680e+04 7.87600e+03 +2001 1.63680e+04 1.04610e+04 +2002 1.63680e+04 1.14290e+04 +2003 3.53600e+03 3.11300e+03 +2004 3.53600e+03 7.12800e+03 +2005 3.53600e+03 1.00320e+04 +2006 8.46400e+03 8.74500e+03 +2007 8.72000e+03 8.44800e+03 +2008 8.84800e+03 8.44800e+03 +2009 9.10400e+03 8.44800e+03 +2010 9.72800e+03 8.44800e+03 +2011 1.00000e+04 8.44800e+03 +2012 1.02560e+04 8.44800e+03 +2013 1.03520e+04 8.44800e+03 +2014 1.04640e+04 8.44800e+03 +2015 1.06560e+04 8.44800e+03 +2016 1.07360e+04 8.44800e+03 +2017 1.08000e+04 8.44800e+03 +2018 1.09120e+04 8.44800e+03 +2019 1.10400e+04 8.44800e+03 +2020 1.12000e+04 8.44800e+03 +2021 1.13440e+04 8.44800e+03 +2022 1.15040e+04 8.44800e+03 +2023 1.16000e+04 8.44800e+03 +2024 1.17120e+04 8.44800e+03 +2025 1.17920e+04 8.44800e+03 +2026 1.19840e+04 8.44800e+03 +2027 1.21920e+04 8.44800e+03 +2028 1.22720e+04 8.44800e+03 +2029 1.23840e+04 8.44800e+03 +2030 1.25280e+04 8.44800e+03 +2031 1.26560e+04 8.44800e+03 +2032 1.27200e+04 1.60600e+03 +2033 1.27200e+04 2.57400e+03 +2034 1.27200e+04 4.70800e+03 +2035 1.27200e+04 6.07200e+03 +2036 1.27200e+04 7.39200e+03 +2037 1.28160e+04 7.92000e+02 +2038 1.29440e+04 7.92000e+02 +2039 1.31200e+04 7.92000e+02 +2040 1.32000e+04 7.92000e+02 +2041 1.33440e+04 7.92000e+02 +2042 1.34880e+04 7.92000e+02 +2043 1.36320e+04 7.92000e+02 +2044 1.38560e+04 7.92000e+02 +2045 1.40960e+04 7.92000e+02 +2046 1.42240e+04 7.92000e+02 +2047 1.44000e+04 7.92000e+02 +2048 1.46400e+04 7.92000e+02 +2049 1.47360e+04 7.92000e+02 +2050 1.48000e+04 7.92000e+02 +2051 1.49120e+04 7.92000e+02 +2052 1.50510e+04 7.92000e+02 +2053 2.80000e+03 3.11300e+03 +2054 2.80000e+03 6.86400e+03 +2055 2.85200e+03 7.70000e+03 +2056 2.96000e+03 7.70000e+03 +2057 3.02400e+03 7.70000e+03 +2058 3.20000e+03 7.70000e+03 +2059 3.31200e+03 7.70000e+03 +2060 3.42400e+03 7.70000e+03 +2061 3.50400e+03 7.70000e+03 +2062 3.63200e+03 7.70000e+03 +2063 3.69600e+03 7.70000e+03 +2064 3.80800e+03 7.70000e+03 +2065 3.88800e+03 7.70000e+03 +2066 3.95200e+03 7.70000e+03 +2067 4.09600e+03 7.70000e+03 +2068 4.17600e+03 7.70000e+03 +2069 4.24000e+03 7.79900e+03 +2070 8.04800e+03 8.75600e+03 +2071 8.08000e+03 7.70000e+03 +2072 8.11200e+03 1.18800e+03 +2073 8.11200e+03 4.81800e+03 +2074 8.11200e+03 7.01800e+03 +2075 1.32800e+03 3.22300e+03 +2076 1.32800e+03 6.91900e+03 +2077 1.45600e+03 8.77800e+03 +2078 1.45600e+03 1.00320e+04 +2079 9.68000e+03 2.28800e+03 +2080 9.80800e+03 2.28800e+03 +2081 9.87200e+03 2.28800e+03 +2082 1.00000e+04 2.28800e+03 +2083 1.00960e+04 2.28800e+03 +2084 1.02240e+04 2.28800e+03 +2085 1.02880e+04 2.28800e+03 +2086 1.03840e+04 2.28800e+03 +2087 1.05120e+04 2.28800e+03 +2088 1.05760e+04 2.28800e+03 +2089 1.06400e+04 2.28800e+03 +2090 1.07040e+04 2.28800e+03 +2091 1.08000e+04 2.28800e+03 +2092 1.09280e+04 2.28800e+03 +2093 1.10560e+04 2.28800e+03 +2094 1.11200e+04 2.28800e+03 +2095 1.12160e+04 2.28800e+03 +2096 1.13440e+04 2.28800e+03 +2097 1.14080e+04 2.28800e+03 +2098 1.14880e+04 2.28800e+03 +2099 1.16960e+04 2.28800e+03 +2100 1.17600e+04 2.28800e+03 +2101 1.19040e+04 2.28800e+03 +2102 1.20480e+04 2.28800e+03 +2103 1.21760e+04 2.28800e+03 +2104 1.23360e+04 2.28800e+03 +2105 1.24320e+04 2.28800e+03 +2106 1.24960e+04 9.13000e+02 +2107 1.24960e+04 1.60600e+03 +2108 1.25160e+04 1.01200e+03 +2109 1.26880e+04 1.01200e+03 +2110 1.28160e+04 1.01200e+03 +2111 1.29440e+04 1.01200e+03 +2112 1.31200e+04 1.01200e+03 +2113 1.32000e+04 1.01200e+03 +2114 1.33440e+04 1.01200e+03 +2115 1.34880e+04 1.01200e+03 +2116 1.36320e+04 1.01200e+03 +2117 1.38670e+04 1.01200e+03 +2118 5.23200e+03 1.04720e+04 +2119 5.48800e+03 7.92000e+03 +2120 5.55200e+03 7.92000e+03 +2121 5.63200e+03 7.92000e+03 +2122 5.71200e+03 7.92000e+03 +2123 5.80800e+03 7.92000e+03 +2124 5.96800e+03 7.92000e+03 +2125 6.09600e+03 7.92000e+03 +2126 6.19200e+03 7.92000e+03 +2127 6.41600e+03 7.92000e+03 +2128 6.54400e+03 7.92000e+03 +2129 6.67200e+03 7.92000e+03 +2130 6.86400e+03 7.92000e+03 +2131 6.92800e+03 7.92000e+03 +2132 7.04000e+03 7.92000e+03 +2133 7.18400e+03 7.92000e+03 +2134 7.53600e+03 7.92000e+03 +2135 7.60000e+03 7.92000e+03 +2136 7.69600e+03 7.92000e+03 +2137 7.76000e+03 7.92000e+03 +2138 7.82400e+03 7.92000e+03 +2139 7.88800e+03 7.92000e+03 +2140 8.09600e+03 7.92000e+03 +2141 8.17600e+03 7.92000e+03 +2142 8.25600e+03 7.92000e+03 +2143 8.44800e+03 7.92000e+03 +2144 8.72000e+03 7.92000e+03 +2145 8.84800e+03 7.92000e+03 +2146 9.11500e+03 7.92000e+03 +2147 9.13600e+03 1.18800e+03 +2148 9.13600e+03 2.94800e+03 +2149 9.13600e+03 5.96200e+03 +2150 9.13600e+03 7.01800e+03 +2151 9.44400e+03 6.11600e+03 +2152 9.55200e+03 6.11600e+03 +2153 9.68000e+03 6.11600e+03 +2154 9.80800e+03 6.11600e+03 +2155 1.00160e+04 6.11600e+03 +2156 1.01440e+04 6.11600e+03 +2157 1.02240e+04 6.11600e+03 +2158 1.03840e+04 6.11600e+03 +2159 1.05120e+04 6.11600e+03 +2160 1.05760e+04 6.11600e+03 +2161 1.06560e+04 6.11600e+03 +2162 1.08000e+04 6.11600e+03 +2163 1.08640e+04 6.11600e+03 +2164 1.09280e+04 6.11600e+03 +2165 1.10560e+04 6.11600e+03 +2166 1.11200e+04 6.11600e+03 +2167 1.12160e+04 6.11600e+03 +2168 1.13120e+04 2.31000e+02 +2169 1.13120e+04 9.02000e+02 +2170 1.13120e+04 4.48800e+03 +2171 1.13120e+04 5.97300e+03 +2172 9.00800e+03 9.87800e+03 +2173 9.10400e+03 1.18800e+03 +2174 9.10400e+03 2.94800e+03 +2175 9.10400e+03 5.96200e+03 +2176 9.10400e+03 7.02900e+03 +2177 5.64800e+03 1.06810e+04 +2178 5.80800e+03 1.04720e+04 +2179 5.96800e+03 1.04720e+04 +2180 6.03200e+03 1.04720e+04 +2181 6.11200e+03 1.04720e+04 +2182 6.19200e+03 1.04720e+04 +2183 6.35200e+03 1.04720e+04 +2184 6.46400e+03 1.04720e+04 +2185 6.67200e+03 1.04720e+04 +2186 6.84800e+03 1.04720e+04 +2187 7.02400e+03 1.04720e+04 +2188 7.20000e+03 1.04720e+04 +2189 7.37600e+03 1.04720e+04 +2190 7.53600e+03 1.04720e+04 +2191 7.60000e+03 1.04720e+04 +2192 7.69600e+03 1.04720e+04 +2193 7.82400e+03 1.04720e+04 +2194 7.88800e+03 1.04720e+04 +2195 7.98400e+03 1.04720e+04 +2196 8.09600e+03 1.04720e+04 +2197 8.17600e+03 1.04720e+04 +2198 8.27200e+03 1.04720e+04 +2199 8.36800e+03 1.04720e+04 +2200 8.43200e+03 1.04720e+04 +2201 8.72000e+03 1.04720e+04 +2202 8.84800e+03 1.04720e+04 +2203 9.10400e+03 1.04720e+04 +2204 9.72800e+03 1.04720e+04 +2205 1.00320e+04 1.04720e+04 +2206 1.02560e+04 1.04720e+04 +2207 1.03200e+04 1.04720e+04 +2208 1.04800e+04 1.04720e+04 +2209 1.06560e+04 1.04720e+04 +2210 1.07470e+04 1.04720e+04 +2211 1.07680e+04 2.31000e+02 +2212 1.07680e+04 9.02000e+02 +2213 1.07680e+04 1.76000e+03 +2214 1.07680e+04 7.39200e+03 +2215 1.07680e+04 1.03730e+04 +2216 1.00160e+04 9.06400e+03 +2217 1.00640e+04 2.31000e+02 +2218 1.00640e+04 1.01200e+03 +2219 1.00640e+04 1.76000e+03 +2220 5.58400e+03 3.22300e+03 +2221 5.58400e+03 4.04800e+03 +2222 5.58400e+03 6.40200e+03 +2223 5.58400e+03 8.38200e+03 +2224 5.58400e+03 1.06920e+04 +2225 5.66400e+03 3.08000e+03 +2226 5.87200e+03 3.08000e+03 +2227 6.12800e+03 3.08000e+03 +2228 6.19200e+03 3.08000e+03 +2229 6.25600e+03 3.08000e+03 +2230 6.41600e+03 3.08000e+03 +2231 6.56000e+03 3.08000e+03 +2232 6.67200e+03 3.08000e+03 +2233 6.78400e+03 3.08000e+03 +2234 6.89600e+03 3.08000e+03 +2235 7.00800e+03 3.08000e+03 +2236 7.08800e+03 3.08000e+03 +2237 7.18400e+03 3.08000e+03 +2238 7.31200e+03 3.08000e+03 +2239 7.50400e+03 3.08000e+03 +2240 7.66400e+03 3.08000e+03 +2241 7.76000e+03 3.08000e+03 +2242 7.82400e+03 3.08000e+03 +2243 7.88800e+03 3.08000e+03 +2244 7.95200e+03 3.08000e+03 +2245 8.04800e+03 3.08000e+03 +2246 8.20800e+03 3.08000e+03 +2247 8.33600e+03 3.08000e+03 +2248 8.43200e+03 3.08000e+03 +2249 8.49600e+03 3.08000e+03 +2250 8.62400e+03 3.08000e+03 +2251 8.75200e+03 3.08000e+03 +2252 8.84800e+03 3.08000e+03 +2253 8.97600e+03 3.08000e+03 +2254 9.05100e+03 3.08000e+03 +2255 9.07200e+03 1.18800e+03 +2256 9.07200e+03 2.91500e+03 +2257 8.62400e+03 5.96200e+03 +2258 8.62400e+03 8.86600e+03 +2259 8.68800e+03 1.18800e+03 +2260 8.59200e+03 8.86600e+03 +2261 8.65600e+03 1.18800e+03 +2262 8.65600e+03 5.96200e+03 +2263 7.95200e+03 8.75600e+03 +2264 8.04800e+03 6.11600e+03 +2265 8.17600e+03 6.11600e+03 +2266 8.43200e+03 6.11600e+03 +2267 8.50700e+03 6.11600e+03 +2268 8.52800e+03 1.18800e+03 +2269 8.52800e+03 5.97300e+03 +2270 8.46400e+03 1.18800e+03 +2271 8.65600e+03 8.86600e+03 +2272 7.05600e+03 1.08020e+04 +2273 7.19500e+03 8.84400e+03 +2274 7.21600e+03 6.38000e+02 +2275 7.21600e+03 1.51800e+03 +2276 7.21600e+03 4.04800e+03 +2277 7.21600e+03 7.12800e+03 +2278 7.21600e+03 8.65700e+03 +2279 1.74560e+04 1.78200e+03 +2280 1.74560e+04 4.09200e+03 +2281 1.74560e+04 6.57800e+03 +2282 1.74560e+04 7.72200e+03 +2283 1.74560e+04 8.74500e+03 +2284 1.74760e+04 8.84400e+03 +2285 1.75520e+04 8.84400e+03 +2286 1.77120e+04 9.60300e+03 +2287 1.77120e+04 1.06700e+04 +2288 9.42800e+03 2.94800e+03 +2289 9.68000e+03 2.94800e+03 +2290 9.80800e+03 2.94800e+03 +2291 9.87200e+03 2.94800e+03 +2292 1.00000e+04 2.94800e+03 +2293 1.00960e+04 2.94800e+03 +2294 1.02240e+04 2.94800e+03 +2295 1.02880e+04 2.94800e+03 +2296 1.03840e+04 2.94800e+03 +2297 1.05120e+04 2.94800e+03 +2298 1.05760e+04 2.94800e+03 +2299 1.06400e+04 2.94800e+03 +2300 1.07040e+04 2.94800e+03 +2301 1.08000e+04 2.94800e+03 +2302 1.09280e+04 2.94800e+03 +2303 1.10560e+04 2.94800e+03 +2304 1.11200e+04 2.94800e+03 +2305 1.12160e+04 2.94800e+03 +2306 1.13440e+04 2.94800e+03 +2307 1.14880e+04 2.94800e+03 +2308 1.16960e+04 2.94800e+03 +2309 1.17600e+04 2.94800e+03 +2310 1.19040e+04 2.94800e+03 +2311 1.20480e+04 2.94800e+03 +2312 1.21760e+04 2.94800e+03 +2313 1.23360e+04 2.94800e+03 +2314 1.24320e+04 2.94800e+03 +2315 1.25230e+04 2.94800e+03 +2316 1.25600e+04 1.60600e+03 +2317 1.25600e+04 2.35400e+03 +2318 1.75520e+04 1.78200e+03 +2319 1.75520e+04 4.09200e+03 +2320 1.75520e+04 6.57800e+03 +2321 1.75520e+04 7.88700e+03 +2322 1.77120e+04 8.18400e+03 +2323 1.78560e+04 8.18400e+03 +2324 1.79680e+04 8.18400e+03 +2325 1.81920e+04 8.18400e+03 +2326 1.82560e+04 9.42700e+03 +2327 1.82560e+04 1.06700e+04 +2328 9.72800e+03 1.00320e+04 +2329 1.00320e+04 1.00320e+04 +2330 1.02560e+04 1.00320e+04 +2331 1.03200e+04 1.00320e+04 +2332 1.04160e+04 1.00320e+04 +2333 1.04800e+04 1.00320e+04 +2334 1.06560e+04 1.00320e+04 +2335 1.07360e+04 1.00320e+04 +2336 1.08000e+04 1.00320e+04 +2337 1.09280e+04 1.00320e+04 +2338 1.10400e+04 1.00320e+04 +2339 1.12160e+04 1.00320e+04 +2340 1.13120e+04 1.00320e+04 +2341 1.14400e+04 1.00320e+04 +2342 1.15200e+04 1.00320e+04 +2343 1.16000e+04 1.00320e+04 +2344 1.17120e+04 1.00320e+04 +2345 1.17920e+04 1.00320e+04 +2346 1.19840e+04 1.00320e+04 +2347 1.20800e+04 1.00320e+04 +2348 1.22080e+04 1.00320e+04 +2349 1.23840e+04 1.00320e+04 +2350 1.25280e+04 1.00320e+04 +2351 1.26560e+04 1.00320e+04 +2352 1.28160e+04 1.00320e+04 +2353 1.29440e+04 1.00320e+04 +2354 1.30880e+04 1.00320e+04 +2355 1.32320e+04 1.00320e+04 +2356 1.34080e+04 1.00320e+04 +2357 1.35360e+04 1.00320e+04 +2358 1.36430e+04 1.00320e+04 +2359 1.36800e+04 2.53000e+03 +2360 1.36800e+04 5.14800e+03 +2361 1.36800e+04 7.28200e+03 +2362 1.36800e+04 8.86600e+03 +2363 1.36800e+04 9.88900e+03 +2364 1.77120e+04 2.31000e+02 +2365 1.77120e+04 1.78200e+03 +2366 1.77120e+04 4.24600e+03 +2367 1.77120e+04 6.32500e+03 +2368 1.78400e+04 6.90800e+03 +2369 1.79680e+04 6.90800e+03 +2370 1.81280e+04 7.00700e+03 +2371 1.81280e+04 7.76600e+03 +2372 1.81280e+04 1.06700e+04 +2373 9.07200e+03 3.48700e+03 +2374 9.07200e+03 5.96200e+03 +2375 9.07200e+03 6.90800e+03 +2376 9.07200e+03 9.87800e+03 +2377 9.44000e+03 3.38800e+03 +2378 9.52000e+03 3.38800e+03 +2379 9.68000e+03 3.38800e+03 +2380 9.84000e+03 3.38800e+03 +2381 1.00000e+04 3.38800e+03 +2382 1.00960e+04 3.38800e+03 +2383 1.02240e+04 3.38800e+03 +2384 1.02880e+04 3.38800e+03 +2385 1.03840e+04 3.38800e+03 +2386 1.05120e+04 3.38800e+03 +2387 1.05760e+04 3.38800e+03 +2388 1.06400e+04 3.38800e+03 +2389 1.07040e+04 3.38800e+03 +2390 1.08000e+04 3.38800e+03 +2391 1.09280e+04 3.38800e+03 +2392 1.10560e+04 3.38800e+03 +2393 1.11200e+04 3.38800e+03 +2394 1.12160e+04 3.38800e+03 +2395 1.13440e+04 3.38800e+03 +2396 1.14880e+04 3.38800e+03 +2397 1.16960e+04 3.38800e+03 +2398 1.17600e+04 3.38800e+03 +2399 1.19040e+04 3.38800e+03 +2400 1.20480e+04 3.38800e+03 +2401 1.21760e+04 3.38800e+03 +2402 1.23360e+04 3.38800e+03 +2403 1.24320e+04 3.38800e+03 +2404 1.25440e+04 3.38800e+03 +2405 1.26880e+04 3.38800e+03 +2406 1.27630e+04 3.38800e+03 +2407 1.27840e+04 1.60600e+03 +2408 1.27840e+04 2.31000e+03 +2409 9.23200e+03 8.10700e+03 +2410 9.23200e+03 9.87800e+03 +2411 9.64800e+03 8.00800e+03 +2412 9.74400e+03 8.00800e+03 +2413 9.90400e+03 8.00800e+03 +2414 1.00160e+04 8.00800e+03 +2415 1.01920e+04 8.00800e+03 +2416 1.02560e+04 8.00800e+03 +2417 1.03840e+04 8.00800e+03 +2418 1.04960e+04 8.00800e+03 +2419 1.06560e+04 8.00800e+03 +2420 1.08160e+04 8.00800e+03 +2421 1.09280e+04 8.00800e+03 +2422 1.10400e+04 8.00800e+03 +2423 1.11200e+04 8.00800e+03 +2424 1.12160e+04 8.00800e+03 +2425 1.13280e+04 8.00800e+03 +2426 1.15040e+04 8.00800e+03 +2427 1.15680e+04 8.00800e+03 +2428 1.16320e+04 8.00800e+03 +2429 1.16960e+04 8.00800e+03 +2430 1.17600e+04 8.00800e+03 +2431 1.18240e+04 8.00800e+03 +2432 1.19680e+04 8.00800e+03 +2433 1.21920e+04 8.00800e+03 +2434 1.22720e+04 8.00800e+03 +2435 1.23840e+04 8.00800e+03 +2436 1.25280e+04 8.00800e+03 +2437 1.26560e+04 8.00800e+03 +2438 1.28000e+04 8.00800e+03 +2439 1.28800e+04 8.00800e+03 +2440 1.29440e+04 8.00800e+03 +2441 1.30880e+04 8.00800e+03 +2442 1.32640e+04 8.00800e+03 +2443 1.33920e+04 8.00800e+03 +2444 1.35200e+04 8.00800e+03 +2445 1.36320e+04 8.00800e+03 +2446 1.37120e+04 2.53000e+03 +2447 1.37120e+04 5.14800e+03 +2448 1.37120e+04 7.28200e+03 +2449 8.40000e+03 1.18800e+03 +2450 8.40000e+03 6.91900e+03 +2451 8.42000e+03 7.04000e+03 +2452 8.50700e+03 7.04000e+03 +2453 8.52800e+03 7.13900e+03 +2454 8.52800e+03 8.86600e+03 +2455 9.16800e+03 1.63900e+03 +2456 9.16800e+03 2.94800e+03 +2457 9.16800e+03 5.96200e+03 +2458 9.16800e+03 7.01800e+03 +2459 9.16800e+03 8.07400e+03 +2460 9.16800e+03 9.87800e+03 +2461 9.26400e+03 1.45200e+03 +2462 9.42400e+03 1.45200e+03 +2463 9.58400e+03 1.45200e+03 +2464 9.68000e+03 1.45200e+03 +2465 9.80800e+03 1.45200e+03 +2466 9.87200e+03 1.45200e+03 +2467 1.00000e+04 1.45200e+03 +2468 1.00960e+04 1.45200e+03 +2469 1.02240e+04 1.45200e+03 +2470 1.02880e+04 1.45200e+03 +2471 1.03840e+04 1.45200e+03 +2472 1.05120e+04 1.45200e+03 +2473 1.05760e+04 1.45200e+03 +2474 1.06400e+04 1.45200e+03 +2475 1.07040e+04 1.45200e+03 +2476 1.08000e+04 1.45200e+03 +2477 1.09280e+04 1.45200e+03 +2478 1.10560e+04 1.45200e+03 +2479 1.11200e+04 1.45200e+03 +2480 1.12160e+04 1.45200e+03 +2481 1.13440e+04 1.45200e+03 +2482 1.14880e+04 1.45200e+03 +2483 1.16960e+04 1.45200e+03 +2484 1.17600e+04 1.45200e+03 +2485 1.19040e+04 1.45200e+03 +2486 1.20480e+04 1.45200e+03 +2487 1.21760e+04 1.45200e+03 +2488 1.23040e+04 9.02000e+02 +2489 9.36000e+03 2.82700e+03 +2490 9.41200e+03 2.72800e+03 +2491 9.68000e+03 2.72800e+03 +2492 9.80800e+03 2.72800e+03 +2493 9.87200e+03 2.72800e+03 +2494 1.00000e+04 2.72800e+03 +2495 1.00960e+04 2.72800e+03 +2496 1.02240e+04 2.72800e+03 +2497 1.02880e+04 2.72800e+03 +2498 1.03840e+04 2.72800e+03 +2499 1.05120e+04 2.72800e+03 +2500 1.05760e+04 2.72800e+03 +2501 1.06400e+04 2.72800e+03 +2502 1.07040e+04 2.72800e+03 +2503 1.08000e+04 2.72800e+03 +2504 1.09280e+04 2.72800e+03 +2505 1.10560e+04 2.72800e+03 +2506 1.11200e+04 2.72800e+03 +2507 1.12160e+04 2.72800e+03 +2508 1.13440e+04 2.72800e+03 +2509 1.14880e+04 2.72800e+03 +2510 1.16960e+04 2.72800e+03 +2511 1.17600e+04 2.72800e+03 +2512 1.19040e+04 2.72800e+03 +2513 1.20480e+04 2.72800e+03 +2514 1.21760e+04 2.72800e+03 +2515 1.23360e+04 2.72800e+03 +2516 1.24320e+04 2.72800e+03 +2517 1.25120e+04 2.72800e+03 +2518 1.25920e+04 1.60600e+03 +2519 1.25920e+04 2.47500e+03 +2520 1.48640e+04 2.53000e+03 +2521 1.48640e+04 4.37800e+03 +2522 1.48640e+04 5.47800e+03 +2523 1.48640e+04 6.79800e+03 +2524 1.48640e+04 8.64600e+03 +2525 1.48640e+04 9.87800e+03 +2526 1.48640e+04 1.14290e+04 +2527 7.76000e+03 8.74500e+03 +2528 7.77600e+03 8.44800e+03 +2529 7.79200e+03 1.18800e+03 +2530 7.79200e+03 4.81800e+03 +2531 1.53120e+04 7.88700e+03 +2532 1.53120e+04 8.64600e+03 +2533 1.53120e+04 9.87800e+03 +2534 1.53120e+04 1.06260e+04 +2535 1.53120e+04 1.14290e+04 +2536 1.53440e+04 7.78800e+03 +2537 1.53760e+04 2.53000e+03 +2538 1.53760e+04 5.47800e+03 +2539 1.53760e+04 6.79800e+03 +2540 1.53760e+04 7.68900e+03 +2541 6.86400e+03 4.29000e+02 +2542 6.86400e+03 1.51800e+03 +2543 6.86400e+03 2.57400e+03 +2544 6.86400e+03 4.04800e+03 +2545 7.00800e+03 5.36800e+03 +2546 7.08800e+03 5.36800e+03 +2547 7.18400e+03 5.36800e+03 +2548 7.32800e+03 5.36800e+03 +2549 7.58400e+03 5.36800e+03 +2550 7.66400e+03 5.36800e+03 +2551 7.76000e+03 5.36800e+03 +2552 7.82400e+03 5.36800e+03 +2553 7.88800e+03 5.36800e+03 +2554 7.95200e+03 5.36800e+03 +2555 8.04800e+03 5.36800e+03 +2556 8.17600e+03 5.36800e+03 +2557 8.33600e+03 5.36800e+03 +2558 8.43200e+03 5.36800e+03 +2559 8.49600e+03 5.36800e+03 +2560 8.75200e+03 5.36800e+03 +2561 8.84800e+03 5.36800e+03 +2562 8.99200e+03 5.36800e+03 +2563 9.44000e+03 5.36800e+03 +2564 9.55200e+03 5.36800e+03 +2565 9.68000e+03 5.36800e+03 +2566 9.82400e+03 5.36800e+03 +2567 1.00160e+04 5.36800e+03 +2568 1.01600e+04 5.36800e+03 +2569 1.02240e+04 5.36800e+03 +2570 1.02880e+04 5.36800e+03 +2571 1.03840e+04 5.36800e+03 +2572 1.05120e+04 5.36800e+03 +2573 1.06080e+04 5.36800e+03 +2574 1.07040e+04 7.39200e+03 +2575 1.07040e+04 1.14950e+04 +2576 1.24000e+04 1.14840e+04 +2577 1.25280e+04 1.10000e+04 +2578 1.26560e+04 1.10000e+04 +2579 1.28160e+04 1.10000e+04 +2580 1.29440e+04 1.10000e+04 +2581 1.30880e+04 1.10000e+04 +2582 1.32320e+04 1.10000e+04 +2583 1.33920e+04 1.10000e+04 +2584 1.35360e+04 1.10000e+04 +2585 1.36960e+04 1.10000e+04 +2586 1.39680e+04 1.10000e+04 +2587 1.41920e+04 1.10000e+04 +2588 1.42720e+04 1.10000e+04 +2589 1.43840e+04 1.10000e+04 +2590 1.44480e+04 1.10000e+04 +2591 1.24000e+04 1.11760e+04 +2592 1.45760e+04 2.53000e+03 +2593 1.45760e+04 5.36800e+03 +2594 1.45760e+04 6.79800e+03 +2595 1.45760e+04 8.64600e+03 +2596 1.45760e+04 9.87800e+03 +2597 1.47040e+04 1.10000e+04 +2598 1.47840e+04 1.10000e+04 +2599 1.49600e+04 1.10000e+04 +2600 1.51200e+04 1.10000e+04 +2601 1.53920e+04 1.10000e+04 +2602 1.55200e+04 1.10000e+04 +2603 1.57120e+04 1.10000e+04 +2604 1.57920e+04 1.10000e+04 +2605 1.58560e+04 1.10000e+04 +2606 1.60480e+04 1.10000e+04 +2607 1.62240e+04 1.10000e+04 +2608 1.64320e+04 1.10000e+04 +2609 1.64960e+04 1.14840e+04 +2610 1.64960e+04 1.11760e+04 +2611 7.08800e+03 8.53600e+03 +2612 7.08800e+03 1.08020e+04 +2613 7.15200e+03 6.38000e+02 +2614 7.15200e+03 1.51800e+03 +2615 7.15200e+03 4.04800e+03 +2616 7.15200e+03 7.13900e+03 +2617 1.59520e+04 2.34300e+03 +2618 1.59720e+04 2.99200e+03 +2619 1.61280e+04 2.99200e+03 +2620 1.62720e+04 2.99200e+03 +2621 1.64000e+04 2.99200e+03 +2622 1.65440e+04 2.99200e+03 +2623 1.66560e+04 2.99200e+03 +2624 1.67520e+04 2.99200e+03 +2625 1.69120e+04 2.99200e+03 +2626 1.70400e+04 2.99200e+03 +2627 1.71040e+04 2.99200e+03 +2628 1.71840e+04 2.99200e+03 +2629 1.73920e+04 2.99200e+03 +2630 1.75040e+04 2.99200e+03 +2631 1.77440e+04 4.12500e+03 +2632 1.77440e+04 6.20400e+03 +2633 1.77440e+04 7.76600e+03 +2634 1.77440e+04 8.73400e+03 +2635 1.77440e+04 9.60300e+03 +2636 1.77440e+04 1.06700e+04 +2637 1.56640e+04 2.53000e+03 +2638 1.56640e+04 5.36800e+03 +2639 1.56640e+04 6.79800e+03 +2640 1.56640e+04 8.42600e+03 +2641 1.56640e+04 9.87800e+03 +2642 1.56640e+04 1.06260e+04 +2643 1.56640e+04 1.14290e+04 +2644 1.75840e+04 2.31000e+02 +2645 1.75840e+04 1.78200e+03 +2646 1.75840e+04 4.09200e+03 +2647 1.75840e+04 6.57800e+03 +2648 1.75840e+04 7.76600e+03 +2649 1.75840e+04 9.60300e+03 +2650 1.75840e+04 1.06700e+04 +2651 1.64320e+04 2.22200e+03 +2652 1.64320e+04 3.85000e+03 +2653 1.64320e+04 5.47800e+03 +2654 1.64320e+04 6.79800e+03 +2655 1.64320e+04 7.88700e+03 +2656 1.65280e+04 1.08900e+04 +2657 8.14400e+03 1.18800e+03 +2658 8.14400e+03 4.81800e+03 +2659 8.14400e+03 7.01800e+03 +2660 8.14400e+03 8.75600e+03 +2661 9.61600e+03 2.31000e+02 +2662 9.61600e+03 1.01200e+03 +2663 9.61600e+03 1.76000e+03 +2664 9.61600e+03 7.13900e+03 +2665 1.21120e+04 9.02000e+02 +2666 1.21120e+04 4.48800e+03 +2667 1.21120e+04 5.96200e+03 +2668 1.21120e+04 7.39200e+03 +2669 8.36800e+03 1.18800e+03 +2670 8.36800e+03 6.90800e+03 +2671 8.36800e+03 8.76700e+03 +2672 1.27840e+04 1.14290e+04 +2673 1.28040e+04 8.84400e+03 +2674 1.28800e+04 8.84400e+03 +2675 1.29440e+04 8.84400e+03 +2676 1.30880e+04 8.84400e+03 +2677 1.32640e+04 8.84400e+03 +2678 1.33920e+04 8.84400e+03 +2679 1.35310e+04 8.84400e+03 +2680 1.35520e+04 2.53000e+03 +2681 1.35520e+04 3.93800e+03 +2682 1.35520e+04 4.92800e+03 +2683 1.35520e+04 7.28200e+03 +2684 1.35520e+04 8.65700e+03 +2685 1.88640e+04 1.08460e+04 +2686 1.88640e+04 1.15280e+04 +2687 1.89160e+04 9.08600e+03 +2688 1.90240e+04 9.08600e+03 +2689 1.19200e+04 7.39200e+03 +2690 1.19200e+04 1.11650e+04 +2691 1.19360e+04 6.77600e+03 +2692 1.19520e+04 9.02000e+02 +2693 1.19520e+04 4.48800e+03 +2694 1.19520e+04 6.07200e+03 +2695 1.03200e+04 2.31000e+02 +2696 1.03200e+04 1.01200e+03 +2697 1.03200e+04 1.76000e+03 +2698 1.03200e+04 7.39200e+03 +2699 1.04270e+04 9.50400e+03 +2700 1.18240e+04 9.02000e+02 +2701 1.18240e+04 4.48800e+03 +2702 1.18240e+04 6.08300e+03 +2703 1.18400e+04 6.33600e+03 +2704 1.18560e+04 7.39200e+03 +2705 1.18560e+04 1.11650e+04 +2706 1.26560e+04 1.60600e+03 +2707 1.26560e+04 2.57400e+03 +2708 1.26560e+04 4.70800e+03 +2709 1.26560e+04 6.07200e+03 +2710 1.26720e+04 6.77600e+03 +2711 1.26880e+04 7.39200e+03 +2712 1.26880e+04 1.14290e+04 +2713 5.00800e+03 1.14950e+04 +2714 5.07200e+03 2.17800e+03 +2715 5.07200e+03 4.04800e+03 +2716 5.07200e+03 6.40200e+03 +2717 5.07200e+03 7.19400e+03 +2718 1.31680e+04 1.60600e+03 +2719 1.31680e+04 2.31000e+03 +2720 1.31680e+04 3.12400e+03 +2721 1.31680e+04 3.93800e+03 +2722 1.31680e+04 4.92800e+03 +2723 1.31680e+04 5.92900e+03 +2724 1.32960e+04 6.02800e+03 +2725 1.34560e+04 6.02800e+03 +2726 1.35200e+04 6.02800e+03 +2727 1.36320e+04 6.02800e+03 +2728 1.37600e+04 6.02800e+03 +2729 1.39200e+04 6.02800e+03 +2730 1.40800e+04 6.02800e+03 +2731 1.41920e+04 6.02800e+03 +2732 1.42560e+04 6.02800e+03 +2733 1.44000e+04 6.02800e+03 +2734 1.45120e+04 6.02800e+03 +2735 1.47040e+04 6.02800e+03 +2736 1.48160e+04 6.02800e+03 +2737 1.49280e+04 6.02800e+03 +2738 1.51360e+04 6.02800e+03 +2739 1.53280e+04 6.02800e+03 +2740 1.54400e+04 6.02800e+03 +2741 1.56000e+04 6.02800e+03 +2742 1.57120e+04 6.02800e+03 +2743 1.57920e+04 6.02800e+03 +2744 1.58880e+04 6.02800e+03 +2745 1.59840e+04 6.02800e+03 +2746 1.61280e+04 6.02800e+03 +2747 1.62880e+04 6.02800e+03 +2748 1.65440e+04 6.02800e+03 +2749 1.66560e+04 6.02800e+03 +2750 1.67520e+04 6.02800e+03 +2751 1.68160e+04 6.02800e+03 +2752 1.69120e+04 6.02800e+03 +2753 1.70400e+04 6.02800e+03 +2754 1.71040e+04 6.02800e+03 +2755 1.71680e+04 6.02800e+03 +2756 1.73920e+04 6.02800e+03 +2757 1.75040e+04 6.02800e+03 +2758 1.76800e+04 6.45700e+03 +2759 1.76800e+04 7.76600e+03 +2760 1.76800e+04 9.60300e+03 +2761 1.76800e+04 1.06700e+04 +2762 3.31200e+03 1.06920e+04 +2763 3.34400e+03 3.11300e+03 +2764 3.34400e+03 6.86400e+03 +2765 3.34400e+03 1.01530e+04 +2766 1.45440e+04 2.53000e+03 +2767 1.45440e+04 5.36800e+03 +2768 1.45440e+04 6.79800e+03 +2769 1.45440e+04 8.64600e+03 +2770 1.45440e+04 9.87800e+03 +2771 1.45440e+04 1.15390e+04 +2772 6.73600e+03 6.38000e+02 +2773 6.73600e+03 1.51800e+03 +2774 6.73600e+03 2.57400e+03 +2775 6.73600e+03 4.04800e+03 +2776 6.73600e+03 8.64600e+03 +2777 6.73600e+03 9.43800e+03 +2778 6.83200e+03 1.14400e+04 +2779 7.02400e+03 1.14400e+04 +2780 7.20000e+03 1.14400e+04 +2781 7.44000e+03 1.14400e+04 +2782 7.53600e+03 1.14400e+04 +2783 7.60000e+03 1.14400e+04 +2784 7.69600e+03 1.14400e+04 +2785 7.82400e+03 1.14400e+04 +2786 7.88800e+03 1.14400e+04 +2787 8.09600e+03 1.14400e+04 +2788 8.17600e+03 1.14400e+04 +2789 8.27200e+03 1.14400e+04 +2790 8.36800e+03 1.14400e+04 +2791 8.43200e+03 1.14400e+04 +2792 8.72000e+03 1.14400e+04 +2793 8.84800e+03 1.14400e+04 +2794 9.10400e+03 1.14400e+04 +2795 9.72800e+03 1.14400e+04 +2796 1.00320e+04 1.14400e+04 +2797 1.02560e+04 1.14400e+04 +2798 1.03200e+04 1.14400e+04 +2799 1.04800e+04 1.14400e+04 +2800 1.05440e+04 1.15280e+04 +2801 1.17920e+04 9.02000e+02 +2802 1.17920e+04 4.48800e+03 +2803 1.17920e+04 6.07200e+03 +2804 1.17920e+04 7.39200e+03 +2805 1.18080e+04 8.22800e+03 +2806 1.18240e+04 1.11650e+04 +2807 8.72000e+03 1.18800e+03 +2808 8.72000e+03 5.96200e+03 +2809 8.84800e+03 7.70000e+03 +2810 9.10400e+03 7.70000e+03 +2811 9.23200e+03 7.70000e+03 +2812 6.06400e+03 3.19000e+02 +2813 6.06400e+03 2.02400e+03 +2814 6.06400e+03 4.04800e+03 +2815 6.06400e+03 5.33500e+03 +2816 6.10000e+03 5.58800e+03 +2817 6.19200e+03 5.58800e+03 +2818 6.25600e+03 5.58800e+03 +2819 6.41600e+03 5.58800e+03 +2820 6.56000e+03 5.58800e+03 +2821 6.67200e+03 5.58800e+03 +2822 6.77900e+03 5.58800e+03 +2823 6.80000e+03 7.12800e+03 +2824 6.80000e+03 8.64600e+03 +2825 6.80000e+03 9.43800e+03 +2826 6.86400e+03 6.55600e+03 +2827 6.99200e+03 6.55600e+03 +2828 7.08800e+03 6.55600e+03 +2829 7.18400e+03 6.55600e+03 +2830 7.32800e+03 6.55600e+03 +2831 7.61600e+03 6.55600e+03 +2832 7.74400e+03 6.55600e+03 +2833 7.82400e+03 6.55600e+03 +2834 7.88800e+03 6.55600e+03 +2835 8.04800e+03 6.55600e+03 +2836 8.17600e+03 6.55600e+03 +2837 8.43200e+03 6.55600e+03 +2838 8.51200e+03 6.55600e+03 +2839 8.83200e+03 6.55600e+03 +2840 8.94400e+03 1.18800e+03 +2841 8.94400e+03 5.96200e+03 +2842 8.94400e+03 6.89700e+03 +2843 8.94400e+03 9.87800e+03 +2844 5.96800e+03 3.19000e+02 +2845 5.96800e+03 2.02400e+03 +2846 5.96800e+03 4.04800e+03 +2847 5.96800e+03 5.32400e+03 +2848 6.09600e+03 7.70000e+03 +2849 6.19200e+03 7.70000e+03 +2850 6.41600e+03 7.70000e+03 +2851 6.54400e+03 7.70000e+03 +2852 6.67200e+03 7.70000e+03 +2853 6.86400e+03 7.70000e+03 +2854 6.92800e+03 7.70000e+03 +2855 7.04000e+03 7.70000e+03 +2856 7.15200e+03 8.53600e+03 +2857 7.15200e+03 1.08020e+04 +2858 7.20400e+03 9.50400e+03 +2859 7.53600e+03 9.50400e+03 +2860 7.60000e+03 9.50400e+03 +2861 7.69600e+03 9.50400e+03 +2862 7.82400e+03 9.50400e+03 +2863 7.90400e+03 9.50400e+03 +2864 8.09600e+03 9.50400e+03 +2865 8.17600e+03 9.50400e+03 +2866 8.27200e+03 9.50400e+03 +2867 8.36800e+03 9.50400e+03 +2868 8.43200e+03 9.50400e+03 +2869 8.72000e+03 9.50400e+03 +2870 8.86400e+03 9.50400e+03 +2871 9.10400e+03 9.50400e+03 +2872 9.72800e+03 9.50400e+03 +2873 9.96800e+03 2.31000e+02 +2874 9.96800e+03 1.01200e+03 +2875 9.96800e+03 1.76000e+03 +2876 1.19520e+04 1.11650e+04 +2877 1.19720e+04 8.22800e+03 +2878 1.21920e+04 8.22800e+03 +2879 1.22720e+04 8.22800e+03 +2880 1.23840e+04 8.22800e+03 +2881 1.25280e+04 8.22800e+03 +2882 1.26560e+04 8.22800e+03 +2883 1.28000e+04 8.22800e+03 +2884 1.28800e+04 8.22800e+03 +2885 1.29440e+04 8.22800e+03 +2886 1.30880e+04 8.22800e+03 +2887 1.32640e+04 8.22800e+03 +2888 1.33920e+04 8.22800e+03 +2889 1.35200e+04 8.22800e+03 +2890 1.36320e+04 8.22800e+03 +2891 1.37440e+04 8.22800e+03 +2892 1.39680e+04 8.22800e+03 +2893 1.41920e+04 8.22800e+03 +2894 1.42720e+04 8.22800e+03 +2895 1.43840e+04 8.22800e+03 +2896 1.44480e+04 8.22800e+03 +2897 1.45120e+04 8.22800e+03 +2898 1.47040e+04 8.22800e+03 +2899 1.47840e+04 8.22800e+03 +2900 1.51200e+04 8.22800e+03 +2901 1.53920e+04 8.22800e+03 +2902 1.54720e+04 8.22800e+03 +2903 1.55360e+04 4.84000e+02 +2904 1.55360e+04 6.71000e+02 +2905 1.55360e+04 2.53000e+03 +2906 1.55360e+04 5.36800e+03 +2907 1.55360e+04 6.79800e+03 +2908 1.56000e+04 5.72000e+02 +2909 1.57280e+04 5.72000e+02 +2910 1.57920e+04 5.72000e+02 +2911 1.58880e+04 5.72000e+02 +2912 1.59840e+04 5.72000e+02 +2913 1.61280e+04 5.72000e+02 +2914 1.62720e+04 5.72000e+02 +2915 1.64000e+04 5.72000e+02 +2916 1.65600e+04 5.72000e+02 +2917 1.66560e+04 5.72000e+02 +2918 1.67520e+04 5.72000e+02 +2919 1.69120e+04 5.72000e+02 +2920 1.70400e+04 5.72000e+02 +2921 1.71840e+04 5.72000e+02 +2922 1.73920e+04 5.72000e+02 +2923 1.75040e+04 5.72000e+02 +2924 1.78240e+04 5.72000e+02 +2925 1.79680e+04 5.72000e+02 +2926 1.80320e+04 5.72000e+02 +2927 1.81280e+04 3.52000e+02 +2928 7.56800e+03 8.75600e+03 +2929 7.60000e+03 6.11600e+03 +2930 7.63200e+03 1.18800e+03 +2931 7.63200e+03 4.81800e+03 +2932 1.17280e+04 9.02000e+02 +2933 1.17280e+04 4.48800e+03 +2934 1.17280e+04 6.07200e+03 +2935 1.17280e+04 7.39200e+03 +2936 1.17440e+04 8.22800e+03 +2937 1.17600e+04 1.11650e+04 +2938 1.90240e+04 1.15280e+04 +2939 1.22720e+04 9.02000e+02 +2940 1.22720e+04 4.48800e+03 +2941 1.22720e+04 5.96200e+03 +2942 1.23840e+04 6.77600e+03 +2943 1.24960e+04 7.39200e+03 +2944 1.24960e+04 1.14290e+04 +2945 1.06560e+04 8.22800e+03 +2946 1.07360e+04 2.31000e+02 +2947 1.07360e+04 9.02000e+02 +2948 1.07360e+04 1.76000e+03 +2949 1.07360e+04 7.39200e+03 +2950 7.50400e+03 8.75600e+03 +2951 7.56800e+03 6.38000e+02 +2952 7.56800e+03 1.51800e+03 +2953 7.56800e+03 3.94900e+03 +2954 7.56800e+03 4.14700e+03 +2955 7.56800e+03 4.93900e+03 +2956 7.66400e+03 4.04800e+03 +2957 7.76000e+03 4.04800e+03 +2958 7.82400e+03 4.04800e+03 +2959 7.88800e+03 4.04800e+03 +2960 7.95200e+03 4.04800e+03 +2961 8.04800e+03 4.04800e+03 +2962 8.20800e+03 4.04800e+03 +2963 8.33600e+03 4.04800e+03 +2964 8.43200e+03 4.04800e+03 +2965 8.49600e+03 4.04800e+03 +2966 8.68800e+03 4.04800e+03 +2967 8.76300e+03 4.04800e+03 +2968 8.78400e+03 1.18800e+03 +2969 8.78400e+03 3.94900e+03 +2970 8.78400e+03 8.86600e+03 +2971 7.88800e+03 9.06400e+03 +2972 7.92000e+03 1.18800e+03 +2973 7.92000e+03 4.81800e+03 +2974 7.92000e+03 8.76700e+03 +2975 7.94000e+03 4.26800e+03 +2976 8.04800e+03 4.26800e+03 +2977 8.20800e+03 4.26800e+03 +2978 8.33600e+03 4.26800e+03 +2979 8.43200e+03 4.26800e+03 +2980 8.49600e+03 4.26800e+03 +2981 8.68800e+03 4.26800e+03 +2982 8.75200e+03 4.26800e+03 +2983 8.84800e+03 4.26800e+03 +2984 8.91200e+03 4.26800e+03 +2985 8.99200e+03 4.26800e+03 +2986 9.44000e+03 4.26800e+03 +2987 9.55200e+03 4.26800e+03 +2988 9.68000e+03 4.26800e+03 +2989 9.82400e+03 4.26800e+03 +2990 9.93600e+03 4.26800e+03 +2991 1.00000e+04 4.26800e+03 +2992 1.02240e+04 4.26800e+03 +2993 1.02880e+04 4.26800e+03 +2994 1.03840e+04 4.26800e+03 +2995 1.05230e+04 4.26800e+03 +2996 1.05440e+04 2.31000e+02 +2997 1.05440e+04 1.01200e+03 +2998 1.05440e+04 1.76000e+03 +2999 1.05440e+04 7.39200e+03 +3000 1.06560e+04 1.11320e+04 +3001 1.07680e+04 1.11320e+04 +3002 1.09280e+04 1.11320e+04 +3003 1.09920e+04 1.15500e+04 +3004 1.09920e+04 1.13080e+04 +3005 8.20800e+03 7.01800e+03 +3006 8.20800e+03 8.75600e+03 +3007 8.33600e+03 4.70800e+03 +3008 8.43200e+03 4.70800e+03 +3009 8.49600e+03 4.70800e+03 +3010 8.75200e+03 4.70800e+03 +3011 8.84800e+03 4.70800e+03 +3012 8.99200e+03 4.70800e+03 +3013 9.44000e+03 4.70800e+03 +3014 9.55200e+03 4.70800e+03 +3015 9.68000e+03 4.70800e+03 +3016 9.82400e+03 4.70800e+03 +3017 9.93600e+03 4.70800e+03 +3018 1.00000e+04 4.70800e+03 +3019 1.02240e+04 4.70800e+03 +3020 1.02880e+04 4.70800e+03 +3021 1.03840e+04 4.70800e+03 +3022 1.05120e+04 4.70800e+03 +3023 1.05870e+04 4.70800e+03 +3024 1.06080e+04 2.31000e+02 +3025 1.06080e+04 9.02000e+02 +3026 1.06080e+04 1.76000e+03 +3027 1.19840e+04 9.02000e+02 +3028 1.19840e+04 4.48800e+03 +3029 1.19840e+04 6.07200e+03 +3030 1.20000e+04 6.77600e+03 +3031 1.20160e+04 7.39200e+03 +3032 1.20160e+04 1.11650e+04 +3033 8.56000e+03 5.96200e+03 +3034 8.56000e+03 7.01800e+03 +3035 8.56000e+03 8.86600e+03 +3036 8.62400e+03 2.28800e+03 +3037 8.75200e+03 2.28800e+03 +3038 8.84800e+03 2.28800e+03 +3039 8.97600e+03 2.28800e+03 +3040 9.04000e+03 2.28800e+03 +3041 9.26400e+03 2.28800e+03 +3042 9.36000e+03 6.71000e+02 +3043 9.36000e+03 1.76000e+03 +3044 1.13760e+04 1.13850e+04 +3045 1.14400e+04 2.31000e+02 +3046 1.14400e+04 9.02000e+02 +3047 1.14400e+04 4.48800e+03 +3048 1.14400e+04 6.07200e+03 +3049 1.14400e+04 7.39200e+03 +3050 1.02560e+04 8.22800e+03 +3051 1.03520e+04 2.31000e+02 +3052 1.03520e+04 1.01200e+03 +3053 1.03520e+04 1.76000e+03 +3054 1.03520e+04 7.39200e+03 +3055 1.14720e+04 7.39200e+03 +3056 1.14720e+04 1.12750e+04 +3057 1.14920e+04 6.33600e+03 +3058 1.15680e+04 2.31000e+02 +3059 1.15680e+04 9.02000e+02 +3060 1.15680e+04 4.48800e+03 +3061 1.15680e+04 6.08300e+03 +3062 1.11840e+04 1.13850e+04 +3063 1.12040e+04 9.06400e+03 +3064 1.13440e+04 9.06400e+03 +3065 1.15150e+04 9.06400e+03 +3066 1.15360e+04 2.31000e+02 +3067 1.15360e+04 9.02000e+02 +3068 1.15360e+04 4.48800e+03 +3069 1.15360e+04 5.96200e+03 +3070 1.15360e+04 7.39200e+03 +3071 6.56000e+02 3.57500e+03 +3072 6.56000e+02 9.92200e+03 +3073 1.58240e+04 5.36800e+03 +3074 1.58240e+04 6.79800e+03 +3075 1.58240e+04 8.42600e+03 +3076 1.58240e+04 9.87800e+03 +3077 1.58240e+04 1.06260e+04 +3078 1.58240e+04 1.14290e+04 +3079 1.58880e+04 4.48800e+03 +3080 1.59840e+04 4.48800e+03 +3081 1.61280e+04 4.48800e+03 +3082 1.62830e+04 4.48800e+03 +3083 1.63040e+04 2.22200e+03 +3084 1.63040e+04 3.86100e+03 +3085 6.60800e+03 4.29000e+02 +3086 6.60800e+03 1.51800e+03 +3087 6.60800e+03 2.57400e+03 +3088 6.60800e+03 4.04800e+03 +3089 6.66000e+03 5.06000e+03 +3090 6.78400e+03 5.06000e+03 +3091 6.89600e+03 7.12800e+03 +3092 6.89600e+03 8.64600e+03 +3093 6.89600e+03 1.08020e+04 +3094 1.20480e+04 7.39200e+03 +3095 1.20480e+04 1.11650e+04 +3096 1.21870e+04 6.77600e+03 +3097 1.22080e+04 9.02000e+02 +3098 1.22080e+04 4.48800e+03 +3099 1.22080e+04 5.96200e+03 +3100 1.55000e+02 1.11980e+04 +3101 8.91200e+03 5.96200e+03 +3102 8.91200e+03 7.01800e+03 +3103 8.91200e+03 9.87800e+03 +3104 8.99200e+03 4.48800e+03 +3105 9.44000e+03 4.48800e+03 +3106 9.55200e+03 4.48800e+03 +3107 9.68000e+03 4.48800e+03 +3108 9.82400e+03 4.48800e+03 +3109 9.93600e+03 4.48800e+03 +3110 1.00000e+04 4.48800e+03 +3111 1.02240e+04 4.48800e+03 +3112 1.02880e+04 4.48800e+03 +3113 1.03840e+04 4.48800e+03 +3114 1.05120e+04 4.48800e+03 +3115 1.05760e+04 4.48800e+03 +3116 1.06400e+04 4.48800e+03 +3117 1.07040e+04 4.48800e+03 +3118 1.08000e+04 4.48800e+03 +3119 1.08640e+04 2.31000e+02 +3120 1.08640e+04 9.02000e+02 +3121 1.08640e+04 1.76000e+03 +3122 1.08640e+04 4.38900e+03 +3123 1.08640e+04 4.58700e+03 +3124 1.09280e+04 5.89600e+03 +3125 1.10670e+04 5.89600e+03 +3126 1.10880e+04 7.39200e+03 +3127 1.10880e+04 1.13850e+04 +3128 9.26400e+03 6.90800e+03 +3129 9.26400e+03 9.87800e+03 +3130 9.44000e+03 3.16800e+03 +3131 9.52000e+03 2.31000e+02 +3132 9.52000e+03 1.01200e+03 +3133 9.52000e+03 1.76000e+03 +3134 1.22400e+04 9.02000e+02 +3135 1.22400e+04 4.48800e+03 +3136 1.22400e+04 5.96200e+03 +3137 1.22400e+04 7.39200e+03 +3138 1.22400e+04 1.11650e+04 +3139 7.31200e+03 8.75600e+03 +3140 7.31200e+03 1.08020e+04 +3141 7.53600e+03 6.38000e+02 +3142 7.53600e+03 1.51800e+03 +3143 7.53600e+03 4.04800e+03 +3144 7.53600e+03 4.81800e+03 +3145 3.28000e+03 3.11300e+03 +3146 3.28000e+03 6.86400e+03 +3147 3.30000e+03 9.37200e+03 +3148 3.50400e+03 9.37200e+03 +3149 3.56800e+03 9.37200e+03 +3150 3.63200e+03 1.01420e+04 +3151 1.13760e+04 2.31000e+02 +3152 1.13760e+04 9.02000e+02 +3153 1.13760e+04 4.48800e+03 +3154 1.13760e+04 6.07200e+03 +3155 1.13760e+04 7.39200e+03 +3156 1.15040e+04 8.22800e+03 +3157 1.15680e+04 1.12750e+04 +3158 1.12800e+04 1.13850e+04 +3159 1.13160e+04 1.04720e+04 +3160 1.14400e+04 1.04720e+04 +3161 1.15200e+04 1.04720e+04 +3162 1.16000e+04 1.04720e+04 +3163 1.17120e+04 1.04720e+04 +3164 1.17920e+04 1.04720e+04 +3165 1.19840e+04 1.04720e+04 +3166 1.20800e+04 1.04720e+04 +3167 1.22080e+04 1.04720e+04 +3168 1.23840e+04 1.04720e+04 +3169 1.25280e+04 1.04720e+04 +3170 1.26560e+04 1.04720e+04 +3171 1.28160e+04 1.04720e+04 +3172 1.29440e+04 1.04720e+04 +3173 1.30880e+04 1.04720e+04 +3174 1.32320e+04 1.04720e+04 +3175 1.33920e+04 1.04720e+04 +3176 1.35360e+04 1.04720e+04 +3177 1.36960e+04 1.04720e+04 +3178 1.39680e+04 1.04720e+04 +3179 1.41600e+04 2.53000e+03 +3180 1.41600e+04 5.25800e+03 +3181 1.41600e+04 7.17200e+03 +3182 1.41600e+04 8.86600e+03 +3183 1.41600e+04 9.87800e+03 +3184 3.15200e+03 3.11300e+03 +3185 3.15200e+03 6.86400e+03 +3186 3.18800e+03 7.92000e+03 +3187 3.31200e+03 7.92000e+03 +3188 3.40800e+03 1.01530e+04 +3189 3.40800e+03 1.05710e+04 +3190 3.50400e+03 1.04720e+04 +3191 3.58400e+03 1.04720e+04 +3192 3.71200e+03 1.04720e+04 +3193 3.88800e+03 1.04720e+04 +3194 4.04800e+03 1.04720e+04 +3195 4.12800e+03 1.04720e+04 +3196 4.27200e+03 1.04720e+04 +3197 4.40000e+03 1.04720e+04 +3198 4.52800e+03 1.04720e+04 +3199 4.62400e+03 1.04720e+04 +3200 4.68800e+03 1.04720e+04 +3201 4.78400e+03 1.04720e+04 +3202 4.95500e+03 1.04720e+04 +3203 4.97600e+03 1.03730e+04 +3204 4.99200e+03 9.81200e+03 +3205 4.97600e+03 1.14950e+04 +3206 5.00800e+03 2.17800e+03 +3207 5.00800e+03 4.04800e+03 +3208 5.00800e+03 6.40200e+03 +3209 5.28000e+02 3.57500e+03 +3210 5.28000e+02 9.81200e+03 +3211 1.60160e+04 2.22200e+03 +3212 1.60160e+04 3.74000e+03 +3213 1.60160e+04 5.36800e+03 +3214 1.60160e+04 6.79800e+03 +3215 1.60160e+04 7.76600e+03 +3216 1.60160e+04 8.62400e+03 +3217 1.60160e+04 9.83400e+03 +3218 1.60680e+04 9.92200e+03 +3219 1.62080e+04 9.92200e+03 +3220 1.64320e+04 9.92200e+03 +3221 1.64960e+04 9.92200e+03 +3222 1.65920e+04 9.92200e+03 +3223 1.66880e+04 9.92200e+03 +3224 1.67840e+04 9.92200e+03 +3225 1.69120e+04 9.92200e+03 +3226 1.70400e+04 9.92200e+03 +3227 1.71360e+04 9.92200e+03 +3228 1.72800e+04 9.92200e+03 +3229 1.73600e+04 1.06700e+04 +3230 1.73600e+04 1.15280e+04 +3231 5.87200e+03 8.38200e+03 +3232 5.87200e+03 1.08020e+04 +3233 5.88800e+03 5.06000e+03 +3234 5.90400e+03 2.09000e+02 +3235 5.90400e+03 2.02400e+03 +3236 5.90400e+03 4.04800e+03 +3237 9.76000e+02 1.10550e+04 +3238 1.10400e+03 1.09120e+04 +3239 1.23200e+03 1.09120e+04 +3240 1.58400e+03 1.09120e+04 +3241 1.71200e+03 1.09120e+04 +3242 1.77600e+03 1.09120e+04 +3243 1.90400e+03 1.09120e+04 +3244 2.06400e+03 1.09120e+04 +3245 2.24000e+03 1.09120e+04 +3246 2.46400e+03 1.09120e+04 +3247 2.73600e+03 1.09120e+04 +3248 3.01900e+03 1.09120e+04 +3249 3.05600e+03 3.11300e+03 +3250 3.05600e+03 6.86400e+03 +3251 3.05600e+03 1.01530e+04 +3252 3.16800e+03 1.09120e+04 +3253 3.34400e+03 1.09120e+04 +3254 3.50400e+03 1.09120e+04 +3255 3.58400e+03 1.09120e+04 +3256 3.71200e+03 1.09120e+04 +3257 3.88800e+03 1.09120e+04 +3258 4.04800e+03 1.09120e+04 +3259 4.12800e+03 1.09120e+04 +3260 4.27200e+03 1.09120e+04 +3261 4.40000e+03 1.09120e+04 +3262 4.46400e+03 1.09120e+04 +3263 4.52800e+03 1.09120e+04 +3264 4.62400e+03 1.09120e+04 +3265 4.68800e+03 1.14950e+04 +3266 1.34560e+04 8.53600e+03 +3267 1.34560e+04 9.17400e+03 +3268 1.34560e+04 1.14290e+04 +3269 1.35200e+04 7.78800e+03 +3270 1.36320e+04 7.78800e+03 +3271 1.37600e+04 7.78800e+03 +3272 1.39680e+04 7.78800e+03 +3273 1.41920e+04 7.78800e+03 +3274 1.42720e+04 7.78800e+03 +3275 1.43840e+04 7.78800e+03 +3276 1.44480e+04 2.53000e+03 +3277 1.44480e+04 5.36800e+03 +3278 1.44480e+04 6.79800e+03 +3279 1.45120e+04 7.78800e+03 +3280 1.47040e+04 7.78800e+03 +3281 1.48160e+04 7.78800e+03 +3282 1.49280e+04 7.88700e+03 +3283 1.49280e+04 8.64600e+03 +3284 1.49280e+04 9.87800e+03 +3285 1.49280e+04 1.14290e+04 +3286 1.60480e+04 2.22200e+03 +3287 1.60480e+04 3.74000e+03 +3288 1.60480e+04 5.36800e+03 +3289 1.60480e+04 6.79800e+03 +3290 1.60480e+04 7.76600e+03 +3291 1.61280e+04 8.40400e+03 +3292 1.63040e+04 8.40400e+03 +3293 1.64320e+04 8.40400e+03 +3294 1.65920e+04 8.40400e+03 +3295 1.66880e+04 8.40400e+03 +3296 1.67520e+04 8.40400e+03 +3297 1.68160e+04 8.40400e+03 +3298 1.69120e+04 8.40400e+03 +3299 1.70080e+04 1.05600e+04 +3300 1.70080e+04 1.15280e+04 +3301 5.60000e+02 9.80100e+03 +3302 7.52000e+02 8.40400e+03 +3303 9.12000e+02 8.40400e+03 +3304 9.76000e+02 8.40400e+03 +3305 1.10400e+03 8.40400e+03 +3306 1.23200e+03 8.40400e+03 +3307 1.32800e+03 8.40400e+03 +3308 1.53600e+03 8.40400e+03 +3309 1.61600e+03 8.40400e+03 +3310 1.69600e+03 8.40400e+03 +3311 1.77600e+03 8.40400e+03 +3312 1.87200e+03 8.40400e+03 +3313 1.93600e+03 8.40400e+03 +3314 2.11200e+03 8.40400e+03 +3315 2.19200e+03 8.40400e+03 +3316 2.28800e+03 8.40400e+03 +3317 2.46400e+03 8.40400e+03 +3318 2.63500e+03 8.40400e+03 +3319 2.70400e+03 3.11300e+03 +3320 2.70400e+03 6.86400e+03 +3321 2.80400e+03 8.14000e+03 +3322 2.96000e+03 8.14000e+03 +3323 3.02400e+03 8.14000e+03 +3324 3.16800e+03 8.14000e+03 +3325 3.31200e+03 8.14000e+03 +3326 3.50400e+03 8.14000e+03 +3327 3.63200e+03 8.14000e+03 +3328 3.69600e+03 8.14000e+03 +3329 3.82400e+03 8.14000e+03 +3330 3.95200e+03 8.14000e+03 +3331 4.09600e+03 8.14000e+03 +3332 4.27200e+03 8.14000e+03 +3333 4.33600e+03 8.14000e+03 +3334 2.70400e+03 8.25000e+03 +3335 4.43200e+03 1.14950e+04 +3336 1.40320e+04 2.53000e+03 +3337 1.40320e+04 5.25800e+03 +3338 1.40320e+04 7.29300e+03 +3339 1.40680e+04 7.56800e+03 +3340 1.41920e+04 7.56800e+03 +3341 1.42720e+04 7.56800e+03 +3342 1.43840e+04 7.56800e+03 +3343 1.45120e+04 7.56800e+03 +3344 1.47040e+04 7.56800e+03 +3345 1.48160e+04 7.56800e+03 +3346 1.49280e+04 7.56800e+03 +3347 1.51310e+04 7.56800e+03 +3348 1.52480e+04 7.77700e+03 +3349 1.52480e+04 8.64600e+03 +3350 1.52480e+04 9.87800e+03 +3351 1.52480e+04 1.06260e+04 +3352 1.52480e+04 1.14290e+04 +3353 1.35840e+04 2.53000e+03 +3354 1.35840e+04 3.94900e+03 +3355 1.36200e+04 4.04800e+03 +3356 1.38720e+04 4.04800e+03 +3357 1.40960e+04 4.04800e+03 +3358 1.42240e+04 4.04800e+03 +3359 1.44000e+04 4.04800e+03 +3360 1.45120e+04 4.04800e+03 +3361 1.47360e+04 4.04800e+03 +3362 1.48000e+04 4.04800e+03 +3363 1.48960e+04 4.25700e+03 +3364 1.48960e+04 5.47800e+03 +3365 1.48960e+04 6.79800e+03 +3366 1.48960e+04 8.64600e+03 +3367 1.48960e+04 9.87800e+03 +3368 1.48960e+04 1.14290e+04 +3369 1.46080e+04 2.53000e+03 +3370 1.46080e+04 5.36800e+03 +3371 1.46080e+04 6.79800e+03 +3372 1.46080e+04 8.64600e+03 +3373 1.46080e+04 9.87800e+03 +3374 1.46080e+04 1.15390e+04 +3375 1.33920e+04 1.60600e+03 +3376 1.33920e+04 2.79400e+03 +3377 1.33920e+04 3.93800e+03 +3378 1.33920e+04 4.92800e+03 +3379 1.34560e+04 6.24800e+03 +3380 1.35200e+04 6.24800e+03 +3381 1.36320e+04 6.24800e+03 +3382 1.37600e+04 6.24800e+03 +3383 1.39200e+04 6.24800e+03 +3384 1.40800e+04 6.24800e+03 +3385 1.41920e+04 6.24800e+03 +3386 1.42560e+04 6.24800e+03 +3387 1.44000e+04 6.24800e+03 +3388 1.45120e+04 6.24800e+03 +3389 1.47040e+04 6.24800e+03 +3390 1.48160e+04 6.24800e+03 +3391 1.49280e+04 6.24800e+03 +3392 1.51360e+04 6.24800e+03 +3393 1.53280e+04 6.24800e+03 +3394 1.54400e+04 6.24800e+03 +3395 1.56000e+04 6.24800e+03 +3396 1.57120e+04 6.24800e+03 +3397 1.57920e+04 6.24800e+03 +3398 1.58880e+04 6.24800e+03 +3399 1.59840e+04 6.24800e+03 +3400 1.61280e+04 6.24800e+03 +3401 1.62880e+04 6.24800e+03 +3402 1.65440e+04 6.24800e+03 +3403 1.66560e+04 6.67700e+03 +3404 1.66560e+04 7.87600e+03 +3405 1.66560e+04 1.08900e+04 +3406 1.66720e+04 6.24800e+03 +3407 1.66880e+04 1.01200e+03 +3408 1.66880e+04 2.22200e+03 +3409 1.66880e+04 3.85000e+03 +3410 1.66880e+04 5.47800e+03 +3411 1.27520e+04 1.60600e+03 +3412 1.27520e+04 2.43100e+03 +3413 1.28160e+04 2.64000e+03 +3414 1.29440e+04 2.64000e+03 +3415 1.31200e+04 2.64000e+03 +3416 1.33390e+04 2.64000e+03 +3417 1.33600e+04 3.00300e+03 +3418 1.33600e+04 3.93800e+03 +3419 1.33600e+04 4.92800e+03 +3420 1.33600e+04 6.40200e+03 +3421 1.33600e+04 7.39200e+03 +3422 1.33600e+04 8.53600e+03 +3423 1.33600e+04 9.17400e+03 +3424 1.33600e+04 1.14290e+04 +3425 1.62080e+04 2.22200e+03 +3426 1.62080e+04 3.74000e+03 +3427 1.62080e+04 5.36800e+03 +3428 1.62080e+04 6.79800e+03 +3429 1.62080e+04 7.76600e+03 +3430 1.62830e+04 8.62400e+03 +3431 1.63040e+04 1.04610e+04 +3432 1.63040e+04 1.14290e+04 +3433 1.39200e+03 8.77800e+03 +3434 1.39200e+03 1.00320e+04 +3435 1.45600e+03 6.33600e+03 +3436 1.55200e+03 6.33600e+03 +3437 1.64800e+03 6.33600e+03 +3438 1.76000e+03 6.33600e+03 +3439 1.87200e+03 6.33600e+03 +3440 2.00000e+03 6.33600e+03 +3441 2.11200e+03 6.33600e+03 +3442 2.19200e+03 6.33600e+03 +3443 2.28800e+03 6.33600e+03 +3444 2.48000e+03 6.33600e+03 +3445 2.60800e+03 6.33600e+03 +3446 2.73600e+03 6.33600e+03 +3447 2.88000e+03 6.33600e+03 +3448 3.02400e+03 6.33600e+03 +3449 3.20000e+03 6.33600e+03 +3450 3.31200e+03 6.33600e+03 +3451 3.40800e+03 3.05800e+03 +3452 3.40800e+03 6.16000e+03 +3453 3.80800e+03 6.33600e+03 +3454 3.88800e+03 6.33600e+03 +3455 3.95200e+03 6.33600e+03 +3456 4.09600e+03 6.33600e+03 +3457 4.17600e+03 6.33600e+03 +3458 4.25600e+03 6.33600e+03 +3459 4.43200e+03 6.33600e+03 +3460 4.49600e+03 6.33600e+03 +3461 4.56000e+03 7.81000e+03 +3462 4.56000e+03 8.86600e+03 +3463 4.56000e+03 1.14950e+04 +3464 3.69600e+03 3.11300e+03 +3465 3.69600e+03 7.02900e+03 +3466 3.80800e+03 7.26000e+03 +3467 3.88800e+03 7.26000e+03 +3468 3.95200e+03 7.26000e+03 +3469 4.09600e+03 7.26000e+03 +3470 4.17600e+03 7.26000e+03 +3471 4.25600e+03 7.26000e+03 +3472 4.33600e+03 7.26000e+03 +3473 4.43200e+03 7.26000e+03 +3474 4.49600e+03 7.26000e+03 +3475 4.64000e+03 7.26000e+03 +3476 4.76800e+03 7.26000e+03 +3477 4.84800e+03 7.26000e+03 +3478 4.91200e+03 7.26000e+03 +3479 5.04000e+03 1.14950e+04 +3480 4.91200e+03 1.14950e+04 +3481 5.10400e+03 2.17800e+03 +3482 5.10400e+03 4.04800e+03 +3483 5.10400e+03 6.40200e+03 +3484 5.10400e+03 7.31500e+03 +3485 1.43520e+04 2.53000e+03 +3486 1.43520e+04 5.36800e+03 +3487 1.43520e+04 6.90800e+03 +3488 1.43520e+04 8.86600e+03 +3489 1.43520e+04 9.87800e+03 +3490 1.43520e+04 1.15390e+04 +3491 5.32800e+03 6.39100e+03 +3492 5.32800e+03 7.19400e+03 +3493 5.32800e+03 1.05820e+04 +3494 5.39200e+03 2.17800e+03 +3495 5.39200e+03 4.04800e+03 +3496 5.74400e+03 1.08020e+04 +3497 5.76000e+03 8.62400e+03 +3498 5.77600e+03 2.02400e+03 +3499 5.77600e+03 4.04800e+03 +3500 5.77600e+03 8.39300e+03 +3501 1.48800e+03 3.11300e+03 +3502 1.48800e+03 6.90800e+03 +3503 1.48800e+03 8.77800e+03 +3504 1.48800e+03 1.00320e+04 +3505 4.01600e+03 2.95900e+03 +3506 4.01600e+03 6.90800e+03 +3507 4.12800e+03 9.15200e+03 +3508 4.27200e+03 9.15200e+03 +3509 7.98400e+03 1.18800e+03 +3510 7.98400e+03 4.81800e+03 +3511 7.98400e+03 8.75600e+03 +3512 6.16000e+03 4.29000e+02 +3513 6.16000e+03 2.02400e+03 +3514 6.16000e+03 4.04800e+03 +3515 6.16000e+03 8.38200e+03 +3516 6.16000e+03 1.08020e+04 +3517 6.16000e+03 1.14950e+04 +3518 5.26400e+03 2.17800e+03 +3519 5.26400e+03 4.04800e+03 +3520 5.26400e+03 6.40200e+03 +3521 5.26400e+03 7.19400e+03 +3522 5.55200e+03 9.81200e+03 +3523 5.63200e+03 9.81200e+03 +3524 5.80800e+03 9.81200e+03 +3525 5.96800e+03 9.81200e+03 +3526 6.03200e+03 9.81200e+03 +3527 6.11200e+03 9.81200e+03 +3528 6.19200e+03 9.81200e+03 +3529 6.35200e+03 9.81200e+03 +3530 6.44800e+03 9.81200e+03 +3531 6.67200e+03 9.81200e+03 +3532 6.84800e+03 9.81200e+03 +3533 6.92800e+03 9.81200e+03 +3534 7.02400e+03 9.81200e+03 +3535 7.21600e+03 9.81200e+03 +3536 7.53600e+03 9.81200e+03 +3537 7.60000e+03 9.81200e+03 +3538 7.69600e+03 9.81200e+03 +3539 7.82400e+03 9.81200e+03 +3540 7.90400e+03 9.81200e+03 +3541 8.09600e+03 9.81200e+03 +3542 8.17600e+03 9.81200e+03 +3543 8.27200e+03 9.81200e+03 +3544 8.36800e+03 9.81200e+03 +3545 8.43200e+03 9.81200e+03 +3546 8.72000e+03 9.81200e+03 +3547 8.85900e+03 9.81200e+03 +3548 8.88000e+03 9.91100e+03 +3549 9.20000e+03 7.01800e+03 +3550 9.20000e+03 8.07400e+03 +3551 9.20000e+03 9.87800e+03 +3552 9.29600e+03 6.71000e+02 +3553 9.29600e+03 1.76000e+03 +3554 9.29600e+03 2.83800e+03 +3555 6.51200e+03 4.29000e+02 +3556 6.51200e+03 2.02400e+03 +3557 6.51200e+03 4.04800e+03 +3558 6.51200e+03 8.65700e+03 +3559 6.52800e+03 8.84400e+03 +3560 6.54400e+03 9.43800e+03 +3561 6.54400e+03 1.14950e+04 +3562 9.90400e+03 2.31000e+02 +3563 9.90400e+03 1.01200e+03 +3564 9.90400e+03 1.76000e+03 +3565 6.92800e+03 6.38000e+02 +3566 6.92800e+03 1.51800e+03 +3567 6.92800e+03 2.57400e+03 +3568 6.92800e+03 4.04800e+03 +3569 6.92800e+03 7.13900e+03 +3570 6.94400e+03 7.26000e+03 +3571 6.96000e+03 8.64600e+03 +3572 6.96000e+03 1.08020e+04 +3573 1.08960e+04 1.03620e+04 +3574 1.08960e+04 1.14950e+04 +3575 1.09160e+04 9.50400e+03 +3576 1.10400e+04 9.50400e+03 +3577 1.12160e+04 9.50400e+03 +3578 1.12800e+04 2.31000e+02 +3579 1.12800e+04 9.02000e+02 +3580 1.12800e+04 4.48800e+03 +3581 1.12800e+04 7.39200e+03 +3582 7.40800e+03 1.09120e+04 +3583 7.44000e+03 6.38000e+02 +3584 7.44000e+03 1.51800e+03 +3585 7.44000e+03 4.04800e+03 +3586 7.44000e+03 4.92800e+03 +3587 7.44000e+03 8.75600e+03 +3588 1.25920e+04 4.70800e+03 +3589 1.25920e+04 6.07200e+03 +3590 1.25920e+04 7.39200e+03 +3591 1.25920e+04 1.14290e+04 +3592 1.26080e+04 3.60800e+03 +3593 1.26240e+04 1.60600e+03 +3594 1.26240e+04 2.57400e+03 +3595 1.26880e+04 3.60800e+03 +3596 1.27840e+04 3.60800e+03 +3597 1.29280e+04 3.60800e+03 +3598 1.31200e+04 3.60800e+03 +3599 1.33280e+04 3.60800e+03 +3600 1.34560e+04 3.60800e+03 +3601 1.35200e+04 3.60800e+03 +3602 1.36320e+04 3.60800e+03 +3603 1.38720e+04 3.60800e+03 +3604 1.40960e+04 3.60800e+03 +3605 1.42240e+04 3.60800e+03 +3606 1.44000e+04 3.60800e+03 +3607 1.45120e+04 3.60800e+03 +3608 1.47360e+04 3.60800e+03 +3609 1.48000e+04 3.60800e+03 +3610 1.49120e+04 3.60800e+03 +3611 1.51200e+04 3.60800e+03 +3612 1.53280e+04 3.60800e+03 +3613 1.54080e+04 3.60800e+03 +3614 1.54720e+04 3.60800e+03 +3615 1.56000e+04 3.60800e+03 +3616 1.57120e+04 3.60800e+03 +3617 1.57920e+04 3.60800e+03 +3618 1.58990e+04 3.60800e+03 +3619 1.59200e+04 3.92700e+03 +3620 1.59200e+04 5.36800e+03 +3621 1.59200e+04 6.79800e+03 +3622 1.59200e+04 7.76600e+03 +3623 1.59200e+04 8.62400e+03 +3624 1.59200e+04 9.87800e+03 +3625 1.59200e+04 1.06260e+04 +3626 1.59200e+04 1.14290e+04 +3627 1.23360e+04 7.39200e+03 +3628 1.23360e+04 1.11650e+04 +3629 1.23520e+04 6.11600e+03 +3630 1.23680e+04 9.02000e+02 +3631 1.23680e+04 1.60600e+03 +3632 1.23680e+04 4.48800e+03 +3633 1.23680e+04 5.97300e+03 +3634 1.76160e+04 6.57800e+03 +3635 1.76160e+04 7.76600e+03 +3636 1.76160e+04 9.60300e+03 +3637 1.76160e+04 1.06700e+04 +3638 1.78350e+04 5.50000e+03 +3639 1.78720e+04 2.31000e+02 +3640 1.78720e+04 1.62800e+03 +3641 1.78720e+04 4.21300e+03 +3642 1.16320e+04 9.02000e+02 +3643 1.16320e+04 4.48800e+03 +3644 1.16320e+04 6.08300e+03 +3645 1.16480e+04 6.33600e+03 +3646 1.16640e+04 7.39200e+03 +3647 1.16640e+04 1.12750e+04 +3648 1.44800e+04 2.53000e+03 +3649 1.44800e+04 5.36800e+03 +3650 1.44800e+04 6.79800e+03 +3651 1.44800e+04 8.86600e+03 +3652 1.44800e+04 9.87800e+03 +3653 1.44800e+04 1.15390e+04 +3654 1.76480e+04 2.31000e+02 +3655 1.76480e+04 1.78200e+03 +3656 1.76480e+04 4.24600e+03 +3657 1.76480e+04 6.57800e+03 +3658 1.76480e+04 7.76600e+03 +3659 1.76480e+04 9.60300e+03 +3660 1.76480e+04 1.06700e+04 +3661 6.24000e+02 3.57500e+03 +3662 6.24000e+02 9.92200e+03 +3663 1.24000e+04 9.02000e+02 +3664 1.24000e+04 1.60600e+03 +3665 1.24000e+04 4.48800e+03 +3666 1.24000e+04 5.97300e+03 +3667 1.24160e+04 6.11600e+03 +3668 1.24320e+04 7.39200e+03 +3669 1.24320e+04 1.14290e+04 +3670 1.20800e+04 9.02000e+02 +3671 1.20800e+04 4.48800e+03 +3672 1.20800e+04 5.96200e+03 +3673 1.20800e+04 7.39200e+03 +3674 1.20960e+04 9.50400e+03 +3675 1.21120e+04 1.11650e+04 +3676 1.77760e+04 2.31000e+02 +3677 1.77760e+04 1.62800e+03 +3678 1.77760e+04 4.09200e+03 +3679 1.77760e+04 6.20400e+03 +3680 1.77760e+04 7.76600e+03 +3681 1.77760e+04 8.73400e+03 +3682 1.77760e+04 9.60300e+03 +3683 1.77760e+04 1.06700e+04 +3684 1.24640e+04 9.02000e+02 +3685 1.24640e+04 1.60600e+03 +3686 1.25160e+04 4.26800e+03 +3687 1.26880e+04 4.26800e+03 +3688 1.28000e+04 4.26800e+03 +3689 1.29120e+04 4.26800e+03 +3690 1.31200e+04 4.26800e+03 +3691 1.33280e+04 4.26800e+03 +3692 1.34560e+04 4.26800e+03 +3693 1.35200e+04 4.26800e+03 +3694 1.36160e+04 4.26800e+03 +3695 1.38720e+04 4.26800e+03 +3696 1.40910e+04 4.26800e+03 +3697 1.41280e+04 5.25800e+03 +3698 1.41280e+04 7.17200e+03 +3699 1.41280e+04 8.86600e+03 +3700 1.41280e+04 9.87800e+03 +3701 1.41280e+04 1.15390e+04 +3702 1.77440e+04 2.31000e+02 +3703 1.77440e+04 1.74900e+03 +3704 1.78240e+04 2.68400e+03 +3705 1.79790e+04 2.68400e+03 +3706 1.80000e+04 4.67500e+03 +3707 1.80000e+04 7.76600e+03 +3708 1.80000e+04 1.06700e+04 +3709 1.66240e+04 1.01200e+03 +3710 1.66240e+04 2.22200e+03 +3711 1.66240e+04 3.85000e+03 +3712 1.66240e+04 5.47800e+03 +3713 1.66240e+04 6.79800e+03 +3714 1.66240e+04 7.87600e+03 +3715 1.66240e+04 1.08900e+04 +3716 1.32320e+04 1.60600e+03 +3717 1.32320e+04 2.31000e+03 +3718 1.32320e+04 3.12400e+03 +3719 1.32320e+04 3.93800e+03 +3720 1.32320e+04 4.92800e+03 +3721 1.32320e+04 7.28200e+03 +3722 1.32320e+04 8.53600e+03 +3723 1.32320e+04 9.18500e+03 +3724 1.32480e+04 9.28400e+03 +3725 1.32640e+04 1.14290e+04 +3726 1.01920e+04 2.31000e+02 +3727 1.01920e+04 1.01200e+03 +3728 1.01920e+04 1.76000e+03 +3729 1.84160e+04 1.06700e+04 +3730 1.85000e+04 9.43800e+03 +3731 1.86560e+04 9.43800e+03 +3732 1.87840e+04 9.43800e+03 +3733 1.89280e+04 9.43800e+03 +3734 1.90240e+04 9.43800e+03 +3735 9.12000e+02 3.41000e+03 +3736 9.12000e+02 6.86400e+03 +3737 9.28000e+02 7.04000e+03 +3738 9.44000e+02 9.92200e+03 +3739 1.43200e+04 2.53000e+03 +3740 1.43200e+04 5.36800e+03 +3741 1.43200e+04 6.90800e+03 +3742 1.43200e+04 8.86600e+03 +3743 1.43200e+04 9.87800e+03 +3744 1.43200e+04 1.15390e+04 +3745 7.69600e+03 1.18800e+03 +3746 7.69600e+03 4.81800e+03 +3747 7.69600e+03 6.90800e+03 +3748 7.76000e+03 7.70000e+03 +3749 7.82400e+03 7.70000e+03 +3750 7.88800e+03 7.70000e+03 +3751 8.01600e+03 8.75600e+03 +3752 1.88320e+04 1.07250e+04 +3753 1.88320e+04 1.15280e+04 +3754 1.89280e+04 1.04940e+04 +3755 1.90240e+04 1.04940e+04 +3756 1.47680e+04 2.53000e+03 +3757 1.47680e+04 5.47800e+03 +3758 1.47680e+04 6.79800e+03 +3759 1.48000e+04 8.00800e+03 +3760 1.48320e+04 8.64600e+03 +3761 1.48320e+04 9.87800e+03 +3762 1.48320e+04 1.14290e+04 +3763 6.64000e+03 2.20000e+02 +3764 6.67600e+03 3.08000e+02 +3765 6.79500e+03 3.08000e+02 +3766 6.83200e+03 2.20000e+02 +3767 6.83200e+03 5.17000e+02 +3768 6.83200e+03 1.51800e+03 +3769 6.83200e+03 2.57400e+03 +3770 6.83200e+03 4.04800e+03 +3771 6.83200e+03 5.43400e+03 +3772 6.83200e+03 7.12800e+03 +3773 6.83200e+03 8.64600e+03 +3774 6.85200e+03 9.28400e+03 +3775 6.92800e+03 9.28400e+03 +3776 7.02400e+03 9.28400e+03 +3777 7.21600e+03 9.28400e+03 +3778 7.53600e+03 9.28400e+03 +3779 7.60000e+03 9.28400e+03 +3780 7.69600e+03 9.28400e+03 +3781 7.82400e+03 9.28400e+03 +3782 7.90400e+03 9.28400e+03 +3783 8.09600e+03 9.28400e+03 +3784 8.17600e+03 9.28400e+03 +3785 8.27200e+03 9.28400e+03 +3786 8.36800e+03 9.28400e+03 +3787 8.43200e+03 9.28400e+03 +3788 8.72000e+03 9.28400e+03 +3789 8.86400e+03 9.28400e+03 +3790 9.10400e+03 9.28400e+03 +3791 9.72800e+03 9.28400e+03 +3792 1.00320e+04 9.28400e+03 +3793 1.02560e+04 9.28400e+03 +3794 1.04480e+04 9.28400e+03 +3795 1.06560e+04 9.28400e+03 +3796 1.07360e+04 9.28400e+03 +3797 1.08000e+04 9.28400e+03 +3798 1.09120e+04 9.28400e+03 +3799 1.10400e+04 9.28400e+03 +3800 1.12160e+04 9.28400e+03 +3801 1.13440e+04 9.28400e+03 +3802 1.15200e+04 9.28400e+03 +3803 1.16000e+04 9.28400e+03 +3804 1.17120e+04 9.28400e+03 +3805 1.17920e+04 9.28400e+03 +3806 1.19840e+04 9.28400e+03 +3807 1.21280e+04 9.28400e+03 +3808 1.22080e+04 9.28400e+03 +3809 1.23840e+04 9.28400e+03 +3810 1.25280e+04 9.28400e+03 +3811 1.26560e+04 9.28400e+03 +3812 1.28430e+04 9.28400e+03 +3813 1.28800e+04 1.14290e+04 +3814 7.34400e+03 8.75600e+03 +3815 7.34400e+03 1.08020e+04 +3816 7.60000e+03 7.26000e+03 +3817 7.76000e+03 7.26000e+03 +3818 7.82400e+03 7.26000e+03 +3819 7.88800e+03 7.26000e+03 +3820 8.04300e+03 7.26000e+03 +3821 8.08000e+03 1.18800e+03 +3822 8.08000e+03 4.81800e+03 +3823 8.08000e+03 7.02900e+03 +3824 1.01280e+04 2.31000e+02 +3825 1.01280e+04 1.01200e+03 +3826 1.01280e+04 1.76000e+03 +3827 1.01480e+04 5.89600e+03 +3828 1.02240e+04 5.89600e+03 +3829 1.03840e+04 5.89600e+03 +3830 1.05120e+04 5.89600e+03 +3831 1.05870e+04 5.89600e+03 +3832 1.06080e+04 7.39200e+03 +3833 1.06080e+04 1.14950e+04 +3834 1.64960e+04 2.22200e+03 +3835 1.64960e+04 3.85000e+03 +3836 1.64960e+04 5.47800e+03 +3837 1.64960e+04 6.79800e+03 +3838 1.64960e+04 7.76600e+03 +3839 1.65920e+04 9.28400e+03 +3840 1.66880e+04 9.28400e+03 +3841 1.67840e+04 9.28400e+03 +3842 1.69120e+04 9.28400e+03 +3843 1.70400e+04 9.28400e+03 +3844 1.71360e+04 9.28400e+03 +3845 1.72800e+04 9.28400e+03 +3846 1.73920e+04 9.59200e+03 +3847 1.73920e+04 1.06700e+04 +3848 1.73920e+04 1.15280e+04 +3849 4.59200e+03 2.68400e+03 +3850 4.59200e+03 5.43400e+03 +3851 4.59200e+03 7.81000e+03 +3852 4.59200e+03 8.86600e+03 +3853 4.59200e+03 1.14950e+04 +3854 1.05760e+04 7.39200e+03 +3855 1.05760e+04 1.14950e+04 +3856 1.06560e+04 6.33600e+03 +3857 1.08000e+04 6.33600e+03 +3858 1.08640e+04 6.33600e+03 +3859 1.09280e+04 6.33600e+03 +3860 1.10240e+04 2.31000e+02 +3861 1.10240e+04 9.02000e+02 +3862 1.10240e+04 1.76000e+03 +3863 1.10240e+04 4.48800e+03 +3864 2.38400e+03 3.11300e+03 +3865 2.38400e+03 6.64400e+03 +3866 2.38400e+03 1.00320e+04 +3867 2.92800e+03 1.00320e+04 +3868 2.94400e+03 6.95200e+03 +3869 2.96000e+03 3.11300e+03 +3870 2.96000e+03 6.87500e+03 +3871 5.16800e+03 2.17800e+03 +3872 5.16800e+03 4.04800e+03 +3873 5.16800e+03 6.40200e+03 +3874 5.16800e+03 7.45800e+03 +3875 5.16800e+03 1.05820e+04 +3876 2.54400e+03 3.11300e+03 +3877 2.54400e+03 6.75400e+03 +3878 2.54400e+03 1.00320e+04 +3879 9.64800e+03 2.31000e+02 +3880 9.64800e+03 1.01200e+03 +3881 9.64800e+03 1.76000e+03 +3882 9.64800e+03 7.12800e+03 +3883 9.66400e+03 7.78800e+03 +3884 1.80800e+03 8.05200e+03 +3885 1.80800e+03 1.00320e+04 +3886 1.87200e+03 7.17200e+03 +3887 1.98400e+03 7.17200e+03 +3888 2.11200e+03 7.17200e+03 +3889 2.19200e+03 7.17200e+03 +3890 2.28800e+03 7.17200e+03 +3891 2.46400e+03 7.17200e+03 +3892 2.62400e+03 7.17200e+03 +3893 2.73600e+03 7.17200e+03 +3894 2.86400e+03 7.17200e+03 +3895 2.96000e+03 7.17200e+03 +3896 3.02400e+03 7.17200e+03 +3897 3.20000e+03 7.17200e+03 +3898 3.31200e+03 7.17200e+03 +3899 3.40800e+03 7.17200e+03 +3900 3.47200e+03 3.11300e+03 +3901 3.47200e+03 6.98500e+03 +3902 9.48800e+03 2.31000e+02 +3903 9.48800e+03 1.01200e+03 +3904 9.48800e+03 1.76000e+03 +3905 9.48800e+03 7.12800e+03 +3906 2.00000e+03 8.04100e+03 +3907 2.00000e+03 8.77800e+03 +3908 2.00000e+03 1.00320e+04 +3909 2.11200e+03 7.92000e+03 +3910 2.19200e+03 7.92000e+03 +3911 2.28800e+03 7.92000e+03 +3912 2.46400e+03 7.92000e+03 +3913 2.62400e+03 7.92000e+03 +3914 2.81600e+03 7.92000e+03 +3915 2.96000e+03 7.92000e+03 +3916 3.02400e+03 7.92000e+03 +3917 3.12000e+03 3.11300e+03 +3918 3.12000e+03 6.86400e+03 +3919 8.75200e+03 8.86600e+03 +3920 8.81600e+03 1.18800e+03 +3921 8.81600e+03 3.93800e+03 +3922 8.81600e+03 5.97300e+03 +3923 1.00800e+03 3.57500e+03 +3924 1.00800e+03 9.65800e+03 +3925 1.29600e+03 7.82100e+03 +3926 1.29600e+03 9.65800e+03 +3927 1.31600e+03 7.70000e+03 +3928 1.53600e+03 7.70000e+03 +3929 1.64800e+03 7.70000e+03 +3930 1.76000e+03 7.70000e+03 +3931 1.87200e+03 7.70000e+03 +3932 1.98400e+03 7.70000e+03 +3933 2.11200e+03 7.70000e+03 +3934 2.19200e+03 7.70000e+03 +3935 2.28800e+03 7.70000e+03 +3936 2.46400e+03 7.70000e+03 +3937 2.62400e+03 7.70000e+03 +3938 2.74700e+03 7.70000e+03 +3939 2.76800e+03 3.11300e+03 +3940 2.76800e+03 6.86400e+03 +3941 1.36000e+03 3.22300e+03 +3942 1.36000e+03 8.77800e+03 +3943 1.36000e+03 1.00320e+04 +3944 2.03200e+03 8.77800e+03 +3945 2.03200e+03 1.00320e+04 +3946 2.11200e+03 6.95200e+03 +3947 2.19200e+03 6.95200e+03 +3948 2.28800e+03 6.95200e+03 +3949 2.41600e+03 3.11300e+03 +3950 2.41600e+03 6.76500e+03 +3951 5.60000e+02 3.41000e+03 +3952 5.60000e+02 6.86400e+03 +3953 5.76000e+02 7.04000e+03 +3954 5.92000e+02 9.92200e+03 +3955 1.71200e+03 3.11300e+03 +3956 1.71200e+03 7.01800e+03 +3957 1.71200e+03 8.06300e+03 +3958 1.72800e+03 8.18400e+03 +3959 1.74400e+03 1.00320e+04 +3960 5.10400e+03 1.05820e+04 +3961 5.10400e+03 1.14950e+04 +3962 5.12000e+03 7.92000e+03 +3963 5.13600e+03 2.17800e+03 +3964 5.13600e+03 4.04800e+03 +3965 5.13600e+03 6.40200e+03 +3966 5.13600e+03 7.46900e+03 +3967 2.06400e+03 3.11300e+03 +3968 2.06400e+03 6.64400e+03 +3969 2.06400e+03 8.78900e+03 +3970 2.08000e+03 8.93200e+03 +3971 2.09600e+03 1.00320e+04 +3972 3.07200e+03 1.12200e+04 +3973 3.08800e+03 3.11300e+03 +3974 3.08800e+03 6.86400e+03 +3975 3.08800e+03 1.00320e+04 +3976 3.24800e+03 3.11300e+03 +3977 3.24800e+03 6.86400e+03 +3978 3.24800e+03 1.00320e+04 +3979 1.09600e+04 2.31000e+02 +3980 1.09600e+04 9.02000e+02 +3981 1.09600e+04 1.76000e+03 +3982 1.09600e+04 4.48800e+03 +3983 1.09600e+04 7.39200e+03 +3984 1.09600e+04 1.03620e+04 +3985 1.09600e+04 1.14950e+04 +3986 2.97600e+03 1.06920e+04 +3987 2.99200e+03 3.11300e+03 +3988 2.99200e+03 6.86400e+03 +3989 2.99200e+03 1.00430e+04 +3990 1.08320e+04 1.03620e+04 +3991 1.08320e+04 1.14950e+04 +3992 1.08960e+04 2.31000e+02 +3993 1.08960e+04 9.02000e+02 +3994 1.08960e+04 1.76000e+03 +3995 1.08960e+04 4.48800e+03 +3996 1.08960e+04 7.39200e+03 +3997 1.08320e+04 2.31000e+02 +3998 1.08320e+04 9.02000e+02 +3999 1.08320e+04 1.76000e+03 +4000 1.08480e+04 6.77600e+03 +4001 1.08640e+04 7.39200e+03 +4002 1.08640e+04 1.03620e+04 +4003 1.08640e+04 1.14950e+04 +4004 1.79680e+04 1.06700e+04 +4005 1.83680e+04 9.79000e+03 +4006 1.85120e+04 9.79000e+03 +4007 1.86560e+04 9.79000e+03 +4008 1.87840e+04 9.79000e+03 +4009 1.89280e+04 9.79000e+03 +4010 1.90240e+04 9.79000e+03 +4011 3.37600e+03 3.11300e+03 +4012 3.37600e+03 6.86400e+03 +4013 3.50400e+03 9.59200e+03 +4014 3.56800e+03 9.59200e+03 +4015 3.66400e+03 1.01420e+04 +4016 2.22400e+03 3.11300e+03 +4017 2.22400e+03 6.64400e+03 +4018 2.27600e+03 8.71200e+03 +4019 2.46400e+03 8.71200e+03 +4020 2.73600e+03 8.71200e+03 +4021 2.96000e+03 8.71200e+03 +4022 3.02400e+03 8.71200e+03 +4023 3.16800e+03 8.71200e+03 +4024 3.31200e+03 8.71200e+03 +4025 3.50400e+03 8.71200e+03 +4026 3.63200e+03 8.71200e+03 +4027 3.69600e+03 8.71200e+03 +4028 3.82400e+03 8.71200e+03 +4029 3.95200e+03 8.71200e+03 +4030 8.84800e+03 9.06400e+03 +4031 8.88000e+03 1.18800e+03 +4032 8.88000e+03 3.93800e+03 +4033 8.88000e+03 5.96200e+03 +4034 8.88000e+03 7.01800e+03 +4035 1.60800e+04 2.22200e+03 +4036 1.60800e+04 3.74000e+03 +4037 1.60800e+04 5.36800e+03 +4038 1.60800e+04 6.79800e+03 +4039 1.60800e+04 7.76600e+03 +4040 1.60800e+04 8.74500e+03 +4041 1.61120e+04 8.84400e+03 +4042 1.61440e+04 1.06260e+04 +4043 1.61440e+04 1.14290e+04 +4044 1.32960e+04 1.60600e+03 +4045 1.32960e+04 2.31000e+03 +4046 1.32960e+04 3.12400e+03 +4047 1.32960e+04 3.93800e+03 +4048 1.32960e+04 4.92800e+03 +4049 1.34560e+04 5.80800e+03 +4050 1.35200e+04 5.80800e+03 +4051 1.36320e+04 5.80800e+03 +4052 1.37600e+04 5.80800e+03 +4053 1.39200e+04 5.80800e+03 +4054 1.40800e+04 5.80800e+03 +4055 1.42030e+04 5.80800e+03 +4056 1.42240e+04 7.17200e+03 +4057 1.42240e+04 8.86600e+03 +4058 1.42240e+04 9.87800e+03 +4059 1.42240e+04 1.15390e+04 +4060 1.41600e+04 1.15390e+04 +4061 1.41800e+04 1.07800e+04 +4062 1.42720e+04 1.07800e+04 +4063 1.43840e+04 1.07800e+04 +4064 1.44480e+04 1.07800e+04 +4065 1.47040e+04 1.07800e+04 +4066 1.47840e+04 1.07800e+04 +4067 1.49600e+04 2.53000e+03 +4068 1.49600e+04 4.15800e+03 +4069 1.49600e+04 5.47800e+03 +4070 1.49600e+04 6.79800e+03 +4071 1.49600e+04 7.89800e+03 +4072 1.49600e+04 8.64600e+03 +4073 1.49600e+04 9.87800e+03 +4074 1.49600e+04 1.06370e+04 +4075 1.71040e+04 1.05600e+04 +4076 1.71040e+04 1.15280e+04 +4077 1.71200e+04 8.40400e+03 +4078 1.71360e+04 1.78200e+03 +4079 1.71360e+04 4.35600e+03 +4080 1.71360e+04 6.68800e+03 +4081 1.71360e+04 7.72200e+03 +4082 1.54400e+04 8.64600e+03 +4083 1.54400e+04 9.87800e+03 +4084 1.54400e+04 1.06260e+04 +4085 1.54400e+04 1.14290e+04 +4086 1.54600e+04 7.78800e+03 +4087 1.56000e+04 7.78800e+03 +4088 1.57120e+04 7.78800e+03 +4089 1.57920e+04 7.78800e+03 +4090 1.58560e+04 2.53000e+03 +4091 1.58560e+04 4.04800e+03 +4092 1.58560e+04 5.36800e+03 +4093 1.58560e+04 6.79800e+03 +4094 1.58560e+04 7.68900e+03 +4095 1.53440e+04 8.64600e+03 +4096 1.53440e+04 9.87800e+03 +4097 1.53440e+04 1.06260e+04 +4098 1.53440e+04 1.14290e+04 +4099 1.53800e+04 8.00800e+03 +4100 1.54720e+04 8.00800e+03 +4101 1.55680e+04 2.53000e+03 +4102 1.55680e+04 5.36800e+03 +4103 1.55680e+04 6.79800e+03 +4104 4.20800e+03 2.36500e+03 +4105 4.20800e+03 5.43400e+03 +4106 4.20800e+03 6.90800e+03 +4107 1.83200e+04 3.61900e+03 +4108 1.83200e+04 7.87600e+03 +4109 1.83200e+04 9.42700e+03 +4110 1.83200e+04 1.06700e+04 +4111 1.21440e+04 9.02000e+02 +4112 1.21440e+04 4.48800e+03 +4113 1.21440e+04 5.96200e+03 +4114 1.21440e+04 7.39200e+03 +4115 1.21600e+04 9.06400e+03 +4116 1.21760e+04 1.11650e+04 +4117 1.49920e+04 4.32300e+03 +4118 1.49920e+04 5.47800e+03 +4119 1.49920e+04 6.79800e+03 +4120 1.49920e+04 7.89800e+03 +4121 1.49920e+04 8.64600e+03 +4122 1.49920e+04 9.87800e+03 +4123 1.49920e+04 1.06260e+04 +4124 1.49920e+04 1.14290e+04 +4125 1.51240e+04 4.18000e+03 +4126 1.53280e+04 4.18000e+03 +4127 1.54080e+04 4.18000e+03 +4128 1.54720e+04 4.18000e+03 +4129 1.56000e+04 4.18000e+03 +4130 1.57120e+04 4.18000e+03 +4131 1.58030e+04 4.18000e+03 +4132 1.58240e+04 2.53000e+03 +4133 1.58240e+04 4.01500e+03 +4134 1.63360e+04 1.04610e+04 +4135 1.63360e+04 1.14290e+04 +4136 1.64320e+04 8.62400e+03 +4137 1.65920e+04 8.62400e+03 +4138 1.66880e+04 8.62400e+03 +4139 1.67520e+04 8.62400e+03 +4140 1.68160e+04 8.62400e+03 +4141 1.69120e+04 8.62400e+03 +4142 1.70400e+04 8.62400e+03 +4143 1.71360e+04 8.62400e+03 +4144 1.72430e+04 8.62400e+03 +4145 1.72640e+04 1.78200e+03 +4146 1.72640e+04 4.09200e+03 +4147 1.72640e+04 6.68800e+03 +4148 1.72640e+04 7.72200e+03 +4149 1.72640e+04 8.48100e+03 +4150 9.71200e+03 2.31000e+02 +4151 9.71200e+03 1.01200e+03 +4152 9.71200e+03 1.76000e+03 +4153 9.71200e+03 7.12800e+03 +4154 1.70720e+04 1.01200e+03 +4155 1.70720e+04 2.22200e+03 +4156 1.70720e+04 4.35600e+03 +4157 1.70720e+04 6.68800e+03 +4158 1.70720e+04 7.72200e+03 +4159 1.70720e+04 1.05600e+04 +4160 1.70720e+04 1.15280e+04 +4161 1.35520e+04 1.14180e+04 +4162 1.36960e+04 1.12200e+04 +4163 1.39680e+04 1.12200e+04 +4164 1.41920e+04 1.12200e+04 +4165 1.42720e+04 1.12200e+04 +4166 1.43840e+04 1.12200e+04 +4167 1.44480e+04 1.12200e+04 +4168 1.45760e+04 1.12200e+04 +4169 1.46720e+04 2.53000e+03 +4170 1.46720e+04 5.36800e+03 +4171 1.46720e+04 6.79800e+03 +4172 1.46720e+04 8.64600e+03 +4173 1.46720e+04 9.87800e+03 +4174 1.46880e+04 1.12200e+04 +4175 1.47040e+04 1.14180e+04 +4176 1.64640e+04 2.22200e+03 +4177 1.64640e+04 3.85000e+03 +4178 1.64640e+04 5.47800e+03 +4179 1.64640e+04 6.79800e+03 +4180 1.64640e+04 7.76600e+03 +4181 1.64640e+04 1.04610e+04 +4182 1.64640e+04 1.14290e+04 +4183 1.44000e+02 1.15280e+04 +4184 3.20000e+02 1.14400e+04 +4185 4.96000e+02 1.14400e+04 +4186 7.52000e+02 1.14400e+04 +4187 9.12000e+02 1.14400e+04 +4188 1.10400e+03 1.14400e+04 +4189 1.23200e+03 1.14400e+04 +4190 1.58400e+03 1.14400e+04 +4191 1.71200e+03 1.14400e+04 +4192 1.77600e+03 1.14400e+04 +4193 1.90400e+03 1.14400e+04 +4194 2.06400e+03 1.14400e+04 +4195 2.25100e+03 1.14400e+04 +4196 2.35200e+03 3.11300e+03 +4197 2.35200e+03 6.64400e+03 +4198 2.35200e+03 1.00320e+04 +4199 2.35200e+03 1.12970e+04 +4200 2.46400e+03 1.14400e+04 +4201 2.73600e+03 1.14400e+04 +4202 3.00800e+03 1.14400e+04 +4203 3.15200e+03 1.14400e+04 +4204 3.34400e+03 1.14400e+04 +4205 3.50400e+03 1.14400e+04 +4206 3.58400e+03 1.14400e+04 +4207 3.71200e+03 1.14400e+04 +4208 3.88800e+03 1.14400e+04 +4209 4.04800e+03 1.14400e+04 +4210 4.12800e+03 1.14400e+04 +4211 4.27200e+03 1.14400e+04 +4212 4.36800e+03 1.15280e+04 +4213 1.31680e+04 7.28200e+03 +4214 1.31680e+04 8.53600e+03 +4215 1.31680e+04 9.17400e+03 +4216 1.31680e+04 1.14290e+04 +4217 1.32640e+04 1.60600e+03 +4218 1.32640e+04 2.31000e+03 +4219 1.32640e+04 3.12400e+03 +4220 1.32640e+04 3.93800e+03 +4221 1.32640e+04 4.92800e+03 +4222 1.32640e+04 6.41300e+03 +4223 7.79200e+03 8.89900e+03 +4224 7.82400e+03 8.75600e+03 +4225 7.85600e+03 1.18800e+03 +4226 7.85600e+03 4.81800e+03 +4227 7.85600e+03 8.61300e+03 +4228 1.67200e+04 1.01200e+03 +4229 1.67200e+04 2.22200e+03 +4230 1.67200e+04 3.85000e+03 +4231 1.67200e+04 5.47800e+03 +4232 1.67200e+04 6.68800e+03 +4233 1.67200e+04 7.87600e+03 +4234 1.67200e+04 1.05600e+04 +4235 1.67200e+04 1.15280e+04 +4236 1.90560e+04 1.15280e+04 +4237 1.29760e+04 3.93800e+03 +4238 1.29760e+04 4.70800e+03 +4239 1.29760e+04 6.07200e+03 +4240 1.29760e+04 7.28200e+03 +4241 1.29760e+04 8.53600e+03 +4242 1.29760e+04 9.17400e+03 +4243 1.29760e+04 1.14290e+04 +4244 1.30400e+04 4.73000e+02 +4245 1.30400e+04 1.60600e+03 +4246 1.30400e+04 2.31000e+03 +4247 1.59200e+04 2.49700e+03 +4248 1.59360e+04 3.30000e+03 +4249 1.59520e+04 3.77300e+03 +4250 1.59520e+04 5.36800e+03 +4251 1.59520e+04 6.79800e+03 +4252 1.59520e+04 7.76600e+03 +4253 1.59520e+04 8.62400e+03 +4254 1.59520e+04 9.87800e+03 +4255 1.59520e+04 1.06260e+04 +4256 1.59520e+04 1.14290e+04 +4257 5.29600e+03 6.40200e+03 +4258 5.29600e+03 7.19400e+03 +4259 5.29600e+03 1.05820e+04 +4260 5.31200e+03 5.58800e+03 +4261 5.32800e+03 2.17800e+03 +4262 5.32800e+03 4.04800e+03 +4263 1.18560e+04 9.02000e+02 +4264 1.18560e+04 4.48800e+03 +4265 1.18560e+04 5.92900e+03 +4266 1.18720e+04 6.02800e+03 +4267 1.18880e+04 6.17100e+03 +4268 1.18880e+04 7.39200e+03 +4269 1.18880e+04 1.11650e+04 +4270 1.55040e+04 5.83000e+02 +4271 1.55040e+04 2.53000e+03 +4272 1.55040e+04 5.36800e+03 +4273 1.55040e+04 6.79800e+03 +4274 1.55040e+04 8.64600e+03 +4275 1.55520e+04 9.28400e+03 +4276 1.56000e+04 9.87800e+03 +4277 1.56000e+04 1.06260e+04 +4278 1.56000e+04 1.14290e+04 +4279 5.84000e+03 2.09000e+02 +4280 5.84000e+03 2.02400e+03 +4281 5.84000e+03 4.04800e+03 +4282 5.84000e+03 8.38200e+03 +4283 5.84000e+03 1.08020e+04 +4284 4.36800e+03 2.36500e+03 +4285 4.36800e+03 5.43400e+03 +4286 4.36800e+03 7.81000e+03 +4287 4.38800e+03 1.11320e+04 +4288 4.46400e+03 1.11320e+04 +4289 4.52800e+03 1.11320e+04 +4290 4.62400e+03 1.11320e+04 +4291 4.78400e+03 1.11320e+04 +4292 4.94400e+03 1.11320e+04 +4293 5.13600e+03 1.11320e+04 +4294 5.20000e+03 1.11320e+04 +4295 5.36000e+03 1.11320e+04 +4296 5.55200e+03 1.11320e+04 +4297 5.61600e+03 1.11320e+04 +4298 5.80800e+03 1.11320e+04 +4299 5.96800e+03 1.11320e+04 +4300 6.03200e+03 1.11320e+04 +4301 6.11200e+03 1.11320e+04 +4302 6.20800e+03 1.11320e+04 +4303 6.35200e+03 1.11320e+04 +4304 6.46400e+03 1.11320e+04 +4305 6.67200e+03 1.11320e+04 +4306 6.83200e+03 1.11320e+04 +4307 7.02400e+03 1.11320e+04 +4308 7.20000e+03 1.11320e+04 +4309 7.44000e+03 1.11320e+04 +4310 7.53600e+03 1.11320e+04 +4311 7.60000e+03 1.11320e+04 +4312 7.69600e+03 1.11320e+04 +4313 7.82400e+03 1.11320e+04 +4314 7.88800e+03 1.11320e+04 +4315 6.28800e+03 4.29000e+02 +4316 6.28800e+03 2.02400e+03 +4317 6.28800e+03 4.04800e+03 +4318 6.41600e+03 8.22800e+03 +4319 6.54400e+03 8.22800e+03 +4320 6.67200e+03 8.22800e+03 +4321 6.86400e+03 8.22800e+03 +4322 6.92800e+03 8.22800e+03 +4323 7.04000e+03 8.22800e+03 +4324 7.18400e+03 8.22800e+03 +4325 7.53600e+03 8.22800e+03 +4326 7.60000e+03 8.22800e+03 +4327 7.69600e+03 8.22800e+03 +4328 7.76000e+03 8.22800e+03 +4329 7.82400e+03 8.22800e+03 +4330 7.88800e+03 8.22800e+03 +4331 8.09600e+03 8.22800e+03 +4332 8.17600e+03 8.22800e+03 +4333 8.25600e+03 8.22800e+03 +4334 8.44800e+03 8.22800e+03 +4335 8.72000e+03 8.22800e+03 +4336 8.84800e+03 8.22800e+03 +4337 9.11500e+03 8.22800e+03 +4338 9.13600e+03 9.87800e+03 +4339 4.62400e+03 2.68400e+03 +4340 4.62400e+03 5.44500e+03 +4341 4.64400e+03 5.80800e+03 +4342 4.75200e+03 5.80800e+03 +4343 4.84800e+03 5.80800e+03 +4344 4.91200e+03 5.80800e+03 +4345 5.04000e+03 5.80800e+03 +4346 5.32800e+03 5.80800e+03 +4347 5.66400e+03 5.80800e+03 +4348 6.09600e+03 5.80800e+03 +4349 6.19200e+03 5.80800e+03 +4350 6.25600e+03 5.80800e+03 +4351 6.41600e+03 5.80800e+03 +4352 6.56000e+03 5.80800e+03 +4353 6.67200e+03 5.80800e+03 +4354 6.76800e+03 5.80800e+03 +4355 6.86400e+03 5.80800e+03 +4356 6.99200e+03 5.80800e+03 +4357 7.08800e+03 5.80800e+03 +4358 7.18400e+03 5.80800e+03 +4359 7.32800e+03 5.80800e+03 +4360 7.58400e+03 5.80800e+03 +4361 7.66400e+03 5.80800e+03 +4362 7.76000e+03 5.80800e+03 +4363 7.82400e+03 5.80800e+03 +4364 7.88800e+03 5.80800e+03 +4365 7.95200e+03 5.80800e+03 +4366 8.04800e+03 5.80800e+03 +4367 8.17600e+03 5.80800e+03 +4368 8.33600e+03 6.90800e+03 +4369 8.33600e+03 8.64600e+03 +4370 9.00800e+03 1.18800e+03 +4371 9.44000e+03 3.82800e+03 +4372 9.55200e+03 3.82800e+03 +4373 9.68000e+03 3.82800e+03 +4374 9.82400e+03 3.82800e+03 +4375 9.93600e+03 3.82800e+03 +4376 1.00000e+04 3.82800e+03 +4377 1.02240e+04 3.82800e+03 +4378 1.02880e+04 3.82800e+03 +4379 1.03840e+04 3.82800e+03 +4380 1.05120e+04 3.82800e+03 +4381 1.05760e+04 3.82800e+03 +4382 1.06400e+04 3.82800e+03 +4383 1.07040e+04 3.82800e+03 +4384 1.08000e+04 3.82800e+03 +4385 1.09280e+04 3.82800e+03 +4386 1.10560e+04 3.82800e+03 +4387 1.11200e+04 3.82800e+03 +4388 1.12160e+04 3.82800e+03 +4389 1.13440e+04 3.82800e+03 +4390 1.14880e+04 3.82800e+03 +4391 1.16800e+04 3.82800e+03 +4392 1.17600e+04 3.82800e+03 +4393 1.19040e+04 3.82800e+03 +4394 1.20480e+04 3.82800e+03 +4395 1.21760e+04 3.82800e+03 +4396 1.23360e+04 3.82800e+03 +4397 1.24320e+04 3.82800e+03 +4398 1.25280e+04 3.82800e+03 +4399 1.26240e+04 3.82800e+03 +4400 1.26880e+04 3.82800e+03 +4401 1.27520e+04 4.70800e+03 +4402 1.27520e+04 6.07200e+03 +4403 1.27520e+04 7.39200e+03 +4404 1.27520e+04 8.64600e+03 +4405 1.27520e+04 1.14290e+04 +4406 1.45120e+04 9.16300e+03 +4407 1.45120e+04 9.87800e+03 +4408 1.45120e+04 1.15390e+04 +4409 1.47040e+04 9.06400e+03 +4410 1.47840e+04 9.06400e+03 +4411 1.51200e+04 9.06400e+03 +4412 1.53920e+04 9.06400e+03 +4413 1.54720e+04 9.06400e+03 +4414 1.55680e+04 9.06400e+03 +4415 1.57120e+04 9.06400e+03 +4416 1.57920e+04 9.06400e+03 +4417 1.58560e+04 9.06400e+03 +4418 1.59840e+04 9.06400e+03 +4419 1.60800e+04 9.06400e+03 +4420 1.62080e+04 9.06400e+03 +4421 1.64320e+04 9.06400e+03 +4422 1.65920e+04 9.06400e+03 +4423 1.66880e+04 9.06400e+03 +4424 1.67840e+04 9.06400e+03 +4425 1.69120e+04 9.06400e+03 +4426 1.70400e+04 9.06400e+03 +4427 1.71360e+04 9.06400e+03 +4428 1.72800e+04 9.06400e+03 +4429 1.73920e+04 9.06400e+03 +4430 1.74720e+04 9.06400e+03 +4431 1.75520e+04 9.06400e+03 +4432 1.79520e+04 9.06400e+03 +4433 1.82240e+04 9.06400e+03 +4434 1.84270e+04 9.06400e+03 +4435 1.85120e+04 4.03700e+03 +4436 1.85120e+04 8.85500e+03 +4437 6.48000e+03 4.29000e+02 +4438 6.48000e+03 2.02400e+03 +4439 6.48000e+03 4.04800e+03 +4440 6.48000e+03 8.64600e+03 +4441 6.67200e+03 1.02520e+04 +4442 6.84800e+03 1.02520e+04 +4443 7.02400e+03 1.02520e+04 +4444 7.20000e+03 1.02520e+04 +4445 7.37600e+03 1.02520e+04 +4446 7.53600e+03 1.02520e+04 +4447 7.60000e+03 1.02520e+04 +4448 7.69600e+03 1.02520e+04 +4449 7.82400e+03 1.02520e+04 +4450 7.88800e+03 1.02520e+04 +4451 7.98400e+03 1.02520e+04 +4452 8.09600e+03 1.02520e+04 +4453 8.17600e+03 1.02520e+04 +4454 8.27200e+03 1.02520e+04 +4455 8.36800e+03 1.02520e+04 +4456 8.43200e+03 1.02520e+04 +4457 8.72000e+03 1.02520e+04 +4458 8.84800e+03 1.02520e+04 +4459 9.10400e+03 1.02520e+04 +4460 9.72800e+03 1.02520e+04 +4461 1.00320e+04 1.02520e+04 +4462 1.02560e+04 1.02520e+04 +4463 1.03200e+04 1.02520e+04 +4464 7.47200e+03 6.38000e+02 +4465 7.47200e+03 1.51800e+03 +4466 7.47200e+03 4.04800e+03 +4467 7.47200e+03 4.92800e+03 +4468 7.47200e+03 8.75600e+03 +4469 7.53600e+03 1.09120e+04 +4470 7.60000e+03 1.09120e+04 +4471 7.69600e+03 1.09120e+04 +4472 7.82400e+03 1.09120e+04 +4473 7.88800e+03 1.09120e+04 +4474 7.98400e+03 1.09120e+04 +4475 8.09600e+03 1.09120e+04 +4476 8.17600e+03 1.09120e+04 +4477 8.27200e+03 1.09120e+04 +4478 8.36800e+03 1.09120e+04 +4479 8.43200e+03 1.09120e+04 +4480 8.72000e+03 1.09120e+04 +4481 8.84800e+03 1.09120e+04 +4482 9.10400e+03 1.09120e+04 +4483 9.72800e+03 1.09120e+04 +4484 1.00320e+04 1.09120e+04 +4485 1.02560e+04 1.09120e+04 +4486 1.03200e+04 1.09120e+04 +4487 1.04800e+04 1.09120e+04 +4488 1.06560e+04 1.09120e+04 +4489 1.07680e+04 1.09120e+04 +4490 1.09280e+04 1.09120e+04 +4491 1.10240e+04 1.09120e+04 +4492 1.12160e+04 1.09120e+04 +4493 1.13280e+04 1.09120e+04 +4494 1.14400e+04 1.14400e+04 +4495 1.14400e+04 1.10880e+04 +4496 4.84800e+03 7.75500e+03 +4497 4.84800e+03 1.14950e+04 +4498 4.86400e+03 7.61200e+03 +4499 4.88000e+03 2.61800e+03 +4500 4.88000e+03 6.40200e+03 +4501 8.91200e+03 1.18800e+03 +4502 8.91200e+03 3.94900e+03 +4503 8.99200e+03 4.04800e+03 +4504 9.44000e+03 4.04800e+03 +4505 9.55200e+03 4.04800e+03 +4506 9.68000e+03 4.04800e+03 +4507 9.82400e+03 4.04800e+03 +4508 9.93600e+03 4.04800e+03 +4509 1.00000e+04 4.04800e+03 +4510 1.02240e+04 4.04800e+03 +4511 1.02880e+04 4.04800e+03 +4512 1.03840e+04 4.04800e+03 +4513 1.05120e+04 4.04800e+03 +4514 1.05760e+04 4.04800e+03 +4515 1.06400e+04 4.04800e+03 +4516 1.07040e+04 4.04800e+03 +4517 1.08000e+04 4.04800e+03 +4518 1.09280e+04 4.04800e+03 +4519 1.10560e+04 4.04800e+03 +4520 1.11200e+04 4.04800e+03 +4521 1.12160e+04 4.04800e+03 +4522 1.13440e+04 4.04800e+03 +4523 1.14880e+04 4.04800e+03 +4524 1.16800e+04 4.04800e+03 +4525 1.17600e+04 4.04800e+03 +4526 1.19040e+04 4.04800e+03 +4527 1.20480e+04 4.04800e+03 +4528 1.21760e+04 4.04800e+03 +4529 1.23360e+04 4.04800e+03 +4530 1.24320e+04 4.04800e+03 +4531 1.25280e+04 4.04800e+03 +4532 1.26240e+04 4.70800e+03 +4533 1.26240e+04 6.07200e+03 +4534 1.26240e+04 7.39200e+03 +4535 1.26240e+04 1.14290e+04 +4536 1.26880e+04 4.04800e+03 +4537 1.28000e+04 4.04800e+03 +4538 1.28800e+04 1.60600e+03 +4539 1.28800e+04 2.31000e+03 +4540 1.28800e+04 3.94900e+03 +4541 4.65600e+03 2.62900e+03 +4542 4.72000e+03 4.48800e+03 +4543 4.78400e+03 4.48800e+03 +4544 4.84800e+03 4.48800e+03 +4545 4.91200e+03 4.48800e+03 +4546 5.04000e+03 4.48800e+03 +4547 5.29600e+03 4.48800e+03 +4548 5.66400e+03 4.48800e+03 +4549 5.87200e+03 4.48800e+03 +4550 6.12800e+03 4.48800e+03 +4551 6.19200e+03 4.48800e+03 +4552 6.25600e+03 4.48800e+03 +4553 6.41600e+03 4.48800e+03 +4554 6.56000e+03 4.48800e+03 +4555 6.67200e+03 4.48800e+03 +4556 6.78400e+03 4.48800e+03 +4557 6.89600e+03 4.48800e+03 +4558 7.00800e+03 4.48800e+03 +4559 7.08800e+03 4.48800e+03 +4560 7.18400e+03 4.48800e+03 +4561 7.31200e+03 4.48800e+03 +4562 7.50400e+03 4.48800e+03 +4563 7.66400e+03 4.48800e+03 +4564 7.76000e+03 4.48800e+03 +4565 7.82400e+03 4.48800e+03 +4566 7.88800e+03 4.48800e+03 +4567 7.95200e+03 4.48800e+03 +4568 8.04800e+03 4.48800e+03 +4569 8.20800e+03 4.48800e+03 +4570 8.33600e+03 4.48800e+03 +4571 8.43200e+03 4.48800e+03 +4572 8.49600e+03 4.48800e+03 +4573 8.68800e+03 5.96200e+03 +4574 8.68800e+03 8.86600e+03 +4575 1.20160e+04 9.02000e+02 +4576 1.20160e+04 4.48800e+03 +4577 1.20160e+04 6.08300e+03 +4578 1.20360e+04 6.33600e+03 +4579 1.21760e+04 6.33600e+03 +4580 1.23840e+04 6.33600e+03 +4581 1.25230e+04 6.33600e+03 +4582 1.25600e+04 7.39200e+03 +4583 1.25600e+04 1.14290e+04 +4584 1.74560e+04 1.15280e+04 +4585 1.74760e+04 1.14400e+04 +4586 1.75520e+04 1.14400e+04 +4587 1.79200e+04 1.14400e+04 +4588 1.83680e+04 1.14400e+04 +4589 1.85230e+04 1.14400e+04 +4590 1.86080e+04 4.03700e+03 +4591 1.86080e+04 8.52500e+03 +4592 1.86080e+04 1.06700e+04 +4593 1.86080e+04 1.15280e+04 +4594 1.44160e+04 8.86600e+03 +4595 1.44160e+04 9.87800e+03 +4596 1.44160e+04 1.15390e+04 +4597 1.45120e+04 7.34800e+03 +4598 1.47040e+04 7.34800e+03 +4599 1.48160e+04 7.34800e+03 +4600 1.49280e+04 7.34800e+03 +4601 1.51360e+04 7.34800e+03 +4602 1.53280e+04 7.34800e+03 +4603 1.54400e+04 7.34800e+03 +4604 1.56000e+04 7.34800e+03 +4605 1.57120e+04 7.34800e+03 +4606 1.57920e+04 7.34800e+03 +4607 1.58880e+04 7.34800e+03 +4608 1.59840e+04 7.34800e+03 +4609 1.61280e+04 7.34800e+03 +4610 1.62880e+04 7.34800e+03 +4611 1.65440e+04 7.34800e+03 +4612 1.66880e+04 7.34800e+03 +4613 1.67520e+04 7.34800e+03 +4614 1.68160e+04 7.34800e+03 +4615 1.69120e+04 7.34800e+03 +4616 1.70400e+04 7.34800e+03 +4617 1.71040e+04 7.34800e+03 +4618 1.71680e+04 7.34800e+03 +4619 1.74080e+04 7.34800e+03 +4620 1.75040e+04 7.34800e+03 +4621 1.77120e+04 7.34800e+03 +4622 1.78560e+04 7.34800e+03 +4623 1.79680e+04 7.34800e+03 +4624 1.81920e+04 7.34800e+03 +4625 1.82560e+04 7.34800e+03 +4626 1.83840e+04 7.34800e+03 +4627 1.84480e+04 3.56400e+03 +4628 1.84480e+04 7.17200e+03 +4629 8.59200e+03 1.18800e+03 +4630 8.59200e+03 5.96200e+03 +4631 8.59200e+03 6.87500e+03 +4632 8.81600e+03 7.09500e+03 +4633 8.83600e+03 8.75600e+03 +4634 9.10400e+03 8.75600e+03 +4635 9.72800e+03 8.75600e+03 +4636 1.00000e+04 8.75600e+03 +4637 1.02560e+04 8.75600e+03 +4638 1.03520e+04 8.75600e+03 +4639 1.04640e+04 8.75600e+03 +4640 1.06560e+04 8.75600e+03 +4641 1.07360e+04 8.75600e+03 +4642 1.08000e+04 8.75600e+03 +4643 1.09120e+04 8.75600e+03 +4644 1.10400e+04 8.75600e+03 +4645 1.12000e+04 8.75600e+03 +4646 1.13440e+04 8.75600e+03 +4647 1.15040e+04 8.75600e+03 +4648 1.16000e+04 8.75600e+03 +4649 1.17120e+04 8.75600e+03 +4650 1.17920e+04 8.75600e+03 +4651 1.19840e+04 8.75600e+03 +4652 1.21920e+04 8.75600e+03 +4653 1.22720e+04 8.75600e+03 +4654 1.23840e+04 8.75600e+03 +4655 1.25280e+04 8.75600e+03 +4656 1.26560e+04 8.75600e+03 +4657 1.27200e+04 1.14290e+04 +4658 4.91200e+03 2.29900e+03 +4659 5.04000e+03 3.60800e+03 +4660 5.29600e+03 3.60800e+03 +4661 5.66400e+03 3.60800e+03 +4662 5.87200e+03 3.60800e+03 +4663 6.12800e+03 3.60800e+03 +4664 6.19200e+03 3.60800e+03 +4665 6.25600e+03 3.60800e+03 +4666 6.41600e+03 3.60800e+03 +4667 6.56000e+03 3.60800e+03 +4668 6.67200e+03 3.60800e+03 +4669 6.78400e+03 3.60800e+03 +4670 6.89600e+03 3.60800e+03 +4671 7.00800e+03 3.60800e+03 +4672 7.08800e+03 3.60800e+03 +4673 7.18400e+03 3.60800e+03 +4674 7.31200e+03 3.60800e+03 +4675 7.50400e+03 3.60800e+03 +4676 7.66400e+03 3.60800e+03 +4677 7.76000e+03 3.60800e+03 +4678 7.82400e+03 3.60800e+03 +4679 7.88800e+03 3.60800e+03 +4680 7.95200e+03 3.60800e+03 +4681 8.04800e+03 3.60800e+03 +4682 8.20800e+03 3.60800e+03 +4683 8.33600e+03 3.60800e+03 +4684 8.43200e+03 3.60800e+03 +4685 8.49600e+03 3.60800e+03 +4686 8.62400e+03 3.60800e+03 +4687 8.75200e+03 3.60800e+03 +4688 8.84800e+03 3.60800e+03 +4689 8.97600e+03 3.60800e+03 +4690 9.04000e+03 5.96200e+03 +4691 9.04000e+03 6.90800e+03 +4692 9.04000e+03 9.87800e+03 +4693 9.32800e+03 6.71000e+02 +4694 9.32800e+03 1.76000e+03 +4695 9.32800e+03 2.83800e+03 +4696 9.72800e+03 9.72400e+03 +4697 1.00320e+04 9.72400e+03 +4698 1.02560e+04 9.72400e+03 +4699 1.03200e+04 9.72400e+03 +4700 1.04160e+04 9.72400e+03 +4701 1.04800e+04 9.72400e+03 +4702 1.06560e+04 9.72400e+03 +4703 1.07360e+04 9.72400e+03 +4704 1.08000e+04 9.72400e+03 +4705 1.09280e+04 9.72400e+03 +4706 1.10400e+04 9.72400e+03 +4707 1.12160e+04 9.72400e+03 +4708 1.13120e+04 9.72400e+03 +4709 1.14400e+04 9.72400e+03 +4710 1.15200e+04 9.72400e+03 +4711 1.16000e+04 9.72400e+03 +4712 1.17120e+04 9.72400e+03 +4713 1.17920e+04 9.72400e+03 +4714 1.19840e+04 9.72400e+03 +4715 1.20800e+04 9.72400e+03 +4716 1.22080e+04 9.72400e+03 +4717 1.23840e+04 9.72400e+03 +4718 1.25280e+04 9.72400e+03 +4719 1.26560e+04 9.72400e+03 +4720 1.28270e+04 9.72400e+03 +4721 1.28480e+04 1.14290e+04 +4722 1.29440e+04 9.72400e+03 +4723 1.30880e+04 9.72400e+03 +4724 1.32320e+04 9.72400e+03 +4725 1.34030e+04 9.72400e+03 +4726 1.34240e+04 1.60600e+03 +4727 1.34240e+04 2.79400e+03 +4728 1.34240e+04 3.93800e+03 +4729 1.34240e+04 4.92800e+03 +4730 1.34240e+04 7.39200e+03 +4731 1.34240e+04 8.53600e+03 +4732 1.34240e+04 9.17400e+03 +4733 1.68800e+04 1.01200e+03 +4734 1.68800e+04 2.22200e+03 +4735 1.68800e+04 3.85000e+03 +4736 1.68800e+04 5.36800e+03 +4737 1.68800e+04 6.68800e+03 +4738 1.68800e+04 7.87600e+03 +4739 1.68800e+04 1.05600e+04 +4740 1.68800e+04 1.15280e+04 +4741 1.85760e+04 4.03700e+03 +4742 1.85760e+04 8.64600e+03 +4743 1.86560e+04 8.86600e+03 +4744 1.88590e+04 8.86600e+03 +4745 1.89920e+04 1.08460e+04 +4746 1.89920e+04 1.15280e+04 +4747 8.17600e+03 1.18800e+03 +4748 8.17600e+03 4.82900e+03 +4749 8.33600e+03 4.92800e+03 +4750 8.43200e+03 4.92800e+03 +4751 8.49600e+03 4.92800e+03 +4752 8.75200e+03 4.92800e+03 +4753 8.84800e+03 4.92800e+03 +4754 8.99200e+03 4.92800e+03 +4755 9.44000e+03 4.92800e+03 +4756 9.55200e+03 4.92800e+03 +4757 9.68000e+03 4.92800e+03 +4758 9.82400e+03 4.92800e+03 +4759 9.93600e+03 4.92800e+03 +4760 1.00000e+04 4.92800e+03 +4761 1.02240e+04 4.92800e+03 +4762 1.02880e+04 4.92800e+03 +4763 1.03840e+04 4.92800e+03 +4764 1.05120e+04 4.92800e+03 +4765 1.06080e+04 4.92800e+03 +4766 1.07040e+04 4.92800e+03 +4767 1.08000e+04 4.92800e+03 +4768 1.09280e+04 4.92800e+03 +4769 1.10560e+04 4.92800e+03 +4770 1.11200e+04 4.92800e+03 +4771 1.12160e+04 4.92800e+03 +4772 1.13440e+04 4.92800e+03 +4773 1.14880e+04 4.92800e+03 +4774 1.16800e+04 4.92800e+03 +4775 1.17600e+04 4.92800e+03 +4776 1.19040e+04 4.92800e+03 +4777 1.20480e+04 4.92800e+03 +4778 1.21760e+04 4.92800e+03 +4779 1.23360e+04 4.92800e+03 +4780 1.24430e+04 4.92800e+03 +4781 1.24640e+04 5.96200e+03 +4782 1.24640e+04 7.39200e+03 +4783 1.24640e+04 1.14290e+04 +4784 6.00000e+03 1.08020e+04 +4785 6.00000e+03 1.14950e+04 +4786 6.01600e+03 8.62400e+03 +4787 6.03200e+03 3.19000e+02 +4788 6.03200e+03 2.02400e+03 +4789 6.03200e+03 4.04800e+03 +4790 6.03200e+03 5.32400e+03 +4791 7.08800e+03 6.38000e+02 +4792 7.08800e+03 1.51800e+03 +4793 7.08800e+03 2.40900e+03 +4794 7.18400e+03 2.50800e+03 +4795 7.31200e+03 2.50800e+03 +4796 7.50400e+03 2.50800e+03 +4797 7.66400e+03 2.50800e+03 +4798 7.76000e+03 2.50800e+03 +4799 7.82400e+03 2.50800e+03 +4800 7.88800e+03 2.50800e+03 +4801 7.95200e+03 2.50800e+03 +4802 8.04800e+03 2.50800e+03 +4803 8.20800e+03 2.50800e+03 +4804 8.33600e+03 2.50800e+03 +4805 8.43200e+03 2.50800e+03 +4806 8.49600e+03 2.50800e+03 +4807 8.62400e+03 2.50800e+03 +4808 8.75200e+03 2.50800e+03 +4809 8.84800e+03 2.50800e+03 +4810 8.97600e+03 2.50800e+03 +4811 9.04000e+03 2.50800e+03 +4812 9.26400e+03 2.50800e+03 +4813 9.40800e+03 2.50800e+03 +4814 9.68000e+03 2.50800e+03 +4815 9.80800e+03 2.50800e+03 +4816 9.87200e+03 2.50800e+03 +4817 1.00000e+04 2.50800e+03 +4818 1.00960e+04 2.50800e+03 +4819 1.02240e+04 2.50800e+03 +4820 1.02880e+04 2.50800e+03 +4821 1.03840e+04 2.50800e+03 +4822 1.05120e+04 2.50800e+03 +4823 1.05760e+04 2.50800e+03 +4824 1.06400e+04 2.50800e+03 +4825 1.07040e+04 2.50800e+03 +4826 1.08000e+04 2.50800e+03 +4827 1.09280e+04 2.50800e+03 +4828 1.10560e+04 2.50800e+03 +4829 1.11200e+04 2.50800e+03 +4830 1.12160e+04 2.50800e+03 +4831 1.13440e+04 2.50800e+03 +4832 1.14080e+04 4.48800e+03 +4833 1.14080e+04 6.07200e+03 +4834 1.14080e+04 7.39200e+03 +4835 1.14080e+04 1.13850e+04 +4836 1.57600e+04 2.53000e+03 +4837 1.57600e+04 5.36800e+03 +4838 1.57600e+04 6.79800e+03 +4839 1.57600e+04 8.42600e+03 +4840 1.57600e+04 9.87800e+03 +4841 1.57600e+04 1.06260e+04 +4842 1.57600e+04 1.14290e+04 +4843 1.12000e+02 9.21800e+03 +4844 1.12000e+02 1.15280e+04 +4845 2.60000e+02 7.48000e+03 +4846 4.80000e+02 7.48000e+03 +4847 5.60000e+02 7.48000e+03 +4848 7.36000e+02 7.48000e+03 +4849 8.48000e+02 7.48000e+03 +4850 9.12000e+02 7.48000e+03 +4851 9.76000e+02 7.48000e+03 +4852 1.07200e+03 7.48000e+03 +4853 1.15200e+03 7.48000e+03 +4854 1.31200e+03 7.48000e+03 +4855 1.53600e+03 7.48000e+03 +4856 1.64800e+03 7.48000e+03 +4857 1.76000e+03 7.48000e+03 +4858 1.87200e+03 7.48000e+03 +4859 1.98400e+03 7.48000e+03 +4860 2.11200e+03 7.48000e+03 +4861 2.19200e+03 7.48000e+03 +4862 2.28800e+03 7.48000e+03 +4863 2.46400e+03 7.48000e+03 +4864 2.62400e+03 7.48000e+03 +4865 2.73600e+03 7.48000e+03 +4866 2.86400e+03 7.48000e+03 +4867 2.96000e+03 7.48000e+03 +4868 3.02400e+03 7.48000e+03 +4869 3.20000e+03 7.48000e+03 +4870 3.31200e+03 7.48000e+03 +4871 3.41900e+03 7.48000e+03 +4872 3.44000e+03 3.11300e+03 +4873 3.44000e+03 6.86400e+03 +4874 5.61600e+03 1.91400e+03 +4875 5.61600e+03 4.04800e+03 +4876 5.65200e+03 6.33600e+03 +4877 6.09600e+03 6.33600e+03 +4878 6.19200e+03 6.33600e+03 +4879 6.25600e+03 6.33600e+03 +4880 6.41600e+03 6.33600e+03 +4881 6.54400e+03 6.33600e+03 +4882 6.67200e+03 6.33600e+03 +4883 6.76800e+03 6.33600e+03 +4884 6.86400e+03 6.33600e+03 +4885 6.99200e+03 6.33600e+03 +4886 7.08800e+03 6.33600e+03 +4887 7.18400e+03 6.33600e+03 +4888 7.32800e+03 6.33600e+03 +4889 7.61600e+03 6.33600e+03 +4890 7.74400e+03 6.33600e+03 +4891 7.82400e+03 6.33600e+03 +4892 7.88800e+03 6.33600e+03 +4893 8.04800e+03 6.33600e+03 +4894 8.17600e+03 6.33600e+03 +4895 8.43200e+03 6.33600e+03 +4896 8.51200e+03 6.33600e+03 +4897 8.83200e+03 6.33600e+03 +4898 8.99200e+03 6.33600e+03 +4899 9.29600e+03 6.33600e+03 +4900 9.45600e+03 6.33600e+03 +4901 9.55200e+03 6.33600e+03 +4902 9.68000e+03 6.33600e+03 +4903 9.80800e+03 6.33600e+03 +4904 1.00160e+04 6.33600e+03 +4905 1.01390e+04 6.33600e+03 +4906 1.69440e+04 1.01200e+03 +4907 1.69440e+04 2.22200e+03 +4908 1.69440e+04 3.85000e+03 +4909 1.69440e+04 5.36800e+03 +4910 1.69440e+04 6.68800e+03 +4911 1.69440e+04 7.87600e+03 +4912 1.69440e+04 1.05600e+04 +4913 1.69440e+04 1.15280e+04 +4914 9.74400e+03 2.31000e+02 +4915 9.74400e+03 1.01200e+03 +4916 9.74400e+03 1.76000e+03 +4917 9.76400e+03 6.99600e+03 +4918 1.00160e+04 6.99600e+03 +4919 1.01280e+04 6.99600e+03 +4920 1.02240e+04 6.99600e+03 +4921 1.03840e+04 6.99600e+03 +4922 1.04960e+04 6.99600e+03 +4923 1.06560e+04 6.99600e+03 +4924 1.08160e+04 6.99600e+03 +4925 1.09280e+04 6.99600e+03 +4926 1.10400e+04 6.99600e+03 +4927 1.11200e+04 6.99600e+03 +4928 1.12160e+04 6.99600e+03 +4929 1.13280e+04 6.99600e+03 +4930 1.15040e+04 6.99600e+03 +4931 1.15680e+04 6.99600e+03 +4932 1.16320e+04 6.99600e+03 +4933 1.16960e+04 6.99600e+03 +4934 1.17600e+04 6.99600e+03 +4935 1.18240e+04 6.99600e+03 +4936 1.19680e+04 6.99600e+03 +4937 1.21920e+04 6.99600e+03 +4938 1.22720e+04 6.99600e+03 +4939 1.23840e+04 6.99600e+03 +4940 1.25280e+04 6.99600e+03 +4941 1.26560e+04 6.99600e+03 +4942 1.28000e+04 6.99600e+03 +4943 1.28910e+04 6.99600e+03 +4944 1.29120e+04 7.27100e+03 +4945 1.29120e+04 8.53600e+03 +4946 1.29120e+04 9.17400e+03 +4947 1.29120e+04 1.14290e+04 +4948 1.29330e+04 6.77600e+03 +4949 1.30880e+04 6.77600e+03 +4950 1.32800e+04 6.77600e+03 +4951 1.33920e+04 6.77600e+03 +4952 1.34560e+04 6.77600e+03 +4953 1.35200e+04 6.77600e+03 +4954 1.36320e+04 6.77600e+03 +4955 1.37600e+04 6.77600e+03 +4956 1.39200e+04 6.77600e+03 +4957 1.40800e+04 6.77600e+03 +4958 1.41920e+04 6.77600e+03 +4959 1.42670e+04 6.77600e+03 +4960 1.29120e+04 6.90800e+03 +4961 1.42880e+04 2.53000e+03 +4962 1.42880e+04 5.36800e+03 +4963 1.42880e+04 6.63300e+03 +4964 1.39040e+04 1.15280e+04 +4965 1.39200e+04 1.14400e+04 +4966 1.39360e+04 1.15280e+04 +4967 1.39520e+04 1.14400e+04 +4968 1.39680e+04 1.15280e+04 +4969 6.57600e+03 4.29000e+02 +4970 6.57600e+03 1.63900e+03 +4971 6.67200e+03 2.06800e+03 +4972 6.78400e+03 2.06800e+03 +4973 6.89600e+03 2.06800e+03 +4974 7.00800e+03 2.06800e+03 +4975 7.18400e+03 2.06800e+03 +4976 7.31200e+03 2.06800e+03 +4977 7.50400e+03 2.06800e+03 +4978 7.66400e+03 2.06800e+03 +4979 7.76000e+03 2.06800e+03 +4980 7.82400e+03 2.06800e+03 +4981 7.88800e+03 2.06800e+03 +4982 7.95200e+03 2.06800e+03 +4983 8.04800e+03 2.06800e+03 +4984 8.20800e+03 2.06800e+03 +4985 8.33600e+03 2.06800e+03 +4986 8.43200e+03 2.06800e+03 +4987 8.49600e+03 2.06800e+03 +4988 8.56000e+03 2.06800e+03 +4989 8.62400e+03 2.06800e+03 +4990 8.75200e+03 2.06800e+03 +4991 8.84800e+03 2.06800e+03 +4992 8.97600e+03 2.06800e+03 +4993 9.04000e+03 2.06800e+03 +4994 9.26400e+03 2.06800e+03 +4995 9.42400e+03 2.06800e+03 +4996 9.58400e+03 2.06800e+03 +4997 9.68000e+03 2.06800e+03 +4998 9.80800e+03 2.06800e+03 +4999 9.87200e+03 2.06800e+03 +5000 1.00000e+04 2.06800e+03 +5001 1.00960e+04 2.06800e+03 +5002 1.02240e+04 2.06800e+03 +5003 1.02880e+04 2.06800e+03 +5004 1.03840e+04 2.06800e+03 +5005 1.05120e+04 2.06800e+03 +5006 1.05760e+04 2.06800e+03 +5007 1.06400e+04 2.06800e+03 +5008 1.07040e+04 2.06800e+03 +5009 1.08000e+04 2.06800e+03 +5010 1.09280e+04 2.06800e+03 +5011 1.10560e+04 2.06800e+03 +5012 1.11200e+04 2.06800e+03 +5013 1.12270e+04 2.06800e+03 +5014 1.12480e+04 4.48800e+03 +5015 1.12480e+04 7.39200e+03 +5016 1.12480e+04 1.13850e+04 +5017 5.55200e+03 2.17800e+03 +5018 5.55200e+03 4.04800e+03 +5019 5.55200e+03 6.40200e+03 +5020 5.55200e+03 7.40300e+03 +5021 5.64800e+03 7.48000e+03 +5022 5.93600e+03 7.48000e+03 +5023 6.09600e+03 7.48000e+03 +5024 6.19200e+03 7.48000e+03 +5025 6.41600e+03 7.48000e+03 +5026 6.54400e+03 7.48000e+03 +5027 6.67200e+03 7.48000e+03 +5028 6.86400e+03 7.48000e+03 +5029 6.92800e+03 7.48000e+03 +5030 7.04000e+03 7.48000e+03 +5031 7.16800e+03 7.48000e+03 +5032 7.31200e+03 7.48000e+03 +5033 7.60000e+03 7.48000e+03 +5034 7.76000e+03 7.48000e+03 +5035 7.82400e+03 7.48000e+03 +5036 7.88800e+03 7.48000e+03 +5037 8.04800e+03 7.48000e+03 +5038 8.17600e+03 7.48000e+03 +5039 8.27200e+03 7.48000e+03 +5040 8.41600e+03 7.48000e+03 +5041 8.65600e+03 7.48000e+03 +5042 8.84800e+03 7.48000e+03 +5043 9.10400e+03 7.48000e+03 +5044 9.23200e+03 7.48000e+03 +5045 9.61600e+03 7.48000e+03 +5046 9.68000e+03 7.48000e+03 +5047 9.76000e+03 7.48000e+03 +5048 1.00160e+04 7.48000e+03 +5049 1.01280e+04 7.48000e+03 +5050 1.02240e+04 7.62300e+03 +5051 1.01600e+04 2.31000e+02 +5052 1.01600e+04 1.01200e+03 +5053 1.01600e+04 1.76000e+03 +5054 1.02240e+04 5.14800e+03 +5055 1.02880e+04 5.14800e+03 +5056 1.03840e+04 5.14800e+03 +5057 1.05120e+04 5.14800e+03 +5058 1.06080e+04 5.14800e+03 +5059 1.07040e+04 5.14800e+03 +5060 1.08000e+04 5.14800e+03 +5061 1.09280e+04 5.14800e+03 +5062 1.10560e+04 5.14800e+03 +5063 1.11200e+04 5.14800e+03 +5064 1.12160e+04 5.14800e+03 +5065 1.13440e+04 5.14800e+03 +5066 1.14880e+04 5.14800e+03 +5067 1.16800e+04 5.14800e+03 +5068 1.17600e+04 5.14800e+03 +5069 1.19040e+04 5.14800e+03 +5070 1.20480e+04 5.14800e+03 +5071 1.21760e+04 5.14800e+03 +5072 1.23360e+04 5.14800e+03 +5073 1.24320e+04 5.14800e+03 +5074 1.25280e+04 5.14800e+03 +5075 1.26880e+04 5.14800e+03 +5076 1.28000e+04 5.14800e+03 +5077 1.29120e+04 5.14800e+03 +5078 1.31150e+04 5.14800e+03 +5079 1.31360e+04 6.18200e+03 +5080 1.31360e+04 7.28200e+03 +5081 1.31360e+04 8.53600e+03 +5082 1.31360e+04 9.17400e+03 +5083 1.31360e+04 1.14290e+04 +5084 1.33280e+04 4.48800e+03 +5085 1.34560e+04 4.48800e+03 +5086 1.35200e+04 4.48800e+03 +5087 1.36160e+04 4.48800e+03 +5088 1.38720e+04 4.48800e+03 +5089 1.40800e+04 4.48800e+03 +5090 1.42240e+04 4.48800e+03 +5091 1.44000e+04 4.48800e+03 +5092 1.45120e+04 4.48800e+03 +5093 1.47360e+04 4.48800e+03 +5094 1.48110e+04 4.48800e+03 +5095 1.31360e+04 4.84000e+03 +5096 1.48320e+04 2.53000e+03 +5097 1.48320e+04 4.38900e+03 +5098 6.00000e+03 3.19000e+02 +5099 6.00000e+03 2.02400e+03 +5100 6.00000e+03 4.04800e+03 +5101 6.00000e+03 5.32400e+03 +5102 6.00000e+03 8.23900e+03 +5103 6.06400e+03 8.45900e+03 +5104 6.06400e+03 1.08020e+04 +5105 6.06400e+03 1.14950e+04 +5106 1.71680e+04 1.05600e+04 +5107 1.71680e+04 1.15280e+04 +5108 1.72320e+04 1.78200e+03 +5109 1.72320e+04 4.09200e+03 +5110 1.72320e+04 6.68800e+03 +5111 1.72320e+04 7.72200e+03 +5112 4.68800e+03 2.50800e+03 +5113 4.68800e+03 5.32400e+03 +5114 4.68800e+03 7.71100e+03 +5115 4.75200e+03 8.86600e+03 +5116 4.75200e+03 1.14950e+04 +5117 1.72320e+04 1.05600e+04 +5118 1.72320e+04 1.15280e+04 +5119 1.72640e+04 8.84400e+03 +5120 1.72960e+04 1.78200e+03 +5121 1.72960e+04 4.09200e+03 +5122 1.72960e+04 6.68800e+03 +5123 1.72960e+04 7.72200e+03 +5124 1.72960e+04 8.59100e+03 +5125 1.04160e+04 2.31000e+02 +5126 1.04160e+04 1.01200e+03 +5127 1.04160e+04 1.76000e+03 +5128 1.04160e+04 7.39200e+03 +5129 3.63200e+03 3.11300e+03 +5130 3.63200e+03 7.13900e+03 +5131 3.69600e+03 7.48000e+03 +5132 3.80800e+03 7.48000e+03 +5133 3.88800e+03 7.48000e+03 +5134 3.95200e+03 7.48000e+03 +5135 4.09600e+03 7.48000e+03 +5136 4.17600e+03 7.48000e+03 +5137 4.25600e+03 7.48000e+03 +5138 4.33600e+03 7.48000e+03 +5139 4.43200e+03 7.48000e+03 +5140 4.49600e+03 7.48000e+03 +5141 4.63500e+03 7.48000e+03 +5142 4.65600e+03 7.68900e+03 +5143 4.65600e+03 8.86600e+03 +5144 4.65600e+03 1.14950e+04 +5145 1.05760e+04 2.31000e+02 +5146 1.05760e+04 1.02300e+03 +5147 1.06400e+04 1.23200e+03 +5148 1.07040e+04 1.23200e+03 +5149 1.08000e+04 1.23200e+03 +5150 1.09280e+04 1.23200e+03 +5151 1.10560e+04 1.23200e+03 +5152 1.11200e+04 1.23200e+03 +5153 1.12160e+04 1.23200e+03 +5154 1.13440e+04 1.23200e+03 +5155 1.14880e+04 1.23200e+03 +5156 1.16960e+04 1.23200e+03 +5157 1.17600e+04 1.23200e+03 +5158 1.19040e+04 1.23200e+03 +5159 1.20480e+04 1.23200e+03 +5160 1.21760e+04 1.23200e+03 +5161 1.23360e+04 1.23200e+03 +5162 1.24320e+04 1.23200e+03 +5163 1.25280e+04 1.23200e+03 +5164 1.26880e+04 1.23200e+03 +5165 1.28160e+04 1.23200e+03 +5166 1.29440e+04 1.23200e+03 +5167 1.31200e+04 1.23200e+03 +5168 1.32000e+04 1.48500e+03 +5169 1.32000e+04 2.31000e+03 +5170 1.32000e+04 3.12400e+03 +5171 1.32000e+04 3.93800e+03 +5172 1.32000e+04 4.92800e+03 +5173 1.32000e+04 7.28200e+03 +5174 1.32000e+04 8.53600e+03 +5175 1.32000e+04 9.17400e+03 +5176 1.32000e+04 1.14290e+04 +5177 1.33440e+04 1.23200e+03 +5178 1.34880e+04 1.23200e+03 +5179 1.36320e+04 1.23200e+03 +5180 1.38720e+04 1.23200e+03 +5181 1.40960e+04 1.23200e+03 +5182 1.42240e+04 1.23200e+03 +5183 1.44000e+04 1.23200e+03 +5184 1.45120e+04 1.23200e+03 +5185 1.47360e+04 1.23200e+03 +5186 1.48000e+04 1.23200e+03 +5187 1.49120e+04 1.23200e+03 +5188 1.51200e+04 1.23200e+03 +5189 1.53280e+04 1.23200e+03 +5190 1.54080e+04 1.23200e+03 +5191 1.54720e+04 1.23200e+03 +5192 1.56000e+04 1.23200e+03 +5193 1.21440e+04 1.11650e+04 +5194 1.22080e+04 9.50400e+03 +5195 1.23840e+04 9.50400e+03 +5196 1.25280e+04 9.50400e+03 +5197 1.26560e+04 9.50400e+03 +5198 1.28320e+04 9.50400e+03 +5199 1.29440e+04 9.50400e+03 +5200 1.30880e+04 9.50400e+03 +5201 1.32320e+04 9.50400e+03 +5202 1.33920e+04 9.50400e+03 +5203 1.35360e+04 9.50400e+03 +5204 1.36320e+04 9.50400e+03 +5205 1.37440e+04 9.50400e+03 +5206 1.39680e+04 9.50400e+03 +5207 1.41920e+04 9.50400e+03 +5208 1.42720e+04 9.50400e+03 +5209 1.43840e+04 9.50400e+03 +5210 1.44480e+04 9.50400e+03 +5211 1.47040e+04 9.50400e+03 +5212 1.47840e+04 9.50400e+03 +5213 1.51200e+04 9.50400e+03 +5214 1.53920e+04 9.50400e+03 +5215 1.55200e+04 9.50400e+03 +5216 1.57120e+04 9.50400e+03 +5217 1.57920e+04 9.50400e+03 +5218 1.58560e+04 9.50400e+03 +5219 1.59840e+04 9.50400e+03 +5220 1.60800e+04 9.50400e+03 +5221 1.62080e+04 9.50400e+03 +5222 1.64320e+04 9.50400e+03 +5223 1.64960e+04 9.50400e+03 +5224 1.65920e+04 9.50400e+03 +5225 1.66880e+04 9.50400e+03 +5226 1.67840e+04 9.50400e+03 +5227 1.69120e+04 9.50400e+03 +5228 1.70400e+04 9.50400e+03 +5229 1.71360e+04 9.50400e+03 +5230 1.72800e+04 9.50400e+03 +5231 1.73600e+04 1.78200e+03 +5232 1.73600e+04 4.09200e+03 +5233 1.73600e+04 6.68800e+03 +5234 1.73600e+04 7.72200e+03 +5235 1.73600e+04 8.58000e+03 +5236 1.09920e+04 2.31000e+02 +5237 1.09920e+04 9.02000e+02 +5238 1.09920e+04 1.76000e+03 +5239 1.09920e+04 4.48800e+03 +5240 1.09920e+04 7.39200e+03 +5241 1.10280e+04 1.02520e+04 +5242 1.12160e+04 1.02520e+04 +5243 1.13120e+04 1.02520e+04 +5244 1.14400e+04 1.02520e+04 +5245 1.15200e+04 1.02520e+04 +5246 1.16000e+04 1.02520e+04 +5247 1.17120e+04 1.02520e+04 +5248 1.17920e+04 1.02520e+04 +5249 1.19840e+04 1.02520e+04 +5250 1.20800e+04 1.02520e+04 +5251 1.22080e+04 1.02520e+04 +5252 1.23840e+04 1.02520e+04 +5253 1.25280e+04 1.02520e+04 +5254 1.26560e+04 1.02520e+04 +5255 1.28160e+04 1.02520e+04 +5256 1.29440e+04 1.02520e+04 +5257 1.30880e+04 1.02520e+04 +5258 1.32320e+04 1.02520e+04 +5259 1.34030e+04 1.02520e+04 +5260 1.34240e+04 1.14290e+04 +5261 1.35360e+04 1.02520e+04 +5262 1.36960e+04 1.02520e+04 +5263 1.39680e+04 1.02520e+04 +5264 1.41920e+04 1.02520e+04 +5265 1.42720e+04 1.02520e+04 +5266 1.43840e+04 1.02520e+04 +5267 1.44480e+04 1.02520e+04 +5268 1.47040e+04 1.02520e+04 +5269 1.47840e+04 1.02520e+04 +5270 1.51200e+04 1.02520e+04 +5271 1.53920e+04 1.02520e+04 +5272 1.55200e+04 1.02520e+04 +5273 1.57120e+04 1.02520e+04 +5274 1.57920e+04 1.02520e+04 +5275 1.58560e+04 1.02520e+04 +5276 1.60480e+04 1.02520e+04 +5277 1.62190e+04 1.02520e+04 +5278 1.62400e+04 2.22200e+03 +5279 1.62400e+04 3.74000e+03 +5280 1.62400e+04 5.36800e+03 +5281 1.62400e+04 6.79800e+03 +5282 1.62400e+04 7.76600e+03 +5283 1.04480e+04 2.31000e+02 +5284 1.04480e+04 1.01200e+03 +5285 1.04480e+04 1.76000e+03 +5286 1.04480e+04 7.39200e+03 +5287 5.71200e+03 8.45900e+03 +5288 5.71200e+03 1.08020e+04 +5289 5.72800e+03 8.31600e+03 +5290 5.74400e+03 2.02400e+03 +5291 5.74400e+03 4.04800e+03 +5292 5.74400e+03 8.23900e+03 +5293 1.74240e+04 1.78200e+03 +5294 1.74240e+04 4.09200e+03 +5295 1.74240e+04 6.69900e+03 +5296 1.75040e+04 7.12800e+03 +5297 1.77120e+04 7.12800e+03 +5298 1.78080e+04 7.76600e+03 +5299 1.78080e+04 8.73400e+03 +5300 1.78080e+04 9.60300e+03 +5301 1.78080e+04 1.06700e+04 +5302 9.52000e+03 7.12800e+03 +5303 9.53600e+03 3.60800e+03 +5304 9.55200e+03 2.31000e+02 +5305 9.55200e+03 1.01200e+03 +5306 9.55200e+03 1.76000e+03 +5307 1.73280e+04 1.78200e+03 +5308 1.73280e+04 4.09200e+03 +5309 1.73280e+04 6.68800e+03 +5310 1.73280e+04 7.72200e+03 +5311 1.73280e+04 8.58000e+03 +5312 1.73280e+04 1.06700e+04 +5313 1.73280e+04 1.15280e+04 +5314 1.90880e+04 1.15280e+04 +5315 1.14080e+04 2.31000e+02 +5316 1.14080e+04 9.02000e+02 +5317 1.14880e+04 1.98000e+03 +5318 1.16960e+04 1.98000e+03 +5319 1.17600e+04 1.98000e+03 +5320 1.19040e+04 1.98000e+03 +5321 1.20480e+04 1.98000e+03 +5322 1.21760e+04 1.98000e+03 +5323 1.23360e+04 1.98000e+03 +5324 1.24320e+04 1.98000e+03 +5325 1.25280e+04 1.98000e+03 +5326 1.26880e+04 1.98000e+03 +5327 1.28160e+04 1.98000e+03 +5328 1.29440e+04 1.98000e+03 +5329 1.31200e+04 1.98000e+03 +5330 1.33440e+04 1.98000e+03 +5331 1.34670e+04 1.98000e+03 +5332 1.34880e+04 2.67300e+03 +5333 1.34880e+04 3.93800e+03 +5334 1.34880e+04 4.92800e+03 +5335 1.34880e+04 7.28200e+03 +5336 1.34880e+04 8.53600e+03 +5337 1.34880e+04 9.17400e+03 +5338 1.34880e+04 1.14290e+04 +5339 1.35090e+04 1.45200e+03 +5340 1.36320e+04 1.45200e+03 +5341 1.38720e+04 1.45200e+03 +5342 1.40960e+04 1.45200e+03 +5343 1.42240e+04 1.45200e+03 +5344 1.44000e+04 1.45200e+03 +5345 1.45120e+04 1.45200e+03 +5346 1.47360e+04 1.45200e+03 +5347 1.48000e+04 1.45200e+03 +5348 1.49120e+04 1.45200e+03 +5349 1.51200e+04 1.45200e+03 +5350 1.53280e+04 1.45200e+03 +5351 1.54080e+04 1.45200e+03 +5352 1.54720e+04 1.45200e+03 +5353 1.56000e+04 1.45200e+03 +5354 1.57120e+04 1.45200e+03 +5355 1.57920e+04 1.45200e+03 +5356 1.58880e+04 1.45200e+03 +5357 1.59840e+04 1.45200e+03 +5358 1.61280e+04 1.45200e+03 +5359 1.62720e+04 1.45200e+03 +5360 1.64000e+04 1.45200e+03 +5361 1.65440e+04 1.45200e+03 +5362 1.66560e+04 1.45200e+03 +5363 1.67520e+04 1.45200e+03 +5364 1.69120e+04 1.45200e+03 +5365 1.70400e+04 1.45200e+03 +5366 1.34880e+04 1.73800e+03 +5367 1.71040e+04 1.13300e+03 +5368 1.11200e+04 1.13850e+04 +5369 1.11840e+04 2.31000e+02 +5370 1.11840e+04 9.02000e+02 +5371 1.11840e+04 1.76000e+03 +5372 1.11840e+04 4.48800e+03 +5373 1.11840e+04 7.39200e+03 +5374 5.68000e+03 8.38200e+03 +5375 5.68000e+03 1.08020e+04 +5376 5.69600e+03 7.70000e+03 +5377 5.71200e+03 2.02400e+03 +5378 5.71200e+03 4.04800e+03 +5379 4.30400e+03 2.36500e+03 +5380 4.30400e+03 5.43400e+03 +5381 4.30400e+03 6.90800e+03 +5382 4.30400e+03 7.81000e+03 +5383 2.12800e+03 1.00320e+04 +5384 2.14400e+03 8.93200e+03 +5385 2.16000e+03 3.11300e+03 +5386 2.16000e+03 6.64400e+03 +5387 2.16000e+03 8.78900e+03 +5388 5.42400e+03 7.18300e+03 +5389 5.42400e+03 1.06920e+04 +5390 5.44000e+03 6.99600e+03 +5391 5.45600e+03 2.17800e+03 +5392 5.45600e+03 4.04800e+03 +5393 5.45600e+03 6.40200e+03 +5394 1.11520e+04 2.31000e+02 +5395 1.11520e+04 9.02000e+02 +5396 1.11520e+04 1.76000e+03 +5397 1.11520e+04 4.48800e+03 +5398 1.11520e+04 7.39200e+03 +5399 1.11520e+04 1.13850e+04 +5400 1.56320e+04 2.53000e+03 +5401 1.56320e+04 5.36800e+03 +5402 1.56320e+04 6.79800e+03 +5403 1.56320e+04 8.42600e+03 +5404 1.56320e+04 9.87800e+03 +5405 1.56320e+04 1.06260e+04 +5406 1.56320e+04 1.14290e+04 +5407 1.61760e+04 2.22200e+03 +5408 1.61760e+04 3.74000e+03 +5409 1.61760e+04 5.36800e+03 +5410 1.61760e+04 6.79800e+03 +5411 1.61760e+04 7.76600e+03 +5412 1.61760e+04 8.73400e+03 +5413 1.61760e+04 1.06260e+04 +5414 1.61760e+04 1.14290e+04 +5415 5.39200e+03 7.19400e+03 +5416 5.39200e+03 1.06920e+04 +5417 5.40800e+03 6.55600e+03 +5418 5.42400e+03 2.17800e+03 +5419 5.42400e+03 4.04800e+03 +5420 5.42400e+03 6.41300e+03 +5421 4.46400e+03 2.57400e+03 +5422 4.46400e+03 5.43400e+03 +5423 4.46400e+03 7.92000e+03 +5424 4.52800e+03 1.06920e+04 +5425 4.62400e+03 1.06920e+04 +5426 4.68800e+03 1.06920e+04 +5427 4.78400e+03 1.06920e+04 +5428 4.94400e+03 1.06920e+04 +5429 5.07200e+03 1.07910e+04 +5430 5.07200e+03 1.14950e+04 +5431 1.83520e+04 3.61900e+03 +5432 1.83520e+04 7.88700e+03 +5433 1.83720e+04 8.18400e+03 +5434 1.84640e+04 8.18400e+03 +5435 1.86670e+04 8.18400e+03 +5436 1.87040e+04 8.40400e+03 +5437 1.87040e+04 1.06700e+04 +5438 1.87040e+04 1.15280e+04 +5439 4.52800e+03 2.57400e+03 +5440 4.52800e+03 5.43400e+03 +5441 4.52800e+03 7.93100e+03 +5442 4.62400e+03 8.14000e+03 +5443 4.68800e+03 8.14000e+03 +5444 4.78400e+03 8.14000e+03 +5445 4.94400e+03 8.14000e+03 +5446 5.13600e+03 8.14000e+03 +5447 5.48800e+03 8.37100e+03 +5448 5.48800e+03 1.06920e+04 +5449 1.68000e+03 1.00320e+04 +5450 1.70000e+03 8.93200e+03 +5451 1.77600e+03 8.93200e+03 +5452 1.88300e+03 8.93200e+03 +5453 1.90400e+03 3.11300e+03 +5454 1.90400e+03 6.75400e+03 +5455 1.90400e+03 8.05200e+03 +5456 1.90400e+03 8.78900e+03 +5457 1.91200e+04 1.15280e+04 +5458 1.91220e+04 8.03000e+03 +5459 1.82560e+04 3.45400e+03 +5460 1.82560e+04 6.95200e+03 +5461 1.82720e+04 7.12800e+03 +5462 1.82880e+04 7.87600e+03 +5463 1.82880e+04 9.42700e+03 +5464 1.82880e+04 1.06700e+04 +5465 4.75200e+03 2.61800e+03 +5466 4.75200e+03 5.22500e+03 +5467 4.77200e+03 5.36800e+03 +5468 4.84800e+03 5.36800e+03 +5469 4.91200e+03 5.36800e+03 +5470 5.04000e+03 5.36800e+03 +5471 5.29600e+03 5.36800e+03 +5472 5.66400e+03 5.36800e+03 +5473 5.90400e+03 5.46700e+03 +5474 5.90400e+03 8.38200e+03 +5475 5.90400e+03 1.08020e+04 +5476 1.26400e+03 6.78700e+03 +5477 1.26400e+03 7.83200e+03 +5478 1.26400e+03 9.65800e+03 +5479 1.28400e+03 6.55600e+03 +5480 1.45600e+03 6.55600e+03 +5481 1.55200e+03 6.55600e+03 +5482 1.64800e+03 6.55600e+03 +5483 1.76000e+03 6.55600e+03 +5484 1.84000e+03 3.11300e+03 +5485 1.78720e+04 9.60300e+03 +5486 1.78720e+04 1.06700e+04 +5487 1.79520e+04 8.84400e+03 +5488 1.82240e+04 3.61900e+03 +5489 1.82240e+04 7.76600e+03 +5490 4.81600e+03 2.61800e+03 +5491 4.81600e+03 6.40200e+03 +5492 4.81600e+03 7.70000e+03 +5493 4.81600e+03 8.72300e+03 +5494 4.94400e+03 8.84400e+03 +5495 5.13600e+03 8.84400e+03 +5496 5.55200e+03 8.84400e+03 +5497 5.63200e+03 8.84400e+03 +5498 5.79200e+03 8.84400e+03 +5499 5.96800e+03 8.84400e+03 +5500 6.03200e+03 8.84400e+03 +5501 6.11200e+03 8.84400e+03 +5502 6.19200e+03 8.84400e+03 +5503 6.32000e+03 1.14950e+04 +5504 8.48000e+02 9.92200e+03 +5505 9.12000e+02 8.18400e+03 +5506 9.76000e+02 8.18400e+03 +5507 1.10400e+03 8.18400e+03 +5508 1.23200e+03 8.18400e+03 +5509 1.32800e+03 8.18400e+03 +5510 1.53600e+03 8.18400e+03 +5511 1.61600e+03 3.11300e+03 +5512 1.61600e+03 7.01800e+03 +5513 1.61600e+03 8.06300e+03 +5514 1.78400e+04 8.72300e+03 +5515 1.78400e+04 9.60300e+03 +5516 1.78400e+04 1.06700e+04 +5517 1.78600e+04 8.62400e+03 +5518 1.79360e+04 2.31000e+02 +5519 1.79360e+04 1.62800e+03 +5520 1.79360e+04 4.79600e+03 +5521 1.79360e+04 7.76600e+03 +5522 1.80000e+04 2.31000e+02 +5523 1.80000e+04 1.59500e+03 +5524 1.80160e+04 2.37600e+03 +5525 1.80320e+04 4.52100e+03 +5526 1.80320e+04 7.76600e+03 +5527 1.80320e+04 1.06700e+04 +5528 1.74240e+04 8.61300e+03 +5529 1.74240e+04 9.60300e+03 +5530 1.74240e+04 1.06700e+04 +5531 1.74240e+04 1.15280e+04 +5532 1.74880e+04 8.40400e+03 +5533 1.75520e+04 8.40400e+03 +5534 1.77120e+04 8.40400e+03 +5535 1.78560e+04 8.40400e+03 +5536 1.79680e+04 8.40400e+03 +5537 1.81920e+04 8.40400e+03 +5538 1.83680e+04 8.40400e+03 +5539 1.84640e+04 8.40400e+03 +5540 1.85440e+04 4.03700e+03 +5541 4.32000e+02 9.70200e+03 +5542 4.68000e+02 7.26000e+03 +5543 5.60000e+02 7.26000e+03 +5544 7.36000e+02 7.26000e+03 +5545 8.48000e+02 7.26000e+03 +5546 9.12000e+02 7.26000e+03 +5547 9.76000e+02 7.26000e+03 +5548 1.07200e+03 7.26000e+03 +5549 1.15200e+03 7.26000e+03 +5550 1.31200e+03 7.26000e+03 +5551 1.52000e+03 3.11300e+03 +5552 1.52000e+03 7.02900e+03 +5553 1.12480e+04 2.31000e+02 +5554 1.12480e+04 9.02000e+02 +5555 1.13440e+04 1.76000e+03 +5556 1.14880e+04 1.76000e+03 +5557 1.16960e+04 1.76000e+03 +5558 1.17600e+04 1.76000e+03 +5559 1.19040e+04 1.76000e+03 +5560 1.20480e+04 1.76000e+03 +5561 1.21760e+04 1.76000e+03 +5562 1.23040e+04 4.48800e+03 +5563 1.23040e+04 5.96200e+03 +5564 1.23040e+04 7.39200e+03 +5565 1.23040e+04 1.11650e+04 +5566 1.81600e+04 3.61900e+03 +5567 1.81600e+04 7.76600e+03 +5568 1.81600e+04 1.06700e+04 +5569 1.80960e+04 2.31000e+02 +5570 1.80960e+04 3.74000e+03 +5571 1.80960e+04 7.76600e+03 +5572 1.80960e+04 1.06700e+04 +5573 1.10880e+04 2.31000e+02 +5574 1.10880e+04 9.02000e+02 +5575 1.10880e+04 1.76000e+03 +5576 1.10880e+04 4.48800e+03 +5577 1.11080e+04 5.36800e+03 +5578 1.12160e+04 5.36800e+03 +5579 1.13440e+04 5.36800e+03 +5580 1.14880e+04 5.36800e+03 +5581 1.16800e+04 5.36800e+03 +5582 1.17600e+04 5.36800e+03 +5583 1.19040e+04 5.36800e+03 +5584 1.20480e+04 5.36800e+03 +5585 1.21760e+04 5.36800e+03 +5586 1.23360e+04 5.36800e+03 +5587 1.24320e+04 5.36800e+03 +5588 1.25280e+04 5.36800e+03 +5589 1.26880e+04 5.36800e+03 +5590 1.28000e+04 5.36800e+03 +5591 1.29120e+04 5.36800e+03 +5592 1.31040e+04 5.36800e+03 +5593 1.33280e+04 5.36800e+03 +5594 1.34560e+04 5.36800e+03 +5595 1.35200e+04 5.36800e+03 +5596 1.35840e+04 5.46700e+03 +5597 1.35840e+04 7.28200e+03 +5598 1.35840e+04 8.86600e+03 +5599 1.35840e+04 1.15390e+04 +5600 1.06720e+04 2.31000e+02 +5601 1.06720e+04 9.02000e+02 +5602 1.06720e+04 1.76000e+03 +5603 1.08000e+04 5.58800e+03 +5604 1.09280e+04 5.58800e+03 +5605 1.10880e+04 5.58800e+03 +5606 1.12160e+04 5.58800e+03 +5607 1.13440e+04 5.58800e+03 +5608 1.14880e+04 5.58800e+03 +5609 1.16800e+04 5.58800e+03 +5610 1.17600e+04 5.58800e+03 +5611 1.19040e+04 5.58800e+03 +5612 1.20480e+04 5.58800e+03 +5613 1.21760e+04 5.58800e+03 +5614 1.23360e+04 5.58800e+03 +5615 1.24320e+04 5.58800e+03 +5616 1.25280e+04 5.58800e+03 +5617 1.26880e+04 5.58800e+03 +5618 1.28000e+04 5.58800e+03 +5619 1.29120e+04 5.58800e+03 +5620 1.31040e+04 5.58800e+03 +5621 1.33280e+04 6.40200e+03 +5622 1.33280e+04 7.39200e+03 +5623 1.33280e+04 8.53600e+03 +5624 1.33280e+04 9.17400e+03 +5625 1.33280e+04 1.14290e+04 +5626 3.79200e+03 2.90400e+03 +5627 3.79200e+03 5.85200e+03 +5628 3.81300e+03 6.02800e+03 +5629 3.88800e+03 6.02800e+03 +5630 3.95200e+03 6.02800e+03 +5631 4.09600e+03 6.02800e+03 +5632 4.17600e+03 6.02800e+03 +5633 4.25600e+03 6.02800e+03 +5634 4.43200e+03 6.02800e+03 +5635 4.49600e+03 6.02800e+03 +5636 4.56000e+03 6.02800e+03 +5637 4.64000e+03 6.02800e+03 +5638 4.75200e+03 6.02800e+03 +5639 4.84800e+03 6.02800e+03 +5640 4.91200e+03 6.02800e+03 +5641 5.04000e+03 6.02800e+03 +5642 5.32800e+03 6.02800e+03 +5643 5.66400e+03 6.02800e+03 +5644 6.09600e+03 6.02800e+03 +5645 6.19200e+03 6.02800e+03 +5646 6.25600e+03 6.02800e+03 +5647 6.41600e+03 6.02800e+03 +5648 6.55500e+03 6.02800e+03 +5649 6.57600e+03 8.64600e+03 +5650 6.57600e+03 9.43800e+03 +5651 6.57600e+03 1.14950e+04 +5652 4.04800e+03 2.95900e+03 +5653 4.04800e+03 6.90800e+03 +5654 4.12800e+03 1.00320e+04 +5655 4.27200e+03 1.00320e+04 +5656 4.40000e+03 1.00320e+04 +5657 4.52800e+03 1.00320e+04 +5658 4.62400e+03 1.00320e+04 +5659 4.68800e+03 1.00320e+04 +5660 4.78400e+03 1.00320e+04 +5661 4.94400e+03 1.00320e+04 +5662 5.00800e+03 1.00320e+04 +5663 5.13600e+03 1.00320e+04 +5664 5.26400e+03 1.00320e+04 +5665 5.55200e+03 1.00320e+04 +5666 5.63200e+03 1.00320e+04 +5667 5.80800e+03 1.00320e+04 +5668 5.96800e+03 1.00320e+04 +5669 6.03200e+03 1.00320e+04 +5670 6.11200e+03 1.00320e+04 +5671 6.19200e+03 1.00320e+04 +5672 6.35200e+03 1.00320e+04 +5673 6.44800e+03 1.00320e+04 +5674 6.67200e+03 1.00320e+04 +5675 6.84800e+03 1.00320e+04 +5676 6.92800e+03 1.08020e+04 +5677 4.40000e+03 2.36500e+03 +5678 4.40000e+03 5.43400e+03 +5679 4.40000e+03 7.81000e+03 +5680 4.52800e+03 9.59200e+03 +5681 4.62400e+03 9.59200e+03 +5682 4.68800e+03 9.59200e+03 +5683 4.78400e+03 9.59200e+03 +5684 4.96000e+03 9.59200e+03 +5685 5.13600e+03 9.59200e+03 +5686 5.55200e+03 9.59200e+03 +5687 5.63200e+03 9.59200e+03 +5688 5.80800e+03 9.59200e+03 +5689 5.96800e+03 9.59200e+03 +5690 6.03200e+03 9.59200e+03 +5691 6.11200e+03 9.59200e+03 +5692 6.19200e+03 9.59200e+03 +5693 6.35200e+03 9.59200e+03 +5694 6.41600e+03 1.14950e+04 +5695 1.02560e+04 2.31000e+02 +5696 1.02560e+04 1.01200e+03 +5697 1.02560e+04 1.76000e+03 +5698 1.02560e+04 7.51300e+03 +5699 1.03840e+04 7.78800e+03 +5700 1.04960e+04 7.78800e+03 +5701 1.06560e+04 7.78800e+03 +5702 1.08160e+04 7.78800e+03 +5703 1.09280e+04 7.78800e+03 +5704 1.10400e+04 7.78800e+03 +5705 1.11200e+04 7.78800e+03 +5706 1.12160e+04 7.78800e+03 +5707 1.13280e+04 7.78800e+03 +5708 1.15040e+04 7.78800e+03 +5709 1.15680e+04 7.78800e+03 +5710 1.16320e+04 7.78800e+03 +5711 1.16960e+04 7.78800e+03 +5712 1.17600e+04 7.78800e+03 +5713 1.18240e+04 7.78800e+03 +5714 1.19680e+04 7.78800e+03 +5715 1.21920e+04 7.78800e+03 +5716 1.22720e+04 7.78800e+03 +5717 1.23840e+04 7.78800e+03 +5718 1.25280e+04 7.78800e+03 +5719 1.26560e+04 7.78800e+03 +5720 1.28000e+04 7.78800e+03 +5721 1.28800e+04 7.78800e+03 +5722 1.29440e+04 7.78800e+03 +5723 1.30880e+04 7.78800e+03 +5724 1.32750e+04 7.78800e+03 +5725 1.32960e+04 8.53600e+03 +5726 1.32960e+04 9.17400e+03 +5727 1.32960e+04 1.14290e+04 +5728 9.84000e+03 2.31000e+02 +5729 9.84000e+03 1.01200e+03 +5730 9.84000e+03 1.76000e+03 +5731 9.86000e+03 3.16800e+03 +5732 1.00000e+04 3.16800e+03 +5733 1.00960e+04 3.16800e+03 +5734 1.02240e+04 3.16800e+03 +5735 1.02880e+04 3.16800e+03 +5736 1.03840e+04 3.16800e+03 +5737 1.05120e+04 3.16800e+03 +5738 1.05760e+04 3.16800e+03 +5739 1.06400e+04 3.16800e+03 +5740 1.07040e+04 3.16800e+03 +5741 1.08000e+04 3.16800e+03 +5742 1.09280e+04 3.16800e+03 +5743 1.10560e+04 3.16800e+03 +5744 1.11200e+04 3.16800e+03 +5745 1.12160e+04 3.16800e+03 +5746 1.13440e+04 3.16800e+03 +5747 1.14880e+04 3.16800e+03 +5748 1.16960e+04 3.16800e+03 +5749 1.17600e+04 3.16800e+03 +5750 1.19040e+04 3.16800e+03 +5751 1.20480e+04 3.16800e+03 +5752 1.21760e+04 3.16800e+03 +5753 1.23360e+04 3.16800e+03 +5754 1.24320e+04 3.16800e+03 +5755 1.25440e+04 3.16800e+03 +5756 1.26880e+04 3.16800e+03 +5757 1.27520e+04 3.16800e+03 +5758 1.28160e+04 3.16800e+03 +5759 1.29280e+04 3.16800e+03 +5760 1.30400e+04 3.26700e+03 +5761 1.30400e+04 3.93800e+03 +5762 1.30400e+04 4.70800e+03 +5763 1.30400e+04 6.07200e+03 +5764 1.30400e+04 7.28200e+03 +5765 1.30400e+04 8.53600e+03 +5766 1.30400e+04 9.17400e+03 +5767 1.30400e+04 1.14290e+04 +5768 4.08000e+03 2.31000e+03 +5769 4.08000e+03 4.66400e+03 +5770 4.10100e+03 4.84000e+03 +5771 4.17600e+03 4.84000e+03 +5772 4.25600e+03 4.84000e+03 +5773 4.43200e+03 4.84000e+03 +5774 4.49600e+03 4.84000e+03 +5775 4.56000e+03 4.84000e+03 +5776 4.65600e+03 4.84000e+03 +5777 4.72000e+03 4.84000e+03 +5778 4.78400e+03 4.84000e+03 +5779 4.84800e+03 4.84000e+03 +5780 4.91200e+03 4.84000e+03 +5781 5.04000e+03 4.84000e+03 +5782 5.29600e+03 4.84000e+03 +5783 5.66400e+03 4.84000e+03 +5784 5.87200e+03 4.84000e+03 +5785 6.12800e+03 4.84000e+03 +5786 6.19200e+03 4.84000e+03 +5787 6.25600e+03 4.84000e+03 +5788 6.41600e+03 4.84000e+03 +5789 6.56000e+03 4.84000e+03 +5790 6.67200e+03 4.84000e+03 +5791 6.78400e+03 4.84000e+03 +5792 6.89600e+03 4.84000e+03 +5793 7.00800e+03 4.84000e+03 +5794 7.08800e+03 4.84000e+03 +5795 7.18400e+03 4.84000e+03 +5796 7.28000e+03 4.98300e+03 +5797 7.28000e+03 7.12800e+03 +5798 7.28000e+03 8.75600e+03 +5799 7.28000e+03 1.08020e+04 +5800 4.33600e+03 2.36500e+03 +5801 4.33600e+03 5.43400e+03 +5802 4.43200e+03 6.77600e+03 +5803 4.49600e+03 6.77600e+03 +5804 4.64000e+03 6.77600e+03 +5805 4.76800e+03 6.77600e+03 +5806 4.84800e+03 6.77600e+03 +5807 4.91200e+03 6.77600e+03 +5808 5.04000e+03 6.77600e+03 +5809 5.42400e+03 6.77600e+03 +5810 5.64800e+03 6.77600e+03 +5811 5.93600e+03 6.77600e+03 +5812 6.09600e+03 6.77600e+03 +5813 6.19200e+03 6.77600e+03 +5814 6.41600e+03 6.77600e+03 +5815 6.54400e+03 6.77600e+03 +5816 6.67200e+03 6.77600e+03 +5817 6.76800e+03 6.77600e+03 +5818 6.86400e+03 6.77600e+03 +5819 6.99200e+03 6.77600e+03 +5820 7.08800e+03 6.77600e+03 +5821 7.18400e+03 6.77600e+03 +5822 7.32800e+03 6.77600e+03 +5823 7.61100e+03 6.77600e+03 +5824 7.63200e+03 6.89700e+03 +5825 7.63200e+03 8.75600e+03 +5826 1.80640e+04 2.31000e+02 +5827 1.80640e+04 3.74000e+03 +5828 1.80640e+04 7.76600e+03 +5829 1.80640e+04 1.06700e+04 +5830 6.96000e+03 6.38000e+02 +5831 6.96000e+03 1.51800e+03 +5832 6.96000e+03 2.57400e+03 +5833 6.96000e+03 4.04800e+03 +5834 6.99600e+03 5.58800e+03 +5835 7.08800e+03 5.58800e+03 +5836 7.18400e+03 5.58800e+03 +5837 7.32800e+03 5.58800e+03 +5838 7.58400e+03 5.58800e+03 +5839 7.66400e+03 5.58800e+03 +5840 7.76000e+03 5.58800e+03 +5841 7.82400e+03 5.58800e+03 +5842 7.88800e+03 5.58800e+03 +5843 7.95200e+03 5.58800e+03 +5844 8.04800e+03 5.58800e+03 +5845 8.17600e+03 5.58800e+03 +5846 8.33600e+03 5.58800e+03 +5847 8.43200e+03 5.58800e+03 +5848 8.49600e+03 5.58800e+03 +5849 8.75200e+03 5.58800e+03 +5850 8.84800e+03 5.58800e+03 +5851 8.99200e+03 5.58800e+03 +5852 9.44000e+03 5.58800e+03 +5853 9.55200e+03 5.58800e+03 +5854 9.68000e+03 5.58800e+03 +5855 9.82400e+03 5.58800e+03 +5856 1.00160e+04 5.58800e+03 +5857 1.01600e+04 5.58800e+03 +5858 1.02240e+04 5.58800e+03 +5859 1.02880e+04 7.39200e+03 +5860 9.20000e+03 8.80000e+02 +5861 9.20000e+03 1.76000e+03 +5862 9.20000e+03 2.94800e+03 +5863 9.44000e+03 5.80800e+03 +5864 9.55200e+03 5.80800e+03 +5865 9.68000e+03 5.80800e+03 +5866 9.81900e+03 5.80800e+03 +5867 1.32800e+03 9.91100e+03 +5868 1.58400e+03 9.15200e+03 +5869 1.71200e+03 9.15200e+03 +5870 1.77600e+03 9.15200e+03 +5871 1.90400e+03 9.15200e+03 +5872 2.06400e+03 9.15200e+03 +5873 2.24000e+03 9.15200e+03 +5874 2.46400e+03 9.15200e+03 +5875 2.73600e+03 9.15200e+03 +5876 2.96000e+03 9.15200e+03 +5877 3.02400e+03 9.15200e+03 +5878 3.16800e+03 9.15200e+03 +5879 3.31200e+03 9.15200e+03 +5880 3.50400e+03 9.15200e+03 +5881 3.56800e+03 3.11300e+03 +5882 3.56800e+03 7.12800e+03 +5883 3.56800e+03 9.05300e+03 +5884 9.42400e+03 3.52000e+02 +5885 9.44400e+03 5.72000e+02 +5886 9.58400e+03 5.72000e+02 +5887 9.68000e+03 5.72000e+02 +5888 9.80800e+03 5.72000e+02 +5889 9.87200e+03 5.72000e+02 +5890 1.00000e+04 5.72000e+02 +5891 1.00960e+04 5.72000e+02 +5892 1.02240e+04 5.72000e+02 +5893 1.02880e+04 5.72000e+02 +5894 1.03840e+04 5.72000e+02 +5895 1.05120e+04 5.72000e+02 +5896 1.06400e+04 5.72000e+02 +5897 1.07040e+04 5.72000e+02 +5898 1.08000e+04 5.72000e+02 +5899 1.09280e+04 5.72000e+02 +5900 1.10560e+04 5.72000e+02 +5901 1.11200e+04 5.72000e+02 +5902 1.12160e+04 5.72000e+02 +5903 1.13440e+04 5.72000e+02 +5904 1.14880e+04 5.72000e+02 +5905 1.16960e+04 5.72000e+02 +5906 1.17600e+04 5.72000e+02 +5907 1.19040e+04 5.72000e+02 +5908 1.20480e+04 5.72000e+02 +5909 1.21760e+04 5.72000e+02 +5910 1.23360e+04 5.72000e+02 +5911 1.24320e+04 5.72000e+02 +5912 1.25280e+04 5.72000e+02 +5913 1.26880e+04 5.72000e+02 +5914 1.28160e+04 5.72000e+02 +5915 1.29550e+04 5.72000e+02 +EOF diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/benchs/usa13509.tsp b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/benchs/usa13509.tsp new file mode 100644 index 000000000..a03eef901 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/benchs/usa13509.tsp @@ -0,0 +1,13519 @@ +NAME: usa13509 +TYPE: TSP +COMMENT: Cities with population at least 500 in the continental US. +COMMENT: Contributed by David Applegate and Andre Rohe, based on the +COMMENT: data set "US.lat-long" from the ftp site ftp.cs.toronto.edu. +COMMENT: The file US.lat-long.Z can be found in the directory /doc/geography. +DIMENSION: 13509 +EDGE_WEIGHT_TYPE: EUC_2D +NODE_COORD_SECTION +1 245552.778 817827.778 +2 247133.333 810905.556 +3 247205.556 810188.889 +4 249238.889 806280.556 +5 250111.111 805152.778 +6 254475.000 804794.444 +7 254683.333 804777.778 +8 254950.000 804294.444 +9 255622.222 803825.000 +10 255802.778 803469.444 +11 255972.222 803808.333 +12 256047.222 803538.889 +13 256147.222 803108.333 +14 256311.111 803691.667 +15 256788.889 803175.000 +16 256933.333 801630.556 +17 257072.222 802936.111 +18 257072.222 803258.333 +19 257211.111 802686.111 +20 257263.889 803555.556 +21 257544.444 803275.000 +22 257630.556 802963.889 +23 257738.889 801938.889 +24 257902.778 801302.778 +25 258100.000 803025.000 +26 258219.444 802897.222 +27 258402.778 803266.667 +28 258458.333 801541.667 +29 258550.000 801933.333 +30 258572.222 802783.333 +31 258627.778 801930.556 +32 258647.222 803247.222 +33 258702.778 802991.667 +34 258780.556 801258.333 +35 258822.222 801808.333 +36 258872.222 801313.889 +37 258897.222 801869.444 +38 258913.889 801272.222 +39 259013.889 974972.222 +40 259019.444 802505.556 +41 259305.556 803286.111 +42 259327.778 801627.778 +43 259402.778 802458.333 +44 259480.556 801508.333 +45 259502.778 801230.556 +46 259619.444 801769.444 +47 259647.222 801225.000 +48 259647.222 802416.667 +49 259722.222 817291.667 +50 259808.333 801486.111 +51 259869.444 802325.000 +52 259875.000 801750.000 +53 260027.778 802241.667 +54 260108.333 801497.222 +55 260519.444 801441.667 +56 260569.444 802719.444 +57 260644.444 802322.222 +58 260713.889 974761.111 +59 260730.556 972083.333 +60 260883.333 817263.889 +61 260919.444 979569.444 +62 261000.000 982627.778 +63 261005.556 972900.000 +64 261033.333 971644.444 +65 261219.444 801436.111 +66 261272.222 802333.333 +67 261322.222 976308.333 +68 261400.000 802136.111 +69 261416.667 817950.000 +70 261494.444 979133.333 +71 261586.111 978236.111 +72 261591.667 979905.556 +73 261600.000 801391.667 +74 261661.111 802086.111 +75 261700.000 980516.667 +76 261833.333 981227.778 +77 261902.778 976958.333 +78 261916.667 800966.667 +79 261944.444 981833.333 +80 262022.222 800941.667 +81 262030.556 982297.222 +82 262155.556 983250.000 +83 262188.889 817919.444 +84 262255.556 977577.778 +85 262350.000 975816.667 +86 262375.000 801250.000 +87 262441.667 802066.667 +88 262466.667 984811.111 +89 262483.333 977336.111 +90 262563.889 978247.222 +91 262613.889 818094.444 +92 262825.000 801072.222 +93 262869.444 983130.556 +94 262930.556 979927.778 +95 262936.111 800791.667 +96 262936.111 979602.778 +97 262983.333 979283.333 +98 263013.889 981630.556 +99 263180.556 801000.000 +100 263305.556 818269.444 +101 263394.444 817788.889 +102 263583.333 800833.333 +103 263727.778 979713.889 +104 263794.444 988200.000 +105 263991.667 800658.333 +106 264047.222 990155.556 +107 264119.444 977894.444 +108 264183.333 814175.000 +109 264422.222 980136.111 +110 264486.111 820225.000 +111 264516.667 819483.333 +112 264611.111 800730.556 +113 264669.444 818016.667 +114 265250.000 800666.667 +115 265266.667 800486.111 +116 265625.000 819497.222 +117 265661.111 800536.111 +118 265863.889 800522.222 +119 265886.111 800388.889 +120 266155.556 800572.222 +121 266233.333 801255.556 +122 266250.000 816250.000 +123 266402.778 818725.000 +124 266450.000 800761.111 +125 266636.111 807163.889 +126 266669.444 818802.778 +127 266744.444 818152.778 +128 266841.667 806677.778 +129 266908.333 801202.778 +130 267052.778 800366.667 +131 267088.889 817461.111 +132 267150.000 800536.111 +133 267372.222 809511.111 +134 267538.889 809338.889 +135 267600.000 800738.889 +136 267613.889 814386.111 +137 267750.000 800583.333 +138 267777.778 800358.333 +139 268000.000 800666.667 +140 268172.222 800822.222 +141 268197.222 806655.556 +142 268327.778 810933.333 +143 268416.667 810963.889 +144 268794.444 800536.111 +145 268833.333 822902.778 +146 269069.444 992711.111 +147 269097.222 820541.667 +148 269138.889 823272.222 +149 269294.444 820455.556 +150 269338.889 800944.444 +151 269466.667 820261.111 +152 269580.556 820672.222 +153 269613.889 819841.667 +154 269758.333 820908.333 +155 270269.444 804858.333 +156 270500.000 822500.000 +157 270527.778 824244.444 +158 270566.667 823786.111 +159 270591.667 801366.667 +160 270727.778 824077.778 +161 270994.444 824544.444 +162 271188.889 824444.444 +163 271300.000 824533.333 +164 271438.889 802008.333 +165 271675.000 802663.889 +166 271958.333 824905.556 +167 271972.222 802530.556 +168 272155.556 818586.111 +169 272172.222 802700.000 +170 272191.667 802394.444 +171 272216.667 824980.556 +172 272266.667 981438.889 +173 272436.111 808300.000 +174 272516.667 808141.667 +175 272541.667 802300.000 +176 272836.111 824808.333 +177 272927.778 813630.556 +178 273063.889 986780.556 +179 273294.444 824577.778 +180 273361.111 825308.333 +181 273602.778 981233.333 +182 274097.222 825694.444 +183 274122.222 826591.667 +184 274241.667 825802.778 +185 274250.000 825905.556 +186 274463.889 803258.333 +187 274472.222 825463.889 +188 274666.667 827041.667 +189 274688.889 826863.889 +190 274691.667 825416.667 +191 274930.556 817961.111 +192 274952.778 814411.111 +193 274972.222 827091.667 +194 274986.111 825750.000 +195 275061.111 995072.222 +196 275119.444 826322.222 +197 275155.556 978558.333 +198 275211.111 825725.000 +199 275213.889 825277.778 +200 275308.333 827336.111 +201 275355.556 825613.889 +202 275427.778 804025.000 +203 275469.444 818116.667 +204 275858.333 977988.889 +205 275955.556 815063.889 +206 275986.111 984077.778 +207 276380.556 818241.667 +208 276383.333 803975.000 +209 276741.667 977483.333 +210 276750.000 804094.444 +211 277122.222 822991.667 +212 277163.889 803844.444 +213 277205.556 824333.333 +214 277455.556 815308.333 +215 277480.556 804363.889 +216 277480.556 827036.111 +217 277519.444 818019.444 +218 277519.444 980694.444 +219 277547.222 827377.778 +220 277636.111 982386.111 +221 277675.000 806016.667 +222 277688.889 827691.667 +223 277813.889 979083.333 +224 277900.000 976686.111 +225 277950.000 819805.556 +226 277977.778 827975.000 +227 278002.778 973961.111 +228 278083.333 828113.889 +229 278138.889 827783.333 +230 278158.333 828208.333 +231 278258.333 828291.667 +232 278336.111 970608.333 +233 278355.556 804933.333 +234 278425.000 826997.222 +235 278625.000 828486.111 +236 278750.000 828513.889 +237 278769.444 973236.111 +238 278775.000 972113.889 +239 278802.778 805005.556 +240 278825.000 986175.000 +241 278950.000 819736.111 +242 278961.111 818433.333 +243 279011.111 815861.111 +244 279091.667 827875.000 +245 279091.667 971497.222 +246 279141.667 827055.556 +247 279211.111 828172.222 +248 279219.444 972897.222 +249 279227.778 828433.333 +250 279355.556 828063.889 +251 279375.000 822861.111 +252 279455.556 818005.556 +253 279472.222 824586.111 +254 279502.778 975819.444 +255 279525.000 817272.222 +256 279563.889 979366.667 +257 279650.000 818780.556 +258 279655.556 828002.778 +259 279675.000 819736.111 +260 279780.556 817566.667 +261 279786.111 816141.667 +262 279786.111 973983.333 +263 279905.556 826933.333 +264 279936.111 816902.778 +265 279938.889 822197.222 +266 279944.444 817383.333 +267 280033.333 805658.333 +268 280083.333 819077.778 +269 280183.333 821130.556 +270 280194.444 827719.444 +271 280202.778 970541.667 +272 280219.444 817330.556 +273 280222.222 816194.444 +274 280313.889 820150.000 +275 280338.889 826652.778 +276 280341.667 805888.889 +277 280350.000 823894.444 +278 280363.889 975088.889 +279 280408.333 993541.667 +280 280441.667 816280.556 +281 280611.111 970408.333 +282 280650.000 817888.889 +283 280680.556 805605.556 +284 280713.889 806536.111 +285 280719.444 806802.778 +286 280777.778 827638.889 +287 280786.111 806027.778 +288 280850.000 806666.667 +289 280891.667 805658.333 +290 280916.667 817236.111 +291 280941.667 978277.778 +292 281138.889 816180.556 +293 281144.444 819738.889 +294 281205.556 820233.333 +295 281355.556 806719.444 +296 281458.333 827569.444 +297 281486.111 805886.111 +298 281508.333 824616.667 +299 281611.111 816019.444 +300 281758.333 805902.778 +301 281822.222 818241.667 +302 281875.000 827397.222 +303 282163.889 827225.000 +304 282333.333 821813.889 +305 282380.556 973197.222 +306 282438.889 827194.444 +307 282586.111 814566.667 +308 282713.889 827197.222 +309 282916.667 814077.778 +310 283050.000 972750.000 +311 283197.222 806077.778 +312 283322.222 981172.222 +313 283358.333 822747.222 +314 283505.556 807255.556 +315 283644.444 821961.111 +316 283858.333 807422.222 +317 284005.556 977480.556 +318 284055.556 806050.000 +319 284150.000 967133.333 +320 284319.444 807602.778 +321 284366.667 992347.222 +322 284569.444 813916.667 +323 284580.556 813594.444 +324 284600.000 981822.222 +325 284655.556 821722.222 +326 284716.667 813680.556 +327 284858.333 813725.000 +328 284952.778 815350.000 +329 285025.000 813308.333 +330 285072.222 821705.556 +331 285216.667 998602.778 +332 285380.556 813794.444 +333 285380.556 814605.556 +334 285408.333 813008.333 +335 285491.667 817730.556 +336 285544.444 811066.667 +337 285547.222 816333.333 +338 285550.000 823880.556 +339 285577.778 818513.889 +340 285650.000 815863.889 +341 285688.889 815441.667 +342 285730.556 995683.333 +343 285741.667 817463.889 +344 285780.556 818869.444 +345 285908.333 813944.444 +346 285997.222 813394.444 +347 286097.222 820552.778 +348 286119.444 808077.778 +349 286144.444 813808.333 +350 286147.222 966258.333 +351 286191.667 814427.778 +352 286416.667 811236.111 +353 286475.000 968922.222 +354 286488.889 813513.889 +355 286497.222 819927.778 +356 286608.333 813658.333 +357 286613.889 814191.667 +358 286616.667 815097.222 +359 286647.222 821130.556 +360 286650.000 808450.000 +361 286672.222 991702.778 +362 286680.556 973880.556 +363 286697.222 812083.333 +364 286772.222 998277.778 +365 286775.000 813280.556 +366 286794.444 965600.000 +367 286802.778 815097.222 +368 286986.111 813083.333 +369 287077.778 962172.222 +370 287088.889 1004991.667 +371 287094.444 817330.556 +372 287308.333 816013.889 +373 287394.444 811152.778 +374 287500.000 822969.444 +375 287555.556 820950.000 +376 287586.111 813180.556 +377 287811.111 826152.778 +378 287994.444 820702.778 +379 288002.778 812733.333 +380 288022.222 816447.222 +381 288038.889 817258.333 +382 288105.556 818780.556 +383 288188.889 978483.333 +384 288355.556 823305.556 +385 288402.778 817688.889 +386 288525.000 816855.556 +387 288611.111 819066.667 +388 288616.667 987061.111 +389 288650.000 820391.667 +390 288830.556 977127.778 +391 288847.222 979005.556 +392 288919.444 990947.222 +393 289002.778 812638.889 +394 289005.556 823747.222 +395 289022.222 825927.778 +396 289172.222 819230.556 +397 289177.778 985461.111 +398 289291.667 816658.333 +399 289408.333 998494.444 +400 289441.667 952886.111 +401 289486.111 812988.889 +402 289538.889 953594.444 +403 289600.000 960650.000 +404 289669.444 984783.333 +405 289783.333 966458.333 +406 289805.556 812336.111 +407 289808.333 975025.000 +408 289825.000 959691.667 +409 289825.000 980172.222 +410 289886.111 809025.000 +411 290027.778 953316.667 +412 290175.000 958891.667 +413 290244.444 953986.111 +414 290255.556 809272.222 +415 290255.556 809722.222 +416 290297.222 827161.111 +417 290300.000 826688.889 +418 290336.111 954341.667 +419 290386.111 956983.333 +420 290402.778 965133.333 +421 290402.778 985677.778 +422 290441.667 955688.889 +423 290488.889 824611.111 +424 290550.000 820625.000 +425 290558.333 954097.222 +426 290694.444 980816.667 +427 290936.111 972888.889 +428 290961.111 809372.222 +429 291191.667 813516.667 +430 291333.333 981558.333 +431 291383.333 830352.778 +432 291397.222 989050.000 +433 291436.111 956450.000 +434 291655.556 810047.222 +435 291691.667 954316.667 +436 291758.333 809830.556 +437 291869.444 821402.778 +438 291894.444 988622.222 +439 291963.889 962694.444 +440 292094.444 997858.333 +441 292105.556 810230.556 +442 292261.111 986575.000 +443 292280.556 953447.222 +444 292366.667 979597.222 +445 292391.667 814658.333 +446 292433.333 810377.778 +447 292672.222 977641.667 +448 292855.556 810561.111 +449 292875.000 971516.667 +450 292947.222 952786.111 +451 293102.778 1004175.000 +452 293105.556 988097.222 +453 293113.889 961025.000 +454 293172.222 994661.111 +455 293472.222 991411.111 +456 293480.556 950158.333 +457 293488.889 810666.667 +458 293555.556 988783.333 +459 293561.111 981152.778 +460 293625.000 1008963.889 +461 293663.889 821975.000 +462 293788.889 902600.000 +463 293836.111 949025.000 +464 293872.222 824469.444 +465 293991.667 958375.000 +466 294236.111 952438.889 +467 294238.889 984933.333 +468 294288.889 971702.778 +469 294300.000 815108.333 +470 294383.333 905952.778 +471 294419.444 902991.667 +472 294436.111 969408.333 +473 294475.000 826425.000 +474 294505.556 959944.444 +475 294569.444 946394.444 +476 294605.556 950511.111 +477 294625.000 953577.778 +478 294630.556 983852.778 +479 294658.333 812580.556 +480 294747.222 811272.222 +481 294747.222 984505.556 +482 294786.111 984872.222 +483 294802.778 896938.889 +484 294822.222 954152.778 +485 294830.556 949219.444 +486 294847.222 984655.556 +487 294877.778 985513.889 +488 294950.000 986183.333 +489 295000.000 815916.667 +490 295013.889 974522.222 +491 295044.444 822800.000 +492 295066.667 949922.222 +493 295072.222 950947.222 +494 295152.778 983800.000 +495 295177.778 983158.333 +496 295230.556 985161.111 +497 295291.667 952008.333 +498 295297.222 825191.667 +499 295308.333 960708.333 +500 295375.000 907200.000 +501 295425.000 903380.556 +502 295425.000 950202.778 +503 295472.222 950319.444 +504 295477.778 982908.333 +505 295519.444 982694.444 +506 295533.333 906022.222 +507 295569.444 958083.333 +508 295605.556 1043716.667 +509 295613.889 982266.667 +510 295633.333 952858.333 +511 295638.889 950252.778 +512 295686.111 979644.444 +513 295711.111 981400.000 +514 295722.222 903816.667 +515 295747.222 971425.000 +516 295819.444 957605.556 +517 295822.222 984905.556 +518 295847.222 985522.222 +519 295894.444 963333.333 +520 295916.667 820875.000 +521 295919.444 980330.556 +522 295955.556 907194.444 +523 296002.778 984869.444 +524 296130.556 828177.778 +525 296158.333 955575.000 +526 296183.333 955375.000 +527 296194.444 956347.222 +528 296200.000 950097.222 +529 296236.111 818905.556 +530 296311.111 960650.000 +531 296341.667 831252.778 +532 296458.333 905391.667 +533 296461.111 826066.667 +534 296483.333 816377.778 +535 296513.889 823250.000 +536 296580.556 815986.111 +537 296622.222 948900.000 +538 296627.778 952352.778 +539 296655.556 950191.667 +540 296661.111 911019.444 +541 296666.667 901083.333 +542 296691.667 1000119.444 +543 296791.667 959769.444 +544 296802.778 976472.222 +545 296816.667 969027.778 +546 296875.000 971083.333 +547 296894.444 912708.333 +548 296897.222 958994.444 +549 296908.333 952088.889 +550 296930.556 913019.444 +551 296944.444 912188.889 +552 296991.667 912066.667 +553 297027.778 967802.778 +554 297027.778 981241.667 +555 297050.000 951236.111 +556 297055.556 954586.111 +557 297058.333 954366.667 +558 297063.889 965394.444 +559 297177.778 815083.333 +560 297177.778 954336.111 +561 297230.556 901236.111 +562 297255.556 849833.333 +563 297263.889 990733.333 +564 297272.222 905988.889 +565 297352.778 949772.222 +566 297363.889 848786.111 +567 297486.111 966008.333 +568 297597.222 955169.444 +569 297630.556 953630.556 +570 297672.222 952336.111 +571 297672.222 955297.222 +572 297702.778 954952.778 +573 297727.778 946825.000 +574 297758.333 951144.444 +575 297772.222 955169.444 +576 297780.556 951716.667 +577 297805.556 961569.444 +578 297855.556 958241.667 +579 297858.333 820316.667 +580 297858.333 959508.333 +581 297894.444 821675.000 +582 297897.222 943830.556 +583 297927.778 961005.556 +584 297944.444 987316.667 +585 297955.556 824944.444 +586 297955.556 908227.778 +587 297958.333 915013.889 +588 297975.000 933250.000 +589 298186.111 950558.333 +590 298200.000 943838.889 +591 298236.111 904750.000 +592 298266.667 825969.444 +593 298372.222 909561.111 +594 298377.778 915441.667 +595 298475.000 948905.556 +596 298530.556 846644.444 +597 298547.222 899905.556 +598 298677.778 951280.556 +599 298797.222 950627.778 +600 298830.556 979411.111 +601 298847.222 976697.222 +602 298875.000 955627.778 +603 298955.556 898977.778 +604 298986.111 939286.111 +605 298991.667 901002.778 +606 299022.222 955022.222 +607 299033.333 900772.222 +608 299052.778 968763.889 +609 299058.333 901422.222 +610 299061.111 903561.111 +611 299100.000 900325.000 +612 299108.333 916633.333 +613 299116.667 950619.444 +614 299144.444 900538.889 +615 299175.000 939241.667 +616 299183.333 902108.333 +617 299319.444 903663.889 +618 299322.222 953800.000 +619 299361.111 906786.111 +620 299402.778 902030.556 +621 299402.778 910247.222 +622 299425.000 899633.333 +623 299427.778 903516.667 +624 299438.889 821100.000 +625 299477.778 854180.556 +626 299480.556 919886.111 +627 299480.556 939169.444 +628 299500.000 962569.444 +629 299541.667 900052.778 +630 299544.444 900750.000 +631 299580.556 920358.333 +632 299588.889 829283.333 +633 299650.000 912030.556 +634 299675.000 989047.222 +635 299741.667 939922.222 +636 299763.889 904088.889 +637 299777.778 903877.778 +638 299794.444 818105.556 +639 299838.889 901527.778 +640 299888.889 978769.444 +641 299911.111 939583.333 +642 299916.667 816783.333 +643 299938.889 902416.667 +644 299977.778 922847.222 +645 299988.889 904122.222 +646 300033.333 918186.111 +647 300108.333 907194.444 +648 300155.556 1002050.000 +649 300205.556 938455.556 +650 300225.000 823397.222 +651 300258.333 925083.333 +652 300272.222 945913.889 +653 300355.556 944241.667 +654 300402.778 906988.889 +655 300438.889 820719.444 +656 300463.889 948850.000 +657 300472.222 906897.222 +658 300472.222 991400.000 +659 300477.778 943355.556 +660 300527.778 831750.000 +661 300536.111 905516.667 +662 300558.333 906191.667 +663 300563.889 917369.444 +664 300563.889 959266.667 +665 300663.889 904800.000 +666 300772.222 992400.000 +667 300805.556 926713.889 +668 300819.444 937580.556 +669 300850.000 978400.000 +670 300858.333 941016.667 +671 300927.778 937363.889 +672 300930.556 959875.000 +673 300972.222 960780.556 +674 300977.778 984211.111 +675 300994.444 919900.000 +676 301008.333 909927.778 +677 301025.000 940516.667 +678 301088.889 948580.556 +679 301102.778 973150.000 +680 301125.000 852005.556 +681 301130.556 946427.778 +682 301172.222 835819.444 +683 301216.667 924980.556 +684 301308.333 856033.333 +685 301313.889 940152.778 +686 301400.000 944108.333 +687 301422.222 1023936.111 +688 301469.444 919611.111 +689 301522.222 947388.889 +690 301527.778 855700.000 +691 301586.111 856602.778 +692 301658.333 817066.667 +693 301666.667 963975.000 +694 301686.111 933758.333 +695 301697.222 911469.444 +696 301708.333 856252.778 +697 301758.333 843752.778 +698 301763.889 858055.556 +699 301805.556 924641.667 +700 301816.667 932736.111 +701 301825.000 969361.111 +702 301841.667 908591.667 +703 301894.444 826394.444 +704 301897.222 925825.000 +705 301905.556 935811.111 +706 301922.222 826147.222 +707 302008.333 856269.444 +708 302138.889 923744.444 +709 302141.667 918319.444 +710 302172.222 910961.111 +711 302222.222 926569.444 +712 302238.889 920197.222 +713 302255.556 978033.333 +714 302263.889 932172.222 +715 302327.778 951608.333 +716 302347.222 922683.333 +717 302355.556 920944.444 +718 302355.556 921852.778 +719 302358.333 928225.000 +720 302363.889 933772.222 +721 302366.667 930136.111 +722 302383.333 909200.000 +723 302419.444 932505.556 +724 302452.778 856483.333 +725 302458.333 877008.333 +726 302500.000 1032500.000 +727 302530.556 941897.222 +728 302669.444 977427.778 +729 302733.333 918991.667 +730 302750.000 897811.111 +731 302750.000 988716.667 +732 302766.667 977908.333 +733 302766.667 984116.667 +734 302772.222 912236.111 +735 302819.444 821222.222 +736 302866.667 893761.111 +737 302888.889 912341.667 +738 302891.667 856405.556 +739 302944.444 813933.333 +740 302950.000 907950.000 +741 302975.000 937433.333 +742 302977.778 978016.667 +743 303025.000 819755.556 +744 303025.000 931905.556 +745 303077.778 1040186.111 +746 303086.111 892869.444 +747 303116.667 813966.667 +748 303116.667 954558.333 +749 303130.556 917902.778 +750 303133.333 899430.556 +751 303138.889 842475.000 +752 303155.556 892475.000 +753 303169.444 920488.889 +754 303294.444 827591.667 +755 303311.111 924955.556 +756 303319.444 816558.333 +757 303341.667 813988.889 +758 303405.556 975566.667 +759 303458.333 965280.556 +760 303488.889 941777.778 +761 303494.444 973700.000 +762 303502.778 891527.778 +763 303536.111 912652.778 +764 303547.222 940725.000 +765 303569.444 871638.889 +766 303580.556 900655.556 +767 303583.333 1036605.556 +768 303586.111 905861.111 +769 303655.556 885561.111 +770 303672.222 890927.778 +771 303677.778 979913.889 +772 303713.889 943122.222 +773 303758.333 843008.333 +774 303758.333 897483.333 +775 303838.889 872750.000 +776 303855.556 886116.667 +777 303877.778 960875.000 +778 303933.333 864958.333 +779 303941.667 912536.111 +780 303958.333 888852.778 +781 303975.000 919313.889 +782 304027.778 922150.000 +783 304030.556 882483.333 +784 304041.667 901569.444 +785 304055.556 866188.889 +786 304063.889 876836.111 +787 304097.222 866630.556 +788 304108.333 817080.556 +789 304108.333 914336.111 +790 304111.111 888277.778 +791 304111.111 920683.333 +792 304113.889 885344.444 +793 304188.889 970113.889 +794 304208.333 873075.000 +795 304211.111 872169.444 +796 304247.222 954797.222 +797 304250.000 872519.444 +798 304261.111 888908.333 +799 304263.889 872797.222 +800 304302.778 888422.222 +801 304319.444 849758.333 +802 304380.556 842808.333 +803 304386.111 904413.889 +804 304391.667 976197.222 +805 304402.778 885436.111 +806 304408.333 866136.111 +807 304427.778 872225.000 +808 304433.333 850452.778 +809 304438.889 856886.111 +810 304502.778 934330.556 +811 304505.556 911544.444 +812 304519.444 912100.000 +813 304555.556 866383.333 +814 304613.889 873150.000 +815 304686.111 872361.111 +816 304691.667 834130.556 +817 304691.667 836302.778 +818 304702.778 919783.333 +819 304738.889 879191.667 +820 304752.778 901008.333 +821 304761.111 883422.222 +822 304783.333 900375.000 +823 304811.111 926955.556 +824 304850.000 925958.333 +825 304852.778 928505.556 +826 304866.667 909561.111 +827 304875.000 876997.222 +828 304891.667 997716.667 +829 304911.111 915194.444 +830 304941.667 924175.000 +831 304977.778 949963.889 +832 304980.556 861361.111 +833 305019.444 907477.778 +834 305041.667 904611.111 +835 305041.667 905822.222 +836 305050.000 978200.000 +837 305080.556 976786.111 +838 305100.000 872125.000 +839 305180.556 829483.333 +840 305183.333 921847.222 +841 305186.111 872727.778 +842 305227.778 879033.333 +843 305252.778 896794.444 +844 305333.333 920813.889 +845 305366.667 917527.778 +846 305375.000 954830.556 +847 305425.000 975463.889 +848 305450.000 838702.778 +849 305452.778 877516.667 +850 305475.000 881752.778 +851 305536.111 877119.444 +852 305588.889 915558.333 +853 305600.000 919538.889 +854 305619.444 818308.333 +855 305666.667 1006430.556 +856 305691.667 847433.333 +857 305705.556 974091.667 +858 305772.222 904830.556 +859 305780.556 982725.000 +860 305786.111 978527.778 +861 305813.889 872913.889 +862 305869.444 845833.333 +863 305880.556 911680.556 +864 305900.000 881708.333 +865 305902.778 972966.667 +866 305922.222 951291.667 +867 305958.333 916163.889 +868 305986.111 870311.111 +869 305991.667 871611.111 +870 306033.333 879036.111 +871 306038.889 830980.556 +872 306136.111 972052.778 +873 306161.111 920569.444 +874 306169.444 846600.000 +875 306180.556 877530.556 +876 306200.000 927625.000 +877 306227.778 857122.222 +878 306236.111 844147.222 +879 306277.778 963341.667 +880 306316.667 816066.667 +881 306322.222 870397.222 +882 306325.000 976769.444 +883 306336.111 924191.667 +884 306352.778 905008.333 +885 306483.333 911563.889 +886 306580.556 984402.778 +887 306602.778 938925.000 +888 306694.444 814627.778 +889 306877.778 922713.889 +890 306908.333 819175.000 +891 306927.778 917438.889 +892 306936.111 853922.222 +893 306941.667 880430.556 +894 307013.889 914361.111 +895 307050.000 848430.556 +896 307075.000 849244.444 +897 307100.000 1012002.778 +898 307108.333 949327.778 +899 307122.222 850202.778 +900 307172.222 911413.889 +901 307175.000 974425.000 +902 307213.889 861155.556 +903 307233.333 955505.556 +904 307238.889 873141.667 +905 307383.333 915941.667 +906 307386.111 880788.889 +907 307436.111 980552.778 +908 307472.222 832208.333 +909 307488.889 844838.889 +910 307541.667 935402.778 +911 307580.556 982280.556 +912 307591.667 986747.222 +913 307619.444 865705.556 +914 307636.111 880747.222 +915 307647.222 905116.667 +916 307730.556 858141.667 +917 307741.667 852269.444 +918 307750.000 944152.778 +919 307816.667 855386.111 +920 307836.111 924252.778 +921 307847.222 835600.000 +922 307908.333 898486.111 +923 307916.667 837900.000 +924 307916.667 856797.222 +925 307947.222 974252.778 +926 307969.444 853766.667 +927 307997.222 816900.000 +928 308158.333 926602.778 +929 308205.556 880705.556 +930 308230.556 883613.889 +931 308302.778 820100.000 +932 308305.556 906716.667 +933 308325.000 832786.111 +934 308372.222 912175.000 +935 308400.000 895341.667 +936 308411.111 977933.333 +937 308461.111 932888.889 +938 308469.444 901530.556 +939 308483.333 937572.222 +940 308530.556 880561.111 +941 308530.556 969766.667 +942 308558.333 820211.111 +943 308600.000 1006005.556 +944 308655.556 910155.556 +945 308700.000 851619.444 +946 308772.222 842013.889 +947 308780.556 974013.889 +948 308783.333 965927.778 +949 308827.778 843238.889 +950 308827.778 877730.556 +951 308916.667 880397.222 +952 308938.889 1028788.889 +953 309036.111 845755.556 +954 309077.778 944219.444 +955 309138.889 1018975.000 +956 309175.000 997861.111 +957 309197.222 932822.222 +958 309200.000 911155.556 +959 309200.000 939963.889 +960 309250.000 885900.000 +961 309380.556 905088.889 +962 309450.000 953752.778 +963 309469.444 975383.333 +964 309497.222 959113.889 +965 309527.778 871513.889 +966 309530.556 921825.000 +967 309566.667 855166.667 +968 309575.000 851622.222 +969 309597.222 837380.556 +970 309636.111 817227.778 +971 309655.556 864597.222 +972 309736.111 840530.556 +973 309763.889 925850.000 +974 309777.778 966736.111 +975 309813.889 863075.000 +976 309833.333 918000.000 +977 309838.889 920533.333 +978 309841.667 1037441.667 +979 309911.111 833727.778 +980 309966.667 948269.444 +981 310000.000 872608.333 +982 310011.111 894522.222 +983 310050.000 863280.556 +984 310066.667 904722.222 +985 310102.778 863497.222 +986 310111.111 838663.889 +987 310147.222 922872.222 +988 310236.111 874938.889 +989 310258.333 964850.000 +990 310294.444 961144.444 +991 310327.778 858638.889 +992 310344.444 919755.556 +993 310363.889 827472.222 +994 310397.222 1048302.778 +995 310402.778 848791.667 +996 310408.333 830752.778 +997 310486.111 853050.000 +998 310547.222 951255.556 +999 310558.333 974641.667 +1000 310577.778 920488.889 +1001 310594.444 921211.111 +1002 310636.111 981813.889 +1003 310680.556 836238.889 +1004 310722.222 840891.667 +1005 310727.778 969783.333 +1006 310744.444 831994.444 +1007 310786.111 976052.778 +1008 310894.444 910683.333 +1009 310905.556 882280.556 +1010 310930.556 870627.778 +1011 310944.444 924002.778 +1012 310980.556 973425.000 +1013 311022.222 856969.444 +1014 311044.444 912994.444 +1015 311050.000 870722.222 +1016 311080.556 855944.444 +1017 311086.111 888272.222 +1018 311127.778 860461.111 +1019 311147.222 932713.889 +1020 311158.333 901419.444 +1021 311169.444 977275.000 +1022 311238.889 979027.778 +1023 311266.667 954452.778 +1024 311275.000 841519.444 +1025 311277.778 920661.111 +1026 311358.333 1022238.889 +1027 311369.444 834236.111 +1028 311391.667 855191.667 +1029 311430.556 894097.222 +1030 311430.556 904586.111 +1031 311433.333 932608.333 +1032 311497.222 814916.667 +1033 311555.556 885577.778 +1034 311583.333 944261.111 +1035 311650.000 966766.667 +1036 311691.667 889200.000 +1037 311711.111 847333.333 +1038 311797.222 837891.667 +1039 311808.333 821350.000 +1040 311827.778 852363.889 +1041 311869.444 947808.333 +1042 311913.889 1014600.000 +1043 311955.556 987177.778 +1044 311972.222 910216.667 +1045 312022.222 890347.222 +1046 312033.333 970363.889 +1047 312041.667 819813.889 +1048 312066.667 973025.000 +1049 312072.222 832502.778 +1050 312133.333 823541.667 +1051 312158.333 861711.111 +1052 312161.111 998452.778 +1053 312169.444 983930.556 +1054 312227.778 904602.778 +1055 312230.556 853905.556 +1056 312311.111 842105.556 +1057 312355.556 857227.778 +1058 312436.111 904530.556 +1059 312477.778 939741.667 +1060 312516.667 898375.000 +1061 312616.667 1008169.444 +1062 312688.889 836872.222 +1063 312713.889 834650.000 +1064 312775.000 945763.889 +1065 312794.444 863255.556 +1066 312822.222 892755.556 +1067 312825.000 862555.556 +1068 312836.111 904683.333 +1069 312925.000 851116.667 +1070 312975.000 828525.000 +1071 312988.889 853444.444 +1072 312988.889 870225.000 +1073 313058.333 822422.222 +1074 313061.111 968977.778 +1075 313080.556 973611.111 +1076 313100.000 857130.556 +1077 313111.111 924450.000 +1078 313113.889 855530.556 +1079 313127.778 843358.333 +1080 313180.556 954563.889 +1081 313188.889 854938.889 +1082 313194.444 839172.222 +1083 313222.222 924341.667 +1084 313269.444 892902.778 +1085 313380.556 947288.889 +1086 313391.667 1028513.889 +1087 313402.778 1109336.111 +1088 313405.556 830461.111 +1089 313405.556 938466.667 +1090 313408.333 835936.111 +1091 313444.444 1095447.222 +1092 313463.889 892600.000 +1093 313511.111 853422.222 +1094 313527.778 865391.667 +1095 313569.444 1095611.111 +1096 313613.889 961438.889 +1097 313644.444 893061.111 +1098 313700.000 814341.667 +1099 313775.000 849341.667 +1100 313794.444 841611.111 +1101 313850.000 832230.556 +1102 313855.556 859294.444 +1103 313863.889 972152.778 +1104 313902.778 926691.667 +1105 313902.778 976841.667 +1106 313972.222 1023497.222 +1107 314127.778 833291.667 +1108 314144.444 860677.778 +1109 314152.778 924116.667 +1110 314172.222 895422.222 +1111 314216.667 853377.778 +1112 314227.778 1034927.778 +1113 314333.333 874013.889 +1114 314350.000 977436.111 +1115 314394.444 835194.444 +1116 314397.222 847250.000 +1117 314436.111 934572.222 +1118 314438.889 974088.889 +1119 314480.556 1099277.778 +1120 314497.222 985705.556 +1121 314502.778 835086.111 +1122 314588.889 856405.556 +1123 314611.111 1033933.333 +1124 314622.222 971955.556 +1125 314627.778 908500.000 +1126 314636.111 1004366.667 +1127 314650.000 882544.444 +1128 314675.000 971144.444 +1129 314716.667 836469.444 +1130 314722.222 908966.667 +1131 314747.222 969230.556 +1132 314855.556 845138.889 +1133 314861.111 820172.222 +1134 314916.667 954783.333 +1135 315022.222 1061580.556 +1136 315044.444 910688.889 +1137 315086.111 828500.000 +1138 315088.889 878944.444 +1139 315127.778 837877.778 +1140 315172.222 826350.000 +1141 315188.889 927066.667 +1142 315213.889 971536.111 +1143 315241.667 965336.111 +1144 315277.778 873247.222 +1145 315297.222 941058.333 +1146 315305.556 838355.556 +1147 315341.667 974427.778 +1148 315391.667 824625.000 +1149 315394.444 1107555.556 +1150 315422.222 867150.000 +1151 315422.222 968333.333 +1152 315491.667 971463.889 +1153 315536.111 901072.222 +1154 315544.444 1103030.556 +1155 315580.556 847383.333 +1156 315602.778 914030.556 +1157 315652.778 914258.333 +1158 315686.111 934838.889 +1159 315700.000 1030005.556 +1160 315716.667 852505.556 +1161 315783.333 841558.333 +1162 315788.889 904405.556 +1163 315811.111 925327.778 +1164 315827.778 1029202.778 +1165 315847.222 958488.889 +1166 315850.000 1062722.222 +1167 315922.222 1062236.111 +1168 315938.889 971086.111 +1169 315941.667 832505.556 +1170 315941.667 1028922.222 +1171 315972.222 1001819.444 +1172 315983.333 898669.444 +1173 316000.000 857188.889 +1174 316033.333 946552.778 +1175 316038.889 891955.556 +1176 316072.222 818855.556 +1177 316088.889 850472.222 +1178 316250.000 828869.444 +1179 316250.000 955791.667 +1180 316263.889 918180.556 +1181 316269.444 962836.111 +1182 316277.778 1103333.333 +1183 316291.667 971025.000 +1184 316300.000 915544.444 +1185 316313.889 936438.889 +1186 316338.889 883133.333 +1187 316369.444 867419.444 +1188 316452.778 895552.778 +1189 316502.778 950725.000 +1190 316527.778 932019.444 +1191 316591.667 974719.444 +1192 316672.222 928905.556 +1193 316747.222 886461.111 +1194 316752.778 930444.444 +1195 316797.222 964819.444 +1196 316830.556 921336.111 +1197 316925.000 1062069.444 +1198 316938.889 891305.556 +1199 317011.111 903975.000 +1200 317036.111 981236.111 +1201 317058.333 836533.333 +1202 317077.778 817425.000 +1203 317086.111 856105.556 +1204 317086.111 877772.222 +1205 317113.889 910605.556 +1206 317127.778 1100669.444 +1207 317147.222 832527.778 +1208 317163.889 862638.889 +1209 317169.444 991322.222 +1210 317200.000 858161.111 +1211 317225.000 915430.556 +1212 317244.444 961650.000 +1213 317319.444 841708.333 +1214 317333.333 872047.222 +1215 317380.556 999469.444 +1216 317419.444 989452.778 +1217 317511.111 1031594.444 +1218 317538.889 966497.222 +1219 317561.111 846152.778 +1220 317586.111 1064863.889 +1221 317605.556 930861.111 +1222 317711.111 847894.444 +1223 317719.444 918213.889 +1224 317733.333 844466.667 +1225 317738.889 816327.778 +1226 317780.556 823486.111 +1227 317822.222 975763.889 +1228 317833.333 855558.333 +1229 317838.889 816077.778 +1230 317863.889 890322.222 +1231 317877.778 964622.222 +1232 317883.333 877272.222 +1233 317958.333 951500.000 +1234 318022.222 970913.889 +1235 318086.111 859700.000 +1236 318144.444 948402.778 +1237 318191.667 923297.222 +1238 318197.222 935141.667 +1239 318213.889 930294.444 +1240 318241.667 944908.333 +1241 318272.222 994261.111 +1242 318294.444 866177.778 +1243 318308.333 843644.444 +1244 318361.111 1009844.444 +1245 318455.556 1023672.222 +1246 318463.889 916561.111 +1247 318466.667 815961.111 +1248 318575.000 1030922.222 +1249 318600.000 886994.444 +1250 318602.778 903958.333 +1251 318636.111 922958.333 +1252 318736.111 897336.111 +1253 318780.556 854497.222 +1254 318866.667 889838.889 +1255 318872.222 1002913.889 +1256 318911.111 851455.556 +1257 318922.222 1004844.444 +1258 318933.333 931180.556 +1259 318938.889 967144.444 +1260 318972.222 986033.333 +1261 319002.778 842519.444 +1262 319027.778 922430.556 +1263 319036.111 943950.000 +1264 319119.444 1118805.556 +1265 319133.333 877358.333 +1266 319230.556 976563.889 +1267 319252.778 926394.444 +1268 319291.667 826797.222 +1269 319363.889 819286.111 +1270 319380.556 813036.111 +1271 319436.111 942438.889 +1272 319508.333 834563.889 +1273 319563.889 999619.444 +1274 319608.333 909838.889 +1275 319616.667 898700.000 +1276 319633.333 837825.000 +1277 319636.111 952702.778 +1278 319655.556 940536.111 +1279 319677.778 1102938.889 +1280 319752.778 939977.778 +1281 319788.889 892872.222 +1282 319808.333 916555.556 +1283 319827.778 980333.333 +1284 319844.444 865786.111 +1285 319872.222 903569.444 +1286 319894.444 832002.778 +1287 319908.333 872905.556 +1288 319919.444 833069.444 +1289 319972.222 1020775.000 +1290 320000.000 808458.333 +1291 320038.889 1066052.778 +1292 320108.333 971297.222 +1293 320147.222 933419.444 +1294 320166.667 929091.667 +1295 320172.222 830627.778 +1296 320216.667 937141.667 +1297 320263.889 921388.889 +1298 320333.333 810500.000 +1299 320333.333 895222.222 +1300 320338.889 843927.778 +1301 320355.556 825083.333 +1302 320375.000 937000.000 +1303 320400.000 887280.556 +1304 320491.667 916580.556 +1305 320497.222 921091.667 +1306 320525.000 955061.111 +1307 320677.778 829008.333 +1308 320722.222 842327.778 +1309 320725.000 912408.333 +1310 320736.111 829147.222 +1311 320800.000 968063.889 +1312 320833.333 811000.000 +1313 320850.000 983416.667 +1314 320852.778 932200.000 +1315 320866.667 821180.556 +1316 320877.778 846675.000 +1317 320883.333 954716.667 +1318 320894.444 882219.444 +1319 320913.889 837955.556 +1320 320919.444 967155.556 +1321 320952.778 964686.111 +1322 320958.333 989633.333 +1323 320961.111 902941.667 +1324 321094.444 906233.333 +1325 321100.000 835011.111 +1326 321141.667 811541.667 +1327 321152.778 812472.222 +1328 321244.444 969450.000 +1329 321261.111 991650.000 +1330 321291.667 1017880.556 +1331 321322.222 812991.667 +1332 321330.556 962275.000 +1333 321358.333 816222.222 +1334 321397.222 953200.000 +1335 321438.889 960908.333 +1336 321441.667 857150.000 +1337 321444.444 951202.778 +1338 321469.444 827780.556 +1339 321488.889 811633.333 +1340 321530.556 947991.667 +1341 321533.333 901311.111 +1342 321558.333 819338.889 +1343 321572.222 943372.222 +1344 321594.444 971497.222 +1345 321613.889 819041.667 +1346 321630.556 917205.556 +1347 321686.111 882825.000 +1348 321694.444 960122.222 +1349 321811.111 821091.667 +1350 321838.889 865802.778 +1351 321838.889 968844.444 +1352 321872.222 825658.333 +1353 321975.000 831777.778 +1354 321994.444 1109677.778 +1355 322019.444 839086.111 +1356 322041.667 823219.444 +1357 322047.222 958552.778 +1358 322094.444 997963.889 +1359 322136.111 986702.778 +1360 322161.111 807527.778 +1361 322175.000 824136.111 +1362 322205.556 982019.444 +1363 322216.667 1109258.333 +1364 322252.778 950575.000 +1365 322266.667 952252.778 +1366 322333.333 973741.667 +1367 322344.444 977550.000 +1368 322369.444 808605.556 +1369 322380.556 843091.667 +1370 322386.111 949402.778 +1371 322411.111 927158.333 +1372 322416.667 854163.889 +1373 322427.778 944552.778 +1374 322502.778 1014783.333 +1375 322527.778 1098313.889 +1376 322591.667 904225.000 +1377 322613.889 837366.667 +1378 322663.889 876252.778 +1379 322686.111 1077580.556 +1380 322700.000 1068002.778 +1381 322730.556 899858.333 +1382 322744.444 949783.333 +1383 322766.667 927233.333 +1384 322783.333 957494.444 +1385 322816.667 938238.889 +1386 322836.111 834722.222 +1387 322861.111 1040952.778 +1388 322869.444 810808.333 +1389 322936.111 840611.111 +1390 322958.333 812355.556 +1391 322963.889 1013058.333 +1392 322986.111 901847.222 +1393 323050.000 840275.000 +1394 323052.778 847727.778 +1395 323061.111 877980.556 +1396 323061.111 924502.778 +1397 323069.444 960063.889 +1398 323077.778 954797.222 +1399 323088.889 917747.222 +1400 323094.444 901388.889 +1401 323122.222 1067777.778 +1402 323127.778 897983.333 +1403 323130.556 970113.889 +1404 323158.333 945163.889 +1405 323175.000 890255.556 +1406 323186.111 1025452.778 +1407 323188.889 845172.222 +1408 323202.778 962127.778 +1409 323211.111 891633.333 +1410 323283.333 932797.222 +1411 323291.667 966250.000 +1412 323300.000 906055.556 +1413 323344.444 961511.111 +1414 323361.111 813916.667 +1415 323413.889 903216.667 +1416 323430.556 893286.111 +1417 323475.000 973863.889 +1418 323491.667 904600.000 +1419 323502.778 1087080.556 +1420 323511.111 953008.333 +1421 323525.000 908777.778 +1422 323536.111 896544.444 +1423 323641.667 887036.111 +1424 323644.444 894741.667 +1425 323663.889 961005.556 +1426 323666.667 863000.000 +1427 323694.444 841880.556 +1428 323716.667 1128600.000 +1429 323769.444 825925.000 +1430 323788.889 806927.778 +1431 323794.444 816633.333 +1432 323808.333 1064788.889 +1433 323863.889 968480.556 +1434 323866.667 833547.222 +1435 323880.556 989788.889 +1436 323880.556 1008641.667 +1437 323938.889 993938.889 +1438 323966.667 973236.111 +1439 323969.444 820602.778 +1440 323969.444 908563.889 +1441 324013.889 988172.222 +1442 324058.333 994933.333 +1443 324063.889 972113.889 +1444 324066.667 887772.222 +1445 324072.222 870211.111 +1446 324083.333 911866.667 +1447 324111.111 1007119.444 +1448 324172.222 886477.778 +1449 324205.556 1042283.333 +1450 324238.889 856916.667 +1451 324283.333 901322.222 +1452 324311.111 966675.000 +1453 324313.889 806700.000 +1454 324322.222 830613.889 +1455 324333.333 971022.222 +1456 324338.889 866547.222 +1457 324355.556 807241.667 +1458 324366.667 1112247.222 +1459 324372.222 1031586.111 +1460 324388.889 891083.333 +1461 324419.444 822152.778 +1462 324419.444 977938.889 +1463 324425.000 962297.222 +1464 324452.778 949483.333 +1465 324458.333 1005383.333 +1466 324486.111 817833.333 +1467 324486.111 997327.778 +1468 324488.889 975263.889 +1469 324494.444 875141.667 +1470 324561.111 839402.778 +1471 324575.000 914930.556 +1472 324575.000 998711.111 +1473 324580.556 837316.667 +1474 324608.333 849877.778 +1475 324613.889 973877.778 +1476 324616.667 901152.778 +1477 324638.889 864597.222 +1478 324697.222 986786.111 +1479 324705.556 1000125.000 +1480 324708.333 850008.333 +1481 324708.333 1004055.556 +1482 324772.222 917547.222 +1483 324786.111 940594.444 +1484 324797.222 863619.444 +1485 324805.556 809805.556 +1486 324822.222 969941.667 +1487 324861.111 882963.889 +1488 324955.556 849919.444 +1489 325005.556 947402.778 +1490 325041.667 945738.889 +1491 325091.667 921191.667 +1492 325116.667 863766.667 +1493 325155.556 954091.667 +1494 325158.333 921916.667 +1495 325158.333 937319.444 +1496 325175.000 878363.889 +1497 325175.000 968041.667 +1498 325183.333 921475.000 +1499 325230.556 926377.778 +1500 325247.222 956369.444 +1501 325250.000 937500.000 +1502 325263.889 968861.111 +1503 325275.000 927138.889 +1504 325294.444 949027.778 +1505 325300.000 925141.667 +1506 325305.556 825894.444 +1507 325325.000 935038.889 +1508 325338.889 966652.778 +1509 325344.444 927883.333 +1510 325355.556 934108.333 +1511 325358.333 858933.333 +1512 325380.556 819325.000 +1513 325402.778 829038.889 +1514 325419.444 973205.556 +1515 325430.556 903091.667 +1516 325436.111 862119.444 +1517 325438.889 930527.778 +1518 325447.222 943672.222 +1519 325480.556 828719.444 +1520 325488.889 929200.000 +1521 325497.222 858700.000 +1522 325519.444 984977.778 +1523 325536.111 838875.000 +1524 325563.889 958630.556 +1525 325569.444 842383.333 +1526 325597.222 840963.889 +1527 325605.556 856725.000 +1528 325630.556 971413.889 +1529 325788.889 973622.222 +1530 325808.333 938925.000 +1531 325827.778 821552.778 +1532 325836.111 951086.111 +1533 325838.889 1171122.222 +1534 325841.667 881872.222 +1535 325883.333 952038.889 +1536 325883.333 965083.333 +1537 325888.889 963086.111 +1538 325888.889 966850.000 +1539 325897.222 968566.667 +1540 325908.333 926477.778 +1541 325919.444 967558.333 +1542 325936.111 948552.778 +1543 325963.889 1147088.889 +1544 325972.222 823338.889 +1545 325997.222 1106302.778 +1546 326038.889 914777.778 +1547 326055.556 832455.556 +1548 326097.222 854808.333 +1549 326108.333 1107702.778 +1550 326119.444 998138.889 +1551 326125.000 900366.667 +1552 326152.778 932866.667 +1553 326208.333 836000.000 +1554 326277.778 964555.556 +1555 326308.333 972888.889 +1556 326322.222 873191.667 +1557 326352.778 860344.444 +1558 326394.444 965380.556 +1559 326400.000 1170833.333 +1560 326408.333 903647.222 +1561 326452.778 853783.333 +1562 326466.667 972255.556 +1563 326491.667 967127.778 +1564 326516.667 969080.556 +1565 326536.111 837597.222 +1566 326550.000 799405.556 +1567 326591.667 836188.889 +1568 326630.556 954880.556 +1569 326652.778 1071525.000 +1570 326727.778 1141461.111 +1571 326730.556 974602.778 +1572 326733.333 957091.667 +1573 326775.000 845394.444 +1574 326780.556 1170983.333 +1575 326788.889 1154980.556 +1576 326833.333 847383.333 +1577 326858.333 1171822.222 +1578 326875.000 833466.667 +1579 326875.000 939608.333 +1580 326900.000 808508.333 +1581 326947.222 937416.667 +1582 326958.333 976019.444 +1583 326961.111 920858.333 +1584 326980.556 958850.000 +1585 326988.889 926566.667 +1586 326991.667 1081313.889 +1587 327025.000 1031355.556 +1588 327027.778 971550.000 +1589 327044.444 875958.333 +1590 327091.667 960080.556 +1591 327141.667 971561.111 +1592 327152.778 1171563.889 +1593 327169.444 1168752.778 +1594 327188.889 1026444.444 +1595 327213.889 1091047.222 +1596 327216.667 840133.333 +1597 327225.000 1106400.000 +1598 327233.333 992969.444 +1599 327252.778 973205.556 +1600 327252.778 1146236.111 +1601 327286.111 949422.222 +1602 327286.111 966225.000 +1603 327291.667 827200.000 +1604 327308.333 1155288.889 +1605 327341.667 802419.444 +1606 327358.333 962750.000 +1607 327361.111 968866.667 +1608 327375.000 1019505.556 +1609 327425.000 1170305.556 +1610 327438.889 939713.889 +1611 327447.222 974133.333 +1612 327458.333 969975.000 +1613 327480.556 964716.667 +1614 327502.778 816369.444 +1615 327547.222 812422.222 +1616 327555.556 989019.444 +1617 327558.333 1115541.667 +1618 327563.889 998958.333 +1619 327572.222 943450.000 +1620 327572.222 974105.556 +1621 327577.778 848750.000 +1622 327591.667 977969.444 +1623 327594.444 974580.556 +1624 327616.667 1081300.000 +1625 327630.556 802502.778 +1626 327675.000 886508.333 +1627 327677.778 1170222.222 +1628 327700.000 1082797.222 +1629 327713.889 891166.667 +1630 327733.333 924055.556 +1631 327750.000 917925.000 +1632 327763.889 799311.111 +1633 327786.111 919141.667 +1634 327794.444 1081497.222 +1635 327833.333 968000.000 +1636 327852.778 800352.778 +1637 327872.222 845619.444 +1638 327883.333 868716.667 +1639 327888.889 851450.000 +1640 327916.667 930555.556 +1641 327919.444 1155622.222 +1642 327927.778 956341.667 +1643 327930.556 1156902.778 +1644 327938.889 798627.778 +1645 327947.222 1169616.667 +1646 327958.333 954508.333 +1647 327961.111 851838.889 +1648 327963.889 965605.556 +1649 327994.444 972688.889 +1650 328000.000 947205.556 +1651 328002.778 856536.111 +1652 328038.889 819494.444 +1653 328041.667 911700.000 +1654 328047.222 974447.222 +1655 328058.333 974027.778 +1656 328083.333 981125.000 +1657 328111.111 831727.778 +1658 328111.111 1153794.444 +1659 328138.889 969486.111 +1660 328158.333 972277.778 +1661 328188.889 822350.000 +1662 328191.667 934175.000 +1663 328202.778 851722.222 +1664 328219.444 926577.778 +1665 328233.333 971702.778 +1666 328266.667 830794.444 +1667 328280.556 884763.889 +1668 328311.111 857636.111 +1669 328338.889 1097069.444 +1670 328341.667 972286.111 +1671 328344.444 852297.222 +1672 328363.889 964747.222 +1673 328383.333 1169730.556 +1674 328386.111 866294.444 +1675 328402.778 851833.333 +1676 328405.556 836325.000 +1677 328405.556 878875.000 +1678 328422.222 1044027.778 +1679 328438.889 971427.778 +1680 328466.667 852100.000 +1681 328475.000 1155686.111 +1682 328491.667 1097586.111 +1683 328502.778 810794.444 +1684 328516.667 800366.667 +1685 328519.444 1004652.778 +1686 328544.444 799750.000 +1687 328550.000 904055.556 +1688 328563.889 973386.111 +1689 328572.222 1169213.889 +1690 328577.778 972544.444 +1691 328597.222 846200.000 +1692 328600.000 973636.111 +1693 328666.667 824041.667 +1694 328677.778 843305.556 +1695 328686.111 851905.556 +1696 328708.333 811097.222 +1697 328713.889 939872.222 +1698 328744.444 957652.778 +1699 328763.889 877425.000 +1700 328777.778 851833.333 +1701 328794.444 1117566.667 +1702 328808.333 971547.222 +1703 328819.444 833325.000 +1704 328833.333 816583.333 +1705 328836.111 899713.889 +1706 328847.222 1001261.111 +1707 328880.556 843266.667 +1708 328927.778 934483.333 +1709 328936.111 960291.667 +1710 328950.000 975455.556 +1711 328961.111 1098269.444 +1712 328997.222 854011.111 +1713 328997.222 945561.111 +1714 329013.889 922419.444 +1715 329027.778 965636.111 +1716 329050.000 806669.444 +1717 329050.000 936966.667 +1718 329063.889 908780.556 +1719 329102.778 961352.778 +1720 329155.556 867158.333 +1721 329183.333 800222.222 +1722 329191.667 916769.444 +1723 329252.778 811875.000 +1724 329263.889 968958.333 +1725 329311.111 964594.444 +1726 329327.778 843494.444 +1727 329341.667 970777.778 +1728 329344.444 972513.889 +1729 329358.333 828116.667 +1730 329372.222 871647.222 +1731 329411.111 971338.889 +1732 329438.889 859538.889 +1733 329438.889 1033480.556 +1734 329441.667 1025644.444 +1735 329444.444 871386.111 +1736 329452.778 998025.000 +1737 329477.778 1127161.111 +1738 329480.556 967294.444 +1739 329536.111 968900.000 +1740 329544.444 970147.222 +1741 329572.222 952900.000 +1742 329572.222 1057419.444 +1743 329588.889 812366.667 +1744 329594.444 1172644.444 +1745 329597.222 867466.667 +1746 329616.667 968288.889 +1747 329619.444 931400.000 +1748 329627.778 1170350.000 +1749 329636.111 1018322.222 +1750 329644.444 1028286.111 +1751 329688.889 934505.556 +1752 329700.000 899122.222 +1753 329719.444 1107758.333 +1754 329738.889 908244.444 +1755 329750.000 817577.778 +1756 329750.000 963322.222 +1757 329761.111 965950.000 +1758 329777.778 1059413.889 +1759 329777.778 1115169.444 +1760 329783.333 885700.000 +1761 329786.111 1155294.444 +1762 329808.333 800327.778 +1763 329813.889 828102.778 +1764 329836.111 845827.778 +1765 329855.556 801100.000 +1766 329875.000 1107702.778 +1767 329911.111 1172702.778 +1768 329922.222 890661.111 +1769 329950.000 975425.000 +1770 329952.778 949655.556 +1771 329975.000 876300.000 +1772 329983.333 946305.556 +1773 330013.889 824113.889 +1774 330038.889 972255.556 +1775 330047.222 1107847.222 +1776 330066.667 801555.556 +1777 330077.778 813086.111 +1778 330122.222 943652.778 +1779 330136.111 927250.000 +1780 330144.444 970966.667 +1781 330150.000 966127.778 +1782 330161.111 927241.667 +1783 330183.333 801758.333 +1784 330197.222 966986.111 +1785 330202.778 1172019.444 +1786 330308.333 850611.111 +1787 330313.889 1113866.667 +1788 330316.667 947216.667 +1789 330341.667 839383.333 +1790 330369.444 1172911.111 +1791 330372.222 1156205.556 +1792 330391.667 850313.889 +1793 330394.444 921825.000 +1794 330483.333 1166300.000 +1795 330508.333 1092955.556 +1796 330544.444 841558.333 +1797 330569.444 1109100.000 +1798 330572.222 915733.333 +1799 330575.000 895875.000 +1800 330605.556 954719.444 +1801 330655.556 860533.333 +1802 330655.556 962275.000 +1803 330677.778 1093594.444 +1804 330680.556 1173025.000 +1805 330738.889 1060180.556 +1806 330750.000 898544.444 +1807 330766.667 1117386.111 +1808 330786.111 868816.667 +1809 330786.111 1093647.222 +1810 330786.111 1166011.111 +1811 330800.000 832322.222 +1812 330847.222 972958.333 +1813 330897.222 820158.333 +1814 330916.667 970463.889 +1815 330955.556 803155.556 +1816 330980.556 936547.222 +1817 331002.778 934608.333 +1818 331005.556 868641.667 +1819 331027.778 867536.111 +1820 331030.556 966702.778 +1821 331052.778 885608.333 +1822 331075.000 923347.222 +1823 331094.444 912619.444 +1824 331130.556 900530.556 +1825 331136.111 941641.667 +1826 331150.000 1043263.889 +1827 331180.556 871250.000 +1828 331191.667 970252.778 +1829 331191.667 1170855.556 +1830 331211.111 971830.556 +1831 331213.889 855663.889 +1832 331236.111 890550.000 +1833 331255.556 1155133.333 +1834 331280.556 919611.111 +1835 331283.333 1072522.222 +1836 331294.444 881513.889 +1837 331333.333 1002269.444 +1838 331372.222 958391.667 +1839 331386.111 1101244.444 +1840 331408.333 919938.889 +1841 331433.333 1171652.778 +1842 331480.556 959511.111 +1843 331486.111 941500.000 +1844 331505.556 968233.333 +1845 331511.111 853722.222 +1846 331575.000 997333.333 +1847 331575.000 1057736.111 +1848 331580.556 1173497.222 +1849 331611.111 983852.778 +1850 331633.333 963597.222 +1851 331650.000 970291.667 +1852 331655.556 919413.889 +1853 331666.667 1017933.333 +1854 331688.889 908538.889 +1855 331730.556 849150.000 +1856 331730.556 862516.667 +1857 331780.556 866072.222 +1858 331786.111 991772.222 +1859 331800.000 964977.778 +1860 331805.556 947438.889 +1861 331811.111 1022738.889 +1862 331827.778 902227.778 +1863 331841.667 904891.667 +1864 331844.444 998933.333 +1865 331886.111 952211.111 +1866 331908.333 1013777.778 +1867 331938.889 987383.333 +1868 331958.333 800133.333 +1869 331958.333 1173786.111 +1870 331972.222 1043725.000 +1871 331975.000 966150.000 +1872 332000.000 1172416.667 +1873 332030.556 946800.000 +1874 332075.000 823919.444 +1875 332075.000 926661.111 +1876 332097.222 875691.667 +1877 332100.000 847444.444 +1878 332100.000 977544.444 +1879 332144.444 804480.556 +1880 332183.333 981583.333 +1881 332183.333 1170333.333 +1882 332280.556 917975.000 +1883 332288.889 875772.222 +1884 332333.333 825955.556 +1885 332341.667 864836.111 +1886 332341.667 975858.333 +1887 332344.444 885822.222 +1888 332347.222 848358.333 +1889 332361.111 968008.333 +1890 332377.778 915113.889 +1891 332400.000 1155180.556 +1892 332436.111 842288.889 +1893 332441.667 868163.889 +1894 332447.222 813588.889 +1895 332466.667 842641.667 +1896 332469.444 958997.222 +1897 332480.556 1005733.333 +1898 332511.111 808158.333 +1899 332558.333 1163741.667 +1900 332569.444 1033172.222 +1901 332611.111 938852.778 +1902 332613.889 972377.778 +1903 332619.444 905922.222 +1904 332652.778 842816.667 +1905 332666.667 892908.333 +1906 332669.444 932391.667 +1907 332697.222 908797.222 +1908 332736.111 858361.111 +1909 332755.556 829763.889 +1910 332775.000 850980.556 +1911 332780.556 863550.000 +1912 332858.333 965725.000 +1913 332938.889 1110955.556 +1914 332941.667 961944.444 +1915 332944.444 839661.111 +1916 332958.333 977986.111 +1917 332961.111 868436.111 +1918 332969.444 810350.000 +1919 332975.000 914936.111 +1920 333022.222 845538.889 +1921 333041.667 969858.333 +1922 333047.222 836833.333 +1923 333061.111 1118405.556 +1924 333088.889 854847.222 +1925 333100.000 891727.778 +1926 333105.556 857544.444 +1927 333138.889 820969.444 +1928 333158.333 926627.778 +1929 333200.000 879027.778 +1930 333208.333 902322.222 +1931 333225.000 804138.889 +1932 333225.000 811425.000 +1933 333244.444 967841.667 +1934 333266.667 833886.111 +1935 333286.111 912816.667 +1936 333288.889 925383.333 +1937 333288.889 1056038.889 +1938 333316.667 1056725.000 +1939 333319.444 897411.111 +1940 333327.778 943425.000 +1941 333369.444 1022061.111 +1942 333427.778 1183269.444 +1943 333438.889 864380.556 +1944 333452.778 1104525.000 +1945 333458.333 841091.667 +1946 333477.778 932097.222 +1947 333486.111 806830.556 +1948 333488.889 965483.333 +1949 333505.556 847766.667 +1950 333513.889 932955.556 +1951 333527.778 1117883.333 +1952 333536.111 905925.000 +1953 333577.778 812708.333 +1954 333583.333 935775.000 +1955 333583.333 976944.444 +1956 333625.000 951044.444 +1957 333630.556 971736.111 +1958 333647.222 927247.222 +1959 333652.778 934950.000 +1960 333702.778 1125830.556 +1961 333705.556 960686.111 +1962 333705.556 987525.000 +1963 333708.333 1119622.222 +1964 333733.333 956880.556 +1965 333763.889 1172502.778 +1966 333766.667 792947.222 +1967 333783.333 880152.778 +1968 333794.444 962472.222 +1969 333805.556 847997.222 +1970 333869.444 842830.556 +1971 333941.667 1045225.000 +1972 333941.667 1107858.333 +1973 333944.444 803475.000 +1974 333963.889 969602.778 +1975 333966.667 845958.333 +1976 333991.667 1108680.556 +1977 334016.667 869544.444 +1978 334025.000 814202.778 +1979 334052.778 908975.000 +1980 334069.444 826622.222 +1981 334100.000 910616.667 +1982 334111.111 930694.444 +1983 334111.111 1108419.444 +1984 334130.556 823852.778 +1985 334144.444 823127.778 +1986 334147.222 1119086.111 +1987 334150.000 1115488.889 +1988 334152.778 886438.889 +1989 334180.556 998186.111 +1990 334208.333 821622.222 +1991 334213.889 816858.333 +1992 334213.889 965769.444 +1993 334222.222 1118219.444 +1994 334247.222 959461.111 +1995 334250.000 940475.000 +1996 334255.556 869266.667 +1997 334266.667 941061.111 +1998 334269.444 1176111.111 +1999 334305.556 963383.333 +2000 334336.111 841488.889 +2001 334341.667 869472.222 +2002 334352.778 1122972.222 +2003 334352.778 1123575.000 +2004 334355.556 1123488.889 +2005 334358.333 861058.333 +2006 334372.222 1016430.556 +2007 334416.667 940375.000 +2008 334433.333 895716.667 +2009 334472.222 841469.444 +2010 334483.333 1120733.333 +2011 334486.111 844550.000 +2012 334486.111 867877.778 +2013 334491.667 996225.000 +2014 334500.000 905055.556 +2015 334500.000 1122586.111 +2016 334502.778 821983.333 +2017 334502.778 888183.333 +2018 334508.333 906550.000 +2019 334511.111 795611.111 +2020 334511.111 869966.667 +2021 334516.667 811255.556 +2022 334538.889 910072.222 +2023 334561.111 1024888.889 +2024 334597.222 944152.778 +2025 334613.889 869088.889 +2026 334636.111 1176783.333 +2027 334661.111 942883.333 +2028 334666.667 820166.667 +2029 334666.667 969180.556 +2030 334669.444 1176972.222 +2031 334672.222 995241.667 +2032 334705.556 825047.222 +2033 334705.556 952136.111 +2034 334750.000 804866.667 +2035 334763.889 1008552.778 +2036 334819.444 897280.556 +2037 334916.667 808558.333 +2038 334933.333 1123572.222 +2039 334936.111 1171475.000 +2040 334938.889 849138.889 +2041 334950.000 903197.222 +2042 334955.556 884272.222 +2043 334966.667 812794.444 +2044 334966.667 818922.222 +2045 335005.556 1177422.222 +2046 335016.667 819652.778 +2047 335016.667 1176616.667 +2048 335044.444 818691.667 +2049 335058.333 1020086.111 +2050 335086.111 946161.111 +2051 335086.111 966119.444 +2052 335091.667 1118983.333 +2053 335127.778 963922.222 +2054 335172.222 820758.333 +2055 335177.778 818441.667 +2056 335180.556 899205.556 +2057 335200.000 964836.111 +2058 335205.556 868025.000 +2059 335213.889 798788.889 +2060 335213.889 843538.889 +2061 335225.000 1177066.667 +2062 335252.778 914358.333 +2063 335261.111 953155.556 +2064 335308.333 805722.222 +2065 335308.333 819450.000 +2066 335311.111 1119419.444 +2067 335316.667 811233.333 +2068 335358.333 869972.222 +2069 335377.778 852533.333 +2070 335377.778 924697.222 +2071 335380.556 867072.222 +2072 335386.111 1121852.778 +2073 335400.000 891241.667 +2074 335405.556 892669.444 +2075 335422.222 1177822.222 +2076 335441.667 842338.889 +2077 335452.778 1055716.667 +2078 335461.111 957255.556 +2079 335480.556 865444.444 +2080 335508.333 790416.667 +2081 335508.333 818041.667 +2082 335519.444 947808.333 +2083 335538.889 828961.111 +2084 335552.778 890847.222 +2085 335575.000 807147.222 +2086 335588.889 978483.333 +2087 335602.778 817197.222 +2088 335605.556 1171572.222 +2089 335613.889 969108.333 +2090 335633.333 880813.889 +2091 335636.111 818080.556 +2092 335655.556 813036.111 +2093 335669.444 845811.111 +2094 335700.000 868963.889 +2095 335716.667 1160763.889 +2096 335725.000 844133.333 +2097 335750.000 838938.889 +2098 335755.556 831825.000 +2099 335772.222 961780.556 +2100 335772.222 962730.556 +2101 335777.778 1018547.222 +2102 335805.556 1122366.667 +2103 335808.333 799891.667 +2104 335830.556 843394.444 +2105 335833.333 867727.778 +2106 335833.333 959097.222 +2107 335844.444 928341.667 +2108 335861.111 862861.111 +2109 335869.444 845425.000 +2110 335869.444 879844.444 +2111 335872.222 1023775.000 +2112 335908.333 864908.333 +2113 335938.889 1123022.222 +2114 335941.667 992600.000 +2115 335955.556 834680.556 +2116 335955.556 986252.778 +2117 335966.667 838602.778 +2118 335975.000 1122711.111 +2119 335991.667 797444.444 +2120 335991.667 963663.889 +2121 336000.000 1176711.111 +2122 336008.333 869561.111 +2123 336016.667 907736.111 +2124 336047.222 867938.889 +2125 336058.333 789733.333 +2126 336063.889 843352.778 +2127 336075.000 886502.778 +2128 336077.778 927400.000 +2129 336080.556 803513.889 +2130 336086.111 912066.667 +2131 336102.778 964105.556 +2132 336102.778 1145955.556 +2133 336105.556 950525.000 +2134 336105.556 1145730.556 +2135 336125.000 920644.444 +2136 336125.000 1177119.444 +2137 336130.556 859611.111 +2138 336130.556 1123238.889 +2139 336141.667 858350.000 +2140 336155.556 811022.222 +2141 336188.889 838675.000 +2142 336188.889 1179280.556 +2143 336197.222 866088.889 +2144 336205.556 869713.889 +2145 336213.889 858441.667 +2146 336219.444 843691.667 +2147 336258.333 836125.000 +2148 336258.333 1176927.778 +2149 336261.111 859188.889 +2150 336288.889 913994.444 +2151 336288.889 917908.333 +2152 336288.889 919313.889 +2153 336305.556 1123325.000 +2154 336330.556 897111.111 +2155 336355.556 966086.111 +2156 336358.333 972225.000 +2157 336386.111 1173430.556 +2158 336411.111 1179177.778 +2159 336416.667 1058766.667 +2160 336416.667 1172900.000 +2161 336447.222 843258.333 +2162 336455.556 859125.000 +2163 336488.889 855875.000 +2164 336516.667 973761.111 +2165 336522.222 813613.889 +2166 336533.333 844494.444 +2167 336561.111 837183.333 +2168 336561.111 969066.667 +2169 336597.222 858316.667 +2170 336597.222 876000.000 +2171 336600.000 844102.778 +2172 336600.000 868127.778 +2173 336600.000 1012375.000 +2174 336602.778 1179983.333 +2175 336608.333 955552.778 +2176 336613.889 952663.889 +2177 336613.889 953855.556 +2178 336647.222 791027.778 +2179 336663.889 1016825.000 +2180 336669.444 935913.889 +2181 336675.000 798308.333 +2182 336675.000 840177.778 +2183 336694.444 1178222.222 +2184 336705.556 1015347.222 +2185 336741.667 941311.111 +2186 336741.667 1013872.222 +2187 336772.222 863966.667 +2188 336794.444 844394.444 +2189 336802.778 1161730.556 +2190 336833.333 789986.111 +2191 336844.444 878308.333 +2192 336861.111 864750.000 +2193 336888.889 788869.444 +2194 336888.889 1019977.778 +2195 336938.889 817672.222 +2196 336950.000 802111.111 +2197 336986.111 858397.222 +2198 337038.889 907263.889 +2199 337066.667 840316.667 +2200 337072.222 842719.444 +2201 337091.667 1171963.889 +2202 337091.667 1179527.778 +2203 337122.222 841052.778 +2204 337133.333 873886.111 +2205 337205.556 1162147.222 +2206 337211.111 851455.556 +2207 337213.889 1163875.000 +2208 337244.444 926155.556 +2209 337258.333 905513.889 +2210 337286.111 870902.778 +2211 337305.556 872844.444 +2212 337319.444 849191.667 +2213 337366.667 827394.444 +2214 337369.444 850325.000 +2215 337372.222 1018361.111 +2216 337380.556 810980.556 +2217 337397.222 1164119.444 +2218 337413.889 1181038.889 +2219 337430.556 1171083.333 +2220 337444.444 852880.556 +2221 337444.444 861558.333 +2222 337455.556 1178669.444 +2223 337458.333 1171741.667 +2224 337458.333 1178252.778 +2225 337475.000 1169711.111 +2226 337480.556 868086.111 +2227 337488.889 843880.556 +2228 337519.444 858113.889 +2229 337536.111 794477.778 +2230 337547.222 842675.000 +2231 337555.556 965363.889 +2232 337569.444 881088.889 +2233 337569.444 1183530.556 +2234 337591.667 966691.667 +2235 337591.667 1180058.333 +2236 337597.222 871833.333 +2237 337669.444 1181883.333 +2238 337688.889 898083.333 +2239 337713.889 842672.222 +2240 337733.333 868138.889 +2241 337738.889 1179405.556 +2242 337747.222 842963.889 +2243 337750.000 864716.667 +2244 337786.111 907213.889 +2245 337788.889 924916.667 +2246 337797.222 1164644.444 +2247 337802.778 843361.111 +2248 337825.000 1172277.778 +2249 337833.333 860025.000 +2250 337838.889 1169577.778 +2251 337855.556 1180841.667 +2252 337866.667 977255.556 +2253 337877.778 1178522.222 +2254 337877.778 1183572.222 +2255 337894.444 819297.222 +2256 337897.222 842641.667 +2257 337902.778 843061.111 +2258 337913.889 908569.444 +2259 337922.222 824791.667 +2260 337922.222 1183141.667 +2261 337936.111 842061.111 +2262 337938.889 846605.556 +2263 337947.222 837133.333 +2264 338005.556 1183891.667 +2265 338013.889 1171450.000 +2266 338025.000 851886.111 +2267 338025.000 933808.333 +2268 338025.000 1179922.222 +2269 338030.556 1180716.667 +2270 338080.556 841702.778 +2271 338094.444 842397.222 +2272 338094.444 905263.889 +2273 338111.111 1021633.333 +2274 338125.000 846344.444 +2275 338136.111 857613.889 +2276 338136.111 924127.778 +2277 338141.667 868094.444 +2278 338144.444 1178122.222 +2279 338161.111 986947.222 +2280 338169.444 811011.111 +2281 338169.444 1180363.889 +2282 338172.222 981950.000 +2283 338177.778 794494.444 +2284 338180.556 867427.778 +2285 338186.111 845825.000 +2286 338200.000 1163894.444 +2287 338247.222 870861.111 +2288 338250.000 885436.111 +2289 338302.778 1165444.444 +2290 338311.111 872775.000 +2291 338313.889 1180719.444 +2292 338313.889 1182811.111 +2293 338319.444 818011.111 +2294 338322.222 1018425.000 +2295 338333.333 1119500.000 +2296 338352.778 1179136.111 +2297 338358.333 790480.556 +2298 338358.333 1183397.222 +2299 338369.444 1099636.111 +2300 338388.889 839008.333 +2301 338388.889 907261.111 +2302 338452.778 816619.444 +2303 338463.889 1180458.333 +2304 338491.667 1183875.000 +2305 338530.556 965022.222 +2306 338533.333 910277.778 +2307 338536.111 1181330.556 +2308 338544.444 842172.222 +2309 338552.778 893113.889 +2310 338555.556 892844.444 +2311 338572.222 840200.000 +2312 338575.000 1154863.889 +2313 338594.444 846838.889 +2314 338622.222 1183986.111 +2315 338627.778 834088.889 +2316 338650.000 843366.667 +2317 338658.333 1180822.222 +2318 338675.000 827413.889 +2319 338675.000 1179972.222 +2320 338694.444 1015969.444 +2321 338702.778 1179244.444 +2322 338708.333 797555.556 +2323 338722.222 1178694.444 +2324 338752.778 1175655.556 +2325 338755.556 847622.222 +2326 338755.556 891772.222 +2327 338766.667 806930.556 +2328 338780.556 907272.222 +2329 338780.556 1175200.000 +2330 338816.667 1181161.111 +2331 338838.889 845144.444 +2332 338847.222 1184100.000 +2333 338869.444 914916.667 +2334 338883.333 1183080.556 +2335 338886.111 1178122.222 +2336 338894.444 1181588.889 +2337 338900.000 841430.556 +2338 338905.556 800186.111 +2339 338916.667 875261.111 +2340 338919.444 842988.889 +2341 338955.556 948261.111 +2342 338958.333 1182191.667 +2343 338966.667 979361.111 +2344 338980.556 842833.333 +2345 338983.333 889991.667 +2346 339016.667 881344.444 +2347 339022.222 1180808.333 +2348 339055.556 914988.889 +2349 339077.778 815475.000 +2350 339102.778 811047.222 +2351 339108.333 811358.333 +2352 339133.333 822936.111 +2353 339136.111 984930.556 +2354 339163.889 815136.111 +2355 339163.889 845447.222 +2356 339163.889 1183516.667 +2357 339166.667 928480.556 +2358 339166.667 1178991.667 +2359 339172.222 1023244.444 +2360 339172.222 1180111.111 +2361 339175.000 797441.667 +2362 339191.667 1184155.556 +2363 339202.778 803416.667 +2364 339202.778 1172777.778 +2365 339208.333 931538.889 +2366 339213.889 780205.556 +2367 339236.111 848408.333 +2368 339241.667 843786.111 +2369 339244.444 860225.000 +2370 339255.556 1168755.556 +2371 339288.889 878172.222 +2372 339294.444 1169763.889 +2373 339302.778 1182105.556 +2374 339319.444 1179452.778 +2375 339344.444 964283.333 +2376 339352.778 799327.778 +2377 339369.444 971163.889 +2378 339380.556 1183516.667 +2379 339383.333 943569.444 +2380 339397.222 862016.667 +2381 339400.000 1172427.778 +2382 339400.000 1181316.667 +2383 339411.111 842136.111 +2384 339427.778 918433.333 +2385 339441.667 909450.000 +2386 339455.556 938469.444 +2387 339461.111 843347.222 +2388 339472.222 903441.667 +2389 339472.222 1180844.444 +2390 339480.556 864727.778 +2391 339491.667 835347.222 +2392 339508.333 907677.778 +2393 339513.889 986683.333 +2394 339533.333 1173952.778 +2395 339547.222 860419.444 +2396 339561.111 839880.556 +2397 339583.333 921900.000 +2398 339605.556 1181844.444 +2399 339608.333 833780.556 +2400 339608.333 1179497.222 +2401 339608.333 1180408.333 +2402 339611.111 1165008.333 +2403 339616.667 1183522.222 +2404 339650.000 835966.667 +2405 339652.778 1181505.556 +2406 339655.556 810741.667 +2407 339655.556 879147.222 +2408 339669.444 832783.333 +2409 339672.222 941683.333 +2410 339680.556 1182241.667 +2411 339686.111 1127288.889 +2412 339725.000 1169763.889 +2413 339730.556 783861.111 +2414 339761.111 1179044.444 +2415 339766.667 896755.556 +2416 339775.000 1181861.111 +2417 339791.667 1180319.444 +2418 339813.889 812363.889 +2419 339816.667 1182241.667 +2420 339830.556 1180958.333 +2421 339838.889 997244.444 +2422 339841.667 884880.556 +2423 339844.444 1013372.222 +2424 339850.000 915608.333 +2425 339866.667 1181844.444 +2426 339875.000 802083.333 +2427 339875.000 822980.556 +2428 339886.111 838980.556 +2429 339897.222 834258.333 +2430 339911.111 963738.889 +2431 339919.444 893488.889 +2432 339925.000 837202.778 +2433 339925.000 1175155.556 +2434 339933.333 810741.667 +2435 339958.333 795702.778 +2436 339961.111 1174047.222 +2437 339966.667 779075.000 +2438 339980.556 858663.889 +2439 339986.111 967194.444 +2440 339997.222 791997.222 +2441 340005.556 810350.000 +2442 340013.889 817722.222 +2443 340016.667 887552.778 +2444 340022.222 950936.111 +2445 340025.000 850416.667 +2446 340027.778 841447.222 +2447 340066.667 900566.667 +2448 340094.444 1181044.444 +2449 340105.556 955094.444 +2450 340116.667 1174838.889 +2451 340119.444 1008216.667 +2452 340122.222 1003016.667 +2453 340122.222 1176880.556 +2454 340130.556 982319.444 +2455 340136.111 838277.778 +2456 340141.667 860066.667 +2457 340144.444 867469.444 +2458 340147.222 904316.667 +2459 340172.222 961425.000 +2460 340186.111 952661.111 +2461 340191.667 809900.000 +2462 340194.444 1184902.778 +2463 340200.000 979572.222 +2464 340200.000 1179486.111 +2465 340202.778 1178644.444 +2466 340211.111 1183955.556 +2467 340216.667 860886.111 +2468 340230.556 843616.667 +2469 340233.333 846155.556 +2470 340238.889 1181711.111 +2471 340252.778 877583.333 +2472 340261.111 863261.111 +2473 340272.222 958688.889 +2474 340291.667 947388.889 +2475 340291.667 989186.111 +2476 340336.111 1170422.222 +2477 340338.889 1173127.778 +2478 340350.000 778938.889 +2479 340377.778 943411.111 +2480 340444.444 907447.222 +2481 340452.778 1179427.778 +2482 340455.556 850561.111 +2483 340469.444 875497.222 +2484 340469.444 1165800.000 +2485 340483.333 1172602.778 +2486 340513.889 840713.889 +2487 340519.444 1180458.333 +2488 340522.222 1182427.778 +2489 340536.111 809613.889 +2490 340536.111 852550.000 +2491 340552.778 1177513.889 +2492 340561.111 788905.556 +2493 340583.333 1068908.333 +2494 340600.000 800716.667 +2495 340600.000 950030.556 +2496 340605.556 867675.000 +2497 340622.222 936897.222 +2498 340625.000 1180894.444 +2499 340625.000 1181219.444 +2500 340633.333 1176500.000 +2501 340636.111 831255.556 +2502 340638.889 809583.333 +2503 340641.667 1018433.333 +2504 340658.333 846769.444 +2505 340677.778 1025238.889 +2506 340680.556 981902.778 +2507 340686.111 1179380.556 +2508 340686.111 1180266.667 +2509 340700.000 883911.111 +2510 340702.778 1173950.000 +2511 340722.222 860333.333 +2512 340736.111 1098563.889 +2513 340736.111 1183994.444 +2514 340738.889 1173127.778 +2515 340750.000 925552.778 +2516 340752.778 842941.667 +2517 340805.556 1180719.444 +2518 340808.333 844113.889 +2519 340813.889 865911.111 +2520 340852.778 1179600.000 +2521 340858.333 811833.333 +2522 340888.889 886222.222 +2523 340900.000 1178894.444 +2524 340900.000 1183608.333 +2525 340902.778 967713.889 +2526 340922.222 825958.333 +2527 340922.222 1174341.667 +2528 340952.778 1181261.111 +2529 340961.111 1181050.000 +2530 340966.667 1177188.889 +2531 340975.000 1176475.000 +2532 340977.778 985702.778 +2533 341008.333 1177669.444 +2534 341013.889 845194.444 +2535 341030.556 1178450.000 +2536 341066.667 1178058.333 +2537 341069.444 1179344.444 +2538 341072.222 1180569.444 +2539 341111.111 828672.222 +2540 341111.111 1092908.333 +2541 341161.111 887116.667 +2542 341161.111 1181494.444 +2543 341166.667 1072433.333 +2544 341172.222 913763.889 +2545 341191.667 940163.889 +2546 341191.667 1164450.000 +2547 341205.556 840044.444 +2548 341208.333 930536.111 +2549 341213.889 1173022.222 +2550 341213.889 1181055.556 +2551 341244.444 1014411.111 +2552 341258.333 1099369.444 +2553 341266.667 962630.556 +2554 341283.333 1172077.778 +2555 341333.333 1092852.778 +2556 341336.111 1179066.667 +2557 341344.444 778819.444 +2558 341347.222 799400.000 +2559 341347.222 1163122.222 +2560 341355.556 1160533.333 +2561 341361.111 1178644.444 +2562 341394.444 1179763.889 +2563 341397.222 1180344.444 +2564 341422.222 879886.111 +2565 341463.889 874022.222 +2566 341469.444 1179700.000 +2567 341477.778 1181436.111 +2568 341477.778 1191941.667 +2569 341480.556 1179980.556 +2570 341486.111 788769.444 +2571 341500.000 1142883.333 +2572 341513.889 896313.889 +2573 341519.444 856788.889 +2574 341541.667 1173433.333 +2575 341544.444 992647.222 +2576 341544.444 1099727.778 +2577 341602.778 1186513.889 +2578 341616.667 1180519.444 +2579 341650.000 848000.000 +2580 341669.444 979972.222 +2581 341686.111 800627.778 +2582 341705.556 1188366.667 +2583 341733.333 901375.000 +2584 341738.889 845013.889 +2585 341741.667 971433.333 +2586 341747.222 868436.111 +2587 341750.000 820241.667 +2588 341752.778 972625.000 +2589 341780.556 794008.333 +2590 341780.556 823791.667 +2591 341783.333 975922.222 +2592 341791.667 778477.778 +2593 341833.333 1021341.667 +2594 341850.000 839252.778 +2595 341858.333 968802.778 +2596 341861.111 1033338.889 +2597 341866.667 851747.222 +2598 341872.222 969841.667 +2599 341897.222 1181302.778 +2600 341941.667 887197.222 +2601 341952.778 797627.778 +2602 341952.778 821619.444 +2603 341975.000 1191761.111 +2604 342000.000 905708.333 +2605 342005.556 861663.889 +2606 342016.667 902833.333 +2607 342022.222 871813.889 +2608 342038.889 834572.222 +2609 342047.222 830308.333 +2610 342055.556 792547.222 +2611 342072.222 841402.778 +2612 342083.333 777966.667 +2613 342091.667 778438.889 +2614 342091.667 815333.333 +2615 342102.778 778869.444 +2616 342116.667 1016897.222 +2617 342133.333 886644.444 +2618 342163.889 1190366.667 +2619 342177.778 905419.444 +2620 342180.556 802486.111 +2621 342200.000 856077.778 +2622 342255.556 779450.000 +2623 342263.889 876213.889 +2624 342263.889 1027233.333 +2625 342272.222 806894.444 +2626 342275.000 838844.444 +2627 342283.333 920030.556 +2628 342283.333 986841.667 +2629 342308.333 1113244.444 +2630 342311.111 956200.000 +2631 342322.222 1191716.667 +2632 342330.556 974875.000 +2633 342330.556 1024102.778 +2634 342336.111 791488.889 +2635 342361.111 966783.333 +2636 342366.667 844908.333 +2637 342369.444 849441.667 +2638 342408.333 990752.778 +2639 342419.444 853358.333 +2640 342419.444 1172847.222 +2641 342463.889 806072.222 +2642 342477.778 889986.111 +2643 342483.333 1171883.333 +2644 342527.778 835616.667 +2645 342541.667 1100291.667 +2646 342563.889 902719.444 +2647 342563.889 995163.889 +2648 342569.444 851647.222 +2649 342575.000 887033.333 +2650 342638.889 858605.556 +2651 342647.222 934608.333 +2652 342675.000 862088.889 +2653 342719.444 982355.556 +2654 342722.222 778188.889 +2655 342738.889 884091.667 +2656 342738.889 920908.333 +2657 342744.444 816188.889 +2658 342772.222 878286.111 +2659 342819.444 1184380.556 +2660 342827.778 847452.778 +2661 342847.222 831444.444 +2662 342855.556 1188811.111 +2663 342869.444 831102.778 +2664 342883.333 779213.889 +2665 342927.778 913377.778 +2666 342977.778 838241.667 +2667 342977.778 997400.000 +2668 342997.222 798763.889 +2669 343047.222 819830.556 +2670 343063.889 826638.889 +2671 343069.444 924011.111 +2672 343083.333 908519.444 +2673 343113.889 899441.667 +2674 343133.333 790375.000 +2675 343144.444 971425.000 +2676 343180.556 864958.333 +2677 343188.889 785002.778 +2678 343191.667 918472.222 +2679 343205.556 784022.222 +2680 343219.444 788272.222 +2681 343241.667 884911.111 +2682 343266.667 935505.556 +2683 343333.333 823880.556 +2684 343336.111 834991.667 +2685 343366.667 850713.889 +2686 343369.444 794313.889 +2687 343380.556 843766.667 +2688 343386.111 787033.333 +2689 343455.556 791658.333 +2690 343461.111 831100.000 +2691 343508.333 877063.889 +2692 343513.889 860008.333 +2693 343527.778 829322.222 +2694 343530.556 890230.556 +2695 343541.667 1190583.333 +2696 343555.556 779002.778 +2697 343580.556 862947.222 +2698 343597.222 983075.000 +2699 343608.333 1176325.000 +2700 343616.667 810855.556 +2701 343622.222 928127.778 +2702 343661.111 1010566.667 +2703 343663.889 1017480.556 +2704 343683.333 869086.111 +2705 343686.111 849341.667 +2706 343688.889 979636.111 +2707 343694.444 906388.889 +2708 343713.889 1193055.556 +2709 343738.889 800736.111 +2710 343763.889 886816.667 +2711 343805.556 810866.667 +2712 343819.444 843711.111 +2713 343847.222 1185300.000 +2714 343850.000 1021152.778 +2715 343858.333 961280.556 +2716 343875.000 836663.889 +2717 343886.111 1030508.333 +2718 343919.444 990180.556 +2719 343925.000 1008972.222 +2720 343936.111 800697.222 +2721 343983.333 822469.444 +2722 343988.889 1195175.000 +2723 343991.667 1189172.222 +2724 344000.000 1192991.667 +2725 344047.222 1032047.222 +2726 344147.222 818113.889 +2727 344152.778 1187930.556 +2728 344163.889 793713.889 +2729 344219.444 917061.111 +2730 344233.333 1197033.333 +2731 344244.444 930950.000 +2732 344263.889 1002036.111 +2733 344263.889 1173000.000 +2734 344302.778 1036319.444 +2735 344319.444 902208.333 +2736 344358.333 831069.444 +2737 344361.111 847000.000 +2738 344397.222 881408.333 +2739 344433.333 869352.778 +2740 344436.111 1186086.111 +2741 344441.667 857197.222 +2742 344450.000 921830.556 +2743 344463.889 823916.667 +2744 344466.667 859041.667 +2745 344480.556 1192419.444 +2746 344550.000 936800.000 +2747 344600.000 976736.111 +2748 344650.000 1100905.556 +2749 344666.667 960530.556 +2750 344672.222 835738.889 +2751 344677.778 844291.667 +2752 344688.889 802561.111 +2753 344705.556 826708.333 +2754 344716.667 1042450.000 +2755 344719.444 996477.778 +2756 344725.000 818808.333 +2757 344741.667 1013041.667 +2758 344750.000 782025.000 +2759 344805.556 853477.778 +2760 344811.111 872933.333 +2761 344811.111 983827.778 +2762 344838.889 1143216.667 +2763 344847.222 854763.889 +2764 344872.222 786563.889 +2765 344916.667 835375.000 +2766 344941.667 858477.778 +2767 344941.667 890077.778 +2768 344966.667 791144.444 +2769 344988.889 820144.444 +2770 345002.778 915525.000 +2771 345008.333 1171850.000 +2772 345013.889 926363.889 +2773 345022.222 979575.000 +2774 345025.000 849511.111 +2775 345025.000 901986.111 +2776 345027.778 816116.667 +2777 345027.778 991405.556 +2778 345033.333 826502.778 +2779 345036.111 930550.000 +2780 345044.444 971191.667 +2781 345077.778 877286.111 +2782 345077.778 969680.556 +2783 345094.444 886352.778 +2784 345105.556 899397.222 +2785 345113.889 835272.222 +2786 345125.000 798511.111 +2787 345133.333 1100777.778 +2788 345136.111 1028825.000 +2789 345186.111 835008.333 +2790 345202.778 1062405.556 +2791 345227.778 824944.444 +2792 345230.556 869702.778 +2793 345250.000 868947.222 +2794 345286.111 862533.333 +2795 345325.000 839850.000 +2796 345358.333 1017580.556 +2797 345361.111 1172902.778 +2798 345363.889 792916.667 +2799 345380.556 962183.333 +2800 345386.111 787877.778 +2801 345400.000 1124677.778 +2802 345438.889 853105.556 +2803 345441.667 919688.889 +2804 345486.111 994219.444 +2805 345505.556 906416.667 +2806 345508.333 1023113.889 +2807 345516.667 805838.889 +2808 345519.444 779263.889 +2809 345555.556 909127.778 +2810 345566.667 936338.889 +2811 345622.222 858125.000 +2812 345636.111 1118536.111 +2813 345644.444 925866.667 +2814 345650.000 835452.778 +2815 345688.889 856150.000 +2816 345719.444 931730.556 +2817 345750.000 809022.222 +2818 345772.222 833325.000 +2819 345794.444 795466.667 +2820 345794.444 1181155.556 +2821 345811.111 1132038.889 +2822 345827.778 1174083.333 +2823 345861.111 942394.444 +2824 345894.444 953525.000 +2825 345930.556 806755.556 +2826 345958.333 911997.222 +2827 345958.333 1201366.667 +2828 345969.444 837633.333 +2829 346016.667 1052077.778 +2830 346047.222 964238.889 +2831 346058.333 869833.333 +2832 346080.556 821136.111 +2833 346086.111 983900.000 +2834 346100.000 1123150.000 +2835 346125.000 835250.000 +2836 346136.111 1201916.667 +2837 346144.444 1200788.889 +2838 346172.222 796850.000 +2839 346175.000 899686.111 +2840 346180.556 790088.889 +2841 346183.333 824780.556 +2842 346200.000 923952.778 +2843 346227.778 973961.111 +2844 346275.000 968405.556 +2845 346277.778 862744.444 +2846 346291.667 786055.556 +2847 346294.444 986283.333 +2848 346350.000 857672.222 +2849 346377.778 978172.222 +2850 346380.556 993336.111 +2851 346391.667 1204569.444 +2852 346402.778 784841.667 +2853 346416.667 1027236.111 +2854 346433.333 971641.667 +2855 346447.222 824702.778 +2856 346452.778 1182172.222 +2857 346461.111 893052.778 +2858 346480.556 979577.778 +2859 346500.000 803891.667 +2860 346516.667 827838.889 +2861 346525.000 965258.333 +2862 346563.889 819652.778 +2863 346580.556 885666.667 +2864 346588.889 989513.889 +2865 346627.778 1067758.333 +2866 346647.222 830966.667 +2867 346686.111 795455.556 +2868 346708.333 890263.889 +2869 346719.444 929986.111 +2870 346722.222 860341.667 +2871 346777.778 769511.111 +2872 346780.556 829316.667 +2873 346800.000 791952.778 +2874 346811.111 874061.111 +2875 346833.333 828375.000 +2876 346844.444 903827.778 +2877 346855.556 829533.333 +2878 346875.000 771194.444 +2879 346883.333 999116.667 +2880 346888.889 821958.333 +2881 346930.556 913136.111 +2882 346950.000 765597.222 +2883 346972.222 989491.667 +2884 346975.000 798836.111 +2885 346980.556 1181358.333 +2886 346988.889 767405.556 +2887 347008.333 875288.889 +2888 347016.667 863758.333 +2889 347022.222 824647.222 +2890 347047.222 812144.444 +2891 347047.222 852819.444 +2892 347141.667 856808.333 +2893 347180.556 766641.667 +2894 347202.778 807711.111 +2895 347205.556 958988.889 +2896 347227.778 767263.889 +2897 347241.667 827813.889 +2898 347247.222 1005336.111 +2899 347297.222 889505.556 +2900 347302.778 865861.111 +2901 347311.111 877025.000 +2902 347338.889 824438.889 +2903 347350.000 793491.667 +2904 347355.556 779955.556 +2905 347358.333 800883.333 +2906 347369.444 822544.444 +2907 347394.444 820372.222 +2908 347400.000 972219.444 +2909 347436.111 1018541.667 +2910 347447.222 876675.000 +2911 347463.889 922894.444 +2912 347502.778 981713.889 +2913 347513.889 950477.778 +2914 347538.889 774305.556 +2915 347569.444 879727.778 +2916 347575.000 1124530.556 +2917 347583.333 1060552.778 +2918 347588.889 796108.333 +2919 347600.000 827538.889 +2920 347647.222 830641.667 +2921 347650.000 876986.111 +2922 347658.333 847700.000 +2923 347694.444 922669.444 +2924 347697.222 849702.778 +2925 347711.111 794438.889 +2926 347711.111 1120572.222 +2927 347730.556 803919.444 +2928 347736.111 907575.000 +2929 347738.889 794630.556 +2930 347744.444 966780.556 +2931 347780.556 923488.889 +2932 347786.111 823102.778 +2933 347794.444 993350.000 +2934 347802.778 982919.444 +2935 347808.333 915808.333 +2936 347825.000 979566.667 +2937 347830.556 917463.889 +2938 347838.889 918997.222 +2939 347861.111 783944.444 +2940 347863.889 768594.444 +2941 347877.778 826925.000 +2942 347966.667 969591.667 +2943 347997.222 876772.222 +2944 348000.000 824244.444 +2945 348027.778 869716.667 +2946 348061.111 1067327.778 +2947 348116.667 881900.000 +2948 348150.000 791833.333 +2949 348150.000 922241.667 +2950 348150.000 1023972.222 +2951 348172.222 974055.556 +2952 348227.778 1189438.889 +2953 348230.556 982438.889 +2954 348238.889 899936.111 +2955 348247.222 824194.444 +2956 348252.778 1068380.556 +2957 348255.556 872947.222 +2958 348258.333 774597.222 +2959 348266.667 972588.889 +2960 348288.889 958436.111 +2961 348297.222 826016.667 +2962 348347.222 976022.222 +2963 348405.556 850427.778 +2964 348405.556 883147.222 +2965 348422.222 826447.222 +2966 348450.000 955572.222 +2967 348480.556 1146133.333 +2968 348513.889 865722.222 +2969 348525.000 823941.667 +2970 348544.444 955819.444 +2971 348561.111 1002133.333 +2972 348611.111 966652.778 +2973 348613.889 824316.667 +2974 348627.778 875375.000 +2975 348638.889 800013.889 +2976 348638.889 843241.667 +2977 348641.667 1181625.000 +2978 348661.111 921100.000 +2979 348686.111 858394.444 +2980 348697.222 1117602.778 +2981 348711.111 852908.333 +2982 348719.444 855091.667 +2983 348719.444 995038.889 +2984 348722.222 896905.556 +2985 348761.111 839583.333 +2986 348766.667 1171030.556 +2987 348777.778 824241.667 +2988 348780.556 834011.111 +2989 348788.889 769016.667 +2990 348788.889 964122.222 +2991 348794.444 819663.889 +2992 348833.333 827075.000 +2993 348847.222 796944.444 +2994 348852.778 824561.111 +2995 348877.778 793663.889 +2996 348877.778 911944.444 +2997 348891.667 946005.556 +2998 348905.556 809566.667 +2999 348936.111 983655.556 +3000 348963.889 982002.778 +3001 348983.333 940905.556 +3002 348988.889 817619.444 +3003 349022.222 1101575.000 +3004 349025.000 790119.444 +3005 349047.222 772316.667 +3006 349050.000 1168194.444 +3007 349069.444 1066802.778 +3008 349105.556 818530.556 +3009 349127.778 911100.000 +3010 349147.222 977783.333 +3011 349158.333 851091.667 +3012 349180.556 797627.778 +3013 349180.556 833855.556 +3014 349180.556 973141.667 +3015 349186.111 953088.889 +3016 349202.778 822963.889 +3017 349225.000 817427.778 +3018 349236.111 777741.667 +3019 349238.889 819330.556 +3020 349244.444 807436.111 +3021 349277.778 957155.556 +3022 349283.333 820991.667 +3023 349319.444 981400.000 +3024 349322.222 865719.444 +3025 349330.556 837772.222 +3026 349330.556 838472.222 +3027 349333.333 957694.444 +3028 349363.889 818794.444 +3029 349377.778 821452.778 +3030 349377.778 1008877.778 +3031 349386.111 822272.222 +3032 349386.111 1046819.444 +3033 349391.667 797741.667 +3034 349430.556 797872.222 +3035 349447.222 818377.778 +3036 349475.000 857144.444 +3037 349480.556 821275.000 +3038 349491.667 904713.889 +3039 349494.444 819322.222 +3040 349508.333 821061.111 +3041 349508.333 950800.000 +3042 349511.111 946369.444 +3043 349527.778 785088.889 +3044 349530.556 1204347.222 +3045 349569.444 924272.222 +3046 349580.556 819908.333 +3047 349580.556 852233.333 +3048 349594.444 967525.000 +3049 349611.111 819675.000 +3050 349616.667 898294.444 +3051 349622.222 779625.000 +3052 349622.222 993802.778 +3053 349672.222 947244.444 +3054 349675.000 799847.222 +3055 349675.000 824436.111 +3056 349680.556 800769.444 +3057 349691.667 873711.111 +3058 349702.778 789455.556 +3059 349716.667 1205708.333 +3060 349722.222 909025.000 +3061 349744.444 920163.889 +3062 349769.444 914950.000 +3063 349775.000 853577.778 +3064 349808.333 792244.444 +3065 349830.556 852861.111 +3066 349841.667 804494.444 +3067 349841.667 819266.667 +3068 349852.778 805497.222 +3069 349861.111 843713.889 +3070 349883.333 803672.222 +3071 349894.444 969233.333 +3072 349894.444 992491.667 +3073 349900.000 1060486.111 +3074 349919.444 818350.000 +3075 349919.444 868466.667 +3076 349919.444 868469.444 +3077 349936.111 802647.222 +3078 349941.667 812422.222 +3079 349941.667 853494.444 +3080 349958.333 792263.889 +3081 349977.778 783236.111 +3082 349991.667 780913.889 +3083 349994.444 1176488.889 +3084 350025.000 809800.000 +3085 350047.222 928025.000 +3086 350072.222 809452.778 +3087 350075.000 802011.111 +3088 350080.556 907897.222 +3089 350080.556 912511.111 +3090 350122.222 857044.444 +3091 350130.556 907225.000 +3092 350133.333 786941.667 +3093 350136.111 973608.333 +3094 350141.667 852519.444 +3095 350147.222 973352.778 +3096 350152.778 785033.333 +3097 350158.333 819750.000 +3098 350166.667 818041.667 +3099 350169.444 1178347.222 +3100 350227.778 943811.111 +3101 350241.667 810280.556 +3102 350241.667 1106966.667 +3103 350294.444 990927.778 +3104 350308.333 766933.333 +3105 350319.444 787950.000 +3106 350322.222 932230.556 +3107 350413.889 821044.444 +3108 350419.444 896644.444 +3109 350427.778 1204750.000 +3110 350450.000 896216.667 +3111 350455.556 853097.222 +3112 350469.444 820902.778 +3113 350477.778 856719.444 +3114 350511.111 862697.222 +3115 350522.222 868886.111 +3116 350525.000 788786.111 +3117 350525.000 831969.444 +3118 350525.000 979361.111 +3119 350525.000 1181730.556 +3120 350530.556 850502.778 +3121 350536.111 946233.333 +3122 350538.889 933933.333 +3123 350550.000 777466.667 +3124 350552.778 871575.000 +3125 350561.111 884352.778 +3126 350588.889 1194000.000 +3127 350594.444 942525.000 +3128 350644.444 888908.333 +3129 350705.556 918794.444 +3130 350711.111 797616.667 +3131 350716.667 816500.000 +3132 350725.000 982433.333 +3133 350741.667 856261.111 +3134 350766.667 806694.444 +3135 350777.778 874397.222 +3136 350800.000 816330.556 +3137 350802.778 963988.889 +3138 350822.222 942630.556 +3139 350830.556 808925.000 +3140 350833.333 980875.000 +3141 350838.889 922077.778 +3142 350844.444 1066505.556 +3143 350872.222 973347.222 +3144 350875.000 840347.222 +3145 350886.111 770352.778 +3146 350886.111 924419.444 +3147 350905.556 806863.889 +3148 350930.556 934483.333 +3149 350950.000 789558.333 +3150 350963.889 787841.667 +3151 350975.000 987461.111 +3152 350977.778 984352.778 +3153 350988.889 1206113.889 +3154 351036.111 986033.333 +3155 351044.444 801094.444 +3156 351055.556 830966.667 +3157 351083.333 770444.444 +3158 351097.222 794725.000 +3159 351111.111 812266.667 +3160 351116.667 1013627.778 +3161 351127.778 918222.222 +3162 351136.111 851380.556 +3163 351161.111 781363.889 +3164 351166.667 807238.889 +3165 351186.111 1205897.222 +3166 351211.111 815161.111 +3167 351216.667 1206202.778 +3168 351225.000 853438.889 +3169 351227.778 953708.333 +3170 351258.333 1179850.000 +3171 351302.778 967755.556 +3172 351313.889 794297.222 +3173 351322.222 1184480.556 +3174 351347.222 1194552.778 +3175 351347.222 1194716.667 +3176 351377.778 976577.778 +3177 351391.667 973944.444 +3178 351400.000 939213.889 +3179 351411.111 848722.222 +3180 351425.000 1194555.556 +3181 351427.778 767705.556 +3182 351427.778 1206402.778 +3183 351436.111 828213.889 +3184 351447.222 768025.000 +3185 351461.111 966697.222 +3186 351463.889 901844.444 +3187 351483.333 818611.111 +3188 351494.444 900488.889 +3189 351497.222 949705.556 +3190 351508.333 927438.889 +3191 351508.333 938066.667 +3192 351519.444 865705.556 +3193 351522.222 1078425.000 +3194 351536.111 781055.556 +3195 351544.444 1194552.778 +3196 351577.778 991750.000 +3197 351586.111 964930.556 +3198 351594.444 848766.667 +3199 351600.000 926405.556 +3200 351608.333 848577.778 +3201 351619.444 1066422.222 +3202 351644.444 860105.556 +3203 351647.222 853013.889 +3204 351672.222 946722.222 +3205 351677.778 789730.556 +3206 351697.222 1078902.778 +3207 351700.000 885922.222 +3208 351716.667 1037244.444 +3209 351738.889 793925.000 +3210 351741.667 846536.111 +3211 351741.667 877377.778 +3212 351744.444 814500.000 +3213 351750.000 821894.444 +3214 351794.444 806475.000 +3215 351858.333 861122.222 +3216 351863.889 947855.556 +3217 351872.222 773211.111 +3218 351883.333 982602.778 +3219 351894.444 854858.333 +3220 351894.444 1140522.222 +3221 351902.778 944108.333 +3222 351958.333 851847.222 +3223 351980.556 1116505.556 +3224 351997.222 870308.333 +3225 352005.556 1067005.556 +3226 352013.889 855191.667 +3227 352016.667 838241.667 +3228 352030.556 859211.111 +3229 352036.111 1011063.889 +3230 352044.444 898738.889 +3231 352086.111 851269.444 +3232 352091.667 1188275.000 +3233 352097.222 860794.444 +3234 352144.444 901963.889 +3235 352152.778 998661.111 +3236 352191.667 812058.333 +3237 352219.444 1018308.333 +3238 352225.000 974391.667 +3239 352230.556 931577.778 +3240 352244.444 907866.667 +3241 352244.444 966702.778 +3242 352247.222 882491.667 +3243 352250.000 903250.000 +3244 352255.556 803291.667 +3245 352269.444 808433.333 +3246 352302.778 810427.778 +3247 352311.111 944777.778 +3248 352316.667 916675.000 +3249 352325.000 1005994.444 +3250 352333.333 827344.444 +3251 352336.111 886063.889 +3252 352338.889 923875.000 +3253 352352.778 815147.222 +3254 352358.333 883905.556 +3255 352361.111 823494.444 +3256 352361.111 851986.111 +3257 352369.444 974061.111 +3258 352375.000 962413.889 +3259 352377.778 1066061.111 +3260 352380.556 1189141.667 +3261 352386.111 810752.778 +3262 352386.111 1066666.667 +3263 352391.667 944258.333 +3264 352400.000 858397.222 +3265 352411.111 946197.222 +3266 352422.222 873347.222 +3267 352427.778 1024277.778 +3268 352436.111 893500.000 +3269 352450.000 813413.889 +3270 352463.889 929363.889 +3271 352472.222 975994.444 +3272 352480.556 930488.889 +3273 352494.444 1121902.778 +3274 352505.556 917361.111 +3275 352530.556 821972.222 +3276 352536.111 951227.778 +3277 352541.667 827002.778 +3278 352555.556 793725.000 +3279 352555.556 949213.889 +3280 352561.111 792825.000 +3281 352561.111 889877.778 +3282 352561.111 912000.000 +3283 352569.444 783525.000 +3284 352577.778 969363.889 +3285 352591.667 810755.556 +3286 352597.222 804255.556 +3287 352597.222 1189133.333 +3288 352602.778 857361.111 +3289 352605.556 971194.444 +3290 352619.444 811875.000 +3291 352625.000 775819.444 +3292 352633.333 905711.111 +3293 352677.778 811030.556 +3294 352700.000 916397.222 +3295 352705.556 861280.556 +3296 352722.222 810483.333 +3297 352747.222 812102.778 +3298 352750.000 904666.667 +3299 352766.667 991347.222 +3300 352783.333 931336.111 +3301 352800.000 824222.222 +3302 352822.222 913652.778 +3303 352827.778 1206586.111 +3304 352830.556 863741.667 +3305 352847.222 812841.667 +3306 352861.111 811305.556 +3307 352872.222 955822.222 +3308 352888.889 811450.000 +3309 352908.333 978119.444 +3310 352911.111 996397.222 +3311 352919.444 937297.222 +3312 352922.222 815358.333 +3313 352927.778 936344.444 +3314 352950.000 797455.556 +3315 352963.889 847480.556 +3316 352969.444 940361.111 +3317 352980.556 810161.111 +3318 352983.333 824833.333 +3319 353000.000 1065505.556 +3320 353052.778 767888.889 +3321 353061.111 786091.667 +3322 353066.667 777883.333 +3323 353083.333 771544.444 +3324 353088.889 983416.667 +3325 353097.222 915677.778 +3326 353105.556 818588.889 +3327 353111.111 824441.667 +3328 353127.778 979441.667 +3329 353163.889 811763.889 +3330 353186.111 824611.111 +3331 353194.444 877622.222 +3332 353227.778 838075.000 +3333 353233.333 845250.000 +3334 353236.111 806561.111 +3335 353236.111 873036.111 +3336 353255.556 943013.889 +3337 353258.333 896161.111 +3338 353263.889 891494.444 +3339 353266.667 786763.889 +3340 353272.222 969250.000 +3341 353288.889 817588.889 +3342 353288.889 932527.778 +3343 353338.889 818652.778 +3344 353355.556 961361.111 +3345 353361.111 941730.556 +3346 353375.000 857041.667 +3347 353394.444 974863.889 +3348 353413.889 898972.222 +3349 353425.000 779088.889 +3350 353458.333 794172.222 +3351 353463.889 824722.222 +3352 353488.889 991700.000 +3353 353500.000 802002.778 +3354 353511.111 855677.778 +3355 353544.444 944338.889 +3356 353561.111 952652.778 +3357 353575.000 780061.111 +3358 353583.333 798947.222 +3359 353588.889 810972.222 +3360 353597.222 797800.000 +3361 353600.000 819294.444 +3362 353613.889 868397.222 +3363 353619.444 862094.444 +3364 353627.778 842941.667 +3365 353652.778 1034102.778 +3366 353658.333 1208488.889 +3367 353691.667 819569.444 +3368 353694.444 824930.556 +3369 353713.889 853905.556 +3370 353725.000 774377.778 +3371 353733.333 1190177.778 +3372 353736.111 832261.111 +3373 353780.556 987816.667 +3374 353786.111 813791.667 +3375 353797.222 902577.778 +3376 353819.444 785488.889 +3377 353833.333 1191088.889 +3378 353841.667 922155.556 +3379 353841.667 977241.667 +3380 353847.222 779930.556 +3381 353858.333 943983.333 +3382 353869.444 879952.778 +3383 353877.778 805958.333 +3384 353916.667 979411.111 +3385 353991.667 788161.111 +3386 354005.556 1194686.111 +3387 354013.889 931141.667 +3388 354019.444 797844.444 +3389 354019.444 907530.556 +3390 354019.444 974811.111 +3391 354025.000 812025.000 +3392 354025.000 1082227.778 +3393 354058.333 801169.444 +3394 354061.111 945986.111 +3395 354077.778 786722.222 +3396 354105.556 808430.556 +3397 354116.667 902783.333 +3398 354119.444 994038.889 +3399 354130.556 787358.333 +3400 354133.333 780711.111 +3401 354175.000 816430.556 +3402 354197.222 1190202.778 +3403 354211.111 945144.444 +3404 354219.444 992791.667 +3405 354230.556 914558.333 +3406 354244.444 844875.000 +3407 354266.667 918366.667 +3408 354286.111 794933.333 +3409 354288.889 815016.667 +3410 354294.444 857230.556 +3411 354302.778 942313.889 +3412 354308.333 834475.000 +3413 354325.000 936152.778 +3414 354325.000 963047.222 +3415 354338.889 795872.222 +3416 354338.889 1064461.111 +3417 354341.667 806208.333 +3418 354352.778 1011725.000 +3419 354358.333 970911.111 +3420 354363.889 1008052.778 +3421 354366.667 943480.556 +3422 354372.222 936727.778 +3423 354391.667 886413.889 +3424 354397.222 959816.667 +3425 354405.556 933877.778 +3426 354411.111 897780.556 +3427 354419.444 974405.556 +3428 354427.778 845930.556 +3429 354427.778 1208911.111 +3430 354447.222 784272.222 +3431 354452.778 1002705.556 +3432 354469.444 850844.444 +3433 354491.667 867888.889 +3434 354491.667 898150.000 +3435 354494.444 973963.889 +3436 354580.556 959411.111 +3437 354602.778 947872.222 +3438 354622.222 894019.444 +3439 354638.889 815219.444 +3440 354658.333 781608.333 +3441 354666.667 856541.667 +3442 354675.000 975161.111 +3443 354686.111 830041.667 +3444 354700.000 955227.778 +3445 354713.889 934663.889 +3446 354713.889 983552.778 +3447 354725.000 774158.333 +3448 354736.111 812547.222 +3449 354777.778 942216.667 +3450 354797.222 791805.556 +3451 354816.667 860886.111 +3452 354833.333 864602.778 +3453 354866.667 808602.778 +3454 354866.667 966847.222 +3455 354869.444 938275.000 +3456 354872.222 806219.444 +3457 354886.111 829888.889 +3458 354894.444 971633.333 +3459 354894.444 1206697.222 +3460 354900.000 903586.111 +3461 354911.111 973227.778 +3462 354913.889 920311.111 +3463 354922.222 941375.000 +3464 354938.889 850125.000 +3465 354941.667 953052.778 +3466 354969.444 779822.222 +3467 354975.000 972686.111 +3468 354983.333 949694.444 +3469 354991.667 808488.889 +3470 355005.556 940513.889 +3471 355033.333 969025.000 +3472 355041.667 974458.333 +3473 355066.667 977622.222 +3474 355069.444 787394.444 +3475 355077.778 901469.444 +3476 355083.333 783397.222 +3477 355125.000 771008.333 +3478 355133.333 845452.778 +3479 355147.222 847902.778 +3480 355147.222 1063652.778 +3481 355150.000 882452.778 +3482 355155.556 989669.444 +3483 355186.111 976319.444 +3484 355197.222 843636.111 +3485 355225.000 976186.111 +3486 355227.778 973769.444 +3487 355261.111 987072.222 +3488 355272.222 863336.111 +3489 355280.556 1087419.444 +3490 355288.889 774013.889 +3491 355297.222 806683.333 +3492 355322.222 979547.222 +3493 355325.000 770327.778 +3494 355327.778 828375.000 +3495 355327.778 904205.556 +3496 355333.333 829108.333 +3497 355336.111 825286.111 +3498 355361.111 1009594.444 +3499 355363.889 782847.222 +3500 355400.000 766233.333 +3501 355452.778 779750.000 +3502 355455.556 806111.111 +3503 355463.889 770525.000 +3504 355477.778 875519.444 +3505 355494.444 985777.778 +3506 355497.222 826502.778 +3507 355508.333 975486.111 +3508 355511.111 804066.667 +3509 355608.333 975511.111 +3510 355641.667 896463.889 +3511 355641.667 907166.667 +3512 355641.667 1210797.222 +3513 355658.333 972866.667 +3514 355691.667 805819.444 +3515 355741.667 1056744.444 +3516 355752.778 1011838.889 +3517 355755.556 812119.444 +3518 355777.778 989641.667 +3519 355841.667 788002.778 +3520 355841.667 881194.444 +3521 355847.222 808102.778 +3522 355869.444 804630.556 +3523 355880.556 1184911.111 +3524 355900.000 842419.444 +3525 355913.889 924602.778 +3526 355941.667 1193400.000 +3527 355961.111 781244.444 +3528 355977.778 824000.000 +3529 356008.333 825541.667 +3530 356013.889 844611.111 +3531 356027.778 859197.222 +3532 356055.556 851888.889 +3533 356066.667 778236.111 +3534 356075.000 958600.000 +3535 356080.556 968208.333 +3536 356091.667 1184827.778 +3537 356111.111 773730.556 +3538 356111.111 903297.222 +3539 356122.222 804469.444 +3540 356138.889 996711.111 +3541 356138.889 1067252.778 +3542 356144.444 888138.889 +3543 356150.000 870352.778 +3544 356172.222 878394.444 +3545 356177.778 823213.889 +3546 356202.778 908983.333 +3547 356225.000 1176700.000 +3548 356233.333 959602.778 +3549 356288.889 821808.333 +3550 356311.111 983169.444 +3551 356327.778 993813.889 +3552 356333.333 801161.111 +3553 356333.333 825822.222 +3554 356350.000 779333.333 +3555 356355.556 941672.222 +3556 356361.111 833777.778 +3557 356383.333 912650.000 +3558 356397.222 1016027.778 +3559 356419.444 977461.111 +3560 356441.667 823030.556 +3561 356452.778 780100.000 +3562 356486.111 956558.333 +3563 356497.222 881266.667 +3564 356497.222 910738.889 +3565 356505.556 784566.667 +3566 356508.333 883933.333 +3567 356508.333 1176608.333 +3568 356527.778 974777.778 +3569 356577.778 820255.556 +3570 356611.111 841722.222 +3571 356616.667 971952.778 +3572 356650.000 988827.778 +3573 356677.778 1013969.444 +3574 356697.222 812216.667 +3575 356708.333 804744.444 +3576 356727.778 895733.333 +3577 356736.111 905072.222 +3578 356744.444 900997.222 +3579 356780.556 1081505.556 +3580 356780.556 1192283.333 +3581 356805.556 1090519.444 +3582 356816.667 804325.000 +3583 356838.889 820094.444 +3584 356841.667 819919.444 +3585 356869.444 1059372.222 +3586 356913.889 1006377.778 +3587 356919.444 848608.333 +3588 356922.222 804350.000 +3589 356941.667 970630.556 +3590 356969.444 825608.333 +3591 357005.556 808883.333 +3592 357016.667 914413.889 +3593 357016.667 968805.556 +3594 357044.444 820361.111 +3595 357047.222 967650.000 +3596 357050.000 899694.444 +3597 357063.889 812188.889 +3598 357069.444 1184552.778 +3599 357072.222 810758.333 +3600 357077.778 798138.889 +3601 357111.111 786144.444 +3602 357111.111 890875.000 +3603 357138.889 814222.222 +3604 357141.667 835102.778 +3605 357144.444 811463.889 +3606 357200.000 791775.000 +3607 357233.333 794625.000 +3608 357258.333 979761.111 +3609 357272.222 814708.333 +3610 357288.889 814000.000 +3611 357288.889 817794.444 +3612 357291.667 1185486.111 +3613 357305.556 911983.333 +3614 357319.444 1051511.111 +3615 357325.000 788505.556 +3616 357327.778 843338.889 +3617 357330.556 806772.222 +3618 357333.333 796527.778 +3619 357405.556 815633.333 +3620 357422.222 905622.222 +3621 357425.000 960700.000 +3622 357436.111 796925.000 +3623 357441.667 987472.222 +3624 357444.444 1090758.333 +3625 357452.778 816850.000 +3626 357452.778 895297.222 +3627 357472.222 854666.667 +3628 357477.778 953694.444 +3629 357486.111 966577.778 +3630 357519.444 776702.778 +3631 357547.222 1184244.444 +3632 357561.111 899280.556 +3633 357563.889 839705.556 +3634 357577.778 816044.444 +3635 357580.556 903222.222 +3636 357602.778 841358.333 +3637 357636.111 1059319.444 +3638 357688.889 1192461.111 +3639 357697.222 916408.333 +3640 357719.444 786388.889 +3641 357719.444 877838.889 +3642 357738.889 814313.889 +3643 357758.333 889900.000 +3644 357808.333 783700.000 +3645 357825.000 808875.000 +3646 357847.222 891172.222 +3647 357875.000 784808.333 +3648 357883.333 776380.556 +3649 357883.333 835544.444 +3650 357894.444 839738.889 +3651 357900.000 782041.667 +3652 357913.889 787813.889 +3653 357950.000 839319.444 +3654 357963.889 814308.333 +3655 357966.667 1191069.444 +3656 357972.222 826841.667 +3657 357972.222 842561.111 +3658 357975.000 952502.778 +3659 357980.556 976783.333 +3660 358027.778 887747.222 +3661 358027.778 965058.333 +3662 358063.889 778636.111 +3663 358083.333 970125.000 +3664 358102.778 805561.111 +3665 358111.111 768969.444 +3666 358144.444 946283.333 +3667 358147.222 892255.556 +3668 358161.111 904341.667 +3669 358177.778 798033.333 +3670 358197.222 889158.333 +3671 358202.778 956738.889 +3672 358216.667 911283.333 +3673 358238.889 772555.556 +3674 358238.889 802536.111 +3675 358241.667 783150.000 +3676 358263.889 825494.444 +3677 358269.444 1014425.000 +3678 358275.000 839408.333 +3679 358275.000 860716.667 +3680 358302.778 925577.778 +3681 358305.556 963908.333 +3682 358383.333 894061.111 +3683 358422.222 907041.667 +3684 358425.000 756388.889 +3685 358447.222 984127.778 +3686 358455.556 863902.778 +3687 358483.333 814961.111 +3688 358505.556 953180.556 +3689 358544.444 770558.333 +3690 358588.889 1087608.333 +3691 358613.889 979313.889 +3692 358655.556 846850.000 +3693 358655.556 1019727.778 +3694 358666.667 767488.889 +3695 358669.444 778294.444 +3696 358680.556 835619.444 +3697 358683.333 921175.000 +3698 358708.333 955222.222 +3699 358727.778 917538.889 +3700 358755.556 893961.111 +3701 358763.889 960608.333 +3702 358777.778 766155.556 +3703 358788.889 974250.000 +3704 358800.000 901669.444 +3705 358808.333 845086.111 +3706 358825.000 800822.222 +3707 358841.667 1192713.889 +3708 358894.444 775325.000 +3709 358905.556 903441.667 +3710 358922.222 828291.667 +3711 358922.222 904525.000 +3712 358938.889 805616.667 +3713 358966.667 775361.111 +3714 359000.000 905819.444 +3715 359027.778 802572.222 +3716 359080.556 756761.111 +3717 359088.889 926311.111 +3718 359091.667 848780.556 +3719 359100.000 790755.556 +3720 359127.778 1003816.667 +3721 359138.889 815391.667 +3722 359152.778 820647.222 +3723 359152.778 949697.222 +3724 359175.000 762525.000 +3725 359197.222 887588.889 +3726 359216.667 811766.667 +3727 359241.667 941883.333 +3728 359250.000 868688.889 +3729 359258.333 854641.667 +3730 359272.222 899188.889 +3731 359325.000 951411.111 +3732 359338.889 845525.000 +3733 359358.333 902577.778 +3734 359380.556 777908.333 +3735 359416.667 915483.333 +3736 359419.444 958830.556 +3737 359444.444 772100.000 +3738 359447.222 960650.000 +3739 359488.889 850269.444 +3740 359494.444 944233.333 +3741 359516.667 956505.556 +3742 359525.000 975944.444 +3743 359552.778 960086.111 +3744 359555.556 800055.556 +3745 359572.222 756244.444 +3746 359594.444 953691.667 +3747 359597.222 899719.444 +3748 359605.556 839208.333 +3749 359605.556 858141.667 +3750 359608.333 782538.889 +3751 359619.444 797625.000 +3752 359625.000 1190433.333 +3753 359669.444 831877.778 +3754 359686.111 1192908.333 +3755 359730.556 886780.556 +3756 359738.889 970333.333 +3757 359744.444 779658.333 +3758 359758.333 943175.000 +3759 359786.111 1148316.667 +3760 359797.222 785100.000 +3761 359805.556 889413.889 +3762 359813.889 979108.333 +3763 359819.444 841138.889 +3764 359850.000 967666.667 +3765 359883.333 966008.333 +3766 359911.111 1060800.000 +3767 359925.000 945677.778 +3768 359938.889 788988.889 +3769 359941.667 799355.556 +3770 359941.667 941750.000 +3771 359983.333 769463.889 +3772 359986.111 961138.889 +3773 360005.556 884280.556 +3774 360013.889 940080.556 +3775 360025.000 1059297.222 +3776 360041.667 1201280.556 +3777 360080.556 931863.889 +3778 360083.333 1199608.333 +3779 360102.778 842697.222 +3780 360111.111 778577.778 +3781 360113.889 886227.778 +3782 360152.778 834150.000 +3783 360155.556 865819.444 +3784 360166.667 1018241.667 +3785 360211.111 879669.444 +3786 360213.889 803822.222 +3787 360222.222 1069577.778 +3788 360227.778 959680.556 +3789 360316.667 840280.556 +3790 360344.444 893855.556 +3791 360358.333 894797.222 +3792 360363.889 788236.111 +3793 360380.556 882444.444 +3794 360380.556 882736.111 +3795 360397.222 1149811.111 +3796 360416.667 901138.889 +3797 360419.444 942469.444 +3798 360444.444 843444.444 +3799 360469.444 902927.778 +3800 360488.889 777494.444 +3801 360502.778 909750.000 +3802 360508.333 902386.111 +3803 360525.000 957905.556 +3804 360533.333 873125.000 +3805 360536.111 985880.556 +3806 360583.333 905000.000 +3807 360588.889 880977.778 +3808 360594.444 919083.333 +3809 360594.444 1025127.778 +3810 360594.444 1193111.111 +3811 360605.556 766094.444 +3812 360625.000 941572.222 +3813 360652.778 1190158.333 +3814 360666.667 889938.889 +3815 360688.889 794008.333 +3816 360719.444 841333.333 +3817 360725.000 797922.222 +3818 360752.778 791000.000 +3819 360763.889 888100.000 +3820 360769.444 873877.778 +3821 360775.000 860333.333 +3822 360838.889 877947.222 +3823 360838.889 898291.667 +3824 360844.444 965833.333 +3825 360861.111 937411.111 +3826 360872.222 819275.000 +3827 360913.889 793644.444 +3828 360944.444 1150411.111 +3829 360955.556 794380.556 +3830 360958.333 792672.222 +3831 360958.333 844425.000 +3832 360966.667 811825.000 +3833 360969.444 804194.444 +3834 360980.556 1195594.444 +3835 360988.889 783013.889 +3836 360997.222 802444.444 +3837 361005.556 870511.111 +3838 361016.667 784583.333 +3839 361019.444 871150.000 +3840 361027.778 795069.444 +3841 361033.333 841319.444 +3842 361038.889 835527.778 +3843 361047.222 845972.222 +3844 361052.778 777130.556 +3845 361055.556 795425.000 +3846 361072.222 796588.889 +3847 361075.000 832869.444 +3848 361075.000 872208.333 +3849 361077.778 876330.556 +3850 361083.333 910972.222 +3851 361091.667 978983.333 +3852 361127.778 892616.667 +3853 361130.556 794766.667 +3854 361141.667 966988.889 +3855 361155.556 970580.556 +3856 361161.111 983166.667 +3857 361169.444 867663.889 +3858 361194.444 921358.333 +3859 361197.222 800738.889 +3860 361219.444 794291.667 +3861 361222.222 786863.889 +3862 361222.222 834925.000 +3863 361275.000 889858.333 +3864 361294.444 774205.556 +3865 361305.556 824247.222 +3866 361319.444 787569.444 +3867 361325.000 885186.111 +3868 361341.667 901597.222 +3869 361344.444 806597.222 +3870 361350.000 816777.778 +3871 361350.000 1112391.667 +3872 361397.222 961086.111 +3873 361397.222 1203591.667 +3874 361450.000 824169.444 +3875 361455.556 1190597.222 +3876 361458.333 811608.333 +3877 361475.000 852683.333 +3878 361480.556 989238.889 +3879 361497.222 992977.778 +3880 361511.111 955091.667 +3881 361533.333 888005.556 +3882 361536.111 856436.111 +3883 361538.889 959925.000 +3884 361541.667 837041.667 +3885 361544.444 1095519.444 +3886 361572.222 819783.333 +3887 361583.333 811477.778 +3888 361627.778 855016.667 +3889 361630.556 818716.667 +3890 361630.556 828311.111 +3891 361661.111 948544.444 +3892 361713.889 811941.667 +3893 361725.000 859297.222 +3894 361750.000 1151363.889 +3895 361772.222 873397.222 +3896 361777.778 942333.333 +3897 361808.333 776669.444 +3898 361858.333 953427.778 +3899 361866.667 941286.111 +3900 361869.444 903830.556 +3901 361880.556 945402.778 +3902 361888.889 957455.556 +3903 361894.444 829586.111 +3904 361900.000 764663.889 +3905 361930.556 896555.556 +3906 361955.556 840680.556 +3907 361958.333 854486.111 +3908 361961.111 820705.556 +3909 361983.333 811530.556 +3910 361983.333 1011919.444 +3911 361988.889 1151166.667 +3912 362000.000 865186.111 +3913 362000.000 951675.000 +3914 362022.222 802811.111 +3915 362022.222 890122.222 +3916 362025.000 911744.444 +3917 362027.778 1201019.444 +3918 362030.556 891908.333 +3919 362030.556 1190872.222 +3920 362061.111 942341.667 +3921 362077.778 1193463.889 +3922 362086.111 799050.000 +3923 362127.778 1211250.000 +3924 362136.111 886125.000 +3925 362138.889 832950.000 +3926 362163.889 805127.778 +3927 362166.667 816747.222 +3928 362177.778 841547.222 +3929 362188.889 764641.667 +3930 362211.111 919291.667 +3931 362238.889 916083.333 +3932 362261.111 926847.222 +3933 362272.222 808336.111 +3934 362294.444 771144.444 +3935 362297.222 931075.000 +3936 362325.000 807083.333 +3937 362333.333 888244.444 +3938 362336.111 897494.444 +3939 362338.889 897694.444 +3940 362361.111 900555.556 +3941 362369.444 799797.222 +3942 362380.556 963163.889 +3943 362391.667 808447.222 +3944 362402.778 802936.111 +3945 362419.444 859519.444 +3946 362419.444 959755.556 +3947 362441.667 808486.111 +3948 362505.556 837975.000 +3949 362522.222 859516.667 +3950 362552.778 941305.556 +3951 362569.444 830861.111 +3952 362586.111 831952.778 +3953 362588.889 891916.667 +3954 362613.889 909711.111 +3955 362630.556 902925.000 +3956 362633.333 894877.778 +3957 362641.667 946927.778 +3958 362650.000 1014058.333 +3959 362675.000 944844.444 +3960 362688.889 984794.444 +3961 362694.444 958544.444 +3962 362711.111 925352.778 +3963 362738.889 772847.222 +3964 362741.667 870641.667 +3965 362758.333 998808.333 +3966 362788.889 925969.444 +3967 362802.778 978977.778 +3968 362805.556 803594.444 +3969 362808.333 835150.000 +3970 362830.556 924938.889 +3971 362841.667 821727.778 +3972 362866.667 769850.000 +3973 362894.444 972877.778 +3974 362913.889 887080.556 +3975 362927.778 951530.556 +3976 362941.667 824736.111 +3977 362952.778 801419.444 +3978 362961.111 1191411.111 +3979 362972.222 959911.111 +3980 362972.222 970077.778 +3981 362977.778 1192058.333 +3982 362988.889 842233.333 +3983 363008.333 1197819.444 +3984 363019.444 762236.111 +3985 363019.444 883266.667 +3986 363047.222 866200.000 +3987 363063.889 821933.333 +3988 363075.000 975861.111 +3989 363080.556 784069.444 +3990 363100.000 964638.889 +3991 363105.556 785911.111 +3992 363119.444 877733.333 +3993 363125.000 956158.333 +3994 363133.333 823536.111 +3995 363155.556 997572.222 +3996 363158.333 914825.000 +3997 363158.333 1197075.000 +3998 363183.333 876947.222 +3999 363200.000 906019.444 +4000 363208.333 1212427.778 +4001 363230.556 867133.333 +4002 363275.000 1196447.222 +4003 363294.444 783994.444 +4004 363300.000 841838.889 +4005 363302.778 1192911.111 +4006 363313.889 772130.556 +4007 363319.444 941183.333 +4008 363352.778 934358.333 +4009 363358.333 944605.556 +4010 363361.111 1020716.667 +4011 363377.778 968036.111 +4012 363386.111 891638.889 +4013 363416.667 783902.778 +4014 363433.333 888502.778 +4015 363486.111 822108.333 +4016 363511.111 1194191.667 +4017 363527.778 1096172.222 +4018 363547.222 796647.222 +4019 363555.556 856588.889 +4020 363586.111 1056088.889 +4021 363611.111 1045947.222 +4022 363627.778 907536.111 +4023 363644.444 958386.111 +4024 363647.222 935677.778 +4025 363683.333 960011.111 +4026 363722.222 822258.333 +4027 363727.778 942086.111 +4028 363783.333 894719.444 +4029 363808.333 848844.444 +4030 363827.778 841200.000 +4031 363827.778 901905.556 +4032 363833.333 853230.556 +4033 363838.889 925813.889 +4034 363852.778 799597.222 +4035 363863.889 804697.222 +4036 363872.222 1192169.444 +4037 363875.000 980894.444 +4038 363883.333 864466.667 +4039 363908.333 861672.222 +4040 363911.111 950463.889 +4041 363922.222 824116.667 +4042 363936.111 789830.556 +4043 363950.000 867794.444 +4044 363955.556 769322.222 +4045 363955.556 807227.778 +4046 363955.556 978780.556 +4047 363983.333 781555.556 +4048 363991.667 900236.111 +4049 364000.000 1008022.222 +4050 364011.111 937377.778 +4051 364036.111 814930.556 +4052 364038.889 793363.889 +4053 364052.778 984402.778 +4054 364072.222 830055.556 +4055 364072.222 1055725.000 +4056 364077.778 905797.222 +4057 364122.222 799672.222 +4058 364141.667 963950.000 +4059 364158.333 776033.333 +4060 364169.444 1092280.556 +4061 364180.556 826238.889 +4062 364197.222 824766.667 +4063 364202.778 814736.111 +4064 364211.111 947966.667 +4065 364219.444 944533.333 +4066 364241.667 890569.444 +4067 364247.222 1213252.778 +4068 364252.778 896994.444 +4069 364269.444 775958.333 +4070 364333.333 1196858.333 +4071 364336.111 993900.000 +4072 364338.889 1001411.111 +4073 364344.444 779122.222 +4074 364355.556 978686.111 +4075 364366.667 952711.111 +4076 364369.444 772291.667 +4077 364369.444 975852.778 +4078 364391.667 992044.444 +4079 364394.444 824558.333 +4080 364422.222 770988.889 +4081 364425.000 835997.222 +4082 364441.667 883344.444 +4083 364455.556 781986.111 +4084 364508.333 775591.667 +4085 364511.111 776797.222 +4086 364516.667 899669.444 +4087 364516.667 1031836.111 +4088 364519.444 899191.667 +4089 364533.333 1005369.444 +4090 364541.667 835694.444 +4091 364613.889 776544.444 +4092 364638.889 950475.000 +4093 364644.444 929200.000 +4094 364663.889 799072.222 +4095 364702.778 866513.889 +4096 364708.333 828519.444 +4097 364741.667 822611.111 +4098 364744.444 818050.000 +4099 364761.111 1194422.222 +4100 364777.778 825933.333 +4101 364797.222 1217313.889 +4102 364850.000 825033.333 +4103 364877.778 878383.333 +4104 364883.333 797669.444 +4105 364900.000 774416.667 +4106 364933.333 900750.000 +4107 364955.556 915405.556 +4108 364980.556 845127.778 +4109 364991.667 806075.000 +4110 365002.778 776452.778 +4111 365002.778 806266.667 +4112 365008.333 888752.778 +4113 365041.667 888741.667 +4114 365050.000 1017825.000 +4115 365052.778 811211.111 +4116 365066.667 1214433.333 +4117 365091.667 868850.000 +4118 365108.333 1049152.778 +4119 365138.889 1195530.556 +4120 365147.222 946111.111 +4121 365188.889 896125.000 +4122 365211.111 860263.889 +4123 365222.222 827136.111 +4124 365225.000 939394.444 +4125 365233.333 1192858.333 +4126 365244.444 915380.556 +4127 365288.889 974436.111 +4128 365297.222 832175.000 +4129 365297.222 873594.444 +4130 365302.778 959233.333 +4131 365330.556 823269.444 +4132 365333.333 858500.000 +4133 365355.556 954322.222 +4134 365427.778 1198322.222 +4135 365433.333 1144461.111 +4136 365433.333 1193861.111 +4137 365450.000 1192863.889 +4138 365455.556 944850.000 +4139 365461.111 963269.444 +4140 365461.111 982697.222 +4141 365483.333 824558.333 +4142 365483.333 825619.444 +4143 365486.111 866961.111 +4144 365500.000 855052.778 +4145 365555.556 824680.556 +4146 365569.444 899663.889 +4147 365619.444 862480.556 +4148 365619.444 961613.889 +4149 365680.556 896005.556 +4150 365708.333 1196111.111 +4151 365711.111 891861.111 +4152 365736.111 967038.889 +4153 365736.111 995719.444 +4154 365744.444 851288.889 +4155 365752.778 906038.889 +4156 365769.444 825677.778 +4157 365788.889 984619.444 +4158 365816.667 865163.889 +4159 365822.222 870655.556 +4160 365822.222 988794.444 +4161 365830.556 772002.778 +4162 365844.444 824894.444 +4163 365858.333 793952.778 +4164 365863.889 895277.778 +4165 365877.778 841269.444 +4166 365886.111 793663.889 +4167 365913.889 825736.111 +4168 365922.222 896152.778 +4169 365933.333 1218338.889 +4170 365936.111 947688.889 +4171 365944.444 943838.889 +4172 365950.000 821888.889 +4173 365952.778 1016361.111 +4174 365958.333 902472.222 +4175 365963.889 821886.111 +4176 365963.889 1194494.444 +4177 366002.778 1218936.111 +4178 366030.556 924280.556 +4179 366061.111 1180619.444 +4180 366066.667 1201880.556 +4181 366102.778 883147.222 +4182 366111.111 1218505.556 +4183 366116.667 1195261.111 +4184 366136.111 898163.889 +4185 366208.333 908233.333 +4186 366211.111 932152.778 +4187 366222.222 811511.111 +4188 366244.444 1193127.778 +4189 366283.333 799511.111 +4190 366305.556 1196775.000 +4191 366336.111 817838.889 +4192 366377.778 825811.111 +4193 366386.111 951538.889 +4194 366408.333 802658.333 +4195 366422.222 887388.889 +4196 366436.111 932183.333 +4197 366483.333 871663.889 +4198 366502.778 1197897.222 +4199 366505.556 944433.333 +4200 366508.333 844386.111 +4201 366591.667 1195927.778 +4202 366611.111 809241.667 +4203 366672.222 889933.333 +4204 366675.000 868519.444 +4205 366677.778 963369.444 +4206 366688.889 899686.111 +4207 366691.667 978008.333 +4208 366722.222 939408.333 +4209 366769.444 938686.111 +4210 366775.000 769227.778 +4211 366777.778 1216544.444 +4212 366783.333 973097.222 +4213 366827.778 1014811.111 +4214 366844.444 1218011.111 +4215 366850.000 931197.222 +4216 366858.333 775427.778 +4217 366888.889 831111.111 +4218 366905.556 975561.111 +4219 366908.333 851347.222 +4220 366913.889 798727.778 +4221 366936.111 949627.778 +4222 366941.667 913991.667 +4223 366986.111 789016.667 +4224 366988.889 844775.000 +4225 367000.000 781000.000 +4226 367000.000 799388.889 +4227 367005.556 956377.778 +4228 367022.222 856916.667 +4229 367038.889 1055944.444 +4230 367069.444 970852.778 +4231 367080.556 1195550.000 +4232 367097.222 819775.000 +4233 367097.222 998930.556 +4234 367105.556 1197575.000 +4235 367111.111 1079838.889 +4236 367133.333 788288.889 +4237 367150.000 799155.556 +4238 367161.111 770683.333 +4239 367161.111 809788.889 +4240 367222.222 865772.222 +4241 367233.333 844705.556 +4242 367236.111 1200588.889 +4243 367263.889 781291.667 +4244 367277.778 1102538.889 +4245 367280.556 765838.889 +4246 367280.556 918522.222 +4247 367280.556 1082180.556 +4248 367286.111 809991.667 +4249 367294.444 1025127.778 +4250 367341.667 1083591.667 +4251 367416.667 886366.667 +4252 367416.667 943988.889 +4253 367433.333 841597.222 +4254 367472.222 959805.556 +4255 367477.778 1197713.889 +4256 367511.111 948472.222 +4257 367533.333 861905.556 +4258 367536.111 1203805.556 +4259 367544.444 983563.889 +4260 367569.444 903927.778 +4261 367575.000 778472.222 +4262 367583.333 830272.222 +4263 367591.667 799905.556 +4264 367591.667 895866.667 +4265 367619.444 836950.000 +4266 367625.000 807350.000 +4267 367627.778 940558.333 +4268 367647.222 882952.778 +4269 367658.333 789286.111 +4270 367658.333 1217569.444 +4271 367758.333 873555.556 +4272 367786.111 956391.667 +4273 367797.222 893855.556 +4274 367819.444 966608.333 +4275 367855.556 1086863.889 +4276 367891.667 815822.222 +4277 367902.778 853705.556 +4278 367911.111 817713.889 +4279 367958.333 899577.778 +4280 367958.333 959352.778 +4281 367983.333 816825.000 +4282 367991.667 784586.111 +4283 368044.444 972825.000 +4284 368050.000 986661.111 +4285 368069.444 977333.333 +4286 368083.333 767444.444 +4287 368097.222 1022550.000 +4288 368100.000 871541.667 +4289 368125.000 898613.889 +4290 368141.667 774686.111 +4291 368161.111 1005194.444 +4292 368172.222 939205.556 +4293 368222.222 1079922.222 +4294 368252.778 1197019.444 +4295 368255.556 793983.333 +4296 368347.222 815150.000 +4297 368352.778 762986.111 +4298 368355.556 996300.000 +4299 368405.556 763105.556 +4300 368413.889 946108.333 +4301 368430.556 833219.444 +4302 368452.778 868872.222 +4303 368455.556 1215369.444 +4304 368466.667 762855.556 +4305 368472.222 896852.778 +4306 368486.111 832191.667 +4307 368519.444 833541.667 +4308 368525.000 1214005.556 +4309 368527.778 759783.333 +4310 368572.222 883502.778 +4311 368588.889 1204550.000 +4312 368600.000 1012130.556 +4313 368641.667 867102.778 +4314 368650.000 878352.778 +4315 368655.556 874886.111 +4316 368658.333 831905.556 +4317 368663.889 838888.889 +4318 368672.222 814236.111 +4319 368688.889 943677.778 +4320 368705.556 890097.222 +4321 368736.111 950955.556 +4322 368744.444 948772.222 +4323 368766.667 895877.778 +4324 368816.667 827472.222 +4325 368822.222 970530.556 +4326 368833.333 979216.667 +4327 368858.333 899291.667 +4328 368900.000 822797.222 +4329 368913.889 895383.333 +4330 368936.111 812761.111 +4331 368941.667 817769.444 +4332 368975.000 959258.333 +4333 369008.333 820802.778 +4334 369030.556 1065788.889 +4335 369033.333 1044386.111 +4336 369041.667 1217475.000 +4337 369052.778 935713.889 +4338 369066.667 827819.444 +4339 369069.444 1005388.889 +4340 369086.111 1114727.778 +4341 369094.444 894525.000 +4342 369102.778 1217558.333 +4343 369172.222 948794.444 +4344 369191.667 942550.000 +4345 369208.333 893505.556 +4346 369288.889 939275.000 +4347 369333.333 826291.667 +4348 369333.333 948727.778 +4349 369336.111 1069983.333 +4350 369352.778 1217719.444 +4351 369366.667 1218636.111 +4352 369438.889 824641.667 +4353 369444.444 940041.667 +4354 369455.556 1125258.333 +4355 369483.333 810850.000 +4356 369486.111 840969.444 +4357 369497.222 901583.333 +4358 369519.444 926602.778 +4359 369536.111 793591.667 +4360 369541.667 1010650.000 +4361 369544.444 947877.778 +4362 369605.556 840933.333 +4363 369608.333 1219630.556 +4364 369613.889 1200597.222 +4365 369619.444 781252.778 +4366 369638.889 937955.556 +4367 369647.222 829486.111 +4368 369647.222 890891.667 +4369 369661.111 829225.000 +4370 369683.333 1218991.667 +4371 369708.333 937177.778 +4372 369741.667 1220297.222 +4373 369752.778 1219522.222 +4374 369758.333 825758.333 +4375 369772.222 1218983.333 +4376 369780.556 829886.111 +4377 369783.333 822977.778 +4378 369786.111 764283.333 +4379 369800.000 856122.222 +4380 369847.222 850630.556 +4381 369861.111 1206255.556 +4382 369869.444 948305.556 +4383 369880.556 1219555.556 +4384 369888.889 846000.000 +4385 369902.778 864436.111 +4386 369911.111 914925.000 +4387 369922.222 919697.222 +4388 369927.778 786013.889 +4389 369944.444 956200.000 +4390 369947.222 782275.000 +4391 369952.778 917036.111 +4392 369952.778 943158.333 +4393 369955.556 910144.444 +4394 369958.333 859119.444 +4395 369975.000 798922.222 +4396 370011.111 930813.889 +4397 370030.556 936372.222 +4398 370052.778 891763.889 +4399 370058.333 1215672.222 +4400 370080.556 1018897.222 +4401 370097.222 913233.333 +4402 370113.889 959350.000 +4403 370161.111 819744.444 +4404 370172.222 984850.000 +4405 370175.000 885313.889 +4406 370208.333 932058.333 +4407 370236.111 898197.222 +4408 370297.222 763455.556 +4409 370302.778 934727.778 +4410 370322.222 976066.667 +4411 370333.333 883500.000 +4412 370358.333 770955.556 +4413 370369.444 944966.667 +4414 370372.222 950897.222 +4415 370372.222 956161.111 +4416 370402.778 784836.111 +4417 370405.556 944725.000 +4418 370430.556 1009205.556 +4419 370433.333 932941.667 +4420 370436.111 896102.778 +4421 370475.000 1125255.556 +4422 370477.778 807800.000 +4423 370477.778 874850.000 +4424 370500.000 789444.444 +4425 370511.111 1220136.111 +4426 370513.889 1220722.222 +4427 370516.667 890466.667 +4428 370525.000 862077.778 +4429 370561.111 850886.111 +4430 370563.889 786386.111 +4431 370583.333 1208488.889 +4432 370588.889 881325.000 +4433 370597.222 953591.667 +4434 370619.444 970380.556 +4435 370625.000 817519.444 +4436 370666.667 766766.667 +4437 370675.000 935519.444 +4438 370691.667 941163.889 +4439 370758.333 946394.444 +4440 370766.667 889736.111 +4441 370766.667 944591.667 +4442 370802.778 779975.000 +4443 370833.333 886000.000 +4444 370836.111 944133.333 +4445 370841.667 945130.556 +4446 370850.000 896552.778 +4447 370850.000 1216091.667 +4448 370852.778 891625.000 +4449 370869.444 818552.778 +4450 370891.667 1220852.778 +4451 370919.444 846041.667 +4452 370925.000 792966.667 +4453 370930.556 817938.889 +4454 370938.889 860463.889 +4455 370944.444 880802.778 +4456 371027.778 853063.889 +4457 371036.111 938183.333 +4458 371041.667 965000.000 +4459 371041.667 1135833.333 +4460 371044.444 899105.556 +4461 371055.556 806855.556 +4462 371066.667 925805.556 +4463 371091.667 878819.444 +4464 371116.667 792858.333 +4465 371141.667 891977.778 +4466 371147.222 815197.222 +4467 371150.000 1076325.000 +4468 371155.556 933700.000 +4469 371169.444 930555.556 +4470 371183.333 828269.444 +4471 371200.000 934800.000 +4472 371222.222 763461.111 +4473 371230.556 1202591.667 +4474 371236.111 826013.889 +4475 371236.111 886302.778 +4476 371238.889 921011.111 +4477 371261.111 1221211.111 +4478 371266.667 961866.667 +4479 371288.889 840833.333 +4480 371297.222 804091.667 +4481 371305.556 922633.333 +4482 371305.556 1135075.000 +4483 371305.556 1216533.333 +4484 371330.556 1136533.333 +4485 371366.667 859569.444 +4486 371388.889 884033.333 +4487 371425.000 945105.556 +4488 371463.889 927686.111 +4489 371463.889 944627.778 +4490 371491.667 944427.778 +4491 371500.000 824561.111 +4492 371505.556 913575.000 +4493 371511.111 887319.444 +4494 371533.333 980308.333 +4495 371536.111 837619.444 +4496 371544.444 906955.556 +4497 371575.000 929405.556 +4498 371658.333 872475.000 +4499 371672.222 876925.000 +4500 371675.000 951097.222 +4501 371686.111 1136786.111 +4502 371691.667 948438.889 +4503 371694.444 1045000.000 +4504 371730.556 781236.111 +4505 371733.333 826311.111 +4506 371741.667 1059369.444 +4507 371752.778 1013491.667 +4508 371752.778 1132891.667 +4509 371763.889 943100.000 +4510 371766.667 945652.778 +4511 371769.444 846358.333 +4512 371791.667 916566.667 +4513 371794.444 859069.444 +4514 371800.000 896550.000 +4515 371836.111 873836.111 +4516 371875.000 782016.667 +4517 371883.333 944700.000 +4518 371886.111 997652.778 +4519 371902.778 952969.444 +4520 371908.333 874527.778 +4521 371966.667 897361.111 +4522 372008.333 1054233.333 +4523 372011.111 871788.889 +4524 372011.111 1132688.889 +4525 372013.889 994836.111 +4526 372063.889 888447.222 +4527 372075.000 826719.444 +4528 372080.556 880566.667 +4529 372147.222 938397.222 +4530 372152.778 932980.556 +4531 372166.667 895244.444 +4532 372175.000 870488.889 +4533 372197.222 895088.889 +4534 372241.667 957080.556 +4535 372255.556 866836.111 +4536 372255.556 1075975.000 +4537 372266.667 1219736.111 +4538 372275.000 800130.556 +4539 372277.778 774022.222 +4540 372302.778 774777.778 +4541 372322.222 820991.667 +4542 372350.000 892700.000 +4543 372363.889 1219913.889 +4544 372366.667 874752.778 +4545 372369.444 871591.667 +4546 372397.222 969952.778 +4547 372400.000 774302.778 +4548 372413.889 982263.889 +4549 372416.667 909686.111 +4550 372422.222 784600.000 +4551 372494.444 831933.333 +4552 372508.333 925102.778 +4553 372525.000 812713.889 +4554 372538.889 764972.222 +4555 372577.778 1209977.778 +4556 372583.333 1059041.667 +4557 372608.333 854988.889 +4558 372638.889 1220219.444 +4559 372652.778 973713.889 +4560 372658.333 977652.778 +4561 372677.778 760177.778 +4562 372683.333 931169.444 +4563 372688.889 993263.889 +4564 372694.444 1070091.667 +4565 372697.222 812225.000 +4566 372702.778 955522.222 +4567 372705.556 767077.778 +4568 372708.333 799416.667 +4569 372722.222 858911.111 +4570 372741.667 875119.444 +4571 372741.667 971686.111 +4572 372750.000 1059597.222 +4573 372752.778 1078794.444 +4574 372769.444 891833.333 +4575 372775.000 948247.222 +4576 372777.778 820991.667 +4577 372808.333 798972.222 +4578 372811.111 985800.000 +4579 372855.556 1003397.222 +4580 372866.667 980255.556 +4581 372872.222 1219488.889 +4582 372894.444 759716.667 +4583 372908.333 1203175.000 +4584 372936.111 889752.778 +4585 372938.889 871233.333 +4586 372991.667 862286.111 +4587 373002.778 899811.111 +4588 373011.111 816911.111 +4589 373019.444 783922.222 +4590 373022.222 1204819.444 +4591 373038.889 823511.111 +4592 373050.000 934283.333 +4593 373058.333 895180.556 +4594 373058.333 899702.778 +4595 373100.000 947716.667 +4596 373125.000 812600.000 +4597 373127.778 967538.889 +4598 373138.889 1210197.222 +4599 373152.778 935850.000 +4600 373194.444 806391.667 +4601 373205.556 792577.778 +4602 373230.556 1220311.111 +4603 373250.000 813119.444 +4604 373261.111 919558.333 +4605 373263.889 807352.778 +4606 373280.556 874988.889 +4607 373280.556 1196483.333 +4608 373313.889 808113.889 +4609 373325.000 827211.111 +4610 373327.778 880811.111 +4611 373338.889 869961.111 +4612 373341.667 795233.333 +4613 373352.778 1218938.889 +4614 373358.333 814366.667 +4615 373358.333 829805.556 +4616 373361.111 943011.111 +4617 373386.111 929069.444 +4618 373402.778 952608.333 +4619 373411.111 799433.333 +4620 373433.333 853419.444 +4621 373441.667 867547.222 +4622 373450.000 1082886.111 +4623 373458.333 948086.111 +4624 373475.000 1212675.000 +4625 373488.889 1085852.778 +4626 373538.889 812527.778 +4627 373566.667 774419.444 +4628 373569.444 788255.556 +4629 373602.778 963036.111 +4630 373611.111 891658.333 +4631 373636.111 815502.778 +4632 373636.111 1183941.667 +4633 373661.111 811027.778 +4634 373661.111 1218261.111 +4635 373672.222 884863.889 +4636 373688.889 1220352.778 +4637 373783.333 798072.222 +4638 373797.222 1221363.889 +4639 373819.444 869225.000 +4640 373822.222 808227.778 +4641 373822.222 896661.111 +4642 373838.889 931511.111 +4643 373841.667 1222341.667 +4644 373855.556 939530.556 +4645 373855.556 1001952.778 +4646 373861.111 1022777.778 +4647 373869.444 1207225.000 +4648 373875.000 971138.889 +4649 373894.444 1206122.222 +4650 373902.778 976419.444 +4651 373930.556 940936.111 +4652 373938.889 972808.333 +4653 373972.222 807994.444 +4654 374019.444 868758.333 +4655 374027.778 1046527.778 +4656 374041.667 844138.889 +4657 374083.333 1026138.889 +4658 374108.333 947047.222 +4659 374111.111 935494.444 +4660 374136.111 791425.000 +4661 374152.778 888977.778 +4662 374152.778 938408.333 +4663 374158.333 872655.556 +4664 374183.333 956800.000 +4665 374200.000 812433.333 +4666 374208.333 814402.778 +4667 374216.667 774377.778 +4668 374222.222 810163.889 +4669 374236.111 883461.111 +4670 374241.667 864883.333 +4671 374255.556 815069.444 +4672 374283.333 1219055.556 +4673 374300.000 1222527.778 +4674 374302.778 839980.556 +4675 374308.333 791233.333 +4676 374322.222 1207775.000 +4677 374327.778 815847.222 +4678 374372.222 1019716.667 +4679 374419.444 1221419.444 +4680 374433.333 1000147.222 +4681 374450.000 828052.778 +4682 374450.000 871438.889 +4683 374511.111 869091.667 +4684 374516.667 892680.556 +4685 374538.889 1221811.111 +4686 374555.556 912094.444 +4687 374555.556 946888.889 +4688 374602.778 892469.444 +4689 374613.889 1221966.667 +4690 374636.111 1224275.000 +4691 374644.444 818138.889 +4692 374644.444 845066.667 +4693 374650.000 858933.333 +4694 374688.889 1221400.000 +4695 374694.444 1058694.444 +4696 374702.778 962633.333 +4697 374716.667 1211286.111 +4698 374738.889 1085038.889 +4699 374744.444 972436.111 +4700 374747.222 758586.111 +4701 374766.667 878200.000 +4702 374783.333 816536.111 +4703 374791.667 825188.889 +4704 374800.000 862938.889 +4705 374816.667 1008433.333 +4706 374850.000 1199652.778 +4707 374861.111 1222333.333 +4708 374930.556 871319.444 +4709 374930.556 954700.000 +4710 374947.222 1208455.556 +4711 374950.000 942763.889 +4712 374952.778 862213.889 +4713 374994.444 918569.444 +4714 375019.444 928208.333 +4715 375027.778 975041.667 +4716 375027.778 1224683.333 +4717 375050.000 1050072.222 +4718 375111.111 948377.778 +4719 375177.778 876902.778 +4720 375202.778 1222747.222 +4721 375238.889 956611.111 +4722 375263.889 1207958.333 +4723 375272.222 796800.000 +4724 375275.000 1225122.222 +4725 375297.222 1220391.667 +4726 375311.111 846619.444 +4727 375313.889 767966.667 +4728 375313.889 892533.333 +4729 375316.667 758233.333 +4730 375338.889 958263.889 +4731 375388.889 872583.333 +4732 375422.222 1225150.000 +4733 375427.778 784575.000 +4734 375438.889 947000.000 +4735 375455.556 972686.111 +4736 375458.333 773280.556 +4737 375466.667 879838.889 +4738 375472.222 996338.889 +4739 375536.111 774605.556 +4740 375544.444 889722.222 +4741 375547.222 763372.222 +4742 375569.444 946216.667 +4743 375580.556 945197.222 +4744 375583.333 971347.222 +4745 375586.111 1222700.000 +4746 375597.222 902938.889 +4747 375630.556 1223244.444 +4748 375658.333 973538.889 +4749 375686.111 842963.889 +4750 375697.222 852527.778 +4751 375716.667 837069.444 +4752 375727.778 827527.778 +4753 375738.889 857400.000 +4754 375741.667 1223783.333 +4755 375791.667 1061475.000 +4756 375808.333 774072.222 +4757 375813.889 1013547.222 +4758 375830.556 813805.556 +4759 375830.556 815372.222 +4760 375841.667 1223650.000 +4761 375850.000 790516.667 +4762 375866.667 847938.889 +4763 375880.556 906288.889 +4764 375900.000 775566.667 +4765 375913.889 805438.889 +4766 375950.000 1209566.667 +4767 375958.333 816361.111 +4768 375958.333 1004427.778 +4769 375969.444 1208650.000 +4770 375972.222 906272.222 +4771 375986.111 1223861.111 +4772 376027.778 992922.222 +4773 376036.111 774916.667 +4774 376069.444 875286.111 +4775 376075.000 774772.222 +4776 376133.333 779050.000 +4777 376141.667 818666.667 +4778 376144.444 934102.778 +4779 376150.000 1145111.111 +4780 376194.444 845780.556 +4781 376194.444 888366.667 +4782 376194.444 991061.111 +4783 376211.111 906402.778 +4784 376219.444 821633.333 +4785 376241.667 1047797.222 +4786 376241.667 1094775.000 +4787 376263.889 894977.778 +4788 376300.000 977822.222 +4789 376305.556 1224100.000 +4790 376338.889 794505.556 +4791 376352.778 854008.333 +4792 376361.111 867175.000 +4793 376375.000 765747.222 +4794 376413.889 1207594.444 +4795 376438.889 930922.222 +4796 376438.889 984308.333 +4797 376438.889 987372.222 +4798 376452.778 836488.889 +4799 376455.556 847722.222 +4800 376455.556 915358.333 +4801 376458.333 981133.333 +4802 376486.111 1189711.111 +4803 376547.222 1224066.667 +4804 376577.778 855911.111 +4805 376583.333 976833.333 +4806 376597.222 975750.000 +4807 376613.889 764194.444 +4808 376625.000 1218736.111 +4809 376655.556 827716.667 +4810 376658.333 775066.667 +4811 376719.444 822841.667 +4812 376738.889 808894.444 +4813 376741.667 822775.000 +4814 376775.000 1130611.111 +4815 376788.889 812105.556 +4816 376788.889 1063527.778 +4817 376791.667 954569.444 +4818 376805.556 926636.111 +4819 376808.333 1223988.889 +4820 376811.111 1221233.333 +4821 376819.444 1217669.444 +4822 376830.556 868713.889 +4823 376833.333 879166.667 +4824 376844.444 839530.556 +4825 376852.778 852222.222 +4826 376866.667 979763.889 +4827 376880.556 972633.333 +4828 376902.778 967819.444 +4829 376908.333 757163.889 +4830 376919.444 816241.667 +4831 376922.222 973372.222 +4832 376938.889 858591.667 +4833 376941.667 1220852.778 +4834 376947.222 1221127.778 +4835 376988.889 937958.333 +4836 377005.556 839738.889 +4837 377022.222 1219347.222 +4838 377033.333 822811.111 +4839 377075.000 812508.333 +4840 377102.778 763800.000 +4841 377105.556 821841.667 +4842 377116.667 757494.444 +4843 377130.556 881866.667 +4844 377138.889 971361.111 +4845 377152.778 911350.000 +4846 377194.444 756658.333 +4847 377202.778 1225258.333 +4848 377241.667 898611.111 +4849 377250.000 1221550.000 +4850 377258.333 806422.222 +4851 377272.222 892166.667 +4852 377305.556 818380.556 +4853 377305.556 889330.556 +4854 377338.889 883433.333 +4855 377341.667 793541.667 +4856 377347.222 812997.222 +4857 377361.111 1209344.444 +4858 377383.333 885405.556 +4859 377397.222 818777.778 +4860 377397.222 1214241.667 +4861 377405.556 812308.333 +4862 377416.667 1211233.333 +4863 377430.556 811230.556 +4864 377433.333 877038.889 +4865 377477.778 842947.222 +4866 377497.222 804630.556 +4867 377519.444 890677.778 +4868 377525.000 830688.889 +4869 377527.778 1000166.667 +4870 377530.556 1061080.556 +4871 377533.333 847666.667 +4872 377583.333 812127.778 +4873 377588.889 774802.778 +4874 377600.000 890772.222 +4875 377622.222 848433.333 +4876 377644.444 893350.000 +4877 377661.111 1089052.778 +4878 377666.667 1208461.111 +4879 377691.667 906247.222 +4880 377702.778 1116013.889 +4881 377708.333 812086.111 +4882 377733.333 1130236.111 +4883 377738.889 890263.889 +4884 377741.667 871133.333 +4885 377750.000 1224183.333 +4886 377752.778 879305.556 +4887 377780.556 811883.333 +4888 377791.667 964669.444 +4889 377791.667 975361.111 +4890 377800.000 864605.556 +4891 377800.000 980194.444 +4892 377800.000 1219769.444 +4893 377805.556 804572.222 +4894 377808.333 904216.667 +4895 377813.889 891191.667 +4896 377819.444 756538.889 +4897 377830.556 812661.111 +4898 377838.889 794430.556 +4899 377888.889 971083.333 +4900 377905.556 976291.667 +4901 377930.556 819877.778 +4902 377933.333 799941.667 +4903 377944.444 935777.778 +4904 377963.889 802977.778 +4905 377975.000 797913.889 +4906 377975.000 969994.444 +4907 377975.000 1209955.556 +4908 377975.000 1212150.000 +4909 377991.667 882611.111 +4910 378000.000 973180.556 +4911 378016.667 804458.333 +4912 378030.556 890275.000 +4913 378044.444 1222697.222 +4914 378066.667 1003477.778 +4915 378091.667 854669.444 +4916 378100.000 859813.889 +4917 378105.556 954366.667 +4918 378119.444 1076638.889 +4919 378133.333 820247.222 +4920 378136.111 884380.556 +4921 378144.444 828072.222 +4922 378158.333 811525.000 +4923 378161.111 798247.222 +4924 378172.222 968619.444 +4925 378175.000 892277.778 +4926 378205.556 889275.000 +4927 378216.667 1219988.889 +4928 378227.778 1124350.000 +4929 378227.778 1212755.556 +4930 378238.889 962888.889 +4931 378241.667 820597.222 +4932 378244.444 1222305.556 +4933 378261.111 759919.444 +4934 378286.111 922005.556 +4935 378313.889 1222841.667 +4936 378330.556 891427.778 +4937 378333.333 866327.778 +4938 378344.444 857319.444 +4939 378347.222 973730.556 +4940 378361.111 811350.000 +4941 378361.111 875900.000 +4942 378363.889 812019.444 +4943 378366.667 905327.778 +4944 378391.667 943544.444 +4945 378397.222 947080.556 +4946 378402.778 859491.667 +4947 378405.556 886091.667 +4948 378422.222 1128272.222 +4949 378436.111 824094.444 +4950 378455.556 838583.333 +4951 378486.111 819936.111 +4952 378491.667 1069258.333 +4953 378500.000 997563.889 +4954 378502.778 904986.111 +4955 378502.778 1220311.111 +4956 378511.111 905205.556 +4957 378566.667 924050.000 +4958 378588.889 808544.444 +4959 378591.667 839186.111 +4960 378591.667 1224841.667 +4961 378619.444 846616.667 +4962 378666.667 819866.667 +4963 378672.222 905930.556 +4964 378686.111 976647.222 +4965 378713.889 1093422.222 +4966 378716.667 1222716.667 +4967 378727.778 905277.778 +4968 378736.111 1224555.556 +4969 378769.444 891144.444 +4970 378772.222 1221786.111 +4971 378802.778 862838.889 +4972 378805.556 845730.556 +4973 378811.111 957330.556 +4974 378830.556 870494.444 +4975 378858.333 1221169.444 +4976 378869.444 1222966.667 +4977 378883.333 894947.222 +4978 378966.667 981783.333 +4979 378977.778 889313.889 +4980 378988.889 977825.000 +4981 378994.444 890519.444 +4982 379000.000 867550.000 +4983 379061.111 1225438.889 +4984 379063.889 1220638.889 +4985 379086.111 881291.667 +4986 379094.444 1226852.778 +4987 379100.000 892358.333 +4988 379102.778 853166.667 +4989 379105.556 1222791.667 +4990 379113.889 867444.444 +4991 379136.111 898219.444 +4992 379141.667 919025.000 +4993 379161.111 951700.000 +4994 379166.667 974222.222 +4995 379169.444 952988.889 +4996 379175.000 887622.222 +4997 379213.889 832597.222 +4998 379230.556 905552.778 +4999 379230.556 994094.444 +5000 379236.111 953458.333 +5001 379244.444 953997.222 +5002 379252.778 768594.444 +5003 379255.556 1225263.889 +5004 379330.556 753791.667 +5005 379358.333 1223466.667 +5006 379361.111 992522.222 +5007 379363.889 907877.778 +5008 379369.444 859916.667 +5009 379369.444 869022.222 +5010 379375.000 1078116.667 +5011 379388.889 970194.444 +5012 379402.778 918808.333 +5013 379405.556 1012544.444 +5014 379444.444 874052.778 +5015 379480.556 1220597.222 +5016 379488.889 922636.111 +5017 379508.333 836258.333 +5018 379513.889 867677.778 +5019 379513.889 917711.111 +5020 379533.333 1204216.667 +5021 379577.778 1212897.222 +5022 379586.111 767583.333 +5023 379622.222 986002.778 +5024 379622.222 1223444.444 +5025 379630.556 806897.222 +5026 379647.222 971472.222 +5027 379680.556 913547.222 +5028 379686.111 807672.222 +5029 379716.667 1008722.222 +5030 379725.000 890533.333 +5031 379736.111 820175.000 +5032 379736.111 838419.444 +5033 379736.111 1216944.444 +5034 379736.111 1225300.000 +5035 379747.222 758341.667 +5036 379747.222 815291.667 +5037 379747.222 875558.333 +5038 379747.222 1225605.556 +5039 379772.222 1222941.667 +5040 379780.556 1220300.000 +5041 379797.222 1011327.778 +5042 379805.556 1017522.222 +5043 379811.111 883291.667 +5044 379830.556 890161.111 +5045 379833.333 758541.667 +5046 379838.889 895894.444 +5047 379841.667 1203811.111 +5048 379850.000 1035433.333 +5049 379861.111 1009888.889 +5050 379872.222 1225877.778 +5051 379883.333 857158.333 +5052 379900.000 841797.222 +5053 379916.667 920936.111 +5054 379941.667 838877.778 +5055 379952.778 867977.778 +5056 379966.667 889200.000 +5057 379969.444 1035313.889 +5058 379975.000 1217113.889 +5059 379977.778 1202688.889 +5060 379988.889 861694.444 +5061 379994.444 859436.111 +5062 380013.889 975083.333 +5063 380044.444 1222977.778 +5064 380050.000 1218047.222 +5065 380072.222 896583.333 +5066 380080.556 927444.444 +5067 380127.778 1226441.667 +5068 380144.444 1036277.778 +5069 380147.222 870363.889 +5070 380150.000 1216394.444 +5071 380152.778 890425.000 +5072 380163.889 896186.111 +5073 380172.222 1222875.000 +5074 380227.778 1076708.333 +5075 380238.889 976694.444 +5076 380250.000 780044.444 +5077 380269.444 1219361.111 +5078 380280.556 979400.000 +5079 380280.556 1218836.111 +5080 380291.667 784769.444 +5081 380300.000 790338.889 +5082 380316.667 853425.000 +5083 380330.556 1222658.333 +5084 380372.222 848966.667 +5085 380397.222 1202316.667 +5086 380466.667 937041.667 +5087 380466.667 973447.222 +5088 380491.667 872741.667 +5089 380494.444 773469.444 +5090 380494.444 1221575.000 +5091 380500.000 855458.333 +5092 380522.222 1021222.222 +5093 380525.000 847300.000 +5094 380527.778 811041.667 +5095 380563.889 839433.333 +5096 380608.333 979294.444 +5097 380627.778 914033.333 +5098 380633.333 785027.778 +5099 380638.889 1023100.000 +5100 380666.667 1032222.222 +5101 380669.444 818194.444 +5102 380672.222 1172291.667 +5103 380683.333 788897.222 +5104 380694.444 787008.333 +5105 380722.222 973452.778 +5106 380755.556 755683.333 +5107 380786.111 793833.333 +5108 380802.778 893819.444 +5109 380808.333 818341.667 +5110 380830.556 900958.333 +5111 380838.889 956341.667 +5112 380844.444 998930.556 +5113 380863.889 831263.889 +5114 380872.222 1026202.778 +5115 380875.000 1060944.444 +5116 380902.778 899383.333 +5117 380902.778 922925.000 +5118 380908.333 881586.111 +5119 380916.667 890502.778 +5120 380933.333 885355.556 +5121 380988.889 813241.667 +5122 380991.667 875788.889 +5123 380994.444 883375.000 +5124 381041.667 1222555.556 +5125 381050.000 857588.889 +5126 381075.000 1225686.111 +5127 381088.889 788577.778 +5128 381111.111 858702.778 +5129 381141.667 826033.333 +5130 381161.111 825958.333 +5131 381169.444 784419.444 +5132 381200.000 869141.667 +5133 381230.556 897016.667 +5134 381236.111 857197.222 +5135 381291.667 1040227.778 +5136 381297.222 879350.000 +5137 381302.778 1212713.889 +5138 381344.444 977697.222 +5139 381355.556 961355.556 +5140 381361.111 810997.222 +5141 381372.222 781880.556 +5142 381375.000 1204586.111 +5143 381377.778 892300.000 +5144 381383.333 974311.111 +5145 381400.000 937266.667 +5146 381411.111 856877.778 +5147 381427.778 948133.333 +5148 381450.000 841113.889 +5149 381472.222 980833.333 +5150 381494.444 790719.444 +5151 381502.778 926177.778 +5152 381505.556 812875.000 +5153 381522.222 1212422.222 +5154 381541.667 1213002.778 +5155 381547.222 912438.889 +5156 381558.333 1216902.778 +5157 381597.222 855877.778 +5158 381597.222 874483.333 +5159 381600.000 856597.222 +5160 381616.667 880652.778 +5161 381619.444 834288.889 +5162 381619.444 1216105.556 +5163 381636.111 1211488.889 +5164 381683.333 811950.000 +5165 381688.889 869900.000 +5166 381694.444 971063.889 +5167 381700.000 877830.556 +5168 381769.444 753930.556 +5169 381777.778 947111.111 +5170 381783.333 857097.222 +5171 381802.778 813286.111 +5172 381805.556 990983.333 +5173 381811.111 813072.222 +5174 381863.889 896055.556 +5175 381866.667 919469.444 +5176 381869.444 813655.556 +5177 381875.000 877102.778 +5178 381905.556 940291.667 +5179 381941.667 855644.444 +5180 381944.444 957425.000 +5181 381950.000 856519.444 +5182 381961.111 872966.667 +5183 381961.111 1206794.444 +5184 381969.444 856633.333 +5185 381980.556 886844.444 +5186 382000.000 858227.778 +5187 382008.333 848733.333 +5188 382019.444 790086.111 +5189 382027.778 756927.778 +5190 382030.556 975188.889 +5191 382038.889 857252.778 +5192 382050.000 875741.667 +5193 382080.556 911602.778 +5194 382097.222 842530.556 +5195 382100.000 813841.667 +5196 382100.000 982066.667 +5197 382116.667 899941.667 +5198 382119.444 852236.111 +5199 382119.444 861219.444 +5200 382119.444 896825.000 +5201 382125.000 857402.778 +5202 382141.667 856138.889 +5203 382141.667 1129227.778 +5204 382152.778 814247.222 +5205 382180.556 814430.556 +5206 382180.556 1037555.556 +5207 382183.333 1085680.556 +5208 382205.556 903958.333 +5209 382211.111 903788.889 +5210 382213.889 824425.000 +5211 382225.000 853552.778 +5212 382233.333 800947.222 +5213 382238.889 868622.222 +5214 382247.222 805333.333 +5215 382288.889 856775.000 +5216 382319.444 815377.778 +5217 382319.444 977730.556 +5218 382322.222 905627.778 +5219 382325.000 1226355.556 +5220 382369.444 859858.333 +5221 382383.333 1220391.667 +5222 382402.778 855241.667 +5223 382430.556 933816.667 +5224 382444.444 969277.778 +5225 382452.778 781111.111 +5226 382452.778 815672.222 +5227 382455.556 870361.111 +5228 382494.444 1220388.889 +5229 382500.000 897500.000 +5230 382511.111 875811.111 +5231 382522.222 855922.222 +5232 382541.667 857594.444 +5233 382544.444 769638.889 +5234 382544.444 1046086.111 +5235 382547.222 856313.889 +5236 382547.222 1212988.889 +5237 382566.667 856016.667 +5238 382575.000 879936.111 +5239 382586.111 943302.778 +5240 382613.889 856291.667 +5241 382666.667 764541.667 +5242 382666.667 855330.556 +5243 382672.222 788261.111 +5244 382677.778 856716.667 +5245 382683.333 903800.000 +5246 382694.444 1085472.222 +5247 382716.667 846863.889 +5248 382719.444 876877.778 +5249 382722.222 855836.111 +5250 382730.556 856230.556 +5251 382738.889 856344.444 +5252 382750.000 856150.000 +5253 382769.444 1126402.778 +5254 382786.111 821030.556 +5255 382794.444 856500.000 +5256 382805.556 952416.667 +5257 382811.111 808527.778 +5258 382825.000 855744.444 +5259 382833.333 855911.111 +5260 382833.333 903950.000 +5261 382855.556 821958.333 +5262 382855.556 858241.667 +5263 382858.333 917202.778 +5264 382911.111 766361.111 +5265 382919.444 1224569.444 +5266 382944.444 903158.333 +5267 382972.222 856033.333 +5268 382972.222 1222844.444 +5269 382977.778 1224905.556 +5270 382988.889 869550.000 +5271 383000.000 831741.667 +5272 383002.778 765077.778 +5273 383016.667 916327.778 +5274 383019.444 841475.000 +5275 383027.778 855961.111 +5276 383050.000 899941.667 +5277 383055.556 856963.889 +5278 383083.333 959555.556 +5279 383105.556 854875.000 +5280 383119.444 840275.000 +5281 383138.889 1224808.333 +5282 383150.000 919225.000 +5283 383166.667 866958.333 +5284 383172.222 889030.556 +5285 383175.000 815211.111 +5286 383219.444 756205.556 +5287 383225.000 752180.556 +5288 383238.889 774686.111 +5289 383238.889 1218211.111 +5290 383263.889 898769.444 +5291 383269.444 1227061.111 +5292 383294.444 891908.333 +5293 383305.556 806533.333 +5294 383308.333 887258.333 +5295 383322.222 874452.778 +5296 383325.000 829486.111 +5297 383336.111 856536.111 +5298 383344.444 864641.667 +5299 383358.333 901497.222 +5300 383363.889 750852.778 +5301 383386.111 873450.000 +5302 383397.222 1227000.000 +5303 383422.222 862761.111 +5304 383436.111 893805.556 +5305 383450.000 856155.556 +5306 383450.000 982013.889 +5307 383452.778 885877.778 +5308 383455.556 915013.889 +5309 383483.333 925813.889 +5310 383483.333 970169.444 +5311 383488.889 1207730.556 +5312 383497.222 816327.778 +5313 383500.000 947611.111 +5314 383516.667 859416.667 +5315 383519.444 972041.667 +5316 383527.778 1209316.667 +5317 383550.000 983491.667 +5318 383552.778 875675.000 +5319 383555.556 985805.556 +5320 383566.667 1219866.667 +5321 383605.556 755997.222 +5322 383605.556 817375.000 +5323 383641.667 1225230.556 +5324 383644.444 987644.444 +5325 383683.333 816997.222 +5326 383700.000 851805.556 +5327 383708.333 976638.889 +5328 383722.222 965425.000 +5329 383755.556 863447.222 +5330 383775.000 880561.111 +5331 383819.444 789769.444 +5332 383819.444 975372.222 +5333 383822.222 872127.778 +5334 383861.111 974277.778 +5335 383902.778 842941.667 +5336 383902.778 1051180.556 +5337 383908.333 933344.444 +5338 383911.111 753488.889 +5339 383913.889 869311.111 +5340 383930.556 1208013.889 +5341 383938.889 956027.778 +5342 383952.778 754133.333 +5343 383963.889 825588.889 +5344 383969.444 1130100.000 +5345 383975.000 943513.889 +5346 383980.556 857550.000 +5347 383980.556 980116.667 +5348 383988.889 825783.333 +5349 383997.222 913305.556 +5350 384000.000 1052166.667 +5351 384016.667 1223597.222 +5352 384027.778 942536.111 +5353 384038.889 961813.889 +5354 384047.222 826005.556 +5355 384069.444 875855.556 +5356 384075.000 853788.889 +5357 384077.778 786238.889 +5358 384077.778 861100.000 +5359 384086.111 899919.444 +5360 384088.889 1213705.556 +5361 384094.444 805580.556 +5362 384094.444 822947.222 +5363 384108.333 877613.889 +5364 384147.222 789388.889 +5365 384147.222 818441.667 +5366 384166.667 958527.778 +5367 384177.778 825863.889 +5368 384191.667 824452.778 +5369 384200.000 756880.556 +5370 384200.000 820555.556 +5371 384222.222 837338.889 +5372 384275.000 899136.111 +5373 384277.778 824572.222 +5374 384291.667 1052194.444 +5375 384313.889 928408.333 +5376 384325.000 820202.778 +5377 384327.778 903775.000 +5378 384333.333 851697.222 +5379 384341.667 895502.778 +5380 384344.444 821325.000 +5381 384363.889 1228686.111 +5382 384369.444 823772.222 +5383 384391.667 891627.778 +5384 384405.556 1227133.333 +5385 384408.333 929916.667 +5386 384416.667 892741.667 +5387 384427.778 814805.556 +5388 384436.111 902011.111 +5389 384455.556 910055.556 +5390 384494.444 788691.667 +5391 384527.778 999061.111 +5392 384530.556 856702.778 +5393 384558.333 755777.778 +5394 384563.889 755775.000 +5395 384597.222 940005.556 +5396 384600.000 932025.000 +5397 384602.778 752211.111 +5398 384602.778 810852.778 +5399 384613.889 900916.667 +5400 384655.556 1230077.778 +5401 384697.222 1017522.222 +5402 384722.222 818144.444 +5403 384730.556 779969.444 +5404 384783.333 826380.556 +5405 384783.333 1078755.556 +5406 384794.444 946083.333 +5407 384797.222 1013583.333 +5408 384805.556 1027813.889 +5409 384808.333 767783.333 +5410 384816.667 943541.667 +5411 384819.444 907413.889 +5412 384819.444 1004666.667 +5413 384819.444 1208436.111 +5414 384825.000 1009066.667 +5415 384850.000 786252.778 +5416 384858.333 918502.778 +5417 384886.111 813483.333 +5418 384888.889 921741.667 +5419 384897.222 766825.000 +5420 384902.778 816475.000 +5421 384902.778 897930.556 +5422 384902.778 904869.444 +5423 384919.444 872786.111 +5424 384925.000 826902.778 +5425 384961.111 1214077.778 +5426 384972.222 949502.778 +5427 385019.444 1229950.000 +5428 385025.000 906277.778 +5429 385033.333 826472.222 +5430 385069.444 962616.667 +5431 385086.111 906025.000 +5432 385088.889 891405.556 +5433 385094.444 818400.000 +5434 385130.556 904358.333 +5435 385158.333 884375.000 +5436 385161.111 902102.778 +5437 385172.222 752352.778 +5438 385172.222 826977.778 +5439 385180.556 987777.778 +5440 385200.000 899838.889 +5441 385208.333 880047.222 +5442 385222.222 772938.889 +5443 385225.000 827172.222 +5444 385247.222 1186236.111 +5445 385250.000 891333.333 +5446 385250.000 985333.333 +5447 385250.000 1219697.222 +5448 385266.667 877097.222 +5449 385313.889 993083.333 +5450 385322.222 935219.444 +5451 385325.000 767841.667 +5452 385333.333 902869.444 +5453 385338.889 899888.889 +5454 385347.222 1059983.333 +5455 385363.889 848419.444 +5456 385363.889 859286.111 +5457 385366.667 826830.556 +5458 385369.444 903797.222 +5459 385375.000 819325.000 +5460 385386.111 903350.000 +5461 385388.889 904072.222 +5462 385400.000 827286.111 +5463 385402.778 765847.222 +5464 385411.111 902800.000 +5465 385416.667 857677.778 +5466 385419.444 902327.778 +5467 385425.000 757197.222 +5468 385433.333 896122.222 +5469 385450.000 1217394.444 +5470 385458.333 1069247.222 +5471 385466.667 773369.444 +5472 385488.889 866200.000 +5473 385491.667 904925.000 +5474 385502.778 827780.556 +5475 385505.556 903330.556 +5476 385530.556 903094.444 +5477 385536.111 895383.333 +5478 385541.667 903450.000 +5479 385555.556 978333.333 +5480 385561.111 864683.333 +5481 385563.889 755716.667 +5482 385569.444 903816.667 +5483 385580.556 910119.444 +5484 385594.444 835761.111 +5485 385611.111 941911.111 +5486 385613.889 898972.222 +5487 385630.556 760791.667 +5488 385672.222 866283.333 +5489 385675.000 773283.333 +5490 385708.333 901900.000 +5491 385722.222 948788.889 +5492 385730.556 828302.778 +5493 385733.333 1095491.667 +5494 385736.111 976741.667 +5495 385752.778 771558.333 +5496 385752.778 785027.778 +5497 385758.333 1224488.889 +5498 385766.667 921733.333 +5499 385788.889 1225786.111 +5500 385805.556 1215291.667 +5501 385816.667 1214933.333 +5502 385830.556 936944.444 +5503 385833.333 901250.000 +5504 385833.333 904066.667 +5505 385869.444 984108.333 +5506 385891.667 1213016.667 +5507 385897.222 901200.000 +5508 385902.778 769405.556 +5509 385902.778 903366.667 +5510 385908.333 822830.556 +5511 385913.889 752916.667 +5512 385922.222 899111.111 +5513 385925.000 853177.778 +5514 385925.000 903572.222 +5515 385925.000 905869.444 +5516 385950.000 905461.111 +5517 385969.444 905091.667 +5518 385991.667 833188.889 +5519 386000.000 771625.000 +5520 386008.333 904327.778 +5521 386038.889 898072.222 +5522 386050.000 1079816.667 +5523 386055.556 894358.333 +5524 386055.556 896819.444 +5525 386066.667 896075.000 +5526 386066.667 1212655.556 +5527 386072.222 903833.333 +5528 386075.000 903783.333 +5529 386083.333 912188.889 +5530 386086.111 771408.333 +5531 386102.778 893725.000 +5532 386105.556 895269.444 +5533 386105.556 1228680.556 +5534 386122.222 904633.333 +5535 386125.000 903244.444 +5536 386130.556 787991.667 +5537 386152.778 873544.444 +5538 386155.556 891141.667 +5539 386155.556 952675.000 +5540 386158.333 838086.111 +5541 386172.222 890522.222 +5542 386172.222 1213272.222 +5543 386175.000 819819.444 +5544 386175.000 903491.667 +5545 386183.333 905891.667 +5546 386194.444 946805.556 +5547 386241.667 758547.222 +5548 386244.444 769394.444 +5549 386269.444 770733.333 +5550 386269.444 889455.556 +5551 386275.000 925663.889 +5552 386283.333 910575.000 +5553 386286.111 903194.444 +5554 386300.000 1121200.000 +5555 386338.889 958255.556 +5556 386350.000 900927.778 +5557 386355.556 756102.778 +5558 386355.556 904150.000 +5559 386366.667 900255.556 +5560 386369.444 773113.889 +5561 386380.556 845605.556 +5562 386388.889 787741.667 +5563 386402.778 921222.222 +5564 386411.111 756113.889 +5565 386411.111 837444.444 +5566 386425.000 903236.111 +5567 386450.000 828488.889 +5568 386477.778 786716.667 +5569 386497.222 900930.556 +5570 386497.222 903805.556 +5571 386513.889 862611.111 +5572 386533.333 943486.111 +5573 386555.556 837611.111 +5574 386555.556 927797.222 +5575 386580.556 772500.000 +5576 386591.667 871727.778 +5577 386608.333 904225.000 +5578 386611.111 964916.667 +5579 386616.667 864263.889 +5580 386636.111 873094.444 +5581 386644.444 807100.000 +5582 386652.778 784597.222 +5583 386652.778 903758.333 +5584 386658.333 1209250.000 +5585 386663.889 867911.111 +5586 386675.000 770286.111 +5587 386688.889 884855.556 +5588 386702.778 899844.444 +5589 386711.111 969422.222 +5590 386722.222 901697.222 +5591 386727.778 902991.667 +5592 386730.556 807750.000 +5593 386752.778 917694.444 +5594 386763.889 1213352.778 +5595 386766.667 843302.778 +5596 386769.444 869141.667 +5597 386772.222 875286.111 +5598 386772.222 1231341.667 +5599 386780.556 1211750.000 +5600 386786.111 1212247.222 +5601 386800.000 930927.778 +5602 386808.333 851794.444 +5603 386819.444 845900.000 +5604 386822.222 1047002.778 +5605 386825.000 840658.333 +5606 386825.000 901569.444 +5607 386827.778 1121475.000 +5608 386833.333 902838.889 +5609 386833.333 903077.778 +5610 386858.333 903238.889 +5611 386858.333 1213711.111 +5612 386861.111 765350.000 +5613 386863.889 761719.444 +5614 386886.111 883541.667 +5615 386900.000 753858.333 +5616 386900.000 903425.000 +5617 386905.556 902872.222 +5618 386911.111 1214475.000 +5619 386922.222 1220161.111 +5620 386930.556 902822.222 +5621 386941.667 757738.889 +5622 386947.222 902783.333 +5623 386947.222 1208138.889 +5624 386952.778 903138.889 +5625 386966.667 768480.556 +5626 386975.000 882236.111 +5627 387000.000 902922.222 +5628 387008.333 903497.222 +5629 387011.111 903622.222 +5630 387013.889 901486.111 +5631 387019.444 903169.444 +5632 387025.000 903433.333 +5633 387041.667 772280.556 +5634 387041.667 902816.667 +5635 387041.667 914372.222 +5636 387044.444 932280.556 +5637 387058.333 877600.000 +5638 387072.222 765313.889 +5639 387072.222 1212800.000 +5640 387077.778 770863.889 +5641 387083.333 902927.778 +5642 387105.556 902980.556 +5643 387111.111 981569.444 +5644 387130.556 904297.222 +5645 387133.333 777955.556 +5646 387141.667 854736.111 +5647 387141.667 939911.111 +5648 387144.444 903672.222 +5649 387169.444 878613.889 +5650 387175.000 902655.556 +5651 387183.333 902922.222 +5652 387183.333 950813.889 +5653 387191.667 902602.778 +5654 387191.667 944583.333 +5655 387202.778 920911.111 +5656 387208.333 750763.889 +5657 387208.333 829583.333 +5658 387208.333 902747.222 +5659 387236.111 853694.444 +5660 387236.111 899558.333 +5661 387238.889 770100.000 +5662 387252.778 902966.667 +5663 387263.889 903586.111 +5664 387275.000 903108.333 +5665 387291.667 876816.667 +5666 387291.667 898830.556 +5667 387297.222 1207975.000 +5668 387302.778 828555.556 +5669 387305.556 982277.778 +5670 387308.333 880852.778 +5671 387313.889 799702.778 +5672 387316.667 829977.778 +5673 387316.667 900802.778 +5674 387327.778 763938.889 +5675 387358.333 853800.000 +5676 387358.333 903638.889 +5677 387383.333 771852.778 +5678 387394.444 896711.111 +5679 387400.000 903263.889 +5680 387402.778 902263.889 +5681 387422.222 1080683.333 +5682 387425.000 756047.222 +5683 387430.556 948252.778 +5684 387441.667 903061.111 +5685 387455.556 838450.000 +5686 387458.333 786425.000 +5687 387466.667 1051777.778 +5688 387469.444 902400.000 +5689 387475.000 770833.333 +5690 387477.778 850672.222 +5691 387483.333 899830.556 +5692 387494.444 902855.556 +5693 387508.333 774755.556 +5694 387516.667 769788.889 +5695 387522.222 829369.444 +5696 387544.444 903311.111 +5697 387547.222 828688.889 +5698 387552.778 890952.778 +5699 387552.778 950022.222 +5700 387583.333 830291.667 +5701 387583.333 858080.556 +5702 387594.444 874155.556 +5703 387613.889 1205855.556 +5704 387627.778 937358.333 +5705 387647.222 903136.111 +5706 387647.222 950077.778 +5707 387650.000 768986.111 +5708 387650.000 935563.889 +5709 387713.889 903708.333 +5710 387716.667 840058.333 +5711 387722.222 885025.000 +5712 387725.000 772213.889 +5713 387725.000 1120833.333 +5714 387733.333 888466.667 +5715 387741.667 760766.667 +5716 387741.667 873077.778 +5717 387744.444 751397.222 +5718 387744.444 922569.444 +5719 387750.000 951861.111 +5720 387763.889 765555.556 +5721 387775.000 753102.778 +5722 387800.000 895980.556 +5723 387805.556 955569.444 +5724 387816.667 957383.333 +5725 387819.444 771466.667 +5726 387827.778 846052.778 +5727 387833.333 849016.667 +5728 387838.889 774700.000 +5729 387861.111 829791.667 +5730 387863.889 843697.222 +5731 387863.889 897775.000 +5732 387875.000 942691.667 +5733 387877.778 902158.333 +5734 387891.667 903225.000 +5735 387908.333 1212347.222 +5736 387930.556 774480.556 +5737 387933.333 772719.444 +5738 387933.333 902672.222 +5739 387944.444 835452.778 +5740 387955.556 967355.556 +5741 387997.222 1077188.889 +5742 388005.556 858416.667 +5743 388019.444 813511.111 +5744 388019.444 944525.000 +5745 388033.333 769900.000 +5746 388038.889 769069.444 +5747 388041.667 772050.000 +5748 388047.222 770472.222 +5749 388061.111 871522.222 +5750 388069.444 755916.667 +5751 388072.222 753972.222 +5752 388094.444 769983.333 +5753 388097.222 822025.000 +5754 388105.556 906997.222 +5755 388108.333 949269.444 +5756 388113.889 899530.556 +5757 388113.889 908527.778 +5758 388113.889 911413.889 +5759 388119.444 945316.667 +5760 388133.333 827269.444 +5761 388138.889 769458.333 +5762 388158.333 767500.000 +5763 388183.333 771436.111 +5764 388186.111 817108.333 +5765 388186.111 956888.889 +5766 388188.889 769988.889 +5767 388208.333 785661.111 +5768 388213.889 1023527.778 +5769 388213.889 1211919.444 +5770 388250.000 861700.000 +5771 388250.000 984750.000 +5772 388275.000 910200.000 +5773 388277.778 895400.000 +5774 388283.333 1079702.778 +5775 388294.444 900627.778 +5776 388300.000 768916.667 +5777 388302.778 771966.667 +5778 388327.778 769597.222 +5779 388333.333 769519.444 +5780 388336.111 821383.333 +5781 388338.889 1048208.333 +5782 388341.667 887722.222 +5783 388388.889 774277.778 +5784 388388.889 840963.889 +5785 388402.778 976111.111 +5786 388416.667 765125.000 +5787 388422.222 1061305.556 +5788 388427.778 869913.889 +5789 388444.444 821372.222 +5790 388450.000 768752.778 +5791 388461.111 773066.667 +5792 388466.667 919477.778 +5793 388483.333 900761.111 +5794 388516.667 943436.111 +5795 388527.778 991472.222 +5796 388533.333 913058.333 +5797 388536.111 772597.222 +5798 388561.111 806550.000 +5799 388575.000 768897.222 +5800 388588.889 961088.889 +5801 388597.222 1049166.667 +5802 388611.111 864872.222 +5803 388611.111 900975.000 +5804 388683.333 1075913.889 +5805 388688.889 1179211.111 +5806 388697.222 1069872.222 +5807 388702.778 769213.889 +5808 388711.111 874413.889 +5809 388719.444 771555.556 +5810 388747.222 929113.889 +5811 388783.333 870858.333 +5812 388788.889 860419.444 +5813 388791.667 993263.889 +5814 388794.444 823805.556 +5815 388794.444 829969.444 +5816 388802.778 901111.111 +5817 388808.333 773011.111 +5818 388813.889 948188.889 +5819 388844.444 758275.000 +5820 388850.000 769161.111 +5821 388858.333 945327.778 +5822 388875.000 765122.222 +5823 388877.778 900847.222 +5824 388883.333 897313.889 +5825 388888.889 898452.778 +5826 388905.556 901841.667 +5827 388916.667 1212919.444 +5828 388922.222 894130.556 +5829 388933.333 772219.444 +5830 388941.667 774313.889 +5831 388950.000 770366.667 +5832 388950.000 772119.444 +5833 388952.778 988594.444 +5834 388961.111 769069.444 +5835 388963.889 871866.667 +5836 388966.667 1210758.333 +5837 388975.000 768305.556 +5838 388977.778 1017516.667 +5839 388983.333 900066.667 +5840 389008.333 769158.333 +5841 389008.333 865252.778 +5842 389011.111 772655.556 +5843 389016.667 1079258.333 +5844 389027.778 971166.667 +5845 389061.111 958158.333 +5846 389091.667 900405.556 +5847 389102.778 914480.556 +5848 389105.556 1226091.667 +5849 389125.000 754283.333 +5850 389127.778 772011.111 +5851 389144.444 900858.333 +5852 389172.222 972136.111 +5853 389177.778 839833.333 +5854 389180.556 781947.222 +5855 389186.111 772313.889 +5856 389194.444 973708.333 +5857 389205.556 886613.889 +5858 389208.333 768719.444 +5859 389222.222 1119333.333 +5860 389230.556 942438.889 +5861 389233.333 810961.111 +5862 389236.111 755780.556 +5863 389236.111 768802.778 +5864 389250.000 892688.889 +5865 389258.333 798469.444 +5866 389280.556 769161.111 +5867 389291.667 768619.444 +5868 389313.889 898388.889 +5869 389330.556 769461.111 +5870 389338.889 768969.444 +5871 389341.667 771777.778 +5872 389341.667 808377.778 +5873 389350.000 749063.889 +5874 389350.000 1050163.889 +5875 389377.778 764602.778 +5876 389380.556 769486.111 +5877 389380.556 995602.778 +5878 389386.111 749422.222 +5879 389391.667 769341.667 +5880 389400.000 764952.778 +5881 389413.889 769652.778 +5882 389419.444 835725.000 +5883 389430.556 768925.000 +5884 389430.556 769569.444 +5885 389430.556 845441.667 +5886 389433.333 950983.333 +5887 389452.778 769519.444 +5888 389458.333 846805.556 +5889 389458.333 1199702.778 +5890 389466.667 769313.889 +5891 389477.778 758847.222 +5892 389480.556 817611.111 +5893 389486.111 842800.000 +5894 389488.889 834058.333 +5895 389494.444 848538.889 +5896 389516.667 923338.889 +5897 389519.444 765783.333 +5898 389536.111 947333.333 +5899 389558.333 769458.333 +5900 389561.111 903597.222 +5901 389577.778 1118591.667 +5902 389580.556 762105.556 +5903 389591.667 858902.778 +5904 389591.667 989683.333 +5905 389605.556 890936.111 +5906 389636.111 769911.111 +5907 389636.111 934147.222 +5908 389658.333 770963.889 +5909 389666.667 946166.667 +5910 389683.333 874055.556 +5911 389686.111 773413.889 +5912 389686.111 777358.333 +5913 389688.889 1123227.778 +5914 389694.444 773863.889 +5915 389697.222 768802.778 +5916 389700.000 904313.889 +5917 389702.778 769422.222 +5918 389711.111 770766.667 +5919 389711.111 819144.444 +5920 389716.667 952350.000 +5921 389722.222 970222.222 +5922 389736.111 758052.778 +5923 389736.111 927430.556 +5924 389747.222 748338.889 +5925 389775.000 915047.222 +5926 389777.778 770077.778 +5927 389780.556 1228383.333 +5928 389783.333 764925.000 +5929 389786.111 799497.222 +5930 389791.667 949683.333 +5931 389794.444 765308.333 +5932 389794.444 909805.556 +5933 389805.556 749083.333 +5934 389805.556 769372.222 +5935 389805.556 771005.556 +5936 389819.444 749583.333 +5937 389822.222 946705.556 +5938 389833.333 935683.333 +5939 389858.333 1191619.444 +5940 389863.889 819736.111 +5941 389886.111 769816.667 +5942 389886.111 783588.889 +5943 389891.667 870822.222 +5944 389905.556 770263.889 +5945 389908.333 881625.000 +5946 389916.667 748152.778 +5947 389925.000 791241.667 +5948 389938.889 769108.333 +5949 389938.889 802322.222 +5950 389938.889 1050563.889 +5951 389952.778 1101611.111 +5952 389958.333 889527.778 +5953 389972.222 907383.333 +5954 389975.000 819741.667 +5955 389975.000 844963.889 +5956 389980.556 772886.111 +5957 389988.889 846266.667 +5958 389988.889 895736.111 +5959 389991.667 939533.333 +5960 390005.556 747997.222 +5961 390011.111 1210208.333 +5962 390016.667 766877.778 +5963 390016.667 820488.889 +5964 390019.444 879088.889 +5965 390030.556 769722.222 +5966 390036.111 774008.333 +5967 390036.111 876127.778 +5968 390038.889 819891.667 +5969 390044.444 768758.333 +5970 390052.778 877391.667 +5971 390061.111 856236.111 +5972 390061.111 1118611.111 +5973 390066.667 767794.444 +5974 390077.778 838086.111 +5975 390086.111 944633.333 +5976 390088.889 754661.111 +5977 390100.000 1214219.444 +5978 390122.222 897911.111 +5979 390125.000 846047.222 +5980 390130.556 1047002.778 +5981 390144.444 748819.444 +5982 390150.000 941983.333 +5983 390166.667 846008.333 +5984 390166.667 962888.889 +5985 390169.444 942813.889 +5986 390172.222 927372.222 +5987 390175.000 1220566.667 +5988 390177.778 850588.889 +5989 390177.778 946166.667 +5990 390180.556 918969.444 +5991 390202.778 1208169.444 +5992 390216.667 820291.667 +5993 390216.667 844400.000 +5994 390222.222 946316.667 +5995 390236.111 946933.333 +5996 390241.667 1226738.889 +5997 390250.000 799358.333 +5998 390250.000 998791.667 +5999 390252.778 844175.000 +6000 390252.778 885697.222 +6001 390255.556 770766.667 +6002 390263.889 769744.444 +6003 390272.222 845850.000 +6004 390275.000 820338.889 +6005 390275.000 839197.222 +6006 390277.778 946555.556 +6007 390283.333 842177.778 +6008 390286.111 749388.889 +6009 390286.111 968311.111 +6010 390294.444 895241.667 +6011 390297.222 843663.889 +6012 390302.778 770727.778 +6013 390305.556 975938.889 +6014 390319.444 765030.556 +6015 390330.556 844519.444 +6016 390344.444 843902.778 +6017 390347.222 769077.778 +6018 390347.222 871658.333 +6019 390355.556 845691.667 +6020 390355.556 1042966.667 +6021 390375.000 946319.444 +6022 390380.556 770933.333 +6023 390383.333 804675.000 +6024 390397.222 769933.333 +6025 390397.222 901405.556 +6026 390405.556 946166.667 +6027 390416.667 760666.667 +6028 390427.778 899516.667 +6029 390430.556 1085516.667 +6030 390430.556 1229147.222 +6031 390444.444 953944.444 +6032 390452.778 821305.556 +6033 390483.333 956777.778 +6034 390508.333 747583.333 +6035 390513.889 845816.667 +6036 390516.667 845341.667 +6037 390536.111 765694.444 +6038 390541.667 840530.556 +6039 390561.111 985361.111 +6040 390569.444 849013.889 +6041 390575.000 769361.111 +6042 390594.444 845475.000 +6043 390597.222 948833.333 +6044 390611.111 948194.444 +6045 390619.444 883797.222 +6046 390619.444 887480.556 +6047 390622.222 789697.222 +6048 390633.333 813952.778 +6049 390638.889 1085500.000 +6050 390644.444 1091808.333 +6051 390680.556 830144.444 +6052 390694.444 872600.000 +6053 390694.444 1002319.444 +6054 390702.778 765455.556 +6055 390708.333 898561.111 +6056 390713.889 845322.222 +6057 390719.444 844727.778 +6058 390719.444 852519.444 +6059 390719.444 915700.000 +6060 390722.222 897272.222 +6061 390725.000 937169.444 +6062 390750.000 844472.222 +6063 390755.556 770022.222 +6064 390758.333 953930.556 +6065 390761.111 769580.556 +6066 390769.444 841769.444 +6067 390775.000 846030.556 +6068 390794.444 770733.333 +6069 390825.000 748241.667 +6070 390833.333 782183.333 +6071 390836.111 845086.111 +6072 390838.889 767005.556 +6073 390838.889 771530.556 +6074 390891.667 893905.556 +6075 390908.333 848500.000 +6076 390911.111 944152.778 +6077 390913.889 844958.333 +6078 390916.667 1048722.222 +6079 390919.444 768180.556 +6080 390919.444 1084483.333 +6081 390925.000 845475.000 +6082 390927.778 846127.778 +6083 390927.778 898038.889 +6084 390936.111 1111325.000 +6085 390952.778 874058.333 +6086 390955.556 1215511.111 +6087 390963.889 796811.111 +6088 390991.667 768486.111 +6089 390997.222 945783.333 +6090 391008.333 1209522.222 +6091 391011.111 747180.556 +6092 391041.667 958583.333 +6093 391063.889 844788.889 +6094 391069.444 764852.778 +6095 391072.222 765713.889 +6096 391080.556 769980.556 +6097 391094.444 876563.889 +6098 391097.222 944444.444 +6099 391097.222 950875.000 +6100 391102.778 1083502.778 +6101 391111.111 769327.778 +6102 391111.111 967058.333 +6103 391127.778 844727.778 +6104 391133.333 755422.222 +6105 391133.333 850880.556 +6106 391136.111 826113.889 +6107 391141.667 946272.222 +6108 391155.556 775638.889 +6109 391175.000 900441.667 +6110 391177.778 772527.778 +6111 391180.556 755591.667 +6112 391200.000 885433.333 +6113 391200.000 903283.333 +6114 391211.111 846063.889 +6115 391211.111 851313.889 +6116 391219.444 977063.889 +6117 391222.222 1049166.667 +6118 391230.556 931966.667 +6119 391233.333 825330.556 +6120 391244.444 843616.667 +6121 391247.222 852891.667 +6122 391250.000 869794.444 +6123 391252.778 1118183.333 +6124 391277.778 1215497.222 +6125 391297.222 898194.444 +6126 391300.000 945619.444 +6127 391308.333 894919.444 +6128 391308.333 1231650.000 +6129 391316.667 755252.778 +6130 391319.444 755327.778 +6131 391325.000 941983.333 +6132 391330.556 884719.444 +6133 391333.333 1008633.333 +6134 391341.667 939825.000 +6135 391350.000 858133.333 +6136 391361.111 959513.889 +6137 391361.111 1034694.444 +6138 391366.667 777150.000 +6139 391366.667 847091.667 +6140 391369.444 766986.111 +6141 391394.444 765480.556 +6142 391397.222 771755.556 +6143 391405.556 1216158.333 +6144 391416.667 949383.333 +6145 391433.333 772016.667 +6146 391444.444 891086.111 +6147 391450.000 843744.444 +6148 391452.778 771444.444 +6149 391458.333 774172.222 +6150 391458.333 926836.111 +6151 391458.333 1215902.778 +6152 391488.889 794983.333 +6153 391488.889 1216658.333 +6154 391491.667 767755.556 +6155 391502.778 1232066.667 +6156 391516.667 779825.000 +6157 391522.222 800405.556 +6158 391525.000 847480.556 +6159 391530.556 770672.222 +6160 391530.556 846372.222 +6161 391533.333 746933.333 +6162 391541.667 945466.667 +6163 391547.222 1221483.333 +6164 391552.778 1118175.000 +6165 391566.667 906177.778 +6166 391569.444 846133.333 +6167 391580.556 755247.222 +6168 391588.889 1087283.333 +6169 391591.667 843072.222 +6170 391597.222 825269.444 +6171 391597.222 1217477.778 +6172 391611.111 803522.222 +6173 391611.111 894936.111 +6174 391616.667 847491.667 +6175 391619.444 844569.444 +6176 391625.000 766250.000 +6177 391630.556 871991.667 +6178 391638.889 1197663.889 +6179 391641.667 894636.111 +6180 391652.778 865263.889 +6181 391666.667 765083.333 +6182 391666.667 907808.333 +6183 391697.222 918827.778 +6184 391744.444 901430.556 +6185 391752.778 842944.444 +6186 391758.333 855730.556 +6187 391772.222 767433.333 +6188 391783.333 873936.111 +6189 391791.667 987888.889 +6190 391830.556 766405.556 +6191 391830.556 945925.000 +6192 391836.111 965713.889 +6193 391847.222 938797.222 +6194 391855.556 781636.111 +6195 391863.889 873016.667 +6196 391872.222 844463.889 +6197 391872.222 844880.556 +6198 391888.889 955694.444 +6199 391908.333 843636.111 +6200 391908.333 990283.333 +6201 391911.111 1068169.444 +6202 391927.778 844005.556 +6203 391950.000 946819.444 +6204 391958.333 952080.556 +6205 391963.889 755491.667 +6206 392008.333 804044.444 +6207 392013.889 859213.889 +6208 392019.444 963047.222 +6209 392022.222 836116.667 +6210 392025.000 944922.222 +6211 392038.889 945544.444 +6212 392047.222 760516.667 +6213 392047.222 844280.556 +6214 392052.778 843947.222 +6215 392058.333 894044.444 +6216 392088.889 760669.444 +6217 392094.444 810519.444 +6218 392094.444 935175.000 +6219 392102.778 921377.778 +6220 392105.556 843672.222 +6221 392122.222 1110188.889 +6222 392127.778 941225.000 +6223 392133.333 970052.778 +6224 392144.444 1220083.333 +6225 392150.000 844555.556 +6226 392152.778 953125.000 +6227 392172.222 766375.000 +6228 392180.556 930688.889 +6229 392183.333 845508.333 +6230 392191.667 1210600.000 +6231 392213.889 944511.111 +6232 392216.667 817975.000 +6233 392230.556 845869.444 +6234 392272.222 928463.889 +6235 392272.222 1110527.778 +6236 392275.000 822025.000 +6237 392280.556 843541.667 +6238 392283.333 766166.667 +6239 392300.000 1210755.556 +6240 392311.111 844658.333 +6241 392319.444 843783.333 +6242 392336.111 845458.333 +6243 392338.889 866250.000 +6244 392341.667 922805.556 +6245 392347.222 992977.778 +6246 392352.778 816313.889 +6247 392369.444 850947.222 +6248 392377.778 946958.333 +6249 392377.778 1200255.556 +6250 392402.778 768397.222 +6251 392416.667 748155.556 +6252 392419.444 764483.333 +6253 392425.000 916452.778 +6254 392458.333 750355.556 +6255 392463.889 824786.111 +6256 392463.889 845836.111 +6257 392475.000 1148877.778 +6258 392477.778 881633.333 +6259 392477.778 957061.111 +6260 392483.333 888622.222 +6261 392486.111 873819.444 +6262 392486.111 949000.000 +6263 392505.556 765208.333 +6264 392508.333 803125.000 +6265 392508.333 1062919.444 +6266 392519.444 844702.778 +6267 392544.444 767002.778 +6268 392561.111 844180.556 +6269 392563.889 893480.556 +6270 392566.667 802925.000 +6271 392580.556 758375.000 +6272 392616.667 1210150.000 +6273 392619.444 848200.000 +6274 392630.556 886297.222 +6275 392633.333 803200.000 +6276 392636.111 816294.444 +6277 392638.889 1036916.667 +6278 392666.667 815616.667 +6279 392672.222 767986.111 +6280 392680.556 844133.333 +6281 392680.556 845230.556 +6282 392683.333 1116361.111 +6283 392691.667 803125.000 +6284 392708.333 938341.667 +6285 392719.444 767322.222 +6286 392725.000 776369.444 +6287 392725.000 915744.444 +6288 392727.778 793647.222 +6289 392736.111 882436.111 +6290 392738.889 815730.556 +6291 392738.889 977716.667 +6292 392775.000 745750.000 +6293 392786.111 939766.667 +6294 392797.222 898816.667 +6295 392805.556 803447.222 +6296 392850.000 809686.111 +6297 392863.889 802563.889 +6298 392866.667 867625.000 +6299 392869.444 844852.778 +6300 392883.333 772041.667 +6301 392886.111 803061.111 +6302 392888.889 778600.000 +6303 392902.778 766125.000 +6304 392905.556 756347.222 +6305 392930.556 839888.889 +6306 392930.556 1030666.667 +6307 392950.000 778608.333 +6308 392958.333 859508.333 +6309 392963.889 807772.222 +6310 392963.889 1197747.222 +6311 392988.889 968305.556 +6312 392991.667 879925.000 +6313 392997.222 756050.000 +6314 392997.222 842633.333 +6315 393000.000 852222.222 +6316 393011.111 892850.000 +6317 393022.222 904069.444 +6318 393025.000 936772.222 +6319 393038.889 857713.889 +6320 393047.222 925125.000 +6321 393061.111 1022688.889 +6322 393077.778 1237983.333 +6323 393091.667 764752.778 +6324 393091.667 772975.000 +6325 393108.333 914883.333 +6326 393111.111 949222.222 +6327 393122.222 846505.556 +6328 393141.667 745252.778 +6329 393141.667 776280.556 +6330 393175.000 745950.000 +6331 393183.333 843688.889 +6332 393194.444 884527.778 +6333 393194.444 895719.444 +6334 393200.000 765158.333 +6335 393222.222 952666.667 +6336 393233.333 777530.556 +6337 393236.111 836911.111 +6338 393266.667 1109638.889 +6339 393269.444 815486.111 +6340 393277.778 745038.889 +6341 393280.556 1201822.222 +6342 393291.667 821013.889 +6343 393330.556 829825.000 +6344 393341.667 764397.222 +6345 393355.556 878819.444 +6346 393372.222 854836.111 +6347 393383.333 764800.000 +6348 393391.667 942258.333 +6349 393397.222 852044.444 +6350 393402.778 744777.778 +6351 393405.556 767225.000 +6352 393408.333 800191.667 +6353 393419.444 787569.444 +6354 393419.444 911950.000 +6355 393433.333 954600.000 +6356 393436.111 902125.000 +6357 393450.000 835530.556 +6358 393483.333 796711.111 +6359 393483.333 974458.333 +6360 393488.889 1108508.333 +6361 393508.333 866669.444 +6362 393508.333 1017097.222 +6363 393519.444 833827.778 +6364 393522.222 1125763.889 +6365 393544.444 841272.222 +6366 393566.667 978408.333 +6367 393575.000 1004413.889 +6368 393577.778 780402.778 +6369 393583.333 934955.556 +6370 393597.222 1115855.556 +6371 393600.000 843100.000 +6372 393602.778 1045963.889 +6373 393633.333 765208.333 +6374 393638.889 1216925.000 +6375 393641.667 744233.333 +6376 393647.222 998416.667 +6377 393672.222 767955.556 +6378 393677.778 943619.444 +6379 393688.889 821325.000 +6380 393688.889 1070322.222 +6381 393702.778 947822.222 +6382 393705.556 909050.000 +6383 393708.333 842133.333 +6384 393713.889 862611.111 +6385 393722.222 1048555.556 +6386 393736.111 769680.556 +6387 393738.889 803486.111 +6388 393741.667 767227.778 +6389 393761.111 771550.000 +6390 393772.222 765400.000 +6391 393794.444 812586.111 +6392 393816.667 752202.778 +6393 393869.444 945808.333 +6394 393877.778 889605.556 +6395 393888.889 890800.000 +6396 393913.889 876936.111 +6397 393916.667 797486.111 +6398 393930.556 793733.333 +6399 393938.889 964133.333 +6400 393941.667 765238.889 +6401 393950.000 865625.000 +6402 393955.556 803002.778 +6403 393958.333 1010519.444 +6404 393977.778 821294.444 +6405 393983.333 793819.444 +6406 394013.889 766022.222 +6407 394022.222 1072105.556 +6408 394036.111 769505.556 +6409 394038.889 758677.778 +6410 394050.000 1147777.778 +6411 394063.889 887900.000 +6412 394097.222 1233544.444 +6413 394100.000 743650.000 +6414 394111.111 949013.889 +6415 394119.444 747427.778 +6416 394125.000 764638.889 +6417 394125.000 1217116.667 +6418 394141.667 774108.333 +6419 394152.778 814550.000 +6420 394166.667 953333.333 +6421 394175.000 766213.889 +6422 394183.333 924380.556 +6423 394186.111 775038.889 +6424 394194.444 767805.556 +6425 394200.000 894555.556 +6426 394227.778 765850.000 +6427 394230.556 850127.778 +6428 394233.333 931302.778 +6429 394238.889 928013.889 +6430 394272.222 752344.444 +6431 394277.778 864283.333 +6432 394283.333 744961.111 +6433 394300.000 778044.444 +6434 394311.111 916750.000 +6435 394344.444 929380.556 +6436 394347.222 845369.444 +6437 394355.556 1215369.444 +6438 394369.444 904030.556 +6439 394380.556 992647.222 +6440 394383.333 942038.889 +6441 394388.889 986944.444 +6442 394405.556 925450.000 +6443 394408.333 789741.667 +6444 394408.333 885947.222 +6445 394433.333 896516.667 +6446 394452.778 838286.111 +6447 394455.556 795466.667 +6448 394458.333 1238041.667 +6449 394463.889 897808.333 +6450 394486.111 764180.556 +6451 394488.889 910513.889 +6452 394494.444 757166.667 +6453 394522.222 747280.556 +6454 394561.111 779641.667 +6455 394561.111 981058.333 +6456 394563.889 879961.111 +6457 394575.000 777491.667 +6458 394586.111 822319.444 +6459 394619.444 821819.444 +6460 394625.000 802183.333 +6461 394650.000 874500.000 +6462 394652.778 957361.111 +6463 394666.667 874138.889 +6464 394694.444 762047.222 +6465 394694.444 768297.222 +6466 394716.667 796836.111 +6467 394727.778 765233.333 +6468 394733.333 827394.444 +6469 394736.111 814791.667 +6470 394736.111 922097.222 +6471 394736.111 1187763.889 +6472 394738.889 829108.333 +6473 394783.333 745755.556 +6474 394800.000 845519.444 +6475 394808.333 844577.778 +6476 394808.333 920011.111 +6477 394811.111 766441.667 +6478 394816.667 1060377.778 +6479 394825.000 1114952.778 +6480 394830.556 883727.778 +6481 394838.889 903713.889 +6482 394847.222 820791.667 +6483 394850.000 801427.778 +6484 394852.778 790450.000 +6485 394861.111 750261.111 +6486 394861.111 773522.222 +6487 394886.111 836369.444 +6488 394888.889 961697.222 +6489 394919.444 872672.222 +6490 394922.222 809038.889 +6491 394950.000 798152.778 +6492 394961.111 881761.111 +6493 394966.667 1215511.111 +6494 395008.333 851863.889 +6495 395008.333 897677.778 +6496 395022.222 985463.889 +6497 395030.556 787688.889 +6498 395030.556 820847.222 +6499 395036.111 801669.444 +6500 395050.000 946330.556 +6501 395069.444 847452.778 +6502 395080.556 915286.111 +6503 395105.556 797986.111 +6504 395113.889 821636.111 +6505 395125.000 984333.333 +6506 395127.778 802491.667 +6507 395136.111 749250.000 +6508 395138.889 1215552.778 +6509 395144.444 764113.889 +6510 395147.222 867938.889 +6511 395161.111 843763.889 +6512 395202.778 890488.889 +6513 395205.556 744861.111 +6514 395208.333 861677.778 +6515 395213.889 857769.444 +6516 395219.444 947697.222 +6517 395222.222 954005.556 +6518 395225.000 887536.111 +6519 395236.111 871250.000 +6520 395244.444 1221925.000 +6521 395250.000 1115897.222 +6522 395258.333 871125.000 +6523 395286.111 746483.333 +6524 395297.222 801169.444 +6525 395297.222 840866.667 +6526 395297.222 1198127.778 +6527 395305.556 790177.778 +6528 395308.333 758077.778 +6529 395308.333 803436.111 +6530 395330.556 773150.000 +6531 395330.556 880222.222 +6532 395347.222 1077825.000 +6533 395350.000 1197516.667 +6534 395358.333 763486.111 +6535 395366.667 871058.333 +6536 395380.556 897630.556 +6537 395391.667 863691.667 +6538 395400.000 824072.222 +6539 395419.444 771083.333 +6540 395425.000 1107347.222 +6541 395463.889 750252.778 +6542 395469.444 1114547.222 +6543 395477.778 816397.222 +6544 395483.333 817930.556 +6545 395483.333 943297.222 +6546 395486.111 1076555.556 +6547 395488.889 892944.444 +6548 395491.667 760919.444 +6549 395500.000 860797.222 +6550 395505.556 1073241.667 +6551 395513.889 1103872.222 +6552 395522.222 797980.556 +6553 395522.222 842333.333 +6554 395522.222 940405.556 +6555 395527.778 879394.444 +6556 395538.889 832569.444 +6557 395580.556 801819.444 +6558 395580.556 860952.778 +6559 395588.889 843041.667 +6560 395591.667 742436.111 +6561 395600.000 760716.667 +6562 395608.333 753627.778 +6563 395630.556 951213.889 +6564 395641.667 809961.111 +6565 395655.556 896572.222 +6566 395655.556 944477.778 +6567 395658.333 789805.556 +6568 395672.222 972783.333 +6569 395675.000 848161.111 +6570 395688.889 771772.222 +6571 395708.333 976622.222 +6572 395716.667 754675.000 +6573 395727.778 1075358.333 +6574 395730.556 742319.444 +6575 395744.444 1060969.444 +6576 395752.778 769961.111 +6577 395777.778 755891.667 +6578 395777.778 822377.778 +6579 395852.778 914008.333 +6580 395855.556 902519.444 +6581 395863.889 1064302.778 +6582 395869.444 937958.333 +6583 395886.111 894144.444 +6584 395900.000 789500.000 +6585 395911.111 973986.111 +6586 395916.667 895802.778 +6587 395916.667 897463.889 +6588 395916.667 899527.778 +6589 395927.778 788336.111 +6590 395950.000 751705.556 +6591 395955.556 748819.444 +6592 395994.444 886077.778 +6593 395994.444 1108100.000 +6594 396000.000 759416.667 +6595 396005.556 778208.333 +6596 396005.556 829461.111 +6597 396011.111 1050316.667 +6598 396019.444 748430.556 +6599 396025.000 820883.333 +6600 396027.778 809369.444 +6601 396030.556 743405.556 +6602 396036.111 933422.222 +6603 396044.444 764780.556 +6604 396047.222 761155.556 +6605 396047.222 768502.778 +6606 396047.222 822116.667 +6607 396047.222 828291.667 +6608 396050.000 833955.556 +6609 396066.667 758336.111 +6610 396077.778 908050.000 +6611 396088.889 777047.222 +6612 396091.667 854463.889 +6613 396108.333 945991.667 +6614 396111.111 876961.111 +6615 396116.667 799047.222 +6616 396127.778 863741.667 +6617 396133.333 1050161.111 +6618 396144.444 787752.778 +6619 396172.222 1049502.778 +6620 396202.778 900438.889 +6621 396205.556 777591.667 +6622 396227.778 872833.333 +6623 396236.111 774111.111 +6624 396247.222 890188.889 +6625 396263.889 1114388.889 +6626 396283.333 1050494.444 +6627 396288.889 902188.889 +6628 396294.444 799561.111 +6629 396297.222 904561.111 +6630 396300.000 1116344.444 +6631 396313.889 1065216.667 +6632 396325.000 787847.222 +6633 396333.333 1053166.667 +6634 396344.444 799700.000 +6635 396355.556 840708.333 +6636 396355.556 849311.111 +6637 396363.889 748027.778 +6638 396375.000 1060613.889 +6639 396400.000 891927.778 +6640 396402.778 852622.222 +6641 396402.778 1063736.111 +6642 396413.889 787747.222 +6643 396416.667 777202.778 +6644 396416.667 1049588.889 +6645 396427.778 741808.333 +6646 396427.778 842866.667 +6647 396441.667 775861.111 +6648 396444.444 808577.778 +6649 396444.444 868647.222 +6650 396455.556 887380.556 +6651 396458.333 799875.000 +6652 396469.444 1050247.222 +6653 396469.444 1069511.111 +6654 396477.778 845272.222 +6655 396477.778 1049872.222 +6656 396486.111 818533.333 +6657 396491.667 818622.222 +6658 396494.444 827444.444 +6659 396511.111 776911.111 +6660 396513.889 753286.111 +6661 396525.000 788972.222 +6662 396527.778 787627.778 +6663 396527.778 837869.444 +6664 396533.333 755169.444 +6665 396536.111 835638.889 +6666 396536.111 917344.444 +6667 396538.889 880261.111 +6668 396547.222 775730.556 +6669 396552.778 1068280.556 +6670 396572.222 893894.444 +6671 396577.778 771747.222 +6672 396580.556 789286.111 +6673 396580.556 837350.000 +6674 396583.333 799866.667 +6675 396600.000 750925.000 +6676 396605.556 955261.111 +6677 396611.111 768852.778 +6678 396616.667 995700.000 +6679 396619.444 741655.556 +6680 396619.444 755666.667 +6681 396636.111 794055.556 +6682 396669.444 757272.222 +6683 396697.222 742322.222 +6684 396700.000 861313.889 +6685 396713.889 981533.333 +6686 396716.667 842527.778 +6687 396733.333 856986.111 +6688 396755.556 898466.667 +6689 396761.111 897044.444 +6690 396763.889 1202400.000 +6691 396794.444 844291.667 +6692 396802.778 874175.000 +6693 396819.444 966594.444 +6694 396830.556 776963.889 +6695 396836.111 757500.000 +6696 396841.667 1108538.889 +6697 396847.222 839297.222 +6698 396847.222 883063.889 +6699 396861.111 749955.556 +6700 396866.667 755847.222 +6701 396883.333 1234816.667 +6702 396891.667 865225.000 +6703 396894.444 841688.889 +6704 396911.111 967472.222 +6705 396927.778 777450.000 +6706 396927.778 787930.556 +6707 396938.889 920427.778 +6708 396941.667 910388.889 +6709 396952.778 742591.667 +6710 396955.556 788800.000 +6711 396977.778 760630.556 +6712 396988.889 781800.000 +6713 397011.111 891230.556 +6714 397016.667 824269.444 +6715 397027.778 751122.222 +6716 397044.444 773272.222 +6717 397047.222 1050808.333 +6718 397055.556 964166.667 +6719 397061.111 842194.444 +6720 397061.111 1056969.444 +6721 397069.444 912066.667 +6722 397083.333 913583.333 +6723 397086.111 902280.556 +6724 397088.889 907244.444 +6725 397102.778 1118355.556 +6726 397111.111 754705.556 +6727 397119.444 888044.444 +6728 397119.444 929480.556 +6729 397127.778 889969.444 +6730 397136.111 756097.222 +6731 397136.111 825994.444 +6732 397147.222 884722.222 +6733 397155.556 756411.111 +6734 397155.556 829530.556 +6735 397155.556 886325.000 +6736 397161.111 838777.778 +6737 397183.333 829869.444 +6738 397194.444 832652.778 +6739 397211.111 822988.889 +6740 397219.444 858891.667 +6741 397252.778 899105.556 +6742 397269.444 763269.444 +6743 397277.778 764522.222 +6744 397286.111 1218363.889 +6745 397294.444 754683.333 +6746 397294.444 1048313.889 +6747 397322.222 748813.889 +6748 397327.778 751319.444 +6749 397338.889 902288.889 +6750 397366.667 775352.778 +6751 397377.778 767016.667 +6752 397383.333 855719.444 +6753 397383.333 1043227.778 +6754 397388.889 798988.889 +6755 397391.667 752244.444 +6756 397391.667 755983.333 +6757 397391.667 1049841.667 +6758 397419.444 922583.333 +6759 397422.222 924725.000 +6760 397425.000 1050130.556 +6761 397427.778 1220125.000 +6762 397436.111 775541.667 +6763 397436.111 939980.556 +6764 397441.667 838086.111 +6765 397444.444 770883.333 +6766 397444.444 845322.222 +6767 397452.778 843850.000 +6768 397458.333 755469.444 +6769 397469.444 925638.889 +6770 397475.000 753108.333 +6771 397475.000 1221952.778 +6772 397477.778 815166.667 +6773 397500.000 755000.000 +6774 397508.333 944963.889 +6775 397508.333 1015325.000 +6776 397519.444 905350.000 +6777 397527.778 790811.111 +6778 397530.556 742233.333 +6779 397530.556 1050636.111 +6780 397536.111 765916.667 +6781 397555.556 948722.222 +6782 397555.556 1052205.556 +6783 397558.333 775780.556 +6784 397561.111 993236.111 +6785 397572.222 896536.111 +6786 397575.000 741066.667 +6787 397588.889 841916.667 +6788 397588.889 1044269.444 +6789 397591.667 949494.444 +6790 397605.556 865263.889 +6791 397611.111 799816.667 +6792 397611.111 868119.444 +6793 397622.222 938041.667 +6794 397625.000 811155.556 +6795 397625.000 872291.667 +6796 397655.556 808713.889 +6797 397658.333 903988.889 +6798 397661.111 755097.222 +6799 397661.111 892616.667 +6800 397661.111 1050766.667 +6801 397669.444 990313.889 +6802 397675.000 896805.556 +6803 397683.333 861580.556 +6804 397686.111 766800.000 +6805 397688.889 820922.222 +6806 397713.889 888741.667 +6807 397761.111 859572.222 +6808 397769.444 896791.667 +6809 397791.667 987847.222 +6810 397811.111 769636.111 +6811 397816.667 928900.000 +6812 397819.444 860502.778 +6813 397830.556 950897.222 +6814 397841.667 749925.000 +6815 397844.444 930733.333 +6816 397850.000 857694.444 +6817 397852.778 759791.667 +6818 397872.222 982097.222 +6819 397894.444 769983.333 +6820 397902.778 777280.556 +6821 397911.111 749294.444 +6822 397913.889 741955.556 +6823 397927.778 873708.333 +6824 397930.556 767305.556 +6825 397930.556 1232469.444 +6826 397941.667 915230.556 +6827 397944.444 751491.667 +6828 397952.778 935522.222 +6829 397955.556 855263.889 +6830 397969.444 885916.667 +6831 397972.222 843113.889 +6832 397975.000 842536.111 +6833 397986.111 879858.333 +6834 397988.889 827011.111 +6835 397991.667 882830.556 +6836 397994.444 884622.222 +6837 398005.556 754600.000 +6838 398016.667 896436.111 +6839 398022.222 750644.444 +6840 398022.222 862672.222 +6841 398027.778 828063.889 +6842 398027.778 1050869.444 +6843 398030.556 798080.556 +6844 398036.111 876736.111 +6845 398058.333 920413.889 +6846 398063.889 838869.444 +6847 398066.667 1010416.667 +6848 398069.444 822972.222 +6849 398072.222 770116.667 +6850 398072.222 820713.889 +6851 398077.778 874950.000 +6852 398088.889 755491.667 +6853 398091.667 754869.444 +6854 398094.444 893972.222 +6855 398097.222 825222.222 +6856 398097.222 863225.000 +6857 398105.556 1204680.556 +6858 398113.889 749833.333 +6859 398119.444 771375.000 +6860 398122.222 852088.889 +6861 398125.000 851716.667 +6862 398127.778 793569.444 +6863 398136.111 790250.000 +6864 398161.111 1118547.222 +6865 398169.444 751555.556 +6866 398169.444 912422.222 +6867 398180.556 970505.556 +6868 398183.333 1005277.778 +6869 398191.667 754188.889 +6870 398200.000 750066.667 +6871 398208.333 840194.444 +6872 398219.444 758277.778 +6873 398222.222 1049333.333 +6874 398230.556 787183.333 +6875 398241.667 749980.556 +6876 398244.444 976322.222 +6877 398247.222 797547.222 +6878 398252.778 836344.444 +6879 398266.667 750158.333 +6880 398269.444 805666.667 +6881 398275.000 754147.222 +6882 398277.778 779036.111 +6883 398288.889 848902.778 +6884 398302.778 752408.333 +6885 398308.333 772313.889 +6886 398311.111 905594.444 +6887 398313.889 757577.778 +6888 398338.889 998911.111 +6889 398341.667 960638.889 +6890 398366.667 844113.889 +6891 398366.667 1049586.111 +6892 398366.667 1050366.667 +6893 398380.556 749652.778 +6894 398380.556 751530.556 +6895 398383.333 854388.889 +6896 398386.111 860252.778 +6897 398394.444 750738.889 +6898 398402.778 825461.111 +6899 398402.778 889547.222 +6900 398411.111 966469.444 +6901 398427.778 828047.222 +6902 398433.333 863977.778 +6903 398438.889 750230.556 +6904 398438.889 841247.222 +6905 398441.667 775586.111 +6906 398441.667 895394.444 +6907 398452.778 826008.333 +6908 398461.111 845397.222 +6909 398466.667 757119.444 +6910 398466.667 799000.000 +6911 398480.556 861725.000 +6912 398483.333 810369.444 +6913 398488.889 868022.222 +6914 398494.444 753561.111 +6915 398513.889 1049980.556 +6916 398522.222 750683.333 +6917 398525.000 894086.111 +6918 398525.000 955355.556 +6919 398527.778 894633.333 +6920 398536.111 831830.556 +6921 398536.111 892419.444 +6922 398538.889 890838.889 +6923 398538.889 891661.111 +6924 398555.556 767077.778 +6925 398555.556 767688.889 +6926 398569.444 847933.333 +6927 398583.333 748033.333 +6928 398597.222 866425.000 +6929 398600.000 753447.222 +6930 398600.000 808155.556 +6931 398611.111 819069.444 +6932 398630.556 790583.333 +6933 398636.111 770561.111 +6934 398638.889 864669.444 +6935 398647.222 750555.556 +6936 398652.778 776127.778 +6937 398658.333 751791.667 +6938 398663.889 750286.111 +6939 398675.000 750950.000 +6940 398680.556 1049713.889 +6941 398691.667 753827.778 +6942 398727.778 899211.111 +6943 398744.444 768661.111 +6944 398769.444 870444.444 +6945 398772.222 750650.000 +6946 398772.222 797022.222 +6947 398775.000 843022.222 +6948 398780.556 751211.111 +6949 398780.556 839369.444 +6950 398783.333 750930.556 +6951 398783.333 799250.000 +6952 398788.889 829508.333 +6953 398811.111 753241.667 +6954 398813.889 830930.556 +6955 398830.556 767108.333 +6956 398841.667 827536.111 +6957 398841.667 874086.111 +6958 398850.000 906558.333 +6959 398855.556 1049866.667 +6960 398863.889 769850.000 +6961 398877.778 900077.778 +6962 398891.667 840266.667 +6963 398891.667 943616.667 +6964 398900.000 754758.333 +6965 398900.000 861572.222 +6966 398905.556 841988.889 +6967 398905.556 887280.556 +6968 398908.333 750733.333 +6969 398908.333 752841.667 +6970 398911.111 749222.222 +6971 398913.889 750380.556 +6972 398916.667 751166.667 +6973 398916.667 753000.000 +6974 398919.444 855769.444 +6975 398922.222 747025.000 +6976 398922.222 997066.667 +6977 398925.000 797472.222 +6978 398936.111 896047.222 +6979 398938.889 968791.667 +6980 398955.556 876519.444 +6981 398963.889 801794.444 +6982 398963.889 824202.778 +6983 398966.667 799747.222 +6984 398969.444 761638.889 +6985 398975.000 830869.444 +6986 398977.778 843063.889 +6987 398991.667 820063.889 +6988 398994.444 766405.556 +6989 399000.000 752894.444 +6990 399000.000 825341.667 +6991 399008.333 750850.000 +6992 399016.667 753288.889 +6993 399019.444 753502.778 +6994 399019.444 846750.000 +6995 399022.222 958005.556 +6996 399033.333 844855.556 +6997 399044.444 844016.667 +6998 399063.889 752719.444 +6999 399088.889 766372.222 +7000 399097.222 753238.889 +7001 399097.222 878211.111 +7002 399111.111 851616.667 +7003 399116.667 752775.000 +7004 399122.222 752541.667 +7005 399136.111 868011.111 +7006 399144.444 939619.444 +7007 399147.222 882733.333 +7008 399161.111 765847.222 +7009 399166.667 753880.556 +7010 399175.000 797175.000 +7011 399180.556 750716.667 +7012 399183.333 752594.444 +7013 399202.778 807433.333 +7014 399205.556 789580.556 +7015 399205.556 1050861.111 +7016 399213.889 752883.333 +7017 399219.444 885719.444 +7018 399230.556 772988.889 +7019 399241.667 838088.889 +7020 399258.333 751200.000 +7021 399266.667 740775.000 +7022 399266.667 741341.667 +7023 399277.778 1221780.556 +7024 399283.333 752741.667 +7025 399286.111 749441.667 +7026 399288.889 853702.778 +7027 399291.667 752966.667 +7028 399302.778 772483.333 +7029 399322.222 858480.556 +7030 399325.000 779991.667 +7031 399325.000 889511.111 +7032 399327.778 890619.444 +7033 399336.111 824725.000 +7034 399355.556 914097.222 +7035 399358.333 741713.889 +7036 399361.111 840255.556 +7037 399375.000 776613.889 +7038 399380.556 752722.222 +7039 399386.111 888655.556 +7040 399388.889 741933.333 +7041 399388.889 752558.333 +7042 399402.778 820133.333 +7043 399416.667 948300.000 +7044 399419.444 741502.778 +7045 399419.444 742047.222 +7046 399425.000 745444.444 +7047 399441.667 740733.333 +7048 399444.444 899372.222 +7049 399452.778 799958.333 +7050 399455.556 752616.667 +7051 399472.222 750669.444 +7052 399477.778 810575.000 +7053 399480.556 743611.111 +7054 399486.111 741375.000 +7055 399486.111 874597.222 +7056 399491.667 759738.889 +7057 399508.333 862619.444 +7058 399511.111 902122.222 +7059 399522.222 751641.667 +7060 399525.000 767516.667 +7061 399530.556 1119000.000 +7062 399536.111 741983.333 +7063 399541.667 895486.111 +7064 399541.667 1121194.444 +7065 399547.222 759972.222 +7066 399547.222 828122.222 +7067 399555.556 849175.000 +7068 399555.556 860138.889 +7069 399569.444 858052.778 +7070 399583.333 841722.222 +7071 399586.111 759197.222 +7072 399594.444 825958.333 +7073 399605.556 756058.333 +7074 399608.333 897238.889 +7075 399611.111 829988.889 +7076 399613.889 1055102.778 +7077 399616.667 824913.889 +7078 399625.000 746791.667 +7079 399625.000 767280.556 +7080 399625.000 843280.556 +7081 399633.333 752505.556 +7082 399666.667 758000.000 +7083 399666.667 828855.556 +7084 399675.000 872775.000 +7085 399677.778 847091.667 +7086 399680.556 753416.667 +7087 399686.111 891622.222 +7088 399688.889 829377.778 +7089 399697.222 815366.667 +7090 399700.000 812994.444 +7091 399702.778 740691.667 +7092 399708.333 807508.333 +7093 399719.444 746833.333 +7094 399719.444 765202.778 +7095 399741.667 758202.778 +7096 399747.222 938008.333 +7097 399755.556 1117844.444 +7098 399777.778 796147.222 +7099 399777.778 1051313.889 +7100 399780.556 767333.333 +7101 399783.333 861180.556 +7102 399786.111 820036.111 +7103 399813.889 740666.667 +7104 399819.444 888227.778 +7105 399825.000 772497.222 +7106 399830.556 758241.667 +7107 399830.556 761844.444 +7108 399836.111 768227.778 +7109 399852.778 1048200.000 +7110 399861.111 882588.889 +7111 399866.667 830616.667 +7112 399869.444 951447.222 +7113 399872.222 907633.333 +7114 399880.556 807316.667 +7115 399880.556 811766.667 +7116 399927.778 747880.556 +7117 399936.111 817341.667 +7118 399936.111 1050891.667 +7119 399947.222 844080.556 +7120 399955.556 826744.444 +7121 399958.333 866200.000 +7122 399963.889 1118425.000 +7123 399966.667 749930.556 +7124 399966.667 795861.111 +7125 399969.444 767069.444 +7126 399975.000 857466.667 +7127 399977.778 763544.444 +7128 400016.667 768505.556 +7129 400025.000 799983.333 +7130 400063.889 757036.111 +7131 400069.444 881580.556 +7132 400083.333 752608.333 +7133 400083.333 790783.333 +7134 400088.889 771158.333 +7135 400102.778 799011.111 +7136 400108.333 892822.222 +7137 400113.889 750152.778 +7138 400113.889 783736.111 +7139 400144.444 743116.667 +7140 400150.000 1052700.000 +7141 400158.333 741452.778 +7142 400161.111 810727.778 +7143 400175.000 904241.667 +7144 400177.778 795897.222 +7145 400180.556 807344.444 +7146 400186.111 785041.667 +7147 400191.667 828794.444 +7148 400208.333 980697.222 +7149 400213.889 1220991.667 +7150 400216.667 767283.333 +7151 400227.778 824447.222 +7152 400241.667 798908.333 +7153 400247.222 801002.778 +7154 400250.000 880733.333 +7155 400272.222 808152.778 +7156 400277.778 748694.444 +7157 400277.778 885733.333 +7158 400288.889 756211.111 +7159 400291.667 810391.667 +7160 400297.222 746188.889 +7161 400313.889 909605.556 +7162 400322.222 859125.000 +7163 400330.556 796616.667 +7164 400333.333 831583.333 +7165 400336.111 765047.222 +7166 400347.222 879580.556 +7167 400361.111 746183.333 +7168 400361.111 755141.667 +7169 400363.889 889569.444 +7170 400375.000 1079125.000 +7171 400377.778 763058.333 +7172 400391.667 764311.111 +7173 400391.667 910691.667 +7174 400394.444 842033.333 +7175 400411.111 868744.444 +7176 400419.444 754766.667 +7177 400422.222 876386.111 +7178 400427.778 914975.000 +7179 400444.444 1117313.889 +7180 400455.556 860086.111 +7181 400455.556 878305.556 +7182 400466.667 941355.556 +7183 400469.444 796547.222 +7184 400480.556 901550.000 +7185 400483.333 864691.667 +7186 400491.667 1015325.000 +7187 400497.222 849397.222 +7188 400502.778 1050494.444 +7189 400505.556 749538.889 +7190 400505.556 775205.556 +7191 400513.889 874333.333 +7192 400513.889 945238.889 +7193 400525.000 806286.111 +7194 400530.556 1116727.778 +7195 400547.222 882516.667 +7196 400552.778 840261.111 +7197 400569.444 765525.000 +7198 400580.556 824013.889 +7199 400588.889 1063883.333 +7200 400608.333 956016.667 +7201 400613.889 876380.556 +7202 400630.556 767041.667 +7203 400638.889 807211.111 +7204 400650.000 877019.444 +7205 400652.778 749194.444 +7206 400652.778 800238.889 +7207 400675.000 745311.111 +7208 400680.556 749011.111 +7209 400680.556 825197.222 +7210 400683.333 858483.333 +7211 400691.667 807838.889 +7212 400697.222 753166.667 +7213 400705.556 807611.111 +7214 400711.111 748652.778 +7215 400716.667 740547.222 +7216 400736.111 1046425.000 +7217 400755.556 798983.333 +7218 400758.333 1022227.778 +7219 400763.889 829438.889 +7220 400788.889 936163.889 +7221 400791.667 753019.444 +7222 400794.444 798658.333 +7223 400811.111 750900.000 +7224 400819.444 830252.778 +7225 400830.556 897380.556 +7226 400833.333 798483.333 +7227 400847.222 1048125.000 +7228 400847.222 1049388.889 +7229 400861.111 918130.556 +7230 400861.111 1059388.889 +7231 400869.444 797508.333 +7232 400875.000 805705.556 +7233 400875.000 870597.222 +7234 400877.778 1088097.222 +7235 400883.333 912836.111 +7236 400886.111 829166.667 +7237 400888.889 985191.667 +7238 400911.111 740483.333 +7239 400911.111 795877.778 +7240 400930.556 830180.556 +7241 400941.667 759116.667 +7242 400952.778 876475.000 +7243 400958.333 751255.556 +7244 400958.333 807247.222 +7245 400961.111 989522.222 +7246 400975.000 993616.667 +7247 400977.778 742180.556 +7248 400991.667 1049366.667 +7249 401002.778 795872.222 +7250 401002.778 798408.333 +7251 401002.778 895908.333 +7252 401005.556 748522.222 +7253 401011.111 800675.000 +7254 401016.667 760855.556 +7255 401027.778 846330.556 +7256 401036.111 798694.444 +7257 401052.778 856802.778 +7258 401072.222 808413.889 +7259 401075.000 832675.000 +7260 401077.778 740569.444 +7261 401083.333 837525.000 +7262 401083.333 961541.667 +7263 401083.333 1045194.444 +7264 401091.667 910175.000 +7265 401097.222 765036.111 +7266 401100.000 867719.444 +7267 401105.556 882072.222 +7268 401108.333 767161.111 +7269 401108.333 770352.778 +7270 401119.444 800175.000 +7271 401125.000 855969.444 +7272 401125.000 1049361.111 +7273 401130.556 872625.000 +7274 401138.889 878730.556 +7275 401138.889 879561.111 +7276 401150.000 1116541.667 +7277 401161.111 877783.333 +7278 401163.889 882433.333 +7279 401166.667 800086.111 +7280 401172.222 821194.444 +7281 401172.222 843538.889 +7282 401177.778 804105.556 +7283 401183.333 771902.778 +7284 401188.889 788183.333 +7285 401202.778 1238222.222 +7286 401211.111 887452.778 +7287 401211.111 905630.556 +7288 401213.889 753402.778 +7289 401213.889 820108.333 +7290 401222.222 886452.778 +7291 401222.222 966622.222 +7292 401222.222 1027247.222 +7293 401236.111 876533.333 +7294 401238.889 860133.333 +7295 401244.444 798800.000 +7296 401244.444 876300.000 +7297 401250.000 798666.667 +7298 401250.000 916250.000 +7299 401261.111 740497.222 +7300 401261.111 829291.667 +7301 401291.667 798683.333 +7302 401291.667 994550.000 +7303 401300.000 765708.333 +7304 401302.778 755152.778 +7305 401302.778 1115777.778 +7306 401311.111 952313.889 +7307 401313.889 750677.778 +7308 401319.444 740350.000 +7309 401322.222 844308.333 +7310 401350.000 862205.556 +7311 401363.889 747291.667 +7312 401372.222 971802.778 +7313 401375.000 998291.667 +7314 401377.778 798983.333 +7315 401391.667 748150.000 +7316 401394.444 966588.889 +7317 401408.333 977225.000 +7318 401411.111 806883.333 +7319 401416.667 873947.222 +7320 401447.222 842425.000 +7321 401461.111 747122.222 +7322 401469.444 789122.222 +7323 401483.333 798880.556 +7324 401483.333 893647.222 +7325 401488.889 1029625.000 +7326 401494.444 810663.889 +7327 401497.222 754022.222 +7328 401497.222 771286.111 +7329 401500.000 742138.889 +7330 401502.778 740313.889 +7331 401511.111 762513.889 +7332 401511.111 799077.778 +7333 401519.444 749169.444 +7334 401527.778 766030.556 +7335 401533.333 740286.111 +7336 401536.111 826852.778 +7337 401536.111 889644.444 +7338 401538.889 797413.889 +7339 401544.444 752219.444 +7340 401544.444 807105.556 +7341 401566.667 758330.556 +7342 401566.667 762025.000 +7343 401572.222 760508.333 +7344 401572.222 763072.222 +7345 401597.222 790666.667 +7346 401605.556 1032138.889 +7347 401613.889 790291.667 +7348 401633.333 763952.778 +7349 401633.333 1104022.222 +7350 401638.889 959447.222 +7351 401652.778 1116100.000 +7352 401663.889 975855.556 +7353 401666.667 807000.000 +7354 401669.444 749180.556 +7355 401672.222 1051013.889 +7356 401675.000 921725.000 +7357 401697.222 805938.889 +7358 401708.333 740277.778 +7359 401719.444 849813.889 +7360 401733.333 798577.778 +7361 401736.111 802377.778 +7362 401736.111 854941.667 +7363 401741.667 751072.222 +7364 401744.444 749230.556 +7365 401755.556 1010125.000 +7366 401758.333 860216.667 +7367 401766.667 755480.556 +7368 401777.778 745838.889 +7369 401783.333 740222.222 +7370 401783.333 751288.889 +7371 401786.111 834355.556 +7372 401786.111 1222347.222 +7373 401794.444 1184725.000 +7374 401797.222 761791.667 +7375 401808.333 754294.444 +7376 401825.000 806913.889 +7377 401830.556 798244.444 +7378 401841.667 755383.333 +7379 401855.556 754519.444 +7380 401872.222 767302.778 +7381 401877.778 851275.000 +7382 401880.556 869038.889 +7383 401888.889 852041.667 +7384 401905.556 747027.778 +7385 401916.667 852688.889 +7386 401922.222 740163.889 +7387 401933.333 853863.889 +7388 401933.333 863605.556 +7389 401944.444 1100611.111 +7390 401947.222 925830.556 +7391 401950.000 779833.333 +7392 401950.000 866672.222 +7393 401952.778 884041.667 +7394 401963.889 762013.889 +7395 401963.889 807752.778 +7396 401988.889 754766.667 +7397 401994.444 848052.778 +7398 402000.000 740283.333 +7399 402013.889 771891.667 +7400 402016.667 980675.000 +7401 402019.444 848091.667 +7402 402019.444 1006252.778 +7403 402022.222 740125.000 +7404 402022.222 896980.556 +7405 402022.222 931250.000 +7406 402030.556 799263.889 +7407 402052.778 742141.667 +7408 402055.556 805569.444 +7409 402066.667 751000.000 +7410 402077.778 750730.556 +7411 402077.778 799472.222 +7412 402088.889 789838.889 +7413 402097.222 797672.222 +7414 402105.556 812663.889 +7415 402108.333 752786.111 +7416 402108.333 767913.889 +7417 402113.889 761236.111 +7418 402113.889 885061.111 +7419 402144.444 846369.444 +7420 402150.000 750111.111 +7421 402150.000 1048222.222 +7422 402152.778 782447.222 +7423 402152.778 860263.889 +7424 402169.444 747433.333 +7425 402177.778 945380.556 +7426 402186.111 808730.556 +7427 402191.667 796097.222 +7428 402200.000 744736.111 +7429 402202.778 740125.000 +7430 402202.778 889619.444 +7431 402225.000 844844.444 +7432 402227.778 857788.889 +7433 402230.556 835575.000 +7434 402233.333 769538.889 +7435 402247.222 1052708.333 +7436 402263.889 806516.667 +7437 402269.444 789366.667 +7438 402275.000 903594.444 +7439 402297.222 1008380.556 +7440 402300.000 909500.000 +7441 402305.556 1040722.222 +7442 402313.889 756344.444 +7443 402319.444 927083.333 +7444 402322.222 768850.000 +7445 402330.556 761375.000 +7446 402333.333 740161.111 +7447 402333.333 910625.000 +7448 402338.889 1116577.778 +7449 402344.444 1004169.444 +7450 402352.778 768416.667 +7451 402361.111 740011.111 +7452 402388.889 891230.556 +7453 402394.444 756513.889 +7454 402397.222 769202.778 +7455 402397.222 788352.778 +7456 402402.778 795769.444 +7457 402411.111 760566.667 +7458 402411.111 768944.444 +7459 402413.889 752841.667 +7460 402416.667 881841.667 +7461 402419.444 743016.667 +7462 402427.778 778933.333 +7463 402430.556 740011.111 +7464 402430.556 792377.778 +7465 402433.333 886425.000 +7466 402436.111 788491.667 +7467 402450.000 755955.556 +7468 402452.778 756500.000 +7469 402455.556 748463.889 +7470 402463.889 802116.667 +7471 402469.444 867250.000 +7472 402472.222 796775.000 +7473 402483.333 996330.556 +7474 402497.222 788491.667 +7475 402502.778 1037994.444 +7476 402525.000 756777.778 +7477 402561.111 754641.667 +7478 402588.889 768322.222 +7479 402588.889 1036233.333 +7480 402594.444 892333.333 +7481 402600.000 742741.667 +7482 402625.000 801875.000 +7483 402627.778 769141.667 +7484 402627.778 856758.333 +7485 402638.889 744916.667 +7486 402644.444 758044.444 +7487 402647.222 806263.889 +7488 402652.778 767086.111 +7489 402680.556 967466.667 +7490 402686.111 929530.556 +7491 402691.667 798900.000 +7492 402694.444 745236.111 +7493 402694.444 857280.556 +7494 402700.000 873866.667 +7495 402708.333 798994.444 +7496 402708.333 807816.667 +7497 402719.444 806097.222 +7498 402719.444 818597.222 +7499 402722.222 816061.111 +7500 402727.778 809969.444 +7501 402736.111 764063.889 +7502 402736.111 768847.222 +7503 402750.000 769158.333 +7504 402750.000 1069577.778 +7505 402752.778 768483.333 +7506 402752.778 817511.111 +7507 402761.111 748494.444 +7508 402769.444 858419.444 +7509 402783.333 795450.000 +7510 402794.444 753875.000 +7511 402794.444 865108.333 +7512 402808.333 742516.667 +7513 402819.444 1001652.778 +7514 402819.444 1047772.222 +7515 402822.222 860411.111 +7516 402841.667 841555.556 +7517 402858.333 759847.222 +7518 402858.333 766505.556 +7519 402872.222 788897.222 +7520 402883.333 752094.444 +7521 402883.333 872938.889 +7522 402891.667 850288.889 +7523 402902.778 740180.556 +7524 402908.333 788691.667 +7525 402911.111 795472.222 +7526 402916.667 793894.444 +7527 402916.667 909188.889 +7528 402922.222 798819.444 +7529 402941.667 872488.889 +7530 402941.667 904277.778 +7531 402961.111 740513.889 +7532 402966.667 784500.000 +7533 402969.444 1116938.889 +7534 402972.222 743586.111 +7535 402986.111 830680.556 +7536 402986.111 894850.000 +7537 402988.889 751813.889 +7538 402988.889 788925.000 +7539 402991.667 839688.889 +7540 402994.444 1099880.556 +7541 403000.000 900608.333 +7542 403008.333 852419.444 +7543 403013.889 795391.667 +7544 403030.556 969886.111 +7545 403041.667 739927.778 +7546 403041.667 741008.333 +7547 403041.667 999000.000 +7548 403044.444 826963.889 +7549 403050.000 878005.556 +7550 403055.556 896027.778 +7551 403058.333 880211.111 +7552 403063.889 1212308.333 +7553 403077.778 759658.333 +7554 403083.333 881558.333 +7555 403083.333 1050805.556 +7556 403088.889 765936.111 +7557 403105.556 759397.222 +7558 403105.556 789388.889 +7559 403111.111 783244.444 +7560 403116.667 753255.556 +7561 403119.444 839158.333 +7562 403133.333 889736.111 +7563 403138.889 855005.556 +7564 403144.444 891697.222 +7565 403147.222 883500.000 +7566 403155.556 798313.889 +7567 403161.111 745141.667 +7568 403172.222 746202.778 +7569 403180.556 740155.556 +7570 403200.000 756105.556 +7571 403211.111 793797.222 +7572 403216.667 806100.000 +7573 403219.444 753283.333 +7574 403230.556 793127.778 +7575 403244.444 797013.889 +7576 403247.222 798925.000 +7577 403247.222 805777.778 +7578 403252.778 809013.889 +7579 403272.222 760113.889 +7580 403275.000 805961.111 +7581 403277.778 906069.444 +7582 403280.556 758911.111 +7583 403280.556 796155.556 +7584 403283.333 747911.111 +7585 403288.889 796413.889 +7586 403294.444 759655.556 +7587 403294.444 765155.556 +7588 403294.444 1048547.222 +7589 403300.000 760808.333 +7590 403302.778 739819.444 +7591 403325.000 984483.333 +7592 403336.111 756377.778 +7593 403336.111 759477.778 +7594 403352.778 820069.444 +7595 403355.556 759272.222 +7596 403358.333 783911.111 +7597 403358.333 798700.000 +7598 403366.667 740475.000 +7599 403366.667 754694.444 +7600 403369.444 1049116.667 +7601 403372.222 764758.333 +7602 403375.000 759800.000 +7603 403375.000 797136.111 +7604 403386.111 856444.444 +7605 403386.111 953930.556 +7606 403391.667 767258.333 +7607 403402.778 853508.333 +7608 403408.333 764116.667 +7609 403433.333 1117200.000 +7610 403444.444 866652.778 +7611 403452.778 756333.333 +7612 403455.556 763902.778 +7613 403461.111 742883.333 +7614 403461.111 948722.222 +7615 403469.444 925688.889 +7616 403477.778 798644.444 +7617 403486.111 746594.444 +7618 403486.111 788838.889 +7619 403488.889 851500.000 +7620 403488.889 1047013.889 +7621 403494.444 762136.111 +7622 403505.556 798863.889 +7623 403513.889 843738.889 +7624 403513.889 903244.444 +7625 403516.667 761347.222 +7626 403519.444 887641.667 +7627 403525.000 744405.556 +7628 403538.889 753052.778 +7629 403552.778 800497.222 +7630 403561.111 801102.778 +7631 403583.333 814344.444 +7632 403591.667 914344.444 +7633 403605.556 740386.111 +7634 403611.111 837597.222 +7635 403613.889 739744.444 +7636 403616.667 761844.444 +7637 403641.667 749516.667 +7638 403641.667 1117377.778 +7639 403647.222 800225.000 +7640 403650.000 804141.667 +7641 403658.333 749433.333 +7642 403666.667 961958.333 +7643 403672.222 769313.889 +7644 403672.222 787916.667 +7645 403677.778 810055.556 +7646 403697.222 806341.667 +7647 403705.556 799750.000 +7648 403708.333 802350.000 +7649 403716.667 752019.444 +7650 403719.444 739994.444 +7651 403719.444 752930.556 +7652 403722.222 979711.111 +7653 403725.000 895472.222 +7654 403733.333 756294.444 +7655 403741.667 867688.889 +7656 403752.778 807038.889 +7657 403755.556 823972.222 +7658 403763.889 1046916.667 +7659 403766.667 744250.000 +7660 403769.444 1117950.000 +7661 403772.222 1055211.111 +7662 403780.556 939366.667 +7663 403788.889 745469.444 +7664 403791.667 876686.111 +7665 403794.444 860886.111 +7666 403802.778 790755.556 +7667 403813.889 798600.000 +7668 403816.667 824925.000 +7669 403819.444 803930.556 +7670 403830.556 798066.667 +7671 403844.444 778825.000 +7672 403855.556 797591.667 +7673 403858.333 1222797.222 +7674 403875.000 1045611.111 +7675 403880.556 759183.333 +7676 403886.111 786725.000 +7677 403886.111 854994.444 +7678 403908.333 754925.000 +7679 403908.333 798102.778 +7680 403916.667 743988.889 +7681 403916.667 1118500.000 +7682 403922.222 799002.778 +7683 403922.222 800911.111 +7684 403927.778 958386.111 +7685 403930.556 813466.667 +7686 403930.556 843761.111 +7687 403930.556 901547.222 +7688 403933.333 813338.889 +7689 403933.333 824858.333 +7690 403936.111 779413.889 +7691 403936.111 797863.889 +7692 403936.111 969225.000 +7693 403938.889 799122.222 +7694 403944.444 841727.778 +7695 403947.222 814072.222 +7696 403955.556 798388.889 +7697 403958.333 800333.333 +7698 403958.333 810850.000 +7699 403963.889 913388.889 +7700 403969.444 791519.444 +7701 403969.444 888705.556 +7702 403972.222 913847.222 +7703 403977.778 1050744.444 +7704 403980.556 770233.333 +7705 403983.333 798900.000 +7706 403986.111 794222.222 +7707 403988.889 798411.111 +7708 403997.222 746347.222 +7709 404008.333 935802.778 +7710 404019.444 835452.778 +7711 404022.222 755875.000 +7712 404030.556 797783.333 +7713 404036.111 739919.444 +7714 404058.333 798252.778 +7715 404058.333 799122.222 +7716 404063.889 755022.222 +7717 404075.000 896427.778 +7718 404077.778 740347.222 +7719 404077.778 749786.111 +7720 404086.111 759219.444 +7721 404086.111 798391.667 +7722 404086.111 800836.111 +7723 404088.889 829555.556 +7724 404091.667 925675.000 +7725 404105.556 753786.111 +7726 404125.000 798794.444 +7727 404127.778 847763.889 +7728 404130.556 795705.556 +7729 404141.667 790202.778 +7730 404141.667 799880.556 +7731 404141.667 822411.111 +7732 404147.222 742300.000 +7733 404147.222 743658.333 +7734 404152.778 856505.556 +7735 404155.556 741913.889 +7736 404163.889 1206519.444 +7737 404166.667 868750.000 +7738 404169.444 865947.222 +7739 404172.222 798652.778 +7740 404175.000 862713.889 +7741 404183.333 1013708.333 +7742 404188.889 805897.222 +7743 404197.222 798502.778 +7744 404202.778 917194.444 +7745 404208.333 745611.111 +7746 404208.333 894144.444 +7747 404233.333 784341.667 +7748 404233.333 1047086.111 +7749 404236.111 798830.556 +7750 404255.556 800941.667 +7751 404258.333 786202.778 +7752 404258.333 869080.556 +7753 404258.333 897791.667 +7754 404263.889 832969.444 +7755 404263.889 907925.000 +7756 404266.667 885261.111 +7757 404272.222 783891.667 +7758 404272.222 861255.556 +7759 404311.111 792611.111 +7760 404316.667 981055.556 +7761 404330.556 742000.000 +7762 404333.333 807719.444 +7763 404336.111 893130.556 +7764 404338.889 830738.889 +7765 404344.444 800825.000 +7766 404344.444 849777.778 +7767 404347.222 892177.778 +7768 404350.000 800663.889 +7769 404369.444 843797.222 +7770 404377.778 813733.333 +7771 404383.333 798433.333 +7772 404400.000 816991.667 +7773 404402.778 953775.000 +7774 404402.778 993694.444 +7775 404405.556 799961.111 +7776 404416.667 741302.778 +7777 404416.667 753419.444 +7778 404416.667 798822.222 +7779 404455.556 950658.333 +7780 404461.111 800677.778 +7781 404463.889 741786.111 +7782 404463.889 743863.889 +7783 404469.444 759666.667 +7784 404483.333 1222966.667 +7785 404502.778 831886.111 +7786 404511.111 853700.000 +7787 404513.889 743083.333 +7788 404533.333 1117772.222 +7789 404538.889 758183.333 +7790 404555.556 1095280.556 +7791 404566.667 742469.444 +7792 404577.778 921711.111 +7793 404591.667 743613.889 +7794 404591.667 906716.667 +7795 404591.667 963772.222 +7796 404597.222 785919.444 +7797 404597.222 795233.333 +7798 404602.778 880952.778 +7799 404608.333 799511.111 +7800 404613.889 836700.000 +7801 404641.667 806011.111 +7802 404650.000 878963.889 +7803 404655.556 800658.333 +7804 404672.222 876683.333 +7805 404677.778 841805.556 +7806 404680.556 769322.222 +7807 404700.000 753208.333 +7808 404711.111 838927.778 +7809 404741.667 957333.333 +7810 404755.556 854944.444 +7811 404769.444 930030.556 +7812 404772.222 1095861.111 +7813 404775.000 1049008.333 +7814 404777.778 742911.111 +7815 404780.556 785411.111 +7816 404780.556 859666.667 +7817 404783.333 991263.889 +7818 404791.667 792000.000 +7819 404797.222 846283.333 +7820 404797.222 856277.778 +7821 404800.000 799786.111 +7822 404802.778 863947.222 +7823 404813.889 789188.889 +7824 404813.889 969602.778 +7825 404819.444 757580.556 +7826 404822.222 785519.444 +7827 404841.667 889936.111 +7828 404847.222 780105.556 +7829 404850.000 787250.000 +7830 404850.000 1068311.111 +7831 404861.111 744522.222 +7832 404863.889 794516.667 +7833 404863.889 861336.111 +7834 404872.222 856130.556 +7835 404875.000 944108.333 +7836 404897.222 814458.333 +7837 404897.222 1119380.556 +7838 404905.556 870963.889 +7839 404913.889 799050.000 +7840 404919.444 1072569.444 +7841 404933.333 798608.333 +7842 404936.111 843147.222 +7843 404944.444 896516.667 +7844 404950.000 819847.222 +7845 404966.667 806069.444 +7846 404986.111 989475.000 +7847 404991.667 743994.444 +7848 405005.556 828936.111 +7849 405008.333 759702.778 +7850 405008.333 800677.778 +7851 405030.556 786305.556 +7852 405033.333 757016.667 +7853 405041.667 799491.667 +7854 405063.889 798433.333 +7855 405066.667 742658.333 +7856 405066.667 837480.556 +7857 405083.333 858255.556 +7858 405083.333 868416.667 +7859 405100.000 800947.222 +7860 405108.333 756033.333 +7861 405113.889 753908.333 +7862 405122.222 748597.222 +7863 405122.222 1114736.111 +7864 405141.667 889905.556 +7865 405152.778 1075458.333 +7866 405158.333 755555.556 +7867 405169.444 1016427.778 +7868 405183.333 801669.444 +7869 405186.111 783950.000 +7870 405194.444 808841.667 +7871 405197.222 872477.778 +7872 405205.556 814741.667 +7873 405208.333 925277.778 +7874 405211.111 873783.333 +7875 405216.667 980550.000 +7876 405219.444 1119383.333 +7877 405222.222 800344.444 +7878 405247.222 1118630.556 +7879 405261.111 750619.444 +7880 405266.667 996333.333 +7881 405269.444 975955.556 +7882 405275.000 894925.000 +7883 405288.889 794616.667 +7884 405294.444 891772.222 +7885 405302.778 1047108.333 +7886 405308.333 1122975.000 +7887 405316.667 801691.667 +7888 405322.222 914147.222 +7889 405344.444 835205.556 +7890 405363.889 801847.222 +7891 405369.444 893575.000 +7892 405394.444 754972.222 +7893 405394.444 769611.111 +7894 405408.333 745880.556 +7895 405416.667 797994.444 +7896 405430.556 743636.111 +7897 405433.333 787880.556 +7898 405433.333 791625.000 +7899 405488.889 768122.222 +7900 405488.889 784294.444 +7901 405488.889 845702.778 +7902 405491.667 828275.000 +7903 405500.000 913847.222 +7904 405508.333 948191.667 +7905 405511.111 801930.556 +7906 405527.778 905061.111 +7907 405530.556 797575.000 +7908 405533.333 745319.444 +7909 405538.889 852775.000 +7910 405544.444 819180.556 +7911 405544.444 1231819.444 +7912 405555.556 759822.222 +7913 405561.111 908658.333 +7914 405575.000 828625.000 +7915 405580.556 900350.000 +7916 405588.889 791513.889 +7917 405622.222 1119288.889 +7918 405630.556 802086.111 +7919 405638.889 888988.889 +7920 405644.444 871069.444 +7921 405647.222 878930.556 +7922 405666.667 767008.333 +7923 405669.444 886163.889 +7924 405675.000 882477.778 +7925 405675.000 896405.556 +7926 405677.778 841936.111 +7927 405683.333 745388.889 +7928 405686.111 750950.000 +7929 405694.444 746333.333 +7930 405694.444 774030.556 +7931 405697.222 773972.222 +7932 405697.222 797650.000 +7933 405716.667 807266.667 +7934 405719.444 857691.667 +7935 405725.000 744930.556 +7936 405725.000 898133.333 +7937 405727.778 810858.333 +7938 405733.333 766916.667 +7939 405736.111 802358.333 +7940 405741.667 746102.778 +7941 405747.222 769894.444 +7942 405763.889 1242627.778 +7943 405772.222 742286.111 +7944 405788.889 861902.778 +7945 405791.667 744119.444 +7946 405794.444 753411.111 +7947 405800.000 797669.444 +7948 405813.889 795666.667 +7949 405825.000 1047313.889 +7950 405833.333 909691.667 +7951 405844.444 1023019.444 +7952 405852.778 1050838.889 +7953 405861.111 795316.667 +7954 405861.111 983880.556 +7955 405866.667 1223905.556 +7956 405875.000 866750.000 +7957 405883.333 736583.333 +7958 405883.333 824250.000 +7959 405886.111 831286.111 +7960 405888.889 737294.444 +7961 405891.667 744722.222 +7962 405891.667 765527.778 +7963 405891.667 802252.778 +7964 405900.000 985058.333 +7965 405902.778 998605.556 +7966 405916.667 1118833.333 +7967 405941.667 751947.222 +7968 405947.222 815269.444 +7969 405961.111 795558.333 +7970 405969.444 880380.556 +7971 405980.556 795613.889 +7972 405983.333 760936.111 +7973 405983.333 1241561.111 +7974 406000.000 1124636.111 +7975 406005.556 839752.778 +7976 406011.111 813613.889 +7977 406013.889 753955.556 +7978 406013.889 797600.000 +7979 406027.778 787088.889 +7980 406027.778 795650.000 +7981 406027.778 806491.667 +7982 406027.778 868672.222 +7983 406033.333 783250.000 +7984 406041.667 736558.333 +7985 406044.444 956575.000 +7986 406050.000 777258.333 +7987 406055.556 978588.889 +7988 406058.333 889872.222 +7989 406080.556 742780.556 +7990 406080.556 797413.889 +7991 406086.111 865400.000 +7992 406097.222 1119383.333 +7993 406111.111 1118991.667 +7994 406113.889 798372.222 +7995 406116.667 767188.889 +7996 406127.778 894591.667 +7997 406130.556 805630.556 +7998 406150.000 896222.222 +7999 406155.556 737300.000 +8000 406166.667 873208.333 +8001 406172.222 855047.222 +8002 406175.000 896002.778 +8003 406183.333 806044.444 +8004 406186.111 805775.000 +8005 406188.889 980969.444 +8006 406197.222 1118094.444 +8007 406200.000 825108.333 +8008 406200.000 966288.889 +8009 406211.111 904619.444 +8010 406211.111 986572.222 +8011 406213.889 791527.778 +8012 406219.444 742450.000 +8013 406225.000 808380.556 +8014 406227.778 737247.222 +8015 406227.778 939338.889 +8016 406238.889 737088.889 +8017 406255.556 1032072.222 +8018 406263.889 753461.111 +8019 406266.667 761930.556 +8020 406283.333 763875.000 +8021 406283.333 876961.111 +8022 406297.222 892747.222 +8023 406297.222 913150.000 +8024 406300.000 744277.778 +8025 406300.000 893325.000 +8026 406300.000 1005152.778 +8027 406305.556 761713.889 +8028 406308.333 929244.444 +8029 406319.444 737130.556 +8030 406336.111 744077.778 +8031 406350.000 802283.333 +8032 406352.778 822333.333 +8033 406355.556 1047547.222 +8034 406358.333 782961.111 +8035 406361.111 736819.444 +8036 406361.111 911672.222 +8037 406363.889 829691.667 +8038 406366.667 791444.444 +8039 406366.667 802402.778 +8040 406369.444 975850.000 +8041 406377.778 744513.889 +8042 406386.111 736405.556 +8043 406386.111 775688.889 +8044 406386.111 1119380.556 +8045 406402.778 917427.778 +8046 406408.333 743111.111 +8047 406408.333 743838.889 +8048 406408.333 748816.667 +8049 406411.111 1026263.889 +8050 406413.889 887833.333 +8051 406416.667 748363.889 +8052 406419.444 736700.000 +8053 406422.222 798511.111 +8054 406425.000 742858.333 +8055 406427.778 787730.556 +8056 406427.778 915644.444 +8057 406430.556 736961.111 +8058 406430.556 775808.333 +8059 406430.556 1112800.000 +8060 406441.667 974500.000 +8061 406444.444 804163.889 +8062 406458.333 805980.556 +8063 406461.111 1114972.222 +8064 406469.444 836097.222 +8065 406472.222 895911.111 +8066 406472.222 971130.556 +8067 406500.000 814522.222 +8068 406502.778 896519.444 +8069 406511.111 812991.667 +8070 406530.556 815811.111 +8071 406536.111 972858.333 +8072 406538.889 750869.444 +8073 406541.667 841508.333 +8074 406547.222 736722.222 +8075 406547.222 754750.000 +8076 406547.222 761011.111 +8077 406552.778 743902.778 +8078 406572.222 961861.111 +8079 406575.000 735836.111 +8080 406577.778 849519.444 +8081 406583.333 743000.000 +8082 406586.111 736416.667 +8083 406588.889 743477.778 +8084 406594.444 743233.333 +8085 406597.222 754772.222 +8086 406597.222 802394.444 +8087 406600.000 1119955.556 +8088 406608.333 862419.444 +8089 406625.000 787802.778 +8090 406627.778 735519.444 +8091 406630.556 868694.444 +8092 406638.889 742111.111 +8093 406638.889 775961.111 +8094 406641.667 737088.889 +8095 406641.667 742636.111 +8096 406641.667 904347.222 +8097 406644.444 742647.222 +8098 406658.333 734886.111 +8099 406661.111 806233.333 +8100 406661.111 895800.000 +8101 406669.444 751577.778 +8102 406669.444 947211.111 +8103 406669.444 1118872.222 +8104 406672.222 813550.000 +8105 406677.778 1119380.556 +8106 406686.111 735275.000 +8107 406686.111 741147.222 +8108 406688.889 1118238.889 +8109 406700.000 754958.333 +8110 406705.556 782388.889 +8111 406722.222 743577.778 +8112 406733.333 805766.667 +8113 406733.333 845188.889 +8114 406733.333 921619.444 +8115 406738.889 857213.889 +8116 406763.889 742911.111 +8117 406766.667 818705.556 +8118 406766.667 958588.889 +8119 406786.111 735894.444 +8120 406786.111 752372.222 +8121 406788.889 734175.000 +8122 406788.889 736744.444 +8123 406788.889 910727.778 +8124 406791.667 804950.000 +8125 406800.000 965061.111 +8126 406800.000 1223508.333 +8127 406802.778 734555.556 +8128 406805.556 734747.222 +8129 406805.556 1223700.000 +8130 406813.889 734002.778 +8131 406813.889 820219.444 +8132 406825.000 931208.333 +8133 406827.778 854272.222 +8134 406833.333 744430.556 +8135 406836.111 735105.556 +8136 406841.667 746361.111 +8137 406844.444 803291.667 +8138 406844.444 896800.000 +8139 406850.000 737022.222 +8140 406855.556 761958.333 +8141 406858.333 926772.222 +8142 406861.111 754972.222 +8143 406866.667 733738.889 +8144 406866.667 841377.778 +8145 406872.222 802716.667 +8146 406875.000 802541.667 +8147 406911.111 735636.111 +8148 406913.889 735338.889 +8149 406916.667 811813.889 +8150 406916.667 897950.000 +8151 406925.000 896277.778 +8152 406927.778 837855.556 +8153 406933.333 735080.556 +8154 406936.111 751905.556 +8155 406936.111 895888.889 +8156 406952.778 803050.000 +8157 406955.556 733261.111 +8158 406958.333 800119.444 +8159 406963.889 761691.667 +8160 406966.667 749411.111 +8161 406975.000 734255.556 +8162 406983.333 744019.444 +8163 406994.444 990811.111 +8164 407000.000 802683.333 +8165 407000.000 1118097.222 +8166 407002.778 735933.333 +8167 407008.333 734625.000 +8168 407008.333 737133.333 +8169 407011.111 742305.556 +8170 407022.222 802866.667 +8171 407036.111 894072.222 +8172 407038.889 1050080.556 +8173 407044.444 963872.222 +8174 407047.222 736505.556 +8175 407061.111 733066.667 +8176 407061.111 838438.889 +8177 407063.889 839213.889 +8178 407063.889 933650.000 +8179 407069.444 749563.889 +8180 407069.444 815983.333 +8181 407072.222 736763.889 +8182 407086.111 732816.667 +8183 407088.889 843536.111 +8184 407091.667 1121008.333 +8185 407105.556 902661.111 +8186 407138.889 775908.333 +8187 407138.889 1161030.556 +8188 407141.667 733819.444 +8189 407141.667 737005.556 +8190 407141.667 740063.889 +8191 407147.222 942350.000 +8192 407150.000 880061.111 +8193 407163.889 733222.222 +8194 407166.667 914500.000 +8195 407172.222 734841.667 +8196 407180.556 733547.222 +8197 407186.111 745697.222 +8198 407188.889 1118875.000 +8199 407191.667 736888.889 +8200 407194.444 748361.111 +8201 407194.444 761161.111 +8202 407194.444 993716.667 +8203 407205.556 734405.556 +8204 407208.333 740177.778 +8205 407213.889 892727.778 +8206 407219.444 954805.556 +8207 407236.111 737052.778 +8208 407241.667 737155.556 +8209 407244.444 815222.222 +8210 407250.000 732458.333 +8211 407255.556 753944.444 +8212 407258.333 735147.222 +8213 407263.889 788069.444 +8214 407266.667 736347.222 +8215 407277.778 730980.556 +8216 407280.556 740780.556 +8217 407294.444 760858.333 +8218 407297.222 732108.333 +8219 407297.222 811055.556 +8220 407302.778 803102.778 +8221 407302.778 919622.222 +8222 407311.111 948994.444 +8223 407311.111 1229408.333 +8224 407316.667 1062830.556 +8225 407319.444 731861.111 +8226 407322.222 906644.444 +8227 407336.111 778858.333 +8228 407336.111 827900.000 +8229 407350.000 736883.333 +8230 407355.556 741727.778 +8231 407358.333 730825.000 +8232 407361.111 732630.556 +8233 407372.222 1140366.667 +8234 407383.333 730511.111 +8235 407386.111 851716.667 +8236 407386.111 995372.222 +8237 407391.667 890163.889 +8238 407394.444 743044.444 +8239 407394.444 803294.444 +8240 407397.222 937475.000 +8241 407402.778 753100.000 +8242 407408.333 736630.556 +8243 407408.333 743841.667 +8244 407408.333 752575.000 +8245 407413.889 743600.000 +8246 407416.667 887197.222 +8247 407419.444 950380.556 +8248 407430.556 731930.556 +8249 407433.333 888813.889 +8250 407438.889 740327.778 +8251 407441.667 734825.000 +8252 407452.778 867647.222 +8253 407463.889 741566.667 +8254 407469.444 909038.889 +8255 407472.222 731702.778 +8256 407472.222 885147.222 +8257 407472.222 895738.889 +8258 407477.778 785347.222 +8259 407483.333 741622.222 +8260 407483.333 756122.222 +8261 407483.333 956472.222 +8262 407483.333 988444.444 +8263 407486.111 847911.111 +8264 407491.667 736411.111 +8265 407494.444 868716.667 +8266 407502.778 786711.111 +8267 407516.667 763363.889 +8268 407516.667 818394.444 +8269 407516.667 924147.222 +8270 407519.444 803194.444 +8271 407519.444 884111.111 +8272 407525.000 736108.333 +8273 407536.111 860688.889 +8274 407536.111 882919.444 +8275 407538.889 733608.333 +8276 407538.889 752625.000 +8277 407538.889 798102.778 +8278 407541.667 755991.667 +8279 407544.444 863566.667 +8280 407552.778 736672.222 +8281 407563.889 736452.778 +8282 407566.667 881911.111 +8283 407569.444 729397.222 +8284 407569.444 933186.111 +8285 407580.556 870416.667 +8286 407583.333 736352.778 +8287 407583.333 825155.556 +8288 407588.889 735700.000 +8289 407594.444 825902.778 +8290 407597.222 744175.000 +8291 407608.333 871508.333 +8292 407608.333 1118902.778 +8293 407616.667 733297.222 +8294 407625.000 734536.111 +8295 407630.556 769397.222 +8296 407633.333 872936.111 +8297 407655.556 730155.556 +8298 407655.556 953719.444 +8299 407663.889 894677.778 +8300 407666.667 728525.000 +8301 407666.667 879922.222 +8302 407669.444 729966.667 +8303 407672.222 742052.778 +8304 407683.333 735255.556 +8305 407683.333 741458.333 +8306 407691.667 731155.556 +8307 407691.667 800630.556 +8308 407691.667 875638.889 +8309 407694.444 740208.333 +8310 407694.444 838227.778 +8311 407700.000 1241416.667 +8312 407702.778 874452.778 +8313 407705.556 737180.556 +8314 407705.556 742330.556 +8315 407713.889 846155.556 +8316 407719.444 983691.667 +8317 407733.333 736436.111 +8318 407738.889 742738.889 +8319 407741.667 729433.333 +8320 407744.444 785536.111 +8321 407744.444 970502.778 +8322 407755.556 777927.778 +8323 407758.333 746011.111 +8324 407761.111 877363.889 +8325 407763.889 734677.778 +8326 407775.000 929436.111 +8327 407777.778 899663.889 +8328 407786.111 900147.222 +8329 407794.444 740241.667 +8330 407797.222 978119.444 +8331 407800.000 803386.111 +8332 407808.333 736769.444 +8333 407808.333 997411.111 +8334 407811.111 732466.667 +8335 407811.111 737250.000 +8336 407811.111 766733.333 +8337 407838.889 762305.556 +8338 407841.667 746972.222 +8339 407858.333 747805.556 +8340 407861.111 737141.667 +8341 407866.667 737269.444 +8342 407869.444 730094.444 +8343 407869.444 737372.222 +8344 407872.222 812827.778 +8345 407875.000 827366.667 +8346 407877.778 740147.222 +8347 407877.778 743886.111 +8348 407883.333 741336.111 +8349 407886.111 736000.000 +8350 407886.111 736477.778 +8351 407886.111 842038.889 +8352 407888.889 765591.667 +8353 407891.667 836433.333 +8354 407894.444 740569.444 +8355 407905.556 732022.222 +8356 407905.556 893605.556 +8357 407913.889 762838.889 +8358 407919.444 740041.667 +8359 407933.333 734155.556 +8360 407933.333 764727.778 +8361 407933.333 778602.778 +8362 407936.111 736275.000 +8363 407936.111 741505.556 +8364 407941.667 736608.333 +8365 407941.667 737488.889 +8366 407944.444 801369.444 +8367 407952.778 814736.111 +8368 407958.333 743152.778 +8369 407961.111 891972.222 +8370 407972.222 759697.222 +8371 407977.778 737000.000 +8372 407977.778 858205.556 +8373 407980.556 783975.000 +8374 407986.111 736802.778 +8375 407986.111 742394.444 +8376 407988.889 768625.000 +8377 407988.889 813786.111 +8378 407988.889 816955.556 +8379 407994.444 762127.778 +8380 407994.444 780544.444 +8381 407997.222 736513.889 +8382 407997.222 756622.222 +8383 407997.222 764280.556 +8384 408000.000 966666.667 +8385 408002.778 727902.778 +8386 408005.556 737288.889 +8387 408013.889 756105.556 +8388 408016.667 835105.556 +8389 408019.444 728413.889 +8390 408022.222 1241625.000 +8391 408025.000 737047.222 +8392 408030.556 726150.000 +8393 408030.556 749900.000 +8394 408041.667 740125.000 +8395 408041.667 763408.333 +8396 408041.667 764652.778 +8397 408041.667 821958.333 +8398 408044.444 904016.667 +8399 408050.000 819352.778 +8400 408052.778 742041.667 +8401 408066.667 737038.889 +8402 408066.667 741858.333 +8403 408072.222 736816.667 +8404 408075.000 911127.778 +8405 408083.333 829755.556 +8406 408102.778 795297.222 +8407 408105.556 778186.111 +8408 408119.444 741247.222 +8409 408122.222 730788.889 +8410 408125.000 761419.444 +8411 408152.778 730455.556 +8412 408161.111 736977.778 +8413 408163.889 736375.000 +8414 408163.889 795222.222 +8415 408166.667 964300.000 +8416 408175.000 730005.556 +8417 408177.778 800144.444 +8418 408191.667 831305.556 +8419 408197.222 737355.556 +8420 408202.778 762011.111 +8421 408202.778 879777.778 +8422 408205.556 742941.667 +8423 408205.556 985997.222 +8424 408213.889 739880.556 +8425 408216.667 744813.889 +8426 408222.222 741602.778 +8427 408230.556 726100.000 +8428 408236.111 733991.667 +8429 408236.111 759805.556 +8430 408238.889 735480.556 +8431 408244.444 726666.667 +8432 408244.444 742850.000 +8433 408250.000 783513.889 +8434 408250.000 911563.889 +8435 408255.556 732030.556 +8436 408255.556 736986.111 +8437 408258.333 742094.444 +8438 408261.111 735025.000 +8439 408263.889 741072.222 +8440 408269.444 739761.111 +8441 408272.222 832813.889 +8442 408275.000 762072.222 +8443 408291.667 853355.556 +8444 408297.222 742405.556 +8445 408297.222 750780.556 +8446 408311.111 730300.000 +8447 408316.667 758827.778 +8448 408316.667 768361.111 +8449 408325.000 1157622.222 +8450 408336.111 757141.667 +8451 408336.111 953080.556 +8452 408338.889 740975.000 +8453 408338.889 805405.556 +8454 408341.667 740091.667 +8455 408341.667 803225.000 +8456 408347.222 736958.333 +8457 408350.000 731316.667 +8458 408355.556 803997.222 +8459 408375.000 796322.222 +8460 408380.556 857302.778 +8461 408386.111 735655.556 +8462 408388.889 898863.889 +8463 408397.222 742769.444 +8464 408402.778 740911.111 +8465 408405.556 725819.444 +8466 408408.333 743022.222 +8467 408411.111 740455.556 +8468 408416.667 962933.333 +8469 408419.444 1017247.222 +8470 408427.778 732933.333 +8471 408430.556 737152.778 +8472 408436.111 817641.667 +8473 408447.222 737022.222 +8474 408450.000 806147.222 +8475 408452.778 733355.556 +8476 408455.556 740883.333 +8477 408475.000 776863.889 +8478 408480.556 739980.556 +8479 408480.556 752919.444 +8480 408483.333 799622.222 +8481 408486.111 768200.000 +8482 408486.111 1119061.111 +8483 408488.889 736452.778 +8484 408500.000 782708.333 +8485 408508.333 739705.556 +8486 408516.667 737191.667 +8487 408519.444 731544.444 +8488 408527.778 731155.556 +8489 408527.778 740425.000 +8490 408530.556 741141.667 +8491 408533.333 734119.444 +8492 408538.889 748294.444 +8493 408541.667 1069652.778 +8494 408555.556 1118922.222 +8495 408558.333 732011.111 +8496 408561.111 731877.778 +8497 408566.667 734700.000 +8498 408566.667 741288.889 +8499 408569.444 740219.444 +8500 408580.556 740811.111 +8501 408583.333 731000.000 +8502 408583.333 741641.667 +8503 408588.889 934972.222 +8504 408597.222 999869.444 +8505 408611.111 798955.556 +8506 408613.889 739886.111 +8507 408616.667 896786.111 +8508 408622.222 736341.667 +8509 408625.000 767947.222 +8510 408625.000 856016.667 +8511 408638.889 802591.667 +8512 408644.444 758113.889 +8513 408644.444 765527.778 +8514 408644.444 864997.222 +8515 408644.444 913144.444 +8516 408655.556 735325.000 +8517 408655.556 752069.444 +8518 408658.333 907483.333 +8519 408661.111 860775.000 +8520 408663.889 730361.111 +8521 408663.889 873636.111 +8522 408666.667 1240816.667 +8523 408672.222 980038.889 +8524 408677.778 868788.889 +8525 408680.556 734261.111 +8526 408680.556 777469.444 +8527 408680.556 975916.667 +8528 408686.111 730019.444 +8529 408686.111 752552.778 +8530 408686.111 823183.333 +8531 408688.889 725180.556 +8532 408688.889 733655.556 +8533 408688.889 742086.111 +8534 408694.444 845841.667 +8535 408700.000 961402.778 +8536 408708.333 735113.889 +8537 408711.111 747344.444 +8538 408711.111 984677.778 +8539 408713.889 734572.222 +8540 408716.667 1118913.889 +8541 408727.778 787244.444 +8542 408758.333 745427.778 +8543 408758.333 757327.778 +8544 408758.333 814025.000 +8545 408761.111 735769.444 +8546 408761.111 740302.778 +8547 408766.667 733250.000 +8548 408772.222 807555.556 +8549 408777.778 798466.667 +8550 408777.778 882691.667 +8551 408780.556 888611.111 +8552 408788.889 769872.222 +8553 408794.444 751841.667 +8554 408802.778 879550.000 +8555 408805.556 752150.000 +8556 408805.556 851663.889 +8557 408813.889 741136.111 +8558 408813.889 826619.444 +8559 408816.667 945616.667 +8560 408822.222 740836.111 +8561 408825.000 1216597.222 +8562 408830.556 854975.000 +8563 408830.556 895025.000 +8564 408830.556 1239827.778 +8565 408838.889 745625.000 +8566 408841.667 723900.000 +8567 408841.667 729377.778 +8568 408852.778 739527.778 +8569 408858.333 740438.889 +8570 408858.333 782211.111 +8571 408861.111 732577.778 +8572 408869.444 735555.556 +8573 408880.556 803383.333 +8574 408883.333 738286.111 +8575 408883.333 806941.667 +8576 408894.444 1118800.000 +8577 408897.222 741952.778 +8578 408897.222 782286.111 +8579 408897.222 815977.778 +8580 408908.333 724641.667 +8581 408908.333 774769.444 +8582 408908.333 928150.000 +8583 408916.667 767977.778 +8584 408927.778 739730.556 +8585 408930.556 745822.222 +8586 408938.889 1119011.111 +8587 408947.222 744333.333 +8588 408952.778 736013.889 +8589 408952.778 738075.000 +8590 408952.778 838888.889 +8591 408975.000 740163.889 +8592 408983.333 956711.111 +8593 408988.889 740930.556 +8594 408988.889 747069.444 +8595 408994.444 973991.667 +8596 408997.222 734152.778 +8597 409002.778 807641.667 +8598 409008.333 733436.111 +8599 409011.111 745147.222 +8600 409022.222 817341.667 +8601 409025.000 740622.222 +8602 409025.000 744075.000 +8603 409027.778 747094.444 +8604 409033.333 731583.333 +8605 409033.333 734602.778 +8606 409038.889 741188.889 +8607 409044.444 890344.444 +8608 409050.000 742102.778 +8609 409063.889 842966.667 +8610 409069.444 970986.111 +8611 409072.222 740755.556 +8612 409083.333 902847.222 +8613 409097.222 738083.333 +8614 409100.000 759916.667 +8615 409105.556 735625.000 +8616 409113.889 737827.778 +8617 409113.889 906472.222 +8618 409116.667 859244.444 +8619 409116.667 871552.778 +8620 409125.000 733013.889 +8621 409133.333 759669.444 +8622 409133.333 777786.111 +8623 409152.778 811061.111 +8624 409166.667 741722.222 +8625 409166.667 847027.778 +8626 409169.444 726625.000 +8627 409175.000 770480.556 +8628 409175.000 965280.556 +8629 409177.778 1113986.111 +8630 409180.556 1118713.889 +8631 409186.111 922227.778 +8632 409191.667 892911.111 +8633 409194.444 840569.444 +8634 409222.222 894861.111 +8635 409225.000 900144.444 +8636 409227.778 810191.667 +8637 409230.556 750969.444 +8638 409230.556 809938.889 +8639 409250.000 983416.667 +8640 409252.778 730477.778 +8641 409252.778 739633.333 +8642 409252.778 742769.444 +8643 409255.556 731413.889 +8644 409258.333 746352.778 +8645 409269.444 913994.444 +8646 409275.000 739977.778 +8647 409277.778 733602.778 +8648 409277.778 737522.222 +8649 409280.556 759150.000 +8650 409286.111 740402.778 +8651 409294.444 1001602.778 +8652 409297.222 897575.000 +8653 409297.222 949758.333 +8654 409311.111 738991.667 +8655 409319.444 909469.444 +8656 409322.222 843388.889 +8657 409327.778 724147.222 +8658 409327.778 746597.222 +8659 409327.778 803636.111 +8660 409350.000 740194.444 +8661 409352.778 879344.444 +8662 409355.556 741866.667 +8663 409366.667 871508.333 +8664 409377.778 723013.889 +8665 409380.556 738325.000 +8666 409402.778 741322.222 +8667 409405.556 739972.222 +8668 409413.889 739597.222 +8669 409416.667 777852.778 +8670 409436.111 789711.111 +8671 409444.444 740758.333 +8672 409461.111 874533.333 +8673 409463.889 730697.222 +8674 409466.667 1240994.444 +8675 409469.444 730300.000 +8676 409477.778 903100.000 +8677 409477.778 903711.111 +8678 409480.556 797430.556 +8679 409480.556 839611.111 +8680 409486.111 737330.556 +8681 409491.667 741541.667 +8682 409494.444 725819.444 +8683 409508.333 730844.444 +8684 409519.444 764600.000 +8685 409525.000 833825.000 +8686 409550.000 741863.889 +8687 409558.333 739316.667 +8688 409561.111 729683.333 +8689 409566.667 744983.333 +8690 409572.222 729080.556 +8691 409572.222 739638.889 +8692 409583.333 759750.000 +8693 409586.111 740372.222 +8694 409586.111 759963.889 +8695 409588.889 768994.444 +8696 409597.222 729966.667 +8697 409597.222 730683.333 +8698 409597.222 731300.000 +8699 409608.333 739905.556 +8700 409622.222 828544.444 +8701 409625.000 853733.333 +8702 409627.778 741333.333 +8703 409627.778 964408.333 +8704 409633.333 711833.333 +8705 409633.333 766130.556 +8706 409636.111 813313.889 +8707 409636.111 915577.778 +8708 409644.444 768847.222 +8709 409688.889 737130.556 +8710 409700.000 816966.667 +8711 409713.889 821100.000 +8712 409730.556 739619.444 +8713 409730.556 1177347.222 +8714 409736.111 721441.667 +8715 409747.222 848683.333 +8716 409755.556 785252.778 +8717 409761.111 740266.667 +8718 409777.778 803452.778 +8719 409780.556 817822.222 +8720 409791.667 741169.444 +8721 409805.556 736841.667 +8722 409805.556 1118866.667 +8723 409816.667 951038.889 +8724 409819.444 931983.333 +8725 409827.778 841994.444 +8726 409836.111 739802.778 +8727 409852.778 868794.444 +8728 409858.333 747425.000 +8729 409858.333 796133.333 +8730 409866.667 751950.000 +8731 409869.444 818938.889 +8732 409883.333 1022638.889 +8733 409891.667 741411.111 +8734 409900.000 752166.667 +8735 409900.000 887291.667 +8736 409900.000 947405.556 +8737 409911.111 725347.222 +8738 409911.111 740330.556 +8739 409919.444 760569.444 +8740 409938.889 743038.889 +8741 409941.667 921672.222 +8742 409952.778 740125.000 +8743 409955.556 723416.667 +8744 409963.889 741016.667 +8745 409977.778 722930.556 +8746 409977.778 961619.444 +8747 409980.556 739622.222 +8748 409994.444 751816.667 +8749 410005.556 857686.111 +8750 410011.111 986072.222 +8751 410016.667 736661.111 +8752 410016.667 743675.000 +8753 410016.667 793316.667 +8754 410025.000 784636.111 +8755 410027.778 738791.667 +8756 410027.778 955850.000 +8757 410030.556 879080.556 +8758 410036.111 743419.444 +8759 410036.111 885252.778 +8760 410041.667 923736.111 +8761 410050.000 737850.000 +8762 410052.778 742911.111 +8763 410061.111 764102.778 +8764 410063.889 739494.444 +8765 410080.556 911638.889 +8766 410086.111 919625.000 +8767 410094.444 741733.333 +8768 410097.222 952252.778 +8769 410100.000 818625.000 +8770 410105.556 738441.667 +8771 410105.556 739916.667 +8772 410105.556 741183.333 +8773 410113.889 958819.444 +8774 410127.778 723133.333 +8775 410127.778 816052.778 +8776 410138.889 933063.889 +8777 410144.444 738730.556 +8778 410144.444 763813.889 +8779 410161.111 721597.222 +8780 410166.667 742061.111 +8781 410166.667 758975.000 +8782 410166.667 1114975.000 +8783 410172.222 954019.444 +8784 410186.111 864133.333 +8785 410186.111 957988.889 +8786 410188.889 737986.111 +8787 410191.667 840472.222 +8788 410208.333 814361.111 +8789 410219.444 739477.778 +8790 410233.333 740669.444 +8791 410241.667 806150.000 +8792 410241.667 806630.556 +8793 410247.222 894111.111 +8794 410250.000 807611.111 +8795 410252.778 902797.222 +8796 410255.556 817300.000 +8797 410261.111 989122.222 +8798 410263.889 819333.333 +8799 410266.667 928055.556 +8800 410275.000 941977.778 +8801 410286.111 894383.333 +8802 410288.889 840791.667 +8803 410300.000 825158.333 +8804 410308.333 779497.222 +8805 410316.667 741025.000 +8806 410322.222 1119013.889 +8807 410333.333 820122.222 +8808 410338.889 737633.333 +8809 410338.889 937652.778 +8810 410352.778 805366.667 +8811 410352.778 1119377.778 +8812 410358.333 719550.000 +8813 410375.000 740411.111 +8814 410380.556 742944.444 +8815 410383.333 860280.556 +8816 410388.889 738655.556 +8817 410391.667 963680.556 +8818 410413.889 741294.444 +8819 410413.889 795033.333 +8820 410416.667 939491.667 +8821 410419.444 739186.111 +8822 410441.667 836500.000 +8823 410458.333 762825.000 +8824 410463.889 813980.556 +8825 410466.667 740233.333 +8826 410469.444 957422.222 +8827 410477.778 724636.111 +8828 410491.667 880977.778 +8829 410502.778 788225.000 +8830 410513.889 866030.556 +8831 410519.444 762211.111 +8832 410519.444 830150.000 +8833 410525.000 806080.556 +8834 410525.000 890502.778 +8835 410530.556 827263.889 +8836 410533.333 735391.667 +8837 410544.444 762336.111 +8838 410547.222 797269.444 +8839 410550.000 738205.556 +8840 410572.222 741413.889 +8841 410572.222 966444.444 +8842 410580.556 747530.556 +8843 410583.333 740988.889 +8844 410586.111 943611.111 +8845 410588.889 740222.222 +8846 410602.778 1119702.778 +8847 410605.556 757744.444 +8848 410613.889 1020738.889 +8849 410616.667 897730.556 +8850 410619.444 762227.778 +8851 410633.333 905558.333 +8852 410638.889 800566.667 +8853 410647.222 724266.667 +8854 410647.222 828877.778 +8855 410647.222 862158.333 +8856 410680.556 723391.667 +8857 410705.556 850144.444 +8858 410722.222 858916.667 +8859 410722.222 902252.778 +8860 410758.333 775888.889 +8861 410766.667 818963.889 +8862 410775.000 847272.222 +8863 410780.556 764147.222 +8864 410783.333 805994.444 +8865 410786.111 734697.222 +8866 410797.222 878113.889 +8867 410805.556 868919.444 +8868 410811.111 1119191.667 +8869 410813.889 815191.667 +8870 410816.667 745927.778 +8871 410819.444 961341.667 +8872 410830.556 739205.556 +8873 410844.444 768641.667 +8874 410847.222 856280.556 +8875 410855.556 738588.889 +8876 410886.111 740138.889 +8877 410891.667 906380.556 +8878 410894.444 1120638.889 +8879 410905.556 739183.333 +8880 410927.778 1024702.778 +8881 410936.111 898647.222 +8882 410944.444 884250.000 +8883 410958.333 796827.778 +8884 410961.111 912575.000 +8885 410963.889 739733.333 +8886 410969.444 788888.889 +8887 410972.222 1048144.444 +8888 410983.333 839847.222 +8889 410994.444 909425.000 +8890 410997.222 806497.222 +8891 411000.000 813466.667 +8892 411002.778 821233.333 +8893 411002.778 842663.889 +8894 411013.889 814419.444 +8895 411016.667 807647.222 +8896 411019.444 767713.889 +8897 411033.333 723597.222 +8898 411038.889 826119.444 +8899 411069.444 739205.556 +8900 411072.222 737963.889 +8901 411072.222 774847.222 +8902 411075.000 837927.778 +8903 411077.778 787713.889 +8904 411083.333 835169.444 +8905 411108.333 1120252.778 +8906 411111.111 740688.889 +8907 411113.889 893563.889 +8908 411116.667 1149636.111 +8909 411133.333 742458.333 +8910 411141.667 975986.111 +8911 411144.444 831780.556 +8912 411147.222 741500.000 +8913 411147.222 901644.444 +8914 411158.333 980013.889 +8915 411161.111 791869.444 +8916 411169.444 809836.111 +8917 411175.000 734083.333 +8918 411180.556 739558.333 +8919 411183.333 1120833.333 +8920 411191.667 787602.778 +8921 411200.000 878611.111 +8922 411202.778 765302.778 +8923 411208.333 888352.778 +8924 411219.444 753650.000 +8925 411219.444 830158.333 +8926 411222.222 803330.556 +8927 411230.556 914411.111 +8928 411233.333 737794.444 +8929 411238.889 741697.222 +8930 411238.889 1007650.000 +8931 411241.667 1013558.333 +8932 411247.222 774300.000 +8933 411252.778 848533.333 +8934 411263.889 737144.444 +8935 411263.889 774719.444 +8936 411280.556 1017191.667 +8937 411305.556 851288.889 +8938 411325.000 1119294.444 +8939 411333.333 1048166.667 +8940 411338.889 814847.222 +8941 411358.333 929038.889 +8942 411363.889 740827.778 +8943 411363.889 1120302.778 +8944 411366.667 800094.444 +8945 411366.667 958905.556 +8946 411369.444 774472.222 +8947 411380.556 845805.556 +8948 411383.333 818638.889 +8949 411408.333 962394.444 +8950 411413.889 733583.333 +8951 411416.667 878750.000 +8952 411419.444 878611.111 +8953 411427.778 890600.000 +8954 411427.778 1029775.000 +8955 411444.444 814400.000 +8956 411450.000 788047.222 +8957 411455.556 738241.667 +8958 411458.333 774216.667 +8959 411463.889 747527.778 +8960 411472.222 916605.556 +8961 411475.000 739897.222 +8962 411505.556 739458.333 +8963 411530.556 761505.556 +8964 411533.333 745766.667 +8965 411536.111 813580.556 +8966 411538.889 807016.667 +8967 411544.444 741933.333 +8968 411544.444 960419.444 +8969 411550.000 759786.111 +8970 411563.889 805694.444 +8971 411569.444 834169.444 +8972 411569.444 1011258.333 +8973 411572.222 854883.333 +8974 411575.000 812422.222 +8975 411577.778 800888.889 +8976 411586.111 1010022.222 +8977 411588.889 814544.444 +8978 411594.444 814405.556 +8979 411605.556 926311.111 +8980 411611.111 790833.333 +8981 411616.667 1120255.556 +8982 411627.778 738619.444 +8983 411655.556 808577.778 +8984 411666.667 876627.778 +8985 411669.444 732052.778 +8986 411669.444 740436.111 +8987 411675.000 900425.000 +8988 411688.889 822180.556 +8989 411702.778 909966.667 +8990 411725.000 835563.889 +8991 411725.000 923086.111 +8992 411727.778 882766.667 +8993 411727.778 1119758.333 +8994 411733.333 860347.222 +8995 411741.667 804536.111 +8996 411747.222 918194.444 +8997 411750.000 760750.000 +8998 411769.444 1120030.556 +8999 411772.222 744691.667 +9000 411772.222 797080.556 +9001 411772.222 896575.000 +9002 411788.889 903158.333 +9003 411797.222 975472.222 +9004 411813.889 847405.556 +9005 411813.889 911852.778 +9006 411816.667 743825.000 +9007 411819.444 1040686.111 +9008 411822.222 937286.111 +9009 411827.778 807655.556 +9010 411827.778 836783.333 +9011 411847.222 773141.667 +9012 411855.556 883097.222 +9013 411855.556 919927.778 +9014 411883.333 809783.333 +9015 411916.667 903800.000 +9016 411919.444 1119705.556 +9017 411922.222 974250.000 +9018 411966.667 908802.778 +9019 411969.444 759286.111 +9020 411975.000 739650.000 +9021 411991.667 798730.556 +9022 411997.222 907491.667 +9023 412002.778 857055.556 +9024 412022.222 793277.778 +9025 412030.556 905869.444 +9026 412041.667 737275.000 +9027 412044.444 928825.000 +9028 412052.778 760052.778 +9029 412052.778 960422.222 +9030 412055.556 767858.333 +9031 412069.444 830552.778 +9032 412075.000 838991.667 +9033 412083.333 738916.667 +9034 412094.444 739858.333 +9035 412094.444 1067891.667 +9036 412097.222 746080.556 +9037 412102.778 758969.444 +9038 412108.333 849669.444 +9039 412111.111 805380.556 +9040 412113.889 966200.000 +9041 412122.222 804969.444 +9042 412125.000 924352.778 +9043 412147.222 793855.556 +9044 412150.000 867758.333 +9045 412158.333 890666.667 +9046 412188.889 864230.556 +9047 412197.222 1222738.889 +9048 412219.444 932411.111 +9049 412222.222 730569.444 +9050 412222.222 758633.333 +9051 412225.000 742947.222 +9052 412225.000 770372.222 +9053 412230.556 1119730.556 +9054 412269.444 802400.000 +9055 412269.444 882647.222 +9056 412272.222 858219.444 +9057 412277.778 964875.000 +9058 412283.333 851725.000 +9059 412291.667 840341.667 +9060 412305.556 853194.444 +9061 412319.444 769994.444 +9062 412325.000 956127.778 +9063 412330.556 804936.111 +9064 412338.889 805697.222 +9065 412344.444 795375.000 +9066 412350.000 810494.444 +9067 412350.000 951372.222 +9068 412358.333 1036625.000 +9069 412366.667 954177.778 +9070 412369.444 888313.889 +9071 412375.000 808186.111 +9072 412380.556 818419.444 +9073 412380.556 858530.556 +9074 412391.667 813461.111 +9075 412397.222 816383.333 +9076 412400.000 814408.333 +9077 412400.000 836433.333 +9078 412402.778 759450.000 +9079 412411.111 767241.667 +9080 412411.111 770013.889 +9081 412411.111 815527.778 +9082 412413.889 884194.444 +9083 412425.000 826158.333 +9084 412427.778 732011.111 +9085 412450.000 759311.111 +9086 412450.000 963969.444 +9087 412455.556 899247.222 +9088 412458.333 758816.667 +9089 412463.889 832358.333 +9090 412488.889 841330.556 +9091 412491.667 787997.222 +9092 412502.778 794597.222 +9093 412505.556 878313.889 +9094 412527.778 971297.222 +9095 412538.889 836044.444 +9096 412541.667 769208.333 +9097 412541.667 893422.222 +9098 412541.667 947680.556 +9099 412544.444 823997.222 +9100 412555.556 734352.778 +9101 412558.333 1221383.333 +9102 412561.111 830516.667 +9103 412563.889 743602.778 +9104 412586.111 959375.000 +9105 412591.667 804722.222 +9106 412597.222 906077.778 +9107 412608.333 1117691.667 +9108 412611.111 892275.000 +9109 412611.111 961316.667 +9110 412619.444 739386.111 +9111 412619.444 958608.333 +9112 412647.222 815133.333 +9113 412650.000 882122.222 +9114 412683.333 1109625.000 +9115 412694.444 759166.667 +9116 412705.556 729475.000 +9117 412708.333 737780.556 +9118 412725.000 820547.222 +9119 412736.111 828416.667 +9120 412752.778 758505.556 +9121 412755.556 989663.889 +9122 412761.111 728688.889 +9123 412769.444 926794.444 +9124 412780.556 758975.000 +9125 412783.333 730261.111 +9126 412786.111 725280.556 +9127 412788.889 758786.111 +9128 412794.444 725988.889 +9129 412794.444 728155.556 +9130 412797.222 767133.333 +9131 412800.000 759125.000 +9132 412800.000 913605.556 +9133 412813.889 734986.111 +9134 412813.889 1119875.000 +9135 412833.333 701000.000 +9136 412838.889 812241.667 +9137 412841.667 810966.667 +9138 412844.444 843558.333 +9139 412852.778 723994.444 +9140 412852.778 724480.556 +9141 412861.111 804277.778 +9142 412863.889 962341.667 +9143 412872.222 845536.111 +9144 412877.778 882855.556 +9145 412877.778 993813.889 +9146 412886.111 882516.667 +9147 412888.889 726822.222 +9148 412888.889 758058.333 +9149 412888.889 915522.222 +9150 412897.222 945613.889 +9151 412900.000 739208.333 +9152 412905.556 959177.778 +9153 412916.667 723766.667 +9154 412916.667 758750.000 +9155 412916.667 934422.222 +9156 412919.444 999222.222 +9157 412922.222 895061.111 +9158 412930.556 847619.444 +9159 412938.889 822175.000 +9160 412938.889 902919.444 +9161 412941.667 882711.111 +9162 412952.778 890594.444 +9163 412955.556 861163.889 +9164 412958.333 897902.778 +9165 412963.889 926441.667 +9166 412975.000 826055.556 +9167 412980.556 1120852.778 +9168 412991.667 916927.778 +9169 413036.111 901927.778 +9170 413041.667 829752.778 +9171 413052.778 944611.111 +9172 413072.222 1119594.444 +9173 413077.778 881466.667 +9174 413080.556 729286.111 +9175 413083.333 741450.000 +9176 413088.889 820058.333 +9177 413097.222 742294.444 +9178 413100.000 721458.333 +9179 413100.000 1223094.444 +9180 413111.111 886097.222 +9181 413113.889 1055905.556 +9182 413116.667 758377.778 +9183 413125.000 811438.889 +9184 413125.000 814402.778 +9185 413127.778 963458.333 +9186 413136.111 817247.222 +9187 413138.889 816852.778 +9188 413144.444 818358.333 +9189 413163.889 730936.111 +9190 413166.667 870258.333 +9191 413175.000 868913.889 +9192 413186.111 872002.778 +9193 413188.889 905058.333 +9194 413197.222 758463.889 +9195 413197.222 816269.444 +9196 413205.556 730894.444 +9197 413205.556 758194.444 +9198 413208.333 931091.667 +9199 413216.667 802588.889 +9200 413230.556 777486.111 +9201 413241.667 834386.111 +9202 413250.000 757458.333 +9203 413252.778 721936.111 +9204 413252.778 824933.333 +9205 413255.556 856977.778 +9206 413258.333 757897.222 +9207 413261.111 896788.889 +9208 413263.889 777511.111 +9209 413269.444 757736.111 +9210 413275.000 757933.333 +9211 413275.000 891288.889 +9212 413275.000 891997.222 +9213 413275.000 1102922.222 +9214 413277.778 719911.111 +9215 413277.778 831322.222 +9216 413297.222 906702.778 +9217 413302.778 807255.556 +9218 413305.556 741872.222 +9219 413308.333 887080.556 +9220 413308.333 940136.111 +9221 413316.667 741213.889 +9222 413316.667 743572.222 +9223 413319.444 858500.000 +9224 413322.222 877852.778 +9225 413333.333 922044.444 +9226 413336.111 888780.556 +9227 413358.333 719063.889 +9228 413361.111 759636.111 +9229 413366.667 755188.889 +9230 413391.667 801052.778 +9231 413397.222 757366.667 +9232 413405.556 876213.889 +9233 413436.111 863097.222 +9234 413438.889 757388.889 +9235 413447.222 837972.222 +9236 413450.000 720252.778 +9237 413450.000 815286.111 +9238 413455.556 888425.000 +9239 413458.333 813952.778 +9240 413461.111 730794.444 +9241 413469.444 741266.667 +9242 413486.111 800825.000 +9243 413494.444 851355.556 +9244 413500.000 720788.889 +9245 413502.778 831219.444 +9246 413505.556 719825.000 +9247 413533.333 723911.111 +9248 413533.333 757386.111 +9249 413541.667 719669.444 +9250 413547.222 903813.889 +9251 413555.556 721000.000 +9252 413558.333 822538.889 +9253 413572.222 884211.111 +9254 413577.778 891761.111 +9255 413580.556 935572.222 +9256 413583.333 897372.222 +9257 413613.889 818130.556 +9258 413625.000 742716.667 +9259 413633.333 979688.889 +9260 413638.889 919536.111 +9261 413647.222 961575.000 +9262 413650.000 958577.778 +9263 413652.778 895838.889 +9264 413655.556 815613.889 +9265 413658.333 852388.889 +9266 413661.111 818544.444 +9267 413669.444 799294.444 +9268 413669.444 850588.889 +9269 413680.556 894647.222 +9270 413683.333 821077.778 +9271 413691.667 739666.667 +9272 413711.111 734144.444 +9273 413713.889 839419.444 +9274 413722.222 737338.889 +9275 413747.222 836513.889 +9276 413750.000 746930.556 +9277 413750.000 819083.333 +9278 413772.222 718341.667 +9279 413775.000 718277.778 +9280 413825.000 892188.889 +9281 413833.333 760250.000 +9282 413844.444 833205.556 +9283 413855.556 724361.111 +9284 413858.333 932691.667 +9285 413888.889 705138.889 +9286 413897.222 814413.889 +9287 413900.000 817597.222 +9288 413905.556 809736.111 +9289 413908.333 728600.000 +9290 413913.889 739563.889 +9291 413922.222 841252.778 +9292 413930.556 815366.667 +9293 413947.222 734544.444 +9294 413947.222 757069.444 +9295 413952.778 816763.889 +9296 413969.444 966111.111 +9297 413972.222 736175.000 +9298 413972.222 899044.444 +9299 413977.778 822225.000 +9300 413983.333 818047.222 +9301 413988.889 717475.000 +9302 414000.000 747236.111 +9303 414000.000 828086.111 +9304 414013.889 923544.444 +9305 414019.444 743247.222 +9306 414019.444 996388.889 +9307 414030.556 724513.889 +9308 414036.111 950136.111 +9309 414038.889 881116.667 +9310 414047.222 817230.556 +9311 414050.000 1023438.889 +9312 414061.111 736330.556 +9313 414080.556 929161.111 +9314 414088.889 756627.778 +9315 414091.667 741955.556 +9316 414091.667 1120352.778 +9317 414097.222 797119.444 +9318 414108.333 834611.111 +9319 414119.444 838644.444 +9320 414138.889 733038.889 +9321 414152.778 815661.111 +9322 414155.556 819236.111 +9323 414169.444 815275.000 +9324 414169.444 816061.111 +9325 414169.444 873652.778 +9326 414180.556 864858.333 +9327 414188.889 832213.889 +9328 414197.222 756327.778 +9329 414200.000 877416.667 +9330 414202.778 787288.889 +9331 414208.333 900150.000 +9332 414211.111 820963.889 +9333 414213.889 798813.889 +9334 414219.444 823647.222 +9335 414225.000 879858.333 +9336 414225.000 1001930.556 +9337 414227.778 1223850.000 +9338 414233.333 717861.111 +9339 414244.444 739469.444 +9340 414252.778 816883.333 +9341 414269.444 892133.333 +9342 414277.778 741663.889 +9343 414277.778 857525.000 +9344 414286.111 904608.333 +9345 414294.444 882286.111 +9346 414297.222 720825.000 +9347 414297.222 813908.333 +9348 414297.222 848713.889 +9349 414297.222 973680.556 +9350 414305.556 868983.333 +9351 414313.889 813655.556 +9352 414322.222 714569.444 +9353 414333.333 964977.778 +9354 414344.444 721102.778 +9355 414347.222 815258.333 +9356 414350.000 815363.889 +9357 414352.778 816575.000 +9358 414391.667 740455.556 +9359 414391.667 907175.000 +9360 414397.222 817355.556 +9361 414413.889 818644.444 +9362 414413.889 852650.000 +9363 414427.778 860013.889 +9364 414433.333 840088.889 +9365 414441.667 744002.778 +9366 414444.444 876313.889 +9367 414452.778 947644.444 +9368 414458.333 744233.333 +9369 414463.889 861480.556 +9370 414472.222 970591.667 +9371 414477.778 814277.778 +9372 414480.556 901541.667 +9373 414486.111 847480.556 +9374 414486.111 977302.778 +9375 414488.889 827080.556 +9376 414488.889 956152.778 +9377 414500.000 816636.111 +9378 414505.556 834875.000 +9379 414513.889 756122.222 +9380 414516.667 820355.556 +9381 414525.000 963508.333 +9382 414527.778 821825.000 +9383 414530.556 905719.444 +9384 414541.667 705625.000 +9385 414541.667 706041.667 +9386 414541.667 740580.556 +9387 414550.000 1068058.333 +9388 414552.778 819180.556 +9389 414552.778 882616.667 +9390 414558.333 960261.111 +9391 414563.889 907233.333 +9392 414569.444 728236.111 +9393 414569.444 1228936.111 +9394 414594.444 934047.222 +9395 414613.889 736713.889 +9396 414619.444 810738.889 +9397 414619.444 967794.444 +9398 414622.222 814808.333 +9399 414641.667 918380.556 +9400 414644.444 815088.889 +9401 414647.222 837061.111 +9402 414658.333 855875.000 +9403 414666.667 864830.556 +9404 414683.333 756033.333 +9405 414686.111 755625.000 +9406 414688.889 796911.111 +9407 414700.000 876363.889 +9408 414700.000 926511.111 +9409 414705.556 811452.778 +9410 414713.889 756080.556 +9411 414730.556 870611.111 +9412 414730.556 903575.000 +9413 414733.333 745388.889 +9414 414738.889 815372.222 +9415 414747.222 845525.000 +9416 414755.556 818394.444 +9417 414755.556 936786.111 +9418 414758.333 751825.000 +9419 414761.111 832958.333 +9420 414766.667 740241.667 +9421 414766.667 953377.778 +9422 414775.000 952216.667 +9423 414783.333 814638.889 +9424 414802.778 715230.556 +9425 414805.556 866916.667 +9426 414808.333 755950.000 +9427 414808.333 876377.778 +9428 414813.889 743605.556 +9429 414816.667 726816.667 +9430 414819.444 817983.333 +9431 414827.778 873327.778 +9432 414830.556 917058.333 +9433 414838.889 742180.556 +9434 414838.889 903530.556 +9435 414844.444 877033.333 +9436 414847.222 819222.222 +9437 414858.333 730511.111 +9438 414872.222 1205413.889 +9439 414875.000 821016.667 +9440 414880.556 914258.333 +9441 414883.333 875675.000 +9442 414886.111 757088.889 +9443 414891.667 814019.444 +9444 414900.000 713133.333 +9445 414913.889 876744.444 +9446 414919.444 941238.889 +9447 414927.778 757000.000 +9448 414941.667 875216.667 +9449 414947.222 755372.222 +9450 414947.222 903905.556 +9451 414952.778 794561.111 +9452 414958.333 878486.111 +9453 414961.111 853766.667 +9454 414969.444 713677.778 +9455 414969.444 725575.000 +9456 414977.778 815375.000 +9457 414988.889 729011.111 +9458 414994.444 816955.556 +9459 415002.778 858280.556 +9460 415005.556 874613.889 +9461 415005.556 946433.333 +9462 415008.333 837183.333 +9463 415008.333 904441.667 +9464 415008.333 934908.333 +9465 415027.778 724505.556 +9466 415033.333 740108.333 +9467 415033.333 943183.333 +9468 415036.111 844141.667 +9469 415038.889 877130.556 +9470 415047.222 739700.000 +9471 415052.778 820283.333 +9472 415061.111 876355.556 +9473 415061.111 881144.444 +9474 415063.889 875916.667 +9475 415066.667 905150.000 +9476 415075.000 717166.667 +9477 415088.889 907658.333 +9478 415094.444 905786.111 +9479 415102.778 1120147.222 +9480 415119.444 829377.778 +9481 415119.444 879655.556 +9482 415122.222 782352.778 +9483 415122.222 904150.000 +9484 415133.333 876741.667 +9485 415138.889 920761.111 +9486 415161.111 954500.000 +9487 415175.000 814036.111 +9488 415183.333 942261.111 +9489 415188.889 838038.889 +9490 415191.667 814580.556 +9491 415200.000 800486.111 +9492 415200.000 814888.889 +9493 415200.000 815563.889 +9494 415200.000 882016.667 +9495 415213.889 843072.222 +9496 415216.667 739269.444 +9497 415222.222 813380.556 +9498 415222.222 931016.667 +9499 415230.556 815186.111 +9500 415236.111 905775.000 +9501 415241.667 720763.889 +9502 415241.667 764011.111 +9503 415244.444 862733.333 +9504 415244.444 905155.556 +9505 415250.000 880816.667 +9506 415255.556 741533.333 +9507 415258.333 853666.667 +9508 415261.111 878891.667 +9509 415263.889 706736.111 +9510 415263.889 875386.111 +9511 415272.222 850655.556 +9512 415275.000 742372.222 +9513 415283.333 874236.111 +9514 415286.111 1094655.556 +9515 415300.000 886797.222 +9516 415305.556 739780.556 +9517 415308.333 755458.333 +9518 415316.667 940094.444 +9519 415319.444 939538.889 +9520 415322.222 872550.000 +9521 415330.556 815791.667 +9522 415341.667 757363.889 +9523 415341.667 864272.222 +9524 415347.222 740152.778 +9525 415350.000 740705.556 +9526 415350.000 808683.333 +9527 415355.556 738994.444 +9528 415355.556 878475.000 +9529 415369.444 885833.333 +9530 415380.556 728075.000 +9531 415386.111 759469.444 +9532 415391.667 855397.222 +9533 415397.222 740986.111 +9534 415413.889 869005.556 +9535 415425.000 816263.889 +9536 415425.000 876022.222 +9537 415427.778 876847.222 +9538 415438.889 738686.111 +9539 415444.444 732094.444 +9540 415444.444 961247.222 +9541 415472.222 891175.000 +9542 415475.000 865822.222 +9543 415486.111 985308.333 +9544 415486.111 987305.556 +9545 415491.667 841416.667 +9546 415511.111 1121094.444 +9547 415513.889 706152.778 +9548 415519.444 814786.111 +9549 415527.778 815102.778 +9550 415541.667 915347.222 +9551 415547.222 880986.111 +9552 415558.333 904091.667 +9553 415563.889 847688.889 +9554 415563.889 958875.000 +9555 415569.444 836272.222 +9556 415572.222 876655.556 +9557 415575.000 894608.333 +9558 415580.556 730519.444 +9559 415583.333 872744.444 +9560 415600.000 740036.111 +9561 415619.444 736030.556 +9562 415622.222 726511.111 +9563 415644.444 875125.000 +9564 415647.222 875388.889 +9565 415661.111 834247.222 +9566 415680.556 876080.556 +9567 415680.556 877202.778 +9568 415688.889 1118372.222 +9569 415700.000 912636.111 +9570 415716.667 876944.444 +9571 415727.778 726411.111 +9572 415733.333 877844.444 +9573 415736.111 755022.222 +9574 415736.111 840052.778 +9575 415736.111 876463.889 +9576 415750.000 872388.889 +9577 415755.556 723325.000 +9578 415758.333 725030.556 +9579 415758.333 871761.111 +9580 415766.667 744875.000 +9581 415766.667 752591.667 +9582 415769.444 734088.889 +9583 415772.222 937111.111 +9584 415783.333 705591.667 +9585 415783.333 928447.222 +9586 415802.778 754086.111 +9587 415816.667 903433.333 +9588 415833.333 875000.000 +9589 415838.889 738091.667 +9590 415838.889 935197.222 +9591 415847.222 907719.444 +9592 415852.778 878430.556 +9593 415858.333 925272.222 +9594 415861.111 844350.000 +9595 415869.444 712838.889 +9596 415875.000 1092022.222 +9597 415877.778 834933.333 +9598 415886.111 838911.111 +9599 415888.889 910166.667 +9600 415894.444 880577.778 +9601 415894.444 889219.444 +9602 415894.444 941958.333 +9603 415908.333 948752.778 +9604 415916.667 950597.222 +9605 415930.556 815269.444 +9606 415933.333 730858.333 +9607 415933.333 873463.889 +9608 415963.889 739113.889 +9609 415977.778 937080.556 +9610 415983.333 814186.111 +9611 415994.444 932350.000 +9612 415997.222 909105.556 +9613 416005.556 936088.889 +9614 416008.333 876069.444 +9615 416027.778 877438.889 +9616 416030.556 937238.889 +9617 416033.333 803055.556 +9618 416033.333 989258.333 +9619 416055.556 739719.444 +9620 416055.556 741844.444 +9621 416061.111 738733.333 +9622 416063.889 903352.778 +9623 416066.667 719813.889 +9624 416066.667 805725.000 +9625 416077.778 1228391.667 +9626 416097.222 835644.444 +9627 416100.000 876466.667 +9628 416105.556 867225.000 +9629 416105.556 965477.778 +9630 416111.111 876347.222 +9631 416116.667 938850.000 +9632 416125.000 887994.444 +9633 416136.111 901727.778 +9634 416141.667 760469.444 +9635 416141.667 811491.667 +9636 416144.444 940172.222 +9637 416147.222 1121258.333 +9638 416155.556 870741.667 +9639 416155.556 875294.444 +9640 416186.111 813841.667 +9641 416216.667 837116.667 +9642 416227.778 738711.111 +9643 416238.889 813072.222 +9644 416252.778 877175.000 +9645 416258.333 712138.889 +9646 416258.333 871902.778 +9647 416261.111 757808.333 +9648 416266.667 937119.444 +9649 416269.444 796738.889 +9650 416269.444 882038.889 +9651 416283.333 703875.000 +9652 416288.889 813616.667 +9653 416302.778 878538.889 +9654 416302.778 897861.111 +9655 416311.111 780916.667 +9656 416313.889 724602.778 +9657 416316.667 876608.333 +9658 416330.556 754708.333 +9659 416330.556 814688.889 +9660 416336.111 886811.111 +9661 416341.667 1118513.889 +9662 416347.222 849994.444 +9663 416352.778 727691.667 +9664 416361.111 709347.222 +9665 416377.778 859216.667 +9666 416386.111 1119330.556 +9667 416386.111 1120786.111 +9668 416388.889 875566.667 +9669 416388.889 876072.222 +9670 416391.667 874547.222 +9671 416397.222 732088.889 +9672 416397.222 814066.667 +9673 416405.556 993708.333 +9674 416411.111 884472.222 +9675 416413.889 801516.667 +9676 416416.667 854166.667 +9677 416430.556 957886.111 +9678 416436.111 834869.444 +9679 416438.889 877036.111 +9680 416441.667 934644.444 +9681 416458.333 886216.667 +9682 416475.000 880894.444 +9683 416500.000 702416.667 +9684 416513.889 754669.444 +9685 416525.000 797272.222 +9686 416527.778 702833.333 +9687 416530.556 953252.778 +9688 416538.889 814505.556 +9689 416555.556 738752.778 +9690 416555.556 746897.222 +9691 416561.111 804241.667 +9692 416563.889 768536.111 +9693 416563.889 900791.667 +9694 416572.222 876800.000 +9695 416580.556 905844.444 +9696 416583.333 701291.667 +9697 416583.333 708166.667 +9698 416602.778 808608.333 +9699 416611.111 727800.000 +9700 416611.111 877525.000 +9701 416611.111 915300.000 +9702 416611.111 920088.889 +9703 416619.444 861586.111 +9704 416627.778 788113.889 +9705 416627.778 876605.556 +9706 416627.778 885369.444 +9707 416638.889 835552.778 +9708 416641.667 836433.333 +9709 416644.444 701733.333 +9710 416650.000 860758.333 +9711 416652.778 1030986.111 +9712 416658.333 814433.333 +9713 416658.333 1111813.889 +9714 416661.111 813397.222 +9715 416666.667 701852.778 +9716 416666.667 966655.556 +9717 416672.222 878302.778 +9718 416680.556 762622.222 +9719 416680.556 877963.889 +9720 416686.111 933575.000 +9721 416688.889 877386.111 +9722 416713.889 899361.111 +9723 416713.889 913463.889 +9724 416716.667 729497.222 +9725 416730.556 936975.000 +9726 416730.556 1079786.111 +9727 416733.333 843269.444 +9728 416736.111 880016.667 +9729 416747.222 903402.778 +9730 416750.000 712711.111 +9731 416750.000 733522.222 +9732 416763.889 719155.556 +9733 416763.889 915802.778 +9734 416772.222 945030.556 +9735 416777.778 932450.000 +9736 416780.556 730113.889 +9737 416794.444 721708.333 +9738 416794.444 770641.667 +9739 416797.222 874944.444 +9740 416800.000 845530.556 +9741 416802.778 903188.889 +9742 416811.111 699916.667 +9743 416816.667 1118222.222 +9744 416819.444 699602.778 +9745 416819.444 859766.667 +9746 416819.444 869602.778 +9747 416827.778 883513.889 +9748 416833.333 862500.000 +9749 416841.667 877002.778 +9750 416844.444 939608.333 +9751 416861.111 700763.889 +9752 416883.333 937908.333 +9753 416888.889 889811.111 +9754 416888.889 983630.556 +9755 416897.222 877972.222 +9756 416908.333 980033.333 +9757 416916.667 943627.778 +9758 416916.667 974841.667 +9759 416919.444 713791.667 +9760 416925.000 869775.000 +9761 416947.222 740516.667 +9762 416966.667 878169.444 +9763 416972.222 862450.000 +9764 416975.000 905825.000 +9765 416977.778 727241.667 +9766 416983.333 868591.667 +9767 416986.111 880683.333 +9768 416994.444 840702.778 +9769 416997.222 930477.778 +9770 417000.000 703000.000 +9771 417000.000 707633.333 +9772 417002.778 739213.889 +9773 417002.778 865094.444 +9774 417005.556 934619.444 +9775 417013.889 711555.556 +9776 417013.889 877791.667 +9777 417019.444 702500.000 +9778 417038.889 790358.333 +9779 417050.000 813605.556 +9780 417052.778 972377.778 +9781 417061.111 715236.111 +9782 417063.889 1118163.889 +9783 417075.000 868950.000 +9784 417091.667 746288.889 +9785 417102.778 865341.667 +9786 417105.556 722086.111 +9787 417105.556 745747.222 +9788 417116.667 839097.222 +9789 417119.444 1121647.222 +9790 417122.222 726086.111 +9791 417127.778 718813.889 +9792 417141.667 726530.556 +9793 417141.667 893286.111 +9794 417161.111 862525.000 +9795 417169.444 743961.111 +9796 417175.000 899258.333 +9797 417180.556 929072.222 +9798 417180.556 949322.222 +9799 417183.333 738530.556 +9800 417188.889 801477.778 +9801 417188.889 837130.556 +9802 417194.444 842180.556 +9803 417205.556 877016.667 +9804 417208.333 739605.556 +9805 417208.333 877541.667 +9806 417211.111 968825.000 +9807 417213.889 858175.000 +9808 417216.667 1118205.556 +9809 417233.333 917902.778 +9810 417244.444 732366.667 +9811 417244.444 812458.333 +9812 417250.000 970025.000 +9813 417255.556 786386.111 +9814 417255.556 878250.000 +9815 417266.667 971219.444 +9816 417277.778 844188.889 +9817 417283.333 1225266.667 +9818 417297.222 936055.556 +9819 417305.556 883458.333 +9820 417308.333 849327.778 +9821 417316.667 922977.778 +9822 417330.556 776422.222 +9823 417336.111 924452.778 +9824 417344.444 877313.889 +9825 417355.556 1118336.111 +9826 417355.556 1226333.333 +9827 417383.333 957025.000 +9828 417405.556 713091.667 +9829 417408.333 878602.778 +9830 417411.111 705994.444 +9831 417411.111 735769.444 +9832 417411.111 1121608.333 +9833 417416.667 706583.333 +9834 417430.556 927222.222 +9835 417438.889 743719.444 +9836 417444.444 878377.778 +9837 417452.778 706186.111 +9838 417455.556 868508.333 +9839 417472.222 731891.667 +9840 417475.000 740872.222 +9841 417486.111 773008.333 +9842 417488.889 879183.333 +9843 417491.667 915977.778 +9844 417500.000 878041.667 +9845 417500.000 977750.000 +9846 417550.000 1033236.111 +9847 417561.111 1242005.556 +9848 417577.778 803680.556 +9849 417588.889 704944.444 +9850 417600.000 700833.333 +9851 417602.778 811411.111 +9852 417605.556 883200.000 +9853 417611.111 938241.667 +9854 417619.444 727425.000 +9855 417619.444 1089661.111 +9856 417625.000 707222.222 +9857 417627.778 878000.000 +9858 417636.111 726855.556 +9859 417652.778 721986.111 +9860 417658.333 836280.556 +9861 417675.000 764430.556 +9862 417680.556 888769.444 +9863 417688.889 878577.778 +9864 417688.889 886408.333 +9865 417694.444 711291.667 +9866 417694.444 1118038.889 +9867 417697.222 911277.778 +9868 417700.000 705288.889 +9869 417702.778 879022.222 +9870 417711.111 730602.778 +9871 417711.111 810500.000 +9872 417713.889 937127.778 +9873 417716.667 887736.111 +9874 417747.222 742986.111 +9875 417747.222 780208.333 +9876 417750.000 1071125.000 +9877 417755.556 954172.222 +9878 417758.333 725219.444 +9879 417783.333 962208.333 +9880 417794.444 1105377.778 +9881 417797.222 714377.778 +9882 417797.222 896888.889 +9883 417800.000 790933.333 +9884 417808.333 749341.667 +9885 417816.667 991327.778 +9886 417822.222 726125.000 +9887 417827.778 878780.556 +9888 417850.000 736944.444 +9889 417858.333 881472.222 +9890 417880.556 902561.111 +9891 417886.111 896961.111 +9892 417894.444 902191.667 +9893 417897.222 699902.778 +9894 417897.222 707608.333 +9895 417911.111 1072380.556 +9896 417925.000 1105369.444 +9897 417938.889 867438.889 +9898 417955.556 860808.333 +9899 417958.333 879755.556 +9900 417966.667 718977.778 +9901 417975.000 879547.222 +9902 417980.556 856433.333 +9903 417980.556 864991.667 +9904 417980.556 920705.556 +9905 417986.111 866105.556 +9906 417988.889 1118183.333 +9907 417991.667 854191.667 +9908 418005.556 731216.667 +9909 418005.556 803691.667 +9910 418008.333 879369.444 +9911 418011.111 747469.444 +9912 418011.111 880747.222 +9913 418019.444 810491.667 +9914 418025.000 718863.889 +9915 418036.111 800566.667 +9916 418061.111 883272.222 +9917 418069.444 834425.000 +9918 418072.222 770777.778 +9919 418072.222 914938.889 +9920 418083.333 722500.000 +9921 418086.111 877933.333 +9922 418088.889 880111.111 +9923 418094.444 1035033.333 +9924 418097.222 728311.111 +9925 418097.222 879005.556 +9926 418097.222 899650.000 +9927 418108.333 782800.000 +9928 418111.111 784450.000 +9929 418127.778 729205.556 +9930 418133.333 878180.556 +9931 418136.111 713705.556 +9932 418177.778 881733.333 +9933 418213.889 877827.778 +9934 418233.333 905380.556 +9935 418238.889 714133.333 +9936 418238.889 878516.667 +9937 418241.667 906477.778 +9938 418244.444 728941.667 +9939 418258.333 1036600.000 +9940 418261.111 931513.889 +9941 418272.222 863611.111 +9942 418280.556 866925.000 +9943 418283.333 974547.222 +9944 418288.889 740688.889 +9945 418297.222 862541.667 +9946 418316.667 908380.556 +9947 418325.000 838625.000 +9948 418327.778 879288.889 +9949 418347.222 878616.667 +9950 418350.000 878227.778 +9951 418358.333 964666.667 +9952 418383.333 1118319.444 +9953 418386.111 941069.444 +9954 418388.889 894794.444 +9955 418394.444 847480.556 +9956 418411.111 856686.111 +9957 418416.667 893002.778 +9958 418416.667 967083.333 +9959 418427.778 878230.556 +9960 418438.889 791452.778 +9961 418444.444 901886.111 +9962 418455.556 877538.889 +9963 418455.556 916927.778 +9964 418458.333 709500.000 +9965 418472.222 853186.111 +9966 418475.000 1036611.111 +9967 418491.667 735572.222 +9968 418500.000 876500.000 +9969 418500.000 879644.444 +9970 418500.000 883125.000 +9971 418505.556 877936.111 +9972 418505.556 878819.444 +9973 418519.444 945580.556 +9974 418525.000 726441.667 +9975 418544.444 956002.778 +9976 418550.000 843538.889 +9977 418569.444 939216.667 +9978 418575.000 909280.556 +9979 418594.444 809541.667 +9980 418616.667 881608.333 +9981 418627.778 1119900.000 +9982 418638.889 711250.000 +9983 418638.889 878533.333 +9984 418650.000 699916.667 +9985 418650.000 807900.000 +9986 418661.111 881069.444 +9987 418661.111 892211.111 +9988 418666.667 1036666.667 +9989 418672.222 901594.444 +9990 418700.000 1065613.889 +9991 418708.333 786616.667 +9992 418708.333 946772.222 +9993 418711.111 715525.000 +9994 418722.222 851947.222 +9995 418725.000 757275.000 +9996 418727.778 807730.556 +9997 418730.556 728586.111 +9998 418741.667 791525.000 +9999 418741.667 801319.444 +10000 418758.333 728016.667 +10001 418766.667 938230.556 +10002 418775.000 880669.444 +10003 418777.778 879027.778 +10004 418777.778 936783.333 +10005 418786.111 713830.556 +10006 418788.889 927891.667 +10007 418791.667 878430.556 +10008 418800.000 880077.778 +10009 418813.889 878830.556 +10010 418822.222 729775.000 +10011 418847.222 882038.889 +10012 418850.000 877844.444 +10013 418875.000 883052.778 +10014 418888.889 837788.889 +10015 418888.889 879033.333 +10016 418888.889 910563.889 +10017 418897.222 879888.889 +10018 418897.222 952319.444 +10019 418905.556 713927.778 +10020 418908.333 806763.889 +10021 418919.444 933994.444 +10022 418922.222 884722.222 +10023 418930.556 911505.556 +10024 418955.556 1062041.667 +10025 418969.444 922780.556 +10026 418975.000 840372.222 +10027 418977.778 878138.889 +10028 418983.333 935288.889 +10029 418994.444 798455.556 +10030 418994.444 879402.778 +10031 419000.000 710902.778 +10032 419002.778 748286.111 +10033 419005.556 878566.667 +10034 419011.111 837150.000 +10035 419027.778 919213.889 +10036 419038.889 777622.222 +10037 419044.444 912544.444 +10038 419050.000 803438.889 +10039 419052.778 739766.667 +10040 419055.556 878836.111 +10041 419058.333 806905.556 +10042 419066.667 713911.111 +10043 419075.000 885991.667 +10044 419086.111 727605.556 +10045 419086.111 771333.333 +10046 419091.667 950647.222 +10047 419094.444 920841.667 +10048 419102.778 880716.667 +10049 419116.667 860100.000 +10050 419125.000 881347.222 +10051 419150.000 719094.444 +10052 419163.889 833977.778 +10053 419172.222 878955.556 +10054 419172.222 1040386.111 +10055 419183.333 834305.556 +10056 419191.667 775391.667 +10057 419194.444 917808.333 +10058 419200.000 846305.556 +10059 419200.000 886886.111 +10060 419202.778 796405.556 +10061 419202.778 1120491.667 +10062 419211.111 730605.556 +10063 419211.111 878091.667 +10064 419211.111 913852.778 +10065 419219.444 914166.667 +10066 419227.778 1118127.778 +10067 419233.333 855283.333 +10068 419236.111 710527.778 +10069 419238.889 890686.111 +10070 419244.444 740616.667 +10071 419258.333 878358.333 +10072 419266.667 739130.556 +10073 419269.444 739977.778 +10074 419288.889 954936.111 +10075 419291.667 726277.778 +10076 419294.444 887502.778 +10077 419297.222 888608.333 +10078 419300.000 968113.889 +10079 419308.333 889644.444 +10080 419311.111 833269.444 +10081 419316.667 879888.889 +10082 419352.778 878655.556 +10083 419375.000 964769.444 +10084 419386.111 761361.111 +10085 419388.889 719600.000 +10086 419402.778 850005.556 +10087 419402.778 1038080.556 +10088 419413.889 931030.556 +10089 419438.889 856325.000 +10090 419441.667 848838.889 +10091 419444.444 712861.111 +10092 419463.889 863388.889 +10093 419475.000 805544.444 +10094 419502.778 972236.111 +10095 419508.333 882422.222 +10096 419511.111 890644.444 +10097 419536.111 735111.111 +10098 419538.889 727891.667 +10099 419538.889 752808.333 +10100 419538.889 860647.222 +10101 419541.667 723027.778 +10102 419550.000 879400.000 +10103 419555.556 717027.778 +10104 419558.333 786441.667 +10105 419558.333 878708.333 +10106 419561.111 1214763.889 +10107 419572.222 765183.333 +10108 419572.222 836597.222 +10109 419575.000 864855.556 +10110 419575.000 880808.333 +10111 419577.778 783855.556 +10112 419583.333 706677.778 +10113 419583.333 853250.000 +10114 419588.889 900991.667 +10115 419611.111 757436.111 +10116 419633.333 878272.222 +10117 419633.333 879788.889 +10118 419633.333 897744.444 +10119 419633.333 1039258.333 +10120 419636.111 781911.111 +10121 419638.889 908175.000 +10122 419655.556 716750.000 +10123 419666.667 711875.000 +10124 419666.667 925766.667 +10125 419672.222 878075.000 +10126 419675.000 1219169.444 +10127 419708.333 845258.333 +10128 419716.667 757436.111 +10129 419750.000 880072.222 +10130 419758.333 1118555.556 +10131 419761.111 725922.222 +10132 419766.667 714591.667 +10133 419788.889 765158.333 +10134 419797.222 736563.889 +10135 419816.667 726511.111 +10136 419825.000 793388.889 +10137 419833.333 980833.333 +10138 419836.111 909561.111 +10139 419841.667 846619.444 +10140 419841.667 861086.111 +10141 419847.222 880797.222 +10142 419850.000 862997.222 +10143 419852.778 724466.667 +10144 419855.556 718991.667 +10145 419855.556 739886.111 +10146 419861.111 773111.111 +10147 419861.111 895791.667 +10148 419863.889 843472.222 +10149 419866.667 838311.111 +10150 419872.222 725452.778 +10151 419872.222 969138.889 +10152 419888.889 886866.667 +10153 419902.778 709755.556 +10154 419941.667 882922.222 +10155 419944.444 707250.000 +10156 419950.000 881855.556 +10157 419955.556 919675.000 +10158 419955.556 925766.667 +10159 419969.444 918619.444 +10160 419972.222 741052.778 +10161 419975.000 765375.000 +10162 419980.556 911413.889 +10163 419983.333 921972.222 +10164 419994.444 881450.000 +10165 419994.444 975980.556 +10166 420002.778 803183.333 +10167 420022.222 906069.444 +10168 420027.778 715152.778 +10169 420036.111 798111.111 +10170 420038.889 839450.000 +10171 420038.889 879702.778 +10172 420044.444 877300.000 +10173 420061.111 841900.000 +10174 420063.889 854500.000 +10175 420069.444 927752.778 +10176 420075.000 962494.444 +10177 420083.333 916438.889 +10178 420086.111 920908.333 +10179 420111.111 878405.556 +10180 420127.778 965725.000 +10181 420127.778 1214075.000 +10182 420133.333 898905.556 +10183 420144.444 865194.444 +10184 420147.222 893322.222 +10185 420152.778 943772.222 +10186 420161.111 767272.222 +10187 420166.667 740766.667 +10188 420166.667 931633.333 +10189 420177.778 933150.000 +10190 420177.778 953550.000 +10191 420180.556 740152.778 +10192 420188.889 878027.778 +10193 420225.000 945450.000 +10194 420227.778 934522.222 +10195 420230.556 706833.333 +10196 420236.111 719502.778 +10197 420252.778 1215994.444 +10198 420255.556 881783.333 +10199 420258.333 858155.556 +10200 420266.667 960969.444 +10201 420272.222 733297.222 +10202 420316.667 942405.556 +10203 420333.333 712194.444 +10204 420333.333 877333.333 +10205 420333.333 878833.333 +10206 420333.333 880833.333 +10207 420341.667 915975.000 +10208 420347.222 936197.222 +10209 420358.333 916819.444 +10210 420372.222 882811.111 +10211 420386.111 783411.111 +10212 420391.667 940275.000 +10213 420405.556 877825.000 +10214 420411.111 876900.000 +10215 420416.667 706727.778 +10216 420427.778 880797.222 +10217 420427.778 1010422.222 +10218 420430.556 733455.556 +10219 420436.111 739477.778 +10220 420438.889 847575.000 +10221 420455.556 802700.000 +10222 420472.222 978336.111 +10223 420494.444 929077.778 +10224 420500.000 718805.556 +10225 420500.000 725833.333 +10226 420502.778 894311.111 +10227 420502.778 904138.889 +10228 420527.778 1242827.778 +10229 420533.333 1242663.889 +10230 420544.444 791583.333 +10231 420544.444 1049522.222 +10232 420569.444 947286.111 +10233 420583.333 701791.667 +10234 420583.333 739097.222 +10235 420591.667 833908.333 +10236 420591.667 910072.222 +10237 420594.444 914425.000 +10238 420597.222 938800.000 +10239 420600.000 754280.556 +10240 420638.889 832611.111 +10241 420650.000 864950.000 +10242 420650.000 1041811.111 +10243 420658.333 948666.667 +10244 420661.111 917952.778 +10245 420663.889 879372.222 +10246 420666.667 851361.111 +10247 420683.333 955913.889 +10248 420688.889 906655.556 +10249 420694.444 761550.000 +10250 420700.000 843305.556 +10251 420708.333 832466.667 +10252 420711.111 901738.889 +10253 420711.111 916666.667 +10254 420719.444 839716.667 +10255 420722.222 717138.889 +10256 420722.222 877227.778 +10257 420750.000 708805.556 +10258 420750.000 720338.889 +10259 420750.000 794833.333 +10260 420758.333 756408.333 +10261 420775.000 739533.333 +10262 420775.000 784300.000 +10263 420780.556 768455.556 +10264 420825.000 1109544.444 +10265 420833.333 710188.889 +10266 420833.333 713972.222 +10267 420841.667 880130.556 +10268 420852.778 836825.000 +10269 420858.333 877175.000 +10270 420863.889 779225.000 +10271 420866.667 714750.000 +10272 420869.444 864558.333 +10273 420886.111 852347.222 +10274 420897.222 768080.556 +10275 420900.000 784944.444 +10276 420913.889 881216.667 +10277 420916.667 707061.111 +10278 420925.000 888511.111 +10279 420930.556 707930.556 +10280 420933.333 849858.333 +10281 420936.111 926755.556 +10282 420941.667 883025.000 +10283 420944.444 901566.667 +10284 420944.444 918691.667 +10285 420950.000 831897.222 +10286 420950.000 899780.556 +10287 420952.778 879375.000 +10288 420963.889 1118758.333 +10289 420969.444 792355.556 +10290 420972.222 886927.778 +10291 420977.778 885302.778 +10292 420983.333 760497.222 +10293 420986.111 759183.333 +10294 420997.222 877808.333 +10295 421013.889 725902.778 +10296 421022.222 898333.333 +10297 421027.778 772338.889 +10298 421033.333 762625.000 +10299 421041.667 723194.444 +10300 421041.667 793333.333 +10301 421058.333 842483.333 +10302 421069.444 726208.333 +10303 421069.444 936494.444 +10304 421072.222 891791.667 +10305 421080.556 859744.444 +10306 421080.556 877358.333 +10307 421083.333 720791.667 +10308 421083.333 912850.000 +10309 421094.444 792833.333 +10310 421102.778 880341.667 +10311 421111.111 716666.667 +10312 421125.000 929883.333 +10313 421127.778 760213.889 +10314 421141.667 856377.778 +10315 421141.667 967069.444 +10316 421155.556 759591.667 +10317 421161.111 721138.889 +10318 421166.667 864541.667 +10319 421180.556 880961.111 +10320 421186.111 791986.111 +10321 421200.000 855327.778 +10322 421211.111 882577.778 +10323 421216.667 770375.000 +10324 421236.111 711791.667 +10325 421236.111 724319.444 +10326 421250.000 727500.000 +10327 421255.556 894036.111 +10328 421261.111 895791.667 +10329 421269.444 892555.556 +10330 421275.000 878288.889 +10331 421275.000 961491.667 +10332 421286.111 980294.444 +10333 421291.667 800852.778 +10334 421297.222 768211.111 +10335 421305.556 715416.667 +10336 421311.111 864072.222 +10337 421333.333 758966.667 +10338 421350.000 877580.556 +10339 421372.222 769372.222 +10340 421388.889 832416.667 +10341 421391.667 879288.889 +10342 421394.444 831783.333 +10343 421397.222 715166.667 +10344 421402.778 800152.778 +10345 421416.667 712500.000 +10346 421427.778 770550.000 +10347 421458.333 707402.778 +10348 421458.333 848088.889 +10349 421461.111 771119.444 +10350 421483.333 964880.556 +10351 421486.111 726083.333 +10352 421486.111 746486.111 +10353 421502.778 840377.778 +10354 421513.889 879597.222 +10355 421519.444 944741.667 +10356 421538.889 881361.111 +10357 421547.222 897397.222 +10358 421550.000 710091.667 +10359 421563.889 777958.333 +10360 421577.778 787152.778 +10361 421583.333 723291.667 +10362 421591.667 795955.556 +10363 421605.556 842461.111 +10364 421608.333 880813.889 +10365 421611.111 932969.444 +10366 421619.444 770944.444 +10367 421619.444 789755.556 +10368 421625.000 710416.667 +10369 421625.000 834030.556 +10370 421630.556 1236469.444 +10371 421652.778 954366.667 +10372 421655.556 882941.667 +10373 421658.333 957927.778 +10374 421663.889 935016.667 +10375 421666.667 837816.667 +10376 421669.444 768208.333 +10377 421672.222 858469.444 +10378 421675.000 878969.444 +10379 421680.556 884280.556 +10380 421686.111 920233.333 +10381 421694.444 751297.222 +10382 421705.556 880477.778 +10383 421711.111 878444.444 +10384 421716.667 923061.111 +10385 421727.778 789480.556 +10386 421777.778 846430.556 +10387 421783.333 879977.778 +10388 421811.111 723611.111 +10389 421816.667 878002.778 +10390 421816.667 883302.778 +10391 421816.667 949766.667 +10392 421861.111 863083.333 +10393 421866.667 862605.556 +10394 421872.222 935955.556 +10395 421875.000 713069.444 +10396 421877.778 927150.000 +10397 421888.889 1203447.222 +10398 421908.333 917850.000 +10399 421916.667 1122500.000 +10400 421933.333 843911.111 +10401 421933.333 878663.889 +10402 421936.111 924652.778 +10403 421944.444 712000.000 +10404 421944.444 719063.889 +10405 421947.222 1227083.333 +10406 421955.556 741341.667 +10407 421958.333 707263.889 +10408 421958.333 733625.000 +10409 421969.444 880933.333 +10410 421986.111 765527.778 +10411 421991.667 975263.889 +10412 421997.222 878091.667 +10413 422008.333 882144.444 +10414 422011.111 855800.000 +10415 422038.889 915238.889 +10416 422041.667 726166.667 +10417 422047.222 834852.778 +10418 422050.000 845527.778 +10419 422063.889 781377.778 +10420 422066.667 861666.667 +10421 422069.444 1217361.111 +10422 422075.000 880555.556 +10423 422077.778 881405.556 +10424 422094.444 857844.444 +10425 422097.222 764936.111 +10426 422119.444 882380.556 +10427 422122.222 862719.444 +10428 422125.000 721916.667 +10429 422125.000 723458.333 +10430 422125.000 881525.000 +10431 422136.111 742191.667 +10432 422138.889 721027.778 +10433 422138.889 831938.889 +10434 422155.556 798344.444 +10435 422169.444 880494.444 +10436 422172.222 738650.000 +10437 422175.000 782755.556 +10438 422177.778 858911.111 +10439 422188.889 707861.111 +10440 422191.667 860513.889 +10441 422194.444 879794.444 +10442 422208.333 709402.778 +10443 422208.333 863694.444 +10444 422222.222 710000.000 +10445 422222.222 833966.667 +10446 422230.556 780347.222 +10447 422236.111 761836.111 +10448 422241.667 918741.667 +10449 422247.222 928744.444 +10450 422250.000 1217805.556 +10451 422272.222 1114002.778 +10452 422277.778 720472.222 +10453 422280.556 755269.444 +10454 422286.111 715230.556 +10455 422305.556 970175.000 +10456 422327.778 763427.778 +10457 422327.778 962277.778 +10458 422330.556 843272.222 +10459 422338.889 738827.778 +10460 422347.222 889488.889 +10461 422352.778 721416.667 +10462 422358.333 964722.222 +10463 422383.333 853350.000 +10464 422383.333 911869.444 +10465 422408.333 832697.222 +10466 422411.111 836130.556 +10467 422411.111 883161.111 +10468 422416.667 708902.778 +10469 422416.667 711666.667 +10470 422425.000 882019.444 +10471 422430.556 847530.556 +10472 422433.333 1138811.111 +10473 422438.889 719927.778 +10474 422444.444 831458.333 +10475 422455.556 930644.444 +10476 422458.333 712833.333 +10477 422458.333 844013.889 +10478 422458.333 1227875.000 +10479 422463.889 882427.778 +10480 422483.333 736536.111 +10481 422486.111 886083.333 +10482 422500.000 710666.667 +10483 422505.556 831786.111 +10484 422508.333 842130.556 +10485 422525.000 788058.333 +10486 422527.778 710027.778 +10487 422527.778 737913.889 +10488 422538.889 795047.222 +10489 422541.667 733666.667 +10490 422541.667 777908.333 +10491 422563.889 725166.667 +10492 422563.889 902794.444 +10493 422575.000 832111.111 +10494 422577.778 983461.111 +10495 422583.333 845997.222 +10496 422586.111 904227.778 +10497 422588.889 881391.667 +10498 422597.222 722402.778 +10499 422602.778 738100.000 +10500 422613.889 940683.333 +10501 422625.000 718027.778 +10502 422630.556 880038.889 +10503 422638.889 792588.889 +10504 422638.889 888441.667 +10505 422652.778 898258.333 +10506 422661.111 892411.111 +10507 422666.667 720833.333 +10508 422669.444 797108.333 +10509 422675.000 947336.111 +10510 422688.889 715244.444 +10511 422691.667 968647.222 +10512 422694.444 716166.667 +10513 422697.222 1047411.111 +10514 422702.778 776061.111 +10515 422702.778 945483.333 +10516 422711.111 890938.889 +10517 422711.111 950927.778 +10518 422713.889 939269.444 +10519 422722.222 849633.333 +10520 422733.333 831344.444 +10521 422750.000 786730.556 +10522 422755.556 1228169.444 +10523 422761.111 881919.444 +10524 422769.444 724013.889 +10525 422780.556 749163.889 +10526 422786.111 967263.889 +10527 422788.889 878341.667 +10528 422791.667 714166.667 +10529 422805.556 942905.556 +10530 422808.333 915302.778 +10531 422813.889 833863.889 +10532 422825.000 831752.778 +10533 422830.556 879530.556 +10534 422833.333 712333.333 +10535 422833.333 837458.333 +10536 422861.111 737391.667 +10537 422866.667 917805.556 +10538 422875.000 733208.333 +10539 422886.111 772186.111 +10540 422886.111 854180.556 +10541 422900.000 882247.222 +10542 422916.667 855872.222 +10543 422933.333 754797.222 +10544 422941.667 833100.000 +10545 422944.444 791000.000 +10546 422963.889 712930.556 +10547 422966.667 896211.111 +10548 422986.111 910147.222 +10549 422988.889 739988.889 +10550 423019.444 709083.333 +10551 423030.556 855502.778 +10552 423041.667 732486.111 +10553 423055.556 933000.000 +10554 423066.667 780161.111 +10555 423083.333 852191.667 +10556 423122.222 952502.778 +10557 423125.000 722083.333 +10558 423125.000 861130.556 +10559 423136.111 1229658.333 +10560 423138.889 893591.667 +10561 423147.222 753919.444 +10562 423147.222 884486.111 +10563 423150.000 921919.444 +10564 423152.778 934341.667 +10565 423155.556 955983.333 +10566 423177.778 902213.889 +10567 423180.556 840205.556 +10568 423188.889 851425.000 +10569 423188.889 882580.556 +10570 423194.444 716416.667 +10571 423200.000 890580.556 +10572 423208.333 713647.222 +10573 423211.111 851797.222 +10574 423216.667 964891.667 +10575 423216.667 1030725.000 +10576 423222.222 777386.111 +10577 423222.222 795783.333 +10578 423222.222 831763.889 +10579 423222.222 1112969.444 +10580 423236.111 925991.667 +10581 423241.667 834002.778 +10582 423250.000 726416.667 +10583 423252.778 753127.778 +10584 423255.556 833311.111 +10585 423255.556 878411.111 +10586 423266.667 1228744.444 +10587 423277.778 776613.889 +10588 423280.556 855697.222 +10589 423286.111 881988.889 +10590 423288.889 759680.556 +10591 423291.667 757702.778 +10592 423291.667 788683.333 +10593 423313.889 830458.333 +10594 423363.889 853522.222 +10595 423366.667 767888.889 +10596 423369.444 712097.222 +10597 423369.444 773180.556 +10598 423369.444 784583.333 +10599 423369.444 832733.333 +10600 423383.333 838886.111 +10601 423402.778 725055.556 +10602 423427.778 879980.556 +10603 423427.778 890519.444 +10604 423438.889 912483.333 +10605 423441.667 793097.222 +10606 423444.444 880416.667 +10607 423447.222 882738.889 +10608 423450.000 954713.889 +10609 423458.333 715527.778 +10610 423461.111 776616.667 +10611 423472.222 768455.556 +10612 423483.333 878841.667 +10613 423497.222 900066.667 +10614 423497.222 977916.667 +10615 423508.333 738033.333 +10616 423533.333 880933.333 +10617 423563.889 732852.778 +10618 423569.444 880766.667 +10619 423583.333 710602.778 +10620 423600.000 940519.444 +10621 423600.000 975963.889 +10622 423608.333 858794.444 +10623 423608.333 930994.444 +10624 423616.667 927683.333 +10625 423636.111 878447.222 +10626 423641.667 735952.778 +10627 423641.667 790558.333 +10628 423683.333 833527.778 +10629 423683.333 882925.000 +10630 423694.444 719486.111 +10631 423702.778 879019.444 +10632 423708.333 711833.333 +10633 423708.333 725986.111 +10634 423716.667 880900.000 +10635 423736.111 725208.333 +10636 423750.000 709833.333 +10637 423758.333 829375.000 +10638 423758.333 896330.556 +10639 423763.889 712361.111 +10640 423783.333 846986.111 +10641 423786.111 973566.667 +10642 423794.444 898222.222 +10643 423800.000 881041.667 +10644 423805.556 768736.111 +10645 423811.111 881397.222 +10646 423827.778 859569.444 +10647 423861.111 829119.444 +10648 423875.000 711000.000 +10649 423883.333 958663.889 +10650 423886.111 794413.889 +10651 423886.111 895261.111 +10652 423916.667 710333.333 +10653 423916.667 715666.667 +10654 423927.778 830497.222 +10655 423933.333 883402.778 +10656 423944.444 776969.444 +10657 423944.444 917608.333 +10658 423952.778 736983.333 +10659 423952.778 946336.111 +10660 423958.333 711791.667 +10661 423966.667 881836.111 +10662 423972.222 751738.889 +10663 423986.111 880525.000 +10664 423997.222 887402.778 +10665 424030.556 862736.111 +10666 424038.889 963583.333 +10667 424066.667 924552.778 +10668 424072.222 746147.222 +10669 424075.000 1244205.556 +10670 424077.778 772238.889 +10671 424080.556 881316.667 +10672 424083.333 710125.000 +10673 424083.333 710541.667 +10674 424086.111 882063.889 +10675 424091.667 828919.444 +10676 424094.444 774216.667 +10677 424102.778 725313.889 +10678 424105.556 880261.111 +10679 424133.333 736736.111 +10680 424133.333 890091.667 +10681 424152.778 711569.444 +10682 424155.556 964180.556 +10683 424161.111 922147.222 +10684 424166.667 716833.333 +10685 424166.667 904288.889 +10686 424169.444 880738.889 +10687 424183.333 711066.667 +10688 424222.222 886136.111 +10689 424222.222 949894.444 +10690 424227.778 721055.556 +10691 424233.333 781575.000 +10692 424247.222 941500.000 +10693 424250.000 710666.667 +10694 424263.889 709194.444 +10695 424286.111 879238.889 +10696 424286.111 1121236.111 +10697 424291.667 764952.778 +10698 424294.444 970894.444 +10699 424297.222 913308.333 +10700 424311.111 834833.333 +10701 424330.556 829241.667 +10702 424333.333 714500.000 +10703 424361.111 1231708.333 +10704 424363.889 893319.444 +10705 424366.667 828769.444 +10706 424375.000 1228577.778 +10707 424391.667 1233272.222 +10708 424394.444 837438.889 +10709 424400.000 793319.444 +10710 424400.000 856488.889 +10711 424405.556 764969.444 +10712 424408.333 736613.889 +10713 424413.889 849241.667 +10714 424416.667 760325.000 +10715 424427.778 910061.111 +10716 424433.333 850180.556 +10717 424436.111 829069.444 +10718 424444.444 716875.000 +10719 424450.000 909319.444 +10720 424461.111 878327.778 +10721 424472.222 712250.000 +10722 424500.000 732458.333 +10723 424511.111 841805.556 +10724 424513.889 844325.000 +10725 424522.222 711375.000 +10726 424527.778 750641.667 +10727 424566.667 839463.889 +10728 424577.778 986472.222 +10729 424583.333 710666.667 +10730 424583.333 713958.333 +10731 424591.667 929383.333 +10732 424594.444 764869.444 +10733 424605.556 831347.222 +10734 424605.556 836516.667 +10735 424605.556 856963.889 +10736 424613.889 777772.222 +10737 424613.889 951516.667 +10738 424625.000 831041.667 +10739 424630.556 789361.111 +10740 424641.667 926280.556 +10741 424644.444 833763.889 +10742 424647.222 710105.556 +10743 424661.111 781152.778 +10744 424666.667 709500.000 +10745 424666.667 979058.333 +10746 424669.444 922563.889 +10747 424683.333 738166.667 +10748 424683.333 791772.222 +10749 424683.333 829555.556 +10750 424683.333 896438.889 +10751 424686.111 918891.667 +10752 424688.889 922194.444 +10753 424691.667 922808.333 +10754 424694.444 938158.333 +10755 424705.556 939933.333 +10756 424708.333 709180.556 +10757 424711.111 831422.222 +10758 424716.667 884322.222 +10759 424727.778 1228016.667 +10760 424733.333 832219.444 +10761 424733.333 917341.667 +10762 424738.889 964133.333 +10763 424750.000 957852.778 +10764 424755.556 920636.111 +10765 424772.222 726083.333 +10766 424772.222 880955.556 +10767 424775.000 830277.778 +10768 424788.889 878236.111 +10769 424791.667 711527.778 +10770 424794.444 793341.667 +10771 424800.000 711000.000 +10772 424805.556 831669.444 +10773 424805.556 834755.556 +10774 424816.667 912722.222 +10775 424841.667 914552.778 +10776 424844.444 911227.778 +10777 424850.000 830277.778 +10778 424858.333 831052.778 +10779 424888.889 960722.222 +10780 424891.667 784811.111 +10781 424891.667 955447.222 +10782 424894.444 831447.222 +10783 424908.333 762975.000 +10784 424922.222 906427.778 +10785 424927.778 923427.778 +10786 424930.556 890366.667 +10787 424947.222 1078266.667 +10788 424963.889 832227.778 +10789 424963.889 899894.444 +10790 424969.444 828888.889 +10791 424972.222 829372.222 +10792 424975.000 941677.778 +10793 424983.333 883297.222 +10794 424994.444 975416.667 +10795 425000.000 708583.333 +10796 425000.000 952927.778 +10797 425000.000 964000.000 +10798 425005.556 906644.444 +10799 425022.222 775075.000 +10800 425025.000 887288.889 +10801 425030.556 831836.111 +10802 425047.222 711961.111 +10803 425061.111 972033.333 +10804 425063.889 710733.333 +10805 425083.333 890316.667 +10806 425091.667 846558.333 +10807 425144.444 907513.889 +10808 425158.333 736105.556 +10809 425158.333 832733.333 +10810 425183.333 737516.667 +10811 425194.444 708972.222 +10812 425202.778 933758.333 +10813 425222.222 833061.111 +10814 425225.000 932511.111 +10815 425233.333 769769.444 +10816 425247.222 835363.889 +10817 425250.000 717602.778 +10818 425255.556 710958.333 +10819 425272.222 964827.778 +10820 425277.778 709291.667 +10821 425277.778 924452.778 +10822 425291.667 712286.111 +10823 425291.667 858552.778 +10824 425294.444 837802.778 +10825 425297.222 1143052.778 +10826 425300.000 784730.556 +10827 425311.111 755238.889 +10828 425311.111 882480.556 +10829 425311.111 885994.444 +10830 425313.889 989777.778 +10831 425327.778 904344.444 +10832 425333.333 831463.889 +10833 425338.889 784233.333 +10834 425338.889 1143638.889 +10835 425347.222 881436.111 +10836 425358.333 1137919.444 +10837 425363.889 997002.778 +10838 425377.778 834811.111 +10839 425380.556 883508.333 +10840 425383.333 1101136.111 +10841 425388.889 710486.111 +10842 425391.667 829494.444 +10843 425422.222 766663.889 +10844 425436.111 716500.000 +10845 425441.667 791669.444 +10846 425458.333 714750.000 +10847 425463.889 711741.667 +10848 425466.667 832113.889 +10849 425486.111 752455.556 +10850 425488.889 748213.889 +10851 425500.000 998622.222 +10852 425511.111 946836.111 +10853 425536.111 882944.444 +10854 425536.111 1101086.111 +10855 425541.667 930530.556 +10856 425566.667 834738.889 +10857 425577.778 888650.000 +10858 425583.333 708805.556 +10859 425586.111 1137630.556 +10860 425608.333 776963.889 +10861 425611.111 715902.778 +10862 425630.556 1144600.000 +10863 425636.111 848358.333 +10864 425669.444 926219.444 +10865 425677.778 775900.000 +10866 425697.222 903805.556 +10867 425700.000 921602.778 +10868 425702.778 1146069.444 +10869 425733.333 902308.333 +10870 425750.000 709305.556 +10871 425750.000 719986.111 +10872 425761.111 1117297.222 +10873 425775.000 881050.000 +10874 425775.000 927866.667 +10875 425777.778 1218650.000 +10876 425780.556 885408.333 +10877 425794.444 779427.778 +10878 425802.778 830302.778 +10879 425813.889 948458.333 +10880 425819.444 724930.556 +10881 425822.222 762094.444 +10882 425833.333 718027.778 +10883 425836.111 832455.556 +10884 425841.667 886325.000 +10885 425841.667 928841.667 +10886 425847.222 878211.111 +10887 425858.333 995375.000 +10888 425875.000 726000.000 +10889 425877.778 763672.222 +10890 425883.333 959672.222 +10891 425902.778 723102.778 +10892 425905.556 749455.556 +10893 425936.111 835994.444 +10894 425938.889 861016.667 +10895 425944.444 717250.000 +10896 425952.778 789413.889 +10897 425958.333 722272.222 +10898 425961.111 760936.111 +10899 425969.444 980333.333 +10900 425972.222 828780.556 +10901 425986.111 916419.444 +10902 425988.889 976452.778 +10903 425991.667 991422.222 +10904 425991.667 1147586.111 +10905 426011.111 761808.333 +10906 426011.111 896383.333 +10907 426016.667 887075.000 +10908 426025.000 965588.889 +10909 426027.778 850930.556 +10910 426041.667 725569.444 +10911 426041.667 727397.222 +10912 426055.556 904297.222 +10913 426055.556 950025.000 +10914 426072.222 839294.444 +10915 426080.556 833438.889 +10916 426080.556 1137825.000 +10917 426083.333 720763.889 +10918 426102.778 719394.444 +10919 426111.111 715750.000 +10920 426113.889 833286.111 +10921 426122.222 884822.222 +10922 426144.444 941458.333 +10923 426152.778 770925.000 +10924 426152.778 774027.778 +10925 426158.333 706625.000 +10926 426169.444 767252.778 +10927 426183.333 825311.111 +10928 426183.333 893761.111 +10929 426191.667 1136763.889 +10930 426208.333 919000.000 +10931 426213.889 951730.556 +10932 426219.444 738330.556 +10933 426225.000 972641.667 +10934 426236.111 857602.778 +10935 426241.667 731180.556 +10936 426241.667 753319.444 +10937 426241.667 790672.222 +10938 426261.111 830336.111 +10939 426272.222 905919.444 +10940 426275.000 892530.556 +10941 426277.778 962913.889 +10942 426288.889 780547.222 +10943 426288.889 850241.667 +10944 426291.667 847388.889 +10945 426319.444 707833.333 +10946 426330.556 886436.111 +10947 426333.333 713166.667 +10948 426338.889 735541.667 +10949 426341.667 745644.444 +10950 426369.444 761791.667 +10951 426375.000 709500.000 +10952 426383.333 790280.556 +10953 426388.889 832911.111 +10954 426391.667 920469.444 +10955 426405.556 845152.778 +10956 426411.111 952094.444 +10957 426425.000 737433.333 +10958 426433.333 736091.667 +10959 426444.444 914011.111 +10960 426455.556 846488.889 +10961 426461.111 924627.778 +10962 426505.556 1121922.222 +10963 426525.000 737566.667 +10964 426538.889 739291.667 +10965 426544.444 1116038.889 +10966 426550.000 862019.444 +10967 426566.667 935008.333 +10968 426583.333 711375.000 +10969 426605.556 780858.333 +10970 426605.556 840730.556 +10971 426608.333 770541.667 +10972 426611.111 709972.222 +10973 426641.667 939041.667 +10974 426652.778 715736.111 +10975 426658.333 715888.889 +10976 426658.333 743100.000 +10977 426666.667 717055.556 +10978 426669.444 841741.667 +10979 426708.333 892088.889 +10980 426713.889 923372.222 +10981 426727.778 885444.444 +10982 426733.333 919133.333 +10983 426736.111 952902.778 +10984 426738.889 856447.222 +10985 426763.889 768233.333 +10986 426777.778 744858.333 +10987 426780.556 754988.889 +10988 426780.556 882761.111 +10989 426791.667 708416.667 +10990 426805.556 831338.889 +10991 426811.111 827369.444 +10992 426822.222 768688.889 +10993 426827.778 890186.111 +10994 426830.556 901175.000 +10995 426830.556 1034122.222 +10996 426833.333 966833.333 +10997 426836.111 915338.889 +10998 426838.889 1026894.444 +10999 426855.556 787769.444 +11000 426861.111 720444.444 +11001 426880.556 880513.889 +11002 426888.889 842830.556 +11003 426894.444 907119.444 +11004 426902.778 735650.000 +11005 426911.111 738691.667 +11006 426919.444 737250.000 +11007 426950.000 738075.000 +11008 426958.333 724533.333 +11009 426980.556 878944.444 +11010 427005.556 740341.667 +11011 427005.556 749247.222 +11012 427008.333 731091.667 +11013 427011.111 898669.444 +11014 427022.222 834027.778 +11015 427022.222 922252.778 +11016 427047.222 737552.778 +11017 427069.444 711636.111 +11018 427077.778 894369.444 +11019 427102.778 925827.778 +11020 427119.444 732041.667 +11021 427125.000 764219.444 +11022 427127.778 954363.889 +11023 427130.556 854619.444 +11024 427144.444 909905.556 +11025 427155.556 780058.333 +11026 427166.667 708791.667 +11027 427177.778 738338.889 +11028 427183.333 1024636.111 +11029 427194.444 824922.222 +11030 427197.222 962483.333 +11031 427200.000 942000.000 +11032 427202.778 1118850.000 +11033 427208.333 942150.000 +11034 427222.222 844275.000 +11035 427241.667 1145177.778 +11036 427250.000 1109311.111 +11037 427255.556 778744.444 +11038 427258.333 924752.778 +11039 427261.111 877827.778 +11040 427283.333 736922.222 +11041 427288.889 974952.778 +11042 427294.444 944475.000 +11043 427300.000 737016.667 +11044 427316.667 937327.778 +11045 427325.000 845555.556 +11046 427341.667 904783.333 +11047 427355.556 946688.889 +11048 427358.333 834188.889 +11049 427361.111 903341.667 +11050 427363.889 1234222.222 +11051 427369.444 844838.889 +11052 427400.000 781330.556 +11053 427413.889 882241.667 +11054 427419.444 932022.222 +11055 427441.667 736919.444 +11056 427455.556 895947.222 +11057 427458.333 1244961.111 +11058 427469.444 737594.444 +11059 427469.444 844011.111 +11060 427494.444 955513.889 +11061 427519.444 929752.778 +11062 427527.778 927950.000 +11063 427533.333 847463.889 +11064 427538.889 767027.778 +11065 427583.333 758847.222 +11066 427597.222 1053816.667 +11067 427600.000 772266.667 +11068 427622.222 848963.889 +11069 427622.222 849925.000 +11070 427625.000 1044516.667 +11071 427630.556 882141.667 +11072 427647.222 714402.778 +11073 427652.778 714680.556 +11074 427672.222 718127.778 +11075 427675.000 787441.667 +11076 427677.778 786136.111 +11077 427702.778 832641.667 +11078 427733.333 723836.111 +11079 427738.889 918822.222 +11080 427741.667 737005.556 +11081 427755.556 889438.889 +11082 427758.333 1147033.333 +11083 427761.111 710777.778 +11084 427794.444 969288.889 +11085 427797.222 738461.111 +11086 427802.778 892991.667 +11087 427819.444 949483.333 +11088 427844.444 832397.222 +11089 427844.444 877661.111 +11090 427847.222 851383.333 +11091 427847.222 926675.000 +11092 427852.778 884050.000 +11093 427858.333 910994.444 +11094 427861.111 724869.444 +11095 427861.111 1128536.111 +11096 427875.000 861088.889 +11097 427891.667 855166.667 +11098 427913.889 838463.889 +11099 427919.444 836277.778 +11100 427925.000 736816.667 +11101 427941.667 961652.778 +11102 427955.556 747536.111 +11103 427958.333 746175.000 +11104 427958.333 778172.222 +11105 427963.889 1122533.333 +11106 427972.222 788236.111 +11107 427977.778 837050.000 +11108 427980.556 761097.222 +11109 428027.778 830130.556 +11110 428047.222 1022027.778 +11111 428080.556 922580.556 +11112 428091.667 827558.333 +11113 428102.778 898619.444 +11114 428122.222 1148977.778 +11115 428125.000 708777.778 +11116 428125.000 860186.111 +11117 428127.778 945266.667 +11118 428138.889 720236.111 +11119 428141.667 739400.000 +11120 428144.444 837825.000 +11121 428144.444 896350.000 +11122 428147.222 959730.556 +11123 428208.333 824861.111 +11124 428213.889 776688.889 +11125 428227.778 839444.444 +11126 428238.889 721816.667 +11127 428247.222 832647.222 +11128 428255.556 788236.111 +11129 428258.333 958072.222 +11130 428263.889 739647.222 +11131 428263.889 780900.000 +11132 428263.889 842194.444 +11133 428269.444 755450.000 +11134 428288.889 965591.667 +11135 428294.444 1030000.000 +11136 428297.222 786363.889 +11137 428330.556 1087300.000 +11138 428336.111 887322.222 +11139 428352.778 716494.444 +11140 428352.778 890675.000 +11141 428386.111 841783.333 +11142 428397.222 766936.111 +11143 428405.556 1063652.778 +11144 428408.333 856636.111 +11145 428416.667 708611.111 +11146 428419.444 918019.444 +11147 428433.333 717355.556 +11148 428441.667 828844.444 +11149 428461.111 936138.889 +11150 428466.667 948516.667 +11151 428475.000 907105.556 +11152 428475.000 920913.889 +11153 428508.333 725583.333 +11154 428522.222 834430.556 +11155 428533.333 749858.333 +11156 428536.111 893702.778 +11157 428538.889 914052.778 +11158 428541.667 978969.444 +11159 428558.333 726036.111 +11160 428583.333 709305.556 +11161 428597.222 895380.556 +11162 428600.000 1062677.778 +11163 428613.889 1058716.667 +11164 428641.667 782805.556 +11165 428666.667 883333.333 +11166 428666.667 1063125.000 +11167 428666.667 1098602.778 +11168 428686.111 773358.333 +11169 428686.111 912358.333 +11170 428688.889 769780.556 +11171 428691.667 849030.556 +11172 428694.444 856447.222 +11173 428705.556 719522.222 +11174 428708.333 858650.000 +11175 428711.111 973969.444 +11176 428713.889 1124447.222 +11177 428727.778 1005505.556 +11178 428738.889 987011.111 +11179 428744.444 740469.444 +11180 428777.778 885861.111 +11181 428780.556 731972.222 +11182 428786.111 840638.889 +11183 428791.667 752513.889 +11184 428794.444 884741.667 +11185 428805.556 713277.778 +11186 428813.889 882066.667 +11187 428836.111 1240719.444 +11188 428852.778 751936.111 +11189 428852.778 909233.333 +11190 428858.333 878630.556 +11191 428863.889 788786.111 +11192 428902.778 843513.889 +11193 428905.556 785780.556 +11194 428933.333 787941.667 +11195 428933.333 932150.000 +11196 428933.333 951508.333 +11197 428944.444 739283.333 +11198 428950.000 774350.000 +11199 428958.333 928022.222 +11200 428963.889 827688.889 +11201 428986.111 756405.556 +11202 429000.000 735858.333 +11203 429000.000 784922.222 +11204 429000.000 904308.333 +11205 429005.556 786705.556 +11206 429011.111 733519.444 +11207 429022.222 774200.000 +11208 429027.778 736877.778 +11209 429033.333 735630.556 +11210 429038.889 786925.000 +11211 429041.667 722083.333 +11212 429047.222 768630.556 +11213 429047.222 776116.667 +11214 429055.556 745722.222 +11215 429058.333 881388.889 +11216 429061.111 1085827.778 +11217 429072.222 857919.444 +11218 429086.111 765405.556 +11219 429097.222 857630.556 +11220 429105.556 767969.444 +11221 429105.556 878605.556 +11222 429108.333 745744.444 +11223 429113.889 988488.889 +11224 429119.444 777458.333 +11225 429119.444 839847.222 +11226 429125.000 824869.444 +11227 429133.333 857052.778 +11228 429169.444 835063.889 +11229 429169.444 892177.778 +11230 429188.889 767266.667 +11231 429205.556 830450.000 +11232 429208.333 1124652.778 +11233 429261.111 893844.444 +11234 429275.000 836300.000 +11235 429275.000 1232800.000 +11236 429288.889 888369.444 +11237 429294.444 847986.111 +11238 429294.444 852130.556 +11239 429300.000 758530.556 +11240 429302.778 732430.556 +11241 429313.889 746230.556 +11242 429316.667 765663.889 +11243 429336.111 722786.111 +11244 429336.111 853419.444 +11245 429344.444 884052.778 +11246 429347.222 746138.889 +11247 429361.111 1144050.000 +11248 429375.000 708394.444 +11249 429375.000 880486.111 +11250 429377.778 937930.556 +11251 429386.111 737902.778 +11252 429386.111 741886.111 +11253 429386.111 919500.000 +11254 429388.889 1147122.222 +11255 429391.667 754613.889 +11256 429391.667 840294.444 +11257 429405.556 879958.333 +11258 429411.111 856100.000 +11259 429413.889 832891.667 +11260 429441.667 1128375.000 +11261 429461.111 831238.889 +11262 429469.444 764294.444 +11263 429477.778 743708.333 +11264 429511.111 1233630.556 +11265 429522.222 775905.556 +11266 429527.778 925361.111 +11267 429544.444 743769.444 +11268 429550.000 1153000.000 +11269 429552.778 742855.556 +11270 429558.333 772211.111 +11271 429569.444 944408.333 +11272 429572.222 838305.556 +11273 429575.000 770577.778 +11274 429575.000 916305.556 +11275 429583.333 742333.333 +11276 429597.222 878613.889 +11277 429600.000 784058.333 +11278 429602.778 901300.000 +11279 429613.889 880125.000 +11280 429616.667 771402.778 +11281 429627.778 918080.556 +11282 429638.889 787380.556 +11283 429644.444 825230.556 +11284 429647.222 786777.778 +11285 429652.778 921994.444 +11286 429658.333 788702.778 +11287 429697.222 772305.556 +11288 429708.333 824250.000 +11289 429716.667 904330.556 +11290 429730.556 778530.556 +11291 429741.667 954972.222 +11292 429744.444 741513.889 +11293 429747.222 963180.556 +11294 429763.889 881083.333 +11295 429783.333 779844.444 +11296 429791.667 956877.778 +11297 429813.889 709483.333 +11298 429819.444 841177.778 +11299 429819.444 849469.444 +11300 429825.000 774091.667 +11301 429827.778 763408.333 +11302 429836.111 906552.778 +11303 429852.778 931916.667 +11304 429855.556 839283.333 +11305 429872.222 850711.111 +11306 429875.000 960102.778 +11307 429908.333 895330.556 +11308 429933.333 978625.000 +11309 429955.556 714552.778 +11310 429958.333 849425.000 +11311 429958.333 964850.000 +11312 429977.778 841766.667 +11313 429980.556 781877.778 +11314 430008.333 738494.444 +11315 430013.889 857680.556 +11316 430016.667 847397.222 +11317 430019.444 759772.222 +11318 430022.222 899902.778 +11319 430036.111 890163.889 +11320 430036.111 916522.222 +11321 430044.444 883766.667 +11322 430050.000 980594.444 +11323 430055.556 888072.222 +11324 430058.333 843716.667 +11325 430066.667 743680.556 +11326 430069.444 936027.778 +11327 430072.222 960580.556 +11328 430077.778 842847.222 +11329 430086.111 897383.333 +11330 430105.556 786377.778 +11331 430113.889 750044.444 +11332 430116.667 882313.889 +11333 430125.000 829280.556 +11334 430125.000 836875.000 +11335 430125.000 879725.000 +11336 430125.000 892897.222 +11337 430141.667 884725.000 +11338 430150.000 750358.333 +11339 430155.556 898952.778 +11340 430166.667 880069.444 +11341 430183.333 911825.000 +11342 430202.778 788805.556 +11343 430202.778 1232919.444 +11344 430208.333 784955.556 +11345 430213.889 966305.556 +11346 430247.222 830777.778 +11347 430250.000 1083794.444 +11348 430255.556 749863.889 +11349 430255.556 1025558.333 +11350 430258.333 777455.556 +11351 430280.556 733816.667 +11352 430297.222 760047.222 +11353 430333.333 710747.222 +11354 430344.444 764483.333 +11355 430344.444 766241.667 +11356 430347.222 835180.556 +11357 430361.111 711838.889 +11358 430386.111 788644.444 +11359 430386.111 856700.000 +11360 430388.889 750708.333 +11361 430388.889 879063.889 +11362 430391.667 763044.444 +11363 430430.556 880788.889 +11364 430433.333 748600.000 +11365 430444.444 911780.556 +11366 430450.000 758669.444 +11367 430466.667 770955.556 +11368 430466.667 903797.222 +11369 430472.222 762388.889 +11370 430475.000 762208.333 +11371 430480.556 761477.778 +11372 430483.333 753788.889 +11373 430486.111 765630.556 +11374 430494.444 880075.000 +11375 430513.889 833188.889 +11376 430516.667 911411.111 +11377 430516.667 913891.667 +11378 430519.444 890755.556 +11379 430522.222 929483.333 +11380 430527.778 743441.667 +11381 430580.556 762077.778 +11382 430586.111 741969.444 +11383 430591.667 923175.000 +11384 430605.556 881063.889 +11385 430608.333 884036.111 +11386 430619.444 944266.667 +11387 430622.222 893338.889 +11388 430630.556 838511.111 +11389 430630.556 862283.333 +11390 430638.889 772336.111 +11391 430638.889 859347.222 +11392 430641.667 769905.556 +11393 430650.000 1241377.778 +11394 430652.778 760788.889 +11395 430652.778 764733.333 +11396 430655.556 952836.111 +11397 430658.333 782700.000 +11398 430663.889 926722.222 +11399 430691.667 772991.667 +11400 430700.000 942327.778 +11401 430705.556 921500.000 +11402 430716.667 707630.556 +11403 430719.444 959041.667 +11404 430730.556 894011.111 +11405 430733.333 752880.556 +11406 430736.111 755986.111 +11407 430747.222 731544.444 +11408 430752.778 757072.222 +11409 430761.111 760011.111 +11410 430761.111 887741.667 +11411 430761.111 891994.444 +11412 430769.444 861969.444 +11413 430772.222 781872.222 +11414 430775.000 894455.556 +11415 430794.444 755397.222 +11416 430794.444 757511.111 +11417 430797.222 961752.778 +11418 430797.222 982927.778 +11419 430805.556 882611.111 +11420 430805.556 967733.333 +11421 430813.889 889116.667 +11422 430825.000 756338.889 +11423 430830.556 737850.000 +11424 430830.556 971602.778 +11425 430841.667 768697.222 +11426 430844.444 862202.778 +11427 430847.222 915680.556 +11428 430852.778 779425.000 +11429 430852.778 908830.556 +11430 430858.333 706975.000 +11431 430869.444 956269.444 +11432 430880.556 707366.667 +11433 430883.333 939900.000 +11434 430886.111 843869.444 +11435 430891.667 878875.000 +11436 430905.556 734991.667 +11437 430905.556 775152.778 +11438 430922.222 753800.000 +11439 430925.000 756516.667 +11440 430944.444 790569.444 +11441 430966.667 714655.556 +11442 430972.222 895041.667 +11443 430977.778 761455.556 +11444 430977.778 852288.889 +11445 430977.778 884022.222 +11446 430977.778 938016.667 +11447 430986.111 774422.222 +11448 431000.000 735822.222 +11449 431008.333 747733.333 +11450 431008.333 752330.556 +11451 431025.000 936016.667 +11452 431044.444 742652.778 +11453 431044.444 884591.667 +11454 431047.222 846919.444 +11455 431050.000 883419.444 +11456 431052.778 752916.667 +11457 431058.333 880694.444 +11458 431063.889 762180.556 +11459 431080.556 707780.556 +11460 431086.111 774877.778 +11461 431116.667 883922.222 +11462 431116.667 884991.667 +11463 431127.778 752713.889 +11464 431127.778 946827.778 +11465 431133.333 879000.000 +11466 431144.444 896555.556 +11467 431152.778 761461.111 +11468 431166.667 839700.000 +11469 431183.333 893794.444 +11470 431186.111 836950.000 +11471 431191.667 1244072.222 +11472 431194.444 969611.111 +11473 431200.000 855600.000 +11474 431219.444 752919.444 +11475 431225.000 1234113.889 +11476 431263.889 934775.000 +11477 431291.667 948988.889 +11478 431305.556 714536.111 +11479 431319.444 861547.222 +11480 431330.556 1156902.778 +11481 431333.333 724444.444 +11482 431338.889 709269.444 +11483 431338.889 882219.444 +11484 431344.444 907052.778 +11485 431347.222 761302.778 +11486 431372.222 897466.667 +11487 431377.778 725102.778 +11488 431380.556 755711.111 +11489 431413.889 951441.667 +11490 431427.778 930041.667 +11491 431433.333 771894.444 +11492 431461.111 881661.111 +11493 431463.889 917644.444 +11494 431466.667 883066.667 +11495 431497.222 977172.222 +11496 431500.000 786969.444 +11497 431536.111 932008.333 +11498 431547.222 776158.333 +11499 431563.889 985411.111 +11500 431566.667 834105.556 +11501 431572.222 753330.556 +11502 431575.000 879016.667 +11503 431586.111 763330.556 +11504 431600.000 953272.222 +11505 431605.556 1233666.667 +11506 431608.333 857100.000 +11507 431633.333 879644.444 +11508 431636.111 730727.778 +11509 431661.111 835244.444 +11510 431683.333 890666.667 +11511 431688.889 862638.889 +11512 431702.778 970811.111 +11513 431705.556 786905.556 +11514 431722.222 733280.556 +11515 431725.000 790361.111 +11516 431725.000 1017322.222 +11517 431741.667 879241.667 +11518 431752.778 900677.778 +11519 431766.667 838927.778 +11520 431766.667 897947.222 +11521 431769.444 730575.000 +11522 431769.444 848463.889 +11523 431772.222 1241863.889 +11524 431775.000 837341.667 +11525 431775.000 852527.778 +11526 431788.889 881172.222 +11527 431797.222 718227.778 +11528 431800.000 954766.667 +11529 431805.556 879005.556 +11530 431811.111 958558.333 +11531 431816.667 956552.778 +11532 431819.444 903244.444 +11533 431825.000 992916.667 +11534 431836.111 892136.111 +11535 431836.111 918638.889 +11536 431838.889 889883.333 +11537 431847.222 841150.000 +11538 431850.000 904430.556 +11539 431863.889 778041.667 +11540 431866.667 844744.444 +11541 431886.111 961333.333 +11542 431905.556 1123441.667 +11543 431911.111 960055.556 +11544 431919.444 894555.556 +11545 431947.222 887288.889 +11546 431972.222 766547.222 +11547 431975.000 942194.444 +11548 431977.778 708741.667 +11549 431991.667 785763.889 +11550 432011.111 862388.889 +11551 432052.778 962947.222 +11552 432080.556 715380.556 +11553 432097.222 776933.333 +11554 432122.222 774302.778 +11555 432122.222 829897.222 +11556 432122.222 850736.111 +11557 432136.111 779394.444 +11558 432166.667 1233405.556 +11559 432200.000 783872.222 +11560 432200.000 857511.111 +11561 432205.556 768152.778 +11562 432219.444 717144.444 +11563 432233.333 855513.889 +11564 432238.889 771863.889 +11565 432255.556 750616.667 +11566 432255.556 979655.556 +11567 432263.889 780269.444 +11568 432294.444 831966.667 +11569 432311.111 763011.111 +11570 432322.222 994300.000 +11571 432341.667 862483.333 +11572 432344.444 708100.000 +11573 432358.333 1081097.222 +11574 432361.111 708208.333 +11575 432363.889 879844.444 +11576 432369.444 940411.111 +11577 432375.000 879786.111 +11578 432377.778 770616.667 +11579 432377.778 947511.111 +11580 432380.556 761411.111 +11581 432386.111 724250.000 +11582 432386.111 789100.000 +11583 432397.222 975775.000 +11584 432402.778 758841.667 +11585 432416.667 752572.222 +11586 432444.444 738327.778 +11587 432463.889 781938.889 +11588 432466.667 924358.333 +11589 432472.222 767238.889 +11590 432472.222 790502.778 +11591 432477.778 760005.556 +11592 432488.889 705997.222 +11593 432505.556 895013.889 +11594 432508.333 837941.667 +11595 432547.222 861097.222 +11596 432561.111 862675.000 +11597 432586.111 828175.000 +11598 432616.667 708658.333 +11599 432625.000 936369.444 +11600 432658.333 708650.000 +11601 432669.444 735850.000 +11602 432680.556 825308.333 +11603 432694.444 914755.556 +11604 432708.333 897219.444 +11605 432716.667 769894.444 +11606 432755.556 826211.111 +11607 432788.889 900436.111 +11608 432794.444 962325.000 +11609 432813.889 835297.222 +11610 432841.667 928108.333 +11611 432866.667 761463.889 +11612 432866.667 787105.556 +11613 432869.444 897238.889 +11614 432872.222 932019.444 +11615 432880.556 777936.111 +11616 432916.667 846075.000 +11617 432925.000 850813.889 +11618 432927.778 942177.778 +11619 432947.222 945113.889 +11620 432966.667 879875.000 +11621 432983.333 724827.778 +11622 432991.667 736355.556 +11623 433000.000 736844.444 +11624 433005.556 735863.889 +11625 433008.333 965925.000 +11626 433011.111 1038250.000 +11627 433033.333 917855.556 +11628 433036.111 707338.889 +11629 433044.444 709761.111 +11630 433050.000 888447.222 +11631 433058.333 713247.222 +11632 433058.333 1006577.778 +11633 433072.222 964316.667 +11634 433094.444 736444.444 +11635 433097.222 788263.889 +11636 433102.778 885180.556 +11637 433138.889 895263.889 +11638 433175.000 908447.222 +11639 433177.778 883788.889 +11640 433186.111 983463.889 +11641 433197.222 879533.333 +11642 433211.111 765791.667 +11643 433227.778 764175.000 +11644 433238.889 881666.667 +11645 433247.222 951497.222 +11646 433266.667 783891.667 +11647 433269.444 751872.222 +11648 433269.444 830802.778 +11649 433300.000 785550.000 +11650 433316.667 837380.556 +11651 433336.111 882861.111 +11652 433344.444 757483.333 +11653 433347.222 903866.667 +11654 433361.111 858108.333 +11655 433369.444 833525.000 +11656 433377.778 787150.000 +11657 433380.556 890152.778 +11658 433438.889 960019.444 +11659 433525.000 974369.444 +11660 433541.667 968916.667 +11661 433561.111 1242036.111 +11662 433616.667 704772.222 +11663 433622.222 912163.889 +11664 433636.111 1241916.667 +11665 433638.889 925538.889 +11666 433652.778 721738.889 +11667 433680.556 1242158.333 +11668 433713.889 937733.333 +11669 433719.444 835833.333 +11670 433766.667 723472.222 +11671 433766.667 998586.111 +11672 433788.889 846597.222 +11673 433813.889 921138.889 +11674 433813.889 1121225.000 +11675 433816.667 879405.556 +11676 433838.889 705452.778 +11677 433844.444 890450.000 +11678 433858.333 939463.889 +11679 433863.889 951480.556 +11680 433869.444 988441.667 +11681 433872.222 878755.556 +11682 433897.222 710655.556 +11683 433902.778 894027.778 +11684 433902.778 1233113.889 +11685 433952.778 907741.667 +11686 433955.556 854677.778 +11687 433958.333 727011.111 +11688 433961.111 944780.556 +11689 433975.000 971361.111 +11690 433980.556 764777.778 +11691 433988.889 979833.333 +11692 433991.667 957516.667 +11693 433997.222 885325.000 +11694 434016.667 948325.000 +11695 434055.556 887050.000 +11696 434061.111 761261.111 +11697 434066.667 1242230.556 +11698 434077.778 732600.000 +11699 434080.556 844750.000 +11700 434080.556 850386.111 +11701 434097.222 843288.889 +11702 434100.000 863486.111 +11703 434113.889 1062794.444 +11704 434130.556 1062488.889 +11705 434138.889 719855.556 +11706 434141.667 734880.556 +11707 434147.222 842305.556 +11708 434161.111 955344.444 +11709 434166.667 863569.444 +11710 434194.444 839508.333 +11711 434194.444 935330.556 +11712 434197.222 858000.000 +11713 434202.778 828297.222 +11714 434222.222 951019.444 +11715 434222.222 1232972.222 +11716 434230.556 972602.778 +11717 434252.778 881833.333 +11718 434252.778 984069.444 +11719 434261.111 737127.778 +11720 434269.444 826713.889 +11721 434272.222 961755.556 +11722 434308.333 825425.000 +11723 434313.889 966969.444 +11724 434316.667 880463.889 +11725 434316.667 1034738.889 +11726 434361.111 927822.222 +11727 434391.667 707747.222 +11728 434441.667 716477.778 +11729 434441.667 932208.333 +11730 434463.889 968355.556 +11731 434477.778 892397.222 +11732 434505.556 836963.889 +11733 434513.889 886311.111 +11734 434536.111 964338.889 +11735 434552.778 765108.333 +11736 434555.556 953205.556 +11737 434577.778 888372.222 +11738 434586.111 839302.778 +11739 434594.444 762291.667 +11740 434597.222 898683.333 +11741 434636.111 1142597.222 +11742 434666.667 707941.667 +11743 434666.667 1120333.333 +11744 434675.000 859419.444 +11745 434697.222 1119658.333 +11746 434705.556 879505.556 +11747 434711.111 897441.667 +11748 434716.667 729777.778 +11749 434744.444 897702.778 +11750 434763.889 839205.556 +11751 434800.000 1107616.667 +11752 434836.111 753369.444 +11753 434908.333 854438.889 +11754 434911.111 833969.444 +11755 434919.444 1164191.667 +11756 434925.000 704538.889 +11757 434941.667 885447.222 +11758 434958.333 893083.333 +11759 434966.667 737766.667 +11760 434966.667 912894.444 +11761 434997.222 878502.778 +11762 435008.333 704433.333 +11763 435050.000 940877.778 +11764 435052.778 929438.889 +11765 435061.111 906680.556 +11766 435072.222 863475.000 +11767 435097.222 925036.111 +11768 435169.444 732366.667 +11769 435172.222 703780.556 +11770 435172.222 884511.111 +11771 435180.556 960180.556 +11772 435197.222 1143144.444 +11773 435205.556 917694.444 +11774 435208.333 882288.889 +11775 435236.111 835433.333 +11776 435244.444 846947.222 +11777 435250.000 841227.778 +11778 435263.889 1119322.222 +11779 435266.667 827352.778 +11780 435277.778 714708.333 +11781 435280.556 963583.333 +11782 435325.000 900025.000 +11783 435336.111 946313.889 +11784 435336.111 1096297.222 +11785 435363.889 937119.444 +11786 435377.778 893000.000 +11787 435391.667 890066.667 +11788 435391.667 894625.000 +11789 435408.333 1165625.000 +11790 435422.222 891072.222 +11791 435455.556 1168122.222 +11792 435500.000 967000.000 +11793 435502.778 857719.444 +11794 435516.667 975072.222 +11795 435522.222 879616.667 +11796 435552.778 920100.000 +11797 435555.556 734041.667 +11798 435569.444 908886.111 +11799 435591.667 863455.556 +11800 435611.111 916358.333 +11801 435641.667 1190800.000 +11802 435652.778 927191.667 +11803 435655.556 889063.889 +11804 435669.444 761280.556 +11805 435680.556 835141.667 +11806 435680.556 1007450.000 +11807 435688.889 860394.444 +11808 435697.222 878233.333 +11809 435725.000 932811.111 +11810 435758.333 1241738.889 +11811 435780.556 703222.222 +11812 435825.000 964675.000 +11813 435830.556 753455.556 +11814 435838.889 712077.778 +11815 435863.889 1190530.556 +11816 435911.111 717372.222 +11817 435913.889 884436.111 +11818 435930.556 730455.556 +11819 435944.444 838888.889 +11820 435947.222 732661.111 +11821 435963.889 1119630.556 +11822 435977.778 882788.889 +11823 435977.778 972902.778 +11824 435986.111 1232822.222 +11825 436008.333 831747.222 +11826 436011.111 897936.111 +11827 436033.333 840697.222 +11828 436086.111 863638.889 +11829 436105.556 729730.556 +11830 436122.222 1163905.556 +11831 436152.778 838419.444 +11832 436155.556 842472.222 +11833 436177.778 1169327.778 +11834 436191.667 879519.444 +11835 436200.000 955961.111 +11836 436208.333 949883.333 +11837 436222.222 1162372.222 +11838 436227.778 877944.444 +11839 436230.556 969422.222 +11840 436241.667 725188.889 +11841 436252.778 753675.000 +11842 436275.000 897708.333 +11843 436319.444 1117727.778 +11844 436333.333 887294.444 +11845 436347.222 914966.667 +11846 436350.000 959325.000 +11847 436366.667 1132994.444 +11848 436375.000 941019.444 +11849 436405.556 721444.444 +11850 436413.889 702413.889 +11851 436422.222 722522.222 +11852 436433.333 760688.889 +11853 436441.667 760863.889 +11854 436461.111 1082113.889 +11855 436480.556 933680.556 +11856 436488.889 723197.222 +11857 436522.222 903438.889 +11858 436522.222 944608.333 +11859 436522.222 947266.667 +11860 436527.778 902233.333 +11861 436536.111 834661.111 +11862 436536.111 977825.000 +11863 436541.667 962125.000 +11864 436569.444 908541.667 +11865 436575.000 715008.333 +11866 436583.333 880069.444 +11867 436588.889 1233175.000 +11868 436613.889 702558.333 +11869 436619.444 912183.333 +11870 436630.556 1166863.889 +11871 436647.222 968105.556 +11872 436666.667 929744.444 +11873 436669.444 946191.667 +11874 436702.778 920830.556 +11875 436702.778 935758.333 +11876 436713.889 1168152.778 +11877 436725.000 1119141.667 +11878 436727.778 723091.667 +11879 436727.778 843805.556 +11880 436766.667 1169108.333 +11881 436769.444 703716.667 +11882 436775.000 951713.889 +11883 436794.444 704447.222 +11884 436808.333 1143627.778 +11885 436861.111 885463.889 +11886 436869.444 923888.889 +11887 436936.111 883608.333 +11888 436952.778 716311.111 +11889 436958.333 1120097.222 +11890 436972.222 1143508.333 +11891 436980.556 854836.111 +11892 436983.333 863638.889 +11893 436986.111 954683.333 +11894 437022.222 722900.000 +11895 437022.222 910130.556 +11896 437025.000 1240955.556 +11897 437058.333 925719.444 +11898 437066.667 730286.111 +11899 437069.444 1166191.667 +11900 437072.222 889900.000 +11901 437094.444 980294.444 +11902 437097.222 929694.444 +11903 437100.000 749747.222 +11904 437100.000 829316.667 +11905 437155.556 984847.222 +11906 437175.000 965025.000 +11907 437208.333 919766.667 +11908 437208.333 1119891.667 +11909 437233.333 1111105.556 +11910 437241.667 973886.111 +11911 437291.667 878105.556 +11912 437322.222 834511.111 +11913 437347.222 702083.333 +11914 437352.778 887811.111 +11915 437402.778 928691.667 +11916 437408.333 902722.222 +11917 437419.444 907791.667 +11918 437461.111 937286.111 +11919 437466.667 989580.556 +11920 437466.667 1224605.556 +11921 437486.111 879769.444 +11922 437508.333 877144.444 +11923 437566.667 845858.333 +11924 437569.444 716886.111 +11925 437594.444 913463.889 +11926 437613.889 967400.000 +11927 437622.222 947069.444 +11928 437633.333 915683.333 +11929 437638.889 933288.889 +11930 437666.667 1035983.333 +11931 437677.778 941655.556 +11932 437730.556 884469.444 +11933 437816.667 864330.556 +11934 437852.778 1169422.222 +11935 437861.111 969272.222 +11936 437866.667 754922.222 +11937 437913.889 893197.222 +11938 437950.000 953200.000 +11939 437963.889 702594.444 +11940 437972.222 900772.222 +11941 437977.778 1230583.333 +11942 437980.556 730880.556 +11943 438005.556 701872.222 +11944 438013.889 912394.444 +11945 438019.444 830008.333 +11946 438066.667 917913.889 +11947 438077.778 886747.222 +11948 438083.333 917527.778 +11949 438108.333 993302.778 +11950 438113.889 884833.333 +11951 438194.444 831808.333 +11952 438194.444 847686.111 +11953 438261.111 967058.333 +11954 438261.111 1117888.889 +11955 438263.889 882461.111 +11956 438277.778 944369.444 +11957 438300.000 832700.000 +11958 438305.556 906213.889 +11959 438333.333 726344.444 +11960 438333.333 880177.778 +11961 438338.889 878200.000 +11962 438338.889 1015094.444 +11963 438341.667 704388.889 +11964 438350.000 848669.444 +11965 438419.444 938316.667 +11966 438422.222 888358.333 +11967 438441.667 889600.000 +11968 438447.222 826513.889 +11969 438455.556 921888.889 +11970 438486.111 734238.889 +11971 438500.000 963983.333 +11972 438508.333 891216.667 +11973 438522.222 696286.111 +11974 438536.111 839650.000 +11975 438547.222 1042044.444 +11976 438555.556 924883.333 +11977 438569.444 701036.111 +11978 438600.000 760058.333 +11979 438663.889 951166.667 +11980 438666.667 930508.333 +11981 438705.556 956000.000 +11982 438725.000 961283.333 +11983 438727.778 933011.111 +11984 438730.556 1117475.000 +11985 438736.111 1164983.333 +11986 438750.000 855100.000 +11987 438769.444 1169938.889 +11988 438791.667 901652.778 +11989 438822.222 844847.222 +11990 438836.111 894933.333 +11991 438844.444 912350.000 +11992 438866.667 1116769.444 +11993 438880.556 941563.889 +11994 438883.333 1007125.000 +11995 438905.556 928475.000 +11996 438930.556 909902.778 +11997 438933.333 756738.889 +11998 438938.889 934936.111 +11999 438958.333 753927.778 +12000 438991.667 910811.111 +12001 439005.556 852580.556 +12002 439011.111 858516.667 +12003 439097.222 1000583.333 +12004 439105.556 698211.111 +12005 439125.000 880355.556 +12006 439144.444 699658.333 +12007 439147.222 1136125.000 +12008 439147.222 1161969.444 +12009 439150.000 877472.222 +12010 439180.556 1230233.333 +12011 439186.111 1227825.000 +12012 439225.000 902713.889 +12013 439250.000 726663.889 +12014 439275.000 699763.889 +12015 439288.889 939558.333 +12016 439325.000 1035747.222 +12017 439388.889 949294.444 +12018 439394.444 829969.444 +12019 439411.111 832713.889 +12020 439441.667 908127.778 +12021 439461.111 761194.444 +12022 439500.000 880841.667 +12023 439547.222 862800.000 +12024 439552.778 864525.000 +12025 439583.333 947944.444 +12026 439633.333 912561.111 +12027 439680.556 889433.333 +12028 439700.000 1168180.556 +12029 439705.556 898166.667 +12030 439741.667 756155.556 +12031 439747.222 759111.111 +12032 439780.556 756097.222 +12033 439786.111 905038.889 +12034 439791.667 711208.333 +12035 439808.333 844863.889 +12036 439822.222 1172372.222 +12037 439825.000 968141.667 +12038 439827.778 1240986.111 +12039 439830.556 839588.889 +12040 439844.444 918691.667 +12041 439877.778 957555.556 +12042 439883.333 922283.333 +12043 439925.000 721294.444 +12044 439925.000 1022411.111 +12045 439961.111 700611.111 +12046 440005.556 963172.222 +12047 440011.111 759666.667 +12048 440047.222 940655.556 +12049 440055.556 914419.444 +12050 440061.111 971136.111 +12051 440077.778 760447.222 +12052 440077.778 1169155.556 +12053 440108.333 975263.889 +12054 440125.000 757947.222 +12055 440152.778 731677.778 +12056 440163.889 709811.111 +12057 440169.444 1079547.222 +12058 440191.667 847994.444 +12059 440216.667 924697.222 +12060 440247.222 885425.000 +12061 440261.111 900738.889 +12062 440266.667 1169619.444 +12063 440275.000 917697.222 +12064 440280.556 928544.444 +12065 440288.889 881627.778 +12066 440300.000 927505.556 +12067 440327.778 926452.778 +12068 440394.444 887441.667 +12069 440394.444 1016647.222 +12070 440419.444 890983.333 +12071 440422.222 954358.333 +12072 440444.444 929975.000 +12073 440461.111 829941.667 +12074 440463.889 1230208.333 +12075 440483.333 734602.778 +12076 440486.111 836958.333 +12077 440488.889 1233497.222 +12078 440494.444 965950.000 +12079 440500.000 916391.667 +12080 440508.333 944180.556 +12081 440522.222 1230855.556 +12082 440536.111 711288.889 +12083 440536.111 982752.778 +12084 440547.222 707133.333 +12085 440583.333 1213141.667 +12086 440625.000 916955.556 +12087 440661.111 878841.667 +12088 440669.444 761305.556 +12089 440691.667 927555.556 +12090 440716.667 882988.889 +12091 440716.667 1114475.000 +12092 440747.222 892877.778 +12093 440758.333 885250.000 +12094 440777.778 935072.222 +12095 440783.333 1169327.778 +12096 440788.889 691822.222 +12097 440791.667 985691.667 +12098 440805.556 1032305.556 +12099 440816.667 913488.889 +12100 440838.889 932258.333 +12101 440872.222 697994.444 +12102 440880.556 758075.000 +12103 440886.111 876575.000 +12104 440952.778 693761.111 +12105 440977.778 702316.667 +12106 440977.778 918166.667 +12107 440997.222 1046275.000 +12108 441002.778 702152.778 +12109 441025.000 851469.444 +12110 441036.111 691094.444 +12111 441036.111 1231300.000 +12112 441058.333 942186.111 +12113 441102.778 949044.444 +12114 441108.333 887125.000 +12115 441116.667 703922.222 +12116 441125.000 1030677.778 +12117 441161.111 937077.778 +12118 441197.222 701080.556 +12119 441277.778 763333.333 +12120 441302.778 922513.889 +12121 441305.556 909980.556 +12122 441319.444 917186.111 +12123 441333.333 730794.444 +12124 441372.222 1230652.778 +12125 441402.778 881638.889 +12126 441447.222 878213.889 +12127 441511.111 726569.444 +12128 441511.111 1033075.000 +12129 441522.222 720377.778 +12130 441536.111 879566.667 +12131 441536.111 928994.444 +12132 441538.889 875691.667 +12133 441544.444 757091.667 +12134 441572.222 1088708.333 +12135 441597.222 750319.444 +12136 441636.111 939991.667 +12137 441650.000 921713.889 +12138 441650.000 938811.111 +12139 441661.111 925347.222 +12140 441672.222 732544.444 +12141 441733.333 940336.111 +12142 441741.667 932461.111 +12143 441769.444 725061.111 +12144 441772.222 880641.667 +12145 441838.889 734361.111 +12146 441858.333 884625.000 +12147 441936.111 852133.333 +12148 441969.444 725025.000 +12149 441991.667 756072.222 +12150 441994.444 877213.889 +12151 442013.889 926461.111 +12152 442022.222 884463.889 +12153 442044.444 938152.778 +12154 442097.222 690652.778 +12155 442097.222 951283.333 +12156 442133.333 719113.889 +12157 442138.889 705452.778 +12158 442138.889 894922.222 +12159 442152.778 757975.000 +12160 442188.889 935677.778 +12161 442194.444 1232044.444 +12162 442230.556 954691.667 +12163 442236.111 705138.889 +12164 442272.222 934444.444 +12165 442275.000 918350.000 +12166 442300.000 697758.333 +12167 442302.778 697672.222 +12168 442311.111 952638.889 +12169 442333.333 956188.889 +12170 442333.333 958719.444 +12171 442361.111 964808.333 +12172 442388.889 949755.556 +12173 442391.667 876411.111 +12174 442394.444 760861.111 +12175 442444.444 697719.444 +12176 442444.444 862961.111 +12177 442444.444 863241.667 +12178 442511.111 1169683.333 +12179 442519.444 854011.111 +12180 442527.778 915013.889 +12181 442597.222 888647.222 +12182 442600.000 725758.333 +12183 442611.111 962872.222 +12184 442619.444 884152.778 +12185 442633.333 1049497.222 +12186 442658.333 883141.667 +12187 442694.444 835147.222 +12188 442722.222 883388.889 +12189 442722.222 929852.778 +12190 442727.778 1211727.778 +12191 442730.556 925447.222 +12192 442741.667 1231694.444 +12193 442761.111 941872.222 +12194 442763.889 842386.111 +12195 442780.556 724269.444 +12196 442780.556 882719.444 +12197 442783.333 961344.444 +12198 442794.444 739802.778 +12199 442794.444 834902.778 +12200 442797.222 683255.556 +12201 442800.000 883183.333 +12202 442841.667 966852.778 +12203 442858.333 697913.889 +12204 442911.111 1055016.667 +12205 442911.111 1215480.556 +12206 442925.000 939647.222 +12207 442941.667 926688.889 +12208 442944.444 912350.000 +12209 442947.222 908513.889 +12210 442950.000 932686.111 +12211 442972.222 947238.889 +12212 443044.444 927902.778 +12213 443050.000 699775.000 +12214 443061.111 717705.556 +12215 443105.556 697800.000 +12216 443113.889 967980.556 +12217 443125.000 899041.667 +12218 443125.000 944602.778 +12219 443147.222 847647.222 +12220 443200.000 919147.222 +12221 443213.889 889336.111 +12222 443236.111 969261.111 +12223 443244.444 752513.889 +12224 443255.556 938375.000 +12225 443258.333 881627.778 +12226 443294.444 741316.667 +12227 443347.222 886380.556 +12228 443352.778 852150.000 +12229 443358.333 759180.556 +12230 443366.667 754633.333 +12231 443377.778 727566.667 +12232 443477.778 878272.222 +12233 443483.333 1066983.333 +12234 443508.333 898652.778 +12235 443513.889 1172655.556 +12236 443522.222 1037647.222 +12237 443536.111 1003733.333 +12238 443569.444 914202.778 +12239 443580.556 890858.333 +12240 443633.333 982138.889 +12241 443636.111 862050.000 +12242 443636.111 973769.444 +12243 443644.444 971327.778 +12244 443675.000 913163.889 +12245 443683.333 1003505.556 +12246 443730.556 716105.556 +12247 443766.667 1037291.667 +12248 443800.000 1080383.333 +12249 443836.111 898172.222 +12250 443838.889 920327.778 +12251 443841.667 1231086.111 +12252 443875.000 682044.444 +12253 443875.000 975500.000 +12254 443877.778 711736.111 +12255 443894.444 937300.000 +12256 443897.222 1189491.667 +12257 443927.778 887397.222 +12258 443936.111 1229836.111 +12259 443977.778 1227350.000 +12260 444005.556 926236.111 +12261 444019.444 952555.556 +12262 444052.778 729933.333 +12263 444063.889 1043752.778 +12264 444077.778 740875.000 +12265 444097.222 1035086.111 +12266 444108.333 833322.222 +12267 444108.333 853988.889 +12268 444161.111 1189519.444 +12269 444169.444 949252.778 +12270 444177.778 1191125.000 +12271 444202.778 833308.333 +12272 444213.889 841166.667 +12273 444238.889 897802.778 +12274 444258.333 690069.444 +12275 444269.444 1240675.000 +12276 444388.889 935811.111 +12277 444391.667 901244.444 +12278 444411.111 921477.778 +12279 444447.222 885788.889 +12280 444466.667 943950.000 +12281 444469.444 957880.556 +12282 444488.889 880602.778 +12283 444494.444 922666.667 +12284 444508.333 892847.222 +12285 444511.111 908411.111 +12286 444563.889 895438.889 +12287 444583.333 689247.222 +12288 444583.333 875030.556 +12289 444583.333 931613.889 +12290 444611.111 1036380.556 +12291 444633.333 962469.444 +12292 444633.333 1187088.889 +12293 444644.444 889197.222 +12294 444652.778 726850.000 +12295 444669.444 731713.889 +12296 444686.111 711855.556 +12297 444752.778 701886.111 +12298 444758.333 732125.000 +12299 444775.000 884505.556 +12300 444802.778 934283.333 +12301 444813.889 702000.000 +12302 444822.222 899638.889 +12303 444888.889 715697.222 +12304 444891.667 1080555.556 +12305 444905.556 731113.889 +12306 444908.333 1038588.889 +12307 444913.889 731861.111 +12308 444936.111 895586.111 +12309 444983.333 845919.444 +12310 445047.222 723686.111 +12311 445047.222 1142308.333 +12312 445050.000 734805.556 +12313 445069.444 929052.778 +12314 445072.222 964238.889 +12315 445080.556 891305.556 +12316 445150.000 883302.778 +12317 445163.889 1160408.333 +12318 445183.333 989880.556 +12319 445191.667 880197.222 +12320 445194.444 895458.333 +12321 445213.889 994411.111 +12322 445236.111 895744.444 +12323 445258.333 1212119.444 +12324 445263.889 1090558.333 +12325 445283.333 939075.000 +12326 445291.667 947205.556 +12327 445327.778 675988.889 +12328 445336.111 720036.111 +12329 445338.889 704563.889 +12330 445338.889 945261.111 +12331 445366.667 1229058.333 +12332 445386.111 877038.889 +12333 445394.444 951166.667 +12334 445402.778 697225.000 +12335 445402.778 1233663.889 +12336 445430.556 943661.111 +12337 445433.333 684200.000 +12338 445433.333 935758.333 +12339 445469.444 696216.667 +12340 445497.222 913925.000 +12341 445513.889 949841.667 +12342 445519.444 696322.222 +12343 445530.556 942202.778 +12344 445536.111 705513.889 +12345 445600.000 905961.111 +12346 445608.333 705458.333 +12347 445616.667 725988.889 +12348 445625.000 925336.111 +12349 445647.222 1232608.333 +12350 445677.778 916708.333 +12351 445722.222 912272.222 +12352 445736.111 687961.111 +12353 445747.222 969019.444 +12354 445758.333 914700.000 +12355 445855.556 924502.778 +12356 445883.333 695991.667 +12357 445908.333 897672.222 +12358 445927.778 702286.111 +12359 445955.556 751694.444 +12360 445986.111 715116.667 +12361 446002.778 909627.778 +12362 446083.333 940802.778 +12363 446088.889 874325.000 +12364 446088.889 956738.889 +12365 446180.556 754075.000 +12366 446194.444 862263.889 +12367 446205.556 887622.222 +12368 446216.667 1239372.222 +12369 446227.778 937683.333 +12370 446263.889 919655.556 +12371 446269.444 900075.000 +12372 446277.778 893086.111 +12373 446291.667 921922.222 +12374 446336.111 862344.444 +12375 446336.111 1211283.333 +12376 446355.556 726808.333 +12377 446366.667 1231047.222 +12378 446369.444 1240522.222 +12379 446377.778 688455.556 +12380 446377.778 695036.111 +12381 446397.222 731108.333 +12382 446402.778 931433.333 +12383 446497.222 932425.000 +12384 446530.556 1231005.556 +12385 446563.889 832947.222 +12386 446613.889 847147.222 +12387 446622.222 1111033.333 +12388 446688.889 901716.667 +12389 446697.222 749816.667 +12390 446705.556 701516.667 +12391 446713.889 1038516.667 +12392 446722.222 882425.000 +12393 446802.778 911197.222 +12394 446811.111 1230602.778 +12395 446930.556 735625.000 +12396 446941.667 754866.667 +12397 446994.444 734533.333 +12398 447050.000 1228480.556 +12399 447080.556 1000594.444 +12400 447088.889 962761.111 +12401 447130.556 697911.111 +12402 447133.333 934225.000 +12403 447147.222 1034202.778 +12404 447150.000 674619.444 +12405 447197.222 1230091.667 +12406 447213.889 737241.667 +12407 447219.444 1239188.889 +12408 447227.778 970297.222 +12409 447300.000 1164372.222 +12410 447319.444 932175.000 +12411 447319.444 943500.000 +12412 447322.222 924872.222 +12413 447341.667 851758.333 +12414 447369.444 904958.333 +12415 447372.222 946166.667 +12416 447394.444 931255.556 +12417 447402.778 884447.222 +12418 447408.333 890630.556 +12419 447433.333 928522.222 +12420 447438.889 947152.778 +12421 447444.444 688375.000 +12422 447458.333 966805.556 +12423 447480.556 721766.667 +12424 447488.889 928019.444 +12425 447513.889 749947.222 +12426 447538.889 1087566.667 +12427 447541.667 1224769.444 +12428 447577.778 902966.667 +12429 447630.556 856205.556 +12430 447636.111 912769.444 +12431 447636.111 936255.556 +12432 447650.000 697197.222 +12433 447675.000 948952.778 +12434 447677.778 932775.000 +12435 447680.556 939272.222 +12436 447691.667 941513.889 +12437 447716.667 937811.111 +12438 447747.222 1226138.889 +12439 447763.889 949894.444 +12440 447783.333 1178283.333 +12441 447811.111 921458.333 +12442 447822.222 886088.889 +12443 447825.000 693838.889 +12444 447827.778 939133.333 +12445 447869.444 953513.889 +12446 447891.667 952113.889 +12447 447894.444 936019.444 +12448 447905.556 958083.333 +12449 447919.444 950969.444 +12450 447930.556 897030.556 +12451 447963.889 1085058.333 +12452 447966.667 687619.444 +12453 447972.222 1069555.556 +12454 447975.000 698802.778 +12455 447980.556 935266.667 +12456 448008.333 749913.889 +12457 448008.333 1227933.333 +12458 448011.111 687783.333 +12459 448011.111 900791.667 +12460 448047.222 914430.556 +12461 448086.111 1240619.444 +12462 448100.000 955452.778 +12463 448113.889 914983.333 +12464 448116.667 722036.111 +12465 448125.000 920713.889 +12466 448147.222 718808.333 +12467 448272.222 891694.444 +12468 448277.778 929436.111 +12469 448297.222 1227933.333 +12470 448302.778 745138.889 +12471 448341.667 873769.444 +12472 448352.778 692744.444 +12473 448375.000 1083888.889 +12474 448386.111 687058.333 +12475 448408.333 932980.556 +12476 448411.111 1228697.222 +12477 448433.333 1229516.667 +12478 448480.556 930425.000 +12479 448486.111 742952.778 +12480 448486.111 1232327.778 +12481 448508.333 937866.667 +12482 448513.889 1231855.556 +12483 448530.556 887880.556 +12484 448547.222 934705.556 +12485 448586.111 936613.889 +12486 448613.889 926236.111 +12487 448622.222 935305.556 +12488 448644.444 752044.444 +12489 448663.889 930002.778 +12490 448663.889 1234347.222 +12491 448730.556 916908.333 +12492 448738.889 881427.778 +12493 448752.778 1072616.667 +12494 448755.556 919191.667 +12495 448758.333 985183.333 +12496 448777.778 977327.778 +12497 448830.556 686725.000 +12498 448833.333 694480.556 +12499 448833.333 932827.778 +12500 448836.111 931380.556 +12501 448838.889 940413.889 +12502 448872.222 878644.444 +12503 448872.222 896200.000 +12504 448877.778 943694.444 +12505 448897.222 933497.222 +12506 448900.000 883072.222 +12507 448944.444 714963.889 +12508 448955.556 854163.889 +12509 448994.444 971147.222 +12510 449008.333 935888.889 +12511 449022.222 850608.333 +12512 449027.778 927833.333 +12513 449033.333 935661.111 +12514 449033.333 941952.778 +12515 449061.111 669905.556 +12516 449069.444 728069.444 +12517 449086.111 935927.778 +12518 449088.889 1071627.778 +12519 449097.222 896044.444 +12520 449100.000 903155.556 +12521 449111.111 1160977.778 +12522 449133.333 935030.556 +12523 449150.000 935530.556 +12524 449180.556 731247.222 +12525 449194.444 1233158.333 +12526 449250.000 934625.000 +12527 449263.889 913008.333 +12528 449272.222 899633.333 +12529 449280.556 748922.222 +12530 449297.222 935222.222 +12531 449327.778 960541.667 +12532 449338.889 951872.222 +12533 449341.667 686458.333 +12534 449352.778 936319.444 +12535 449361.111 946963.889 +12536 449363.889 722055.556 +12537 449366.667 936658.333 +12538 449369.444 913927.778 +12539 449397.222 935763.889 +12540 449425.000 957233.333 +12541 449430.556 1230338.889 +12542 449461.111 686444.444 +12543 449480.556 911505.556 +12544 449508.333 929763.889 +12545 449511.111 880466.667 +12546 449519.444 910347.222 +12547 449530.556 922911.111 +12548 449530.556 929950.000 +12549 449550.000 953661.111 +12550 449563.889 905975.000 +12551 449563.889 927655.556 +12552 449583.333 1240166.667 +12553 449591.667 896300.000 +12554 449600.000 909369.444 +12555 449611.111 907997.222 +12556 449633.333 735877.778 +12557 449636.111 938469.444 +12558 449638.889 940472.222 +12559 449666.667 923741.667 +12560 449694.444 935138.889 +12561 449713.889 936041.667 +12562 449713.889 1162830.556 +12563 449747.222 927566.667 +12564 449766.667 856505.556 +12565 449788.889 924355.556 +12566 449800.000 932636.111 +12567 449802.778 852111.111 +12568 449808.333 888308.333 +12569 449838.889 925558.333 +12570 449861.111 1229816.667 +12571 449863.889 734469.444 +12572 449866.667 935713.889 +12573 449902.778 1230250.000 +12574 449916.667 931661.111 +12575 449930.556 927566.667 +12576 449938.889 733652.778 +12577 449944.444 724002.778 +12578 449958.333 928791.667 +12579 449969.444 726716.667 +12580 449975.000 917269.444 +12581 449983.333 1202150.000 +12582 449986.111 932055.556 +12583 449991.667 883719.444 +12584 450030.556 903355.556 +12585 450050.000 720994.444 +12586 450052.778 1227819.444 +12587 450061.111 931563.889 +12588 450072.222 936555.556 +12589 450097.222 933488.889 +12590 450097.222 961955.556 +12591 450105.556 934552.778 +12592 450116.667 999552.778 +12593 450158.333 952383.333 +12594 450213.889 927808.333 +12595 450230.556 1020355.556 +12596 450238.889 692902.778 +12597 450269.444 930875.000 +12598 450275.000 846747.222 +12599 450313.889 927927.778 +12600 450322.222 933383.333 +12601 450327.778 933600.000 +12602 450330.556 900738.889 +12603 450350.000 991236.111 +12604 450380.556 933863.889 +12605 450408.333 932627.778 +12606 450419.444 937888.889 +12607 450436.111 920408.333 +12608 450475.000 1016005.556 +12609 450502.778 931563.889 +12610 450533.333 932472.222 +12611 450541.667 929563.889 +12612 450544.444 877491.667 +12613 450563.889 928058.333 +12614 450575.000 930736.111 +12615 450586.111 698827.778 +12616 450586.111 921722.222 +12617 450608.333 940730.556 +12618 450616.667 834327.778 +12619 450650.000 880341.667 +12620 450650.000 939108.333 +12621 450655.556 932016.667 +12622 450680.556 1227988.889 +12623 450697.222 929513.889 +12624 450700.000 852644.444 +12625 450725.000 934555.556 +12626 450758.333 941897.222 +12627 450761.111 933325.000 +12628 450788.889 1234847.222 +12629 450791.667 931469.444 +12630 450816.667 943066.667 +12631 450847.222 930097.222 +12632 450861.111 932630.556 +12633 450883.333 937341.667 +12634 450900.000 929722.222 +12635 450941.667 933561.111 +12636 450952.778 935472.222 +12637 450994.444 1233936.111 +12638 451000.000 876305.556 +12639 451002.778 914886.111 +12640 451027.778 930788.889 +12641 451050.000 932083.333 +12642 451077.778 876141.667 +12643 451077.778 932377.778 +12644 451083.333 1228963.889 +12645 451158.333 1232061.111 +12646 451194.444 934022.222 +12647 451200.000 932875.000 +12648 451219.444 950430.556 +12649 451230.556 925363.889 +12650 451244.444 926733.333 +12651 451272.222 945277.778 +12652 451313.889 856166.667 +12653 451386.111 903400.000 +12654 451388.889 947777.778 +12655 451402.778 891522.222 +12656 451427.778 846602.778 +12657 451438.889 1228541.667 +12658 451475.000 1225758.333 +12659 451486.111 931513.889 +12660 451505.556 946827.778 +12661 451558.333 936661.111 +12662 451569.444 674052.778 +12663 451580.556 851241.667 +12664 451600.000 929930.556 +12665 451602.778 930886.111 +12666 451608.333 932347.222 +12667 451672.222 911491.667 +12668 451688.889 693850.000 +12669 451719.444 938744.444 +12670 451758.333 1138950.000 +12671 451805.556 896833.333 +12672 451825.000 1228066.667 +12673 451833.333 692275.000 +12674 451858.333 1092461.111 +12675 451872.222 871208.333 +12676 451888.889 672791.667 +12677 451888.889 933972.222 +12678 451930.556 953202.778 +12679 451969.444 960194.444 +12680 451977.778 933869.444 +12681 452086.111 1178641.667 +12682 452102.778 1231975.000 +12683 452163.889 1126366.667 +12684 452166.667 850138.889 +12685 452191.667 966352.778 +12686 452208.333 1230750.000 +12687 452291.667 940016.667 +12688 452311.111 1227547.222 +12689 452325.000 880075.000 +12690 452330.556 949397.222 +12691 452333.333 932911.111 +12692 452344.444 1201838.889 +12693 452377.778 936541.667 +12694 452386.111 686641.667 +12695 452436.111 997766.667 +12696 452438.889 935147.222 +12697 452444.444 1231136.111 +12698 452519.444 922711.111 +12699 452536.111 689863.889 +12700 452627.778 941241.667 +12701 452630.556 1226913.889 +12702 452661.111 932341.667 +12703 452783.333 1230097.222 +12704 452788.889 929850.000 +12705 452897.222 1223325.000 +12706 452916.667 964625.000 +12707 452944.444 1231752.778 +12708 452958.333 1089130.556 +12709 453000.000 1227725.000 +12710 453002.778 1229719.444 +12711 453011.111 949438.889 +12712 453038.889 935669.444 +12713 453047.222 964444.444 +12714 453055.556 937938.889 +12715 453069.444 923619.444 +12716 453141.667 916508.333 +12717 453144.444 1073625.000 +12718 453150.000 955997.222 +12719 453152.778 944083.333 +12720 453175.000 902083.333 +12721 453180.556 852583.333 +12722 453194.444 932022.222 +12723 453205.556 927047.222 +12724 453247.222 1180866.667 +12725 453261.111 945458.333 +12726 453319.444 973047.222 +12727 453322.222 975197.222 +12728 453325.000 937458.333 +12729 453363.889 929969.444 +12730 453416.667 1231861.111 +12731 453488.889 1117288.889 +12732 453533.333 1195566.667 +12733 453544.444 1172286.111 +12734 453561.111 926333.333 +12735 453566.667 1228388.889 +12736 453575.000 842238.889 +12737 453575.000 1226055.556 +12738 453622.222 685055.556 +12739 453658.333 1226111.111 +12740 453708.333 879522.222 +12741 453733.333 849552.778 +12742 453736.111 928897.222 +12743 453805.556 947116.667 +12744 453808.333 1225936.111 +12745 453841.667 1227627.778 +12746 453894.444 928477.778 +12747 453933.333 938766.667 +12748 453944.444 921422.222 +12749 453975.000 1222602.778 +12750 453980.556 929872.222 +12751 454013.889 918488.889 +12752 454019.444 926522.222 +12753 454022.222 1227516.667 +12754 454086.111 917438.889 +12755 454086.111 968575.000 +12756 454152.778 876075.000 +12757 454169.444 920327.778 +12758 454208.333 1226694.444 +12759 454213.889 838183.333 +12760 454222.222 1163144.444 +12761 454263.889 1172777.778 +12762 454313.889 1227702.778 +12763 454316.667 849919.444 +12764 454438.889 1054069.444 +12765 454441.667 847866.667 +12766 454444.444 990288.889 +12767 454463.889 1226380.556 +12768 454466.667 1227577.778 +12769 454469.444 1225291.667 +12770 454475.000 980983.333 +12771 454513.889 925538.889 +12772 454522.222 924544.444 +12773 454530.556 996536.111 +12774 454533.333 1211294.444 +12775 454541.667 945180.556 +12776 454555.556 1121961.111 +12777 454558.333 944286.111 +12778 454563.889 1238427.778 +12779 454569.444 912730.556 +12780 454594.444 695911.111 +12781 454602.778 964333.333 +12782 454630.556 911038.889 +12783 454647.222 984861.111 +12784 454686.111 1226083.333 +12785 454711.111 897297.222 +12786 454719.444 943405.556 +12787 454833.333 1188288.889 +12788 454836.111 1227538.889 +12789 454852.778 929616.667 +12790 454852.778 1089697.222 +12791 454872.222 1228025.000 +12792 454902.778 932475.000 +12793 454944.444 1228658.333 +12794 454975.000 957963.889 +12795 454983.333 1224302.778 +12796 454988.889 1227633.333 +12797 455011.111 951241.667 +12798 455041.667 1225363.889 +12799 455050.000 1227972.222 +12800 455061.111 917380.556 +12801 455063.889 1000316.667 +12802 455113.889 929800.000 +12803 455200.000 1230586.111 +12804 455200.000 1231094.444 +12805 455227.778 1238880.556 +12806 455230.556 1229886.111 +12807 455236.111 1226750.000 +12808 455261.111 925083.333 +12809 455322.222 920191.667 +12810 455344.444 1224175.000 +12811 455372.222 1004275.000 +12812 455394.444 1223861.111 +12813 455461.111 902863.889 +12814 455527.778 847838.889 +12815 455572.222 942238.889 +12816 455597.222 1225591.667 +12817 455650.000 1179163.889 +12818 455691.667 964341.667 +12819 455700.000 935813.889 +12820 455702.778 1175272.222 +12821 455716.667 961730.556 +12822 455719.444 889027.778 +12823 455727.778 932241.667 +12824 455761.111 924825.000 +12825 455827.778 1223522.222 +12826 455861.111 959136.111 +12827 455863.889 929744.444 +12828 455872.222 1223983.333 +12829 455919.444 941658.333 +12830 455952.778 968330.556 +12831 455972.222 1229922.222 +12832 456091.667 944513.889 +12833 456136.111 1239419.444 +12834 456144.444 955308.333 +12835 456216.667 942066.667 +12836 456275.000 685750.000 +12837 456300.000 945697.222 +12838 456366.667 894119.444 +12839 456366.667 1092513.889 +12840 456388.889 1226602.778 +12841 456469.444 844744.444 +12842 456502.778 953894.444 +12843 456572.222 687102.778 +12844 456591.667 924669.444 +12845 456625.000 1105602.778 +12846 456627.778 946897.222 +12847 456647.222 939094.444 +12848 456647.222 970494.444 +12849 456666.667 1225597.222 +12850 456691.667 1087708.333 +12851 456700.000 1218894.444 +12852 456716.667 1226616.667 +12853 456722.222 1187875.000 +12854 456747.222 948072.222 +12855 456797.222 1110377.778 +12856 456855.556 929652.778 +12857 456966.667 904002.778 +12858 457055.556 1215202.778 +12859 457150.000 1214633.333 +12860 457169.444 1201997.222 +12861 457227.778 931705.556 +12862 457227.778 989405.556 +12863 457277.778 1214852.778 +12864 457311.111 944697.222 +12865 457325.000 1076113.889 +12866 457375.000 949522.222 +12867 457394.444 919252.778 +12868 457425.000 1191944.444 +12869 457452.778 870644.444 +12870 457544.444 1228763.889 +12871 457558.333 936541.667 +12872 457575.000 929622.222 +12873 457694.444 996191.667 +12874 457713.889 879947.222 +12875 457761.111 1111761.111 +12876 457763.889 926825.000 +12877 457805.556 1192161.111 +12878 457811.111 1225322.222 +12879 457833.333 1085000.000 +12880 457838.889 847277.778 +12881 457858.333 923808.333 +12882 457869.444 879036.111 +12883 457916.667 977505.556 +12884 457950.000 880719.444 +12885 458044.444 964988.889 +12886 458086.111 961430.556 +12887 458119.444 1184894.444 +12888 458138.889 1184236.111 +12889 458144.444 1008100.000 +12890 458152.778 1227413.889 +12891 458202.778 880658.333 +12892 458208.333 1208205.556 +12893 458225.000 918891.667 +12894 458261.111 929683.333 +12895 458294.444 957916.667 +12896 458300.000 942933.333 +12897 458347.222 1000688.889 +12898 458350.000 1099547.222 +12899 458400.000 1196994.444 +12900 458405.556 1192883.333 +12901 458405.556 1228405.556 +12902 458527.778 870216.667 +12903 458566.667 1113316.667 +12904 458588.889 1231916.667 +12905 458661.111 1224050.000 +12906 458669.444 951519.444 +12907 458708.333 1120966.667 +12908 458769.444 932936.111 +12909 458775.000 923672.222 +12910 458841.667 1066230.556 +12911 458852.778 953772.222 +12912 458888.889 1045522.222 +12913 458902.778 1228058.333 +12914 458919.444 1239602.778 +12915 458958.333 1194902.778 +12916 459047.222 1227427.778 +12917 459172.222 892441.667 +12918 459175.000 1193413.889 +12919 459266.667 1161213.889 +12920 459344.444 904413.889 +12921 459408.333 1021588.889 +12922 459577.778 862461.111 +12923 459747.222 948652.778 +12924 459763.889 943622.222 +12925 459816.667 941044.444 +12926 459933.333 1239213.889 +12927 459941.667 959763.889 +12928 459963.889 684466.667 +12929 460013.889 1026363.889 +12930 460027.778 985266.667 +12931 460041.667 956825.000 +12932 460086.111 1228433.333 +12933 460113.889 929441.667 +12934 460130.556 914844.444 +12935 460227.778 1141772.222 +12936 460244.444 1239100.000 +12937 460313.889 993786.111 +12938 460341.667 1125350.000 +12939 460494.444 1183872.222 +12940 460522.222 1184016.667 +12941 460641.667 886313.889 +12942 460647.222 1183419.444 +12943 460697.222 969013.889 +12944 460705.556 936675.000 +12945 460755.556 971513.889 +12946 460811.111 886269.444 +12947 460858.333 948655.556 +12948 460891.667 1229347.222 +12949 460911.111 945033.333 +12950 460922.222 1006286.111 +12951 460927.778 886422.222 +12952 460980.556 883338.889 +12953 460994.444 918247.222 +12954 461013.889 1232055.556 +12955 461077.778 976361.111 +12956 461261.111 678408.333 +12957 461302.778 949483.333 +12958 461311.111 928672.222 +12959 461336.111 1001611.111 +12960 461380.556 934705.556 +12961 461383.333 1229369.444 +12962 461386.111 980900.000 +12963 461450.000 1159769.444 +12964 461469.444 1229072.222 +12965 461530.556 953286.111 +12966 461644.444 1229402.778 +12967 461650.000 950388.889 +12968 461652.778 1239225.000 +12969 461830.556 1033944.444 +12970 461875.000 1229041.667 +12971 461880.556 1238300.000 +12972 462002.778 1239502.778 +12973 462033.333 1233819.444 +12974 462069.444 1197677.778 +12975 462113.889 1191361.111 +12976 462150.000 1199955.556 +12977 462258.333 976622.222 +12978 462272.222 1160283.333 +12979 462286.111 1190994.444 +12980 462350.000 1162397.222 +12981 462366.667 1121200.000 +12982 462413.889 1164661.111 +12983 462469.444 1141594.444 +12984 462511.111 1199005.556 +12985 462591.667 974558.333 +12986 462633.333 1194866.667 +12987 462636.111 965877.778 +12988 462652.778 966055.556 +12989 462663.889 1066772.222 +12990 462666.667 950625.000 +12991 462666.667 971319.444 +12992 462666.667 1002325.000 +12993 462705.556 1181522.222 +12994 462752.778 1229063.889 +12995 462805.556 957133.333 +12996 462811.111 874408.333 +12997 462830.556 960772.222 +12998 462858.333 1192833.333 +12999 463011.111 989541.667 +13000 463044.444 1193602.778 +13001 463191.667 1115200.000 +13002 463216.667 954450.000 +13003 463255.556 906608.333 +13004 463322.222 1132933.333 +13005 463394.444 1170472.222 +13006 463422.222 1201861.111 +13007 463433.333 942863.889 +13008 463525.000 1240530.556 +13009 463533.333 918222.222 +13010 463550.000 855094.444 +13011 463555.556 947919.444 +13012 463572.222 982941.667 +13013 463580.556 942005.556 +13014 463591.667 987152.778 +13015 463669.444 1042841.667 +13016 463725.000 1023266.667 +13017 463761.111 1159372.222 +13018 463775.000 1203075.000 +13019 463958.333 1127291.667 +13020 463983.333 950144.444 +13021 464022.222 1202608.333 +13022 464038.889 1018455.556 +13023 464050.000 1168038.889 +13024 464080.556 943555.556 +13025 464083.333 1058400.000 +13026 464111.111 866477.778 +13027 464163.889 1170441.667 +13028 464166.667 1170166.667 +13029 464280.556 902458.333 +13030 464355.556 1098336.111 +13031 464400.000 1228455.556 +13032 464416.667 976808.333 +13033 464425.000 951358.333 +13034 464452.778 1085411.111 +13035 464477.778 1204191.667 +13036 464497.222 901863.889 +13037 464541.667 927616.667 +13038 464547.222 901708.333 +13039 464736.111 938986.111 +13040 464750.000 1176016.667 +13041 464752.778 899397.222 +13042 464775.000 939775.000 +13043 464794.444 1162541.667 +13044 464813.889 900527.778 +13045 464822.222 939575.000 +13046 464855.556 943602.778 +13047 464886.111 876675.000 +13048 464911.111 1157980.556 +13049 464913.889 1229366.667 +13050 464947.222 873541.667 +13051 464991.667 876116.667 +13052 465083.333 997708.333 +13053 465100.000 1140922.222 +13054 465150.000 916997.222 +13055 465180.556 953758.333 +13056 465205.556 942883.333 +13057 465330.556 937100.000 +13058 465391.667 1028677.778 +13059 465436.111 873952.778 +13060 465483.333 1109013.889 +13061 465508.333 1169244.444 +13062 465538.889 1203819.444 +13063 465566.667 874372.222 +13064 465575.000 1204738.889 +13065 465586.111 1222738.889 +13066 465622.222 921472.222 +13067 465705.556 1232961.111 +13068 465708.333 960827.778 +13069 465747.222 1229069.444 +13070 465788.889 1167050.000 +13071 465838.889 917988.889 +13072 465897.222 1119147.222 +13073 465925.000 908836.111 +13074 465927.778 1120352.778 +13075 465944.444 955722.222 +13076 466022.222 1205047.222 +13077 466030.556 943091.667 +13078 466063.889 1204386.111 +13079 466180.556 1205519.444 +13080 466230.556 976011.111 +13081 466300.000 950886.111 +13082 466486.111 970166.667 +13083 466522.222 964194.444 +13084 466541.667 1205288.889 +13085 466622.222 1229627.778 +13086 466636.111 1188600.000 +13087 466638.889 924247.222 +13088 466733.333 908947.222 +13089 466811.111 680163.889 +13090 466866.667 1237316.667 +13091 467022.222 1207541.667 +13092 467066.667 924280.556 +13093 467163.889 1229530.556 +13094 467180.556 944038.889 +13095 467208.333 921038.889 +13096 467216.667 924591.667 +13097 467280.556 957005.556 +13098 467311.111 939577.778 +13099 467311.111 1206983.333 +13100 467313.889 1171786.111 +13101 467325.000 1169991.667 +13102 467352.778 1229877.778 +13103 467369.444 1167686.111 +13104 467472.222 922252.778 +13105 467538.889 895838.889 +13106 467538.889 950977.778 +13107 467566.667 884527.778 +13108 467588.889 1140800.000 +13109 467722.222 678344.444 +13110 467786.111 884888.889 +13111 467833.333 921063.889 +13112 467900.000 681580.556 +13113 467911.111 1172494.444 +13114 467930.556 1053116.667 +13115 467991.667 1228686.111 +13116 467994.444 1165550.000 +13117 468083.333 1007833.333 +13118 468108.333 908180.556 +13119 468150.000 1018294.444 +13120 468172.222 958450.000 +13121 468261.111 1191741.667 +13122 468266.667 1008891.667 +13123 468405.556 1232311.111 +13124 468450.000 1014108.333 +13125 468547.222 999155.556 +13126 468569.444 1228516.667 +13127 468605.556 680125.000 +13128 468633.333 1140475.000 +13129 468675.000 1222652.778 +13130 468708.333 1139436.111 +13131 468711.111 893138.889 +13132 468722.222 1139930.556 +13133 468738.889 967672.222 +13134 468750.000 969000.000 +13135 468752.778 965786.111 +13136 468766.667 967030.556 +13137 468772.222 967894.444 +13138 468791.667 1027891.667 +13139 468802.778 1173633.333 +13140 468808.333 963163.889 +13141 468838.889 1023152.778 +13142 468852.778 1031991.667 +13143 468863.889 960941.667 +13144 468883.333 1226872.222 +13145 468902.778 1241027.778 +13146 468938.889 992994.444 +13147 469005.556 972108.333 +13148 469005.556 1020450.000 +13149 469011.111 1196294.444 +13150 469086.111 678263.889 +13151 469102.778 1170747.222 +13152 469105.556 987080.556 +13153 469180.556 1040038.889 +13154 469216.667 1168972.222 +13155 469222.222 950583.333 +13156 469233.333 980027.778 +13157 469291.667 929194.444 +13158 469422.222 1226047.222 +13159 469555.556 1237725.000 +13160 469630.556 1241638.889 +13161 469677.778 1190386.111 +13162 469722.222 1186141.667 +13163 469736.111 1236911.111 +13164 469811.111 1238880.556 +13165 469813.889 1236013.889 +13166 469833.333 1204158.333 +13167 469850.000 1041877.778 +13168 469933.333 935983.333 +13169 469966.667 1205466.667 +13170 470036.111 1234075.000 +13171 470075.000 1229080.556 +13172 470080.556 1171400.000 +13173 470227.778 916705.556 +13174 470344.444 1228219.444 +13175 470380.556 1228994.444 +13176 470533.333 1232641.667 +13177 470625.000 1094275.000 +13178 470700.000 886430.556 +13179 470788.889 962586.111 +13180 470969.444 1226300.000 +13181 470980.556 1222030.556 +13182 471013.889 945869.444 +13183 471041.667 1224333.333 +13184 471052.778 1047119.444 +13185 471163.889 1012991.667 +13186 471219.444 885688.889 +13187 471269.444 885808.333 +13188 471275.000 1183788.889 +13189 471302.778 1192769.444 +13190 471536.111 1102175.000 +13191 471555.556 1224327.778 +13192 471572.222 679358.333 +13193 471586.111 1007830.556 +13194 471633.333 1220255.556 +13195 471700.000 1226013.889 +13196 471733.333 884291.667 +13197 471772.222 1221852.778 +13198 471911.111 1222894.444 +13199 471916.667 1148908.333 +13200 471941.667 884072.222 +13201 471955.556 1209380.556 +13202 472033.333 1222391.667 +13203 472044.444 1219902.778 +13204 472155.556 1230961.111 +13205 472233.333 1170711.111 +13206 472236.111 1209919.444 +13207 472283.333 934888.889 +13208 472344.444 1198513.889 +13209 472358.333 1225491.667 +13210 472361.111 1173688.889 +13211 472372.222 935300.000 +13212 472375.000 884430.556 +13213 472394.444 1223558.333 +13214 472397.222 1225147.222 +13215 472466.667 884538.889 +13216 472483.333 1223116.667 +13217 472530.556 1224430.556 +13218 472586.111 685900.000 +13219 472602.778 962586.111 +13220 472633.333 1017775.000 +13221 472647.222 1222488.889 +13222 472711.111 1116997.222 +13223 472791.667 1222508.333 +13224 472863.889 1019222.222 +13225 472888.889 934275.000 +13226 472891.667 1010286.111 +13227 472944.444 912572.222 +13228 472944.444 1016222.222 +13229 472955.556 934186.111 +13230 472994.444 1225069.444 +13231 472997.222 965150.000 +13232 473075.000 1222272.222 +13233 473088.889 1220019.444 +13234 473152.778 959683.333 +13235 473177.778 1195525.000 +13236 473205.556 932983.333 +13237 473211.111 1013811.111 +13238 473294.444 1225788.889 +13239 473330.556 937925.000 +13240 473333.333 1186897.222 +13241 473352.778 1168875.000 +13242 473458.333 1055916.667 +13243 473516.667 968283.333 +13244 473719.444 1027536.111 +13245 473794.444 946038.889 +13246 473802.778 931680.556 +13247 473811.111 1222336.111 +13248 473852.778 1171705.556 +13249 473861.111 1109247.222 +13250 473894.444 1194894.444 +13251 473997.222 930722.222 +13252 474019.444 1223230.556 +13253 474038.889 970616.667 +13254 474158.333 1202919.444 +13255 474236.111 1203091.667 +13256 474363.889 1223394.444 +13257 474444.444 981236.111 +13258 474497.222 991258.333 +13259 474563.889 1011366.667 +13260 474602.778 1148819.444 +13261 474625.000 925397.222 +13262 474702.778 1158008.333 +13263 474705.556 1223455.556 +13264 474736.111 948800.000 +13265 474741.667 1159269.444 +13266 474741.667 1222597.222 +13267 474811.111 1182533.333 +13268 474830.556 1222158.333 +13269 474844.444 1222933.333 +13270 474858.333 1004427.778 +13271 474875.000 1175747.222 +13272 474888.889 924647.222 +13273 474891.667 928836.111 +13274 474936.111 927777.778 +13275 474958.333 1217855.556 +13276 474980.556 973241.667 +13277 474983.333 973700.000 +13278 475000.000 1113000.000 +13279 475061.111 1159983.333 +13280 475141.667 978355.556 +13281 475197.222 921383.333 +13282 475200.000 1008897.222 +13283 475216.667 953980.556 +13284 475225.000 1204686.111 +13285 475233.333 925363.889 +13286 475236.111 1226230.556 +13287 475288.889 1141005.556 +13288 475288.889 1218241.667 +13289 475300.000 922369.444 +13290 475302.778 1220313.889 +13291 475325.000 926233.333 +13292 475330.556 923400.000 +13293 475361.111 962800.000 +13294 475383.333 1161183.333 +13295 475405.556 1226350.000 +13296 475411.111 1221752.778 +13297 475427.778 1161805.556 +13298 475536.111 1226633.333 +13299 475605.556 1115450.000 +13300 475669.444 1221572.222 +13301 475675.000 1226313.889 +13302 475708.333 1222208.333 +13303 475730.556 1176811.111 +13304 475763.889 957511.111 +13305 475830.556 1227072.222 +13306 475850.000 1225975.000 +13307 475963.889 1206602.778 +13308 475972.222 1153433.333 +13309 476000.000 1226916.667 +13310 476063.889 1223308.333 +13311 476091.667 1146677.778 +13312 476091.667 1226538.889 +13313 476105.556 1221994.444 +13314 476113.889 1192911.111 +13315 476147.222 1119794.444 +13316 476211.111 1222263.889 +13317 476225.000 1220669.444 +13318 476247.222 1225200.000 +13319 476319.444 1222166.667 +13320 476369.444 958861.111 +13321 476397.222 974530.556 +13322 476447.222 1175922.222 +13323 476463.889 1222161.111 +13324 476472.222 1200700.000 +13325 476480.556 1219127.778 +13326 476483.333 1170913.889 +13327 476491.667 996288.889 +13328 476522.222 1014152.778 +13329 476541.667 1181488.889 +13330 476569.444 1171952.778 +13331 476569.444 1172822.222 +13332 476575.000 1172388.889 +13333 476588.889 1174250.000 +13334 476675.000 960097.222 +13335 476741.667 1221202.778 +13336 476777.778 1167794.444 +13337 476800.000 991375.000 +13338 476813.889 1172816.667 +13339 476816.667 1222075.000 +13340 476919.444 954308.333 +13341 476936.111 1141622.222 +13342 477033.333 1222058.333 +13343 477086.111 919444.444 +13344 477166.667 1041558.333 +13345 477180.556 1169505.556 +13346 477297.222 1167691.667 +13347 477313.889 1225511.111 +13348 477330.556 945483.333 +13349 477341.667 975663.889 +13350 477361.111 1226452.778 +13351 477425.000 1219844.444 +13352 477505.556 903341.667 +13353 477569.444 1222797.222 +13354 477575.000 1222427.778 +13355 477588.889 1187044.444 +13356 477600.000 1222044.444 +13357 477613.889 1223450.000 +13358 477638.889 981769.444 +13359 477661.111 1167855.556 +13360 477697.222 999350.000 +13361 477736.111 971094.444 +13362 477741.667 966077.778 +13363 477847.222 1222730.556 +13364 477883.333 1223075.000 +13365 477963.889 1223816.667 +13366 478022.222 1032827.778 +13367 478055.556 922744.444 +13368 478108.333 1223761.111 +13369 478125.000 1168955.556 +13370 478138.889 1126791.667 +13371 478200.000 1106722.222 +13372 478211.111 1223138.889 +13373 478222.222 1222808.333 +13374 478391.667 958541.667 +13375 478411.111 1200152.778 +13376 478525.000 926894.444 +13377 478555.556 1219697.222 +13378 478563.889 1040444.444 +13379 478569.444 1216958.333 +13380 478627.778 1218152.778 +13381 478822.222 962738.889 +13382 479033.333 918669.444 +13383 479066.667 976263.889 +13384 479130.556 1220969.444 +13385 479188.889 973647.222 +13386 479252.778 970325.000 +13387 479300.000 970241.667 +13388 479325.000 1190369.444 +13389 479416.667 1190022.222 +13390 479447.222 1223033.333 +13391 479505.556 1243841.667 +13392 479533.333 1021344.444 +13393 479625.000 995297.222 +13394 479655.556 1189750.000 +13395 479663.889 1168675.000 +13396 479772.222 1024963.889 +13397 479791.667 1222008.333 +13398 480083.333 1196700.000 +13399 480402.778 1224050.000 +13400 480427.778 983358.333 +13401 480511.111 1199022.222 +13402 480519.444 1221758.333 +13403 480561.111 1009288.889 +13404 480633.333 1140716.667 +13405 480797.222 1231005.556 +13406 480841.667 1219675.000 +13407 480905.556 1056400.000 +13408 480961.111 1197794.444 +13409 480980.556 1090480.556 +13410 481127.778 988647.222 +13411 481130.556 1051977.778 +13412 481172.222 1227591.667 +13413 481183.333 1234294.444 +13414 481191.667 961808.333 +13415 481333.333 1036333.333 +13416 481444.444 1045163.889 +13417 481702.778 1119452.778 +13418 481786.111 1101113.889 +13419 481808.333 1170358.333 +13420 481958.333 1143119.444 +13421 481966.667 967725.000 +13422 481969.444 1066361.111 +13423 481988.889 1221238.889 +13424 482200.000 1226850.000 +13425 482258.333 1142752.778 +13426 482325.000 1012958.333 +13427 482363.889 1011330.556 +13428 482413.889 1223694.444 +13429 482555.556 1216002.778 +13430 482752.778 1014283.333 +13431 482763.889 1177144.444 +13432 482766.667 1165522.222 +13433 482888.889 994372.222 +13434 482916.667 973711.111 +13435 482933.333 1226419.444 +13436 483077.778 1122488.889 +13437 483172.222 1023900.000 +13438 483327.778 968205.556 +13439 483444.444 1031647.222 +13440 483458.333 1004050.000 +13441 483597.222 1078736.111 +13442 483613.889 1195822.222 +13443 483636.111 1201211.111 +13444 483688.889 999958.333 +13445 483725.000 1141805.556 +13446 483883.333 1155550.000 +13447 483925.000 1224936.111 +13448 483972.222 1029377.778 +13449 483986.111 977408.333 +13450 483988.889 935555.556 +13451 484111.111 1143366.667 +13452 484111.111 1195263.889 +13453 484122.222 974102.778 +13454 484213.889 1223327.778 +13455 484500.000 968722.222 +13456 484633.333 1158886.111 +13457 484758.333 1223241.667 +13458 484866.667 992094.444 +13459 485038.889 1222361.111 +13460 485052.778 1118561.111 +13461 485105.556 1109666.667 +13462 485127.778 1226113.889 +13463 485333.333 1087833.333 +13464 485344.444 1230158.333 +13465 485394.444 1217450.000 +13466 485466.667 1179044.444 +13467 485500.000 1096833.333 +13468 485569.444 1130125.000 +13469 485711.111 971775.000 +13470 485775.000 965202.778 +13471 485866.667 933988.889 +13472 485900.000 1092305.556 +13473 486011.111 934108.333 +13474 486108.333 1180547.222 +13475 486330.556 1123252.778 +13476 486483.333 1187366.667 +13477 486608.333 998411.111 +13478 486747.222 1020822.222 +13479 486913.889 1163152.778 +13480 487005.556 961813.889 +13481 487052.778 1194383.333 +13482 487125.000 945997.222 +13483 487411.111 1174161.111 +13484 487458.333 1224005.556 +13485 487597.222 1224869.444 +13486 487600.000 983677.778 +13487 487633.333 1015127.778 +13488 487744.444 969461.111 +13489 487747.222 1045619.444 +13490 487925.000 1054202.778 +13491 487938.889 976219.444 +13492 488030.556 1022455.556 +13493 488130.556 1000605.556 +13494 488272.222 1004452.778 +13495 488391.667 997444.444 +13496 488461.111 957625.000 +13497 488466.667 1225897.222 +13498 488577.778 996175.000 +13499 488800.000 1150525.000 +13500 489052.778 953141.667 +13501 489094.444 1010202.778 +13502 489141.667 1032944.444 +13503 489202.778 1223413.889 +13504 489233.333 979177.778 +13505 489391.667 1194344.444 +13506 489466.667 1224508.333 +13507 489663.889 972433.333 +13508 489938.889 1227458.333 +13509 490000.000 1222636.111 +EOF \ No newline at end of file diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/city_swap.cpp b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/city_swap.cpp new file mode 100644 index 000000000..e47a4e31b --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/city_swap.cpp @@ -0,0 +1,50 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include + +#include "city_swap.h" + +bool CitySwap :: operator () (Route & __route) +{ + + std :: swap (__route [rng.random (__route.size ())], + __route [rng.random (__route.size ())]) ; + + __route.invalidate () ; + + return true ; +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/city_swap.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/city_swap.h new file mode 100644 index 000000000..eda897f0f --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/city_swap.h @@ -0,0 +1,55 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef city_swap_h +#define city_swap_h + +#include + +#include "route.h" + +/** Its swaps two vertices + randomly choosen */ +class CitySwap : public eoMonOp + { + + public : + + bool operator () (Route & __route) ; + + } ; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/edge_xover.cpp b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/edge_xover.cpp new file mode 100644 index 000000000..a8b6a8532 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/edge_xover.cpp @@ -0,0 +1,169 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include + +#include + +#include "edge_xover.h" +#include "route_valid.h" + +#define MAXINT 1000000 + +void +EdgeXover :: build_map (const Route & __par1, const Route & __par2) +{ + + unsigned int len = __par1.size () ; + + /* Initialization */ + _map.clear () ; + _map.resize (len) ; + + for (unsigned int i = 0 ; i < len ; i ++) + { + _map [__par1 [i]].insert (__par1 [(i + 1) % len]) ; + _map [__par2 [i]].insert (__par2 [(i + 1) % len]) ; + _map [__par1 [i]].insert (__par1 [(i - 1 + len) % len]) ; + _map [__par2 [i]].insert (__par2 [(i - 1 + len) % len]) ; + } + + visited.clear () ; + visited.resize (len, false) ; +} + +void +EdgeXover :: remove_entry (unsigned int __vertex, std :: vector > & __map) + { + + std :: set & neigh = __map [__vertex] ; + + for (std :: set :: iterator it = neigh.begin () ; it != neigh.end () ; it ++) + { + __map [* it].erase (__vertex) ; + } + + } + +void +EdgeXover :: add_vertex (unsigned int __vertex, Route & __child) +{ + visited [__vertex] = true ; + __child.push_back (__vertex) ; + remove_entry (__vertex, _map) ; /* Removing entries */ +} + +void +EdgeXover :: cross (const Route & __par1, const Route & __par2, Route & __child) +{ + + build_map (__par1, __par2) ; + + unsigned int len = __par1.size () ; + + /* Go ! */ + __child.clear () ; + + unsigned int cur_vertex = rng.random (len) ; + + add_vertex (cur_vertex, __child) ; + + for (unsigned int i = 1 ; i < len ; i ++) + { + + unsigned int len_min_entry = MAXINT ; + + std :: set & neigh = _map [cur_vertex] ; + + for (std :: set :: iterator it = neigh.begin () ; it != neigh.end () ; it ++) + { + unsigned int l = _map [* it].size () ; + if (len_min_entry > l) + { + len_min_entry = l ; + } + } + + std :: vector cand ; /* Candidates */ + + for (std :: set :: iterator it = neigh.begin () ; it != neigh.end () ; it ++) + { + unsigned int l = _map [* it].size () ; + if (len_min_entry == l) + { + cand.push_back (* it) ; + } + } + + if (! cand.size ()) + { + + /* Oh no ! Implicit mutation */ + for (unsigned int j = 0 ; j < len ; j ++) + { + if (! visited [j]) + { + cand.push_back (j) ; + } + } + } + + cur_vertex = cand [rng.random (cand.size ())] ; + + add_vertex (cur_vertex, __child) ; + } +} + +bool +EdgeXover :: operator () (Route & __route1, Route & __route2) +{ + + // Init. copy + Route par [2] ; + par [0] = __route1 ; + par [1] = __route2 ; + + cross (par [0], par [1], __route1) ; + cross (par [1], par [0], __route2) ; + + assert (valid (__route1)) ; + assert (valid (__route2)) ; + + __route1.invalidate () ; + __route2.invalidate () ; + + return true ; +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/edge_xover.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/edge_xover.h new file mode 100644 index 000000000..3e97d6d48 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/edge_xover.h @@ -0,0 +1,72 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef edge_xover_h +#define edge_xover_h + +#include +#include + +#include + +#include "route.h" + +/** Edge Crossover */ +class EdgeXover : public eoQuadOp + { + + public : + + bool operator () (Route & __route1, Route & __route2) ; + + private : + + void cross (const Route & __par1, const Route & __par2, Route & __child) ; /* Binary */ + + void remove_entry (unsigned int __vertex, std :: vector > & __map) ; + /* Updating the map of entries */ + + void build_map (const Route & __par1, const Route & __par2) ; + + void add_vertex (unsigned int __vertex, Route & __child) ; + + std :: vector > _map ; /* The handled map */ + + std :: vector visited ; /* Vertices that are already visited */ + + } ; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/graph.cpp b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/graph.cpp new file mode 100644 index 000000000..92e185704 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/graph.cpp @@ -0,0 +1,210 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include +#include +#include + +#include "graph.h" + +namespace Graph + { + + static std :: vector > vectCoord ; // Coordinates + + static std :: vector > dist ; // Distances Mat. + + unsigned size () + { + return dist.size () ; + } + + void computeDistances () + { + + // Dim. + unsigned int numCities = vectCoord.size () ; + dist.resize (numCities) ; + for (unsigned int i = 0 ; i < dist.size () ; i ++) + { + dist [i].resize (numCities) ; + } + + // Computations. + for (unsigned int i = 0 ; i < dist.size () ; i ++) + { + for (unsigned int j = i + 1 ; j < dist.size () ; j ++) + { + double distX = (double)(vectCoord [i].first - vectCoord [j].first) ; + double distY = (double)(vectCoord [i].second - vectCoord [j].second) ; + dist [i] [j] = dist [j] [i] = (unsigned) (sqrt ((float) (distX * distX + distY * distY)) + 0.5) ; + } + } + } + + void load (const char * __fileName) + { + unsigned int i, dimension; + + std::string string_read, buffer; + + std :: ifstream file (__fileName) ; + + std :: cout << ">> Loading [" << __fileName << "]" << std :: endl ; + + if (file) + { + // Read NAME: + file >> string_read; + if (string_read.compare("NAME:")!=0) + { + std::cout << "ERROR: \'NAME:\' espected, \'" << string_read << "\' found" << std::endl; + exit(1); + } + // Read instance name + file >> string_read; + std::cout << "\t Instance Name = " << string_read << std::endl; + // Read TYPE: + file >> string_read; + if (string_read.compare("TYPE:")!=0) + { + std::cout << "ERROR: \'TYPE:\' espected, \'" << string_read << "\' found" << std::endl; + exit(1); + } + // Read instance type; + file >> string_read; + std::cout << "\t Instance type = " << string_read << std::endl; + if (string_read.compare("TSP")!=0) + { + std::cout << "ERROR: only TSP type instance can be loaded" << std::endl; + exit(1); + } + // Read COMMENT: + file >> string_read; + if (string_read.compare("COMMENT:")!=0) + { + std::cout << "ERROR: \'COMMENT:\' espected, \'" << string_read << "\' found" << std::endl; + exit(1); + } + // Read comments + std::cout << "\t Instance comments = "; + file >> string_read; + buffer = string_read+"_first"; + while((string_read.compare("DIMENSION:")!=0) && (string_read.compare(buffer)!=0)) + { + if(string_read.compare("COMMENT:")!=0) + { + std::cout << string_read << " "; + } + else + { + std::cout << std::endl << "\t "; + } + buffer = string_read; + file >> string_read; + } + + std::cout << std::endl; + + // Read dimension; + file >> dimension ; + std::cout << "\t Instance dimension = " << dimension << std::endl; + vectCoord.resize (dimension) ; + + // Read EDGE_WEIGHT_TYPE + file >> string_read; + if (string_read.compare("EDGE_WEIGHT_TYPE:")!=0) + { + std::cout << "ERROR: \'EDGE_WEIGHT_TYPE:\' espected, \'" << string_read << "\' found" << std::endl; + exit(1); + } + + // Read edge weight type + file >> string_read; + std::cout << "\t Instance edge weight type = " << string_read << std::endl; + if (string_read.compare("EUC_2D")!=0) + { + std::cout << "ERROR: only EUC_2D edge weight type instance can be loaded" << std::endl; + exit(1); + } + + // Read NODE_COORD_SECTION + file >> string_read; + if (string_read.compare("NODE_COORD_SECTION")!=0) + { + std::cout << "ERROR: \'NODE_COORD_SECTION\' espected, \'" << string_read << "\' found" << std::endl; + exit(1); + } + + // Read coordonates. + for(i=0;i> string_read; + //Read Coordinate + file >> vectCoord [i].first >> vectCoord [i].second ; + } + + // Read EOF + file >> string_read; + if(string_read.compare("EOF")!=0) + { + std::cout << "ERROR: \'EOF\' espected, \'" << string_read << "\' found" << std::endl; + exit(1); + } + + std::cout << std::endl; + + file.close () ; + + computeDistances () ; + } + else + { + + std :: cout << __fileName << " does not exist !!!" << std :: endl ; + // Bye !!! + exit (1) ; + } + } + + float distance (unsigned int __from, unsigned int __to) + { + return (float)(dist [__from] [__to]) ; + } +} + + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/graph.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/graph.h new file mode 100644 index 000000000..bea04b225 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/graph.h @@ -0,0 +1,55 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef graph_h +#define graph_h + +#include +#include + +namespace Graph + { + void load (const char * __file_name) ; + /* Loading cities + (expressed by their coordinates) + from the given file name */ + + float distance (unsigned int __from, unsigned int __to) ; + + unsigned int size () ; // How many cities ? +} + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/mix.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/mix.h new file mode 100644 index 000000000..fc570a939 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/mix.h @@ -0,0 +1,50 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef mix_h +#define mix_h + +#include + +template void mix (std :: vector & __vect) +{ + for (unsigned int i = 0 ; i < __vect.size () ; i ++) + { + std :: swap (__vect [i], __vect [rng.random (__vect.size ())]) ; + } +} + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/order_xover.cpp b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/order_xover.cpp new file mode 100644 index 000000000..9e2c1f408 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/order_xover.cpp @@ -0,0 +1,119 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include +#include + +#include + +#include "order_xover.h" +#include "route_valid.h" + +void OrderXover :: cross (const Route & __par1, const Route & __par2, Route & __child) +{ + + unsigned int cut = rng.random (__par1.size ()) ; + + /* To store vertices that have + already been crossed */ + std::vector v; + v.resize(__par1.size()); + + for (unsigned int i = 0 ; i < __par1.size () ; i ++) + { + v [i] = false ; + } + + /* Copy of the left partial + route of the first parent */ + for (unsigned int i = 0 ; i < cut ; i ++) + { + __child [i] = __par1 [i] ; + v [__par1 [i]] = true ; + } + + /* Searching the vertex of the second path, that ended + the previous first one */ + unsigned int from = 0 ; + for (unsigned int i = 0 ; i < __par2.size () ; i ++) + { + if (__par2 [i] == __child [cut - 1]) + { + from = i ; + break ; + } + } + + /* Selecting a direction + Left or Right */ + char direct = rng.flip () ? 1 : -1 ; + + /* Copy of the left vertices from + the second parent path */ + unsigned int l = cut ; + + for (unsigned int i = 0 ; i < __par2.size () ; i ++) + { + unsigned int bidule /* :-) */ = (direct * i + from + __par2.size ()) % __par2.size () ; + if (! v [__par2 [bidule]]) + { + __child [l ++] = __par2 [bidule] ; + v [__par2 [bidule]] = true ; + } + } + + v.clear(); +} + +bool OrderXover :: operator () (Route & __route1, Route & __route2) +{ + + // Init. copy + Route par [2] ; + par [0] = __route1 ; + par [1] = __route2 ; + + cross (par [0], par [1], __route1) ; + cross (par [1], par [0], __route2) ; + + assert (valid (__route1)) ; + assert (valid (__route2)) ; + + __route1.invalidate () ; + __route2.invalidate () ; + + return true ; +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/order_xover.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/order_xover.h new file mode 100644 index 000000000..924eb4dfd --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/order_xover.h @@ -0,0 +1,57 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef order_xover_h +#define order_xover_h + +#include + +#include "route.h" + +/** Order Crossover */ +class OrderXover : public eoQuadOp + { + + public : + + bool operator () (Route & __route1, Route & __route2) ; + + private : + + void cross (const Route & __par1, const Route & __par2, Route & __child) ; + } ; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/part_route_eval.cpp b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/part_route_eval.cpp new file mode 100644 index 000000000..1639e002a --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/part_route_eval.cpp @@ -0,0 +1,53 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include "part_route_eval.h" +#include "graph.h" + +PartRouteEval :: PartRouteEval (float __from, float __to) : from (__from), to (__to) +{} + +void PartRouteEval :: operator () (Route & __route) +{ + float len = 0 ; + + for (unsigned int i = (unsigned int) (__route.size () * from) ; i < (unsigned int ) (__route.size () * to) ; i ++) + { + len += Graph :: distance (__route [i], __route [(i + 1) % Graph :: size ()]) ; + } + + __route.fitness (len) ; +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/part_route_eval.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/part_route_eval.h new file mode 100644 index 000000000..a92fad2ce --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/part_route_eval.h @@ -0,0 +1,62 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef part_route_eval_h +#define part_route_eval_h + +#include + +#include "route.h" + +/** Route Evaluator */ +class PartRouteEval : public eoEvalFunc + { + + public : + + /** Constructor */ + PartRouteEval (float __from, float __to) ; + + void operator () (Route & __route) ; + + private : + + float from, to ; + + } ; + + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/part_two_opt_init.cpp b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/part_two_opt_init.cpp new file mode 100644 index 000000000..357b7ecbe --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/part_two_opt_init.cpp @@ -0,0 +1,45 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include + +#include "part_two_opt_init.h" + +void PartTwoOptInit :: operator () (TwoOpt & __move, const Route & __route) +{ + __move.first = rng.random (__route.size () - 6) ; + __move.second = __move.first + 2 ; +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/part_two_opt_init.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/part_two_opt_init.h new file mode 100644 index 000000000..490fe61bf --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/part_two_opt_init.h @@ -0,0 +1,54 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef part_two_opt_init_h +#define part_two_opt_init_h + +#include + +#include "two_opt.h" + +/** It sets the first couple of edges */ +class PartTwoOptInit : public moMoveInit + { + + public : + + void operator () (TwoOpt & __move, const Route & __route) ; + + } ; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/part_two_opt_next.cpp b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/part_two_opt_next.cpp new file mode 100644 index 000000000..f352c496e --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/part_two_opt_next.cpp @@ -0,0 +1,57 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include "part_two_opt_next.h" +#include "graph.h" + +bool TwoOptNext :: operator () (TwoOpt & __move, const Route & __route) +{ + if (__move.first == Graph :: size () - 4 && __move.second == __move.first + 2) + { + return false ; + } + else + { + __move.second ++ ; + if (__move.second == Graph :: size () - 1) + { + __move.first ++ ; + __move.second = __move.first + 2 ; + } + + return true ; + } +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/part_two_opt_next.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/part_two_opt_next.h new file mode 100644 index 000000000..e2a0c05cc --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/part_two_opt_next.h @@ -0,0 +1,53 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef part_two_opt_next_h +#define part_two_opt_next_h + +#include +#include "two_opt.h" + +/** It updates a couple of edges */ +class PartTwoOptNext : public moNextMove + { + + public : + + bool operator () (TwoOpt & __move, const Route & __route) ; + + } ; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/partial_mapped_xover.cpp b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/partial_mapped_xover.cpp new file mode 100644 index 000000000..ab92d2a3b --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/partial_mapped_xover.cpp @@ -0,0 +1,118 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include + +#include + +#include + +#include "partial_mapped_xover.h" +#include "route_valid.h" +#include "mix.h" + +void PartialMappedXover :: repair (Route & __route, unsigned __cut1, unsigned __cut2) +{ + + std::vector v; // Number of times a cities are visited ... + + v.resize(__route.size ()); + + for (unsigned int i = 0 ; i < __route.size () ; i ++) + { + v [i] = 0 ; + } + + for (unsigned int i = 0 ; i < __route.size () ; i ++) + { + v [__route [i]] ++ ; + } + + std :: vector vert ; + + for (unsigned int i = 0 ; i < __route.size () ; i ++) + { + if (! v [i]) + { + vert.push_back (i) ; + } + } + + mix (vert) ; + + for (unsigned int i = 0 ; i < __route.size () ; i ++) + { + if (i < __cut1 || i >= __cut2) + { + if (v [__route [i]] > 1) + { + __route [i] = vert.back () ; + vert.pop_back () ; + } + } + } + + v.clear(); +} + +bool PartialMappedXover :: operator () (Route & __route1, Route & __route2) +{ + unsigned int cut1 = rng.random (__route1.size ()), cut2 = rng.random (__route2.size ()) ; + + if (cut2 < cut1) + { + std :: swap (cut1, cut2) ; + } + + // Between the cuts + for (unsigned int i = cut1 ; i < cut2 ; i ++) + { + std :: swap (__route1 [i], __route2 [i]) ; + } + + // Outside the cuts + repair (__route1, cut1, cut2) ; + repair (__route2, cut1, cut2) ; + + // Debug + assert (valid (__route1)) ; + assert (valid (__route2)) ; + + __route1.invalidate () ; + __route2.invalidate () ; + + return true ; +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/partial_mapped_xover.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/partial_mapped_xover.h new file mode 100644 index 000000000..65c6474de --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/partial_mapped_xover.h @@ -0,0 +1,57 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef partial_mapped_xover_h +#define partial_mapped_xover_h + +#include + +#include "route.h" + +/** Partial Mapped Crossover */ +class PartialMappedXover : public eoQuadOp + { + + public : + + bool operator () (Route & __route1, Route & __route2) ; + + private : + + void repair (Route & __route, unsigned __cut1, unsigned __cut2) ; + } ; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/route.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/route.h new file mode 100644 index 000000000..ac9629cbb --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/route.h @@ -0,0 +1,48 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef route_h +#define route_h + +#include +#include + +// A float that has to be minimized. +typedef eoScalarFitness< float, std::greater > tspFitness ; + +typedef eoVector Route ; // [Fitness (length), Gene (city)] + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/route_eval.cpp b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/route_eval.cpp new file mode 100644 index 000000000..abde85b99 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/route_eval.cpp @@ -0,0 +1,51 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include "route_eval.h" +#include "graph.h" + +void RouteEval :: operator () (Route & __route) +{ + + float len = 0.0 ; + + for (unsigned int i = 0 ; i < Graph :: size () ; i ++) + { + len += Graph :: distance (__route [i], __route [(i + 1) % Graph :: size ()]) ; + } + + __route.fitness (len) ; +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/route_eval.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/route_eval.h new file mode 100644 index 000000000..474075cf0 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/route_eval.h @@ -0,0 +1,55 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef route_eval_h +#define route_eval_h + +#include + +#include "route.h" + +/** Route Evaluator */ +class RouteEval : public eoEvalFunc + { + + public : + + void operator () (Route & __route) ; + + } ; + + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/route_init.cpp b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/route_init.cpp new file mode 100644 index 000000000..09a2c40cb --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/route_init.cpp @@ -0,0 +1,63 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include + +#include "route_init.h" +#include "graph.h" + +void RouteInit :: operator () (Route & __route) +{ + + // Init. + __route.clear () ; + for (unsigned int i = 0 ; i < Graph :: size () ; i ++) + { + __route.push_back (i) ; + } + + // Swap. cities + + for (unsigned int i = 0 ; i < Graph :: size () ; i ++) + { + //unsigned int j = rng.random (Graph :: size ()) ; + + unsigned int j = (unsigned int) (Graph :: size () * (rand () / (RAND_MAX + 1.0))) ; + unsigned int city = __route [i] ; + __route [i] = __route [j] ; + __route [j] = city ; + } +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/route_init.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/route_init.h new file mode 100644 index 000000000..466345c1b --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/route_init.h @@ -0,0 +1,53 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef route_init_h +#define route_init_h + +#include + +#include "route.h" + +class RouteInit : public eoInit + { + + public : + + void operator () (Route & __route) ; + + } ; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/route_valid.cpp b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/route_valid.cpp new file mode 100644 index 000000000..844cebf82 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/route_valid.cpp @@ -0,0 +1,68 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include "route_valid.h" + +#include + +bool valid (Route & __route) +{ + + std::vector t; + t.resize(__route.size()); + + for (unsigned int i = 0 ; i < __route.size () ; i ++) + { + t [i] = 0 ; + } + + for (unsigned int i = 0 ; i < __route.size () ; i ++) + { + t [__route [i]] ++ ; + } + + for (unsigned int i = 0 ; i < __route.size () ; i ++) + { + if (t [i] != 1) + { + t.clear(); + return false ; + } + } + + t.clear(); + return true ; // OK. +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/route_valid.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/route_valid.h new file mode 100644 index 000000000..607728e8b --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/route_valid.h @@ -0,0 +1,44 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef route_valid_h +#define route_valid_h + +#include "route.h" + +bool valid (Route & __route) ; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/tsp b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/tsp new file mode 100644 index 000000000..adf8189ca --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/tsp @@ -0,0 +1,41 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr) +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +#ifndef __tsp +#define __tsp + +#include "tsp.h" + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/tsp.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/tsp.h new file mode 100644 index 000000000..ba249a794 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/tsp.h @@ -0,0 +1,60 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sébastien Cahon, Jean-Charles Boisson (Jean-Charles.Boisson@lifl.fr) +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __tsp_h +#define __tsp_h + +#include "city_swap.h" +#include "edge_xover.h" +#include "graph.h" +#include "mix.h" +#include "order_xover.h" +#include "partial_mapped_xover.h" +#include "part_route_eval.h" +#include "part_two_opt_init.h" +#include "part_two_opt_next.h" +#include "route_eval.h" +#include "route.h" +#include "route_init.h" +#include "route_valid.h" +#include "two_opt.h" +#include "two_opt_incr_eval.h" +#include "two_opt_init.h" +#include "two_opt_next.h" +#include "two_opt_rand.h" +#include "two_opt_tabu_list.h" + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/two_opt.cpp b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/two_opt.cpp new file mode 100644 index 000000000..146c6c6c2 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/two_opt.cpp @@ -0,0 +1,72 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include "two_opt.h" + +TwoOpt TwoOpt :: operator ! () const + { + TwoOpt move = * this ; + std :: swap (move.first, move.second) ; + + return move ; + } + +void TwoOpt :: operator () (Route & __route) +{ + + std :: vector seq_cities ; + + for (unsigned int i = second ; i > first ; i --) + { + seq_cities.push_back (__route [i]) ; + } + + unsigned int j = 0 ; + for (unsigned int i = first + 1 ; i < second + 1 ; i ++) + { + __route [i] = seq_cities [j ++] ; + } +} + +void TwoOpt :: readFrom (std :: istream & __is) +{ + __is >> first >> second ; +} + +void TwoOpt :: printOn (std :: ostream & __os) const + { + __os << first << ' ' << second ; + } diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/two_opt.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/two_opt.h new file mode 100644 index 000000000..6b9cf435f --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/two_opt.h @@ -0,0 +1,61 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef two_opt_h +#define two_opt_h + +#include + +#include +#include + +#include "route.h" + +class TwoOpt : public moMove , public std :: pair , public eoPersistent + { + + public : + + TwoOpt operator ! () const ; + + void operator () (Route & __route) ; + + void readFrom (std :: istream & __is) ; + + void printOn (std :: ostream & __os) const ; + } ; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/two_opt_incr_eval.cpp b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/two_opt_incr_eval.cpp new file mode 100644 index 000000000..2d4657b73 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/two_opt_incr_eval.cpp @@ -0,0 +1,53 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include "two_opt_incr_eval.h" +#include "graph.h" + +tspFitness TwoOptIncrEval :: operator () (const TwoOpt & __move, const Route & __route) +{ + // From + unsigned int v1 = __route [__move.first], v1_next = __route [__move.first + 1] ; + + // To + unsigned int v2 = __route [__move.second], v2_next = __route [__move.second + 1] ; + + return __route.fitness () + + Graph :: distance (v1, v2) + + Graph :: distance (v1_next, v2_next) + - Graph :: distance (v1, v1_next) + - Graph :: distance (v2, v2_next) ; +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/two_opt_incr_eval.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/two_opt_incr_eval.h new file mode 100644 index 000000000..91ffca098 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/two_opt_incr_eval.h @@ -0,0 +1,51 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef two_optincr_eval_h +#define two_optincr_eval_h + +#include +#include "two_opt.h" + +class TwoOptIncrEval : public moMoveIncrEval + { + public : + + tspFitness operator () (const TwoOpt & __move, const Route & __route) ; + + } ; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/two_opt_init.cpp b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/two_opt_init.cpp new file mode 100644 index 000000000..bbf5a3e1a --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/two_opt_init.cpp @@ -0,0 +1,43 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include "two_opt_init.h" + +void TwoOptInit :: operator () (TwoOpt & __move, const Route & __route) +{ + __move.first = 0 ; + __move.second = 2 ; +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/two_opt_init.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/two_opt_init.h new file mode 100644 index 000000000..d6d22f8da --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/two_opt_init.h @@ -0,0 +1,54 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef two_opt_init_h +#define two_opt_init_h + +#include + +#include "two_opt.h" + +/** It sets the first couple of edges */ +class TwoOptInit : public moMoveInit + { + + public : + + void operator () (TwoOpt & __move, const Route & __route) ; + + } ; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/two_opt_next.cpp b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/two_opt_next.cpp new file mode 100644 index 000000000..47335a515 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/two_opt_next.cpp @@ -0,0 +1,57 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include "two_opt_next.h" +#include "graph.h" + +bool TwoOptNext :: operator () (TwoOpt & __move, const Route & __route) +{ + if (__move.first == Graph :: size () - 4 && __move.second == __move.first + 2) + { + return false ; + } + else + { + __move.second ++ ; + if (__move.second == Graph :: size () - 1) + { + __move.first ++ ; + __move.second = __move.first + 2 ; + } + + return true ; + } +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/two_opt_next.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/two_opt_next.h new file mode 100644 index 000000000..59856db9a --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/two_opt_next.h @@ -0,0 +1,53 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef two_opt_next_h +#define two_opt_next_h + +#include +#include "two_opt.h" + +/** It updates a couple of edges */ +class TwoOptNext : public moNextMove + { + + public : + + bool operator () (TwoOpt & __move, const Route & __route) ; + + } ; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/two_opt_rand.cpp b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/two_opt_rand.cpp new file mode 100644 index 000000000..956bddfb0 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/two_opt_rand.cpp @@ -0,0 +1,45 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include "two_opt_rand.h" +#include "graph.h" +#include + +void TwoOptRand :: operator () (TwoOpt & __move) +{ + __move.first = rng.random (Graph :: size () - 3) ; + __move.second = __move.first + 2 + rng.random (Graph :: size () - __move.first - 3) ; +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/two_opt_rand.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/two_opt_rand.h new file mode 100644 index 000000000..e6e0bdff2 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/two_opt_rand.h @@ -0,0 +1,53 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef two_opt_rand_h +#define two_opt_rand_h + +#include + +#include "two_opt.h" + +class TwoOptRand : public moRandMove + { + + public : + + void operator () (TwoOpt & __move) ; + + } ; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/two_opt_tabu_list.cpp b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/two_opt_tabu_list.cpp new file mode 100644 index 000000000..2a2f009ed --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/two_opt_tabu_list.cpp @@ -0,0 +1,83 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include "two_opt_tabu_list.h" +#include "graph.h" + +#define TABU_LENGTH 10 + +void TwoOptTabuList :: init () +{ + // Size (eventually) + tabu_span.resize (Graph :: size ()) ; + for (unsigned int i = 0 ; i < tabu_span.size () ; i ++) + { + tabu_span [i].resize (Graph :: size ()) ; + } + + // Clear + for (unsigned int i = 0 ; i < tabu_span.size () ; i ++) + { + for (unsigned int j = 0 ; j < tabu_span [i].size () ; j ++) + { + tabu_span [i] [j] = 0 ; + } + } +} + +bool TwoOptTabuList :: operator () (const TwoOpt & __move, const Route & __sol) +{ + return tabu_span [__move.first] [__move.second] > 0 ; +} + +void TwoOptTabuList :: add (const TwoOpt & __move, const Route & __sol) + { + tabu_span [__move.first] [__move.second] = tabu_span [__move.second] [__move.first] = TABU_LENGTH ; + } + +void TwoOptTabuList :: update () +{ + for (unsigned int i = 0 ; i < tabu_span.size () ; i ++) + { + for (unsigned int j = 0 ; j < tabu_span [i].size () ; j ++) + { + if (tabu_span [i] [j] > 0) + { + tabu_span [i] [j] -- ; + } + } + } +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/two_opt_tabu_list.h b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/two_opt_tabu_list.h new file mode 100644 index 000000000..57490fc9a --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-mo/tutorial/examples/tsp/two_opt_tabu_list.h @@ -0,0 +1,63 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sébastien Cahon, Jean-Charles Boisson +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef two_opt_tabu_list_h +#define two_opt_tabu_list_h + +#include +#include "two_opt.h" +#include "route.h" + +/** The table of tabu movements, i.e. forbidden edges */ +class TwoOptTabuList : public moTabuList + { + public : + + bool operator () (const TwoOpt & __move, const Route & __sol) ; + + void add (const TwoOpt & __move, const Route & __sol) ; + + void update () ; + + void init () ; + + private : + + std :: vector > tabu_span ; + + } ; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/AUTHORS b/branches/paradiseo-ix86-2.0/paradiseo-moeo/AUTHORS new file mode 100644 index 000000000..50787a3ef --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/AUTHORS @@ -0,0 +1,4 @@ +Sébastien Cahon +Arnaud Liefooghe +Thomas Legrand +Abdelhakim Deneche diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/CMakeLists.txt b/branches/paradiseo-ix86-2.0/paradiseo-moeo/CMakeLists.txt new file mode 100644 index 000000000..7078a69f2 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/CMakeLists.txt @@ -0,0 +1,141 @@ + +###################################################################################### +### 0) If you want to set your own variables in moeo-conf.cmake and avoid the cmd line +###################################################################################### + +INCLUDE(moeo-conf.cmake OPTIONAL) + +###################################################################################### + + +###################################################################################### +### 1) Project properties +###################################################################################### + +# set the project name +PROJECT(ParadisEO-MOEO) + +SET(PACKAGE_BUGREPORT "paradiseo-help@lists.gforge.inria.fr" CACHE STRING "Package bug report" FORCE) +SET(PACKAGE_NAME "ParadisEO-MOEO Moving Objects" CACHE STRING "Package name" FORCE) +SET(PACKAGE_STRING "ParadisEO-MOEO 1.0" CACHE STRING "Package string full name" FORCE) +SET(PACKAGE_VERSION "1.0" CACHE STRING "Package version" FORCE) +SET(GLOBAL_VERSION "1.0" CACHE STRING "Global version" FORCE) +SET(VERSION "1.0" CACHE STRING "Version" FORCE) + +# check cmake version compatibility +CMAKE_MINIMUM_REQUIRED(VERSION 2.4 FATAL_ERROR) + +# regular expression checking +INCLUDE_REGULAR_EXPRESSION("^.*$" "^$") + +# set a language for the entire project. +ENABLE_LANGUAGE(CXX) +ENABLE_LANGUAGE(C) + +##################################################################################### + + +##################################################################################### +### 2) Include required modules +##################################################################################### + +INCLUDE(CMakeBackwardCompatibilityCXX) + +INCLUDE(FindDoxygen) + +INCLUDE(FindGnuplot) + +# check for some functions +INCLUDE(CheckLibraryExists) + +###################################################################################### + + +###################################################################################### +### 3) Include the main configuration variables +###################################################################################### + +# The "config" variable must be provided on the command line +IF(NOT DEFINED config OR NOT config) + MESSAGE(FATAL_ERROR "The \"config\" variable must be set on the command line to + give the path of the install configuration file. ") +ENDIF(NOT DEFINED config OR NOT config) + +# Need the config file whose full path is given thanks to the "config" variable +INCLUDE(${config}) + +###################################################################################### + + +###################################################################################### +### 4) Paths checking +###################################################################################### + +IF(WIN32) + SET (ABSOLUTE_PATH_REGEX "^[A-Z]:|^[a-z]:") +ELSE(WIN32) + SET (ABSOLUTE_PATH_REGEX "^/") +ENDIF(WIN32) + +SET(REQUIRED_PATHS "EO_SRC_DIR" "EO_BIN_DIR") +FOREACH (path ${REQUIRED_PATHS}) + IF(EXISTS ${${path}}) + MESSAGE (STATUS "Using ${path}=${${path}}") + ELSE(EXISTS ${${path}}) + MESSAGE (FATAL_ERROR "\n Cannot find \"${${path}}\". Please, fill \"${config}\" with a correct value") + ENDIF(EXISTS ${${path}}) + + IF(NOT ${${path}} MATCHES "${ABSOLUTE_PATH_REGEX}") + MESSAGE (FATAL_ERROR "${${path}} MUST BE an absolute path") + ENDIF(NOT ${${path}} MATCHES "${ABSOLUTE_PATH_REGEX}") +ENDFOREACH (path ${REQUIRED_PATHS}) +###################################################################################### + + +##################################################################################### +### 5) Manage the build type +##################################################################################### + +# the user should choose the build type on windows environments,excepted under cygwin (default=none) +SET(CMAKE_DEFAULT_BUILD_TYPE "Release" CACHE STRING "Variable that stores the default CMake build type" FORCE) + +IF(WIN32 AND NOT CYGWIN) + IF(NOT CMAKE_BUILD_TYPE) + SET( CMAKE_BUILD_TYPE + ${CMAKE_DEFAULT_BUILD_TYPE} CACHE STRING + "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel." + FORCE) + ENDIF(NOT CMAKE_BUILD_TYPE) +ELSE(WIN32 AND NOT CYGWIN) + IF(CMAKE_COMPILER_IS_GNUCXX) + SET(CMAKE_CXX_FLAGS_DEBUG "-Wall -pedantic -Wextra -Wno-import -Winit-self -Wmissing-include-dirs -Wunused-parameter -Wundef -Wshadow -Wunsafe-loop-optimizations -Wcast-align -Wconversion -Wsign-compare -Winline -Wdisabled-optimization") + ENDIF(CMAKE_COMPILER_IS_GNUCXX) +ENDIF(WIN32 AND NOT CYGWIN) + +IF(CMAKE_BUILD_TYPE MATCHES Debug) + ADD_DEFINITIONS(-DCMAKE_VERBOSE_MAKEFILE=ON) +ENDIF(CMAKE_BUILD_TYPE MATCHES Debug) + +##################################################################################### + + +###################################################################################### +### 6) Where must cmake go now ? +###################################################################################### + +SUBDIRS(doc src test tutorial) + +###################################################################################### + + +###################################################################################### +### 7) Test config +###################################################################################### + +#SET(ENABLE_CMAKE_TESTING TRUE CACHE BOOL "Should we test using Dart") + +IF (ENABLE_CMAKE_TESTING) + ENABLE_TESTING() +ENDIF (ENABLE_CMAKE_TESTING) + +###################################################################################### diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/README b/branches/paradiseo-ix86-2.0/paradiseo-moeo/README new file mode 100644 index 000000000..14828bc53 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/README @@ -0,0 +1,80 @@ + PARADISEO-MOEO README FILE +======================================================================= + check latest news at http://paradiseo.gforge.inria.fr/ +======================================================================= + +Welcome to ParadisEO-MOEO, the Multi-Objective Evolving Objects library. +The latest news about ParadisEO-MOEO can be found on the gforge repository at +http://paradiseo.gforge.inria.fr/ +In case of any problem, please e-mail us at +paradiseo-help@lists.gforge.inria.fr + + +======================================================================= + BUILDING PARADISEO-MOEO +======================================================================= +The basic installation procedure goes the following. + +To compile paradiseo-moeo in the default directory, +go to paradiseo-moeo/build/ and run: + > cmake ../ -Dconfig= + > make + // for an easy-use of the provided lessons + > make install + // optional (if the documentation is not already available) + > make doc + +To compile paradiseo-moeo anywhere else, simply run: + > cmake $(MOEO) -Dconfig= + > make + // for an easy-use of the provided lessons + > make install + // optional (if the documentation is not already available) + > make doc + +where $(MOEO) is the top-level directory of PARADISEO-MOEO. + +To clean everything, simply run + > make clean + +======================================================================= + DIRECTORY STRUCTURE +======================================================================= +After unpacking the archive file, you should end up with the following +structure: + +.../ The main PARADISEO-MOEO directory, created when unpacking. + | + | + +-- build BUILD directory that contains libraries and executable files. + | + | + +-- src SOURCE directory that contains PARADISEO-MOEO source files. + | + | + +-- doc DOCUMENTATION directory (generated by Doxygen). + | | + | +-- html HTML files - start at index.html. + | | + | +-- latex latex files - use to generate Postcript doc. + | | + | +-- man Unix man format documentation. + | + | + +-- tutorial TUTORIAL directory that contains with lessons. + | + +-- examples APPLICATIONS - one directory per separate application. + | | + | +-- flowshop Flow-shop scheduling problem example source files. + | | + | +-- benchs Benchmark suites for the flow-shop. + | + +-- Lesson1 A bi-objective flow-shop problem example solved using main MOEAs. + | + +-- Lesson2 NSGA-II to solve the SCH1 problem. + +======================================================================= + NOTES +======================================================================= + +Mailing list : paradiseo-help@lists.gforge.inria.fr diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/CMakeLists.txt b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/CMakeLists.txt new file mode 100644 index 000000000..c94b73700 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/CMakeLists.txt @@ -0,0 +1,26 @@ + +########################################################################################## +### MOEO Doc generation using Doxygen +########################################################################################## + +IF (DOXYGEN_FOUND) + + SET(DOC_DIR ${CMAKE_BINARY_DIR}/doc CACHE PATH "MOEO documentation directory") + SET(MOEO_DOC_CONFIG_FILE "moeo.doxyfile" CACHE PATH "MOEO documentation configuration file") + # define the doc target + IF (DOXYGEN_EXECUTABLE) + ADD_CUSTOM_TARGET(doc + COMMAND ${DOXYGEN_EXECUTABLE} ${MOEO_DOC_CONFIG_FILE} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + ) + ENDIF (DOXYGEN_EXECUTABLE) + + # configure doxyfile file + CONFIGURE_FILE("${CMAKE_SOURCE_DIR}/doc/${MOEO_DOC_CONFIG_FILE}.cmake" + "${CMAKE_BINARY_DIR}/doc/${MOEO_DOC_CONFIG_FILE}") + +ELSE (DOXYGEN_FOUND) + MESSAGE(STATUS "Unable to generate the documentation, Doxygen package not found") +ENDIF (DOXYGEN_FOUND) + +########################################################################################## diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopBenchmarkParser_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopBenchmarkParser_8cpp-source.html new file mode 100644 index 000000000..bae6d394f --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopBenchmarkParser_8cpp-source.html @@ -0,0 +1,129 @@ + + +ParadisEO-MOEOMovingObjects: FlowShopBenchmarkParser.cpp Source File + + + + +
+
+

FlowShopBenchmarkParser.cpp

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // FlowShopBenchmarkParser.cpp
+00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007
+00006 /*
+00007     This library...
+00008 
+00009     Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr
+00010  */
+00011 //-----------------------------------------------------------------------------
+00012 
+00013 #include <stdexcept>
+00014 #include <FlowShopBenchmarkParser.h>
+00015 
+00016 FlowShopBenchmarkParser::FlowShopBenchmarkParser(const std::string _benchmarkFileName)
+00017 {
+00018     init(_benchmarkFileName);
+00019 }
+00020 
+00021 
+00022 const unsigned int FlowShopBenchmarkParser::getM()
+00023 {
+00024     return M;
+00025 }
+00026 
+00027 
+00028 const unsigned int FlowShopBenchmarkParser::getN()
+00029 {
+00030     return N;
+00031 }
+00032 
+00033 
+00034 const std::vector< std::vector<unsigned int> > FlowShopBenchmarkParser::getP()
+00035 {
+00036     return p;
+00037 }
+00038 
+00039 
+00040 const std::vector<unsigned int> FlowShopBenchmarkParser::getD()
+00041 {
+00042     return d;
+00043 }
+00044 
+00045 
+00046 void FlowShopBenchmarkParser::printOn(std::ostream & _os) const
+00047 {
+00048     _os << "M=" << M << " N=" << N << std::endl;
+00049     _os << "*** processing times" << std::endl;
+00050     for (unsigned int i=0; i<M; i++) {
+00051         for (unsigned int j=0; j<N; j++) {
+00052             _os << p[i][j] << " ";
+00053         }
+00054         _os << std::endl;
+00055     }
+00056     _os << "*** due-dates" << std::endl;
+00057     for (unsigned int j=0; j<N; j++) {
+00058         _os << d[j] << " ";
+00059     }
+00060     _os << std::endl << std::endl;
+00061 }
+00062 
+00063 
+00064 void FlowShopBenchmarkParser::init(const std::string _benchmarkFileName)
+00065 {
+00066     std::string buffer;
+00067     std::string::size_type start, end;
+00068     std::ifstream inputFile(_benchmarkFileName.data(), std::ios::in);
+00069     // opening of the benchmark file
+00070     if (! inputFile)
+00071         throw std::runtime_error("*** ERROR : Unable to open the benchmark file");
+00072     // number of jobs (N)
+00073     getline(inputFile, buffer, '\n');
+00074     N = atoi(buffer.data());
+00075     // number of machines M
+00076     getline(inputFile, buffer, '\n');
+00077     M = atoi(buffer.data());
+00078     // initial and current seeds (not used)
+00079     getline(inputFile, buffer, '\n');
+00080     // processing times and due-dates
+00081     p = std::vector< std::vector<unsigned int> > (M,N);
+00082     d = std::vector<unsigned int> (N);
+00083     // for each job...
+00084     for (unsigned int j=0 ; j<N ; j++) {
+00085         // index of the job (<=> j)
+00086         getline(inputFile, buffer, '\n');
+00087         // due-date of the job j
+00088         getline(inputFile, buffer, '\n');
+00089         d[j] = atoi(buffer.data());
+00090         // processing times of the job j on each machine
+00091         getline(inputFile, buffer, '\n');
+00092         start = buffer.find_first_not_of(" ");
+00093         for (unsigned int i=0 ; i<M ; i++) {
+00094             end = buffer.find_first_of(" ", start);
+00095             p[i][j] = atoi(buffer.substr(start, end-start).data());
+00096             start = buffer.find_first_not_of(" ", end);
+00097         }
+00098     }
+00099     // closing of the input file
+00100     inputFile.close();
+00101 }
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopBenchmarkParser_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopBenchmarkParser_8h-source.html new file mode 100644 index 000000000..0919ff0eb --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopBenchmarkParser_8h-source.html @@ -0,0 +1,82 @@ + + +ParadisEO-MOEOMovingObjects: FlowShopBenchmarkParser.h Source File + + + + +
+
+

FlowShopBenchmarkParser.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // FlowShopBenchmarkParser.h
+00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007
+00006 /*
+00007     This library...
+00008 
+00009     Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr
+00010  */
+00011 //-----------------------------------------------------------------------------
+00012 
+00013 #ifndef FLOWSHOPBENCHMARKPARSER_H_
+00014 #define FLOWSHOPBENCHMARKPARSER_H_
+00015 
+00016 #include <fstream>
+00017 #include <string>
+00018 #include <vector>
+00019 
+00023 class FlowShopBenchmarkParser
+00024 {
+00025 public:
+00026 
+00031     FlowShopBenchmarkParser(const std::string _benchmarkFileName);
+00032 
+00033 
+00037     const unsigned int getM();
+00038 
+00039 
+00043     const unsigned int getN();
+00044 
+00045 
+00049     const std::vector < std::vector < unsigned int > > getP();
+00050 
+00051 
+00055     const std::vector < unsigned int > getD();
+00056 
+00057 
+00061     void printOn(std::ostream & _os) const;
+00062 
+00063 
+00064 private:
+00065 
+00067     unsigned int M;
+00069     unsigned int N;
+00071     std::vector < std::vector < unsigned int > > p;
+00073     std::vector < unsigned int > d;
+00074 
+00075 
+00080     void init(const std::string _benchmarkFileName);
+00081 
+00082 };
+00083 
+00084 #endif /*FLOWSHOPBENCHMARKPARSER_H_*/
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopEA_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopEA_8cpp-source.html new file mode 100644 index 000000000..168f09873 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopEA_8cpp-source.html @@ -0,0 +1,135 @@ + + +ParadisEO-MOEOMovingObjects: FlowShopEA.cpp Source File + + + + +
+
+

FlowShopEA.cpp

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // FlowShopEA.cpp
+00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007
+00006 /*
+00007     This library...
+00008 
+00009     Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr
+00010  */
+00011 //-----------------------------------------------------------------------------
+00012 
+00013 
+00014 // moeo general include
+00015 #include <moeo>
+00016 // for the creation of an evaluator
+00017 #include <make_eval_FlowShop.h>
+00018 // for the creation of an initializer
+00019 #include <make_genotype_FlowShop.h>
+00020 // for the creation of the variation operators
+00021 #include <make_op_FlowShop.h>
+00022 // how to initialize the population
+00023 #include <do/make_pop.h>
+00024 // the stopping criterion
+00025 #include <do/make_continue_moeo.h>
+00026 // outputs (stats, population dumps, ...)
+00027 #include <do/make_checkpoint_moeo.h>
+00028 // evolution engine (selection and replacement)
+00029 #include <do/make_ea_moeo.h>
+00030 // simple call to the algo
+00031 #include <do/make_run.h>
+00032 // checks for help demand, and writes the status file and make_help; in libutils
+00033 void make_help(eoParser & _parser);
+00034 // definition of the representation
+00035 #include <FlowShop.h>
+00036 
+00037 
+00038 using namespace std;
+00039 
+00040 
+00041 int main(int argc, char* argv[])
+00042 {
+00043     try
+00044     {
+00045     
+00046         eoParser parser(argc, argv);  // for user-parameter reading
+00047         eoState state;                // to keep all things allocated
+00048 
+00049 
+00050         /*** the representation-dependent things ***/
+00051 
+00052         // The fitness evaluation
+00053         eoEvalFuncCounter<FlowShop>& eval = do_make_eval(parser, state);
+00054         // the genotype (through a genotype initializer)
+00055         eoInit<FlowShop>& init = do_make_genotype(parser, state);
+00056         // the variation operators
+00057         eoGenOp<FlowShop>& op = do_make_op(parser, state);
+00058 
+00059 
+00060         /*** the representation-independent things ***/
+00061 
+00062         // initialization of the population
+00063         eoPop<FlowShop>& pop = do_make_pop(parser, state, init);
+00064         // definition of the archive
+00065         moeoArchive<FlowShop> arch;
+00066         // stopping criteria
+00067         eoContinue<FlowShop>& term = do_make_continue_moeo(parser, state, eval);
+00068         // output
+00069         eoCheckPoint<FlowShop>& checkpoint = do_make_checkpoint_moeo(parser, state, eval, term, pop, arch);
+00070         // algorithm
+00071         eoAlgo<FlowShop>& algo = do_make_ea_moeo(parser, state, eval, checkpoint, op, arch);
+00072 
+00073 
+00074         /*** Go ! ***/
+00075 
+00076         // help ?
+00077         make_help(parser);
+00078 
+00079         // first evalution
+00080         apply<FlowShop>(eval, pop);
+00081 
+00082         // printing of the initial population
+00083         cout << "Initial Population\n";
+00084         pop.sortedPrintOn(cout);
+00085         cout << endl;
+00086 
+00087         // run the algo
+00088         do_run(algo, pop);
+00089 
+00090         // printing of the final population
+00091         cout << "Final Population\n";
+00092         pop.sortedPrintOn(cout);
+00093         cout << endl;
+00094 
+00095         // printing of the final archive
+00096         cout << "Final Archive\n";
+00097         arch.sortedPrintOn(cout);
+00098         cout << endl;
+00099 
+00100 
+00101     }
+00102     catch (exception& e)
+00103     {
+00104         cout << e.what() << endl;
+00105     }
+00106     return EXIT_SUCCESS;
+00107 }
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopEval_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopEval_8cpp-source.html new file mode 100644 index 000000000..57ea467ec --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopEval_8cpp-source.html @@ -0,0 +1,92 @@ + + +ParadisEO-MOEOMovingObjects: FlowShopEval.cpp Source File + + + + +
+
+

FlowShopEval.cpp

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // FlowShopEval.cpp
+00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007
+00006 /*
+00007     This library...
+00008 
+00009     Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr
+00010  */
+00011 //-----------------------------------------------------------------------------
+00012 
+00013 #include <FlowShopEval.h>
+00014 
+00015 
+00016 FlowShopEval::FlowShopEval(unsigned int _M, unsigned int _N, const std::vector< std::vector<unsigned int> > & _p, const std::vector<unsigned int> & _d) :
+00017         M(_M), N (_N), p(_p), d(_d)
+00018 {}
+00019 
+00020 
+00021 void FlowShopEval::operator()(FlowShop & _flowshop)
+00022 {
+00023     FlowShopObjectiveVector objVector;
+00024     objVector[0] = makespan(_flowshop);
+00025     objVector[1] = tardiness(_flowshop);
+00026     _flowshop.objectiveVector(objVector);
+00027 }
+00028 
+00029 
+00030 
+00031 double FlowShopEval::makespan(const FlowShop & _flowshop)
+00032 {
+00033     // completion times computation for each job on each machine
+00034     // C[i][j] = completion of the jth job of the scheduling on the ith machine
+00035     std::vector< std::vector<unsigned int> > C = completionTime(_flowshop);
+00036     return C[M-1][_flowshop[N-1]];
+00037 }
+00038 
+00039 
+00040 double FlowShopEval::tardiness(const FlowShop & _flowshop)
+00041 {
+00042     // completion times computation for each job on each machine
+00043     // C[i][j] = completion of the jth job of the scheduling on the ith machine
+00044     std::vector< std::vector<unsigned int> > C = completionTime(_flowshop);
+00045     // tardiness computation
+00046     unsigned int long sum = 0;
+00047     for (unsigned int j=0 ; j<N ; j++)
+00048         sum += (unsigned int) std::max (0, (int) (C[M-1][_flowshop[j]] - d[_flowshop[j]]));
+00049     return sum;
+00050 }
+00051 
+00052 
+00053 std::vector< std::vector<unsigned int> > FlowShopEval::completionTime(const FlowShop & _flowshop) {
+00054     std::vector< std::vector<unsigned int> > C(M,N);
+00055     C[0][_flowshop[0]] = p[0][_flowshop[0]];
+00056     for (unsigned int j=1; j<N; j++)
+00057         C[0][_flowshop[j]] = C[0][_flowshop[j-1]] + p[0][_flowshop[j]];
+00058     for (unsigned int i=1; i<M; i++)
+00059         C[i][_flowshop[0]] = C[i-1][_flowshop[0]] + p[i][_flowshop[0]];
+00060     for (unsigned int i=1; i<M; i++)
+00061         for (unsigned int j=1; j<N; j++)
+00062             C[i][_flowshop[j]] = std::max(C[i][_flowshop[j-1]], C[i-1][_flowshop[j]]) + p[i][_flowshop[j]];
+00063     return C;
+00064 }
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopEval_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopEval_8h-source.html new file mode 100644 index 000000000..89f92434f --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopEval_8h-source.html @@ -0,0 +1,76 @@ + + +ParadisEO-MOEOMovingObjects: FlowShopEval.h Source File + + + + +
+
+

FlowShopEval.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // FlowShopEval.h
+00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007
+00006 /*
+00007     This library...
+00008 
+00009     Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr
+00010  */
+00011 //-----------------------------------------------------------------------------
+00012 
+00013 #ifndef FLOWSHOPEVAL_H_
+00014 #define FLOWSHOPEVAL_H_
+00015 
+00016 #include <vector>
+00017 #include <core/moeoEvalFunc.h>
+00018 #include <FlowShop.h>
+00019 
+00023 class FlowShopEval : public moeoEvalFunc<FlowShop>
+00024 {
+00025 public:
+00026 
+00034     FlowShopEval(unsigned int _M, unsigned int _N, const std::vector< std::vector<unsigned int> > & _p, const std::vector<unsigned int> & _d);
+00035 
+00036 
+00041     void operator()(FlowShop & _flowshop);
+00042 
+00043 
+00044 private:
+00045 
+00047     unsigned int M;
+00049     unsigned int N;
+00051     std::vector< std::vector < unsigned int > > p;
+00053     std::vector < unsigned int > d;
+00054 
+00055 
+00060     double makespan(const FlowShop & _flowshop);
+00061 
+00062 
+00067     double tardiness(const FlowShop & _flowshop);
+00068 
+00069 
+00075     std::vector< std::vector<unsigned int> > completionTime (const FlowShop & _flowshop);
+00076 
+00077 };
+00078 
+00079 #endif /*FLOWSHOPEVAL_H_*/
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopInit_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopInit_8cpp-source.html new file mode 100644 index 000000000..517100d66 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopInit_8cpp-source.html @@ -0,0 +1,67 @@ + + +ParadisEO-MOEOMovingObjects: FlowShopInit.cpp Source File + + + + +
+
+

FlowShopInit.cpp

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // FlowShopInit.cpp
+00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007
+00006 /*
+00007     This library...
+00008 
+00009     Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr
+00010  */
+00011 //-----------------------------------------------------------------------------
+00012 
+00013 #include <FlowShopInit.h>
+00014 
+00015 
+00016 FlowShopInit::FlowShopInit(unsigned int _N) : N(_N)
+00017 {}
+00018 
+00019 
+00020 void FlowShopInit::operator()(FlowShop & _flowshop)
+00021 {
+00022     // scheduling vector
+00023     std::vector<unsigned int> scheduling(N);
+00024     // initialisation of possible values
+00025     std::vector<unsigned int> possibles(N);
+00026     for (unsigned int i=0 ; i<N ; i++)
+00027         possibles[i] = i;
+00028     // random initialization
+00029     unsigned int rInd;     // random index
+00030     for (unsigned int i=0; i<N; i++)
+00031     {
+00032         rInd = (unsigned int) rng.uniform(N-i);
+00033         scheduling[i] = possibles[rInd];
+00034         possibles[rInd] = possibles[N-i-1];
+00035     }
+00036     _flowshop.resize(N);
+00037     _flowshop.value(scheduling);
+00038     _flowshop.invalidate();        // IMPORTANT in case the _genotype is old
+00039 }
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopInit_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopInit_8h-source.html new file mode 100644 index 000000000..a2f0e2d18 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopInit_8h-source.html @@ -0,0 +1,63 @@ + + +ParadisEO-MOEOMovingObjects: FlowShopInit.h Source File + + + + +
+
+

FlowShopInit.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // FlowShopInit.h
+00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007
+00006 /*
+00007     This library...
+00008 
+00009     Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr
+00010  */
+00011 //-----------------------------------------------------------------------------
+00012 
+00013 #ifndef FLOWSHOPINIT_H_
+00014 #define FLOWSHOPINIT_H_
+00015 
+00016 #include <eoInit.h>
+00017 #include <FlowShop.h>
+00018 
+00022 class FlowShopInit : public eoInit<FlowShop>
+00023 {
+00024 public:
+00025 
+00030     FlowShopInit(unsigned int _N);
+00031 
+00032 
+00037     void operator()(FlowShop & _flowshop);
+00038 
+00039 
+00040 private:
+00041 
+00043     unsigned int N;
+00044 
+00045 };
+00046 
+00047 #endif /*FLOWSHOPINIT_H_*/
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopObjectiveVectorTraits_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopObjectiveVectorTraits_8cpp-source.html new file mode 100644 index 000000000..e2151de10 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopObjectiveVectorTraits_8cpp-source.html @@ -0,0 +1,60 @@ + + +ParadisEO-MOEOMovingObjects: FlowShopObjectiveVectorTraits.cpp Source File + + + + +
+
+

FlowShopObjectiveVectorTraits.cpp

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // FlowShopObjectiveVectorTraits.cpp
+00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007
+00006 /*
+00007     This library...
+00008 
+00009     Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr
+00010  */
+00011 //-----------------------------------------------------------------------------
+00012 
+00013 #include <FlowShopObjectiveVectorTraits.h>
+00014 
+00015 
+00016 bool FlowShopObjectiveVectorTraits::minimizing (int _i)
+00017 {
+00018     // minimizing both
+00019     return true;
+00020 }
+00021 
+00022 bool FlowShopObjectiveVectorTraits::maximizing (int _i)
+00023 {
+00024     // minimizing both
+00025     return false;
+00026 }
+00027 
+00028 unsigned int FlowShopObjectiveVectorTraits::nObjectives ()
+00029 {
+00030     // 2 objectives
+00031     return 2;
+00032 }
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopObjectiveVectorTraits_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopObjectiveVectorTraits_8h-source.html new file mode 100644 index 000000000..019fc5f7c --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopObjectiveVectorTraits_8h-source.html @@ -0,0 +1,60 @@ + + +ParadisEO-MOEOMovingObjects: FlowShopObjectiveVectorTraits.h Source File + + + + +
+
+

FlowShopObjectiveVectorTraits.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // FlowShopObjectiveVectorTraits.h
+00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007
+00006 /*
+00007     This library...
+00008 
+00009     Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr
+00010  */
+00011 //-----------------------------------------------------------------------------
+00012 
+00013 #ifndef FLOWSHOPOBJECTIVEVECTORTRAITS_H_
+00014 #define FLOWSHOPOBJECTIVEVECTORTRAITS_H_
+00015 
+00016 #include <core/moeoObjectiveVectorTraits.h>
+00017 
+00021 class FlowShopObjectiveVectorTraits : public moeoObjectiveVectorTraits
+00022 {
+00023 public:
+00024 
+00029     static bool minimizing (int _i);
+00030 
+00031 
+00036     static bool maximizing (int _i);
+00037 
+00038 
+00042     static unsigned int nObjectives ();
+00043 
+00044 };
+00045 
+00046 #endif /*FLOWSHOPOBJECTIVEVECTORTRAITS_H_*/
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopObjectiveVector_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopObjectiveVector_8h-source.html new file mode 100644 index 000000000..72287fcf6 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopObjectiveVector_8h-source.html @@ -0,0 +1,49 @@ + + +ParadisEO-MOEOMovingObjects: FlowShopObjectiveVector.h Source File + + + + +
+
+

FlowShopObjectiveVector.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // FlowShopObjectiveVector.h
+00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007
+00006 /*
+00007     This library...
+00008 
+00009     Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr
+00010  */
+00011 //-----------------------------------------------------------------------------
+00012 
+00013 #ifndef FLOWSHOPOBJECTIVEVECTOR_H_
+00014 #define FLOWSHOPOBJECTIVEVECTOR_H_
+00015 
+00016 #include <core/moeoRealObjectiveVector.h>
+00017 #include <FlowShopObjectiveVectorTraits.h>
+00018 
+00022 typedef moeoRealObjectiveVector < FlowShopObjectiveVectorTraits > FlowShopObjectiveVector;
+00023 
+00024 #endif /*FLOWSHOPOBJECTIVEVECTOR_H_*/
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopOpCrossoverQuad_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopOpCrossoverQuad_8cpp-source.html new file mode 100644 index 000000000..d043498ed --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopOpCrossoverQuad_8cpp-source.html @@ -0,0 +1,112 @@ + + +ParadisEO-MOEOMovingObjects: FlowShopOpCrossoverQuad.cpp Source File + + + + +
+
+

FlowShopOpCrossoverQuad.cpp

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // FlowShopOpCrossoverQuad.cpp
+00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007
+00006 /*
+00007     This library...
+00008 
+00009     Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr
+00010  */
+00011 //-----------------------------------------------------------------------------
+00012 
+00013 #include <FlowShopOpCrossoverQuad.h>
+00014 
+00015 
+00016 std::string FlowShopOpCrossoverQuad::className() const
+00017 {
+00018     return "FlowShopOpCrossoverQuad";
+00019 }
+00020 
+00021 
+00022 bool FlowShopOpCrossoverQuad::operator()(FlowShop & _flowshop1, FlowShop & _flowshop2)
+00023 {
+00024     bool oneAtLeastIsModified;
+00025     // computation of the 2 random points
+00026     unsigned int point1, point2;
+00027     do
+00028     {
+00029         point1 =  rng.random(std::min(_flowshop1.size(), _flowshop2.size()));
+00030         point2 =  rng.random(std::min(_flowshop1.size(), _flowshop2.size()));
+00031     } while (fabs((double) point1-point2) <= 2);
+00032     // computation of the offspring
+00033     FlowShop offspring1 = generateOffspring(_flowshop1, _flowshop2, point1, point2);
+00034     FlowShop offspring2 = generateOffspring(_flowshop2, _flowshop1, point1, point2);
+00035     // does at least one genotype has been modified ?
+00036     if ((_flowshop1 != offspring1) || (_flowshop2 != offspring2))
+00037     {
+00038         // update
+00039         _flowshop1.value(offspring1);
+00040         _flowshop2.value(offspring2);
+00041         // at least one genotype has been modified
+00042         oneAtLeastIsModified = true;
+00043     }
+00044     else
+00045     {
+00046         // no genotype has been modified
+00047         oneAtLeastIsModified = false;
+00048     }
+00049     // return 'true' if at least one genotype has been modified
+00050     return oneAtLeastIsModified;
+00051 }
+00052 
+00053 
+00054 FlowShop FlowShopOpCrossoverQuad::generateOffspring(const FlowShop & _parent1, const FlowShop & _parent2, unsigned int _point1, unsigned int _point2)
+00055 {
+00056     FlowShop result = _parent1;
+00057     std::vector<bool> taken_values(result.size(), false);
+00058     if (_point1 > _point2)
+00059         std::swap(_point1, _point2);
+00060     /* first parent */
+00061     for (unsigned int i=0 ; i<=_point1 ; i++)
+00062     {
+00063         // result[i] == _parent1[i]
+00064         taken_values[_parent1[i]] = true;
+00065     }
+00066     for (unsigned int i=_point2 ; i<result.size() ; i++)
+00067     {
+00068         // result[i] == _parent1[i]
+00069         taken_values[_parent1[i]] = true;
+00070     }
+00071     /* second parent */
+00072     unsigned int i = _point1+1;
+00073     unsigned int j = 0;
+00074     while (i<_point2 && j<_parent2.size())
+00075     {
+00076         if (! taken_values[_parent2[j]])
+00077         {
+00078             result[i] = _parent2[j];
+00079             i++;
+00080         }
+00081         j++;
+00082     }
+00083     return result;
+00084 }
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopOpCrossoverQuad_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopOpCrossoverQuad_8h-source.html new file mode 100644 index 000000000..3e74236d7 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopOpCrossoverQuad_8h-source.html @@ -0,0 +1,63 @@ + + +ParadisEO-MOEOMovingObjects: FlowShopOpCrossoverQuad.h Source File + + + + +
+
+

FlowShopOpCrossoverQuad.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // FlowShopOpCrossoverQuad.h
+00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007
+00006 /*
+00007     This library...
+00008 
+00009     Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr
+00010  */
+00011 //-----------------------------------------------------------------------------
+00012 
+00013 #ifndef FLOWSHOPOPCROSSOVERQUAD_H_
+00014 #define FLOWSHOPOPCROSSOVERQUAD_H_
+00015 
+00016 #include <eoOp.h>
+00017 #include <FlowShop.h>
+00018 
+00022 class FlowShopOpCrossoverQuad : public eoQuadOp < FlowShop >
+00023 {
+00024 public:
+00025 
+00029     std::string className() const;
+00030 
+00031 
+00037     bool operator()(FlowShop & _flowshop1, FlowShop & _flowshop2);
+00038 
+00039 
+00040 private:
+00041 
+00049     FlowShop generateOffspring(const FlowShop & _parent1, const FlowShop & _parent2, unsigned int _point1, unsigned int _point2);
+00050 
+00051 };
+00052 
+00053 #endif /*FLOWSHOPOPCROSSOVERQUAD_H_*/
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopOpMutationExchange_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopOpMutationExchange_8cpp-source.html new file mode 100644 index 000000000..b1bb51814 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopOpMutationExchange_8cpp-source.html @@ -0,0 +1,78 @@ + + +ParadisEO-MOEOMovingObjects: FlowShopOpMutationExchange.cpp Source File + + + + +
+
+

FlowShopOpMutationExchange.cpp

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // FlowShopOpCrossoverQuad.cpp
+00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007
+00006 /*
+00007     This library...
+00008 
+00009     Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr
+00010  */
+00011 //-----------------------------------------------------------------------------
+00012 
+00013 #include <FlowShopOpMutationExchange.h>
+00014 
+00015 
+00016 std::string FlowShopOpMutationExchange::className() const
+00017 {
+00018     return "FlowShopOpMutationExchange";
+00019 }
+00020 
+00021 
+00022 bool FlowShopOpMutationExchange::operator()(FlowShop & _flowshop)
+00023 {
+00024     bool isModified;
+00025     FlowShop result = _flowshop;
+00026     // computation of the 2 random points
+00027     unsigned int point1, point2;
+00028     do
+00029     {
+00030         point1 = rng.random(result.size());
+00031         point2 = rng.random(result.size());
+00032     } while (point1 == point2);
+00033     // swap
+00034     std::swap (result[point1], result[point2]);
+00035     // update (if necessary)
+00036     if (result != _flowshop)
+00037     {
+00038         // update
+00039         _flowshop.value(result);
+00040         // the genotype has been modified
+00041         isModified = true;
+00042     }
+00043     else
+00044     {
+00045         // the genotype has not been modified
+00046         isModified = false;
+00047     }
+00048     // return 'true' if the genotype has been modified
+00049     return isModified;
+00050 }
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopOpMutationExchange_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopOpMutationExchange_8h-source.html new file mode 100644 index 000000000..36e594109 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopOpMutationExchange_8h-source.html @@ -0,0 +1,58 @@ + + +ParadisEO-MOEOMovingObjects: FlowShopOpMutationExchange.h Source File + + + + +
+
+

FlowShopOpMutationExchange.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // FlowShopOpCrossoverQuad.h
+00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007
+00006 /*
+00007     This library...
+00008 
+00009     Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr
+00010  */
+00011 //-----------------------------------------------------------------------------
+00012 
+00013 #ifndef FLOWSHOPOPMUTATIONEXCHANGE_H_
+00014 #define FLOWSHOPOPMUTATIONEXCHANGE_H_
+00015 
+00016 #include <eoOp.h>
+00017 #include <FlowShop.h>
+00018 
+00022 class FlowShopOpMutationExchange : public eoMonOp<FlowShop>
+00023 {
+00024 public:
+00025 
+00029     std::string className() const;
+00030 
+00031 
+00036     bool operator()(FlowShop & _flowshop);
+00037 
+00038 };
+00039 
+00040 #endif /*FLOWSHOPOPMUTATIONEXCHANGE_H_*/
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopOpMutationShift_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopOpMutationShift_8cpp-source.html new file mode 100644 index 000000000..4d8cc7198 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopOpMutationShift_8cpp-source.html @@ -0,0 +1,88 @@ + + +ParadisEO-MOEOMovingObjects: FlowShopOpMutationShift.cpp Source File + + + + +
+
+

FlowShopOpMutationShift.cpp

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // FlowShopOpMutationShift.cpp
+00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007
+00006 /*
+00007     This library...
+00008 
+00009     Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr
+00010  */
+00011 //-----------------------------------------------------------------------------
+00012 
+00013 #include <FlowShopOpMutationShift.h>
+00014 
+00015 
+00016 std::string FlowShopOpMutationShift::className() const
+00017 {
+00018     return "FlowShopOpMutationShift";
+00019 }
+00020 
+00021 
+00022 bool FlowShopOpMutationShift::operator()(FlowShop & _flowshop)
+00023 {
+00024     bool isModified;
+00025     int direction;
+00026     unsigned int tmp;
+00027     FlowShop result = _flowshop;
+00028     // computation of the 2 random points
+00029     unsigned int point1, point2;
+00030     do
+00031     {
+00032         point1 = rng.random(result.size());
+00033         point2 = rng.random(result.size());
+00034     } while (point1 == point2);
+00035     // direction
+00036     if (point1 < point2)
+00037         direction = 1;
+00038     else
+00039         direction = -1;
+00040     // mutation
+00041     tmp = result[point1];
+00042     for (unsigned int i=point1 ; i!=point2 ; i+=direction)
+00043         result[i] = result[i+direction];
+00044     result[point2] = tmp;
+00045     // update (if necessary)
+00046     if (result != _flowshop)
+00047     {
+00048         // update
+00049         _flowshop.value(result);
+00050         // the genotype has been modified
+00051         isModified = true;
+00052     }
+00053     else
+00054     {
+00055         // the genotype has not been modified
+00056         isModified = false;
+00057     }
+00058     // return 'true' if the genotype has been modified
+00059     return isModified;
+00060 }
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopOpMutationShift_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopOpMutationShift_8h-source.html new file mode 100644 index 000000000..da9808f6f --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShopOpMutationShift_8h-source.html @@ -0,0 +1,58 @@ + + +ParadisEO-MOEOMovingObjects: FlowShopOpMutationShift.h Source File + + + + +
+
+

FlowShopOpMutationShift.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // FlowShopOpMutationShift.h
+00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007
+00006 /*
+00007     This library...
+00008 
+00009     Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr
+00010  */
+00011 //-----------------------------------------------------------------------------
+00012 
+00013 #ifndef FLOWSHOPOPMUTATIONSHIFT_H_
+00014 #define FLOWSHOPOPMUTATIONSHIFT_H_
+00015 
+00016 #include <eoOp.h>
+00017 #include <FlowShop.h>
+00018 
+00022 class FlowShopOpMutationShift : public eoMonOp < FlowShop >
+00023 {
+00024 public:
+00025 
+00029     std::string className() const;
+00030 
+00031 
+00036     bool operator()(FlowShop & _flowshop);
+00037 
+00038 };
+00039 
+00040 #endif /*FLOWSHOPOPMUTATIONSHIFT_H_*/
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShop_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShop_8cpp-source.html new file mode 100644 index 000000000..30cfded2e --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShop_8cpp-source.html @@ -0,0 +1,46 @@ + + +ParadisEO-MOEOMovingObjects: FlowShop.cpp Source File + + + + +
+
+

FlowShop.cpp

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // FlowShop.cpp
+00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007
+00006 /*
+00007     This library...
+00008 
+00009     Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr
+00010  */
+00011 //-----------------------------------------------------------------------------
+00012 
+00013 #include <FlowShop.h>
+00014 
+00015 std::string FlowShop::className() const
+00016 {
+00017     return "FlowShop";
+00018 }
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShop_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShop_8h-source.html new file mode 100644 index 000000000..10873c602 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/FlowShop_8h-source.html @@ -0,0 +1,55 @@ + + +ParadisEO-MOEOMovingObjects: FlowShop.h Source File + + + + +
+
+

FlowShop.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // FlowShop.h
+00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007
+00006 /*
+00007     This library...
+00008 
+00009     Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr
+00010  */
+00011 //-----------------------------------------------------------------------------
+00012 
+00013 #ifndef FLOWSHOP_H_
+00014 #define FLOWSHOP_H_
+00015 
+00016 #include <core/moeoVector.h>
+00017 #include <FlowShopObjectiveVector.h>
+00018 
+00022 class FlowShop: public moeoVector < FlowShopObjectiveVector , double , double , unsigned int >
+00023 {
+00024 public:
+00025 
+00029     std::string className() const;
+00030 
+00031 };
+00032 
+00033 #endif /*FLOWSHOP_H_*/
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/README-source.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/README-source.html new file mode 100644 index 000000000..fbf74993d --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/README-source.html @@ -0,0 +1,108 @@ + + +ParadisEO-MOEOMovingObjects: README Source File + + + + +
+
+

README

00001                 PARADISEO-MOEO README FILE
+00002 =======================================================================
+00003          check latest news at http://paradiseo.gforge.inria.fr/
+00004 =======================================================================
+00005 
+00006 Welcome to ParadisEO-MOEO, the Multi-Objective Evolving Objects library.
+00007 The latest news about ParadisEO-MOEO can be found on the gforge repository at
+00008 http://paradiseo.gforge.inria.fr/
+00009 In case of any problem, please e-mail us at
+00010 paradiseo-help@lists.gforge.inria.fr
+00011 
+00012 
+00013 =======================================================================
+00014                         BUILDING PARADISEO-MOEO
+00015 =======================================================================
+00016 The basic installation procedure goes the following.
+00017 
+00018 To compile paradiseo-moeo in the default directory,
+00019 go to paradiseo-moeo/build/ and run:
+00020     > cmake ../ -Dconfig=<path to the install.cmake file>
+00021     > make
+00022     // for an easy-use of the provided lessons
+00023     > make install
+00024     // optional (if the documentation is not already available)
+00025     > make doc
+00026 
+00027 To compile paradiseo-moeo anywhere else, simply run:
+00028     > cmake $(MOEO) -Dconfig=<path to the install.cmake file>
+00029     > make
+00030     // for an easy-use of the provided lessons
+00031     > make install
+00032     // optional (if the documentation is not already available)
+00033     > make doc
+00034 
+00035 where $(MOEO) is the top-level directory of PARADISEO-MOEO.
+00036 
+00037 To clean everything, simply run
+00038     > make clean
+00039 
+00040 =======================================================================
+00041                           DIRECTORY STRUCTURE
+00042 =======================================================================
+00043 After unpacking the archive file, you should end up with the following
+00044 structure:
+00045 
+00046 .../                       The main PARADISEO-MOEO directory, created when unpacking.
+00047    |
+00048    |
+00049    +-- build               BUILD directory that contains libraries and executable files.
+00050    |
+00051    |
+00052    +-- src                 SOURCE directory that contains PARADISEO-MOEO source files.
+00053    |
+00054    |
+00055    +-- doc                 DOCUMENTATION directory (generated by Doxygen).
+00056    |   |
+00057    |   +-- html            HTML files - start at index.html.
+00058    |   |
+00059    |   +-- latex           latex files - use to generate Postcript doc.
+00060    |   |
+00061    |   +-- man             Unix man format documentation.
+00062    |
+00063    |
+00064    +-- tutorial            TUTORIAL directory that contains with lessons.
+00065        |
+00066        +-- examples        APPLICATIONS - one directory per separate application.
+00067        |   |
+00068        |   +-- flowshop    Flow-shop scheduling problem example source files.
+00069        |       |
+00070        |       +-- benchs  Benchmark suites for the flow-shop.
+00071        |
+00072        +-- Lesson1         A bi-objective flow-shop problem example solved using main MOEAs.
+00073        |
+00074        +-- Lesson2         NSGA-II to solve the SCH1 problem.
+00075 
+00076 =======================================================================
+00077                                  NOTES
+00078 =======================================================================
+00079 
+00080 Mailing list : paradiseo-help@lists.gforge.inria.fr
+

Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/Sch1_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/Sch1_8cpp-source.html new file mode 100644 index 000000000..95e3646b8 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/Sch1_8cpp-source.html @@ -0,0 +1,135 @@ + + +ParadisEO-MOEOMovingObjects: Sch1.cpp Source File + + + + +
+
+

Sch1.cpp

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // Sch1.cpp
+00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007
+00006 /*
+00007     This library...
+00008 
+00009     Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr
+00010  */
+00011 //-----------------------------------------------------------------------------
+00012 
+00013 #include <stdio.h>
+00014 #include <moeo>
+00015 #include <es/eoRealInitBounded.h>
+00016 #include <es/eoRealOp.h>
+00017 
+00018 using namespace std;
+00019 
+00020 // the moeoObjectiveVectorTraits : minimizing 2 objectives
+00021 class Sch1ObjectiveVectorTraits : public moeoObjectiveVectorTraits
+00022 {
+00023 public:
+00024     static bool minimizing (int i)
+00025     {
+00026         return true;
+00027     }
+00028     static bool maximizing (int i)
+00029     {
+00030         return false;
+00031     }
+00032     static unsigned int nObjectives ()
+00033     {
+00034         return 2;
+00035     }
+00036 };
+00037 
+00038 
+00039 // objective vector of real values
+00040 typedef moeoRealObjectiveVector < Sch1ObjectiveVectorTraits > Sch1ObjectiveVector;
+00041 
+00042 
+00043 // multi-objective evolving object for the Sch1 problem
+00044 class Sch1 : public moeoRealVector < Sch1ObjectiveVector, double, double >
+00045 {
+00046 public:
+00047     Sch1() : moeoRealVector < Sch1ObjectiveVector, double, double > (1) {}
+00048 };
+00049 
+00050 
+00051 // evaluation of objective functions
+00052 class Sch1Eval : public moeoEvalFunc < Sch1 >
+00053 {
+00054 public:
+00055     void operator () (Sch1 & _sch1)
+00056     {
+00057         if (_sch1.invalidObjectiveVector())
+00058         {
+00059             Sch1ObjectiveVector objVec;
+00060             double x = _sch1[0];
+00061             objVec[0] = x * x;
+00062             objVec[1] = (x - 2.0) * (x - 2.0);
+00063             _sch1.objectiveVector(objVec);
+00064         }
+00065     }
+00066 };
+00067 
+00068 
+00069 // main
+00070 int main (int argc, char *argv[])
+00071 {
+00072     // parameters
+00073     unsigned int POP_SIZE = 20;
+00074     unsigned int MAX_GEN = 100;
+00075     double M_EPSILON = 0.01;
+00076     double P_CROSS = 0.25;
+00077     double P_MUT = 0.35;
+00078 
+00079     // objective functions evaluation
+00080     Sch1Eval eval;
+00081 
+00082     // crossover and mutation
+00083     eoQuadCloneOp < Sch1 > xover;
+00084     eoUniformMutation < Sch1 > mutation (M_EPSILON);
+00085 
+00086     // generate initial population
+00087     eoRealVectorBounds bounds (1, 0.0, 2.0);    // [0, 2]
+00088     eoRealInitBounded < Sch1 > init (bounds);
+00089     eoPop < Sch1 > pop (POP_SIZE, init);
+00090 
+00091     // build NSGA-II
+00092     moeoNSGAII < Sch1 > nsgaII (MAX_GEN, eval, xover, P_CROSS, mutation, P_MUT);
+00093 
+00094     // run the algo
+00095     nsgaII (pop);
+00096 
+00097     // extract first front of the final population using an moeoArchive (this is the output of nsgaII)
+00098     moeoArchive < Sch1 > arch;
+00099     arch.update (pop);
+00100 
+00101     // printing of the final archive
+00102     cout << "Final Archive" << endl;
+00103     arch.sortedPrintOn (cout);
+00104     cout << endl;
+00105 
+00106     return EXIT_SUCCESS;
+00107 }
+

Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShop-members.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShop-members.html new file mode 100644 index 000000000..5a213f39c --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShop-members.html @@ -0,0 +1,86 @@ + + +ParadisEO-MOEOMovingObjects: Member List + + + + +
+
+ +

FlowShop Member List

This is the complete list of members for FlowShop, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AtomType typedefmoeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType >
className() const FlowShop [virtual]
ContainerType typedefmoeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType >
Diversity typedefMOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity >
diversity() const MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
diversity(const Diversity &_diversityValue)MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
EO()EO< MOEOObjectiveVector >
EO()EO< MOEOObjectiveVector >
Fitness typedefMOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity >
fitness() const MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
fitness(const Fitness &_fitnessValue)MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
EO< MOEOObjectiveVector >::fitness(const Fitness &_fitness)EO< MOEOObjectiveVector >
EO< MOEOObjectiveVector >::fitness(performance_type perf)EO< MOEOObjectiveVector >
fitness_traits typedefEO< MOEOObjectiveVector >
fitnessReference()EO< MOEOObjectiveVector >
invalid() const MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
invalidate()MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
invalidate_worth(void)EO< MOEOObjectiveVector >
invalidateDiversity()MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
invalidateFitness()MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
invalidateObjectiveVector()MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
invalidDiversity() const MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
invalidFitness() const MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
invalidObjectiveVector() const MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
MOEO()MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
moeoVector(unsigned int _size=0, GeneType _value=GeneType())moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType > [inline]
ObjectiveVector typedefMOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity >
objectiveVector() const MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
objectiveVector(const ObjectiveVector &_objectiveVectorValue)MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
operator<(const moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType > &_moeo) const moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType > [inline]
MOEO::operator<(const MOEO &_other) const MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
EO< MOEOObjectiveVector >::operator<(const EO &_eo2) const EO< MOEOObjectiveVector >
EO< MOEOObjectiveVector >::operator<(const EO< Fitness, Traits > &other) const EO< MOEOObjectiveVector >
operator>(const EO &_eo2) const EO< MOEOObjectiveVector >
operator>(const EO< Fitness, Traits > &other) const EO< MOEOObjectiveVector >
performance(performance_type perf)EO< MOEOObjectiveVector >
performance(void) const EO< MOEOObjectiveVector >
performance_type typedefEO< MOEOObjectiveVector >
printOn(std::ostream &_os) const moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType > [inline, virtual]
readFrom(std::istream &_is)moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType > [inline, virtual]
storage_type typedefEO< MOEOObjectiveVector >
value(const std::vector< GeneType > &_v)moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType > [inline]
worth(worth_type worth)EO< MOEOObjectiveVector >
worth(void) const EO< MOEOObjectiveVector >
worth_type typedefEO< MOEOObjectiveVector >
~EO()EO< MOEOObjectiveVector > [virtual]
~eoObject()eoObject [virtual]
~eoPersistent()eoPersistent [virtual]
~eoPrintable()eoPrintable [virtual]
~MOEO()MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline, virtual]


Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShop.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShop.html new file mode 100644 index 000000000..095edf912 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShop.html @@ -0,0 +1,65 @@ + + +ParadisEO-MOEOMovingObjects: FlowShop Class Reference + + + + +
+
+ +

FlowShop Class Reference

Structure of the genotype for the flow-shop scheduling problem: a vector of unsigned int int. +More... +

+#include <FlowShop.h> +

+

Inheritance diagram for FlowShop: +

+ +moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType > +MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > +EO< MOEOObjectiveVector > +eoObject +eoPersistent +eoPrintable + +List of all members. + + + + + +

Public Member Functions

+std::string className () const
 class name
+

Detailed Description

+Structure of the genotype for the flow-shop scheduling problem: a vector of unsigned int int. +

+ +

+Definition at line 22 of file FlowShop.h.


The documentation for this class was generated from the following files: +
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShop.png b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShop.png new file mode 100644 index 000000000..e2566fff8 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShop.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopBenchmarkParser-members.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopBenchmarkParser-members.html new file mode 100644 index 000000000..938204793 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopBenchmarkParser-members.html @@ -0,0 +1,47 @@ + + +ParadisEO-MOEOMovingObjects: Member List + + + + +
+
+ +

FlowShopBenchmarkParser Member List

This is the complete list of members for FlowShopBenchmarkParser, including all inherited members.

+ + + + + + + + + + + +
dFlowShopBenchmarkParser [private]
FlowShopBenchmarkParser(const std::string _benchmarkFileName)FlowShopBenchmarkParser
getD()FlowShopBenchmarkParser
getM()FlowShopBenchmarkParser
getN()FlowShopBenchmarkParser
getP()FlowShopBenchmarkParser
init(const std::string _benchmarkFileName)FlowShopBenchmarkParser [private]
MFlowShopBenchmarkParser [private]
NFlowShopBenchmarkParser [private]
pFlowShopBenchmarkParser [private]
printOn(std::ostream &_os) const FlowShopBenchmarkParser


Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopBenchmarkParser.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopBenchmarkParser.html new file mode 100644 index 000000000..0ff249e64 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopBenchmarkParser.html @@ -0,0 +1,189 @@ + + +ParadisEO-MOEOMovingObjects: FlowShopBenchmarkParser Class Reference + + + + +
+
+ +

FlowShopBenchmarkParser Class Reference

Class to handle parameters of a flow-shop instance from a benchmark file. +More... +

+#include <FlowShopBenchmarkParser.h> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 FlowShopBenchmarkParser (const std::string _benchmarkFileName)
 Ctor.
+const unsigned int getM ()
 the number of machines
+const unsigned int getN ()
 the number of jobs
+const std::vector< std::vector<
+ unsigned int > > 
getP ()
 the processing times
+const std::vector< unsigned
+int > 
getD ()
 the due-dates
void printOn (std::ostream &_os) const
 printing.

Private Member Functions

void init (const std::string _benchmarkFileName)
 Initialisation of the parameters with the data contained in the benchmark file.

Private Attributes

+unsigned int M
 number of machines
+unsigned int N
 number of jobs
+std::vector< std::vector<
+ unsigned int > > 
p
 p[i][j] = processing time of job j on machine i
+std::vector< unsigned int > d
 d[j] = due-date of the job j
+


Detailed Description

+Class to handle parameters of a flow-shop instance from a benchmark file. +

+ +

+Definition at line 23 of file FlowShopBenchmarkParser.h.


Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + +
FlowShopBenchmarkParser::FlowShopBenchmarkParser (const std::string  _benchmarkFileName  ) 
+
+
+ +

+Ctor. +

+

Parameters:
+ + +
_benchmarkFileName the name of the benchmark file
+
+ +

+Definition at line 16 of file FlowShopBenchmarkParser.cpp. +

+References init(). +

+

+


Member Function Documentation

+ +
+
+ + + + + + + + + +
void FlowShopBenchmarkParser::printOn (std::ostream &  _os  )  const
+
+
+ +

+printing. +

+.. +

+Definition at line 46 of file FlowShopBenchmarkParser.cpp. +

+References d, M, N, and p. +

+

+ +

+
+ + + + + + + + + +
void FlowShopBenchmarkParser::init (const std::string  _benchmarkFileName  )  [private]
+
+
+ +

+Initialisation of the parameters with the data contained in the benchmark file. +

+

Parameters:
+ + +
_benchmarkFileName the name of the benchmark file
+
+ +

+Definition at line 64 of file FlowShopBenchmarkParser.cpp. +

+References d, M, N, and p. +

+Referenced by FlowShopBenchmarkParser(). +

+

+


The documentation for this class was generated from the following files: +
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopEval-members.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopEval-members.html new file mode 100644 index 000000000..c02e9596b --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopEval-members.html @@ -0,0 +1,51 @@ + + +ParadisEO-MOEOMovingObjects: Member List + + + + +
+
+ +

FlowShopEval Member List

This is the complete list of members for FlowShopEval, including all inherited members.

+ + + + + + + + + + + + + + + +
completionTime(const FlowShop &_flowshop)FlowShopEval [private]
dFlowShopEval [private]
EOFitT typedefeoEvalFunc< FlowShop >
EOType typedefeoEvalFunc< FlowShop >
FlowShopEval(unsigned int _M, unsigned int _N, const std::vector< std::vector< unsigned int > > &_p, const std::vector< unsigned int > &_d)FlowShopEval
functor_category()eoUF< A1, R > [static]
MFlowShopEval [private]
makespan(const FlowShop &_flowshop)FlowShopEval [private]
NFlowShopEval [private]
operator()(FlowShop &_flowshop)FlowShopEval
moeoEvalFunc< FlowShop >::operator()(A1)=0eoUF< A1, R > [pure virtual]
pFlowShopEval [private]
tardiness(const FlowShop &_flowshop)FlowShopEval [private]
~eoFunctorBase()eoFunctorBase [virtual]
~eoUF()eoUF< A1, R > [virtual]


Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopEval.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopEval.html new file mode 100644 index 000000000..4776c3feb --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopEval.html @@ -0,0 +1,279 @@ + + +ParadisEO-MOEOMovingObjects: FlowShopEval Class Reference + + + + +
+
+ +

FlowShopEval Class Reference

Evaluation of the objective vector a (multi-objective) FlowShop object. +More... +

+#include <FlowShopEval.h> +

+

Inheritance diagram for FlowShopEval: +

+ +moeoEvalFunc< FlowShop > +eoEvalFunc< FlowShop > +eoUF< A1, R > +eoFunctorBase + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 FlowShopEval (unsigned int _M, unsigned int _N, const std::vector< std::vector< unsigned int > > &_p, const std::vector< unsigned int > &_d)
 Ctor.
void operator() (FlowShop &_flowshop)
 computation of the multi-objective evaluation of a FlowShop object

Private Member Functions

double makespan (const FlowShop &_flowshop)
 computation of the makespan
double tardiness (const FlowShop &_flowshop)
 computation of the tardiness
std::vector< std::vector<
+ unsigned int > > 
completionTime (const FlowShop &_flowshop)
 computation of the completion times of a scheduling (for each job on each machine) C[i][j] = completion of the jth job of the scheduling on the ith machine

Private Attributes

+unsigned int M
 number of machines
+unsigned int N
 number of jobs
+std::vector< std::vector<
+ unsigned int > > 
p
 p[i][j] = processing time of job j on machine i
+std::vector< unsigned int > d
 d[j] = due-date of the job j
+

Detailed Description

+Evaluation of the objective vector a (multi-objective) FlowShop object. +

+ +

+Definition at line 23 of file FlowShopEval.h.


Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FlowShopEval::FlowShopEval (unsigned int  _M,
unsigned int  _N,
const std::vector< std::vector< unsigned int > > &  _p,
const std::vector< unsigned int > &  _d 
)
+
+
+ +

+Ctor. +

+

Parameters:
+ + + + + +
_M the number of machines
_N the number of jobs to schedule
_p the processing times
_d the due dates
+
+ +

+Definition at line 16 of file FlowShopEval.cpp. +

+

+


Member Function Documentation

+ +
+
+ + + + + + + + + +
void FlowShopEval::operator() (FlowShop _flowshop  ) 
+
+
+ +

+computation of the multi-objective evaluation of a FlowShop object +

+

Parameters:
+ + +
_flowshop the FlowShop object to evaluate
+
+ +

+Definition at line 21 of file FlowShopEval.cpp. +

+References makespan(), MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity >::objectiveVector(), and tardiness(). +

+

+ +

+
+ + + + + + + + + +
double FlowShopEval::makespan (const FlowShop _flowshop  )  [private]
+
+
+ +

+computation of the makespan +

+

Parameters:
+ + +
_flowshop the genotype to evaluate
+
+ +

+Definition at line 31 of file FlowShopEval.cpp. +

+References completionTime(), M, and N. +

+Referenced by operator()(). +

+

+ +

+
+ + + + + + + + + +
double FlowShopEval::tardiness (const FlowShop _flowshop  )  [private]
+
+
+ +

+computation of the tardiness +

+

Parameters:
+ + +
_flowshop the genotype to evaluate
+
+ +

+Definition at line 40 of file FlowShopEval.cpp. +

+References completionTime(), d, M, and N. +

+Referenced by operator()(). +

+

+ +

+
+ + + + + + + + + +
std::vector< std::vector< unsigned int > > FlowShopEval::completionTime (const FlowShop _flowshop  )  [private]
+
+
+ +

+computation of the completion times of a scheduling (for each job on each machine) C[i][j] = completion of the jth job of the scheduling on the ith machine +

+

Parameters:
+ + +
_flowshop the genotype to evaluate
+
+ +

+Definition at line 53 of file FlowShopEval.cpp. +

+References M, N, and p. +

+Referenced by makespan(), and tardiness(). +

+

+


The documentation for this class was generated from the following files: +
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopEval.png b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopEval.png new file mode 100644 index 000000000..3dbdc85d2 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopEval.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopInit-members.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopInit-members.html new file mode 100644 index 000000000..0abb84936 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopInit-members.html @@ -0,0 +1,44 @@ + + +ParadisEO-MOEOMovingObjects: Member List + + + + +
+
+ +

FlowShopInit Member List

This is the complete list of members for FlowShopInit, including all inherited members.

+ + + + + + + + +
className(void) const eoInit< FlowShop > [virtual]
FlowShopInit(unsigned int _N)FlowShopInit
functor_category()eoUF< A1, R > [static]
NFlowShopInit [private]
operator()(FlowShop &_flowshop)FlowShopInit
eoInit< FlowShop >::operator()(A1)=0eoUF< A1, R > [pure virtual]
~eoFunctorBase()eoFunctorBase [virtual]
~eoUF()eoUF< A1, R > [virtual]


Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopInit.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopInit.html new file mode 100644 index 000000000..279433d08 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopInit.html @@ -0,0 +1,131 @@ + + +ParadisEO-MOEOMovingObjects: FlowShopInit Class Reference + + + + +
+
+ +

FlowShopInit Class Reference

Initialization of a random genotype built by the default constructor of the FlowShop class. +More... +

+#include <FlowShopInit.h> +

+

Inheritance diagram for FlowShopInit: +

+ +eoInit< FlowShop > +eoUF< A1, R > +eoFunctorBase + +List of all members. + + + + + + + + + + + + +

Public Member Functions

 FlowShopInit (unsigned int _N)
 Ctor.
void operator() (FlowShop &_flowshop)
 builds a random genotype

Private Attributes

+unsigned int N
 the number of jobs (size of a scheduling vector)
+

Detailed Description

+Initialization of a random genotype built by the default constructor of the FlowShop class. +

+ +

+Definition at line 22 of file FlowShopInit.h.


Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + +
FlowShopInit::FlowShopInit (unsigned int  _N  ) 
+
+
+ +

+Ctor. +

+

Parameters:
+ + +
_N the number of jobs to schedule
+
+ +

+Definition at line 16 of file FlowShopInit.cpp. +

+

+


Member Function Documentation

+ +
+
+ + + + + + + + + +
void FlowShopInit::operator() (FlowShop _flowshop  ) 
+
+
+ +

+builds a random genotype +

+

Parameters:
+ + +
_flowshop a genotype that has been default-constructed
+
+ +

+Definition at line 20 of file FlowShopInit.cpp. +

+References MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity >::invalidate(), N, eoRng::uniform(), and moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType >::value(). +

+

+


The documentation for this class was generated from the following files: +
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopInit.png b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopInit.png new file mode 100644 index 000000000..8b39a2519 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopInit.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopObjectiveVectorTraits-members.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopObjectiveVectorTraits-members.html new file mode 100644 index 000000000..da7cb1737 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopObjectiveVectorTraits-members.html @@ -0,0 +1,43 @@ + + +ParadisEO-MOEOMovingObjects: Member List + + + + +
+
+ +

FlowShopObjectiveVectorTraits Member List

This is the complete list of members for FlowShopObjectiveVectorTraits, including all inherited members.

+ + + + + + + +
maximizing(int _i)FlowShopObjectiveVectorTraits [static]
moeoObjectiveVectorTraits::maximizing(unsigned int _i)moeoObjectiveVectorTraits [inline, static]
minimizing(int _i)FlowShopObjectiveVectorTraits [static]
moeoObjectiveVectorTraits::minimizing(unsigned int _i)moeoObjectiveVectorTraits [inline, static]
nObjectives()FlowShopObjectiveVectorTraits [static]
setup(unsigned int _nObjectives, std::vector< bool > &_bObjectives)moeoObjectiveVectorTraits [inline, static]
tolerance()moeoObjectiveVectorTraits [inline, static]


Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopObjectiveVectorTraits.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopObjectiveVectorTraits.html new file mode 100644 index 000000000..28e7b22fc --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopObjectiveVectorTraits.html @@ -0,0 +1,125 @@ + + +ParadisEO-MOEOMovingObjects: FlowShopObjectiveVectorTraits Class Reference + + + + +
+
+ +

FlowShopObjectiveVectorTraits Class Reference

Definition of the objective vector traits for multi-objective flow-shop problems. +More... +

+#include <FlowShopObjectiveVectorTraits.h> +

+

Inheritance diagram for FlowShopObjectiveVectorTraits: +

+ +moeoObjectiveVectorTraits + +List of all members. + + + + + + + + + + + +

Static Public Member Functions

static bool minimizing (int _i)
 Returns true if the _ith objective have to be minimzed.
static bool maximizing (int _i)
 Returns true if the _ith objective have to be maximzed.
+static unsigned int nObjectives ()
 Returns the number of objectives.
+

Detailed Description

+Definition of the objective vector traits for multi-objective flow-shop problems. +

+ +

+Definition at line 21 of file FlowShopObjectiveVectorTraits.h.


Member Function Documentation

+ +
+
+ + + + + + + + + +
bool FlowShopObjectiveVectorTraits::minimizing (int  _i  )  [static]
+
+
+ +

+Returns true if the _ith objective have to be minimzed. +

+

Parameters:
+ + +
_i index of the objective
+
+ +

+Definition at line 16 of file FlowShopObjectiveVectorTraits.cpp. +

+

+ +

+
+ + + + + + + + + +
bool FlowShopObjectiveVectorTraits::maximizing (int  _i  )  [static]
+
+
+ +

+Returns true if the _ith objective have to be maximzed. +

+

Parameters:
+ + +
_i index of the objective
+
+ +

+Definition at line 22 of file FlowShopObjectiveVectorTraits.cpp. +

+

+


The documentation for this class was generated from the following files: +
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopObjectiveVectorTraits.png b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopObjectiveVectorTraits.png new file mode 100644 index 000000000..dfd860d7c Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopObjectiveVectorTraits.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopOpCrossoverQuad-members.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopOpCrossoverQuad-members.html new file mode 100644 index 000000000..2652da5be --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopOpCrossoverQuad-members.html @@ -0,0 +1,48 @@ + + +ParadisEO-MOEOMovingObjects: Member List + + + + +
+
+ +

FlowShopOpCrossoverQuad Member List

This is the complete list of members for FlowShopOpCrossoverQuad, including all inherited members.

+ + + + + + + + + + + + +
className() const FlowShopOpCrossoverQuad [virtual]
eoOp(OpType _type)eoOp< EOType >
eoOp(const eoOp &_eop)eoOp< EOType >
eoQuadOp()eoQuadOp< FlowShop >
functor_category()eoBF< FlowShop &, FlowShop &, bool > [static]
generateOffspring(const FlowShop &_parent1, const FlowShop &_parent2, unsigned int _point1, unsigned int _point2)FlowShopOpCrossoverQuad [private]
getType() const eoOp< EOType >
operator()(FlowShop &_flowshop1, FlowShop &_flowshop2)FlowShopOpCrossoverQuad [virtual]
OpType enum nameeoOp< EOType >
~eoBF()eoBF< FlowShop &, FlowShop &, bool > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]
~eoOp()eoOp< EOType > [virtual]


Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopOpCrossoverQuad.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopOpCrossoverQuad.html new file mode 100644 index 000000000..a58f6fed2 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopOpCrossoverQuad.html @@ -0,0 +1,169 @@ + + +ParadisEO-MOEOMovingObjects: FlowShopOpCrossoverQuad Class Reference + + + + +
+
+ +

FlowShopOpCrossoverQuad Class Reference

Quadratic crossover operator for flow-shop (modify the both genotypes). +More... +

+#include <FlowShopOpCrossoverQuad.h> +

+

Inheritance diagram for FlowShopOpCrossoverQuad: +

+ +eoQuadOp< FlowShop > +eoOp< EOType > +eoBF< FlowShop &, FlowShop &, bool > +eoFunctorBase + +List of all members. + + + + + + + + + + + + +

Public Member Functions

+std::string className () const
 the class name (used to display statistics)
bool operator() (FlowShop &_flowshop1, FlowShop &_flowshop2)
 eoQuad crossover - _flowshop1 and _flowshop2 are the (future) offspring, i.e.

Private Member Functions

FlowShop generateOffspring (const FlowShop &_parent1, const FlowShop &_parent2, unsigned int _point1, unsigned int _point2)
 generation of an offspring by a 2 points crossover
+

Detailed Description

+Quadratic crossover operator for flow-shop (modify the both genotypes). +

+ +

+Definition at line 22 of file FlowShopOpCrossoverQuad.h.


Member Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool FlowShopOpCrossoverQuad::operator() (FlowShop _flowshop1,
FlowShop _flowshop2 
) [virtual]
+
+
+ +

+eoQuad crossover - _flowshop1 and _flowshop2 are the (future) offspring, i.e. +

+_copies_ of the parents

Parameters:
+ + + +
_flowshop1 the first parent
_flowshop2 the second parent
+
+ +

+Implements eoBF< FlowShop &, FlowShop &, bool >. +

+Definition at line 22 of file FlowShopOpCrossoverQuad.cpp. +

+References generateOffspring(), eoRng::random(), and moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType >::value(). +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FlowShop FlowShopOpCrossoverQuad::generateOffspring (const FlowShop _parent1,
const FlowShop _parent2,
unsigned int  _point1,
unsigned int  _point2 
) [private]
+
+
+ +

+generation of an offspring by a 2 points crossover +

+

Parameters:
+ + + + + +
_parent1 the first parent
_parent2 the second parent
_point1 the first point
_point2 the second point
+
+ +

+Definition at line 54 of file FlowShopOpCrossoverQuad.cpp. +

+Referenced by operator()(). +

+

+


The documentation for this class was generated from the following files: +
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopOpCrossoverQuad.png b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopOpCrossoverQuad.png new file mode 100644 index 000000000..cc942ed89 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopOpCrossoverQuad.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopOpMutationExchange-members.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopOpMutationExchange-members.html new file mode 100644 index 000000000..38c5ff14d --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopOpMutationExchange-members.html @@ -0,0 +1,47 @@ + + +ParadisEO-MOEOMovingObjects: Member List + + + + +
+
+ +

FlowShopOpMutationExchange Member List

This is the complete list of members for FlowShopOpMutationExchange, including all inherited members.

+ + + + + + + + + + + +
className() const FlowShopOpMutationExchange [virtual]
eoMonOp()eoMonOp< FlowShop >
eoOp(OpType _type)eoOp< EOType >
eoOp(const eoOp &_eop)eoOp< EOType >
functor_category()eoUF< FlowShop &, bool > [static]
getType() const eoOp< EOType >
operator()(FlowShop &_flowshop)FlowShopOpMutationExchange [virtual]
OpType enum nameeoOp< EOType >
~eoFunctorBase()eoFunctorBase [virtual]
~eoOp()eoOp< EOType > [virtual]
~eoUF()eoUF< FlowShop &, bool > [virtual]


Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopOpMutationExchange.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopOpMutationExchange.html new file mode 100644 index 000000000..2ce7a1fa9 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopOpMutationExchange.html @@ -0,0 +1,100 @@ + + +ParadisEO-MOEOMovingObjects: FlowShopOpMutationExchange Class Reference + + + + +
+
+ +

FlowShopOpMutationExchange Class Reference

Exchange mutation operator for the flow-shop. +More... +

+#include <FlowShopOpMutationExchange.h> +

+

Inheritance diagram for FlowShopOpMutationExchange: +

+ +eoMonOp< FlowShop > +eoOp< EOType > +eoUF< FlowShop &, bool > +eoFunctorBase + +List of all members. + + + + + + + + +

Public Member Functions

+std::string className () const
 the class name (used to display statistics)
bool operator() (FlowShop &_flowshop)
 modifies the parent with an exchange mutation
+

Detailed Description

+Exchange mutation operator for the flow-shop. +

+ +

+Definition at line 22 of file FlowShopOpMutationExchange.h.


Member Function Documentation

+ +
+
+ + + + + + + + + +
bool FlowShopOpMutationExchange::operator() (FlowShop _flowshop  )  [virtual]
+
+
+ +

+modifies the parent with an exchange mutation +

+

Parameters:
+ + +
_flowshop the parent genotype (will be modified)
+
+ +

+Implements eoUF< FlowShop &, bool >. +

+Definition at line 22 of file FlowShopOpMutationExchange.cpp. +

+References eoRng::random(), and moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType >::value(). +

+

+


The documentation for this class was generated from the following files: +
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopOpMutationExchange.png b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopOpMutationExchange.png new file mode 100644 index 000000000..f582b7836 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopOpMutationExchange.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopOpMutationShift-members.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopOpMutationShift-members.html new file mode 100644 index 000000000..f45618f90 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopOpMutationShift-members.html @@ -0,0 +1,47 @@ + + +ParadisEO-MOEOMovingObjects: Member List + + + + +
+
+ +

FlowShopOpMutationShift Member List

This is the complete list of members for FlowShopOpMutationShift, including all inherited members.

+ + + + + + + + + + + +
className() const FlowShopOpMutationShift [virtual]
eoMonOp()eoMonOp< FlowShop >
eoOp(OpType _type)eoOp< EOType >
eoOp(const eoOp &_eop)eoOp< EOType >
functor_category()eoUF< FlowShop &, bool > [static]
getType() const eoOp< EOType >
operator()(FlowShop &_flowshop)FlowShopOpMutationShift [virtual]
OpType enum nameeoOp< EOType >
~eoFunctorBase()eoFunctorBase [virtual]
~eoOp()eoOp< EOType > [virtual]
~eoUF()eoUF< FlowShop &, bool > [virtual]


Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopOpMutationShift.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopOpMutationShift.html new file mode 100644 index 000000000..11bcd0bcd --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopOpMutationShift.html @@ -0,0 +1,100 @@ + + +ParadisEO-MOEOMovingObjects: FlowShopOpMutationShift Class Reference + + + + +
+
+ +

FlowShopOpMutationShift Class Reference

Shift mutation operator for flow-shop. +More... +

+#include <FlowShopOpMutationShift.h> +

+

Inheritance diagram for FlowShopOpMutationShift: +

+ +eoMonOp< FlowShop > +eoOp< EOType > +eoUF< FlowShop &, bool > +eoFunctorBase + +List of all members. + + + + + + + + +

Public Member Functions

+std::string className () const
 the class name (used to display statistics)
bool operator() (FlowShop &_flowshop)
 modifies the parent with a shift mutation
+

Detailed Description

+Shift mutation operator for flow-shop. +

+ +

+Definition at line 22 of file FlowShopOpMutationShift.h.


Member Function Documentation

+ +
+
+ + + + + + + + + +
bool FlowShopOpMutationShift::operator() (FlowShop _flowshop  )  [virtual]
+
+
+ +

+modifies the parent with a shift mutation +

+

Parameters:
+ + +
_flowshop the parent genotype (will be modified)
+
+ +

+Implements eoUF< FlowShop &, bool >. +

+Definition at line 22 of file FlowShopOpMutationShift.cpp. +

+References eoRng::random(), and moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType >::value(). +

+

+


The documentation for this class was generated from the following files: +
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopOpMutationShift.png b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopOpMutationShift.png new file mode 100644 index 000000000..f06d41f84 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classFlowShopOpMutationShift.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classSch1-members.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classSch1-members.html new file mode 100644 index 000000000..f92cf0a7b --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classSch1-members.html @@ -0,0 +1,88 @@ + + +ParadisEO-MOEOMovingObjects: Member List + + + + +
+
+ +

Sch1 Member List

This is the complete list of members for Sch1, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AtomType typedefmoeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, double >
className() const moeoRealVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline, virtual]
ContainerType typedefmoeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, double >
Diversity typedefMOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity >
diversity() const MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
diversity(const Diversity &_diversityValue)MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
EO()EO< MOEOObjectiveVector >
EO()EO< MOEOObjectiveVector >
Fitness typedefMOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity >
fitness() const MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
fitness(const Fitness &_fitnessValue)MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
EO< MOEOObjectiveVector >::fitness(const Fitness &_fitness)EO< MOEOObjectiveVector >
EO< MOEOObjectiveVector >::fitness(performance_type perf)EO< MOEOObjectiveVector >
fitness_traits typedefEO< MOEOObjectiveVector >
fitnessReference()EO< MOEOObjectiveVector >
invalid() const MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
invalidate()MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
invalidate_worth(void)EO< MOEOObjectiveVector >
invalidateDiversity()MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
invalidateFitness()MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
invalidateObjectiveVector()MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
invalidDiversity() const MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
invalidFitness() const MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
invalidObjectiveVector() const MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
MOEO()MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
moeoRealVector(unsigned int _size=0, double _value=0.0)moeoRealVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
moeoVector(unsigned int _size=0, double_value=double())moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, double > [inline]
objectiveVector() const MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
objectiveVector(const ObjectiveVector &_objectiveVectorValue)MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
ObjectiveVector typedefMOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity >
operator<(const moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, double > &_moeo) const moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, double > [inline]
MOEO::operator<(const MOEO &_other) const MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline]
EO< MOEOObjectiveVector >::operator<(const EO &_eo2) const EO< MOEOObjectiveVector >
EO< MOEOObjectiveVector >::operator<(const EO< Fitness, Traits > &other) const EO< MOEOObjectiveVector >
operator>(const EO &_eo2) const EO< MOEOObjectiveVector >
operator>(const EO< Fitness, Traits > &other) const EO< MOEOObjectiveVector >
performance(performance_type perf)EO< MOEOObjectiveVector >
performance(void) const EO< MOEOObjectiveVector >
performance_type typedefEO< MOEOObjectiveVector >
printOn(std::ostream &_os) const moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, double > [inline, virtual]
readFrom(std::istream &_is)moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, double > [inline, virtual]
Sch1()Sch1 [inline]
storage_type typedefEO< MOEOObjectiveVector >
value(const std::vector< double > &_v)moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, double > [inline]
worth(worth_type worth)EO< MOEOObjectiveVector >
worth(void) const EO< MOEOObjectiveVector >
worth_type typedefEO< MOEOObjectiveVector >
~EO()EO< MOEOObjectiveVector > [virtual]
~eoObject()eoObject [virtual]
~eoPersistent()eoPersistent [virtual]
~eoPrintable()eoPrintable [virtual]
~MOEO()MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > [inline, virtual]


Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classSch1.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classSch1.html new file mode 100644 index 000000000..ad0100b39 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classSch1.html @@ -0,0 +1,60 @@ + + +ParadisEO-MOEOMovingObjects: Sch1 Class Reference + + + + +
+
+ +

Sch1 Class Reference

Inheritance diagram for Sch1: +

+ +moeoRealVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity > +moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, double > +MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity > +EO< MOEOObjectiveVector > +eoObject +eoPersistent +eoPrintable + +List of all members. + + + + +

Public Member Functions

Sch1 ()
+

Detailed Description

+ +

+ +

+Definition at line 44 of file Sch1.cpp.


The documentation for this class was generated from the following file: +
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classSch1.png b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classSch1.png new file mode 100644 index 000000000..3b4958d4e Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classSch1.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classSch1Eval-members.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classSch1Eval-members.html new file mode 100644 index 000000000..05b0f0a8f --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classSch1Eval-members.html @@ -0,0 +1,43 @@ + + +ParadisEO-MOEOMovingObjects: Member List + + + + +
+
+ +

Sch1Eval Member List

This is the complete list of members for Sch1Eval, including all inherited members.

+ + + + + + + +
EOFitT typedefeoEvalFunc< Sch1 >
EOType typedefeoEvalFunc< Sch1 >
functor_category()eoUF< A1, R > [static]
operator()(Sch1 &_sch1)Sch1Eval [inline]
moeoEvalFunc< Sch1 >::operator()(A1)=0eoUF< A1, R > [pure virtual]
~eoFunctorBase()eoFunctorBase [virtual]
~eoUF()eoUF< A1, R > [virtual]


Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classSch1Eval.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classSch1Eval.html new file mode 100644 index 000000000..55b009135 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classSch1Eval.html @@ -0,0 +1,57 @@ + + +ParadisEO-MOEOMovingObjects: Sch1Eval Class Reference + + + + +
+
+ +

Sch1Eval Class Reference

Inheritance diagram for Sch1Eval: +

+ +moeoEvalFunc< Sch1 > +eoEvalFunc< Sch1 > +eoUF< A1, R > +eoFunctorBase + +List of all members. + + + + +

Public Member Functions

+void operator() (Sch1 &_sch1)
+

Detailed Description

+ +

+ +

+Definition at line 52 of file Sch1.cpp.


The documentation for this class was generated from the following file: +
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classSch1Eval.png b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classSch1Eval.png new file mode 100644 index 000000000..f51abff08 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classSch1Eval.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classSch1ObjectiveVectorTraits-members.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classSch1ObjectiveVectorTraits-members.html new file mode 100644 index 000000000..496dfb5f0 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classSch1ObjectiveVectorTraits-members.html @@ -0,0 +1,43 @@ + + +ParadisEO-MOEOMovingObjects: Member List + + + + +
+
+ +

Sch1ObjectiveVectorTraits Member List

This is the complete list of members for Sch1ObjectiveVectorTraits, including all inherited members.

+ + + + + + + +
maximizing(int i)Sch1ObjectiveVectorTraits [inline, static]
moeoObjectiveVectorTraits::maximizing(unsigned int _i)moeoObjectiveVectorTraits [inline, static]
minimizing(int i)Sch1ObjectiveVectorTraits [inline, static]
moeoObjectiveVectorTraits::minimizing(unsigned int _i)moeoObjectiveVectorTraits [inline, static]
nObjectives()Sch1ObjectiveVectorTraits [inline, static]
setup(unsigned int _nObjectives, std::vector< bool > &_bObjectives)moeoObjectiveVectorTraits [inline, static]
tolerance()moeoObjectiveVectorTraits [inline, static]


Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classSch1ObjectiveVectorTraits.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classSch1ObjectiveVectorTraits.html new file mode 100644 index 000000000..ff9f46804 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classSch1ObjectiveVectorTraits.html @@ -0,0 +1,61 @@ + + +ParadisEO-MOEOMovingObjects: Sch1ObjectiveVectorTraits Class Reference + + + + +
+
+ +

Sch1ObjectiveVectorTraits Class Reference

Inheritance diagram for Sch1ObjectiveVectorTraits: +

+ +moeoObjectiveVectorTraits + +List of all members. + + + + + + + + + +

Static Public Member Functions

+static bool minimizing (int i)
+static bool maximizing (int i)
+static unsigned int nObjectives ()
 Returns the number of objectives.
+

Detailed Description

+ +

+ +

+Definition at line 21 of file Sch1.cpp.


The documentation for this class was generated from the following file: +
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classSch1ObjectiveVectorTraits.png b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classSch1ObjectiveVectorTraits.png new file mode 100644 index 000000000..6180dfbc3 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classSch1ObjectiveVectorTraits.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoIBMOLS-members.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoIBMOLS-members.html new file mode 100644 index 000000000..e3e371abb --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoIBMOLS-members.html @@ -0,0 +1,50 @@ + + +ParadisEO-MOEOMovingObjects: Member List + + + + +
+
+ +

moeoIBMOLS< MOEOT, Move > Member List

This is the complete list of members for moeoIBMOLS< MOEOT, Move >, including all inherited members.

+ + + + + + + + + + + + + + +
continuatormoeoIBMOLS< MOEOT, Move > [private]
evalmoeoIBMOLS< MOEOT, Move > [private]
fitnessAssignmentmoeoIBMOLS< MOEOT, Move > [private]
functor_category()eoBF< eoPop< MOEOT > &, moeoArchive< MOEOT > &, void > [static]
moeoIBMOLS(moMoveInit< Move > &_moveInit, moNextMove< Move > &_nextMove, eoEvalFunc< MOEOT > &_eval, moeoMoveIncrEval< Move > &_moveIncrEval, moeoBinaryIndicatorBasedFitnessAssignment< MOEOT > &_fitnessAssignment, eoContinue< MOEOT > &_continuator)moeoIBMOLS< MOEOT, Move > [inline]
moveIncrEvalmoeoIBMOLS< MOEOT, Move > [private]
moveInitmoeoIBMOLS< MOEOT, Move > [private]
new_oneStep(eoPop< MOEOT > &_pop)moeoIBMOLS< MOEOT, Move > [inline, private]
nextMovemoeoIBMOLS< MOEOT, Move > [private]
ObjectiveVector typedefmoeoIBMOLS< MOEOT, Move >
oneStep(eoPop< MOEOT > &_pop)moeoIBMOLS< MOEOT, Move > [inline, private]
operator()(eoPop< MOEOT > &_pop, moeoArchive< MOEOT > &_arch)moeoIBMOLS< MOEOT, Move > [inline, virtual]
~eoBF()eoBF< eoPop< MOEOT > &, moeoArchive< MOEOT > &, void > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoIBMOLS.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoIBMOLS.html new file mode 100644 index 000000000..886ebc547 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoIBMOLS.html @@ -0,0 +1,295 @@ + + +ParadisEO-MOEOMovingObjects: moeoIBMOLS< MOEOT, Move > Class Template Reference + + + + +
+
+ +

moeoIBMOLS< MOEOT, Move > Class Template Reference

Indicator-Based Multi-Objective Local Search (IBMOLS) as described in Basseur M., Burke K. +More... +

+#include <moeoIBMOLS.h> +

+

Inheritance diagram for moeoIBMOLS< MOEOT, Move >: +

+ +moeoLS< MOEOT, eoPop< MOEOT > & > +moeoAlgo +eoBF< eoPop< MOEOT > &, moeoArchive< MOEOT > &, void > +eoFunctorBase + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

+typedef MOEOT::ObjectiveVector ObjectiveVector
 The type of objective vector.

Public Member Functions

 moeoIBMOLS (moMoveInit< Move > &_moveInit, moNextMove< Move > &_nextMove, eoEvalFunc< MOEOT > &_eval, moeoMoveIncrEval< Move > &_moveIncrEval, moeoBinaryIndicatorBasedFitnessAssignment< MOEOT > &_fitnessAssignment, eoContinue< MOEOT > &_continuator)
 Ctor.
void operator() (eoPop< MOEOT > &_pop, moeoArchive< MOEOT > &_arch)
 Apply the local search until a local archive does not change or another stopping criteria is met and update the archive _arch with new non-dominated solutions.

Private Member Functions

void oneStep (eoPop< MOEOT > &_pop)
 Apply one step of the local search to the population _pop.
void new_oneStep (eoPop< MOEOT > &_pop)
 Apply one step of the local search to the population _pop.

Private Attributes

+moMoveInit< Move > & moveInit
 the move initializer
+moNextMove< Move > & nextMove
 the neighborhood explorer
+eoEvalFunc< MOEOT > & eval
 the full evaluation
+moeoMoveIncrEval< Move > & moveIncrEval
 the incremental evaluation
+moeoBinaryIndicatorBasedFitnessAssignment<
+ MOEOT > & 
fitnessAssignment
 the fitness assignment strategy
+eoContinue< MOEOT > & continuator
 the stopping criteria

Classes

class  OneObjectiveComparator
+

Detailed Description

+

template<class MOEOT, class Move>
+ class moeoIBMOLS< MOEOT, Move >

+ +Indicator-Based Multi-Objective Local Search (IBMOLS) as described in Basseur M., Burke K. +

+: "Indicator-Based Multi-Objective Local Search" (2007). +

+ +

+Definition at line 33 of file moeoIBMOLS.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class MOEOT, class Move>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
moeoIBMOLS< MOEOT, Move >::moeoIBMOLS (moMoveInit< Move > &  _moveInit,
moNextMove< Move > &  _nextMove,
eoEvalFunc< MOEOT > &  _eval,
moeoMoveIncrEval< Move > &  _moveIncrEval,
moeoBinaryIndicatorBasedFitnessAssignment< MOEOT > &  _fitnessAssignment,
eoContinue< MOEOT > &  _continuator 
) [inline]
+
+
+ +

+Ctor. +

+

Parameters:
+ + + + + + + +
_moveInit the move initializer
_nextMove the neighborhood explorer
_eval the full evaluation
_moveIncrEval the incremental evaluation
_fitnessAssignment the fitness assignment strategy
_continuator the stopping criteria
+
+ +

+Definition at line 50 of file moeoIBMOLS.h. +

+

+


Member Function Documentation

+ +
+
+
+template<class MOEOT, class Move>
+ + + + + + + + + + + + + + + + + + +
void moeoIBMOLS< MOEOT, Move >::operator() (eoPop< MOEOT > &  _pop,
moeoArchive< MOEOT > &  _arch 
) [inline, virtual]
+
+
+ +

+Apply the local search until a local archive does not change or another stopping criteria is met and update the archive _arch with new non-dominated solutions. +

+

Parameters:
+ + + +
_pop the initial population
_arch the (updated) archive
+
+ +

+Implements eoBF< eoPop< MOEOT > &, moeoArchive< MOEOT > &, void >. +

+Definition at line 73 of file moeoIBMOLS.h. +

+References moeoIBMOLS< MOEOT, Move >::continuator, moeoArchive< MOEOT >::equals(), moeoIBMOLS< MOEOT, Move >::fitnessAssignment, moeoIBMOLS< MOEOT, Move >::oneStep(), and moeoArchive< MOEOT >::update(). +

+

+ +

+
+
+template<class MOEOT, class Move>
+ + + + + + + + + +
void moeoIBMOLS< MOEOT, Move >::oneStep (eoPop< MOEOT > &  _pop  )  [inline, private]
+
+
+ +

+Apply one step of the local search to the population _pop. +

+

Parameters:
+ + +
_pop the population
+
+ +

+Definition at line 120 of file moeoIBMOLS.h. +

+References moeoIBMOLS< MOEOT, Move >::continuator, moeoIBMOLS< MOEOT, Move >::fitnessAssignment, moeoIBMOLS< MOEOT, Move >::moveIncrEval, moeoIBMOLS< MOEOT, Move >::moveInit, and moeoIBMOLS< MOEOT, Move >::nextMove. +

+Referenced by moeoIBMOLS< MOEOT, Move >::operator()(). +

+

+ +

+
+
+template<class MOEOT, class Move>
+ + + + + + + + + +
void moeoIBMOLS< MOEOT, Move >::new_oneStep (eoPop< MOEOT > &  _pop  )  [inline, private]
+
+
+ +

+Apply one step of the local search to the population _pop. +

+

Parameters:
+ + +
_pop the population
+
+ +

+Definition at line 304 of file moeoIBMOLS.h. +

+References moeoIBMOLS< MOEOT, Move >::continuator, moeoIBMOLS< MOEOT, Move >::fitnessAssignment, moeoIBMOLS< MOEOT, Move >::moveIncrEval, moeoIBMOLS< MOEOT, Move >::moveInit, and moeoIBMOLS< MOEOT, Move >::nextMove. +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoIBMOLS.png b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoIBMOLS.png new file mode 100644 index 000000000..f8ca65a0c Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoIBMOLS.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoIBMOLS_1_1OneObjectiveComparator-members.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoIBMOLS_1_1OneObjectiveComparator-members.html new file mode 100644 index 000000000..24f0bfaad --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoIBMOLS_1_1OneObjectiveComparator-members.html @@ -0,0 +1,43 @@ + + +ParadisEO-MOEOMovingObjects: Member List + + + + +
+
+ +

moeoIBMOLS< MOEOT, Move >::OneObjectiveComparator Member List

This is the complete list of members for moeoIBMOLS< MOEOT, Move >::OneObjectiveComparator, including all inherited members.

+ + + + + + + +
functor_category()eoBF< A1, A2, R > [static]
objmoeoIBMOLS< MOEOT, Move >::OneObjectiveComparator [private]
OneObjectiveComparator(unsigned int _obj)moeoIBMOLS< MOEOT, Move >::OneObjectiveComparator [inline]
operator()(const MOEOT &_moeo1, const MOEOT &_moeo2)moeoIBMOLS< MOEOT, Move >::OneObjectiveComparator [inline]
moeoComparator::operator()(A1, A2)=0eoBF< A1, A2, R > [pure virtual]
~eoBF()eoBF< A1, A2, R > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoIBMOLS_1_1OneObjectiveComparator.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoIBMOLS_1_1OneObjectiveComparator.html new file mode 100644 index 000000000..7d46550f4 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoIBMOLS_1_1OneObjectiveComparator.html @@ -0,0 +1,68 @@ + + +ParadisEO-MOEOMovingObjects: moeoIBMOLS< MOEOT, Move >::OneObjectiveComparator Class Reference + + + + +
+
+ + +

moeoIBMOLS< MOEOT, Move >::OneObjectiveComparator Class Reference

Inheritance diagram for moeoIBMOLS< MOEOT, Move >::OneObjectiveComparator: +

+ +moeoComparator< MOEOT > +eoBF< A1, A2, R > +eoFunctorBase + +List of all members. + + + + + + + + + +

Public Member Functions

OneObjectiveComparator (unsigned int _obj)
+const bool operator() (const MOEOT &_moeo1, const MOEOT &_moeo2)

Private Attributes

+unsigned int obj
+

Detailed Description

+

template<class MOEOT, class Move>
+ class moeoIBMOLS< MOEOT, Move >::OneObjectiveComparator

+ + +

+ +

+Definition at line 462 of file moeoIBMOLS.h.


The documentation for this class was generated from the following file: +
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoIBMOLS_1_1OneObjectiveComparator.png b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoIBMOLS_1_1OneObjectiveComparator.png new file mode 100644 index 000000000..d4f1e1cad Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoIBMOLS_1_1OneObjectiveComparator.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoIteratedIBMOLS-members.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoIteratedIBMOLS-members.html new file mode 100644 index 000000000..b2686004d --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoIteratedIBMOLS-members.html @@ -0,0 +1,49 @@ + + +ParadisEO-MOEOMovingObjects: Member List + + + + +
+
+ +

moeoIteratedIBMOLS< MOEOT, Move > Member List

This is the complete list of members for moeoIteratedIBMOLS< MOEOT, Move >, including all inherited members.

+ + + + + + + + + + + + + +
continuatormoeoIteratedIBMOLS< MOEOT, Move > [private]
evalmoeoIteratedIBMOLS< MOEOT, Move > [private]
functor_category()eoBF< eoPop< MOEOT > &, moeoArchive< MOEOT > &, void > [static]
generateNewSolutions(eoPop< MOEOT > &_pop, const moeoArchive< MOEOT > &_arch)moeoIteratedIBMOLS< MOEOT, Move > [inline, private]
ibmolsmoeoIteratedIBMOLS< MOEOT, Move > [private]
moeoIteratedIBMOLS(moMoveInit< Move > &_moveInit, moNextMove< Move > &_nextMove, eoEvalFunc< MOEOT > &_eval, moeoMoveIncrEval< Move > &_moveIncrEval, moeoBinaryIndicatorBasedFitnessAssignment< MOEOT > &_fitnessAssignment, eoContinue< MOEOT > &_continuator, eoMonOp< MOEOT > &_monOp, eoMonOp< MOEOT > &_randomMonOp, unsigned int _nNoiseIterations=1)moeoIteratedIBMOLS< MOEOT, Move > [inline]
monOpmoeoIteratedIBMOLS< MOEOT, Move > [private]
nNoiseIterationsmoeoIteratedIBMOLS< MOEOT, Move > [private]
ObjectiveVector typedefmoeoIteratedIBMOLS< MOEOT, Move >
operator()(eoPop< MOEOT > &_pop, moeoArchive< MOEOT > &_arch)moeoIteratedIBMOLS< MOEOT, Move > [inline, virtual]
randomMonOpmoeoIteratedIBMOLS< MOEOT, Move > [private]
~eoBF()eoBF< eoPop< MOEOT > &, moeoArchive< MOEOT > &, void > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoIteratedIBMOLS.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoIteratedIBMOLS.html new file mode 100644 index 000000000..af9f19c43 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoIteratedIBMOLS.html @@ -0,0 +1,286 @@ + + +ParadisEO-MOEOMovingObjects: moeoIteratedIBMOLS< MOEOT, Move > Class Template Reference + + + + +
+
+ +

moeoIteratedIBMOLS< MOEOT, Move > Class Template Reference

Iterated version of IBMOLS as described in Basseur M., Burke K. +More... +

+#include <moeoIteratedIBMOLS.h> +

+

Inheritance diagram for moeoIteratedIBMOLS< MOEOT, Move >: +

+ +moeoLS< MOEOT, eoPop< MOEOT > & > +moeoAlgo +eoBF< eoPop< MOEOT > &, moeoArchive< MOEOT > &, void > +eoFunctorBase + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

+typedef MOEOT::ObjectiveVector ObjectiveVector
 The type of objective vector.

Public Member Functions

 moeoIteratedIBMOLS (moMoveInit< Move > &_moveInit, moNextMove< Move > &_nextMove, eoEvalFunc< MOEOT > &_eval, moeoMoveIncrEval< Move > &_moveIncrEval, moeoBinaryIndicatorBasedFitnessAssignment< MOEOT > &_fitnessAssignment, eoContinue< MOEOT > &_continuator, eoMonOp< MOEOT > &_monOp, eoMonOp< MOEOT > &_randomMonOp, unsigned int _nNoiseIterations=1)
 Ctor.
void operator() (eoPop< MOEOT > &_pop, moeoArchive< MOEOT > &_arch)
 Apply the local search iteratively until the stopping criteria is met.

Private Member Functions

void generateNewSolutions (eoPop< MOEOT > &_pop, const moeoArchive< MOEOT > &_arch)
 Creates new population randomly initialized and/or initialized from the archive _arch.

Private Attributes

+moeoIBMOLS< MOEOT, Move > ibmols
 the local search to iterate
+eoEvalFunc< MOEOT > & eval
 the full evaluation
+eoContinue< MOEOT > & continuator
 the stopping criteria
+eoMonOp< MOEOT > & monOp
 the monary operator
+eoMonOp< MOEOT > & randomMonOp
 the random monary operator (or random initializer)
+unsigned int nNoiseIterations
 the number of iterations to apply the random noise
+

Detailed Description

+

template<class MOEOT, class Move>
+ class moeoIteratedIBMOLS< MOEOT, Move >

+ +Iterated version of IBMOLS as described in Basseur M., Burke K. +

+: "Indicator-Based Multi-Objective Local Search" (2007). +

+ +

+Definition at line 41 of file moeoIteratedIBMOLS.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class MOEOT, class Move>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
moeoIteratedIBMOLS< MOEOT, Move >::moeoIteratedIBMOLS (moMoveInit< Move > &  _moveInit,
moNextMove< Move > &  _nextMove,
eoEvalFunc< MOEOT > &  _eval,
moeoMoveIncrEval< Move > &  _moveIncrEval,
moeoBinaryIndicatorBasedFitnessAssignment< MOEOT > &  _fitnessAssignment,
eoContinue< MOEOT > &  _continuator,
eoMonOp< MOEOT > &  _monOp,
eoMonOp< MOEOT > &  _randomMonOp,
unsigned int  _nNoiseIterations = 1 
) [inline]
+
+
+ +

+Ctor. +

+

Parameters:
+ + + + + + + + + + +
_moveInit the move initializer
_nextMove the neighborhood explorer
_eval the full evaluation
_moveIncrEval the incremental evaluation
_fitnessAssignment the fitness assignment strategy
_continuator the stopping criteria
_monOp the monary operator
_randomMonOp the random monary operator (or random initializer)
_nNoiseIterations the number of iterations to apply the random noise
+
+ +

+Definition at line 61 of file moeoIteratedIBMOLS.h. +

+

+


Member Function Documentation

+ +
+
+
+template<class MOEOT, class Move>
+ + + + + + + + + + + + + + + + + + +
void moeoIteratedIBMOLS< MOEOT, Move >::operator() (eoPop< MOEOT > &  _pop,
moeoArchive< MOEOT > &  _arch 
) [inline, virtual]
+
+
+ +

+Apply the local search iteratively until the stopping criteria is met. +

+

Parameters:
+ + + +
_pop the initial population
_arch the (updated) archive
+
+ +

+Implements eoBF< eoPop< MOEOT > &, moeoArchive< MOEOT > &, void >. +

+Definition at line 86 of file moeoIteratedIBMOLS.h. +

+References moeoIteratedIBMOLS< MOEOT, Move >::continuator, moeoIteratedIBMOLS< MOEOT, Move >::generateNewSolutions(), moeoIteratedIBMOLS< MOEOT, Move >::ibmols, and moeoArchive< MOEOT >::update(). +

+

+ +

+
+
+template<class MOEOT, class Move>
+ + + + + + + + + + + + + + + + + + +
void moeoIteratedIBMOLS< MOEOT, Move >::generateNewSolutions (eoPop< MOEOT > &  _pop,
const moeoArchive< MOEOT > &  _arch 
) [inline, private]
+
+
+ +

+Creates new population randomly initialized and/or initialized from the archive _arch. +

+

Parameters:
+ + + +
_pop the output population
_arch the archive
+
+ +

+Definition at line 121 of file moeoIteratedIBMOLS.h. +

+References moeoIteratedIBMOLS< MOEOT, Move >::eval, eoPop< EOT >::invalidate(), moeoIteratedIBMOLS< MOEOT, Move >::monOp, moeoIteratedIBMOLS< MOEOT, Move >::nNoiseIterations, and moeoIteratedIBMOLS< MOEOT, Move >::randomMonOp. +

+Referenced by moeoIteratedIBMOLS< MOEOT, Move >::operator()(). +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoIteratedIBMOLS.png b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoIteratedIBMOLS.png new file mode 100644 index 000000000..dc4163151 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoIteratedIBMOLS.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoMoveIncrEval-members.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoMoveIncrEval-members.html new file mode 100644 index 000000000..6e2c307eb --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoMoveIncrEval-members.html @@ -0,0 +1,40 @@ + + +ParadisEO-MOEOMovingObjects: Member List + + + + +
+
+ +

moeoMoveIncrEval< Move > Member List

This is the complete list of members for moeoMoveIncrEval< Move >, including all inherited members.

+ + + + +
functor_category()eoBF< A1, A2, R > [static]
operator()(A1, A2)=0eoBF< A1, A2, R > [pure virtual]
~eoBF()eoBF< A1, A2, R > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoMoveIncrEval.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoMoveIncrEval.html new file mode 100644 index 000000000..4164ae922 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoMoveIncrEval.html @@ -0,0 +1,54 @@ + + +ParadisEO-MOEOMovingObjects: moeoMoveIncrEval< Move > Class Template Reference + + + + +
+
+ +

moeoMoveIncrEval< Move > Class Template Reference

Inheritance diagram for moeoMoveIncrEval< Move >: +

+ +eoBF< A1, A2, R > +eoFunctorBase + +List of all members. + +
+

Detailed Description

+

template<class Move>
+ class moeoMoveIncrEval< Move >

+ + +

+ +

+Definition at line 9 of file moeoMoveIncrEval.h.


The documentation for this class was generated from the following file: +
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoMoveIncrEval.png b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoMoveIncrEval.png new file mode 100644 index 000000000..a9d2cd488 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoMoveIncrEval.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoObjectiveVectorTraits.png b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoObjectiveVectorTraits.png new file mode 100644 index 000000000..046329330 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoObjectiveVectorTraits.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoReferencePointIndicatorBasedFitnessAssignment-members.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoReferencePointIndicatorBasedFitnessAssignment-members.html new file mode 100644 index 000000000..9919b5d37 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoReferencePointIndicatorBasedFitnessAssignment-members.html @@ -0,0 +1,48 @@ + + +ParadisEO-MOEOMovingObjects: Member List + + + + +
+
+ +

moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT > Member List

This is the complete list of members for moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >, including all inherited members.

+ + + + + + + + + + + + +
functor_category()eoUF< eoPop< MOEOT > &, void > [static]
metricmoeoReferencePointIndicatorBasedFitnessAssignment< MOEOT > [protected]
moeoReferencePointIndicatorBasedFitnessAssignment(ObjectiveVector &_refPoint, moeoNormalizedSolutionVsSolutionBinaryMetric< ObjectiveVector, double > &_metric)moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT > [inline]
ObjectiveVector typedefmoeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >
operator()(eoPop< MOEOT > &_pop)moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT > [inline, virtual]
refPointmoeoReferencePointIndicatorBasedFitnessAssignment< MOEOT > [protected]
setFitnesses(eoPop< MOEOT > &_pop)moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT > [inline, protected]
setup(const eoPop< MOEOT > &_pop)moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT > [inline, protected]
updateByDeleting(eoPop< MOEOT > &_pop, ObjectiveVector &_objVec)moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT > [inline, virtual]
moeoFitnessAssignment::updateByDeleting(eoPop< MOEOT > &_pop, MOEOT &_moeo)moeoFitnessAssignment< MOEOT > [inline]
~eoFunctorBase()eoFunctorBase [virtual]
~eoUF()eoUF< eoPop< MOEOT > &, void > [virtual]


Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoReferencePointIndicatorBasedFitnessAssignment.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoReferencePointIndicatorBasedFitnessAssignment.html new file mode 100644 index 000000000..d76beca59 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoReferencePointIndicatorBasedFitnessAssignment.html @@ -0,0 +1,283 @@ + + +ParadisEO-MOEOMovingObjects: moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT > Class Template Reference + + + + +
+
+ +

moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT > Class Template Reference

Fitness assignment sheme based a Reference Point and a Quality Indicator. +More... +

+#include <moeoReferencePointIndicatorBasedFitnessAssignment.h> +

+

Inheritance diagram for moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >: +

+ +moeoFitnessAssignment< MOEOT > +eoUF< eoPop< MOEOT > &, void > +eoFunctorBase + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

+typedef MOEOT::ObjectiveVector ObjectiveVector
 The type of objective vector.

Public Member Functions

 moeoReferencePointIndicatorBasedFitnessAssignment (ObjectiveVector &_refPoint, moeoNormalizedSolutionVsSolutionBinaryMetric< ObjectiveVector, double > &_metric)
 Ctor.
void operator() (eoPop< MOEOT > &_pop)
 Sets the fitness values for every solution contained in the population _pop.
void updateByDeleting (eoPop< MOEOT > &_pop, ObjectiveVector &_objVec)
 Updates the fitness values of the whole population _pop by taking the deletion of the objective vector _objVec into account.

Protected Member Functions

void setup (const eoPop< MOEOT > &_pop)
 Sets the bounds for every objective using the min and the max value for every objective vector of _pop (and the reference point).
void setFitnesses (eoPop< MOEOT > &_pop)
 Sets the fitness of every individual contained in the population _pop.

Protected Attributes

+ObjectiveVectorrefPoint
 the reference point
+moeoNormalizedSolutionVsSolutionBinaryMetric<
+ ObjectiveVector, double > & 
metric
 the quality indicator
+

Detailed Description

+

template<class MOEOT>
+ class moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >

+ +Fitness assignment sheme based a Reference Point and a Quality Indicator. +

+ +

+Definition at line 25 of file moeoReferencePointIndicatorBasedFitnessAssignment.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class MOEOT>
+ + + + + + + + + + + + + + + + + + +
moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >::moeoReferencePointIndicatorBasedFitnessAssignment (ObjectiveVector _refPoint,
moeoNormalizedSolutionVsSolutionBinaryMetric< ObjectiveVector, double > &  _metric 
) [inline]
+
+
+ +

+Ctor. +

+

Parameters:
+ + + +
_refPoint the reference point
_metric the quality indicator
+
+ +

+Definition at line 37 of file moeoReferencePointIndicatorBasedFitnessAssignment.h. +

+

+


Member Function Documentation

+ +
+
+
+template<class MOEOT>
+ + + + + + + + + +
void moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >::operator() (eoPop< MOEOT > &  _pop  )  [inline, virtual]
+
+
+ +

+Sets the fitness values for every solution contained in the population _pop. +

+

Parameters:
+ + +
_pop the population
+
+ +

+Implements eoUF< eoPop< MOEOT > &, void >. +

+Definition at line 46 of file moeoReferencePointIndicatorBasedFitnessAssignment.h. +

+References moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >::setFitnesses(), and moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >::setup(). +

+

+ +

+
+
+template<class MOEOT>
+ + + + + + + + + + + + + + + + + + +
void moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >::updateByDeleting (eoPop< MOEOT > &  _pop,
ObjectiveVector _objVec 
) [inline, virtual]
+
+
+ +

+Updates the fitness values of the whole population _pop by taking the deletion of the objective vector _objVec into account. +

+

Parameters:
+ + + +
_pop the population
_objVec the objective vector
+
+ +

+Implements moeoFitnessAssignment< MOEOT >. +

+Definition at line 60 of file moeoReferencePointIndicatorBasedFitnessAssignment.h. +

+

+ +

+
+
+template<class MOEOT>
+ + + + + + + + + +
void moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >::setup (const eoPop< MOEOT > &  _pop  )  [inline, protected]
+
+
+ +

+Sets the bounds for every objective using the min and the max value for every objective vector of _pop (and the reference point). +

+

Parameters:
+ + +
_pop the population
+
+ +

+Definition at line 78 of file moeoReferencePointIndicatorBasedFitnessAssignment.h. +

+References moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >::metric, moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >::refPoint, and moeoNormalizedSolutionVsSolutionBinaryMetric< ObjectiveVector, R >::setup(). +

+Referenced by moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >::operator()(). +

+

+ +

+
+
+template<class MOEOT>
+ + + + + + + + + +
void moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >::setFitnesses (eoPop< MOEOT > &  _pop  )  [inline, protected]
+
+
+ +

+Sets the fitness of every individual contained in the population _pop. +

+

Parameters:
+ + +
_pop the population
+
+ +

+Definition at line 99 of file moeoReferencePointIndicatorBasedFitnessAssignment.h. +

+References moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >::metric, and moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >::refPoint. +

+Referenced by moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >::operator()(). +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoReferencePointIndicatorBasedFitnessAssignment.png b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoReferencePointIndicatorBasedFitnessAssignment.png new file mode 100644 index 000000000..b52223b04 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classmoeoReferencePointIndicatorBasedFitnessAssignment.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classpeoEA-members.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classpeoEA-members.html new file mode 100644 index 000000000..7b4ab6b73 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classpeoEA-members.html @@ -0,0 +1,45 @@ + + +ParadisEO-MOEOMovingObjects: Member List + + + + +
+
+ +

peoEA< EOT > Member List

This is the complete list of members for peoEA< EOT >, including all inherited members.

+ + + + + + + + + +
contpeoEA< EOT > [private]
operator()(eoPop< EOT > &__pop)peoEA< EOT >
peoEA(eoContinue< EOT > &__cont, peoPopEval< EOT > &__pop_eval, eoSelect< EOT > &__select, peoTransform< EOT > &__trans, eoReplacement< EOT > &__replace)peoEA< EOT >
poppeoEA< EOT > [private]
pop_evalpeoEA< EOT > [private]
replacepeoEA< EOT > [private]
run()peoEA< EOT >
selectpeoEA< EOT > [private]
transpeoEA< EOT > [private]


Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classpeoEA.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classpeoEA.html new file mode 100644 index 000000000..f19685464 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/classpeoEA.html @@ -0,0 +1,228 @@ + + +ParadisEO-MOEOMovingObjects: peoEA< EOT > Class Template Reference + + + + +
+
+ +

peoEA< EOT > Class Template Reference

The peoEA class offers an elementary evolutionary algorithm implementation. +More... +

+#include <pmoeoEA.h> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 peoEA (eoContinue< EOT > &__cont, peoPopEval< EOT > &__pop_eval, eoSelect< EOT > &__select, peoTransform< EOT > &__trans, eoReplacement< EOT > &__replace)
 Constructor for the evolutionary algorithm object - several basic parameters have to be specified, allowing for different levels of parallelism.
+void run ()
 Evolutionary algorithm function - a side effect of the fact that the class is derived from the Runner class, thus requiring the existence of a run function, the algorithm being executed on a distinct thread.
void operator() (eoPop< EOT > &__pop)
 Function operator for specifying the population to be associated with the algorithm.

Private Attributes

+eoContinue< EOT > & cont
+peoPopEval< EOT > & pop_eval
+eoSelect< EOT > & select
+peoTransform< EOT > & trans
+eoReplacement< EOT > & replace
+eoPop< EOT > * pop
+


Detailed Description

+

template<class EOT>
+ class peoEA< EOT >

+ +The peoEA class offers an elementary evolutionary algorithm implementation. +

+In addition, as compared with the algorithms provided by the EO framework, the peoEA class has the underlying necessary structure for including, for example, parallel evaluation and parallel transformation operators, migration operators etc. Although there is no restriction on using the algorithms provided by the EO framework, the drawback resides in the fact that the EO implementation is exclusively sequential and, in consequence, no parallelism is provided. A simple example for constructing a peoEA object:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
...    
eoPop< EOT > population( POP_SIZE, popInitializer );   // creation of a population with POP_SIZE individuals - the popInitializer is a functor to be called for each individual
   
eoGenContinue< EOT > eaCont( NUM_GEN );   // number of generations for the evolutionary algorithm
eoCheckPoint< EOT > eaCheckpointContinue( eaCont );   // checkpoint incorporating the continuation criterion - startpoint for adding other checkpoint objects
   
peoSeqPopEval< EOT > eaPopEval( evalFunction );   // sequential evaluation functor wrapper - evalFunction represents the actual evaluation functor
   
eoRankingSelect< EOT > selectionStrategy;   // selection strategy for creating the offspring population - a simple ranking selection in this case
eoSelectNumber< EOT > eaSelect( selectionStrategy, POP_SIZE );   // the number of individuals to be selected for creating the offspring population
eoRankingSelect< EOT > selectionStrategy;   // selection strategy for creating the offspring population - a simple ranking selection in this case
   
eoSGATransform< EOT > transform( crossover, CROSS_RATE, mutation, MUT_RATE );   // transformation operator - crossover and mutation operators with their associated probabilities
peoSeqTransform< EOT > eaTransform( transform );   // ParadisEO specific sequential operator - a parallel version may be specified in the same manner
   
eoPlusReplacement< EOT > eaReplace;   // replacement strategy - for integrating the offspring resulting individuals in the initial population
   
peoEA< EOT > eaAlg( eaCheckpointContinue, eaPopEval, eaSelect, eaTransform, eaReplace );   // ParadisEO evolutionary algorithm integrating the above defined objects
eaAlg( population );   // specifying the initial population for the algorithm
...    
+ +

+ +

+Definition at line 54 of file pmoeoEA.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
peoEA< EOT >::peoEA (eoContinue< EOT > &  __cont,
peoPopEval< EOT > &  __pop_eval,
eoSelect< EOT > &  __select,
peoTransform< EOT > &  __trans,
eoReplacement< EOT > &  __replace 
)
+
+
+ +

+Constructor for the evolutionary algorithm object - several basic parameters have to be specified, allowing for different levels of parallelism. +

+Depending on the requirements, a sequential or a parallel evaluation operator may be specified or, in the same manner, a sequential or a parallel transformation operator may be given as parameter. Out of the box objects may be provided, from the EO package, for example, or custom defined ones may be specified, provided that they are derived from the correct base classes.

+

Parameters:
+ + + + + + +
eoContinue< EOT >& __cont - continuation criterion specifying whether the algorithm should continue or not;
peoPopEval< EOT >& __pop_eval - evaluation operator; it allows the specification of parallel evaluation operators, aggregate evaluation functions, etc.;
eoSelect< EOT >& __select - selection strategy to be applied for constructing a list of offspring individuals;
peoTransform< EOT >& __trans - transformation operator, i.e. crossover and mutation; allows for sequential or parallel transform;
eoReplacement< EOT >& __replace - replacement strategy for integrating the offspring individuals in the initial population;
+
+ +

+Definition at line 98 of file pmoeoEA.h. +

+References peoEA< EOT >::pop_eval, and peoEA< EOT >::trans. +

+

+


Member Function Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + +
void peoEA< EOT >::operator() (eoPop< EOT > &  __pop  ) 
+
+
+ +

+Function operator for specifying the population to be associated with the algorithm. +

+

Parameters:
+ + +
eoPop< EOT >& __pop - initial population of the algorithm, to be iteratively evolved;
+
+ +

+Definition at line 114 of file pmoeoEA.h. +

+References peoEA< EOT >::pop. +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x62.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x62.html new file mode 100644 index 000000000..d728575f3 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x62.html @@ -0,0 +1,78 @@ + + +ParadisEO-MOEOMovingObjects: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- b -

+
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x63.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x63.html new file mode 100644 index 000000000..e8c442917 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x63.html @@ -0,0 +1,95 @@ + + +ParadisEO-MOEOMovingObjects: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- c -

+
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x64.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x64.html new file mode 100644 index 000000000..11ee93db3 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x64.html @@ -0,0 +1,96 @@ + + +ParadisEO-MOEOMovingObjects: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- d -

+
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x65.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x65.html new file mode 100644 index 000000000..a503f09dc --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x65.html @@ -0,0 +1,80 @@ + + +ParadisEO-MOEOMovingObjects: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- e -

+
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x66.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x66.html new file mode 100644 index 000000000..cf69b4562 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x66.html @@ -0,0 +1,86 @@ + + +ParadisEO-MOEOMovingObjects: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- f -

+
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x67.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x67.html new file mode 100644 index 000000000..211b7ceeb --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x67.html @@ -0,0 +1,82 @@ + + +ParadisEO-MOEOMovingObjects: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- g -

+
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x68.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x68.html new file mode 100644 index 000000000..68b57203f --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x68.html @@ -0,0 +1,77 @@ + + +ParadisEO-MOEOMovingObjects: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- h -

+
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x69.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x69.html new file mode 100644 index 000000000..38128c1ac --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x69.html @@ -0,0 +1,90 @@ + + +ParadisEO-MOEOMovingObjects: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- i -

+
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x6b.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x6b.html new file mode 100644 index 000000000..77cee7bc6 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x6b.html @@ -0,0 +1,76 @@ + + +ParadisEO-MOEOMovingObjects: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- k -

+
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x6c.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x6c.html new file mode 100644 index 000000000..962b32b59 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x6c.html @@ -0,0 +1,78 @@ + + +ParadisEO-MOEOMovingObjects: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- l -

+
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x6d.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x6d.html new file mode 100644 index 000000000..a91ecaea2 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x6d.html @@ -0,0 +1,124 @@ + + +ParadisEO-MOEOMovingObjects: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- m -

+
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x6e.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x6e.html new file mode 100644 index 000000000..7d5abecd9 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x6e.html @@ -0,0 +1,83 @@ + + +ParadisEO-MOEOMovingObjects: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- n -

+
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x6f.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x6f.html new file mode 100644 index 000000000..9f70376a5 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x6f.html @@ -0,0 +1,91 @@ + + +ParadisEO-MOEOMovingObjects: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- o -

+
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x70.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x70.html new file mode 100644 index 000000000..6d7c434ff --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x70.html @@ -0,0 +1,84 @@ + + +ParadisEO-MOEOMovingObjects: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- p -

+
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x72.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x72.html new file mode 100644 index 000000000..acf2c1ba2 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x72.html @@ -0,0 +1,86 @@ + + +ParadisEO-MOEOMovingObjects: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- r -

+
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x73.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x73.html new file mode 100644 index 000000000..438a8ba8a --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x73.html @@ -0,0 +1,85 @@ + + +ParadisEO-MOEOMovingObjects: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- s -

+
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x74.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x74.html new file mode 100644 index 000000000..d375480c1 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x74.html @@ -0,0 +1,85 @@ + + +ParadisEO-MOEOMovingObjects: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- t -

+
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x75.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x75.html new file mode 100644 index 000000000..dd36247f6 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x75.html @@ -0,0 +1,78 @@ + + +ParadisEO-MOEOMovingObjects: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- u -

+
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x76.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x76.html new file mode 100644 index 000000000..189cc4afc --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x76.html @@ -0,0 +1,79 @@ + + +ParadisEO-MOEOMovingObjects: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- v -

+
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x77.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x77.html new file mode 100644 index 000000000..76af96fda --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x77.html @@ -0,0 +1,77 @@ + + +ParadisEO-MOEOMovingObjects: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- w -

+
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x7e.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x7e.html new file mode 100644 index 000000000..a6fd80cfd --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/functions_0x7e.html @@ -0,0 +1,76 @@ + + +ParadisEO-MOEOMovingObjects: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- ~ -

+
Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/make__eval__FlowShop_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/make__eval__FlowShop_8h-source.html new file mode 100644 index 000000000..904b7e000 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/make__eval__FlowShop_8h-source.html @@ -0,0 +1,83 @@ + + +ParadisEO-MOEOMovingObjects: make_eval_FlowShop.h Source File + + + + +
+
+

make_eval_FlowShop.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // make_eval_FlowShop.h
+00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007
+00006 /*
+00007     This library...
+00008 
+00009     Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr
+00010  */
+00011 //-----------------------------------------------------------------------------
+00012 
+00013 #ifndef MAKE_EVAL_FLOWSHOP_H_
+00014 #define MAKE_EVAL_FLOWSHOP_H_
+00015 
+00016 
+00017 #include <utils/eoParser.h>
+00018 #include <utils/eoState.h>
+00019 #include <eoEvalFuncCounter.h>
+00020 #include <FlowShop.h>
+00021 #include <FlowShopBenchmarkParser.h>
+00022 #include <FlowShopEval.h>
+00023 
+00024 /*
+00025  * This function creates an eoEvalFuncCounter<eoFlowShop> that can later be used to evaluate an individual.
+00026  * @param eoParser& _parser  to get user parameters
+00027  * @param eoState& _state  to store the memory
+00028  */
+00029 eoEvalFuncCounter<FlowShop> & do_make_eval(eoParser& _parser, eoState& _state)
+00030 {
+00031     // benchmark file name
+00032     std::string benchmarkFileName = _parser.getORcreateParam(std::string(), "BenchmarkFile", "Benchmark file name (benchmarks are available at www.lifl.fr/~liefooga/benchmarks)", 'B',"Representation", true).value();
+00033     if (benchmarkFileName == "") {
+00034         std::string stmp = "*** Missing name of the benchmark file\n";
+00035         stmp += "    Type '-B=the_benchmark_file_name' or '--BenchmarkFile=the_benchmark_file_name'\n";
+00036         stmp += "    Benchmarks files are available at www.lifl.fr/~liefooga/benchmarks";
+00037         throw std::runtime_error(stmp.c_str());
+00038     }
+00039     // reading of the parameters contained in the benchmark file
+00040     FlowShopBenchmarkParser fParser(benchmarkFileName);
+00041     unsigned int M = fParser.getM();
+00042     unsigned int N = fParser.getN();
+00043     std::vector< std::vector<unsigned int> > p = fParser.getP();
+00044     std::vector<unsigned int> d = fParser.getD();
+00045     // build of the initializer (a pointer, stored in the eoState)
+00046     FlowShopEval* plainEval = new FlowShopEval(M, N, p, d);
+00047     // turn that object into an evaluation counter
+00048     eoEvalFuncCounter<FlowShop>* eval = new eoEvalFuncCounter<FlowShop> (* plainEval);
+00049     // store in state
+00050     _state.storeFunctor(eval);
+00051     // and return a reference
+00052     return *eval;
+00053 }
+00054 
+00055 #endif /*MAKE_EVAL_FLOWSHOP_H_*/
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/make__genotype__FlowShop_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/make__genotype__FlowShop_8h-source.html new file mode 100644 index 000000000..51c9704e5 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/make__genotype__FlowShop_8h-source.html @@ -0,0 +1,76 @@ + + +ParadisEO-MOEOMovingObjects: make_genotype_FlowShop.h Source File + + + + +
+
+

make_genotype_FlowShop.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // make_genotype_FlowShop.h
+00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007
+00006 /*
+00007     This library...
+00008 
+00009     Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr
+00010  */
+00011 //-----------------------------------------------------------------------------
+00012 
+00013 #ifndef MAKE_GENOTYPE_FLOWSHOP_H_
+00014 #define MAKE_GENOTYPE_FLOWSHOP_H_
+00015 
+00016 #include <utils/eoParser.h>
+00017 #include <utils/eoState.h>
+00018 #include <FlowShop.h>
+00019 #include <FlowShopInit.h>
+00020 #include <FlowShopBenchmarkParser.h>
+00021 
+00022 /*
+00023  * This function creates an eoInit<eoFlowShop> that can later be used to initialize the population (see make_pop.h).
+00024  * @param eoParser& _parser  to get user parameters
+00025  * @param eoState& _state  to store the memory
+00026  */
+00027 eoInit<FlowShop> & do_make_genotype(eoParser& _parser, eoState& _state)
+00028 {
+00029     // benchmark file name
+00030     std::string benchmarkFileName = _parser.getORcreateParam(std::string(), "BenchmarkFile", "Benchmark file name (benchmarks are available at www.lifl.fr/~liefooga/benchmarks/)", 'B',"Representation", true).value();
+00031     if (benchmarkFileName == "") {
+00032         std::string stmp = "*** Missing name of the benchmark file\n";
+00033         stmp += "   Type '-B=the_benchmark_file_name' or '--BenchmarkFile=the_benchmark_file_name'\n";
+00034         stmp += "   Benchmarks files are available at www.lifl.fr/~liefooga/benchmarks";
+00035         throw std::runtime_error(stmp.c_str());
+00036     }
+00037     // reading of number of jobs to schedule contained in the benchmark file
+00038     FlowShopBenchmarkParser fParser(benchmarkFileName);
+00039     unsigned int N = fParser.getN();
+00040     // build of the initializer (a pointer, stored in the eoState)
+00041     eoInit<FlowShop>* init = new FlowShopInit(N);
+00042     // store in state
+00043     _state.storeFunctor(init);
+00044     // and return a reference
+00045     return *init;
+00046 }
+00047 
+00048 #endif /*MAKE_GENOTYPE_FLOWSHOP_H_*/
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/make__ls__moeo_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/make__ls__moeo_8h-source.html new file mode 100644 index 000000000..c61f1774b --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/make__ls__moeo_8h-source.html @@ -0,0 +1,136 @@ + + +ParadisEO-MOEOMovingObjects: make_ls_moeo.h Source File + + + + +
+
+

make_ls_moeo.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // make_ls_moeo.h
+00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007
+00006 /*
+00007     This library...
+00008 
+00009     Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr
+00010  */
+00011 //-----------------------------------------------------------------------------
+00012 
+00013 #ifndef MAKE_LS_MOEO_H_
+00014 #define MAKE_LS_MOEO_H_
+00015 
+00016 #include <eoContinue.h>
+00017 #include <eoEvalFunc.h>
+00018 #include <eoGenOp.h>
+00019 #include <utils/eoParser.h>
+00020 #include <utils/eoState.h>
+00021 #include <algo/moeoIBMOLS.h>
+00022 #include <algo/moeoIteratedIBMOLS.h>
+00023 #include <algo/moeoLS.h>
+00024 #include <archive/moeoArchive.h>
+00025 #include <fitness/moeoBinaryIndicatorBasedFitnessAssignment.h>
+00026 #include <fitness/moeoExpBinaryIndicatorBasedFitnessAssignment.h>
+00027 #include <metric/moeoNormalizedSolutionVsSolutionBinaryMetric.h>
+00028 #include <move/moeoMoveIncrEval.h>
+00029 
+00043 template < class MOEOT, class Move >
+00044 moeoLS < MOEOT, eoPop<MOEOT> & > & do_make_ls_moeo      (
+00045     eoParser & _parser,
+00046     eoState & _state,
+00047     eoEvalFunc < MOEOT > & _eval,
+00048     moeoMoveIncrEval < Move > & _moveIncrEval,
+00049     eoContinue < MOEOT > & _continue,
+00050     eoMonOp < MOEOT > & _op,
+00051     eoMonOp < MOEOT > & _opInit,
+00052     moMoveInit < Move > & _moveInit,
+00053     moNextMove < Move > & _nextMove,
+00054     moeoArchive < MOEOT > & _archive
+00055 )
+00056 {
+00057     /* the objective vector type */
+00058     typedef typename MOEOT::ObjectiveVector ObjectiveVector;
+00059     /* the fitness assignment strategy */
+00060     std::string & fitnessParam = _parser.getORcreateParam(std::string("IndicatorBased"), "fitness",
+00061                             "Fitness assignment strategy parameter: IndicatorBased...", 'F',
+00062                             "Evolution Engine").value();
+00063     std::string & indicatorParam = _parser.getORcreateParam(std::string("Epsilon"), "indicator",
+00064                               "Binary indicator to use with the IndicatorBased assignment: Epsilon, Hypervolume", 'i',
+00065                               "Evolution Engine").value();
+00066     double rho = _parser.getORcreateParam(1.1, "rho", "reference point for the hypervolume indicator",
+00067                                           'r', "Evolution Engine").value();
+00068     double kappa = _parser.getORcreateParam(0.05, "kappa", "Scaling factor kappa for IndicatorBased",
+00069                                             'k', "Evolution Engine").value();
+00070     moeoBinaryIndicatorBasedFitnessAssignment < MOEOT > * fitnessAssignment;
+00071     if (fitnessParam == std::string("IndicatorBased"))
+00072     {
+00073         // metric
+00074         moeoNormalizedSolutionVsSolutionBinaryMetric < ObjectiveVector, double > *metric;
+00075         if (indicatorParam == std::string("Epsilon"))
+00076         {
+00077             metric = new moeoAdditiveEpsilonBinaryMetric < ObjectiveVector >;
+00078         }
+00079         else if (indicatorParam == std::string("Hypervolume"))
+00080         {
+00081             metric = new moeoHypervolumeBinaryMetric < ObjectiveVector > (rho);
+00082         }
+00083         else
+00084         {
+00085             std::string stmp = std::string("Invalid binary quality indicator: ") + indicatorParam;
+00086             throw std::runtime_error(stmp.c_str());
+00087         }
+00088         fitnessAssignment = new moeoExpBinaryIndicatorBasedFitnessAssignment < MOEOT> (*metric, kappa);
+00089     }
+00090     else
+00091     {
+00092         std::string stmp = std::string("Invalid fitness assignment strategy: ") + fitnessParam;
+00093         throw std::runtime_error(stmp.c_str());
+00094     }
+00095     _state.storeFunctor(fitnessAssignment);
+00096     // number of iterations
+00097     unsigned int n = _parser.getORcreateParam(1, "n", "Number of iterations for population Initialization", 'n', "Evolution Engine").value();
+00098     // LS
+00099     std::string & lsParam = _parser.getORcreateParam(std::string("I-IBMOLS"), "ls",
+00100                        "Local Search: IBMOLS, I-IBMOLS (Iterated-IBMOLS)...", 'L',
+00101                        "Evolution Engine").value();
+00102     moeoLS < MOEOT, eoPop<MOEOT> & > * ls;
+00103     if (lsParam == std::string("IBMOLS"))
+00104     {
+00105         ls = new moeoIBMOLS < MOEOT, Move > (_moveInit, _nextMove, _eval, _moveIncrEval, *fitnessAssignment, _continue);;
+00106     }
+00107     else if (lsParam == std::string("I-IBMOLS"))
+00108     {
+00109         ls = new moeoIteratedIBMOLS < MOEOT, Move > (_moveInit, _nextMove, _eval, _moveIncrEval, *fitnessAssignment, _continue, _op, _opInit, n);
+00110     }
+00111     else
+00112     {
+00113         std::string stmp = std::string("Invalid fitness assignment strategy: ") + fitnessParam;
+00114         throw std::runtime_error(stmp.c_str());
+00115     }
+00116     _state.storeFunctor(ls);
+00117     // that's it !
+00118     return *ls;
+00119 }
+00120 
+00121 #endif /*MAKE_LS_MOEO_H_*/
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/make__op__FlowShop_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/make__op__FlowShop_8h-source.html new file mode 100644 index 000000000..55d792e9d --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/make__op__FlowShop_8h-source.html @@ -0,0 +1,130 @@ + + +ParadisEO-MOEOMovingObjects: make_op_FlowShop.h Source File + + + + +
+
+

make_op_FlowShop.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // make_op_FlowShop.h
+00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007
+00006 /*
+00007     This library...
+00008 
+00009     Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr
+00010  */
+00011 //-----------------------------------------------------------------------------
+00012 
+00013 #ifndef MAKE_OP_FLOWSHOP_H_
+00014 #define MAKE_OP_FLOWSHOP_H_
+00015 
+00016 #include <utils/eoParser.h>
+00017 #include <utils/eoState.h>
+00018 #include <eoOp.h>
+00019 #include <eoGenOp.h>
+00020 #include <eoCloneOps.h>
+00021 #include <eoOpContainer.h>
+00022 #include <eoProportionalCombinedOp.h>
+00023 #include <FlowShopOpCrossoverQuad.h>
+00024 #include <FlowShopOpMutationShift.h>
+00025 #include <FlowShopOpMutationExchange.h>
+00026 
+00027 /*
+00028  * This function builds the operators that will be applied to the eoFlowShop
+00029  * @param eoParameterLoader& _parser to get user parameters
+00030  * @param eoState& _state to store the memory
+00031  */
+00032 eoGenOp<FlowShop> & do_make_op(eoParameterLoader& _parser, eoState& _state)
+00033 {
+00034 
+00036     // Variation operators
+00038 
+00039     // the crossover
+00041 
+00042     // a first crossover
+00043     eoQuadOp<FlowShop> *cross = new FlowShopOpCrossoverQuad;
+00044     // store in the state
+00045     _state.storeFunctor(cross);
+00046 
+00047     // relative rate in the combination
+00048     double cross1Rate = _parser.createParam(1.0, "crossRate", "Relative rate for the only crossover", 0, "Variation Operators").value();
+00049     // creation of the combined operator with this one
+00050     eoPropCombinedQuadOp<FlowShop> *propXover = new eoPropCombinedQuadOp<FlowShop>(*cross, cross1Rate);
+00051     // store in the state
+00052     _state.storeFunctor(propXover);
+00053 
+00054 
+00055     // the mutation
+00057 
+00058     // a first mutation : the shift mutation
+00059     eoMonOp<FlowShop> *mut = new FlowShopOpMutationShift;
+00060     _state.storeFunctor(mut);
+00061     // its relative rate in the combination
+00062     double mut1Rate = _parser.createParam(0.5, "shiftMutRate", "Relative rate for shift mutation", 0, "Variation Operators").value();
+00063     // creation of the combined operator with this one
+00064     eoPropCombinedMonOp<FlowShop> *propMutation = new eoPropCombinedMonOp<FlowShop>(*mut, mut1Rate);
+00065     _state.storeFunctor(propMutation);
+00066 
+00067     // a second mutation : the exchange mutation
+00068     mut = new FlowShopOpMutationExchange;
+00069     _state.storeFunctor(mut);
+00070     // its relative rate in the combination
+00071     double mut2Rate = _parser.createParam(0.5, "exchangeMutRate", "Relative rate for exchange mutation", 0, "Variation Operators").value();
+00072     // addition of this one to the combined operator
+00073     propMutation -> add(*mut, mut2Rate);
+00074 
+00075     // end of crossover and mutation definitions
+00077 
+00078     // First read the individual level parameters
+00079     eoValueParam<double>& pCrossParam = _parser.createParam(0.25, "pCross", "Probability of Crossover", 'c', "Variation Operators" );
+00080     // minimum check
+00081     if ( (pCrossParam.value() < 0) || (pCrossParam.value() > 1) )
+00082         throw std::runtime_error("Invalid pCross");
+00083 
+00084     eoValueParam<double>& pMutParam = _parser.createParam(0.35, "pMut", "Probability of Mutation", 'm', "Variation Operators" );
+00085     // minimum check
+00086     if ( (pMutParam.value() < 0) || (pMutParam.value() > 1) )
+00087         throw std::runtime_error("Invalid pMut");
+00088 
+00089     // the crossover - with probability pCross
+00090     eoProportionalOp<FlowShop> * propOp = new eoProportionalOp<FlowShop> ;
+00091     _state.storeFunctor(propOp);
+00092     eoQuadOp<FlowShop> *ptQuad = new eoQuadCloneOp<FlowShop>;
+00093     _state.storeFunctor(ptQuad);
+00094     propOp -> add(*propXover, pCrossParam.value()); // crossover, with proba pcross
+00095     propOp -> add(*ptQuad, 1-pCrossParam.value()); // nothing, with proba 1-pcross
+00096 
+00097     // now the sequential
+00098     eoSequentialOp<FlowShop> *op = new eoSequentialOp<FlowShop>;
+00099     _state.storeFunctor(op);
+00100     op -> add(*propOp, 1.0);     // always do combined crossover
+00101     op -> add(*propMutation, pMutParam.value()); // then mutation, with proba pmut
+00102 
+00103     // return a reference
+00104     return *op;
+00105 }
+00106 
+00107 #endif /*MAKE_OP_FLOWSHOP_H_*/
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/moeoIBMOLS_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/moeoIBMOLS_8h-source.html new file mode 100644 index 000000000..3b87f592f --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/moeoIBMOLS_8h-source.html @@ -0,0 +1,469 @@ + + +ParadisEO-MOEOMovingObjects: moeoIBMOLS.h Source File + + + + +
+
+

moeoIBMOLS.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // moeoIBMOLS.h
+00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007
+00006 /*
+00007     This library...
+00008 
+00009     Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr
+00010  */
+00011 //-----------------------------------------------------------------------------
+00012 
+00013 #ifndef MOEOIBMOLS_H_
+00014 #define MOEOIBMOLS_H_
+00015 
+00016 #include <math.h>
+00017 #include <eoContinue.h>
+00018 #include <eoEvalFunc.h>
+00019 #include <eoPop.h>
+00020 #include <moMove.h>
+00021 #include <moMoveInit.h>
+00022 #include <moNextMove.h>
+00023 #include <algo/moeoLS.h>
+00024 #include <archive/moeoArchive.h>
+00025 #include <fitness/moeoBinaryIndicatorBasedFitnessAssignment.h>
+00026 #include <move/moeoMoveIncrEval.h>
+00027 
+00032 template < class MOEOT, class Move >
+00033 class moeoIBMOLS : public moeoLS < MOEOT, eoPop < MOEOT > & >
+00034 {
+00035 public:
+00036 
+00038     typedef typename MOEOT::ObjectiveVector ObjectiveVector;
+00039 
+00040 
+00050     moeoIBMOLS(
+00051         moMoveInit < Move > & _moveInit,
+00052         moNextMove < Move > & _nextMove,
+00053         eoEvalFunc < MOEOT > & _eval,
+00054         moeoMoveIncrEval < Move > & _moveIncrEval,
+00055         moeoBinaryIndicatorBasedFitnessAssignment < MOEOT > & _fitnessAssignment,
+00056         eoContinue < MOEOT > & _continuator
+00057     ) :
+00058             moveInit(_moveInit),
+00059             nextMove(_nextMove),
+00060             eval(_eval),
+00061             moveIncrEval(_moveIncrEval),
+00062             fitnessAssignment (_fitnessAssignment),
+00063             continuator (_continuator)
+00064     {}
+00065 
+00066 
+00073     void operator() (eoPop < MOEOT > & _pop, moeoArchive < MOEOT > & _arch)
+00074     {
+00075         // evaluation of the objective values
+00076         /*
+00077                 for (unsigned int i=0; i<_pop.size(); i++)
+00078                 {
+00079                     eval(_pop[i]);
+00080                 }
+00081         */
+00082         // fitness assignment for the whole population
+00083         fitnessAssignment(_pop);
+00084         // creation of a local archive
+00085         moeoArchive < MOEOT > archive;
+00086         // creation of another local archive (for the stopping criteria)
+00087         moeoArchive < MOEOT > previousArchive;
+00088         // update the archive with the initial population
+00089         archive.update(_pop);
+00090         do
+00091         {
+00092             previousArchive.update(archive);
+00093             oneStep(_pop);
+00094             archive.update(_pop);
+00095         } while ( (! archive.equals(previousArchive)) && (continuator(_arch)) );
+00096         _arch.update(archive);
+00097     }
+00098 
+00099 
+00100 private:
+00101 
+00103     moMoveInit < Move > & moveInit;
+00105     moNextMove < Move > & nextMove;
+00107     eoEvalFunc < MOEOT > & eval;
+00109     moeoMoveIncrEval < Move > & moveIncrEval;
+00111     moeoBinaryIndicatorBasedFitnessAssignment < MOEOT > & fitnessAssignment;
+00113     eoContinue < MOEOT > & continuator;
+00114 
+00115 
+00120     void oneStep (eoPop < MOEOT > & _pop)
+00121     {
+00122         // the move
+00123         Move move;
+00124         // the objective vector and the fitness of the current solution
+00125         ObjectiveVector x_objVec;
+00126         double x_fitness;
+00127         // the index, the objective vector and the fitness of the worst solution in the population (-1 implies that the worst is the newly created one)
+00128         int worst_idx;
+00129         ObjectiveVector worst_objVec;
+00130         double worst_fitness;
+00132         // the indexes and the objective vectors of the extreme non-dominated points
+00133         int ext_0_idx, ext_1_idx;
+00134         ObjectiveVector ext_0_objVec, ext_1_objVec;
+00135         unsigned int ind;   
+00137         // the index of the current solution to be explored
+00138         unsigned int i=0;
+00139         // initilization of the move for the first individual
+00140         moveInit(move, _pop[i]);
+00141         while (i<_pop.size() && continuator(_pop))
+00142         {
+00143             // x = one neigbour of pop[i]
+00144             // evaluate x in the objective space
+00145             x_objVec = moveIncrEval(move, _pop[i]);
+00146             // update every fitness values to take x into account and compute the fitness of x
+00147             x_fitness = fitnessAssignment.updateByAdding(_pop, x_objVec);
+00148 
+00152                         // extreme solutions (min only!)
+00153             ext_0_idx = -1;
+00154             ext_0_objVec = x_objVec;
+00155             ext_1_idx = -1;
+00156             ext_1_objVec = x_objVec;
+00157             for (unsigned int k=0; k<_pop.size(); k++)
+00158             {
+00159                 // ext_0
+00160                 if (_pop[k].objectiveVector()[0] < ext_0_objVec[0])
+00161                 {
+00162                     ext_0_idx = k;
+00163                     ext_0_objVec = _pop[k].objectiveVector();
+00164                 }
+00165                 else if ( (_pop[k].objectiveVector()[0] == ext_0_objVec[0]) && (_pop[k].objectiveVector()[1] < ext_0_objVec[1]) )
+00166                 {
+00167                     ext_0_idx = k;
+00168                     ext_0_objVec = _pop[k].objectiveVector();
+00169                 }
+00170                 // ext_1
+00171                 else if (_pop[k].objectiveVector()[1] < ext_1_objVec[1])
+00172                 {
+00173                     ext_1_idx = k;
+00174                     ext_1_objVec = _pop[k].objectiveVector();
+00175                 }
+00176                 else if ( (_pop[k].objectiveVector()[1] == ext_1_objVec[1]) && (_pop[k].objectiveVector()[0] < ext_1_objVec[0]) )
+00177                 {
+00178                     ext_1_idx = k;
+00179                     ext_1_objVec = _pop[k].objectiveVector();
+00180                 }
+00181             }
+00182                         // worst init
+00183             if (ext_0_idx == -1)
+00184             {
+00185                 ind = 0;
+00186                 while (ind == ext_1_idx)
+00187                 {
+00188                     ind++;
+00189                 }
+00190                 worst_idx = ind;
+00191                 worst_objVec = _pop[ind].objectiveVector();
+00192                 worst_fitness = _pop[ind].fitness();
+00193             }
+00194             else if (ext_1_idx == -1)
+00195             {
+00196                 ind = 0;
+00197                 while (ind == ext_0_idx)
+00198                 {
+00199                     ind++;
+00200                 }
+00201                 worst_idx = ind;
+00202                 worst_objVec = _pop[ind].objectiveVector();
+00203                 worst_fitness = _pop[ind].fitness();
+00204             }
+00205             else
+00206             {
+00207                 worst_idx = -1;
+00208                 worst_objVec = x_objVec;
+00209                 worst_fitness = x_fitness;
+00210             }
+00214 
+00215             // who is the worst ?
+00216             for (unsigned int j=0; j<_pop.size(); j++)
+00217             {
+00218                 if ( (j!=ext_0_idx) && (j!=ext_1_idx) )
+00219                 {
+00220                     if (_pop[j].fitness() < worst_fitness)
+00221                     {
+00222                         worst_idx = j;
+00223                         worst_objVec = _pop[j].objectiveVector();
+00224                         worst_fitness = _pop[j].fitness();
+00225                     }
+00226                 }
+00227             }
+00228             // if the worst solution is the new one
+00229             if (worst_idx == -1)
+00230             {
+00231                 // if all its neighbours have been explored,
+00232                 // let's explore the neighborhoud of the next individual
+00233                 if (! nextMove(move, _pop[i]))
+00234                 {
+00235                     i++;
+00236                     if (i<_pop.size())
+00237                     {
+00238                         // initilization of the move for the next individual
+00239                         moveInit(move, _pop[i]);
+00240                     }
+00241                 }
+00242             }
+00243             // if the worst solution is located before _pop[i]
+00244             else if (worst_idx <= i)
+00245             {
+00246                 // the new solution takes place insteed of _pop[worst_idx]
+00247                 _pop[worst_idx] = _pop[i];
+00248                 move(_pop[worst_idx]);
+00249                 _pop[worst_idx].objectiveVector(x_objVec);
+00250                 _pop[worst_idx].fitness(x_fitness);
+00251                 // let's explore the neighborhoud of the next individual
+00252                 i++;
+00253                 if (i<_pop.size())
+00254                 {
+00255                     // initilization of the move for the next individual
+00256                     moveInit(move, _pop[i]);
+00257                 }
+00258             }
+00259             // if the worst solution is located after _pop[i]
+00260             else if (worst_idx > i)
+00261             {
+00262                 // the new solution takes place insteed of _pop[i+1] and _pop[worst_idx] is deleted
+00263                 _pop[worst_idx] = _pop[i+1];
+00264                 _pop[i+1] = _pop[i];
+00265                 move(_pop[i+1]);
+00266                 _pop[i+1].objectiveVector(x_objVec);
+00267                 _pop[i+1].fitness(x_fitness);
+00268                 // let's explore the neighborhoud of the individual _pop[i+2]
+00269                 i += 2;
+00270                 if (i<_pop.size())
+00271                 {
+00272                     // initilization of the move for the next individual
+00273                     moveInit(move, _pop[i]);
+00274                 }
+00275             }
+00276             // update fitness values
+00277             fitnessAssignment.updateByDeleting(_pop, worst_objVec);
+00278         }
+00279     }
+00280 
+00281 
+00282 
+00283 
+00284 
+00285 
+00286 
+00287 
+00288 
+00289 
+00290 
+00291 
+00292 
+00293 // INUTILE !!!!
+00294 
+00295 
+00296 
+00297 
+00298 
+00299 
+00304     void new_oneStep (eoPop < MOEOT > & _pop)
+00305     {
+00306         // the move
+00307         Move move;
+00308         // the objective vector and the fitness of the current solution
+00309         ObjectiveVector x_objVec;
+00310         double x_fitness;
+00311         // the index, the objective vector and the fitness of the worst solution in the population (-1 implies that the worst is the newly created one)
+00312         int worst_idx;
+00313         ObjectiveVector worst_objVec;
+00314         double worst_fitness;
+00316         // the index of the extreme non-dominated points
+00317         int ext_0_idx, ext_1_idx;
+00318         unsigned int ind;   
+00320         // the index current of the current solution to be explored
+00321         unsigned int i=0;
+00322         // initilization of the move for the first individual
+00323         moveInit(move, _pop[i]);
+00324         while (i<_pop.size() && continuator(_pop))
+00325         {
+00326             // x = one neigbour of pop[i]
+00327             // evaluate x in the objective space
+00328             x_objVec = moveIncrEval(move, _pop[i]);
+00329             // update every fitness values to take x into account and compute the fitness of x
+00330             x_fitness = fitnessAssignment.updateByAdding(_pop, x_objVec);
+00331 
+00335                         // extremes solutions
+00336             OneObjectiveComparator comp0(0);
+00337             ext_0_idx = std::min_element(_pop.begin(), _pop.end(), comp0) - _pop.begin();
+00338             OneObjectiveComparator comp1(1);
+00339             ext_1_idx = std::min_element(_pop.begin(), _pop.end(), comp1) - _pop.begin();
+00340                         // new = extreme ?
+00341             if (x_objVec[0] < _pop[ext_0_idx].objectiveVector()[0])
+00342             {
+00343                 ext_0_idx = -1;
+00344             }
+00345             else if ( (x_objVec[0] == _pop[ext_0_idx].objectiveVector()[0]) && (x_objVec[1] < _pop[ext_0_idx].objectiveVector()[1]) )
+00346             {
+00347                 ext_0_idx = -1;
+00348             }
+00349             else if (x_objVec[1] < _pop[ext_1_idx].objectiveVector()[1])
+00350             {
+00351                 ext_1_idx = -1;
+00352             }
+00353             else if ( (x_objVec[1] == _pop[ext_1_idx].objectiveVector()[1]) && (x_objVec[0] < _pop[ext_1_idx].objectiveVector()[0]) )
+00354             {
+00355                 ext_1_idx = -1;
+00356             }
+00357             // worst init
+00358             if (ext_0_idx == -1)
+00359             {
+00360                 ind = 0;
+00361                 while (ind == ext_1_idx)
+00362                 {
+00363                     ind++;
+00364                 }
+00365                 worst_idx = ind;
+00366                 worst_objVec = _pop[ind].objectiveVector();
+00367                 worst_fitness = _pop[ind].fitness();
+00368             }
+00369             else if (ext_1_idx == -1)
+00370             {
+00371                 ind = 0;
+00372                 while (ind == ext_0_idx)
+00373                 {
+00374                     ind++;
+00375                 }
+00376                 worst_idx = ind;
+00377                 worst_objVec = _pop[ind].objectiveVector();
+00378                 worst_fitness = _pop[ind].fitness();
+00379             }
+00380             else
+00381             {
+00382                 worst_idx = -1;
+00383                 worst_objVec = x_objVec;
+00384                 worst_fitness = x_fitness;
+00385             }
+00389 
+00390             // who is the worst ?
+00391             for (unsigned int j=0; j<_pop.size(); j++)
+00392             {
+00393                 if ( (j!=ext_0_idx) && (j!=ext_1_idx) )
+00394                 {
+00395                     if (_pop[j].fitness() < worst_fitness)
+00396                     {
+00397                         worst_idx = j;
+00398                         worst_objVec = _pop[j].objectiveVector();
+00399                         worst_fitness = _pop[j].fitness();
+00400                     }
+00401                 }
+00402             }
+00403             // if the worst solution is the new one
+00404             if (worst_idx == -1)
+00405             {
+00406                 // if all its neighbours have been explored,
+00407                 // let's explore the neighborhoud of the next individual
+00408                 if (! nextMove(move, _pop[i]))
+00409                 {
+00410                     i++;
+00411                     if (i<_pop.size())
+00412                     {
+00413                         // initilization of the move for the next individual
+00414                         moveInit(move, _pop[i]);
+00415                     }
+00416                 }
+00417             }
+00418             // if the worst solution is located before _pop[i]
+00419             else if (worst_idx <= i)
+00420             {
+00421                 // the new solution takes place insteed of _pop[worst_idx]
+00422                 _pop[worst_idx] = _pop[i];
+00423                 move(_pop[worst_idx]);
+00424                 _pop[worst_idx].objectiveVector(x_objVec);
+00425                 _pop[worst_idx].fitness(x_fitness);
+00426                 // let's explore the neighborhoud of the next individual
+00427                 i++;
+00428                 if (i<_pop.size())
+00429                 {
+00430                     // initilization of the move for the next individual
+00431                     moveInit(move, _pop[i]);
+00432                 }
+00433             }
+00434             // if the worst solution is located after _pop[i]
+00435             else if (worst_idx > i)
+00436             {
+00437                 // the new solution takes place insteed of _pop[i+1] and _pop[worst_idx] is deleted
+00438                 _pop[worst_idx] = _pop[i+1];
+00439                 _pop[i+1] = _pop[i];
+00440                 move(_pop[i+1]);
+00441                 _pop[i+1].objectiveVector(x_objVec);
+00442                 _pop[i+1].fitness(x_fitness);
+00443                 // let's explore the neighborhoud of the individual _pop[i+2]
+00444                 i += 2;
+00445                 if (i<_pop.size())
+00446                 {
+00447                     // initilization of the move for the next individual
+00448                     moveInit(move, _pop[i]);
+00449                 }
+00450             }
+00451             // update fitness values
+00452             fitnessAssignment.updateByDeleting(_pop, worst_objVec);
+00453         }
+00454     }
+00455 
+00456 
+00457 
+00458 
+00459 
+00460 
+00462 class OneObjectiveComparator : public moeoComparator < MOEOT >
+00463     {
+00464     public:
+00465         OneObjectiveComparator(unsigned int _obj) : obj(_obj)
+00466         {
+00467             if (obj > MOEOT::ObjectiveVector::nObjectives())
+00468             {
+00469                 throw std::runtime_error("Problem with the index of objective in OneObjectiveComparator");
+00470             }
+00471         }
+00472         const bool operator()(const MOEOT & _moeo1, const MOEOT & _moeo2)
+00473         {
+00474             if (_moeo1.objectiveVector()[obj] < _moeo2.objectiveVector()[obj])
+00475             {
+00476                 return true;
+00477             }
+00478             else
+00479             {
+00480                 return (_moeo1.objectiveVector()[obj] == _moeo2.objectiveVector()[obj]) && (_moeo1.objectiveVector()[(obj+1)%2] < _moeo2.objectiveVector()[(obj+1)%2]);
+00481             }
+00482         }
+00483     private:
+00484         unsigned int obj;
+00485     };
+00487 
+00488 
+00489 
+00490 
+00491 };
+00492 
+00493 #endif /*MOEOIBMOLS_H_*/
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/moeoIteratedIBMOLS_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/moeoIteratedIBMOLS_8h-source.html new file mode 100644 index 000000000..8f03adb31 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/moeoIteratedIBMOLS_8h-source.html @@ -0,0 +1,206 @@ + + +ParadisEO-MOEOMovingObjects: moeoIteratedIBMOLS.h Source File + + + + +
+
+

moeoIteratedIBMOLS.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // moeoIteratedIBMOLS.h
+00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007
+00006 /*
+00007     This library...
+00008 
+00009     Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr
+00010  */
+00011 //-----------------------------------------------------------------------------
+00012 
+00013 #ifndef MOEOITERATEDIBMOLS_H_
+00014 #define MOEOITERATEDIBMOLS_H_
+00015 
+00016 #include <eoContinue.h>
+00017 #include <eoEvalFunc.h>
+00018 #include <eoOp.h>
+00019 #include <eoPop.h>
+00020 #include <utils/rnd_generators.h>
+00021 #include <moMove.h>
+00022 #include <moMoveInit.h>
+00023 #include <moNextMove.h>
+00024 #include <algo/moeoIBMOLS.h>
+00025 #include <algo/moeoLS.h>
+00026 #include <archive/moeoArchive.h>
+00027 #include <fitness/moeoBinaryIndicatorBasedFitnessAssignment.h>
+00028 #include <move/moeoMoveIncrEval.h>
+00029 
+00030 
+00031 
+00032 //#include <rsCrossQuad.h>
+00033 
+00034 
+00035 
+00040 template < class MOEOT, class Move >
+00041 class moeoIteratedIBMOLS : public moeoLS < MOEOT, eoPop < MOEOT > & >
+00042 {
+00043 public:
+00044 
+00046     typedef typename MOEOT::ObjectiveVector ObjectiveVector;
+00047 
+00048 
+00061     moeoIteratedIBMOLS(
+00062         moMoveInit < Move > & _moveInit,
+00063         moNextMove < Move > & _nextMove,
+00064         eoEvalFunc < MOEOT > & _eval,
+00065         moeoMoveIncrEval < Move > & _moveIncrEval,
+00066         moeoBinaryIndicatorBasedFitnessAssignment < MOEOT > & _fitnessAssignment,
+00067         eoContinue < MOEOT > & _continuator,
+00068         eoMonOp < MOEOT > & _monOp,
+00069         eoMonOp < MOEOT > & _randomMonOp,
+00070         unsigned int _nNoiseIterations=1
+00071     ) :
+00072             ibmols(_moveInit, _nextMove, _eval, _moveIncrEval, _fitnessAssignment, _continuator),
+00073             eval(_eval),
+00074             continuator(_continuator),
+00075             monOp(_monOp),
+00076             randomMonOp(_randomMonOp),
+00077             nNoiseIterations(_nNoiseIterations)
+00078     {}
+00079 
+00080 
+00086     void operator() (eoPop < MOEOT > & _pop, moeoArchive < MOEOT > & _arch)
+00087     {
+00088         _arch.update(_pop);
+00089         ibmols(_pop, _arch);
+00090         while (continuator(_arch))
+00091         {
+00092             // generate new solutions from the archive
+00093             generateNewSolutions(_pop, _arch);
+00094             // apply the local search (the global archive is updated in the sub-function)
+00095             ibmols(_pop, _arch);
+00096         }
+00097     }
+00098 
+00099 
+00100 private:
+00101 
+00103     moeoIBMOLS < MOEOT, Move > ibmols;
+00105     eoEvalFunc < MOEOT > & eval;
+00107     eoContinue < MOEOT > & continuator;
+00109     eoMonOp < MOEOT > & monOp;
+00111     eoMonOp < MOEOT > & randomMonOp;
+00113     unsigned int nNoiseIterations;
+00114 
+00115 
+00121     void generateNewSolutions(eoPop < MOEOT > & _pop, const moeoArchive < MOEOT > & _arch)
+00122     {
+00123         // shuffle vector for the random selection of individuals
+00124         vector<unsigned int> shuffle;
+00125         shuffle.resize(std::max(_pop.size(), _arch.size()));
+00126         // init shuffle
+00127         for (unsigned int i=0; i<shuffle.size(); i++)
+00128         {
+00129             shuffle[i] = i;
+00130         }
+00131         // randomize shuffle
+00132         UF_random_generator <unsigned int> gen;
+00133         std::random_shuffle(shuffle.begin(), shuffle.end(), gen);
+00134         // start the creation of new solutions
+00135         for (unsigned int i=0; i<_pop.size(); i++)
+00136         {
+00137             if (shuffle[i] < _arch.size()) // the given archive contains the individual i
+00138             {
+00139                 // add it to the resulting pop
+00140                 _pop[i] = _arch[shuffle[i]];
+00141                 // apply noise
+00142                 for (unsigned int j=0; j<nNoiseIterations; j++)
+00143                 {
+00144                     monOp(_pop[i]);
+00145                 }
+00146             }
+00147             else // a random solution needs to be added
+00148             {
+00149                 // random initialization
+00150                 randomMonOp(_pop[i]);
+00151             }
+00152             // evaluation of the new individual
+00153             _pop[i].invalidate();
+00154             eval(_pop[i]);
+00155         }
+00156     }
+00157 
+00158 
+00159 
+00160 
+00161 
+00163 // A DEVELOPPER RAPIDEMENT POUR TESTER AVEC CROSSOVER //
+00164     /*
+00165         void generateNewSolutions2(eoPop < MOEOT > & _pop, const moeoArchive < MOEOT > & _arch)
+00166         {
+00167                 // here, we must have a QuadOp !
+00168                 //eoQuadOp < MOEOT > quadOp;
+00169                 rsCrossQuad quadOp;
+00170                 // shuffle vector for the random selection of individuals
+00171                 vector<unsigned int> shuffle;
+00172                 shuffle.resize(_arch.size());
+00173                 // init shuffle
+00174                 for (unsigned int i=0; i<shuffle.size(); i++)
+00175                 {
+00176                         shuffle[i] = i;
+00177                 }
+00178                 // randomize shuffle
+00179                 UF_random_generator <unsigned int int> gen;
+00180                 std::random_shuffle(shuffle.begin(), shuffle.end(), gen);
+00181                 // start the creation of new solutions
+00182                 unsigned int i=0;
+00183                 while ((i<_pop.size()-1) && (i<_arch.size()-1))
+00184                 {
+00185                         _pop[i] = _arch[shuffle[i]];
+00186                         _pop[i+1] = _arch[shuffle[i+1]];
+00187                         // then, apply the operator nIterationsNoise times
+00188                         for (unsigned int j=0; j<nNoiseIterations; j++)
+00189                         {
+00190                                 quadOp(_pop[i], _pop[i+1]);
+00191                         }
+00192                         eval(_pop[i]);
+00193                         eval(_pop[i+1]);
+00194                         i=i+2;
+00195                 }
+00196                 // do we have to add some random solutions ?
+00197                 while (i<_pop.size())
+00198                 {
+00199                         randomMonOp(_pop[i]);
+00200                         eval(_pop[i]);
+00201                         i++;
+00202                 }
+00203         }
+00204         */
+00206 
+00207 
+00208 
+00209 
+00210 
+00211 };
+00212 
+00213 #endif /*MOEOITERATEDIBMOLS_H_*/
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/moeoMoveIncrEval_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/moeoMoveIncrEval_8h-source.html new file mode 100644 index 000000000..884a87bd0 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/moeoMoveIncrEval_8h-source.html @@ -0,0 +1,39 @@ + + +ParadisEO-MOEOMovingObjects: moeoMoveIncrEval.h Source File + + + + +
+
+

moeoMoveIncrEval.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 #ifndef _MOEOMOVEINCREVAL_H
+00004 #define _MOEOMOVEINCREVAL_H
+00005 
+00006 #include <eoFunctor.h>
+00007 
+00008 template < class Move >
+00009 class moeoMoveIncrEval : public eoBF < const Move &, const typename Move::EOType &, typename Move::EOType::ObjectiveVector > {};
+00010 
+00011 #endif
+

Generated on Mon Oct 8 10:35:51 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/moeoReferencePointIndicatorBasedFitnessAssignment_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/moeoReferencePointIndicatorBasedFitnessAssignment_8h-source.html new file mode 100644 index 000000000..0501f0edf --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/moeoReferencePointIndicatorBasedFitnessAssignment_8h-source.html @@ -0,0 +1,109 @@ + + +ParadisEO-MOEOMovingObjects: moeoReferencePointIndicatorBasedFitnessAssignment.h Source File + + + + +
+
+

moeoReferencePointIndicatorBasedFitnessAssignment.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 //-----------------------------------------------------------------------------
+00004 // moeoReferencePointIndicatorBasedFitnessAssignment.h
+00005 // (c) OPAC Team (LIFL), Dolphin Project (INRIA), 2007
+00006 /*
+00007     This library...
+00008 
+00009     Contact: paradiseo-help@lists.gforge.inria.fr, http://paradiseo.gforge.inria.fr
+00010  */
+00011 //-----------------------------------------------------------------------------
+00012 
+00013 #ifndef MOEOREFERENCEPOINTINDICATORBASEDFITNESSASSIGNMENT_H_
+00014 #define MOEOREFERENCEPOINTINDICATORBASEDFITNESSASSIGNMENT_H_
+00015 
+00016 #include <math.h>
+00017 #include <eoPop.h>
+00018 #include <fitness/moeoFitnessAssignment.h>
+00019 #include <metric/moeoNormalizedSolutionVsSolutionBinaryMetric.h>
+00020 
+00024 template < class MOEOT >
+00025 class moeoReferencePointIndicatorBasedFitnessAssignment : public moeoFitnessAssignment < MOEOT >
+00026 {
+00027 public:
+00028 
+00030     typedef typename MOEOT::ObjectiveVector ObjectiveVector;
+00031 
+00037     moeoReferencePointIndicatorBasedFitnessAssignment (ObjectiveVector & _refPoint, moeoNormalizedSolutionVsSolutionBinaryMetric < ObjectiveVector, double > & _metric) :
+00038             refPoint(_refPoint), metric(_metric)
+00039     {}
+00040 
+00041 
+00046     void operator()(eoPop < MOEOT > & _pop)
+00047     {
+00048         // 1 - setting of the bounds
+00049         setup(_pop);
+00050         // 2 - setting fitnesses
+00051         setFitnesses(_pop);
+00052     }
+00053 
+00054 
+00060     void updateByDeleting(eoPop < MOEOT > & _pop, ObjectiveVector & _objVec)
+00061     {
+00062         // nothing to do  ;-)
+00063     }
+00064 
+00065 
+00066 protected:
+00067 
+00069     ObjectiveVector & refPoint;
+00071     moeoNormalizedSolutionVsSolutionBinaryMetric < ObjectiveVector, double > & metric;
+00072 
+00073 
+00078     void setup(const eoPop < MOEOT > & _pop)
+00079     {
+00080         double min, max;
+00081         for (unsigned int i=0; i<ObjectiveVector::Traits::nObjectives(); i++)
+00082         {
+00083             min = refPoint[i];
+00084             max = refPoint[i];
+00085             for (unsigned int j=0; j<_pop.size(); j++)
+00086             {
+00087                 min = std::min(min, _pop[j].objectiveVector()[i]);
+00088                 max = std::max(max, _pop[j].objectiveVector()[i]);
+00089             }
+00090             // setting of the bounds for the objective i
+00091             metric.setup(min, max, i);
+00092         }
+00093     }
+00094 
+00099     void setFitnesses(eoPop < MOEOT > & _pop)
+00100     {
+00101         for (unsigned int i=0; i<_pop.size(); i++)
+00102         {
+00103             _pop[i].fitness(- metric(_pop[i].objectiveVector(), refPoint) );
+00104         }
+00105     }
+00106 
+00107 };
+00108 
+00109 #endif /*MOEOREFERENCEPOINTINDICATORBASEDFITNESSASSIGNMENT_H_*/
+

Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/pmoeoEA_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/pmoeoEA_8h-source.html new file mode 100644 index 000000000..4b15a4c07 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/pmoeoEA_8h-source.html @@ -0,0 +1,127 @@ + + +ParadisEO-MOEOMovingObjects: pmoeoEA.h Source File + + + + +
+
+

pmoeoEA.h

00001 // "pmoeoEA.h"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __pmoeoEA_h
+00010 #define __pmoeoEA_h
+00011 
+00012 #include <eoContinue.h>
+00013 #include <eoEvalFunc.h>
+00014 #include <eoSelect.h>
+00015 #include <eoPopEvalFunc.h>
+00016 #include <eoReplacement.h>
+00017 
+00018 #include "peoPopEval.h"
+00019 #include "peoTransform.h"
+00020 #include "core/runner.h"
+00021 #include "core/peo_debug.h"
+00022 
+00024 
+00054 template < class EOT > class peoEA : public Runner {
+00055 
+00056 public:
+00057 
+00069         peoEA( 
+00070                 eoContinue< EOT >& __cont,
+00071                 peoPopEval< EOT >& __pop_eval,
+00072                 eoSelect< EOT >& __select,
+00073                 peoTransform< EOT >& __trans,
+00074                 eoReplacement< EOT >& __replace 
+00075         );
+00076 
+00079         void run();
+00080         
+00084         void operator()( eoPop< EOT >& __pop );
+00085 
+00086 private:
+00087 
+00088 
+00089         eoContinue< EOT >& cont;
+00090         peoPopEval< EOT >& pop_eval;
+00091         eoSelect< EOT >& select;
+00092         peoTransform< EOT >& trans;
+00093         eoReplacement< EOT >& replace;
+00094         eoPop< EOT >* pop;
+00095 };
+00096 
+00097 
+00098 template < class EOT > peoEA< EOT > :: peoEA( 
+00099 
+00100                                 eoContinue< EOT >& __cont, 
+00101                                 peoPopEval< EOT >& __pop_eval, 
+00102                                 eoSelect< EOT >& __select, 
+00103                                 peoTransform< EOT >& __trans, 
+00104                                 eoReplacement< EOT >& __replace
+00105 
+00106                 ) : cont( __cont ), pop_eval( __pop_eval ), select( __select ), trans( __trans ), replace( __replace )
+00107 {
+00108 
+00109         trans.setOwner( *this );
+00110         pop_eval.setOwner( *this );
+00111 }
+00112 
+00113 
+00114 template< class EOT > void peoEA< EOT > :: operator ()( eoPop< EOT >& __pop ) {
+00115 
+00116         pop = &__pop;
+00117 }
+00118 
+00119 
+00120 template< class EOT > void peoEA< EOT > :: run() {
+00121 
+00122         printDebugMessage( "performing the first evaluation of the population." );
+00123         pop_eval( *pop );
+00124         
+00125         do {
+00126 
+00127                 eoPop< EOT > off;
+00128 
+00129                 printDebugMessage( "performing the selection step." );
+00130                 select( *pop, off );
+00131                 trans( off );
+00132 
+00133                 printDebugMessage( "performing the evaluation of the population." );
+00134                 pop_eval( off );
+00135 
+00136                 printDebugMessage( "performing the replacement of the population." );
+00137                 replace( *pop, off );
+00138 
+00139                 printDebugMessage( "deciding of the continuation." );
+00140         
+00141         } while ( cont( *pop ) );
+00142 }
+00143 
+00144 
+00145 #endif
+

Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/t-moeo_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/t-moeo_8cpp-source.html new file mode 100644 index 000000000..40719a90e --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/t-moeo_8cpp-source.html @@ -0,0 +1,47 @@ + + +ParadisEO-MOEOMovingObjects: t-moeo.cpp Source File + + + + +
+
+

t-moeo.cpp

00001 //-----------------------------------------------------------------------------
+00002 // t-moeo.cpp
+00003 //-----------------------------------------------------------------------------
+00004 
+00005 #include <core/MOEO.h>  // MOEO
+00006 
+00007 //-----------------------------------------------------------------------------
+00008 
+00009 
+00010 //-----------------------------------------------------------------------------
+00011 
+00012 int main()
+00013 {
+00014   std::cout << "Please fill the test" << std::endl;
+00015 
+00016   return 0;
+00017 }
+00018 
+00019 //-----------------------------------------------------------------------------
+

Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/tutorial_2examples_2flowshop_2benchs_2README-source.html b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/tutorial_2examples_2flowshop_2benchs_2README-source.html new file mode 100644 index 000000000..38fba453c --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/html/tutorial_2examples_2flowshop_2benchs_2README-source.html @@ -0,0 +1,29 @@ + + +ParadisEO-MOEOMovingObjects: README Source File + + + + +
+
+

README

00001 Further benchmarks for the bi-objective flow-shop scheduling problem are available at http://www.lifl.fr/~liefooga/benchmarks/
+

Generated on Mon Oct 8 10:35:52 2007 for ParadisEO-MOEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/index.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/index.h new file mode 100644 index 000000000..7d66328c1 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/index.h @@ -0,0 +1,72 @@ +/** @mainpage Welcome to ParadisEO-MOEO + +@section Introduction + +ParadisEO-MOEO is a white-box object-oriented generic framework dedicated to the flexible design of evolutionary multi-objective algorithms. +This paradigm-free software embeds some features and techniques for Pareto-based resolution and +aims to provide a set of classes allowing to ease and speed up the development of computationally efficient programs. +It is based on a clear conceptual distinction between the solution methods and the multi-objective problems they are intended to solve. +This separation confers a maximum design and code reuse. +ParadisEO-MOEO provides a broad range of archive-related features (such as elitism or performance metrics) +and the most common Pareto-based fitness assignment strategies (MOGA, NSGA, SPEA, IBEA and more). +Furthermore, parallel and distributed models as well as hybridization mechanisms can be applied to an algorithm designed within ParadisEO-MOEO +using the whole version of ParadisEO. + + + +@section tutorials Tutorials + +Tutorials for ParadisEO-MOEO are available here. + + + +@section Installation + +The installation procedure of the package is detailed in the README file in the top-directory of the source-tree. + + + +@section Design + +For an introduction to the design of ParadisEO-MOEO, +you can look at the ParadisEO website. + + +@section LICENSE + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + ParadisEO WebSite : http://paradiseo.gforge.inria.fr + Contact: paradiseo-help@lists.gforge.inria.fr + +*/ + +/** @page webpages Related webpages + +- ParadisEO homepage +- INRIA GForge project page +- README +*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classFlowShop.eps b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classFlowShop.eps new file mode 100644 index 000000000..f75958a57 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classFlowShop.eps @@ -0,0 +1,227 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 120.968 +%%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 4.13333 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 6 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 +(FlowShop) cw +(moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType >) cw +(MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity >) cw +(EO< MOEOObjectiveVector >) cw +(eoObject) cw +(eoPersistent) cw +(eoPrintable) 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 ----- + + (FlowShop) 0.5 0 box + (moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType >) 0.5 1 box + (MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity >) 0.5 2 box + (EO< MOEOObjectiveVector >) 0.5 3 box + (eoObject) 0 4 box + (eoPersistent) 1 4 box + (eoPrintable) 1 5 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +1 0.5 1 in +solid +0 0.5 1 out +solid +1 0.5 2 in +solid +0 0.5 2 out +solid +1 0.5 3 in +solid +0 0.5 3 out +solid +0 1 4 conn +solid +1 0 4 in +solid +1 1 4 in +solid +0 1 4 out +solid +1 1 5 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classFlowShop.tex b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classFlowShop.tex new file mode 100644 index 000000000..59a46d8fb --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classFlowShop.tex @@ -0,0 +1,32 @@ +\section{Flow\-Shop Class Reference} +\label{classFlowShop}\index{FlowShop@{FlowShop}} +Structure of the genotype for the flow-shop scheduling problem: a vector of unsigned int int. + + +{\tt \#include $<$Flow\-Shop.h$>$} + +Inheritance diagram for Flow\-Shop::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3.3871cm]{classFlowShop} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +std::string \bf{class\-Name} () const \label{classFlowShop_eaab263664f0078082e723a905d430f3} + +\begin{CompactList}\small\item\em class name \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +Structure of the genotype for the flow-shop scheduling problem: a vector of unsigned int int. + + + +Definition at line 22 of file Flow\-Shop.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +Flow\-Shop.h\item +Flow\-Shop.cpp\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classFlowShopBenchmarkParser.tex b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classFlowShopBenchmarkParser.tex new file mode 100644 index 000000000..b80948da4 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classFlowShopBenchmarkParser.tex @@ -0,0 +1,110 @@ +\section{Flow\-Shop\-Benchmark\-Parser Class Reference} +\label{classFlowShopBenchmarkParser}\index{FlowShopBenchmarkParser@{FlowShopBenchmarkParser}} +Class to handle parameters of a flow-shop instance from a benchmark file. + + +{\tt \#include $<$Flow\-Shop\-Benchmark\-Parser.h$>$} + +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\bf{Flow\-Shop\-Benchmark\-Parser} (const std::string \_\-benchmark\-File\-Name) +\begin{CompactList}\small\item\em Ctor. \item\end{CompactList}\item +const unsigned int \bf{get\-M} ()\label{classFlowShopBenchmarkParser_8d5042c2f8727e235f94c947b2ba00a5} + +\begin{CompactList}\small\item\em the number of machines \item\end{CompactList}\item +const unsigned int \bf{get\-N} ()\label{classFlowShopBenchmarkParser_fe16df4df5104aee3d792e60bb32a66d} + +\begin{CompactList}\small\item\em the number of jobs \item\end{CompactList}\item +const std::vector$<$ std::vector$<$ unsigned int $>$ $>$ \bf{get\-P} ()\label{classFlowShopBenchmarkParser_2df87bf8a18a55266729ab105955d7bf} + +\begin{CompactList}\small\item\em the processing times \item\end{CompactList}\item +const std::vector$<$ unsigned int $>$ \bf{get\-D} ()\label{classFlowShopBenchmarkParser_b362d0042273be436c55637828d8582d} + +\begin{CompactList}\small\item\em the due-dates \item\end{CompactList}\item +void \bf{print\-On} (std::ostream \&\_\-os) const +\begin{CompactList}\small\item\em printing. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Member Functions} +\begin{CompactItemize} +\item +void \bf{init} (const std::string \_\-benchmark\-File\-Name) +\begin{CompactList}\small\item\em Initialisation of the parameters with the data contained in the benchmark file. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +unsigned int \bf{M}\label{classFlowShopBenchmarkParser_4cc02556c751afe32e8800544160c7c7} + +\begin{CompactList}\small\item\em number of machines \item\end{CompactList}\item +unsigned int \bf{N}\label{classFlowShopBenchmarkParser_fb220e40e9f94e3c1d3a7eb437aeffce} + +\begin{CompactList}\small\item\em number of jobs \item\end{CompactList}\item +std::vector$<$ std::vector$<$ unsigned int $>$ $>$ \bf{p}\label{classFlowShopBenchmarkParser_4c1ce3d710b6605ddcc723101b808de5} + +\begin{CompactList}\small\item\em p[i][j] = processing time of job j on machine i \item\end{CompactList}\item +std::vector$<$ unsigned int $>$ \bf{d}\label{classFlowShopBenchmarkParser_8898519f54465b2d23a846053363bf4b} + +\begin{CompactList}\small\item\em d[j] = due-date of the job j \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +Class to handle parameters of a flow-shop instance from a benchmark file. + + + +Definition at line 23 of file Flow\-Shop\-Benchmark\-Parser.h. + +\subsection{Constructor \& Destructor Documentation} +\index{FlowShopBenchmarkParser@{Flow\-Shop\-Benchmark\-Parser}!FlowShopBenchmarkParser@{FlowShopBenchmarkParser}} +\index{FlowShopBenchmarkParser@{FlowShopBenchmarkParser}!FlowShopBenchmarkParser@{Flow\-Shop\-Benchmark\-Parser}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}Flow\-Shop\-Benchmark\-Parser::Flow\-Shop\-Benchmark\-Parser (const std::string {\em \_\-benchmark\-File\-Name})}\label{classFlowShopBenchmarkParser_2787b88a1be9d4d37438c557bf32f137} + + +Ctor. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-benchmark\-File\-Name}]the name of the benchmark file \end{description} +\end{Desc} + + +Definition at line 16 of file Flow\-Shop\-Benchmark\-Parser.cpp. + +References init(). + +\subsection{Member Function Documentation} +\index{FlowShopBenchmarkParser@{Flow\-Shop\-Benchmark\-Parser}!printOn@{printOn}} +\index{printOn@{printOn}!FlowShopBenchmarkParser@{Flow\-Shop\-Benchmark\-Parser}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void Flow\-Shop\-Benchmark\-Parser::print\-On (std::ostream \& {\em \_\-os}) const}\label{classFlowShopBenchmarkParser_69c9ba47e774da4b06424a724573265d} + + +printing. + +.. + +Definition at line 46 of file Flow\-Shop\-Benchmark\-Parser.cpp. + +References d, M, N, and p.\index{FlowShopBenchmarkParser@{Flow\-Shop\-Benchmark\-Parser}!init@{init}} +\index{init@{init}!FlowShopBenchmarkParser@{Flow\-Shop\-Benchmark\-Parser}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void Flow\-Shop\-Benchmark\-Parser::init (const std::string {\em \_\-benchmark\-File\-Name})\hspace{0.3cm}{\tt [private]}}\label{classFlowShopBenchmarkParser_4e6de6a0ec2859e1a2fb758fb06dc915} + + +Initialisation of the parameters with the data contained in the benchmark file. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-benchmark\-File\-Name}]the name of the benchmark file \end{description} +\end{Desc} + + +Definition at line 64 of file Flow\-Shop\-Benchmark\-Parser.cpp. + +References d, M, N, and p. + +Referenced by Flow\-Shop\-Benchmark\-Parser(). + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +Flow\-Shop\-Benchmark\-Parser.h\item +Flow\-Shop\-Benchmark\-Parser.cpp\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classFlowShopEval.eps b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classFlowShopEval.eps new file mode 100644 index 000000000..a523d0b88 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classFlowShopEval.eps @@ -0,0 +1,215 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 543.478 +%%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 0.92 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 5 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 +(FlowShopEval) cw +(moeoEvalFunc< FlowShop >) cw +(eoEvalFunc< FlowShop >) cw +(eoUF< A1, R >) cw +(eoFunctorBase) 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 ----- + + (FlowShopEval) 0 0 box + (moeoEvalFunc< FlowShop >) 0 1 box + (eoEvalFunc< FlowShop >) 0 2 box + (eoUF< A1, R >) 0 3 box + (eoFunctorBase) 0 4 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in +solid +0 0 3 out +solid +1 0 4 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classFlowShopEval.tex b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classFlowShopEval.tex new file mode 100644 index 000000000..1e7306dd5 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classFlowShopEval.tex @@ -0,0 +1,147 @@ +\section{Flow\-Shop\-Eval Class Reference} +\label{classFlowShopEval}\index{FlowShopEval@{FlowShopEval}} +Evaluation of the objective vector a (multi-objective) \doxyref{Flow\-Shop}{p.}{classFlowShop} object. + + +{\tt \#include $<$Flow\-Shop\-Eval.h$>$} + +Inheritance diagram for Flow\-Shop\-Eval::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=5cm]{classFlowShopEval} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\bf{Flow\-Shop\-Eval} (unsigned int \_\-M, unsigned int \_\-N, const std::vector$<$ std::vector$<$ unsigned int $>$ $>$ \&\_\-p, const std::vector$<$ unsigned int $>$ \&\_\-d) +\begin{CompactList}\small\item\em Ctor. \item\end{CompactList}\item +void \bf{operator()} (\bf{Flow\-Shop} \&\_\-flowshop) +\begin{CompactList}\small\item\em computation of the multi-objective evaluation of a \doxyref{Flow\-Shop}{p.}{classFlowShop} object \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Member Functions} +\begin{CompactItemize} +\item +double \bf{makespan} (const \bf{Flow\-Shop} \&\_\-flowshop) +\begin{CompactList}\small\item\em computation of the makespan \item\end{CompactList}\item +double \bf{tardiness} (const \bf{Flow\-Shop} \&\_\-flowshop) +\begin{CompactList}\small\item\em computation of the tardiness \item\end{CompactList}\item +std::vector$<$ std::vector$<$ unsigned int $>$ $>$ \bf{completion\-Time} (const \bf{Flow\-Shop} \&\_\-flowshop) +\begin{CompactList}\small\item\em computation of the completion times of a scheduling (for each job on each machine) C[i][j] = completion of the jth job of the scheduling on the ith machine \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +unsigned int \bf{M}\label{classFlowShopEval_9c7c7263d8c04d18d66729f4875d46cd} + +\begin{CompactList}\small\item\em number of machines \item\end{CompactList}\item +unsigned int \bf{N}\label{classFlowShopEval_48c4a108b54c2c949cb649e470c9e8c4} + +\begin{CompactList}\small\item\em number of jobs \item\end{CompactList}\item +std::vector$<$ std::vector$<$ unsigned int $>$ $>$ \bf{p}\label{classFlowShopEval_f4152ec0542e13cbc8f4c4ece284a2b4} + +\begin{CompactList}\small\item\em p[i][j] = processing time of job j on machine i \item\end{CompactList}\item +std::vector$<$ unsigned int $>$ \bf{d}\label{classFlowShopEval_a283f1bfd433ec1bd3a45c46bd6e3ba4} + +\begin{CompactList}\small\item\em d[j] = due-date of the job j \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +Evaluation of the objective vector a (multi-objective) \doxyref{Flow\-Shop}{p.}{classFlowShop} object. + + + +Definition at line 23 of file Flow\-Shop\-Eval.h. + +\subsection{Constructor \& Destructor Documentation} +\index{FlowShopEval@{Flow\-Shop\-Eval}!FlowShopEval@{FlowShopEval}} +\index{FlowShopEval@{FlowShopEval}!FlowShopEval@{Flow\-Shop\-Eval}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}Flow\-Shop\-Eval::Flow\-Shop\-Eval (unsigned int {\em \_\-M}, unsigned int {\em \_\-N}, const std::vector$<$ std::vector$<$ unsigned int $>$ $>$ \& {\em \_\-p}, const std::vector$<$ unsigned int $>$ \& {\em \_\-d})}\label{classFlowShopEval_f830293ad66a253a4008937fd6d68fce} + + +Ctor. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-M}]the number of machines \item[{\em \_\-N}]the number of jobs to schedule \item[{\em \_\-p}]the processing times \item[{\em \_\-d}]the due dates \end{description} +\end{Desc} + + +Definition at line 16 of file Flow\-Shop\-Eval.cpp. + +\subsection{Member Function Documentation} +\index{FlowShopEval@{Flow\-Shop\-Eval}!operator()@{operator()}} +\index{operator()@{operator()}!FlowShopEval@{Flow\-Shop\-Eval}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void Flow\-Shop\-Eval::operator() (\bf{Flow\-Shop} \& {\em \_\-flowshop})}\label{classFlowShopEval_d6ea74de6e62c2b104b52aa68b5da3a5} + + +computation of the multi-objective evaluation of a \doxyref{Flow\-Shop}{p.}{classFlowShop} object + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-flowshop}]the \doxyref{Flow\-Shop}{p.}{classFlowShop} object to evaluate \end{description} +\end{Desc} + + +Definition at line 21 of file Flow\-Shop\-Eval.cpp. + +References makespan(), MOEO$<$ MOEOObjective\-Vector, MOEOFitness, MOEODiversity $>$::objective\-Vector(), and tardiness().\index{FlowShopEval@{Flow\-Shop\-Eval}!makespan@{makespan}} +\index{makespan@{makespan}!FlowShopEval@{Flow\-Shop\-Eval}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}double Flow\-Shop\-Eval::makespan (const \bf{Flow\-Shop} \& {\em \_\-flowshop})\hspace{0.3cm}{\tt [private]}}\label{classFlowShopEval_8b383e0c6cfd68fdf61e987b5fc91cf3} + + +computation of the makespan + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-flowshop}]the genotype to evaluate \end{description} +\end{Desc} + + +Definition at line 31 of file Flow\-Shop\-Eval.cpp. + +References completion\-Time(), M, and N. + +Referenced by operator()().\index{FlowShopEval@{Flow\-Shop\-Eval}!tardiness@{tardiness}} +\index{tardiness@{tardiness}!FlowShopEval@{Flow\-Shop\-Eval}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}double Flow\-Shop\-Eval::tardiness (const \bf{Flow\-Shop} \& {\em \_\-flowshop})\hspace{0.3cm}{\tt [private]}}\label{classFlowShopEval_25d04be8fd17b5589fdac732accaaf9e} + + +computation of the tardiness + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-flowshop}]the genotype to evaluate \end{description} +\end{Desc} + + +Definition at line 40 of file Flow\-Shop\-Eval.cpp. + +References completion\-Time(), d, M, and N. + +Referenced by operator()().\index{FlowShopEval@{Flow\-Shop\-Eval}!completionTime@{completionTime}} +\index{completionTime@{completionTime}!FlowShopEval@{Flow\-Shop\-Eval}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}std::vector$<$ std::vector$<$ unsigned int $>$ $>$ Flow\-Shop\-Eval::completion\-Time (const \bf{Flow\-Shop} \& {\em \_\-flowshop})\hspace{0.3cm}{\tt [private]}}\label{classFlowShopEval_84cfc6f7bee1c0e4b1a29ca99e3c129b} + + +computation of the completion times of a scheduling (for each job on each machine) C[i][j] = completion of the jth job of the scheduling on the ith machine + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-flowshop}]the genotype to evaluate \end{description} +\end{Desc} + + +Definition at line 53 of file Flow\-Shop\-Eval.cpp. + +References M, N, and p. + +Referenced by makespan(), and tardiness(). + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +Flow\-Shop\-Eval.h\item +Flow\-Shop\-Eval.cpp\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classFlowShopInit.eps b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classFlowShopInit.eps new file mode 100644 index 000000000..1ad12f21f --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classFlowShopInit.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 615.385 +%%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 0.8125 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 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 +(FlowShopInit) cw +(eoInit< FlowShop >) cw +(eoUF< A1, R >) cw +(eoFunctorBase) 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 ----- + + (FlowShopInit) 0 0 box + (eoInit< FlowShop >) 0 1 box + (eoUF< A1, R >) 0 2 box + (eoFunctorBase) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classFlowShopInit.tex b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classFlowShopInit.tex new file mode 100644 index 000000000..0ae13d5d8 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classFlowShopInit.tex @@ -0,0 +1,75 @@ +\section{Flow\-Shop\-Init Class Reference} +\label{classFlowShopInit}\index{FlowShopInit@{FlowShopInit}} +Initialization of a random genotype built by the default constructor of the \doxyref{Flow\-Shop}{p.}{classFlowShop} class. + + +{\tt \#include $<$Flow\-Shop\-Init.h$>$} + +Inheritance diagram for Flow\-Shop\-Init::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classFlowShopInit} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\bf{Flow\-Shop\-Init} (unsigned int \_\-N) +\begin{CompactList}\small\item\em Ctor. \item\end{CompactList}\item +void \bf{operator()} (\bf{Flow\-Shop} \&\_\-flowshop) +\begin{CompactList}\small\item\em builds a random genotype \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +unsigned int \bf{N}\label{classFlowShopInit_3bf7c402441e5bba3397377630e6ff4c} + +\begin{CompactList}\small\item\em the number of jobs (size of a scheduling vector) \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +Initialization of a random genotype built by the default constructor of the \doxyref{Flow\-Shop}{p.}{classFlowShop} class. + + + +Definition at line 22 of file Flow\-Shop\-Init.h. + +\subsection{Constructor \& Destructor Documentation} +\index{FlowShopInit@{Flow\-Shop\-Init}!FlowShopInit@{FlowShopInit}} +\index{FlowShopInit@{FlowShopInit}!FlowShopInit@{Flow\-Shop\-Init}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}Flow\-Shop\-Init::Flow\-Shop\-Init (unsigned int {\em \_\-N})}\label{classFlowShopInit_8ede459984d5de13c6a181c72cf4551e} + + +Ctor. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-N}]the number of jobs to schedule \end{description} +\end{Desc} + + +Definition at line 16 of file Flow\-Shop\-Init.cpp. + +\subsection{Member Function Documentation} +\index{FlowShopInit@{Flow\-Shop\-Init}!operator()@{operator()}} +\index{operator()@{operator()}!FlowShopInit@{Flow\-Shop\-Init}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void Flow\-Shop\-Init::operator() (\bf{Flow\-Shop} \& {\em \_\-flowshop})}\label{classFlowShopInit_3df0d9e3834cdfa494683df7e8646025} + + +builds a random genotype + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-flowshop}]a genotype that has been default-constructed \end{description} +\end{Desc} + + +Definition at line 20 of file Flow\-Shop\-Init.cpp. + +References MOEO$<$ MOEOObjective\-Vector, MOEOFitness, MOEODiversity $>$::invalidate(), N, eo\-Rng::uniform(), and moeo\-Vector$<$ MOEOObjective\-Vector, MOEOFitness, MOEODiversity, Gene\-Type $>$::value(). + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +Flow\-Shop\-Init.h\item +Flow\-Shop\-Init.cpp\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classFlowShopObjectiveVectorTraits.eps b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classFlowShopObjectiveVectorTraits.eps new file mode 100644 index 000000000..2884e0a07 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classFlowShopObjectiveVectorTraits.eps @@ -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 201.005 +%%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.4875 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 +(FlowShopObjectiveVectorTraits) cw +(moeoObjectiveVectorTraits) 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 ----- + + (FlowShopObjectiveVectorTraits) 0 0 box + (moeoObjectiveVectorTraits) 0 1 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classFlowShopObjectiveVectorTraits.tex b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classFlowShopObjectiveVectorTraits.tex new file mode 100644 index 000000000..828d5a702 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classFlowShopObjectiveVectorTraits.tex @@ -0,0 +1,67 @@ +\section{Flow\-Shop\-Objective\-Vector\-Traits Class Reference} +\label{classFlowShopObjectiveVectorTraits}\index{FlowShopObjectiveVectorTraits@{FlowShopObjectiveVectorTraits}} +Definition of the objective vector traits for multi-objective flow-shop problems. + + +{\tt \#include $<$Flow\-Shop\-Objective\-Vector\-Traits.h$>$} + +Inheritance diagram for Flow\-Shop\-Objective\-Vector\-Traits::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{classFlowShopObjectiveVectorTraits} +\end{center} +\end{figure} +\subsection*{Static Public Member Functions} +\begin{CompactItemize} +\item +static bool \bf{minimizing} (int \_\-i) +\begin{CompactList}\small\item\em Returns true if the \_\-ith objective have to be minimzed. \item\end{CompactList}\item +static bool \bf{maximizing} (int \_\-i) +\begin{CompactList}\small\item\em Returns true if the \_\-ith objective have to be maximzed. \item\end{CompactList}\item +static unsigned int \bf{n\-Objectives} ()\label{classFlowShopObjectiveVectorTraits_76ebe7639b502980bc683ab404b69c10} + +\begin{CompactList}\small\item\em Returns the number of objectives. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +Definition of the objective vector traits for multi-objective flow-shop problems. + + + +Definition at line 21 of file Flow\-Shop\-Objective\-Vector\-Traits.h. + +\subsection{Member Function Documentation} +\index{FlowShopObjectiveVectorTraits@{Flow\-Shop\-Objective\-Vector\-Traits}!minimizing@{minimizing}} +\index{minimizing@{minimizing}!FlowShopObjectiveVectorTraits@{Flow\-Shop\-Objective\-Vector\-Traits}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}bool Flow\-Shop\-Objective\-Vector\-Traits::minimizing (int {\em \_\-i})\hspace{0.3cm}{\tt [static]}}\label{classFlowShopObjectiveVectorTraits_e1a0f5be1782b9f9ce08128a404a1fa8} + + +Returns true if the \_\-ith objective have to be minimzed. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-i}]index of the objective \end{description} +\end{Desc} + + +Definition at line 16 of file Flow\-Shop\-Objective\-Vector\-Traits.cpp.\index{FlowShopObjectiveVectorTraits@{Flow\-Shop\-Objective\-Vector\-Traits}!maximizing@{maximizing}} +\index{maximizing@{maximizing}!FlowShopObjectiveVectorTraits@{Flow\-Shop\-Objective\-Vector\-Traits}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}bool Flow\-Shop\-Objective\-Vector\-Traits::maximizing (int {\em \_\-i})\hspace{0.3cm}{\tt [static]}}\label{classFlowShopObjectiveVectorTraits_229fbb4cc19d289637891c1b49f3eaba} + + +Returns true if the \_\-ith objective have to be maximzed. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-i}]index of the objective \end{description} +\end{Desc} + + +Definition at line 22 of file Flow\-Shop\-Objective\-Vector\-Traits.cpp. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +Flow\-Shop\-Objective\-Vector\-Traits.h\item +Flow\-Shop\-Objective\-Vector\-Traits.cpp\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classFlowShopOpCrossoverQuad.eps b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classFlowShopOpCrossoverQuad.eps new file mode 100644 index 000000000..aa48795f7 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classFlowShopOpCrossoverQuad.eps @@ -0,0 +1,215 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 156.25 +%%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 3.2 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 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 +(FlowShopOpCrossoverQuad) cw +(eoQuadOp< FlowShop >) cw +(eoOp< EOType >) cw +(eoBF< FlowShop &, FlowShop &, bool >) cw +(eoFunctorBase) 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 ----- + + (FlowShopOpCrossoverQuad) 0.5 0 box + (eoQuadOp< FlowShop >) 0.5 1 box + (eoOp< EOType >) 0 2 box + (eoBF< FlowShop &, FlowShop &, bool >) 1 2 box + (eoFunctorBase) 1 3 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +1 0.5 1 in +solid +0 0.5 1 out +solid +0 1 2 conn +solid +1 0 2 in +solid +1 1 2 in +solid +0 1 2 out +solid +1 1 3 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classFlowShopOpCrossoverQuad.tex b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classFlowShopOpCrossoverQuad.tex new file mode 100644 index 000000000..058ee679e --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classFlowShopOpCrossoverQuad.tex @@ -0,0 +1,76 @@ +\section{Flow\-Shop\-Op\-Crossover\-Quad Class Reference} +\label{classFlowShopOpCrossoverQuad}\index{FlowShopOpCrossoverQuad@{FlowShopOpCrossoverQuad}} +Quadratic crossover operator for flow-shop (modify the both genotypes). + + +{\tt \#include $<$Flow\-Shop\-Op\-Crossover\-Quad.h$>$} + +Inheritance diagram for Flow\-Shop\-Op\-Crossover\-Quad::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classFlowShopOpCrossoverQuad} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +std::string \bf{class\-Name} () const \label{classFlowShopOpCrossoverQuad_60ac69b87970b7000980f65aa6ead44a} + +\begin{CompactList}\small\item\em the class name (used to display statistics) \item\end{CompactList}\item +bool \bf{operator()} (\bf{Flow\-Shop} \&\_\-flowshop1, \bf{Flow\-Shop} \&\_\-flowshop2) +\begin{CompactList}\small\item\em eo\-Quad crossover - \_\-flowshop1 and \_\-flowshop2 are the (future) offspring, i.e. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Member Functions} +\begin{CompactItemize} +\item +\bf{Flow\-Shop} \bf{generate\-Offspring} (const \bf{Flow\-Shop} \&\_\-parent1, const \bf{Flow\-Shop} \&\_\-parent2, unsigned int \_\-point1, unsigned int \_\-point2) +\begin{CompactList}\small\item\em generation of an offspring by a 2 points crossover \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +Quadratic crossover operator for flow-shop (modify the both genotypes). + + + +Definition at line 22 of file Flow\-Shop\-Op\-Crossover\-Quad.h. + +\subsection{Member Function Documentation} +\index{FlowShopOpCrossoverQuad@{Flow\-Shop\-Op\-Crossover\-Quad}!operator()@{operator()}} +\index{operator()@{operator()}!FlowShopOpCrossoverQuad@{Flow\-Shop\-Op\-Crossover\-Quad}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}bool Flow\-Shop\-Op\-Crossover\-Quad::operator() (\bf{Flow\-Shop} \& {\em \_\-flowshop1}, \bf{Flow\-Shop} \& {\em \_\-flowshop2})\hspace{0.3cm}{\tt [virtual]}}\label{classFlowShopOpCrossoverQuad_92f70807bea24d3c233af580e2c55e3a} + + +eo\-Quad crossover - \_\-flowshop1 and \_\-flowshop2 are the (future) offspring, i.e. + +\_\-copies\_\- of the parents \begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-flowshop1}]the first parent \item[{\em \_\-flowshop2}]the second parent \end{description} +\end{Desc} + + +Implements \bf{eo\-BF$<$ Flow\-Shop \&, Flow\-Shop \&, bool $>$}. + +Definition at line 22 of file Flow\-Shop\-Op\-Crossover\-Quad.cpp. + +References generate\-Offspring(), eo\-Rng::random(), and moeo\-Vector$<$ MOEOObjective\-Vector, MOEOFitness, MOEODiversity, Gene\-Type $>$::value().\index{FlowShopOpCrossoverQuad@{Flow\-Shop\-Op\-Crossover\-Quad}!generateOffspring@{generateOffspring}} +\index{generateOffspring@{generateOffspring}!FlowShopOpCrossoverQuad@{Flow\-Shop\-Op\-Crossover\-Quad}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}\bf{Flow\-Shop} Flow\-Shop\-Op\-Crossover\-Quad::generate\-Offspring (const \bf{Flow\-Shop} \& {\em \_\-parent1}, const \bf{Flow\-Shop} \& {\em \_\-parent2}, unsigned int {\em \_\-point1}, unsigned int {\em \_\-point2})\hspace{0.3cm}{\tt [private]}}\label{classFlowShopOpCrossoverQuad_cbc2f344a0a29861900f4846597564c3} + + +generation of an offspring by a 2 points crossover + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-parent1}]the first parent \item[{\em \_\-parent2}]the second parent \item[{\em \_\-point1}]the first point \item[{\em \_\-point2}]the second point \end{description} +\end{Desc} + + +Definition at line 54 of file Flow\-Shop\-Op\-Crossover\-Quad.cpp. + +Referenced by operator()(). + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +Flow\-Shop\-Op\-Crossover\-Quad.h\item +Flow\-Shop\-Op\-Crossover\-Quad.cpp\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classFlowShopOpMutationExchange.eps b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classFlowShopOpMutationExchange.eps new file mode 100644 index 000000000..bf5f5bbe7 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classFlowShopOpMutationExchange.eps @@ -0,0 +1,215 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 203.046 +%%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.4625 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 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 +(FlowShopOpMutationExchange) cw +(eoMonOp< FlowShop >) cw +(eoOp< EOType >) cw +(eoUF< FlowShop &, bool >) cw +(eoFunctorBase) 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 ----- + + (FlowShopOpMutationExchange) 0.5 0 box + (eoMonOp< FlowShop >) 0.5 1 box + (eoOp< EOType >) 0 2 box + (eoUF< FlowShop &, bool >) 1 2 box + (eoFunctorBase) 1 3 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +1 0.5 1 in +solid +0 0.5 1 out +solid +0 1 2 conn +solid +1 0 2 in +solid +1 1 2 in +solid +0 1 2 out +solid +1 1 3 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classFlowShopOpMutationExchange.tex b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classFlowShopOpMutationExchange.tex new file mode 100644 index 000000000..0faf123cc --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classFlowShopOpMutationExchange.tex @@ -0,0 +1,55 @@ +\section{Flow\-Shop\-Op\-Mutation\-Exchange Class Reference} +\label{classFlowShopOpMutationExchange}\index{FlowShopOpMutationExchange@{FlowShopOpMutationExchange}} +Exchange mutation operator for the flow-shop. + + +{\tt \#include $<$Flow\-Shop\-Op\-Mutation\-Exchange.h$>$} + +Inheritance diagram for Flow\-Shop\-Op\-Mutation\-Exchange::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classFlowShopOpMutationExchange} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +std::string \bf{class\-Name} () const \label{classFlowShopOpMutationExchange_36a926c9fe21346db26fadf1d50c1c7a} + +\begin{CompactList}\small\item\em the class name (used to display statistics) \item\end{CompactList}\item +bool \bf{operator()} (\bf{Flow\-Shop} \&\_\-flowshop) +\begin{CompactList}\small\item\em modifies the parent with an exchange mutation \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +Exchange mutation operator for the flow-shop. + + + +Definition at line 22 of file Flow\-Shop\-Op\-Mutation\-Exchange.h. + +\subsection{Member Function Documentation} +\index{FlowShopOpMutationExchange@{Flow\-Shop\-Op\-Mutation\-Exchange}!operator()@{operator()}} +\index{operator()@{operator()}!FlowShopOpMutationExchange@{Flow\-Shop\-Op\-Mutation\-Exchange}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}bool Flow\-Shop\-Op\-Mutation\-Exchange::operator() (\bf{Flow\-Shop} \& {\em \_\-flowshop})\hspace{0.3cm}{\tt [virtual]}}\label{classFlowShopOpMutationExchange_bdb2e1d937d788c50f04226265c848bd} + + +modifies the parent with an exchange mutation + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-flowshop}]the parent genotype (will be modified) \end{description} +\end{Desc} + + +Implements \bf{eo\-UF$<$ Flow\-Shop \&, bool $>$}. + +Definition at line 22 of file Flow\-Shop\-Op\-Mutation\-Exchange.cpp. + +References eo\-Rng::random(), and moeo\-Vector$<$ MOEOObjective\-Vector, MOEOFitness, MOEODiversity, Gene\-Type $>$::value(). + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +Flow\-Shop\-Op\-Mutation\-Exchange.h\item +Flow\-Shop\-Op\-Mutation\-Exchange.cpp\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classFlowShopOpMutationShift.eps b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classFlowShopOpMutationShift.eps new file mode 100644 index 000000000..02aaa4f09 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classFlowShopOpMutationShift.eps @@ -0,0 +1,215 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 225.989 +%%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.2125 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 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 +(FlowShopOpMutationShift) cw +(eoMonOp< FlowShop >) cw +(eoOp< EOType >) cw +(eoUF< FlowShop &, bool >) cw +(eoFunctorBase) 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 ----- + + (FlowShopOpMutationShift) 0.5 0 box + (eoMonOp< FlowShop >) 0.5 1 box + (eoOp< EOType >) 0 2 box + (eoUF< FlowShop &, bool >) 1 2 box + (eoFunctorBase) 1 3 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +1 0.5 1 in +solid +0 0.5 1 out +solid +0 1 2 conn +solid +1 0 2 in +solid +1 1 2 in +solid +0 1 2 out +solid +1 1 3 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classFlowShopOpMutationShift.tex b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classFlowShopOpMutationShift.tex new file mode 100644 index 000000000..1c2c41671 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classFlowShopOpMutationShift.tex @@ -0,0 +1,55 @@ +\section{Flow\-Shop\-Op\-Mutation\-Shift Class Reference} +\label{classFlowShopOpMutationShift}\index{FlowShopOpMutationShift@{FlowShopOpMutationShift}} +Shift mutation operator for flow-shop. + + +{\tt \#include $<$Flow\-Shop\-Op\-Mutation\-Shift.h$>$} + +Inheritance diagram for Flow\-Shop\-Op\-Mutation\-Shift::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classFlowShopOpMutationShift} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +std::string \bf{class\-Name} () const \label{classFlowShopOpMutationShift_dd1d710568978d1d4bb8c6f3925da4c6} + +\begin{CompactList}\small\item\em the class name (used to display statistics) \item\end{CompactList}\item +bool \bf{operator()} (\bf{Flow\-Shop} \&\_\-flowshop) +\begin{CompactList}\small\item\em modifies the parent with a shift mutation \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +Shift mutation operator for flow-shop. + + + +Definition at line 22 of file Flow\-Shop\-Op\-Mutation\-Shift.h. + +\subsection{Member Function Documentation} +\index{FlowShopOpMutationShift@{Flow\-Shop\-Op\-Mutation\-Shift}!operator()@{operator()}} +\index{operator()@{operator()}!FlowShopOpMutationShift@{Flow\-Shop\-Op\-Mutation\-Shift}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}bool Flow\-Shop\-Op\-Mutation\-Shift::operator() (\bf{Flow\-Shop} \& {\em \_\-flowshop})\hspace{0.3cm}{\tt [virtual]}}\label{classFlowShopOpMutationShift_c000b017e75ddee3b6fe9db8ea5ddd5b} + + +modifies the parent with a shift mutation + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-flowshop}]the parent genotype (will be modified) \end{description} +\end{Desc} + + +Implements \bf{eo\-UF$<$ Flow\-Shop \&, bool $>$}. + +Definition at line 22 of file Flow\-Shop\-Op\-Mutation\-Shift.cpp. + +References eo\-Rng::random(), and moeo\-Vector$<$ MOEOObjective\-Vector, MOEOFitness, MOEODiversity, Gene\-Type $>$::value(). + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +Flow\-Shop\-Op\-Mutation\-Shift.h\item +Flow\-Shop\-Op\-Mutation\-Shift.cpp\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classSch1.eps b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classSch1.eps new file mode 100644 index 000000000..07b0240e6 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classSch1.eps @@ -0,0 +1,233 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 147.059 +%%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 3.4 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 7 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 +(Sch1) cw +(moeoRealVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity >) cw +(moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, double >) cw +(MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity >) cw +(EO< MOEOObjectiveVector >) cw +(eoObject) cw +(eoPersistent) cw +(eoPrintable) 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 ----- + + (Sch1) 0.5 0 box + (moeoRealVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity >) 0.5 1 box + (moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, double >) 0.5 2 box + (MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity >) 0.5 3 box + (EO< MOEOObjectiveVector >) 0.5 4 box + (eoObject) 0 5 box + (eoPersistent) 1 5 box + (eoPrintable) 1 6 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +1 0.5 1 in +solid +0 0.5 1 out +solid +1 0.5 2 in +solid +0 0.5 2 out +solid +1 0.5 3 in +solid +0 0.5 3 out +solid +1 0.5 4 in +solid +0 0.5 4 out +solid +0 1 5 conn +solid +1 0 5 in +solid +1 1 5 in +solid +0 1 5 out +solid +1 1 6 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classSch1.tex b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classSch1.tex new file mode 100644 index 000000000..ab886bbb8 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classSch1.tex @@ -0,0 +1,26 @@ +\section{Sch1 Class Reference} +\label{classSch1}\index{Sch1@{Sch1}} +Inheritance diagram for Sch1::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4.11765cm]{classSch1} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\bf{Sch1} ()\label{classSch1_3ddc72f40539bfe0d5bb8d977b6655c0} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 44 of file Sch1.cpp. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +Sch1.cpp\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classSch1Eval.eps b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classSch1Eval.eps new file mode 100644 index 000000000..88fc1f312 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classSch1Eval.eps @@ -0,0 +1,215 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 636.943 +%%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 0.785 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 5 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 +(Sch1Eval) cw +(moeoEvalFunc< Sch1 >) cw +(eoEvalFunc< Sch1 >) cw +(eoUF< A1, R >) cw +(eoFunctorBase) 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 ----- + + (Sch1Eval) 0 0 box + (moeoEvalFunc< Sch1 >) 0 1 box + (eoEvalFunc< Sch1 >) 0 2 box + (eoUF< A1, R >) 0 3 box + (eoFunctorBase) 0 4 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in +solid +0 0 3 out +solid +1 0 4 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classSch1Eval.tex b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classSch1Eval.tex new file mode 100644 index 000000000..cb664fb89 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classSch1Eval.tex @@ -0,0 +1,26 @@ +\section{Sch1Eval Class Reference} +\label{classSch1Eval}\index{Sch1Eval@{Sch1Eval}} +Inheritance diagram for Sch1Eval::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=5cm]{classSch1Eval} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +void \bf{operator()} (\bf{Sch1} \&\_\-sch1)\label{classSch1Eval_4f806a964f7bafa9e4fcca45da458c98} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 52 of file Sch1.cpp. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +Sch1.cpp\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classSch1ObjectiveVectorTraits.eps b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classSch1ObjectiveVectorTraits.eps new file mode 100644 index 000000000..a95749c2a --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classSch1ObjectiveVectorTraits.eps @@ -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 231.214 +%%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.1625 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 +(Sch1ObjectiveVectorTraits) cw +(moeoObjectiveVectorTraits) 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 ----- + + (Sch1ObjectiveVectorTraits) 0 0 box + (moeoObjectiveVectorTraits) 0 1 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classSch1ObjectiveVectorTraits.tex b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classSch1ObjectiveVectorTraits.tex new file mode 100644 index 000000000..1455866e5 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classSch1ObjectiveVectorTraits.tex @@ -0,0 +1,32 @@ +\section{Sch1Objective\-Vector\-Traits Class Reference} +\label{classSch1ObjectiveVectorTraits}\index{Sch1ObjectiveVectorTraits@{Sch1ObjectiveVectorTraits}} +Inheritance diagram for Sch1Objective\-Vector\-Traits::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{classSch1ObjectiveVectorTraits} +\end{center} +\end{figure} +\subsection*{Static Public Member Functions} +\begin{CompactItemize} +\item +static bool \bf{minimizing} (int i)\label{classSch1ObjectiveVectorTraits_455ac35e419ad21c0a4ba4bbd2768ca5} + +\item +static bool \bf{maximizing} (int i)\label{classSch1ObjectiveVectorTraits_a7de212f3346dde550757e8a412baa4d} + +\item +static unsigned int \bf{n\-Objectives} ()\label{classSch1ObjectiveVectorTraits_54ae04aa8eb052223778ecae175be95b} + +\begin{CompactList}\small\item\em Returns the number of objectives. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 21 of file Sch1.cpp. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +Sch1.cpp\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classmoeoIBMOLS.eps b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classmoeoIBMOLS.eps new file mode 100644 index 000000000..e4e6c44f5 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classmoeoIBMOLS.eps @@ -0,0 +1,215 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 101.266 +%%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 4.9375 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 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 +(moeoIBMOLS< MOEOT, Move >) cw +(moeoLS< MOEOT, eoPop< MOEOT > & >) cw +(moeoAlgo) cw +(eoBF< eoPop< MOEOT > &, moeoArchive< MOEOT > &, void >) cw +(eoFunctorBase) 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 ----- + + (moeoIBMOLS< MOEOT, Move >) 0.5 0 box + (moeoLS< MOEOT, eoPop< MOEOT > & >) 0.5 1 box + (moeoAlgo) 0 2 box + (eoBF< eoPop< MOEOT > &, moeoArchive< MOEOT > &, void >) 1 2 box + (eoFunctorBase) 1 3 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +1 0.5 1 in +solid +0 0.5 1 out +solid +0 1 2 conn +solid +1 0 2 in +solid +1 1 2 in +solid +0 1 2 out +solid +1 1 3 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classmoeoIBMOLS.tex b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classmoeoIBMOLS.tex new file mode 100644 index 000000000..3ba2aec88 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classmoeoIBMOLS.tex @@ -0,0 +1,147 @@ +\section{moeo\-IBMOLS$<$ MOEOT, Move $>$ Class Template Reference} +\label{classmoeoIBMOLS}\index{moeoIBMOLS@{moeoIBMOLS}} +Indicator-Based Multi-Objective Local Search (IBMOLS) as described in Basseur M., Burke K. + + +{\tt \#include $<$moeo\-IBMOLS.h$>$} + +Inheritance diagram for moeo\-IBMOLS$<$ MOEOT, Move $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.83544cm]{classmoeoIBMOLS} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{CompactItemize} +\item +typedef MOEOT::Objective\-Vector \bf{Objective\-Vector}\label{classmoeoIBMOLS_d3433001dcc9a6e2a967aa5d64163935} + +\begin{CompactList}\small\item\em The type of objective vector. \item\end{CompactList}\end{CompactItemize} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\bf{moeo\-IBMOLS} (mo\-Move\-Init$<$ Move $>$ \&\_\-move\-Init, mo\-Next\-Move$<$ Move $>$ \&\_\-next\-Move, \bf{eo\-Eval\-Func}$<$ MOEOT $>$ \&\_\-eval, \bf{moeo\-Move\-Incr\-Eval}$<$ Move $>$ \&\_\-move\-Incr\-Eval, \bf{moeo\-Binary\-Indicator\-Based\-Fitness\-Assignment}$<$ MOEOT $>$ \&\_\-fitness\-Assignment, \bf{eo\-Continue}$<$ MOEOT $>$ \&\_\-continuator) +\begin{CompactList}\small\item\em Ctor. \item\end{CompactList}\item +void \bf{operator()} (\bf{eo\-Pop}$<$ MOEOT $>$ \&\_\-pop, \bf{moeo\-Archive}$<$ MOEOT $>$ \&\_\-arch) +\begin{CompactList}\small\item\em Apply the local search until a local archive does not change or another stopping criteria is met and update the archive \_\-arch with new non-dominated solutions. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Member Functions} +\begin{CompactItemize} +\item +void \bf{one\-Step} (\bf{eo\-Pop}$<$ MOEOT $>$ \&\_\-pop) +\begin{CompactList}\small\item\em Apply one step of the local search to the population \_\-pop. \item\end{CompactList}\item +void \bf{new\_\-one\-Step} (\bf{eo\-Pop}$<$ MOEOT $>$ \&\_\-pop) +\begin{CompactList}\small\item\em Apply one step of the local search to the population \_\-pop. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +mo\-Move\-Init$<$ Move $>$ \& \bf{move\-Init}\label{classmoeoIBMOLS_b4b4908b893edd52d6fa24085d2a89e5} + +\begin{CompactList}\small\item\em the move initializer \item\end{CompactList}\item +mo\-Next\-Move$<$ Move $>$ \& \bf{next\-Move}\label{classmoeoIBMOLS_8b8ebbd6eb6c82caa796160b4be2a86b} + +\begin{CompactList}\small\item\em the neighborhood explorer \item\end{CompactList}\item +\bf{eo\-Eval\-Func}$<$ MOEOT $>$ \& \bf{eval}\label{classmoeoIBMOLS_e9acda4b2f61f8960109a8c6fd52551e} + +\begin{CompactList}\small\item\em the full evaluation \item\end{CompactList}\item +\bf{moeo\-Move\-Incr\-Eval}$<$ Move $>$ \& \bf{move\-Incr\-Eval}\label{classmoeoIBMOLS_6c38636061bd03c4be809277e2dc257a} + +\begin{CompactList}\small\item\em the incremental evaluation \item\end{CompactList}\item +\bf{moeo\-Binary\-Indicator\-Based\-Fitness\-Assignment}$<$ MOEOT $>$ \& \bf{fitness\-Assignment}\label{classmoeoIBMOLS_0c858da33922736b74d9875766cec9d7} + +\begin{CompactList}\small\item\em the fitness assignment strategy \item\end{CompactList}\item +\bf{eo\-Continue}$<$ MOEOT $>$ \& \bf{continuator}\label{classmoeoIBMOLS_c15985c0bb5d9ba835f35d99d7c42b14} + +\begin{CompactList}\small\item\em the stopping criteria \item\end{CompactList}\end{CompactItemize} +\subsection*{Classes} +\begin{CompactItemize} +\item +class \bf{One\-Objective\-Comparator} +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class MOEOT, class Move$>$ class moeo\-IBMOLS$<$ MOEOT, Move $>$} + +Indicator-Based Multi-Objective Local Search (IBMOLS) as described in Basseur M., Burke K. + +: \char`\"{}Indicator-Based Multi-Objective Local Search\char`\"{} (2007). + + + +Definition at line 33 of file moeo\-IBMOLS.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moeoIBMOLS@{moeo\-IBMOLS}!moeoIBMOLS@{moeoIBMOLS}} +\index{moeoIBMOLS@{moeoIBMOLS}!moeoIBMOLS@{moeo\-IBMOLS}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class MOEOT, class Move$>$ \bf{moeo\-IBMOLS}$<$ MOEOT, Move $>$::\bf{moeo\-IBMOLS} (mo\-Move\-Init$<$ Move $>$ \& {\em \_\-move\-Init}, mo\-Next\-Move$<$ Move $>$ \& {\em \_\-next\-Move}, \bf{eo\-Eval\-Func}$<$ MOEOT $>$ \& {\em \_\-eval}, \bf{moeo\-Move\-Incr\-Eval}$<$ Move $>$ \& {\em \_\-move\-Incr\-Eval}, \bf{moeo\-Binary\-Indicator\-Based\-Fitness\-Assignment}$<$ MOEOT $>$ \& {\em \_\-fitness\-Assignment}, \bf{eo\-Continue}$<$ MOEOT $>$ \& {\em \_\-continuator})\hspace{0.3cm}{\tt [inline]}}\label{classmoeoIBMOLS_6d6a39ad3d5e4c298d450d801098e274} + + +Ctor. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-move\-Init}]the move initializer \item[{\em \_\-next\-Move}]the neighborhood explorer \item[{\em \_\-eval}]the full evaluation \item[{\em \_\-move\-Incr\-Eval}]the incremental evaluation \item[{\em \_\-fitness\-Assignment}]the fitness assignment strategy \item[{\em \_\-continuator}]the stopping criteria \end{description} +\end{Desc} + + +Definition at line 50 of file moeo\-IBMOLS.h. + +\subsection{Member Function Documentation} +\index{moeoIBMOLS@{moeo\-IBMOLS}!operator()@{operator()}} +\index{operator()@{operator()}!moeoIBMOLS@{moeo\-IBMOLS}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class MOEOT, class Move$>$ void \bf{moeo\-IBMOLS}$<$ MOEOT, Move $>$::operator() (\bf{eo\-Pop}$<$ MOEOT $>$ \& {\em \_\-pop}, \bf{moeo\-Archive}$<$ MOEOT $>$ \& {\em \_\-arch})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmoeoIBMOLS_fd788bbc4f956dec932dba2a4d4479b6} + + +Apply the local search until a local archive does not change or another stopping criteria is met and update the archive \_\-arch with new non-dominated solutions. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-pop}]the initial population \item[{\em \_\-arch}]the (updated) archive \end{description} +\end{Desc} + + +Implements \bf{eo\-BF$<$ eo\-Pop$<$ MOEOT $>$ \&, moeo\-Archive$<$ MOEOT $>$ \&, void $>$}. + +Definition at line 73 of file moeo\-IBMOLS.h. + +References moeo\-IBMOLS$<$ MOEOT, Move $>$::continuator, moeo\-Archive$<$ MOEOT $>$::equals(), moeo\-IBMOLS$<$ MOEOT, Move $>$::fitness\-Assignment, moeo\-IBMOLS$<$ MOEOT, Move $>$::one\-Step(), and moeo\-Archive$<$ MOEOT $>$::update().\index{moeoIBMOLS@{moeo\-IBMOLS}!oneStep@{oneStep}} +\index{oneStep@{oneStep}!moeoIBMOLS@{moeo\-IBMOLS}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class MOEOT, class Move$>$ void \bf{moeo\-IBMOLS}$<$ MOEOT, Move $>$::one\-Step (\bf{eo\-Pop}$<$ MOEOT $>$ \& {\em \_\-pop})\hspace{0.3cm}{\tt [inline, private]}}\label{classmoeoIBMOLS_fce770398602972b5d67c52638687d43} + + +Apply one step of the local search to the population \_\-pop. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-pop}]the population \end{description} +\end{Desc} + + +Definition at line 120 of file moeo\-IBMOLS.h. + +References moeo\-IBMOLS$<$ MOEOT, Move $>$::continuator, moeo\-IBMOLS$<$ MOEOT, Move $>$::fitness\-Assignment, moeo\-IBMOLS$<$ MOEOT, Move $>$::move\-Incr\-Eval, moeo\-IBMOLS$<$ MOEOT, Move $>$::move\-Init, and moeo\-IBMOLS$<$ MOEOT, Move $>$::next\-Move. + +Referenced by moeo\-IBMOLS$<$ MOEOT, Move $>$::operator()().\index{moeoIBMOLS@{moeo\-IBMOLS}!new_oneStep@{new\_\-oneStep}} +\index{new_oneStep@{new\_\-oneStep}!moeoIBMOLS@{moeo\-IBMOLS}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class MOEOT, class Move$>$ void \bf{moeo\-IBMOLS}$<$ MOEOT, Move $>$::new\_\-one\-Step (\bf{eo\-Pop}$<$ MOEOT $>$ \& {\em \_\-pop})\hspace{0.3cm}{\tt [inline, private]}}\label{classmoeoIBMOLS_9d811733d8e7508a7c48615c8ff0f990} + + +Apply one step of the local search to the population \_\-pop. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-pop}]the population \end{description} +\end{Desc} + + +Definition at line 304 of file moeo\-IBMOLS.h. + +References moeo\-IBMOLS$<$ MOEOT, Move $>$::continuator, moeo\-IBMOLS$<$ MOEOT, Move $>$::fitness\-Assignment, moeo\-IBMOLS$<$ MOEOT, Move $>$::move\-Incr\-Eval, moeo\-IBMOLS$<$ MOEOT, Move $>$::move\-Init, and moeo\-IBMOLS$<$ MOEOT, Move $>$::next\-Move. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moeo\-IBMOLS.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classmoeoIBMOLS_1_1OneObjectiveComparator.eps b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classmoeoIBMOLS_1_1OneObjectiveComparator.eps new file mode 100644 index 000000000..ffa490e53 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classmoeoIBMOLS_1_1OneObjectiveComparator.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 223.464 +%%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.2375 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 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 +(moeoIBMOLS< MOEOT, Move >::OneObjectiveComparator) cw +(moeoComparator< MOEOT >) cw +(eoBF< A1, A2, R >) cw +(eoFunctorBase) 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 ----- + + (moeoIBMOLS< MOEOT, Move >::OneObjectiveComparator) 0 0 box + (moeoComparator< MOEOT >) 0 1 box + (eoBF< A1, A2, R >) 0 2 box + (eoFunctorBase) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classmoeoIBMOLS_1_1OneObjectiveComparator.tex b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classmoeoIBMOLS_1_1OneObjectiveComparator.tex new file mode 100644 index 000000000..08cd609bb --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classmoeoIBMOLS_1_1OneObjectiveComparator.tex @@ -0,0 +1,37 @@ +\section{moeo\-IBMOLS$<$ MOEOT, Move $>$::One\-Objective\-Comparator Class Reference} +\label{classmoeoIBMOLS_1_1OneObjectiveComparator}\index{moeoIBMOLS::OneObjectiveComparator@{moeoIBMOLS::OneObjectiveComparator}} +Inheritance diagram for moeo\-IBMOLS$<$ MOEOT, Move $>$::One\-Objective\-Comparator::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmoeoIBMOLS_1_1OneObjectiveComparator} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\bf{One\-Objective\-Comparator} (unsigned int \_\-obj)\label{classmoeoIBMOLS_1_1OneObjectiveComparator_09ee419d143aa29bb05d48c358655bb1} + +\item +const bool \bf{operator()} (const MOEOT \&\_\-moeo1, const MOEOT \&\_\-moeo2)\label{classmoeoIBMOLS_1_1OneObjectiveComparator_44685d0ab08fede366bb404fe7f36302} + +\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +unsigned int \bf{obj}\label{classmoeoIBMOLS_1_1OneObjectiveComparator_724ca0379e42fdffe4ec0d788cd52f43} + +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class MOEOT, class Move$>$ class moeo\-IBMOLS$<$ MOEOT, Move $>$::One\-Objective\-Comparator} + + + + + +Definition at line 462 of file moeo\-IBMOLS.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moeo\-IBMOLS.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classmoeoIteratedIBMOLS.eps b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classmoeoIteratedIBMOLS.eps new file mode 100644 index 000000000..9957b08e2 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classmoeoIteratedIBMOLS.eps @@ -0,0 +1,215 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 101.266 +%%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 4.9375 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 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 +(moeoIteratedIBMOLS< MOEOT, Move >) cw +(moeoLS< MOEOT, eoPop< MOEOT > & >) cw +(moeoAlgo) cw +(eoBF< eoPop< MOEOT > &, moeoArchive< MOEOT > &, void >) cw +(eoFunctorBase) 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 ----- + + (moeoIteratedIBMOLS< MOEOT, Move >) 0.5 0 box + (moeoLS< MOEOT, eoPop< MOEOT > & >) 0.5 1 box + (moeoAlgo) 0 2 box + (eoBF< eoPop< MOEOT > &, moeoArchive< MOEOT > &, void >) 1 2 box + (eoFunctorBase) 1 3 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +1 0.5 1 in +solid +0 0.5 1 out +solid +0 1 2 conn +solid +1 0 2 in +solid +1 1 2 in +solid +0 1 2 out +solid +1 1 3 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classmoeoIteratedIBMOLS.tex b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classmoeoIteratedIBMOLS.tex new file mode 100644 index 000000000..b0e826ed2 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classmoeoIteratedIBMOLS.tex @@ -0,0 +1,124 @@ +\section{moeo\-Iterated\-IBMOLS$<$ MOEOT, Move $>$ Class Template Reference} +\label{classmoeoIteratedIBMOLS}\index{moeoIteratedIBMOLS@{moeoIteratedIBMOLS}} +Iterated version of IBMOLS as described in Basseur M., Burke K. + + +{\tt \#include $<$moeo\-Iterated\-IBMOLS.h$>$} + +Inheritance diagram for moeo\-Iterated\-IBMOLS$<$ MOEOT, Move $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.83544cm]{classmoeoIteratedIBMOLS} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{CompactItemize} +\item +typedef MOEOT::Objective\-Vector \bf{Objective\-Vector}\label{classmoeoIteratedIBMOLS_bc0f8dff81be56b23376995aace92a01} + +\begin{CompactList}\small\item\em The type of objective vector. \item\end{CompactList}\end{CompactItemize} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\bf{moeo\-Iterated\-IBMOLS} (mo\-Move\-Init$<$ Move $>$ \&\_\-move\-Init, mo\-Next\-Move$<$ Move $>$ \&\_\-next\-Move, \bf{eo\-Eval\-Func}$<$ MOEOT $>$ \&\_\-eval, \bf{moeo\-Move\-Incr\-Eval}$<$ Move $>$ \&\_\-move\-Incr\-Eval, \bf{moeo\-Binary\-Indicator\-Based\-Fitness\-Assignment}$<$ MOEOT $>$ \&\_\-fitness\-Assignment, \bf{eo\-Continue}$<$ MOEOT $>$ \&\_\-continuator, \bf{eo\-Mon\-Op}$<$ MOEOT $>$ \&\_\-mon\-Op, \bf{eo\-Mon\-Op}$<$ MOEOT $>$ \&\_\-random\-Mon\-Op, unsigned int \_\-n\-Noise\-Iterations=1) +\begin{CompactList}\small\item\em Ctor. \item\end{CompactList}\item +void \bf{operator()} (\bf{eo\-Pop}$<$ MOEOT $>$ \&\_\-pop, \bf{moeo\-Archive}$<$ MOEOT $>$ \&\_\-arch) +\begin{CompactList}\small\item\em Apply the local search iteratively until the stopping criteria is met. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Member Functions} +\begin{CompactItemize} +\item +void \bf{generate\-New\-Solutions} (\bf{eo\-Pop}$<$ MOEOT $>$ \&\_\-pop, const \bf{moeo\-Archive}$<$ MOEOT $>$ \&\_\-arch) +\begin{CompactList}\small\item\em Creates new population randomly initialized and/or initialized from the archive \_\-arch. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +\bf{moeo\-IBMOLS}$<$ MOEOT, Move $>$ \bf{ibmols}\label{classmoeoIteratedIBMOLS_6b1351f1faa391a1f095d1f9d4dba915} + +\begin{CompactList}\small\item\em the local search to iterate \item\end{CompactList}\item +\bf{eo\-Eval\-Func}$<$ MOEOT $>$ \& \bf{eval}\label{classmoeoIteratedIBMOLS_7abdd0c1433ec4671522c8d5edc9fe61} + +\begin{CompactList}\small\item\em the full evaluation \item\end{CompactList}\item +\bf{eo\-Continue}$<$ MOEOT $>$ \& \bf{continuator}\label{classmoeoIteratedIBMOLS_964e5df65c7aa33dd84eed3180d5e0a3} + +\begin{CompactList}\small\item\em the stopping criteria \item\end{CompactList}\item +\bf{eo\-Mon\-Op}$<$ MOEOT $>$ \& \bf{mon\-Op}\label{classmoeoIteratedIBMOLS_77851daa2f2230000c0012beef3b8558} + +\begin{CompactList}\small\item\em the monary operator \item\end{CompactList}\item +\bf{eo\-Mon\-Op}$<$ MOEOT $>$ \& \bf{random\-Mon\-Op}\label{classmoeoIteratedIBMOLS_89df3bfa7069c06c7e7cf4b30ccc5535} + +\begin{CompactList}\small\item\em the random monary operator (or random initializer) \item\end{CompactList}\item +unsigned int \bf{n\-Noise\-Iterations}\label{classmoeoIteratedIBMOLS_a50f25daf2847fb9d299ef65baf3bda7} + +\begin{CompactList}\small\item\em the number of iterations to apply the random noise \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class MOEOT, class Move$>$ class moeo\-Iterated\-IBMOLS$<$ MOEOT, Move $>$} + +Iterated version of IBMOLS as described in Basseur M., Burke K. + +: \char`\"{}Indicator-Based Multi-Objective Local Search\char`\"{} (2007). + + + +Definition at line 41 of file moeo\-Iterated\-IBMOLS.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moeoIteratedIBMOLS@{moeo\-Iterated\-IBMOLS}!moeoIteratedIBMOLS@{moeoIteratedIBMOLS}} +\index{moeoIteratedIBMOLS@{moeoIteratedIBMOLS}!moeoIteratedIBMOLS@{moeo\-Iterated\-IBMOLS}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class MOEOT, class Move$>$ \bf{moeo\-Iterated\-IBMOLS}$<$ MOEOT, Move $>$::\bf{moeo\-Iterated\-IBMOLS} (mo\-Move\-Init$<$ Move $>$ \& {\em \_\-move\-Init}, mo\-Next\-Move$<$ Move $>$ \& {\em \_\-next\-Move}, \bf{eo\-Eval\-Func}$<$ MOEOT $>$ \& {\em \_\-eval}, \bf{moeo\-Move\-Incr\-Eval}$<$ Move $>$ \& {\em \_\-move\-Incr\-Eval}, \bf{moeo\-Binary\-Indicator\-Based\-Fitness\-Assignment}$<$ MOEOT $>$ \& {\em \_\-fitness\-Assignment}, \bf{eo\-Continue}$<$ MOEOT $>$ \& {\em \_\-continuator}, \bf{eo\-Mon\-Op}$<$ MOEOT $>$ \& {\em \_\-mon\-Op}, \bf{eo\-Mon\-Op}$<$ MOEOT $>$ \& {\em \_\-random\-Mon\-Op}, unsigned int {\em \_\-n\-Noise\-Iterations} = {\tt 1})\hspace{0.3cm}{\tt [inline]}}\label{classmoeoIteratedIBMOLS_67352bb5d797f20e767a4f0fa6d80f93} + + +Ctor. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-move\-Init}]the move initializer \item[{\em \_\-next\-Move}]the neighborhood explorer \item[{\em \_\-eval}]the full evaluation \item[{\em \_\-move\-Incr\-Eval}]the incremental evaluation \item[{\em \_\-fitness\-Assignment}]the fitness assignment strategy \item[{\em \_\-continuator}]the stopping criteria \item[{\em \_\-mon\-Op}]the monary operator \item[{\em \_\-random\-Mon\-Op}]the random monary operator (or random initializer) \item[{\em \_\-n\-Noise\-Iterations}]the number of iterations to apply the random noise \end{description} +\end{Desc} + + +Definition at line 61 of file moeo\-Iterated\-IBMOLS.h. + +\subsection{Member Function Documentation} +\index{moeoIteratedIBMOLS@{moeo\-Iterated\-IBMOLS}!operator()@{operator()}} +\index{operator()@{operator()}!moeoIteratedIBMOLS@{moeo\-Iterated\-IBMOLS}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class MOEOT, class Move$>$ void \bf{moeo\-Iterated\-IBMOLS}$<$ MOEOT, Move $>$::operator() (\bf{eo\-Pop}$<$ MOEOT $>$ \& {\em \_\-pop}, \bf{moeo\-Archive}$<$ MOEOT $>$ \& {\em \_\-arch})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmoeoIteratedIBMOLS_52d4aa19a93c69ed0c2246c62821e76e} + + +Apply the local search iteratively until the stopping criteria is met. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-pop}]the initial population \item[{\em \_\-arch}]the (updated) archive \end{description} +\end{Desc} + + +Implements \bf{eo\-BF$<$ eo\-Pop$<$ MOEOT $>$ \&, moeo\-Archive$<$ MOEOT $>$ \&, void $>$}. + +Definition at line 86 of file moeo\-Iterated\-IBMOLS.h. + +References moeo\-Iterated\-IBMOLS$<$ MOEOT, Move $>$::continuator, moeo\-Iterated\-IBMOLS$<$ MOEOT, Move $>$::generate\-New\-Solutions(), moeo\-Iterated\-IBMOLS$<$ MOEOT, Move $>$::ibmols, and moeo\-Archive$<$ MOEOT $>$::update().\index{moeoIteratedIBMOLS@{moeo\-Iterated\-IBMOLS}!generateNewSolutions@{generateNewSolutions}} +\index{generateNewSolutions@{generateNewSolutions}!moeoIteratedIBMOLS@{moeo\-Iterated\-IBMOLS}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class MOEOT, class Move$>$ void \bf{moeo\-Iterated\-IBMOLS}$<$ MOEOT, Move $>$::generate\-New\-Solutions (\bf{eo\-Pop}$<$ MOEOT $>$ \& {\em \_\-pop}, const \bf{moeo\-Archive}$<$ MOEOT $>$ \& {\em \_\-arch})\hspace{0.3cm}{\tt [inline, private]}}\label{classmoeoIteratedIBMOLS_2826cf283f6670b3c46da5ac6b6def18} + + +Creates new population randomly initialized and/or initialized from the archive \_\-arch. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-pop}]the output population \item[{\em \_\-arch}]the archive \end{description} +\end{Desc} + + +Definition at line 121 of file moeo\-Iterated\-IBMOLS.h. + +References moeo\-Iterated\-IBMOLS$<$ MOEOT, Move $>$::eval, eo\-Pop$<$ EOT $>$::invalidate(), moeo\-Iterated\-IBMOLS$<$ MOEOT, Move $>$::mon\-Op, moeo\-Iterated\-IBMOLS$<$ MOEOT, Move $>$::n\-Noise\-Iterations, and moeo\-Iterated\-IBMOLS$<$ MOEOT, Move $>$::random\-Mon\-Op. + +Referenced by moeo\-Iterated\-IBMOLS$<$ MOEOT, Move $>$::operator()(). + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moeo\-Iterated\-IBMOLS.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classmoeoMoveIncrEval.eps b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classmoeoMoveIncrEval.eps new file mode 100644 index 000000000..769d2fb57 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classmoeoMoveIncrEval.eps @@ -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 324.324 +%%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 1.54167 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 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 +(moeoMoveIncrEval< Move >) cw +(eoBF< A1, A2, R >) cw +(eoFunctorBase) 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 ----- + + (moeoMoveIncrEval< Move >) 0 0 box + (eoBF< A1, A2, R >) 0 1 box + (eoFunctorBase) 0 2 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classmoeoMoveIncrEval.tex b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classmoeoMoveIncrEval.tex new file mode 100644 index 000000000..0e0a807a0 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classmoeoMoveIncrEval.tex @@ -0,0 +1,22 @@ +\section{moeo\-Move\-Incr\-Eval$<$ Move $>$ Class Template Reference} +\label{classmoeoMoveIncrEval}\index{moeoMoveIncrEval@{moeoMoveIncrEval}} +Inheritance diagram for moeo\-Move\-Incr\-Eval$<$ Move $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{classmoeoMoveIncrEval} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class Move$>$ class moeo\-Move\-Incr\-Eval$<$ Move $>$} + + + + + +Definition at line 9 of file moeo\-Move\-Incr\-Eval.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moeo\-Move\-Incr\-Eval.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classmoeoObjectiveVectorTraits.eps b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classmoeoObjectiveVectorTraits.eps new file mode 100644 index 000000000..e70f35158 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classmoeoObjectiveVectorTraits.eps @@ -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.503 +%%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 4.975 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 +(moeoObjectiveVectorTraits) cw +(FlowShopObjectiveVectorTraits) cw +(Sch1ObjectiveVectorTraits) 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 ----- + + (moeoObjectiveVectorTraits) 0.5 1 box + (FlowShopObjectiveVectorTraits) 0 0 box + (Sch1ObjectiveVectorTraits) 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 diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classmoeoReferencePointIndicatorBasedFitnessAssignment.eps b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classmoeoReferencePointIndicatorBasedFitnessAssignment.eps new file mode 100644 index 000000000..c1feb7742 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classmoeoReferencePointIndicatorBasedFitnessAssignment.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 202.532 +%%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.46875 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 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 +(moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >) cw +(moeoFitnessAssignment< MOEOT >) cw +(eoUF< eoPop< MOEOT > &, void >) cw +(eoFunctorBase) 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 ----- + + (moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >) 0 0 box + (moeoFitnessAssignment< MOEOT >) 0 1 box + (eoUF< eoPop< MOEOT > &, void >) 0 2 box + (eoFunctorBase) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classmoeoReferencePointIndicatorBasedFitnessAssignment.tex b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classmoeoReferencePointIndicatorBasedFitnessAssignment.tex new file mode 100644 index 000000000..0ba580737 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classmoeoReferencePointIndicatorBasedFitnessAssignment.tex @@ -0,0 +1,148 @@ +\section{moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment$<$ MOEOT $>$ Class Template Reference} +\label{classmoeoReferencePointIndicatorBasedFitnessAssignment}\index{moeoReferencePointIndicatorBasedFitnessAssignment@{moeoReferencePointIndicatorBasedFitnessAssignment}} +Fitness assignment sheme based a Reference Point and a Quality Indicator. + + +{\tt \#include $<$moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment.h$>$} + +Inheritance diagram for moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment$<$ MOEOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmoeoReferencePointIndicatorBasedFitnessAssignment} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{CompactItemize} +\item +typedef MOEOT::Objective\-Vector \bf{Objective\-Vector}\label{classmoeoReferencePointIndicatorBasedFitnessAssignment_51ae5507dca3e934f7db36eef78df556} + +\begin{CompactList}\small\item\em The type of objective vector. \item\end{CompactList}\end{CompactItemize} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\bf{moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment} (\bf{Objective\-Vector} \&\_\-ref\-Point, \bf{moeo\-Normalized\-Solution\-Vs\-Solution\-Binary\-Metric}$<$ \bf{Objective\-Vector}, double $>$ \&\_\-metric) +\begin{CompactList}\small\item\em Ctor. \item\end{CompactList}\item +void \bf{operator()} (\bf{eo\-Pop}$<$ MOEOT $>$ \&\_\-pop) +\begin{CompactList}\small\item\em Sets the fitness values for every solution contained in the population \_\-pop. \item\end{CompactList}\item +void \bf{update\-By\-Deleting} (\bf{eo\-Pop}$<$ MOEOT $>$ \&\_\-pop, \bf{Objective\-Vector} \&\_\-obj\-Vec) +\begin{CompactList}\small\item\em Updates the fitness values of the whole population \_\-pop by taking the deletion of the objective vector \_\-obj\-Vec into account. \item\end{CompactList}\end{CompactItemize} +\subsection*{Protected Member Functions} +\begin{CompactItemize} +\item +void \bf{setup} (const \bf{eo\-Pop}$<$ MOEOT $>$ \&\_\-pop) +\begin{CompactList}\small\item\em Sets the bounds for every objective using the min and the max value for every objective vector of \_\-pop (and the reference point). \item\end{CompactList}\item +void \bf{set\-Fitnesses} (\bf{eo\-Pop}$<$ MOEOT $>$ \&\_\-pop) +\begin{CompactList}\small\item\em Sets the fitness of every individual contained in the population \_\-pop. \item\end{CompactList}\end{CompactItemize} +\subsection*{Protected Attributes} +\begin{CompactItemize} +\item +\bf{Objective\-Vector} \& \bf{ref\-Point}\label{classmoeoReferencePointIndicatorBasedFitnessAssignment_73dc1eb66e46b28b7ee283f7367f427b} + +\begin{CompactList}\small\item\em the reference point \item\end{CompactList}\item +\bf{moeo\-Normalized\-Solution\-Vs\-Solution\-Binary\-Metric}$<$ \bf{Objective\-Vector}, double $>$ \& \bf{metric}\label{classmoeoReferencePointIndicatorBasedFitnessAssignment_9adf4fd353f44f15d3722ef26aa81832} + +\begin{CompactList}\small\item\em the quality indicator \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class MOEOT$>$ class moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment$<$ MOEOT $>$} + +Fitness assignment sheme based a Reference Point and a Quality Indicator. + + + +Definition at line 25 of file moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moeoReferencePointIndicatorBasedFitnessAssignment@{moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment}!moeoReferencePointIndicatorBasedFitnessAssignment@{moeoReferencePointIndicatorBasedFitnessAssignment}} +\index{moeoReferencePointIndicatorBasedFitnessAssignment@{moeoReferencePointIndicatorBasedFitnessAssignment}!moeoReferencePointIndicatorBasedFitnessAssignment@{moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class MOEOT$>$ \bf{moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment}$<$ MOEOT $>$::\bf{moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment} (\bf{Objective\-Vector} \& {\em \_\-ref\-Point}, \bf{moeo\-Normalized\-Solution\-Vs\-Solution\-Binary\-Metric}$<$ \bf{Objective\-Vector}, double $>$ \& {\em \_\-metric})\hspace{0.3cm}{\tt [inline]}}\label{classmoeoReferencePointIndicatorBasedFitnessAssignment_67a5e91e08f89f27ad5aad989898c425} + + +Ctor. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-ref\-Point}]the reference point \item[{\em \_\-metric}]the quality indicator \end{description} +\end{Desc} + + +Definition at line 37 of file moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment.h. + +\subsection{Member Function Documentation} +\index{moeoReferencePointIndicatorBasedFitnessAssignment@{moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment}!operator()@{operator()}} +\index{operator()@{operator()}!moeoReferencePointIndicatorBasedFitnessAssignment@{moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class MOEOT$>$ void \bf{moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment}$<$ MOEOT $>$::operator() (\bf{eo\-Pop}$<$ MOEOT $>$ \& {\em \_\-pop})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmoeoReferencePointIndicatorBasedFitnessAssignment_d122ebb7cda54b283d6736dc5e57da7d} + + +Sets the fitness values for every solution contained in the population \_\-pop. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-pop}]the population \end{description} +\end{Desc} + + +Implements \bf{eo\-UF$<$ eo\-Pop$<$ MOEOT $>$ \&, void $>$}. + +Definition at line 46 of file moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment.h. + +References moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment$<$ MOEOT $>$::set\-Fitnesses(), and moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment$<$ MOEOT $>$::setup().\index{moeoReferencePointIndicatorBasedFitnessAssignment@{moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment}!updateByDeleting@{updateByDeleting}} +\index{updateByDeleting@{updateByDeleting}!moeoReferencePointIndicatorBasedFitnessAssignment@{moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class MOEOT$>$ void \bf{moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment}$<$ MOEOT $>$::update\-By\-Deleting (\bf{eo\-Pop}$<$ MOEOT $>$ \& {\em \_\-pop}, \bf{Objective\-Vector} \& {\em \_\-obj\-Vec})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmoeoReferencePointIndicatorBasedFitnessAssignment_ba47422dd4f82274af2f69c0b5f95d3a} + + +Updates the fitness values of the whole population \_\-pop by taking the deletion of the objective vector \_\-obj\-Vec into account. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-pop}]the population \item[{\em \_\-obj\-Vec}]the objective vector \end{description} +\end{Desc} + + +Implements \bf{moeo\-Fitness\-Assignment$<$ MOEOT $>$} \doxyref{p.}{classmoeoFitnessAssignment_4922629569eddc9be049b3ead1ab0269}. + +Definition at line 60 of file moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment.h.\index{moeoReferencePointIndicatorBasedFitnessAssignment@{moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment}!setup@{setup}} +\index{setup@{setup}!moeoReferencePointIndicatorBasedFitnessAssignment@{moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class MOEOT$>$ void \bf{moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment}$<$ MOEOT $>$::setup (const \bf{eo\-Pop}$<$ MOEOT $>$ \& {\em \_\-pop})\hspace{0.3cm}{\tt [inline, protected]}}\label{classmoeoReferencePointIndicatorBasedFitnessAssignment_67bfa12f97d247c15f3e28f923646b78} + + +Sets the bounds for every objective using the min and the max value for every objective vector of \_\-pop (and the reference point). + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-pop}]the population \end{description} +\end{Desc} + + +Definition at line 78 of file moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment.h. + +References moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment$<$ MOEOT $>$::metric, moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment$<$ MOEOT $>$::ref\-Point, and moeo\-Normalized\-Solution\-Vs\-Solution\-Binary\-Metric$<$ Objective\-Vector, R $>$::setup(). + +Referenced by moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment$<$ MOEOT $>$::operator()().\index{moeoReferencePointIndicatorBasedFitnessAssignment@{moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment}!setFitnesses@{setFitnesses}} +\index{setFitnesses@{setFitnesses}!moeoReferencePointIndicatorBasedFitnessAssignment@{moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class MOEOT$>$ void \bf{moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment}$<$ MOEOT $>$::set\-Fitnesses (\bf{eo\-Pop}$<$ MOEOT $>$ \& {\em \_\-pop})\hspace{0.3cm}{\tt [inline, protected]}}\label{classmoeoReferencePointIndicatorBasedFitnessAssignment_b1ca358eeb6dac0afe902a3978e1219a} + + +Sets the fitness of every individual contained in the population \_\-pop. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-pop}]the population \end{description} +\end{Desc} + + +Definition at line 99 of file moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment.h. + +References moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment$<$ MOEOT $>$::metric, and moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment$<$ MOEOT $>$::ref\-Point. + +Referenced by moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment$<$ MOEOT $>$::operator()(). + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moeo\-Reference\-Point\-Indicator\-Based\-Fitness\-Assignment.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classpeoEA.tex b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classpeoEA.tex new file mode 100644 index 000000000..d1a3e09cf --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/latex/classpeoEA.tex @@ -0,0 +1,119 @@ +\section{peo\-EA$<$ EOT $>$ Class Template Reference} +\label{classpeoEA}\index{peoEA@{peoEA}} +The \doxyref{peo\-EA}{p.}{classpeoEA} class offers an elementary evolutionary algorithm implementation. + + +{\tt \#include $<$pmoeo\-EA.h$>$} + +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\bf{peo\-EA} (\bf{eo\-Continue}$<$ EOT $>$ \&\_\-\_\-cont, peo\-Pop\-Eval$<$ EOT $>$ \&\_\-\_\-pop\_\-eval, \bf{eo\-Select}$<$ EOT $>$ \&\_\-\_\-select, peo\-Transform$<$ EOT $>$ \&\_\-\_\-trans, \bf{eo\-Replacement}$<$ EOT $>$ \&\_\-\_\-replace) +\begin{CompactList}\small\item\em Constructor for the evolutionary algorithm object - several basic parameters have to be specified, allowing for different levels of parallelism. \item\end{CompactList}\item +void \bf{run} ()\label{classpeoEA_6ab8c321d29350634143a2a01cf2ad24} + +\begin{CompactList}\small\item\em Evolutionary algorithm function - a side effect of the fact that the class is derived from the {\bf Runner} class, thus requiring the existence of a {\em run\/} function, the algorithm being executed on a distinct thread. \item\end{CompactList}\item +void \bf{operator()} (\bf{eo\-Pop}$<$ EOT $>$ \&\_\-\_\-pop) +\begin{CompactList}\small\item\em \doxyref{Function} operator for specifying the population to be associated with the algorithm. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +\bf{eo\-Continue}$<$ EOT $>$ \& \bf{cont}\label{classpeoEA_5f015eebf42f176b9fe322488c446c2a} + +\item +peo\-Pop\-Eval$<$ EOT $>$ \& \bf{pop\_\-eval}\label{classpeoEA_9140259f50c9186edcb062b023624c96} + +\item +\bf{eo\-Select}$<$ EOT $>$ \& \bf{select}\label{classpeoEA_2d8428d69fdd6aefefbaf543fdd46d19} + +\item +peo\-Transform$<$ EOT $>$ \& \bf{trans}\label{classpeoEA_713c77935eb8aafebfb9488cfaa4a363} + +\item +\bf{eo\-Replacement}$<$ EOT $>$ \& \bf{replace}\label{classpeoEA_9bd2d4356cf7e69e3141dc269213aa8a} + +\item +\bf{eo\-Pop}$<$ EOT $>$ $\ast$ \bf{pop}\label{classpeoEA_c0b110e410bc16283e8339f24b733772} + +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class peo\-EA$<$ EOT $>$} + +The \doxyref{peo\-EA}{p.}{classpeoEA} class offers an elementary evolutionary algorithm implementation. + +In addition, as compared with the algorithms provided by the \doxyref{EO} framework, the \doxyref{peo\-EA}{p.}{classpeoEA} class has the underlying necessary structure for including, for example, parallel evaluation and parallel transformation operators, migration operators etc. Although there is no restriction on using the algorithms provided by the \doxyref{EO} framework, the drawback resides in the fact that the \doxyref{EO} implementation is exclusively sequential and, in consequence, no parallelism is provided. A simple example for constructing a \doxyref{peo\-EA}{p.}{classpeoEA} object: + +\begin{TabularC}{2} +\hline +... ~ &~ \\\hline +eo\-Pop$<$ EOT $>$ population( POP\_\-SIZE, pop\-Initializer ); ~ &// creation of a population with POP\_\-SIZE individuals - the pop\-Initializer is a functor to be called for each individual \\\hline +~ &~ \\\hline +eo\-Gen\-Continue$<$ EOT $>$ ea\-Cont( NUM\_\-GEN ); ~ &// number of generations for the evolutionary algorithm \\\hline +eo\-Check\-Point$<$ EOT $>$ ea\-Checkpoint\-Continue( ea\-Cont ); ~ &// checkpoint incorporating the continuation criterion - startpoint for adding other checkpoint objects \\\hline +~ &~ \\\hline +peo\-Seq\-Pop\-Eval$<$ EOT $>$ ea\-Pop\-Eval( eval\-Function ); ~ &// sequential evaluation functor wrapper - eval\-Function represents the actual evaluation functor \\\hline +~ &~ \\\hline +eo\-Ranking\-Select$<$ EOT $>$ selection\-Strategy; ~ &// selection strategy for creating the offspring population - a simple ranking selection in this case \\\hline +eo\-Select\-Number$<$ EOT $>$ ea\-Select( selection\-Strategy, POP\_\-SIZE ); ~ &// the number of individuals to be selected for creating the offspring population \\\hline +eo\-Ranking\-Select$<$ EOT $>$ selection\-Strategy; ~ &// selection strategy for creating the offspring population - a simple ranking selection in this case \\\hline +~ &~ \\\hline +eo\-SGATransform$<$ EOT $>$ transform( crossover, CROSS\_\-RATE, mutation, MUT\_\-RATE ); ~ &// transformation operator - crossover and mutation operators with their associated probabilities \\\hline +peo\-Seq\-Transform$<$ EOT $>$ ea\-Transform( transform ); ~ &// Paradis\-EO specific sequential operator - a parallel version may be specified in the same manner \\\hline +~ &~ \\\hline +eo\-Plus\-Replacement$<$ EOT $>$ ea\-Replace; ~ &// replacement strategy - for integrating the offspring resulting individuals in the initial population \\\hline +~ &~ \\\hline +peo\-EA$<$ EOT $>$ ea\-Alg( ea\-Checkpoint\-Continue, ea\-Pop\-Eval, ea\-Select, ea\-Transform, ea\-Replace ); ~ &// Paradis\-EO evolutionary algorithm integrating the above defined objects \\\hline +ea\-Alg( population ); ~ &// specifying the initial population for the algorithm \\\hline +... ~ &~ \\\hline +\end{TabularC} + + + + +Definition at line 54 of file pmoeo\-EA.h. + +\subsection{Constructor \& Destructor Documentation} +\index{peoEA@{peo\-EA}!peoEA@{peoEA}} +\index{peoEA@{peoEA}!peoEA@{peo\-EA}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ \bf{peo\-EA}$<$ EOT $>$::\bf{peo\-EA} (\bf{eo\-Continue}$<$ EOT $>$ \& {\em \_\-\_\-cont}, peo\-Pop\-Eval$<$ EOT $>$ \& {\em \_\-\_\-pop\_\-eval}, \bf{eo\-Select}$<$ EOT $>$ \& {\em \_\-\_\-select}, peo\-Transform$<$ EOT $>$ \& {\em \_\-\_\-trans}, \bf{eo\-Replacement}$<$ EOT $>$ \& {\em \_\-\_\-replace})}\label{classpeoEA_dbfc4f8907bef234602149229f132371} + + +Constructor for the evolutionary algorithm object - several basic parameters have to be specified, allowing for different levels of parallelism. + +Depending on the requirements, a sequential or a parallel evaluation operator may be specified or, in the same manner, a sequential or a parallel transformation operator may be given as parameter. Out of the box objects may be provided, from the \doxyref{EO} package, for example, or custom defined ones may be specified, provided that they are derived from the correct base classes. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em eo\-Continue$<$}]EOT $>$\& \_\-\_\-cont - continuation criterion specifying whether the algorithm should continue or not; \item[{\em peo\-Pop\-Eval$<$}]EOT $>$\& \_\-\_\-pop\_\-eval - evaluation operator; it allows the specification of parallel evaluation operators, aggregate evaluation functions, etc.; \item[{\em eo\-Select$<$}]EOT $>$\& \_\-\_\-select - selection strategy to be applied for constructing a list of offspring individuals; \item[{\em peo\-Transform$<$}]EOT $>$\& \_\-\_\-trans - transformation operator, i.e. crossover and mutation; allows for sequential or parallel transform; \item[{\em eo\-Replacement$<$}]EOT $>$\& \_\-\_\-replace - replacement strategy for integrating the offspring individuals in the initial population; \end{description} +\end{Desc} + + +Definition at line 98 of file pmoeo\-EA.h. + +References peo\-EA$<$ EOT $>$::pop\_\-eval, and peo\-EA$<$ EOT $>$::trans. + +\subsection{Member Function Documentation} +\index{peoEA@{peo\-EA}!operator()@{operator()}} +\index{operator()@{operator()}!peoEA@{peo\-EA}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void \bf{peo\-EA}$<$ EOT $>$::operator() (\bf{eo\-Pop}$<$ EOT $>$ \& {\em \_\-\_\-pop})}\label{classpeoEA_3c709e3b2491147d26fee36138644613} + + +\doxyref{Function} operator for specifying the population to be associated with the algorithm. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em eo\-Pop$<$}]EOT $>$\& \_\-\_\-pop - initial population of the algorithm, to be iteratively evolved; \end{description} +\end{Desc} + + +Definition at line 114 of file pmoeo\-EA.h. + +References peo\-EA$<$ EOT $>$::pop. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +pmoeo\-EA.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/FlowShop.3 b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/FlowShop.3 new file mode 100644 index 000000000..9e706c47c --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/FlowShop.3 @@ -0,0 +1,31 @@ +.TH "FlowShop" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-MOEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +FlowShop \- Structure of the genotype for the flow-shop scheduling problem: a vector of unsigned int int. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType >< moeoRealObjectiveVector< FlowShopObjectiveVectorTraits >, double, double, unsigned int >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "std::string \fBclassName\fP () const " +.br +.RI "\fIclass name \fP" +.in -1c +.SH "Detailed Description" +.PP +Structure of the genotype for the flow-shop scheduling problem: a vector of unsigned int int. +.PP +Definition at line 22 of file FlowShop.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/FlowShopBenchmarkParser.3 b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/FlowShopBenchmarkParser.3 new file mode 100644 index 000000000..f72583422 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/FlowShopBenchmarkParser.3 @@ -0,0 +1,120 @@ +.TH "FlowShopBenchmarkParser" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-MOEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +FlowShopBenchmarkParser \- Class to handle parameters of a flow-shop instance from a benchmark file. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBFlowShopBenchmarkParser\fP (const std::string _benchmarkFileName)" +.br +.RI "\fICtor. \fP" +.ti -1c +.RI "const unsigned int \fBgetM\fP ()" +.br +.RI "\fIthe number of machines \fP" +.ti -1c +.RI "const unsigned int \fBgetN\fP ()" +.br +.RI "\fIthe number of jobs \fP" +.ti -1c +.RI "const std::vector< std::vector< unsigned int > > \fBgetP\fP ()" +.br +.RI "\fIthe processing times \fP" +.ti -1c +.RI "const std::vector< unsigned int > \fBgetD\fP ()" +.br +.RI "\fIthe due-dates \fP" +.ti -1c +.RI "void \fBprintOn\fP (std::ostream &_os) const " +.br +.RI "\fIprinting. \fP" +.in -1c +.SS "Private Member Functions" + +.in +1c +.ti -1c +.RI "void \fBinit\fP (const std::string _benchmarkFileName)" +.br +.RI "\fIInitialisation of the parameters with the data contained in the benchmark file. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "unsigned int \fBM\fP" +.br +.RI "\fInumber of machines \fP" +.ti -1c +.RI "unsigned int \fBN\fP" +.br +.RI "\fInumber of jobs \fP" +.ti -1c +.RI "std::vector< std::vector< unsigned int > > \fBp\fP" +.br +.RI "\fIp[i][j] = processing time of job j on machine i \fP" +.ti -1c +.RI "std::vector< unsigned int > \fBd\fP" +.br +.RI "\fId[j] = due-date of the job j \fP" +.in -1c +.SH "Detailed Description" +.PP +Class to handle parameters of a flow-shop instance from a benchmark file. +.PP +Definition at line 23 of file FlowShopBenchmarkParser.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "FlowShopBenchmarkParser::FlowShopBenchmarkParser (const std::string _benchmarkFileName)" +.PP +Ctor. +.PP +\fBParameters:\fP +.RS 4 +\fI_benchmarkFileName\fP the name of the benchmark file +.RE +.PP + +.PP +Definition at line 16 of file FlowShopBenchmarkParser.cpp. +.PP +References init(). +.SH "Member Function Documentation" +.PP +.SS "void FlowShopBenchmarkParser::printOn (std::ostream & _os) const" +.PP +printing. +.PP +.. +.PP +Definition at line 46 of file FlowShopBenchmarkParser.cpp. +.PP +References d, M, N, and p. +.SS "void FlowShopBenchmarkParser::init (const std::string _benchmarkFileName)\fC [private]\fP" +.PP +Initialisation of the parameters with the data contained in the benchmark file. +.PP +\fBParameters:\fP +.RS 4 +\fI_benchmarkFileName\fP the name of the benchmark file +.RE +.PP + +.PP +Definition at line 64 of file FlowShopBenchmarkParser.cpp. +.PP +References d, M, N, and p. +.PP +Referenced by FlowShopBenchmarkParser(). + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/FlowShopEval.3 b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/FlowShopEval.3 new file mode 100644 index 000000000..494aa09b5 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/FlowShopEval.3 @@ -0,0 +1,155 @@ +.TH "FlowShopEval" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-MOEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +FlowShopEval \- Evaluation of the objective vector a (multi-objective) \fBFlowShop\fP object. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoeoEvalFunc< FlowShop >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBFlowShopEval\fP (unsigned int _M, unsigned int _N, const std::vector< std::vector< unsigned int > > &_p, const std::vector< unsigned int > &_d)" +.br +.RI "\fICtor. \fP" +.ti -1c +.RI "void \fBoperator()\fP (\fBFlowShop\fP &_flowshop)" +.br +.RI "\fIcomputation of the multi-objective evaluation of a \fBFlowShop\fP object \fP" +.in -1c +.SS "Private Member Functions" + +.in +1c +.ti -1c +.RI "double \fBmakespan\fP (const \fBFlowShop\fP &_flowshop)" +.br +.RI "\fIcomputation of the makespan \fP" +.ti -1c +.RI "double \fBtardiness\fP (const \fBFlowShop\fP &_flowshop)" +.br +.RI "\fIcomputation of the tardiness \fP" +.ti -1c +.RI "std::vector< std::vector< unsigned int > > \fBcompletionTime\fP (const \fBFlowShop\fP &_flowshop)" +.br +.RI "\fIcomputation of the completion times of a scheduling (for each job on each machine) C[i][j] = completion of the jth job of the scheduling on the ith machine \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "unsigned int \fBM\fP" +.br +.RI "\fInumber of machines \fP" +.ti -1c +.RI "unsigned int \fBN\fP" +.br +.RI "\fInumber of jobs \fP" +.ti -1c +.RI "std::vector< std::vector< unsigned int > > \fBp\fP" +.br +.RI "\fIp[i][j] = processing time of job j on machine i \fP" +.ti -1c +.RI "std::vector< unsigned int > \fBd\fP" +.br +.RI "\fId[j] = due-date of the job j \fP" +.in -1c +.SH "Detailed Description" +.PP +Evaluation of the objective vector a (multi-objective) \fBFlowShop\fP object. +.PP +Definition at line 23 of file FlowShopEval.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "FlowShopEval::FlowShopEval (unsigned int _M, unsigned int _N, const std::vector< std::vector< unsigned int > > & _p, const std::vector< unsigned int > & _d)" +.PP +Ctor. +.PP +\fBParameters:\fP +.RS 4 +\fI_M\fP the number of machines +.br +\fI_N\fP the number of jobs to schedule +.br +\fI_p\fP the processing times +.br +\fI_d\fP the due dates +.RE +.PP + +.PP +Definition at line 16 of file FlowShopEval.cpp. +.SH "Member Function Documentation" +.PP +.SS "void FlowShopEval::operator() (\fBFlowShop\fP & _flowshop)" +.PP +computation of the multi-objective evaluation of a \fBFlowShop\fP object +.PP +\fBParameters:\fP +.RS 4 +\fI_flowshop\fP the \fBFlowShop\fP object to evaluate +.RE +.PP + +.PP +Definition at line 21 of file FlowShopEval.cpp. +.PP +References makespan(), MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity >::objectiveVector(), and tardiness(). +.SS "double FlowShopEval::makespan (const \fBFlowShop\fP & _flowshop)\fC [private]\fP" +.PP +computation of the makespan +.PP +\fBParameters:\fP +.RS 4 +\fI_flowshop\fP the genotype to evaluate +.RE +.PP + +.PP +Definition at line 31 of file FlowShopEval.cpp. +.PP +References completionTime(), M, and N. +.PP +Referenced by operator()(). +.SS "double FlowShopEval::tardiness (const \fBFlowShop\fP & _flowshop)\fC [private]\fP" +.PP +computation of the tardiness +.PP +\fBParameters:\fP +.RS 4 +\fI_flowshop\fP the genotype to evaluate +.RE +.PP + +.PP +Definition at line 40 of file FlowShopEval.cpp. +.PP +References completionTime(), d, M, and N. +.PP +Referenced by operator()(). +.SS "std::vector< std::vector< unsigned int > > FlowShopEval::completionTime (const \fBFlowShop\fP & _flowshop)\fC [private]\fP" +.PP +computation of the completion times of a scheduling (for each job on each machine) C[i][j] = completion of the jth job of the scheduling on the ith machine +.PP +\fBParameters:\fP +.RS 4 +\fI_flowshop\fP the genotype to evaluate +.RE +.PP + +.PP +Definition at line 53 of file FlowShopEval.cpp. +.PP +References M, N, and p. +.PP +Referenced by makespan(), and tardiness(). + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/FlowShopInit.3 b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/FlowShopInit.3 new file mode 100644 index 000000000..daac1acff --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/FlowShopInit.3 @@ -0,0 +1,73 @@ +.TH "FlowShopInit" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-MOEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +FlowShopInit \- Initialization of a random genotype built by the default constructor of the \fBFlowShop\fP class. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoInit< FlowShop >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBFlowShopInit\fP (unsigned int _N)" +.br +.RI "\fICtor. \fP" +.ti -1c +.RI "void \fBoperator()\fP (\fBFlowShop\fP &_flowshop)" +.br +.RI "\fIbuilds a random genotype \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "unsigned int \fBN\fP" +.br +.RI "\fIthe number of jobs (size of a scheduling vector) \fP" +.in -1c +.SH "Detailed Description" +.PP +Initialization of a random genotype built by the default constructor of the \fBFlowShop\fP class. +.PP +Definition at line 22 of file FlowShopInit.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "FlowShopInit::FlowShopInit (unsigned int _N)" +.PP +Ctor. +.PP +\fBParameters:\fP +.RS 4 +\fI_N\fP the number of jobs to schedule +.RE +.PP + +.PP +Definition at line 16 of file FlowShopInit.cpp. +.SH "Member Function Documentation" +.PP +.SS "void FlowShopInit::operator() (\fBFlowShop\fP & _flowshop)" +.PP +builds a random genotype +.PP +\fBParameters:\fP +.RS 4 +\fI_flowshop\fP a genotype that has been default-constructed +.RE +.PP + +.PP +Definition at line 20 of file FlowShopInit.cpp. +.PP +References MOEO< MOEOObjectiveVector, MOEOFitness, MOEODiversity >::invalidate(), N, eoRng::uniform(), and moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType >::value(). + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/FlowShopObjectiveVectorTraits.3 b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/FlowShopObjectiveVectorTraits.3 new file mode 100644 index 000000000..c0037a4a5 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/FlowShopObjectiveVectorTraits.3 @@ -0,0 +1,65 @@ +.TH "FlowShopObjectiveVectorTraits" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-MOEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +FlowShopObjectiveVectorTraits \- Definition of the objective vector traits for multi-objective flow-shop problems. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoeoObjectiveVectorTraits\fP. +.PP +.SS "Static Public Member Functions" + +.in +1c +.ti -1c +.RI "static bool \fBminimizing\fP (int _i)" +.br +.RI "\fIReturns true if the _ith objective have to be minimzed. \fP" +.ti -1c +.RI "static bool \fBmaximizing\fP (int _i)" +.br +.RI "\fIReturns true if the _ith objective have to be maximzed. \fP" +.ti -1c +.RI "static unsigned int \fBnObjectives\fP ()" +.br +.RI "\fIReturns the number of objectives. \fP" +.in -1c +.SH "Detailed Description" +.PP +Definition of the objective vector traits for multi-objective flow-shop problems. +.PP +Definition at line 21 of file FlowShopObjectiveVectorTraits.h. +.SH "Member Function Documentation" +.PP +.SS "bool FlowShopObjectiveVectorTraits::minimizing (int _i)\fC [static]\fP" +.PP +Returns true if the _ith objective have to be minimzed. +.PP +\fBParameters:\fP +.RS 4 +\fI_i\fP index of the objective +.RE +.PP + +.PP +Definition at line 16 of file FlowShopObjectiveVectorTraits.cpp. +.SS "bool FlowShopObjectiveVectorTraits::maximizing (int _i)\fC [static]\fP" +.PP +Returns true if the _ith objective have to be maximzed. +.PP +\fBParameters:\fP +.RS 4 +\fI_i\fP index of the objective +.RE +.PP + +.PP +Definition at line 22 of file FlowShopObjectiveVectorTraits.cpp. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/FlowShopOpCrossoverQuad.3 b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/FlowShopOpCrossoverQuad.3 new file mode 100644 index 000000000..145fb7989 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/FlowShopOpCrossoverQuad.3 @@ -0,0 +1,85 @@ +.TH "FlowShopOpCrossoverQuad" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-MOEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +FlowShopOpCrossoverQuad \- Quadratic crossover operator for flow-shop (modify the both genotypes). + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoQuadOp< FlowShop >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "std::string \fBclassName\fP () const " +.br +.RI "\fIthe class name (used to display statistics) \fP" +.ti -1c +.RI "bool \fBoperator()\fP (\fBFlowShop\fP &_flowshop1, \fBFlowShop\fP &_flowshop2)" +.br +.RI "\fIeoQuad crossover - _flowshop1 and _flowshop2 are the (future) offspring, i.e. \fP" +.in -1c +.SS "Private Member Functions" + +.in +1c +.ti -1c +.RI "\fBFlowShop\fP \fBgenerateOffspring\fP (const \fBFlowShop\fP &_parent1, const \fBFlowShop\fP &_parent2, unsigned int _point1, unsigned int _point2)" +.br +.RI "\fIgeneration of an offspring by a 2 points crossover \fP" +.in -1c +.SH "Detailed Description" +.PP +Quadratic crossover operator for flow-shop (modify the both genotypes). +.PP +Definition at line 22 of file FlowShopOpCrossoverQuad.h. +.SH "Member Function Documentation" +.PP +.SS "bool FlowShopOpCrossoverQuad::operator() (\fBFlowShop\fP & _flowshop1, \fBFlowShop\fP & _flowshop2)\fC [virtual]\fP" +.PP +eoQuad crossover - _flowshop1 and _flowshop2 are the (future) offspring, i.e. +.PP +_copies_ of the parents +.PP +\fBParameters:\fP +.RS 4 +\fI_flowshop1\fP the first parent +.br +\fI_flowshop2\fP the second parent +.RE +.PP + +.PP +Implements \fBeoBF< FlowShop &, FlowShop &, bool >\fP. +.PP +Definition at line 22 of file FlowShopOpCrossoverQuad.cpp. +.PP +References generateOffspring(), eoRng::random(), and moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType >::value(). +.SS "\fBFlowShop\fP FlowShopOpCrossoverQuad::generateOffspring (const \fBFlowShop\fP & _parent1, const \fBFlowShop\fP & _parent2, unsigned int _point1, unsigned int _point2)\fC [private]\fP" +.PP +generation of an offspring by a 2 points crossover +.PP +\fBParameters:\fP +.RS 4 +\fI_parent1\fP the first parent +.br +\fI_parent2\fP the second parent +.br +\fI_point1\fP the first point +.br +\fI_point2\fP the second point +.RE +.PP + +.PP +Definition at line 54 of file FlowShopOpCrossoverQuad.cpp. +.PP +Referenced by operator()(). + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/FlowShopOpMutationExchange.3 b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/FlowShopOpMutationExchange.3 new file mode 100644 index 000000000..b91193066 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/FlowShopOpMutationExchange.3 @@ -0,0 +1,53 @@ +.TH "FlowShopOpMutationExchange" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-MOEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +FlowShopOpMutationExchange \- Exchange mutation operator for the flow-shop. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoMonOp< FlowShop >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "std::string \fBclassName\fP () const " +.br +.RI "\fIthe class name (used to display statistics) \fP" +.ti -1c +.RI "bool \fBoperator()\fP (\fBFlowShop\fP &_flowshop)" +.br +.RI "\fImodifies the parent with an exchange mutation \fP" +.in -1c +.SH "Detailed Description" +.PP +Exchange mutation operator for the flow-shop. +.PP +Definition at line 22 of file FlowShopOpMutationExchange.h. +.SH "Member Function Documentation" +.PP +.SS "bool FlowShopOpMutationExchange::operator() (\fBFlowShop\fP & _flowshop)\fC [virtual]\fP" +.PP +modifies the parent with an exchange mutation +.PP +\fBParameters:\fP +.RS 4 +\fI_flowshop\fP the parent genotype (will be modified) +.RE +.PP + +.PP +Implements \fBeoUF< FlowShop &, bool >\fP. +.PP +Definition at line 22 of file FlowShopOpMutationExchange.cpp. +.PP +References eoRng::random(), and moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType >::value(). + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/FlowShopOpMutationShift.3 b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/FlowShopOpMutationShift.3 new file mode 100644 index 000000000..0c9fe814d --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/FlowShopOpMutationShift.3 @@ -0,0 +1,53 @@ +.TH "FlowShopOpMutationShift" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-MOEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +FlowShopOpMutationShift \- Shift mutation operator for flow-shop. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoMonOp< FlowShop >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "std::string \fBclassName\fP () const " +.br +.RI "\fIthe class name (used to display statistics) \fP" +.ti -1c +.RI "bool \fBoperator()\fP (\fBFlowShop\fP &_flowshop)" +.br +.RI "\fImodifies the parent with a shift mutation \fP" +.in -1c +.SH "Detailed Description" +.PP +Shift mutation operator for flow-shop. +.PP +Definition at line 22 of file FlowShopOpMutationShift.h. +.SH "Member Function Documentation" +.PP +.SS "bool FlowShopOpMutationShift::operator() (\fBFlowShop\fP & _flowshop)\fC [virtual]\fP" +.PP +modifies the parent with a shift mutation +.PP +\fBParameters:\fP +.RS 4 +\fI_flowshop\fP the parent genotype (will be modified) +.RE +.PP + +.PP +Implements \fBeoUF< FlowShop &, bool >\fP. +.PP +Definition at line 22 of file FlowShopOpMutationShift.cpp. +.PP +References eoRng::random(), and moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType >::value(). + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/Sch1.3 b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/Sch1.3 new file mode 100644 index 000000000..662313cd3 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/Sch1.3 @@ -0,0 +1,24 @@ +.TH "Sch1" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-MOEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Sch1 \- +.SH SYNOPSIS +.br +.PP +Inherits \fBmoeoRealVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity >< moeoRealObjectiveVector< Sch1ObjectiveVectorTraits >, double, double >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBSch1\fP ()" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 44 of file Sch1.cpp. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/Sch1Eval.3 b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/Sch1Eval.3 new file mode 100644 index 000000000..cec0251f9 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/Sch1Eval.3 @@ -0,0 +1,24 @@ +.TH "Sch1Eval" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-MOEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Sch1Eval \- +.SH SYNOPSIS +.br +.PP +Inherits \fBmoeoEvalFunc< Sch1 >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "void \fBoperator()\fP (\fBSch1\fP &_sch1)" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 52 of file Sch1.cpp. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/Sch1ObjectiveVectorTraits.3 b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/Sch1ObjectiveVectorTraits.3 new file mode 100644 index 000000000..800dfaad9 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/Sch1ObjectiveVectorTraits.3 @@ -0,0 +1,31 @@ +.TH "Sch1ObjectiveVectorTraits" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-MOEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Sch1ObjectiveVectorTraits \- +.SH SYNOPSIS +.br +.PP +Inherits \fBmoeoObjectiveVectorTraits\fP. +.PP +.SS "Static Public Member Functions" + +.in +1c +.ti -1c +.RI "static bool \fBminimizing\fP (int i)" +.br +.ti -1c +.RI "static bool \fBmaximizing\fP (int i)" +.br +.ti -1c +.RI "static unsigned int \fBnObjectives\fP ()" +.br +.RI "\fIReturns the number of objectives. \fP" +.in -1c +.SH "Detailed Description" +.PP +Definition at line 21 of file Sch1.cpp. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/moeoIBMOLS.3 b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/moeoIBMOLS.3 new file mode 100644 index 000000000..fb196da6b --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/moeoIBMOLS.3 @@ -0,0 +1,168 @@ +.TH "moeoIBMOLS" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-MOEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moeoIBMOLS \- Indicator-Based Multi-Objective Local Search (IBMOLS) as described in Basseur M., Burke K. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoeoLS< MOEOT, eoPop< MOEOT > & >\fP. +.PP +.SS "Public Types" + +.in +1c +.ti -1c +.RI "typedef MOEOT::ObjectiveVector \fBObjectiveVector\fP" +.br +.RI "\fIThe type of objective vector. \fP" +.in -1c +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoeoIBMOLS\fP (moMoveInit< Move > &_moveInit, moNextMove< Move > &_nextMove, \fBeoEvalFunc\fP< MOEOT > &_eval, \fBmoeoMoveIncrEval\fP< Move > &_moveIncrEval, \fBmoeoBinaryIndicatorBasedFitnessAssignment\fP< MOEOT > &_fitnessAssignment, \fBeoContinue\fP< MOEOT > &_continuator)" +.br +.RI "\fICtor. \fP" +.ti -1c +.RI "void \fBoperator()\fP (\fBeoPop\fP< MOEOT > &_pop, \fBmoeoArchive\fP< MOEOT > &_arch)" +.br +.RI "\fIApply the local search until a local archive does not change or another stopping criteria is met and update the archive _arch with new non-dominated solutions. \fP" +.in -1c +.SS "Private Member Functions" + +.in +1c +.ti -1c +.RI "void \fBoneStep\fP (\fBeoPop\fP< MOEOT > &_pop)" +.br +.RI "\fIApply one step of the local search to the population _pop. \fP" +.ti -1c +.RI "void \fBnew_oneStep\fP (\fBeoPop\fP< MOEOT > &_pop)" +.br +.RI "\fIApply one step of the local search to the population _pop. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "moMoveInit< Move > & \fBmoveInit\fP" +.br +.RI "\fIthe move initializer \fP" +.ti -1c +.RI "moNextMove< Move > & \fBnextMove\fP" +.br +.RI "\fIthe neighborhood explorer \fP" +.ti -1c +.RI "\fBeoEvalFunc\fP< MOEOT > & \fBeval\fP" +.br +.RI "\fIthe full evaluation \fP" +.ti -1c +.RI "\fBmoeoMoveIncrEval\fP< Move > & \fBmoveIncrEval\fP" +.br +.RI "\fIthe incremental evaluation \fP" +.ti -1c +.RI "\fBmoeoBinaryIndicatorBasedFitnessAssignment\fP< MOEOT > & \fBfitnessAssignment\fP" +.br +.RI "\fIthe fitness assignment strategy \fP" +.ti -1c +.RI "\fBeoContinue\fP< MOEOT > & \fBcontinuator\fP" +.br +.RI "\fIthe stopping criteria \fP" +.in -1c +.SS "Classes" + +.in +1c +.ti -1c +.RI "class \fBOneObjectiveComparator\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moeoIBMOLS< MOEOT, Move >" +Indicator-Based Multi-Objective Local Search (IBMOLS) as described in Basseur M., Burke K. + +: 'Indicator-Based Multi-Objective Local Search' (2007). +.PP +Definition at line 33 of file moeoIBMOLS.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBmoeoIBMOLS\fP< MOEOT, Move >::\fBmoeoIBMOLS\fP (moMoveInit< Move > & _moveInit, moNextMove< Move > & _nextMove, \fBeoEvalFunc\fP< MOEOT > & _eval, \fBmoeoMoveIncrEval\fP< Move > & _moveIncrEval, \fBmoeoBinaryIndicatorBasedFitnessAssignment\fP< MOEOT > & _fitnessAssignment, \fBeoContinue\fP< MOEOT > & _continuator)\fC [inline]\fP" +.PP +Ctor. +.PP +\fBParameters:\fP +.RS 4 +\fI_moveInit\fP the move initializer +.br +\fI_nextMove\fP the neighborhood explorer +.br +\fI_eval\fP the full evaluation +.br +\fI_moveIncrEval\fP the incremental evaluation +.br +\fI_fitnessAssignment\fP the fitness assignment strategy +.br +\fI_continuator\fP the stopping criteria +.RE +.PP + +.PP +Definition at line 50 of file moeoIBMOLS.h. +.SH "Member Function Documentation" +.PP +.SS "template void \fBmoeoIBMOLS\fP< MOEOT, Move >::operator() (\fBeoPop\fP< MOEOT > & _pop, \fBmoeoArchive\fP< MOEOT > & _arch)\fC [inline, virtual]\fP" +.PP +Apply the local search until a local archive does not change or another stopping criteria is met and update the archive _arch with new non-dominated solutions. +.PP +\fBParameters:\fP +.RS 4 +\fI_pop\fP the initial population +.br +\fI_arch\fP the (updated) archive +.RE +.PP + +.PP +Implements \fBeoBF< eoPop< MOEOT > &, moeoArchive< MOEOT > &, void >\fP. +.PP +Definition at line 73 of file moeoIBMOLS.h. +.PP +References moeoIBMOLS< MOEOT, Move >::continuator, moeoArchive< MOEOT >::equals(), moeoIBMOLS< MOEOT, Move >::fitnessAssignment, moeoIBMOLS< MOEOT, Move >::oneStep(), and moeoArchive< MOEOT >::update(). +.SS "template void \fBmoeoIBMOLS\fP< MOEOT, Move >::oneStep (\fBeoPop\fP< MOEOT > & _pop)\fC [inline, private]\fP" +.PP +Apply one step of the local search to the population _pop. +.PP +\fBParameters:\fP +.RS 4 +\fI_pop\fP the population +.RE +.PP + +.PP +Definition at line 120 of file moeoIBMOLS.h. +.PP +References moeoIBMOLS< MOEOT, Move >::continuator, moeoIBMOLS< MOEOT, Move >::fitnessAssignment, moeoIBMOLS< MOEOT, Move >::moveIncrEval, moeoIBMOLS< MOEOT, Move >::moveInit, and moeoIBMOLS< MOEOT, Move >::nextMove. +.PP +Referenced by moeoIBMOLS< MOEOT, Move >::operator()(). +.SS "template void \fBmoeoIBMOLS\fP< MOEOT, Move >::new_oneStep (\fBeoPop\fP< MOEOT > & _pop)\fC [inline, private]\fP" +.PP +Apply one step of the local search to the population _pop. +.PP +\fBParameters:\fP +.RS 4 +\fI_pop\fP the population +.RE +.PP + +.PP +Definition at line 304 of file moeoIBMOLS.h. +.PP +References moeoIBMOLS< MOEOT, Move >::continuator, moeoIBMOLS< MOEOT, Move >::fitnessAssignment, moeoIBMOLS< MOEOT, Move >::moveIncrEval, moeoIBMOLS< MOEOT, Move >::moveInit, and moeoIBMOLS< MOEOT, Move >::nextMove. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/moeoIBMOLS_OneObjectiveComparator.3 b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/moeoIBMOLS_OneObjectiveComparator.3 new file mode 100644 index 000000000..1323b146e --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/moeoIBMOLS_OneObjectiveComparator.3 @@ -0,0 +1,38 @@ +.TH "moeoIBMOLS::OneObjectiveComparator" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-MOEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moeoIBMOLS::OneObjectiveComparator \- +.SH SYNOPSIS +.br +.PP +Inherits \fBmoeoComparator< MOEOT >< MOEOT >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBOneObjectiveComparator\fP (unsigned int _obj)" +.br +.ti -1c +.RI "const bool \fBoperator()\fP (const MOEOT &_moeo1, const MOEOT &_moeo2)" +.br +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "unsigned int \fBobj\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moeoIBMOLS< MOEOT, Move >::OneObjectiveComparator" + +.PP +Definition at line 462 of file moeoIBMOLS.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/moeoIteratedIBMOLS.3 b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/moeoIteratedIBMOLS.3 new file mode 100644 index 000000000..4ccf4fad5 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/moeoIteratedIBMOLS.3 @@ -0,0 +1,151 @@ +.TH "moeoIteratedIBMOLS" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-MOEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moeoIteratedIBMOLS \- Iterated version of IBMOLS as described in Basseur M., Burke K. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoeoLS< MOEOT, eoPop< MOEOT > & >\fP. +.PP +.SS "Public Types" + +.in +1c +.ti -1c +.RI "typedef MOEOT::ObjectiveVector \fBObjectiveVector\fP" +.br +.RI "\fIThe type of objective vector. \fP" +.in -1c +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoeoIteratedIBMOLS\fP (moMoveInit< Move > &_moveInit, moNextMove< Move > &_nextMove, \fBeoEvalFunc\fP< MOEOT > &_eval, \fBmoeoMoveIncrEval\fP< Move > &_moveIncrEval, \fBmoeoBinaryIndicatorBasedFitnessAssignment\fP< MOEOT > &_fitnessAssignment, \fBeoContinue\fP< MOEOT > &_continuator, \fBeoMonOp\fP< MOEOT > &_monOp, \fBeoMonOp\fP< MOEOT > &_randomMonOp, unsigned int _nNoiseIterations=1)" +.br +.RI "\fICtor. \fP" +.ti -1c +.RI "void \fBoperator()\fP (\fBeoPop\fP< MOEOT > &_pop, \fBmoeoArchive\fP< MOEOT > &_arch)" +.br +.RI "\fIApply the local search iteratively until the stopping criteria is met. \fP" +.in -1c +.SS "Private Member Functions" + +.in +1c +.ti -1c +.RI "void \fBgenerateNewSolutions\fP (\fBeoPop\fP< MOEOT > &_pop, const \fBmoeoArchive\fP< MOEOT > &_arch)" +.br +.RI "\fICreates new population randomly initialized and/or initialized from the archive _arch. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBmoeoIBMOLS\fP< MOEOT, Move > \fBibmols\fP" +.br +.RI "\fIthe local search to iterate \fP" +.ti -1c +.RI "\fBeoEvalFunc\fP< MOEOT > & \fBeval\fP" +.br +.RI "\fIthe full evaluation \fP" +.ti -1c +.RI "\fBeoContinue\fP< MOEOT > & \fBcontinuator\fP" +.br +.RI "\fIthe stopping criteria \fP" +.ti -1c +.RI "\fBeoMonOp\fP< MOEOT > & \fBmonOp\fP" +.br +.RI "\fIthe monary operator \fP" +.ti -1c +.RI "\fBeoMonOp\fP< MOEOT > & \fBrandomMonOp\fP" +.br +.RI "\fIthe random monary operator (or random initializer) \fP" +.ti -1c +.RI "unsigned int \fBnNoiseIterations\fP" +.br +.RI "\fIthe number of iterations to apply the random noise \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moeoIteratedIBMOLS< MOEOT, Move >" +Iterated version of IBMOLS as described in Basseur M., Burke K. + +: 'Indicator-Based Multi-Objective Local Search' (2007). +.PP +Definition at line 41 of file moeoIteratedIBMOLS.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBmoeoIteratedIBMOLS\fP< MOEOT, Move >::\fBmoeoIteratedIBMOLS\fP (moMoveInit< Move > & _moveInit, moNextMove< Move > & _nextMove, \fBeoEvalFunc\fP< MOEOT > & _eval, \fBmoeoMoveIncrEval\fP< Move > & _moveIncrEval, \fBmoeoBinaryIndicatorBasedFitnessAssignment\fP< MOEOT > & _fitnessAssignment, \fBeoContinue\fP< MOEOT > & _continuator, \fBeoMonOp\fP< MOEOT > & _monOp, \fBeoMonOp\fP< MOEOT > & _randomMonOp, unsigned int _nNoiseIterations = \fC1\fP)\fC [inline]\fP" +.PP +Ctor. +.PP +\fBParameters:\fP +.RS 4 +\fI_moveInit\fP the move initializer +.br +\fI_nextMove\fP the neighborhood explorer +.br +\fI_eval\fP the full evaluation +.br +\fI_moveIncrEval\fP the incremental evaluation +.br +\fI_fitnessAssignment\fP the fitness assignment strategy +.br +\fI_continuator\fP the stopping criteria +.br +\fI_monOp\fP the monary operator +.br +\fI_randomMonOp\fP the random monary operator (or random initializer) +.br +\fI_nNoiseIterations\fP the number of iterations to apply the random noise +.RE +.PP + +.PP +Definition at line 61 of file moeoIteratedIBMOLS.h. +.SH "Member Function Documentation" +.PP +.SS "template void \fBmoeoIteratedIBMOLS\fP< MOEOT, Move >::operator() (\fBeoPop\fP< MOEOT > & _pop, \fBmoeoArchive\fP< MOEOT > & _arch)\fC [inline, virtual]\fP" +.PP +Apply the local search iteratively until the stopping criteria is met. +.PP +\fBParameters:\fP +.RS 4 +\fI_pop\fP the initial population +.br +\fI_arch\fP the (updated) archive +.RE +.PP + +.PP +Implements \fBeoBF< eoPop< MOEOT > &, moeoArchive< MOEOT > &, void >\fP. +.PP +Definition at line 86 of file moeoIteratedIBMOLS.h. +.PP +References moeoIteratedIBMOLS< MOEOT, Move >::continuator, moeoIteratedIBMOLS< MOEOT, Move >::generateNewSolutions(), moeoIteratedIBMOLS< MOEOT, Move >::ibmols, and moeoArchive< MOEOT >::update(). +.SS "template void \fBmoeoIteratedIBMOLS\fP< MOEOT, Move >::generateNewSolutions (\fBeoPop\fP< MOEOT > & _pop, const \fBmoeoArchive\fP< MOEOT > & _arch)\fC [inline, private]\fP" +.PP +Creates new population randomly initialized and/or initialized from the archive _arch. +.PP +\fBParameters:\fP +.RS 4 +\fI_pop\fP the output population +.br +\fI_arch\fP the archive +.RE +.PP + +.PP +Definition at line 121 of file moeoIteratedIBMOLS.h. +.PP +References moeoIteratedIBMOLS< MOEOT, Move >::eval, eoPop< EOT >::invalidate(), moeoIteratedIBMOLS< MOEOT, Move >::monOp, moeoIteratedIBMOLS< MOEOT, Move >::nNoiseIterations, and moeoIteratedIBMOLS< MOEOT, Move >::randomMonOp. +.PP +Referenced by moeoIteratedIBMOLS< MOEOT, Move >::operator()(). + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/moeoMoveIncrEval.3 b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/moeoMoveIncrEval.3 new file mode 100644 index 000000000..3bbbf9481 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/moeoMoveIncrEval.3 @@ -0,0 +1,21 @@ +.TH "moeoMoveIncrEval" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-MOEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moeoMoveIncrEval \- +.SH SYNOPSIS +.br +.PP +Inherits \fBeoBF< A1, A2, R >< const const Move &, Move::EOType &, Move::EOType::ObjectiveVector >\fP. +.PP +.SH "Detailed Description" +.PP + +.SS "template class moeoMoveIncrEval< Move >" + +.PP +Definition at line 9 of file moeoMoveIncrEval.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/moeoReferencePointIndicatorBasedFitnessAssignment.3 b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/moeoReferencePointIndicatorBasedFitnessAssignment.3 new file mode 100644 index 000000000..7b8c8dafc --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/moeoReferencePointIndicatorBasedFitnessAssignment.3 @@ -0,0 +1,155 @@ +.TH "moeoReferencePointIndicatorBasedFitnessAssignment" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-MOEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moeoReferencePointIndicatorBasedFitnessAssignment \- Fitness assignment sheme based a Reference Point and a Quality Indicator. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoeoFitnessAssignment< MOEOT >< MOEOT >\fP. +.PP +.SS "Public Types" + +.in +1c +.ti -1c +.RI "typedef MOEOT::ObjectiveVector \fBObjectiveVector\fP" +.br +.RI "\fIThe type of objective vector. \fP" +.in -1c +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoeoReferencePointIndicatorBasedFitnessAssignment\fP (\fBObjectiveVector\fP &_refPoint, \fBmoeoNormalizedSolutionVsSolutionBinaryMetric\fP< \fBObjectiveVector\fP, double > &_metric)" +.br +.RI "\fICtor. \fP" +.ti -1c +.RI "void \fBoperator()\fP (\fBeoPop\fP< MOEOT > &_pop)" +.br +.RI "\fISets the fitness values for every solution contained in the population _pop. \fP" +.ti -1c +.RI "void \fBupdateByDeleting\fP (\fBeoPop\fP< MOEOT > &_pop, \fBObjectiveVector\fP &_objVec)" +.br +.RI "\fIUpdates the fitness values of the whole population _pop by taking the deletion of the objective vector _objVec into account. \fP" +.in -1c +.SS "Protected Member Functions" + +.in +1c +.ti -1c +.RI "void \fBsetup\fP (const \fBeoPop\fP< MOEOT > &_pop)" +.br +.RI "\fISets the bounds for every objective using the min and the max value for every objective vector of _pop (and the reference point). \fP" +.ti -1c +.RI "void \fBsetFitnesses\fP (\fBeoPop\fP< MOEOT > &_pop)" +.br +.RI "\fISets the fitness of every individual contained in the population _pop. \fP" +.in -1c +.SS "Protected Attributes" + +.in +1c +.ti -1c +.RI "\fBObjectiveVector\fP & \fBrefPoint\fP" +.br +.RI "\fIthe reference point \fP" +.ti -1c +.RI "\fBmoeoNormalizedSolutionVsSolutionBinaryMetric\fP< \fBObjectiveVector\fP, double > & \fBmetric\fP" +.br +.RI "\fIthe quality indicator \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >" +Fitness assignment sheme based a Reference Point and a Quality Indicator. +.PP +Definition at line 25 of file moeoReferencePointIndicatorBasedFitnessAssignment.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBmoeoReferencePointIndicatorBasedFitnessAssignment\fP< MOEOT >::\fBmoeoReferencePointIndicatorBasedFitnessAssignment\fP (\fBObjectiveVector\fP & _refPoint, \fBmoeoNormalizedSolutionVsSolutionBinaryMetric\fP< \fBObjectiveVector\fP, double > & _metric)\fC [inline]\fP" +.PP +Ctor. +.PP +\fBParameters:\fP +.RS 4 +\fI_refPoint\fP the reference point +.br +\fI_metric\fP the quality indicator +.RE +.PP + +.PP +Definition at line 37 of file moeoReferencePointIndicatorBasedFitnessAssignment.h. +.SH "Member Function Documentation" +.PP +.SS "template void \fBmoeoReferencePointIndicatorBasedFitnessAssignment\fP< MOEOT >::operator() (\fBeoPop\fP< MOEOT > & _pop)\fC [inline, virtual]\fP" +.PP +Sets the fitness values for every solution contained in the population _pop. +.PP +\fBParameters:\fP +.RS 4 +\fI_pop\fP the population +.RE +.PP + +.PP +Implements \fBeoUF< eoPop< MOEOT > &, void >\fP. +.PP +Definition at line 46 of file moeoReferencePointIndicatorBasedFitnessAssignment.h. +.PP +References moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >::setFitnesses(), and moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >::setup(). +.SS "template void \fBmoeoReferencePointIndicatorBasedFitnessAssignment\fP< MOEOT >::updateByDeleting (\fBeoPop\fP< MOEOT > & _pop, \fBObjectiveVector\fP & _objVec)\fC [inline, virtual]\fP" +.PP +Updates the fitness values of the whole population _pop by taking the deletion of the objective vector _objVec into account. +.PP +\fBParameters:\fP +.RS 4 +\fI_pop\fP the population +.br +\fI_objVec\fP the objective vector +.RE +.PP + +.PP +Implements \fBmoeoFitnessAssignment< MOEOT >\fP. +.PP +Definition at line 60 of file moeoReferencePointIndicatorBasedFitnessAssignment.h. +.SS "template void \fBmoeoReferencePointIndicatorBasedFitnessAssignment\fP< MOEOT >::setup (const \fBeoPop\fP< MOEOT > & _pop)\fC [inline, protected]\fP" +.PP +Sets the bounds for every objective using the min and the max value for every objective vector of _pop (and the reference point). +.PP +\fBParameters:\fP +.RS 4 +\fI_pop\fP the population +.RE +.PP + +.PP +Definition at line 78 of file moeoReferencePointIndicatorBasedFitnessAssignment.h. +.PP +References moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >::metric, moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >::refPoint, and moeoNormalizedSolutionVsSolutionBinaryMetric< ObjectiveVector, R >::setup(). +.PP +Referenced by moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >::operator()(). +.SS "template void \fBmoeoReferencePointIndicatorBasedFitnessAssignment\fP< MOEOT >::setFitnesses (\fBeoPop\fP< MOEOT > & _pop)\fC [inline, protected]\fP" +.PP +Sets the fitness of every individual contained in the population _pop. +.PP +\fBParameters:\fP +.RS 4 +\fI_pop\fP the population +.RE +.PP + +.PP +Definition at line 99 of file moeoReferencePointIndicatorBasedFitnessAssignment.h. +.PP +References moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >::metric, and moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >::refPoint. +.PP +Referenced by moeoReferencePointIndicatorBasedFitnessAssignment< MOEOT >::operator()(). + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/peoEA.3 b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/peoEA.3 new file mode 100644 index 000000000..8025ecfaa --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/man/man3/peoEA.3 @@ -0,0 +1,107 @@ +.TH "peoEA" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-MOEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoEA \- The \fBpeoEA\fP class offers an elementary evolutionary algorithm implementation. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBpeoEA\fP (\fBeoContinue\fP< EOT > &__cont, peoPopEval< EOT > &__pop_eval, \fBeoSelect\fP< EOT > &__select, peoTransform< EOT > &__trans, \fBeoReplacement\fP< EOT > &__replace)" +.br +.RI "\fIConstructor for the evolutionary algorithm object - several basic parameters have to be specified, allowing for different levels of parallelism. \fP" +.ti -1c +.RI "void \fBrun\fP ()" +.br +.RI "\fIEvolutionary algorithm function - a side effect of the fact that the class is derived from the \fBRunner\fP class, thus requiring the existence of a \fIrun\fP function, the algorithm being executed on a distinct thread. \fP" +.ti -1c +.RI "void \fBoperator()\fP (\fBeoPop\fP< EOT > &__pop)" +.br +.RI "\fI\fBFunction\fP operator for specifying the population to be associated with the algorithm. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBeoContinue\fP< EOT > & \fBcont\fP" +.br +.ti -1c +.RI "peoPopEval< EOT > & \fBpop_eval\fP" +.br +.ti -1c +.RI "\fBeoSelect\fP< EOT > & \fBselect\fP" +.br +.ti -1c +.RI "peoTransform< EOT > & \fBtrans\fP" +.br +.ti -1c +.RI "\fBeoReplacement\fP< EOT > & \fBreplace\fP" +.br +.ti -1c +.RI "\fBeoPop\fP< EOT > * \fBpop\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class peoEA< EOT >" +The \fBpeoEA\fP class offers an elementary evolutionary algorithm implementation. + +In addition, as compared with the algorithms provided by the \fBEO\fP framework, the \fBpeoEA\fP class has the underlying necessary structure for including, for example, parallel evaluation and parallel transformation operators, migration operators etc. Although there is no restriction on using the algorithms provided by the \fBEO\fP framework, the drawback resides in the fact that the \fBEO\fP implementation is exclusively sequential and, in consequence, no parallelism is provided. A simple example for constructing a \fBpeoEA\fP object: +.PP +... eoPop< EOT > population( POP_SIZE, popInitializer ); // creation of a population with POP_SIZE individuals - the popInitializer is a functor to be called for each individual eoGenContinue< EOT > eaCont( NUM_GEN ); // number of generations for the evolutionary algorithm eoCheckPoint< EOT > eaCheckpointContinue( eaCont ); // checkpoint incorporating the continuation criterion - startpoint for adding other checkpoint objects peoSeqPopEval< EOT > eaPopEval( evalFunction ); // sequential evaluation functor wrapper - evalFunction represents the actual evaluation functor eoRankingSelect< EOT > selectionStrategy; // selection strategy for creating the offspring population - a simple ranking selection in this case eoSelectNumber< EOT > eaSelect( selectionStrategy, POP_SIZE ); // the number of individuals to be selected for creating the offspring population eoRankingSelect< EOT > selectionStrategy; // selection strategy for creating the offspring population - a simple ranking selection in this case eoSGATransform< EOT > transform( crossover, CROSS_RATE, mutation, MUT_RATE ); // transformation operator - crossover and mutation operators with their associated probabilities peoSeqTransform< EOT > eaTransform( transform ); // ParadisEO specific sequential operator - a parallel version may be specified in the same manner eoPlusReplacement< EOT > eaReplace; // replacement strategy - for integrating the offspring resulting individuals in the initial population peoEA< EOT > eaAlg( eaCheckpointContinue, eaPopEval, eaSelect, eaTransform, eaReplace ); // ParadisEO evolutionary algorithm integrating the above defined objects eaAlg( population ); // specifying the initial population for the algorithm ... +.PP +Definition at line 54 of file pmoeoEA.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBpeoEA\fP< EOT >::\fBpeoEA\fP (\fBeoContinue\fP< EOT > & __cont, peoPopEval< EOT > & __pop_eval, \fBeoSelect\fP< EOT > & __select, peoTransform< EOT > & __trans, \fBeoReplacement\fP< EOT > & __replace)" +.PP +Constructor for the evolutionary algorithm object - several basic parameters have to be specified, allowing for different levels of parallelism. +.PP +Depending on the requirements, a sequential or a parallel evaluation operator may be specified or, in the same manner, a sequential or a parallel transformation operator may be given as parameter. Out of the box objects may be provided, from the \fBEO\fP package, for example, or custom defined ones may be specified, provided that they are derived from the correct base classes. +.PP +\fBParameters:\fP +.RS 4 +\fIeoContinue<\fP EOT >& __cont - continuation criterion specifying whether the algorithm should continue or not; +.br +\fIpeoPopEval<\fP EOT >& __pop_eval - evaluation operator; it allows the specification of parallel evaluation operators, aggregate evaluation functions, etc.; +.br +\fIeoSelect<\fP EOT >& __select - selection strategy to be applied for constructing a list of offspring individuals; +.br +\fIpeoTransform<\fP EOT >& __trans - transformation operator, i.e. crossover and mutation; allows for sequential or parallel transform; +.br +\fIeoReplacement<\fP EOT >& __replace - replacement strategy for integrating the offspring individuals in the initial population; +.RE +.PP + +.PP +Definition at line 98 of file pmoeoEA.h. +.PP +References peoEA< EOT >::pop_eval, and peoEA< EOT >::trans. +.SH "Member Function Documentation" +.PP +.SS "template void \fBpeoEA\fP< EOT >::operator() (\fBeoPop\fP< EOT > & __pop)" +.PP +\fBFunction\fP operator for specifying the population to be associated with the algorithm. +.PP +\fBParameters:\fP +.RS 4 +\fIeoPop<\fP EOT >& __pop - initial population of the algorithm, to be iteratively evolved; +.RE +.PP + +.PP +Definition at line 114 of file pmoeoEA.h. +.PP +References peoEA< EOT >::pop. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-MOEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/moeo.doxyfile.cmake b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/moeo.doxyfile.cmake new file mode 100644 index 000000000..3f56ae1a2 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/doc/moeo.doxyfile.cmake @@ -0,0 +1,237 @@ +# Doxyfile 1.5.1 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +PROJECT_NAME = @PACKAGE_NAME@ +PROJECT_NUMBER = @PACKAGE_VERSION@ +OUTPUT_DIRECTORY = @CMAKE_BINARY_DIR@/doc +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +USE_WINDOWS_ENCODING = NO +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = NO +STRIP_FROM_PATH = @CMAKE_SOURCE_DIR@ +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = YES +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = NO +INHERIT_DOCS = YES +SEPARATE_MEMBER_PAGES = NO +TAB_SIZE = 8 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = NO +OPTIMIZE_OUTPUT_JAVA = NO +BUILTIN_STL_SUPPORT = NO +DISTRIBUTE_GROUP_DOC = NO +SUBGROUPING = YES +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = NO +EXTRACT_PRIVATE = YES +EXTRACT_STATIC = YES +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = NO +HIDE_UNDOC_MEMBERS = YES +HIDE_UNDOC_CLASSES = YES +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = YES +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = NO +SORT_BRIEF_DOCS = NO +SORT_BY_SCOPE_NAME = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_DIRECTORIES = NO +FILE_VERSION_FILTER = +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = YES +WARNINGS = NO +WARN_IF_UNDOCUMENTED = NO +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = @CMAKE_SOURCE_DIR@ +FILE_PATTERNS = *.cpp \ + *.h \ + NEWS README +RECURSIVE = YES +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = * +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = YES +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = YES +REFERENCES_RELATION = YES +REFERENCES_LINK_SOURCE = YES +USE_HTAGS = NO +VERBATIM_HEADERS = YES +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = YES +COLS_IN_ALPHA_INDEX = 3 +IGNORE_PREFIX = moeo +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +BINARY_TOC = NO +TOC_EXPAND = NO +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = YES +TREEVIEW_WIDTH = 250 +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = YES +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = NO +USE_PDFLATEX = NO +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = YES +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = @EO_BIN_DIR@/doc/eo.doxytag=http://eodev.sourceforge.net/eo/doc/html +GENERATE_TAGFILE = @CMAKE_BINARY_DIR@/doc/moeo.doxytag +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = YES +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = NO +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = NO +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = NO +CALLER_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = png +DOT_PATH = +DOTFILE_DIRS = +MAX_DOT_GRAPH_WIDTH = 1024 +MAX_DOT_GRAPH_HEIGHT = 1024 +MAX_DOT_GRAPH_DEPTH = 0 +DOT_TRANSPARENT = NO +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = YES diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/moeo-conf.cmake b/branches/paradiseo-ix86-2.0/paradiseo-moeo/moeo-conf.cmake new file mode 100644 index 000000000..07ff1d182 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/moeo-conf.cmake @@ -0,0 +1,25 @@ + +###################################################################################### +###################################################################################### +### In this file, you can specify many CMake variables used to build paradisEO-MOEO. +###################################################################################### +###################################################################################### + + +###################################################################################### +### 1) OPTIONNAL +###################################################################################### + +# SET (MYVAR MYVALUE) + +###################################################################################### + + +##################################################################################### +### 2) OPTIONNAL - Overwrite subdirs +###################################################################################### + +# SUBDIRS(doc tutorial) + +###################################################################################### + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/CMakeLists.txt b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/CMakeLists.txt new file mode 100644 index 000000000..8ae14a0cd --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/CMakeLists.txt @@ -0,0 +1,73 @@ + +###################################################################################### +### 1) Include the sources +###################################################################################### + +INCLUDE_DIRECTORIES(${EO_SRC_DIR}) +INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}) + +###################################################################################### + + +###################################################################################### +### 2) Define your target(s): just the moeo lib here. +###################################################################################### + +SET(MOEO_LIB_OUTPUT_PATH ${ParadisEO-MOEO_BINARY_DIR}/lib) +SET(LIBRARY_OUTPUT_PATH ${MOEO_LIB_OUTPUT_PATH}) + +SET (MOEO_SOURCES core/moeoObjectiveVectorTraits.cpp) + +ADD_LIBRARY(moeo STATIC ${MOEO_SOURCES}) + +###################################################################################### + + +###################################################################################### +### 3) Optionnal: define your target(s)'s version: no effect for windows +###################################################################################### + +SET(MOEO_VERSION ${GLOBAL_VERSION}) +SET_TARGET_PROPERTIES(moeo PROPERTIES VERSION "${MOEO_VERSION}") +###################################################################################### + + +###################################################################################### +### 4) Link the librairies for your target(s) +###################################################################################### + +# No library required + +###################################################################################### + + +###################################################################################### +### 5) Windows advanced config - especially for Microsoft Visual Studio 8 +###################################################################################### + + IF(CMAKE_CXX_COMPILER MATCHES cl) + IF(NOT WITH_SHARED_LIBS) + IF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + SET(CMAKE_CXX_FLAGS "/nologo /W3 /Gy") + SET(CMAKE_CXX_FLAGS_DEBUG "/MTd /Z7 /Od") + SET(CMAKE_CXX_FLAGS_RELEASE "/MT /O2") + SET(CMAKE_CXX_FLAGS_MINSIZEREL "/MT /O2") + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MTd /Z7 /Od") + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:CONSOLE") + + ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + ENDIF(NOT WITH_SHARED_LIBS) + ENDIF(CMAKE_CXX_COMPILER MATCHES cl) +###################################################################################### + + +###################################################################################### +### 6) Where must cmake go now ? +###################################################################################### + +# nothing to be compiled in the subdirs + +###################################################################################### + + + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/algo/moeoAlgo.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/algo/moeoAlgo.h new file mode 100644 index 000000000..39b01f394 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/algo/moeoAlgo.h @@ -0,0 +1,47 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOALGO_H_ +#define MOEOALGO_H_ + +/** + * Abstract class for multi-objective algorithms. + */ +class moeoAlgo + {}; + +#endif /*MOEOALGO_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/algo/moeoCombinedLS.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/algo/moeoCombinedLS.h new file mode 100644 index 000000000..50b2fb258 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/algo/moeoCombinedLS.h @@ -0,0 +1,92 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOCOMBINEDLS_H_ +#define MOEOCOMBINEDLS_H_ + +#include +#include +#include + +/** + * This class allows to embed a set of local searches that are sequentially applied, + * and so working and updating the same archive of non-dominated solutions. + */ +template < class MOEOT, class Type > +class moeoCombinedLS : public moeoLS < MOEOT, Type > + { + public: + + /** + * Ctor + * @param _first_mols the first multi-objective local search to add + */ + moeoCombinedLS(moeoLS < MOEOT, Type > & _first_mols) + { + combinedLS.push_back (& _first_mols); + } + + /** + * Adds a new local search to combine + * @param _mols the multi-objective local search to add + */ + void add(moeoLS < MOEOT, Type > & _mols) + { + combinedLS.push_back(& _mols); + } + + /** + * Gives a new solution in order to explore the neigborhood. + * The new non-dominated solutions are added to the archive + * @param _type the object to apply the local search to + * @param _arch the archive of non-dominated solutions + */ + void operator () (Type _type, moeoArchive < MOEOT > & _arch) + { + for (unsigned int i=0; i operator()(_type, _arch); + } + + + private: + + /** the vector that contains the combined LS */ + std::vector< moeoLS < MOEOT, Type > * > combinedLS; + + }; + +#endif /*MOEOCOMBINEDLS_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/algo/moeoEA.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/algo/moeoEA.h new file mode 100644 index 000000000..9e6ba3e48 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/algo/moeoEA.h @@ -0,0 +1,51 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOEA_H_ +#define MOEOEA_H_ + +#include +#include + +/** + * Abstract class for multi-objective evolutionary algorithms. + */ +template < class MOEOT > +class moeoEA : public moeoAlgo, public eoAlgo < MOEOT > + {}; + +#endif /*MOEOEA_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/algo/moeoEasyEA.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/algo/moeoEasyEA.h new file mode 100755 index 000000000..20cb0c8b8 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/algo/moeoEasyEA.h @@ -0,0 +1,256 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef _MOEOEASYEA_H +#define _MOEOEASYEA_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/** + * An easy class to design multi-objective evolutionary algorithms. + */ +template < class MOEOT > +class moeoEasyEA: public moeoEA < MOEOT > + { + public: + + /** + * Ctor taking a breed and merge. + * @param _continuator the stopping criteria + * @param _eval the evaluation functions + * @param _breed the breeder + * @param _replace the replacement strategy + * @param _fitnessEval the fitness evaluation scheme + * @param _diversityEval the diversity evaluation scheme + * @param _evalFitAndDivBeforeSelection put this parameter to 'true' if you want to re-evalue the fitness and the diversity of the population before the selection process + */ + moeoEasyEA(eoContinue < MOEOT > & _continuator, eoEvalFunc < MOEOT > & _eval, eoBreed < MOEOT > & _breed, moeoReplacement < MOEOT > & _replace, + moeoFitnessAssignment < MOEOT > & _fitnessEval, moeoDiversityAssignment < MOEOT > & _diversityEval, bool _evalFitAndDivBeforeSelection = false) + : + continuator(_continuator), eval (_eval), loopEval(_eval), popEval(loopEval), selectTransform(dummySelect, dummyTransform), breed(_breed), mergeReduce(dummyMerge, dummyReduce), replace(_replace), + fitnessEval(_fitnessEval), diversityEval(_diversityEval), evalFitAndDivBeforeSelection(_evalFitAndDivBeforeSelection) + {} + + + /** + * Ctor taking a breed, a merge and a eoPopEval. + * @param _continuator the stopping criteria + * @param _popEval the evaluation functions for the whole population + * @param _breed the breeder + * @param _replace the replacement strategy + * @param _fitnessEval the fitness evaluation scheme + * @param _diversityEval the diversity evaluation scheme + * @param _evalFitAndDivBeforeSelection put this parameter to 'true' if you want to re-evalue the fitness and the diversity of the population before the selection process + */ + moeoEasyEA(eoContinue < MOEOT > & _continuator, eoPopEvalFunc < MOEOT > & _popEval, eoBreed < MOEOT > & _breed, moeoReplacement < MOEOT > & _replace, + moeoFitnessAssignment < MOEOT > & _fitnessEval, moeoDiversityAssignment < MOEOT > & _diversityEval, bool _evalFitAndDivBeforeSelection = false) + : + continuator(_continuator), eval (dummyEval), loopEval(dummyEval), popEval(_popEval), selectTransform(dummySelect, dummyTransform), breed(_breed), mergeReduce(dummyMerge, dummyReduce), replace(_replace), + fitnessEval(_fitnessEval), diversityEval(_diversityEval), evalFitAndDivBeforeSelection(_evalFitAndDivBeforeSelection) + {} + + + /** + * Ctor taking a breed, a merge and a reduce. + * @param _continuator the stopping criteria + * @param _eval the evaluation functions + * @param _breed the breeder + * @param _merge the merge scheme + * @param _reduce the reduce scheme + * @param _fitnessEval the fitness evaluation scheme + * @param _diversityEval the diversity evaluation scheme + * @param _evalFitAndDivBeforeSelection put this parameter to 'true' if you want to re-evalue the fitness and the diversity of the population before the selection process + */ + moeoEasyEA(eoContinue < MOEOT > & _continuator, eoEvalFunc < MOEOT > & _eval, eoBreed < MOEOT > & _breed, eoMerge < MOEOT > & _merge, eoReduce< MOEOT > & _reduce, + moeoFitnessAssignment < MOEOT > & _fitnessEval, moeoDiversityAssignment < MOEOT > & _diversityEval, bool _evalFitAndDivBeforeSelection = false) + : + continuator(_continuator), eval(_eval), loopEval(_eval), popEval(loopEval), selectTransform(dummySelect, dummyTransform), breed(_breed), mergeReduce(_merge,_reduce), replace(mergeReduce), + fitnessEval(_fitnessEval), diversityEval(_diversityEval), evalFitAndDivBeforeSelection(_evalFitAndDivBeforeSelection) + {} + + + /** + * Ctor taking a select, a transform and a replacement. + * @param _continuator the stopping criteria + * @param _eval the evaluation functions + * @param _select the selection scheme + * @param _transform the tranformation scheme + * @param _replace the replacement strategy + * @param _fitnessEval the fitness evaluation scheme + * @param _diversityEval the diversity evaluation scheme + * @param _evalFitAndDivBeforeSelection put this parameter to 'true' if you want to re-evalue the fitness and the diversity of the population before the selection process + */ + moeoEasyEA(eoContinue < MOEOT > & _continuator, eoEvalFunc < MOEOT > & _eval, eoSelect < MOEOT > & _select, eoTransform < MOEOT > & _transform, moeoReplacement < MOEOT > & _replace, + moeoFitnessAssignment < MOEOT > & _fitnessEval, moeoDiversityAssignment < MOEOT > & _diversityEval, bool _evalFitAndDivBeforeSelection = false) + : + continuator(_continuator), eval(_eval), loopEval(_eval), popEval(loopEval), selectTransform(_select, _transform), breed(selectTransform), mergeReduce(dummyMerge, dummyReduce), replace(_replace), + fitnessEval(_fitnessEval), diversityEval(_diversityEval), evalFitAndDivBeforeSelection(_evalFitAndDivBeforeSelection) + {} + + + /** + * Ctor taking a select, a transform, a merge and a reduce. + * @param _continuator the stopping criteria + * @param _eval the evaluation functions + * @param _select the selection scheme + * @param _transform the tranformation scheme + * @param _merge the merge scheme + * @param _reduce the reduce scheme + * @param _fitnessEval the fitness evaluation scheme + * @param _diversityEval the diversity evaluation scheme + * @param _evalFitAndDivBeforeSelection put this parameter to 'true' if you want to re-evalue the fitness and the diversity of the population before the selection process + */ + moeoEasyEA(eoContinue < MOEOT > & _continuator, eoEvalFunc < MOEOT > & _eval, eoSelect < MOEOT > & _select, eoTransform < MOEOT > & _transform, eoMerge < MOEOT > & _merge, eoReduce< MOEOT > & _reduce, + moeoFitnessAssignment < MOEOT > & _fitnessEval, moeoDiversityAssignment < MOEOT > & _diversityEval, bool _evalFitAndDivBeforeSelection = false) + : + continuator(_continuator), eval(_eval), loopEval(_eval), popEval(loopEval), selectTransform(_select, _transform), breed(selectTransform), mergeReduce(_merge,_reduce), replace(mergeReduce), + fitnessEval(_fitnessEval), diversityEval(_diversityEval), evalFitAndDivBeforeSelection(_evalFitAndDivBeforeSelection) + {} + + + /** + * Applies a few generation of evolution to the population _pop. + * @param _pop the population + */ + virtual void operator()(eoPop < MOEOT > & _pop) + { + eoPop < MOEOT > offspring, empty_pop; + popEval(empty_pop, _pop); // A first eval of pop. + bool firstTime = true; + do + { + try + { + unsigned int pSize = _pop.size(); + offspring.clear(); // new offspring + // fitness and diversity assignment (if you want to or if it is the first generation) + if (evalFitAndDivBeforeSelection || firstTime) + { + firstTime = false; + fitnessEval(_pop); + diversityEval(_pop); + } + breed(_pop, offspring); + popEval(_pop, offspring); // eval of parents + offspring if necessary + replace(_pop, offspring); // after replace, the new pop. is in _pop + if (pSize > _pop.size()) + { + throw std::runtime_error("Population shrinking!"); + } + else if (pSize < _pop.size()) + { + throw std::runtime_error("Population growing!"); + } + } + catch (std::exception& e) + { + std::string s = e.what(); + s.append( " in moeoEasyEA"); + throw std::runtime_error( s ); + } + } + while (continuator(_pop)); + } + + + protected: + + /** the stopping criteria */ + eoContinue < MOEOT > & continuator; + /** the evaluation functions */ + eoEvalFunc < MOEOT > & eval; + /** to evaluate the whole population */ + eoPopLoopEval < MOEOT > loopEval; + /** to evaluate the whole population */ + eoPopEvalFunc < MOEOT > & popEval; + /** breed: a select followed by a transform */ + eoSelectTransform < MOEOT > selectTransform; + /** the breeder */ + eoBreed < MOEOT > & breed; + /** replacement: a merge followed by a reduce */ + eoMergeReduce < MOEOT > mergeReduce; + /** the replacment strategy */ + moeoReplacement < MOEOT > & replace; + /** the fitness assignment strategy */ + moeoFitnessAssignment < MOEOT > & fitnessEval; + /** the diversity assignment strategy */ + moeoDiversityAssignment < MOEOT > & diversityEval; + /** if this parameter is set to 'true', the fitness and the diversity of the whole population will be re-evaluated before the selection process */ + bool evalFitAndDivBeforeSelection; + /** a dummy eval */ + class eoDummyEval : public eoEvalFunc < MOEOT > + { + public: /** the dummy functor */ + void operator()(MOEOT &) + {} + } + dummyEval; + /** a dummy select */ + class eoDummySelect : public eoSelect < MOEOT > + { + public: /** the dummy functor */ + void operator()(const eoPop < MOEOT > &, eoPop < MOEOT > &) + {} + } + dummySelect; + /** a dummy transform */ + class eoDummyTransform : public eoTransform < MOEOT > + { + public: /** the dummy functor */ + void operator()(eoPop < MOEOT > &) + {} + } + dummyTransform; + /** a dummy merge */ + eoNoElitism < MOEOT > dummyMerge; + /** a dummy reduce */ + eoTruncate < MOEOT > dummyReduce; + + }; + +#endif /*MOEOEASYEA_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/algo/moeoHybridLS.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/algo/moeoHybridLS.h new file mode 100644 index 000000000..3f7af06b4 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/algo/moeoHybridLS.h @@ -0,0 +1,101 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOHYBRIDLS_H_ +#define MOEOHYBRIDLS_H_ + +#include +#include +#include +#include +#include +#include + +/** + * This class allows to apply a multi-objective local search to a number of selected individuals contained in the archive + * at every generation until a stopping criteria is verified. + */ +template < class MOEOT > +class moeoHybridLS : public eoUpdater + { + public: + + /** + * Ctor + * @param _term stopping criteria + * @param _select selector + * @param _mols a multi-objective local search + * @param _arch the archive + */ + moeoHybridLS (eoContinue < MOEOT > & _term, eoSelect < MOEOT > & _select, moeoLS < MOEOT, MOEOT > & _mols, moeoArchive < MOEOT > & _arch) : + term(_term), select(_select), mols(_mols), arch(_arch) + {} + + + /** + * Applies the multi-objective local search to selected individuals contained in the archive if the stopping criteria is not verified + */ + void operator () () + { + if (! term (arch)) + { + // selection of solutions + eoPop < MOEOT > selectedSolutions; + select(arch, selectedSolutions); + // apply the local search to every selected solution + for (unsigned int i=0; i & term; + /** selector */ + eoSelect < MOEOT > & select; + /** multi-objective local search */ + moeoLS < MOEOT, MOEOT > & mols; + /** archive */ + moeoArchive < MOEOT > & arch; + + }; + +#endif /*MOEOHYBRIDLS_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/algo/moeoIBEA.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/algo/moeoIBEA.h new file mode 100644 index 000000000..cbfe49298 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/algo/moeoIBEA.h @@ -0,0 +1,194 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOIBEA_H_ +#define MOEOIBEA_H_ + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/** + * IBEA (Indicator-Based Evolutionary Algorithm) as described in: + * E. Zitzler, S. Künzli, "Indicator-Based Selection in Multiobjective Search", Proc. 8th International Conference on Parallel Problem Solving from Nature (PPSN VIII), pp. 832-842, Birmingham, UK (2004). + * This class builds the IBEA algorithm only by using the fine-grained components of the ParadisEO-MOEO framework. + */ +template < class MOEOT > +class moeoIBEA : public moeoEA < MOEOT > + { + public: + + /** The type of objective vector */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + + /** + * Simple ctor with a eoGenOp. + * @param _maxGen number of generations before stopping + * @param _eval evaluation function + * @param _op variation operator + * @param _metric metric + * @param _kappa scaling factor kappa + */ + moeoIBEA (unsigned int _maxGen, eoEvalFunc < MOEOT > & _eval, eoGenOp < MOEOT > & _op, moeoNormalizedSolutionVsSolutionBinaryMetric < ObjectiveVector, double > & _metric, const double _kappa=0.05) : + defaultGenContinuator(_maxGen), continuator(defaultGenContinuator), popEval(_eval), select(2), + fitnessAssignment(_metric, _kappa), replace(fitnessAssignment, dummyDiversityAssignment), genBreed(select, _op), breed(genBreed) + {} + + + /** + * Simple ctor with a eoTransform. + * @param _maxGen number of generations before stopping + * @param _eval evaluation function + * @param _op variation operator + * @param _metric metric + * @param _kappa scaling factor kappa + */ + moeoIBEA (unsigned int _maxGen, eoEvalFunc < MOEOT > & _eval, eoTransform < MOEOT > & _op, moeoNormalizedSolutionVsSolutionBinaryMetric < ObjectiveVector, double > & _metric, const double _kappa=0.05) : + defaultGenContinuator(_maxGen), continuator(defaultGenContinuator), popEval(_eval), select(2), + fitnessAssignment(_metric, _kappa), replace(fitnessAssignment, dummyDiversityAssignment), genBreed(select, _op), breed(genBreed) + {} + + + /** + * Ctor with a crossover, a mutation and their corresponding rates. + * @param _maxGen number of generations before stopping + * @param _eval evaluation function + * @param _crossover crossover + * @param _pCross crossover probability + * @param _mutation mutation + * @param _pMut mutation probability + * @param _metric metric + * @param _kappa scaling factor kappa + */ + moeoIBEA (unsigned int _maxGen, eoEvalFunc < MOEOT > & _eval, eoQuadOp < MOEOT > & _crossover, double _pCross, eoMonOp < MOEOT > & _mutation, double _pMut, moeoNormalizedSolutionVsSolutionBinaryMetric < ObjectiveVector, double > & _metric, const double _kappa=0.05) : + defaultGenContinuator(_maxGen), continuator(defaultGenContinuator), popEval(_eval), select (2), + fitnessAssignment(_metric, _kappa), replace (fitnessAssignment, dummyDiversityAssignment), defaultSGAGenOp(_crossover, _pCross, _mutation, _pMut), + genBreed (select, defaultSGAGenOp), breed (genBreed) + {} + + + /** + * Ctor with a continuator (instead of _maxGen) and a eoGenOp. + * @param _continuator stopping criteria + * @param _eval evaluation function + * @param _op variation operator + * @param _metric metric + * @param _kappa scaling factor kappa + */ + moeoIBEA (eoContinue < MOEOT > & _continuator, eoEvalFunc < MOEOT > & _eval, eoGenOp < MOEOT > & _op, moeoNormalizedSolutionVsSolutionBinaryMetric < ObjectiveVector, double > & _metric, const double _kappa=0.05) : + continuator(_continuator), popEval(_eval), select(2), + fitnessAssignment(_metric, _kappa), replace(fitnessAssignment, dummyDiversityAssignment), genBreed(select, _op), breed(genBreed) + {} + + + /** + * Ctor with a continuator (instead of _maxGen) and a eoTransform. + * @param _continuator stopping criteria + * @param _eval evaluation function + * @param _op variation operator + * @param _metric metric + * @param _kappa scaling factor kappa + */ + moeoIBEA (eoContinue < MOEOT > & _continuator, eoEvalFunc < MOEOT > & _eval, eoTransform < MOEOT > & _op, moeoNormalizedSolutionVsSolutionBinaryMetric < ObjectiveVector, double > & _metric, const double _kappa=0.05) : + continuator(_continuator), popEval(_eval), select(2), + fitnessAssignment(_metric, _kappa), replace(fitnessAssignment, dummyDiversityAssignment), genBreed(select, _op), breed(genBreed) + {} + + + /** + * Apply a few generation of evolution to the population _pop until the stopping criteria is verified. + * @param _pop the population + */ + virtual void operator () (eoPop < MOEOT > &_pop) + { + eoPop < MOEOT > offspring, empty_pop; + popEval (empty_pop, _pop); // a first eval of _pop + // evaluate fitness and diversity + fitnessAssignment(_pop); + dummyDiversityAssignment(_pop); + do + { + // generate offspring, worths are recalculated if necessary + breed (_pop, offspring); + // eval of offspring + popEval (_pop, offspring); + // after replace, the new pop is in _pop. Worths are recalculated if necessary + replace (_pop, offspring); + } + while (continuator (_pop)); + } + + + protected: + + /** a continuator based on the number of generations (used as default) */ + eoGenContinue < MOEOT > defaultGenContinuator; + /** stopping criteria */ + eoContinue < MOEOT > & continuator; + /** evaluation function used to evaluate the whole population */ + eoPopLoopEval < MOEOT > popEval; + /** binary tournament selection */ + moeoDetTournamentSelect < MOEOT > select; + /** fitness assignment used in IBEA */ + moeoIndicatorBasedFitnessAssignment < MOEOT > fitnessAssignment; + /** dummy diversity assignment */ + moeoDummyDiversityAssignment < MOEOT > dummyDiversityAssignment; + /** elitist replacement */ + moeoEnvironmentalReplacement < MOEOT > replace; + /** an object for genetic operators (used as default) */ + eoSGAGenOp < MOEOT > defaultSGAGenOp; + /** general breeder */ + eoGeneralBreeder < MOEOT > genBreed; + /** breeder */ + eoBreed < MOEOT > & breed; + + }; + +#endif /*MOEOIBEA_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/algo/moeoIBMOLS.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/algo/moeoIBMOLS.h new file mode 100755 index 000000000..dca823463 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/algo/moeoIBMOLS.h @@ -0,0 +1,519 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOIBMOLS_H_ +#define MOEOIBMOLS_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/** + * Indicator-Based Multi-Objective Local Search (IBMOLS) as described in + * Basseur M., Burke K. : "Indicator-Based Multi-Objective Local Search" (2007). + */ +template < class MOEOT, class Move > +class moeoIBMOLS : public moeoLS < MOEOT, eoPop < MOEOT > & > + { + public: + + /** The type of objective vector */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + + /** + * Ctor. + * @param _moveInit the move initializer + * @param _nextMove the neighborhood explorer + * @param _eval the full evaluation + * @param _moveIncrEval the incremental evaluation + * @param _fitnessAssignment the fitness assignment strategy + * @param _continuator the stopping criteria + */ + moeoIBMOLS( + moMoveInit < Move > & _moveInit, + moNextMove < Move > & _nextMove, + eoEvalFunc < MOEOT > & _eval, + moeoMoveIncrEval < Move > & _moveIncrEval, + moeoBinaryIndicatorBasedFitnessAssignment < MOEOT > & _fitnessAssignment, + eoContinue < MOEOT > & _continuator + ) : + moveInit(_moveInit), + nextMove(_nextMove), + eval(_eval), + moveIncrEval(_moveIncrEval), + fitnessAssignment (_fitnessAssignment), + continuator (_continuator) + {} + + + /** + * Apply the local search until a local archive does not change or + * another stopping criteria is met and update the archive _arch with new non-dominated solutions. + * @param _pop the initial population + * @param _arch the (updated) archive + */ + void operator() (eoPop < MOEOT > & _pop, moeoArchive < MOEOT > & _arch) + { + // evaluation of the objective values + /* + for (unsigned int i=0; i<_pop.size(); i++) + { + eval(_pop[i]); + } + */ + // fitness assignment for the whole population + fitnessAssignment(_pop); + // creation of a local archive + moeoArchive < MOEOT > archive; + // creation of another local archive (for the stopping criteria) + moeoArchive < MOEOT > previousArchive; + // update the archive with the initial population + archive.update(_pop); + do + { + previousArchive.update(archive); + oneStep(_pop); + archive.update(_pop); + } + while ( (! archive.equals(previousArchive)) && (continuator(_arch)) ); + _arch.update(archive); + } + + + private: + + /** the move initializer */ + moMoveInit < Move > & moveInit; + /** the neighborhood explorer */ + moNextMove < Move > & nextMove; + /** the full evaluation */ + eoEvalFunc < MOEOT > & eval; + /** the incremental evaluation */ + moeoMoveIncrEval < Move > & moveIncrEval; + /** the fitness assignment strategy */ + moeoBinaryIndicatorBasedFitnessAssignment < MOEOT > & fitnessAssignment; + /** the stopping criteria */ + eoContinue < MOEOT > & continuator; + + + /** + * Apply one step of the local search to the population _pop + * @param _pop the population + */ + void oneStep (eoPop < MOEOT > & _pop) + { + // the move + Move move; + // the objective vector and the fitness of the current solution + ObjectiveVector x_objVec; + double x_fitness; + // the index, the objective vector and the fitness of the worst solution in the population (-1 implies that the worst is the newly created one) + int worst_idx; + ObjectiveVector worst_objVec; + double worst_fitness; +//////////////////////////////////////////// + // the indexes and the objective vectors of the extreme non-dominated points + int ext_0_idx, ext_1_idx; + ObjectiveVector ext_0_objVec, ext_1_objVec; + unsigned int ind; +//////////////////////////////////////////// + // the index of the current solution to be explored + unsigned int i=0; + // initilization of the move for the first individual + moveInit(move, _pop[i]); + while (i<_pop.size() && continuator(_pop)) + { + // x = one neigbour of pop[i] + // evaluate x in the objective space + x_objVec = moveIncrEval(move, _pop[i]); + // update every fitness values to take x into account and compute the fitness of x + x_fitness = fitnessAssignment.updateByAdding(_pop, x_objVec); + +//////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////// + // extreme solutions (min only!) + ext_0_idx = -1; + ext_0_objVec = x_objVec; + ext_1_idx = -1; + ext_1_objVec = x_objVec; + for (unsigned int k=0; k<_pop.size(); k++) + { + // ext_0 + if (_pop[k].objectiveVector()[0] < ext_0_objVec[0]) + { + ext_0_idx = k; + ext_0_objVec = _pop[k].objectiveVector(); + } + else if ( (_pop[k].objectiveVector()[0] == ext_0_objVec[0]) && (_pop[k].objectiveVector()[1] < ext_0_objVec[1]) ) + { + ext_0_idx = k; + ext_0_objVec = _pop[k].objectiveVector(); + } + // ext_1 + else if (_pop[k].objectiveVector()[1] < ext_1_objVec[1]) + { + ext_1_idx = k; + ext_1_objVec = _pop[k].objectiveVector(); + } + else if ( (_pop[k].objectiveVector()[1] == ext_1_objVec[1]) && (_pop[k].objectiveVector()[0] < ext_1_objVec[0]) ) + { + ext_1_idx = k; + ext_1_objVec = _pop[k].objectiveVector(); + } + } + // worst init + if (ext_0_idx == -1) + { + ind = 0; + while (ind == ext_1_idx) + { + ind++; + } + worst_idx = ind; + worst_objVec = _pop[ind].objectiveVector(); + worst_fitness = _pop[ind].fitness(); + } + else if (ext_1_idx == -1) + { + ind = 0; + while (ind == ext_0_idx) + { + ind++; + } + worst_idx = ind; + worst_objVec = _pop[ind].objectiveVector(); + worst_fitness = _pop[ind].fitness(); + } + else + { + worst_idx = -1; + worst_objVec = x_objVec; + worst_fitness = x_fitness; + } +//////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////// + + // who is the worst ? + for (unsigned int j=0; j<_pop.size(); j++) + { + if ( (j!=ext_0_idx) && (j!=ext_1_idx) ) + { + if (_pop[j].fitness() < worst_fitness) + { + worst_idx = j; + worst_objVec = _pop[j].objectiveVector(); + worst_fitness = _pop[j].fitness(); + } + } + } + // if the worst solution is the new one + if (worst_idx == -1) + { + // if all its neighbours have been explored, + // let's explore the neighborhoud of the next individual + if (! nextMove(move, _pop[i])) + { + i++; + if (i<_pop.size()) + { + // initilization of the move for the next individual + moveInit(move, _pop[i]); + } + } + } + // if the worst solution is located before _pop[i] + else if (worst_idx <= i) + { + // the new solution takes place insteed of _pop[worst_idx] + _pop[worst_idx] = _pop[i]; + move(_pop[worst_idx]); + _pop[worst_idx].objectiveVector(x_objVec); + _pop[worst_idx].fitness(x_fitness); + // let's explore the neighborhoud of the next individual + i++; + if (i<_pop.size()) + { + // initilization of the move for the next individual + moveInit(move, _pop[i]); + } + } + // if the worst solution is located after _pop[i] + else if (worst_idx > i) + { + // the new solution takes place insteed of _pop[i+1] and _pop[worst_idx] is deleted + _pop[worst_idx] = _pop[i+1]; + _pop[i+1] = _pop[i]; + move(_pop[i+1]); + _pop[i+1].objectiveVector(x_objVec); + _pop[i+1].fitness(x_fitness); + // let's explore the neighborhoud of the individual _pop[i+2] + i += 2; + if (i<_pop.size()) + { + // initilization of the move for the next individual + moveInit(move, _pop[i]); + } + } + // update fitness values + fitnessAssignment.updateByDeleting(_pop, worst_objVec); + } + } + + + + + + + + + + + + + +// INUTILE !!!! + + + + + + + /** + * Apply one step of the local search to the population _pop + * @param _pop the population + */ + void new_oneStep (eoPop < MOEOT > & _pop) + { + // the move + Move move; + // the objective vector and the fitness of the current solution + ObjectiveVector x_objVec; + double x_fitness; + // the index, the objective vector and the fitness of the worst solution in the population (-1 implies that the worst is the newly created one) + int worst_idx; + ObjectiveVector worst_objVec; + double worst_fitness; +//////////////////////////////////////////// + // the index of the extreme non-dominated points + int ext_0_idx, ext_1_idx; + unsigned int ind; +//////////////////////////////////////////// + // the index current of the current solution to be explored + unsigned int i=0; + // initilization of the move for the first individual + moveInit(move, _pop[i]); + while (i<_pop.size() && continuator(_pop)) + { + // x = one neigbour of pop[i] + // evaluate x in the objective space + x_objVec = moveIncrEval(move, _pop[i]); + // update every fitness values to take x into account and compute the fitness of x + x_fitness = fitnessAssignment.updateByAdding(_pop, x_objVec); + +//////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////// + // extremes solutions + OneObjectiveComparator comp0(0); + ext_0_idx = std::min_element(_pop.begin(), _pop.end(), comp0) - _pop.begin(); + OneObjectiveComparator comp1(1); + ext_1_idx = std::min_element(_pop.begin(), _pop.end(), comp1) - _pop.begin(); + // new = extreme ? + if (x_objVec[0] < _pop[ext_0_idx].objectiveVector()[0]) + { + ext_0_idx = -1; + } + else if ( (x_objVec[0] == _pop[ext_0_idx].objectiveVector()[0]) && (x_objVec[1] < _pop[ext_0_idx].objectiveVector()[1]) ) + { + ext_0_idx = -1; + } + else if (x_objVec[1] < _pop[ext_1_idx].objectiveVector()[1]) + { + ext_1_idx = -1; + } + else if ( (x_objVec[1] == _pop[ext_1_idx].objectiveVector()[1]) && (x_objVec[0] < _pop[ext_1_idx].objectiveVector()[0]) ) + { + ext_1_idx = -1; + } + // worst init + if (ext_0_idx == -1) + { + ind = 0; + while (ind == ext_1_idx) + { + ind++; + } + worst_idx = ind; + worst_objVec = _pop[ind].objectiveVector(); + worst_fitness = _pop[ind].fitness(); + } + else if (ext_1_idx == -1) + { + ind = 0; + while (ind == ext_0_idx) + { + ind++; + } + worst_idx = ind; + worst_objVec = _pop[ind].objectiveVector(); + worst_fitness = _pop[ind].fitness(); + } + else + { + worst_idx = -1; + worst_objVec = x_objVec; + worst_fitness = x_fitness; + } +//////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////// + + // who is the worst ? + for (unsigned int j=0; j<_pop.size(); j++) + { + if ( (j!=ext_0_idx) && (j!=ext_1_idx) ) + { + if (_pop[j].fitness() < worst_fitness) + { + worst_idx = j; + worst_objVec = _pop[j].objectiveVector(); + worst_fitness = _pop[j].fitness(); + } + } + } + // if the worst solution is the new one + if (worst_idx == -1) + { + // if all its neighbours have been explored, + // let's explore the neighborhoud of the next individual + if (! nextMove(move, _pop[i])) + { + i++; + if (i<_pop.size()) + { + // initilization of the move for the next individual + moveInit(move, _pop[i]); + } + } + } + // if the worst solution is located before _pop[i] + else if (worst_idx <= i) + { + // the new solution takes place insteed of _pop[worst_idx] + _pop[worst_idx] = _pop[i]; + move(_pop[worst_idx]); + _pop[worst_idx].objectiveVector(x_objVec); + _pop[worst_idx].fitness(x_fitness); + // let's explore the neighborhoud of the next individual + i++; + if (i<_pop.size()) + { + // initilization of the move for the next individual + moveInit(move, _pop[i]); + } + } + // if the worst solution is located after _pop[i] + else if (worst_idx > i) + { + // the new solution takes place insteed of _pop[i+1] and _pop[worst_idx] is deleted + _pop[worst_idx] = _pop[i+1]; + _pop[i+1] = _pop[i]; + move(_pop[i+1]); + _pop[i+1].objectiveVector(x_objVec); + _pop[i+1].fitness(x_fitness); + // let's explore the neighborhoud of the individual _pop[i+2] + i += 2; + if (i<_pop.size()) + { + // initilization of the move for the next individual + moveInit(move, _pop[i]); + } + } + // update fitness values + fitnessAssignment.updateByDeleting(_pop, worst_objVec); + } + } + + + + + + +////////////////////////////////////////////////////////////////////////////////////////// + class OneObjectiveComparator : public moeoComparator < MOEOT > + { + public: + OneObjectiveComparator(unsigned int _obj) : obj(_obj) + { + if (obj > MOEOT::ObjectiveVector::nObjectives()) + { + throw std::runtime_error("Problem with the index of objective in OneObjectiveComparator"); + } + } + const bool operator()(const MOEOT & _moeo1, const MOEOT & _moeo2) + { + if (_moeo1.objectiveVector()[obj] < _moeo2.objectiveVector()[obj]) + { + return true; + } + else + { + return (_moeo1.objectiveVector()[obj] == _moeo2.objectiveVector()[obj]) && (_moeo1.objectiveVector()[(obj+1)%2] < _moeo2.objectiveVector()[(obj+1)%2]); + } + } + private: + unsigned int obj; + }; +////////////////////////////////////////////////////////////////////////////////////////// + + + + + }; + +#endif /*MOEOIBMOLS_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/algo/moeoIteratedIBMOLS.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/algo/moeoIteratedIBMOLS.h new file mode 100755 index 000000000..09436920c --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/algo/moeoIteratedIBMOLS.h @@ -0,0 +1,238 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOITERATEDIBMOLS_H_ +#define MOEOITERATEDIBMOLS_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + + +//#include + + + +/** + * Iterated version of IBMOLS as described in + * Basseur M., Burke K. : "Indicator-Based Multi-Objective Local Search" (2007). + */ +template < class MOEOT, class Move > +class moeoIteratedIBMOLS : public moeoLS < MOEOT, eoPop < MOEOT > & > + { + public: + + /** The type of objective vector */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + + /** + * Ctor. + * @param _moveInit the move initializer + * @param _nextMove the neighborhood explorer + * @param _eval the full evaluation + * @param _moveIncrEval the incremental evaluation + * @param _fitnessAssignment the fitness assignment strategy + * @param _continuator the stopping criteria + * @param _monOp the monary operator + * @param _randomMonOp the random monary operator (or random initializer) + * @param _nNoiseIterations the number of iterations to apply the random noise + */ + moeoIteratedIBMOLS( + moMoveInit < Move > & _moveInit, + moNextMove < Move > & _nextMove, + eoEvalFunc < MOEOT > & _eval, + moeoMoveIncrEval < Move > & _moveIncrEval, + moeoBinaryIndicatorBasedFitnessAssignment < MOEOT > & _fitnessAssignment, + eoContinue < MOEOT > & _continuator, + eoMonOp < MOEOT > & _monOp, + eoMonOp < MOEOT > & _randomMonOp, + unsigned int _nNoiseIterations=1 + ) : + ibmols(_moveInit, _nextMove, _eval, _moveIncrEval, _fitnessAssignment, _continuator), + eval(_eval), + continuator(_continuator), + monOp(_monOp), + randomMonOp(_randomMonOp), + nNoiseIterations(_nNoiseIterations) + {} + + + /** + * Apply the local search iteratively until the stopping criteria is met. + * @param _pop the initial population + * @param _arch the (updated) archive + */ + void operator() (eoPop < MOEOT > & _pop, moeoArchive < MOEOT > & _arch) + { + _arch.update(_pop); + ibmols(_pop, _arch); + while (continuator(_arch)) + { + // generate new solutions from the archive + generateNewSolutions(_pop, _arch); + // apply the local search (the global archive is updated in the sub-function) + ibmols(_pop, _arch); + } + } + + + private: + + /** the local search to iterate */ + moeoIBMOLS < MOEOT, Move > ibmols; + /** the full evaluation */ + eoEvalFunc < MOEOT > & eval; + /** the stopping criteria */ + eoContinue < MOEOT > & continuator; + /** the monary operator */ + eoMonOp < MOEOT > & monOp; + /** the random monary operator (or random initializer) */ + eoMonOp < MOEOT > & randomMonOp; + /** the number of iterations to apply the random noise */ + unsigned int nNoiseIterations; + + + /** + * Creates new population randomly initialized and/or initialized from the archive _arch. + * @param _pop the output population + * @param _arch the archive + */ + void generateNewSolutions(eoPop < MOEOT > & _pop, const moeoArchive < MOEOT > & _arch) + { + // shuffle vector for the random selection of individuals + vector shuffle; + shuffle.resize(std::max(_pop.size(), _arch.size())); + // init shuffle + for (unsigned int i=0; i gen; + std::random_shuffle(shuffle.begin(), shuffle.end(), gen); + // start the creation of new solutions + for (unsigned int i=0; i<_pop.size(); i++) + { + if (shuffle[i] < _arch.size()) // the given archive contains the individual i + { + // add it to the resulting pop + _pop[i] = _arch[shuffle[i]]; + // apply noise + for (unsigned int j=0; j & _pop, const moeoArchive < MOEOT > & _arch) + { + // here, we must have a QuadOp ! + //eoQuadOp < MOEOT > quadOp; + rsCrossQuad quadOp; + // shuffle vector for the random selection of individuals + vector shuffle; + shuffle.resize(_arch.size()); + // init shuffle + for (unsigned int i=0; i gen; + std::random_shuffle(shuffle.begin(), shuffle.end(), gen); + // start the creation of new solutions + unsigned int i=0; + while ((i<_pop.size()-1) && (i<_arch.size()-1)) + { + _pop[i] = _arch[shuffle[i]]; + _pop[i+1] = _arch[shuffle[i+1]]; + // then, apply the operator nIterationsNoise times + for (unsigned int j=0; j +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOLS_H_ +#define MOEOLS_H_ + +#include +#include +#include + +/** + * Abstract class for local searches applied to multi-objective optimization. + * Starting from a Type (i.e.: an individual, a pop, an archive...), it produces a set of new non-dominated solutions. + */ +template < class MOEOT, class Type > +class moeoLS: public moeoAlgo, public eoBF < Type, moeoArchive < MOEOT > &, void > + {}; + +#endif /*MOEOLS_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/algo/moeoNSGA.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/algo/moeoNSGA.h new file mode 100644 index 000000000..5c8d1fd28 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/algo/moeoNSGA.h @@ -0,0 +1,184 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEONSGA_H_ +#define MOEONSGA_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/** + * NSGA (Non-dominated Sorting Genetic Algorithm) as described in: + * N. Srinivas, K. Deb, "Multiobjective Optimization Using Nondominated Sorting in Genetic Algorithms". + * Evolutionary Computation, Vol. 2(3), No 2, pp. 221-248 (1994). + * This class builds the NSGA algorithm only by using the fine-grained components of the ParadisEO-MOEO framework. + */ +template < class MOEOT > +class moeoNSGA: public moeoEA < MOEOT > + { + public: + + /** + * Simple ctor with a eoGenOp. + * @param _maxGen number of generations before stopping + * @param _eval evaluation function + * @param _op variation operator + * @param _nicheSize niche size + */ + moeoNSGA (unsigned int _maxGen, eoEvalFunc < MOEOT > & _eval, eoGenOp < MOEOT > & _op, double _nicheSize = 0.5) : + defaultGenContinuator(_maxGen), continuator(defaultGenContinuator), popEval(_eval), select(2), + diversityAssignment(_nicheSize), replace(fitnessAssignment, diversityAssignment), genBreed(select, _op), breed(genBreed) + {} + + + /** + * Simple ctor with a eoTransform. + * @param _maxGen number of generations before stopping + * @param _eval evaluation function + * @param _op variation operator + * @param _nicheSize niche size + */ + moeoNSGA (unsigned int _maxGen, eoEvalFunc < MOEOT > & _eval, eoTransform < MOEOT > & _op, double _nicheSize = 0.5) : + defaultGenContinuator(_maxGen), continuator(defaultGenContinuator), popEval(_eval), select(2), + diversityAssignment(_nicheSize), replace(fitnessAssignment, diversityAssignment), genBreed(select, _op), breed(genBreed) + {} + + + /** + * Ctor with a crossover, a mutation and their corresponding rates. + * @param _maxGen number of generations before stopping + * @param _eval evaluation function + * @param _crossover crossover + * @param _pCross crossover probability + * @param _mutation mutation + * @param _pMut mutation probability + * @param _nicheSize niche size + */ + moeoNSGA (unsigned int _maxGen, eoEvalFunc < MOEOT > & _eval, eoQuadOp < MOEOT > & _crossover, double _pCross, eoMonOp < MOEOT > & _mutation, double _pMut, double _nicheSize = 0.5) : + defaultGenContinuator(_maxGen), continuator(defaultGenContinuator), popEval(_eval), select (2), + diversityAssignment(_nicheSize), replace (fitnessAssignment, diversityAssignment), + defaultSGAGenOp(_crossover, _pCross, _mutation, _pMut), genBreed (select, defaultSGAGenOp), breed (genBreed) + {} + + + /** + * Ctor with a continuator (instead of _maxGen) and a eoGenOp. + * @param _continuator stopping criteria + * @param _eval evaluation function + * @param _op variation operator + * @param _nicheSize niche size + */ + moeoNSGA (eoContinue < MOEOT > & _continuator, eoEvalFunc < MOEOT > & _eval, eoGenOp < MOEOT > & _op, double _nicheSize = 0.5) : + continuator(_continuator), popEval(_eval), select(2), + diversityAssignment(_nicheSize), replace(fitnessAssignment, diversityAssignment), genBreed(select, _op), breed(genBreed) + {} + + + /** + * Ctor with a continuator (instead of _maxGen) and a eoTransform. + * @param _continuator stopping criteria + * @param _eval evaluation function + * @param _op variation operator + * @param _nicheSize niche size + */ + moeoNSGA (eoContinue < MOEOT > & _continuator, eoEvalFunc < MOEOT > & _eval, eoTransform < MOEOT > & _op, double _nicheSize = 0.5) : + continuator(_continuator), popEval(_eval), select(2), + diversityAssignment(_nicheSize), replace(fitnessAssignment, diversityAssignment), genBreed(select, _op), breed(genBreed) + {} + + + /** + * Apply a few generation of evolution to the population _pop until the stopping criteria is verified. + * @param _pop the population + */ + virtual void operator () (eoPop < MOEOT > &_pop) + { + eoPop < MOEOT > offspring, empty_pop; + popEval (empty_pop, _pop); // a first eval of _pop + // evaluate fitness and diversity + fitnessAssignment(_pop); + diversityAssignment(_pop); + do + { + // generate offspring, worths are recalculated if necessary + breed (_pop, offspring); + // eval of offspring + popEval (_pop, offspring); + // after replace, the new pop is in _pop. Worths are recalculated if necessary + replace (_pop, offspring); + } + while (continuator (_pop)); + } + + + protected: + + /** a continuator based on the number of generations (used as default) */ + eoGenContinue < MOEOT > defaultGenContinuator; + /** stopping criteria */ + eoContinue < MOEOT > & continuator; + /** evaluation function used to evaluate the whole population */ + eoPopLoopEval < MOEOT > popEval; + /** binary tournament selection */ + moeoDetTournamentSelect < MOEOT > select; + /** fitness assignment used in NSGA-II */ + moeoFastNonDominatedSortingFitnessAssignment < MOEOT > fitnessAssignment; + /** diversity assignment used in NSGA-II */ + moeoFrontByFrontSharingDiversityAssignment < MOEOT > diversityAssignment; + /** elitist replacement */ + moeoElitistReplacement < MOEOT > replace; + /** an object for genetic operators (used as default) */ + eoSGAGenOp < MOEOT > defaultSGAGenOp; + /** general breeder */ + eoGeneralBreeder < MOEOT > genBreed; + /** breeder */ + eoBreed < MOEOT > & breed; + + }; + +#endif /*MOEONSGAII_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/algo/moeoNSGAII.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/algo/moeoNSGAII.h new file mode 100644 index 000000000..d31e723bc --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/algo/moeoNSGAII.h @@ -0,0 +1,190 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEONSGAII_H_ +#define MOEONSGAII_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include + +/** + * NSGA-II (Non-dominated Sorting Genetic Algorithm II) as described in: + * Deb, K., S. Agrawal, A. Pratap, and T. Meyarivan : "A fast elitist non-dominated sorting genetic algorithm for multi-objective optimization: NSGA-II". + * In IEEE Transactions on Evolutionary Computation, Vol. 6, No 2, pp 182-197 (April 2002). + * This class builds the NSGA-II algorithm only by using the fine-grained components of the ParadisEO-MOEO framework. + */ +template < class MOEOT > +class moeoNSGAII: public moeoEA < MOEOT > + { + public: + + /** + * Simple ctor with a eoGenOp. + * @param _maxGen number of generations before stopping + * @param _eval evaluation function + * @param _op variation operator + */ + moeoNSGAII (unsigned int _maxGen, eoEvalFunc < MOEOT > & _eval, eoGenOp < MOEOT > & _op) : + defaultGenContinuator(_maxGen), continuator(defaultGenContinuator), popEval(_eval), select(2), + replace(fitnessAssignment, diversityAssignment), defaultSGAGenOp(defaultQuadOp, 0.0, defaultMonOp, 0.0), + genBreed(select, _op), breed(genBreed) + {} + + + /** + * Simple ctor with a eoTransform. + * @param _maxGen number of generations before stopping + * @param _eval evaluation function + * @param _op variation operator + */ + moeoNSGAII (unsigned int _maxGen, eoEvalFunc < MOEOT > & _eval, eoTransform < MOEOT > & _op) : + defaultGenContinuator(_maxGen), continuator(defaultGenContinuator), popEval(_eval), select(2), + replace(fitnessAssignment, diversityAssignment), defaultSGAGenOp(defaultQuadOp, 0.0, defaultMonOp, 0.0), + genBreed(select, _op), breed(genBreed) + {} + + + /** + * Ctor with a crossover, a mutation and their corresponding rates. + * @param _maxGen number of generations before stopping + * @param _eval evaluation function + * @param _crossover crossover + * @param _pCross crossover probability + * @param _mutation mutation + * @param _pMut mutation probability + */ + moeoNSGAII (unsigned int _maxGen, eoEvalFunc < MOEOT > & _eval, eoQuadOp < MOEOT > & _crossover, double _pCross, eoMonOp < MOEOT > & _mutation, double _pMut) : + defaultGenContinuator(_maxGen), continuator(defaultGenContinuator), popEval(_eval), select (2), + replace (fitnessAssignment, diversityAssignment), defaultSGAGenOp(_crossover, _pCross, _mutation, _pMut), + genBreed (select, defaultSGAGenOp), breed (genBreed) + {} + + + /** + * Ctor with a continuator (instead of _maxGen) and a eoGenOp. + * @param _continuator stopping criteria + * @param _eval evaluation function + * @param _op variation operator + */ + moeoNSGAII (eoContinue < MOEOT > & _continuator, eoEvalFunc < MOEOT > & _eval, eoGenOp < MOEOT > & _op) : + defaultGenContinuator(0), continuator(_continuator), popEval(_eval), select(2), + replace(fitnessAssignment, diversityAssignment), defaultSGAGenOp(defaultQuadOp, 1.0, defaultMonOp, 1.0), + genBreed(select, _op), breed(genBreed) + {} + + + /** + * Ctor with a continuator (instead of _maxGen) and a eoTransform. + * @param _continuator stopping criteria + * @param _eval evaluation function + * @param _op variation operator + */ + moeoNSGAII (eoContinue < MOEOT > & _continuator, eoEvalFunc < MOEOT > & _eval, eoTransform < MOEOT > & _op) : + continuator(_continuator), popEval(_eval), select(2), + replace(fitnessAssignment, diversityAssignment), defaultSGAGenOp(defaultQuadOp, 0.0, defaultMonOp, 0.0), + genBreed(select, _op), breed(genBreed) + {} + + + /** + * Apply a few generation of evolution to the population _pop until the stopping criteria is verified. + * @param _pop the population + */ + virtual void operator () (eoPop < MOEOT > &_pop) + { + eoPop < MOEOT > offspring, empty_pop; + popEval (empty_pop, _pop); // a first eval of _pop + // evaluate fitness and diversity + fitnessAssignment(_pop); + diversityAssignment(_pop); + do + { + // generate offspring, worths are recalculated if necessary + breed (_pop, offspring); + // eval of offspring + popEval (_pop, offspring); + // after replace, the new pop is in _pop. Worths are recalculated if necessary + replace (_pop, offspring); + } + while (continuator (_pop)); + } + + + protected: + + /** a continuator based on the number of generations (used as default) */ + eoGenContinue < MOEOT > defaultGenContinuator; + /** stopping criteria */ + eoContinue < MOEOT > & continuator; + /** evaluation function used to evaluate the whole population */ + eoPopLoopEval < MOEOT > popEval; + /** binary tournament selection */ + moeoDetTournamentSelect < MOEOT > select; + /** fitness assignment used in NSGA-II */ + moeoFastNonDominatedSortingFitnessAssignment < MOEOT > fitnessAssignment; + /** diversity assignment used in NSGA-II */ + moeoFrontByFrontCrowdingDiversityAssignment < MOEOT > diversityAssignment; + /** elitist replacement */ + moeoElitistReplacement < MOEOT > replace; + /** a default crossover */ + eoQuadCloneOp < MOEOT > defaultQuadOp; + /** a default mutation */ + eoMonCloneOp < MOEOT > defaultMonOp; + /** an object for genetic operators (used as default) */ + eoSGAGenOp < MOEOT > defaultSGAGenOp; + /** general breeder */ + eoGeneralBreeder < MOEOT > genBreed; + /** breeder */ + eoBreed < MOEOT > & breed; + + }; + +#endif /*MOEONSGAII_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/archive/moeoArchive.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/archive/moeoArchive.h new file mode 100644 index 000000000..93cca5848 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/archive/moeoArchive.h @@ -0,0 +1,205 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOARCHIVE_H_ +#define MOEOARCHIVE_H_ + +#include +#include +#include + +/** + * An archive is a secondary population that stores non-dominated solutions. + */ +template < class MOEOT > +class moeoArchive : public eoPop < MOEOT > + { + public: + + using eoPop < MOEOT > :: size; + using eoPop < MOEOT > :: operator[]; + using eoPop < MOEOT > :: back; + using eoPop < MOEOT > :: pop_back; + + + /** + * The type of an objective vector for a solution + */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + + /** + * Default ctor. + * The moeoObjectiveVectorComparator used to compare solutions is based on Pareto dominance + */ + moeoArchive() : eoPop < MOEOT >(), comparator(paretoComparator) + {} + + + /** + * Ctor + * @param _comparator the moeoObjectiveVectorComparator used to compare solutions + */ + moeoArchive(moeoObjectiveVectorComparator < ObjectiveVector > & _comparator) : eoPop < MOEOT >(), comparator(_comparator) + {} + + + /** + * Returns true if the current archive dominates _objectiveVector according to the moeoObjectiveVectorComparator given in the constructor + * @param _objectiveVector the objective vector to compare with the current archive + */ + bool dominates (const ObjectiveVector & _objectiveVector) const + { + for (unsigned int i = 0; i & _pop) + { + for (unsigned int i=0; i<_pop.size(); i++) + { + update(_pop[i]); + } + } + + + /** + * Returns true if the current archive contains the same objective vectors than the given archive _arch + * @param _arch the given archive + */ + bool equals (const moeoArchive < MOEOT > & _arch) + { + for (unsigned int i=0; i & comparator; + /** A moeoObjectiveVectorComparator based on Pareto dominance (used as default) */ + moeoParetoObjectiveVectorComparator < ObjectiveVector > paretoComparator; + + }; + +#endif /*MOEOARCHIVE_H_ */ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/comparator/moeoAggregativeComparator.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/comparator/moeoAggregativeComparator.h new file mode 100644 index 000000000..d684c54eb --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/comparator/moeoAggregativeComparator.h @@ -0,0 +1,80 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOAGGREGATIVECOMPARATOR_H_ +#define MOEOAGGREGATIVECOMPARATOR_H_ + +#include + +/** + * Functor allowing to compare two solutions according to their fitness and diversity values, each according to its aggregative value. + */ +template < class MOEOT > +class moeoAggregativeComparator : public moeoComparator < MOEOT > + { + public: + + /** + * Ctor. + * @param _weightFitness the weight for fitness + * @param _weightDiversity the weight for diversity + */ + moeoAggregativeComparator(double _weightFitness = 1.0, double _weightDiversity = 1.0) : weightFitness(_weightFitness), weightDiversity(_weightDiversity) + {} + + + /** + * Returns true if _moeo1 < _moeo2 according to the aggregation of their fitness and diversity values + * @param _moeo1 the first solution + * @param _moeo2 the second solution + */ + const bool operator()(const MOEOT & _moeo1, const MOEOT & _moeo2) + { + return ( weightFitness * _moeo1.fitness() + weightDiversity * _moeo1.diversity() ) < ( weightFitness * _moeo2.fitness() + weightDiversity * _moeo2.diversity() ); + } + + + private: + + /** the weight for fitness */ + double weightFitness; + /** the weight for diversity */ + double weightDiversity; + + }; + +#endif /*MOEOAGGREGATIVECOMPARATOR_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/comparator/moeoComparator.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/comparator/moeoComparator.h new file mode 100644 index 000000000..e97845505 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/comparator/moeoComparator.h @@ -0,0 +1,50 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOCOMPARATOR_H_ +#define MOEOCOMPARATOR_H_ + +#include + +/** + * Functor allowing to compare two solutions. + */ +template < class MOEOT > +class moeoComparator : public eoBF < const MOEOT &, const MOEOT &, const bool > + {}; + +#endif /*MOEOCOMPARATOR_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/comparator/moeoDiversityThenFitnessComparator.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/comparator/moeoDiversityThenFitnessComparator.h new file mode 100644 index 000000000..db58f936f --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/comparator/moeoDiversityThenFitnessComparator.h @@ -0,0 +1,70 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEODIVERSITYTHENFITNESSCOMPARATOR_H_ +#define MOEODIVERSITYTHENFITNESSCOMPARATOR_H_ + +#include + +/** + * Functor allowing to compare two solutions according to their diversity values, then according to their fitness values. + */ +template < class MOEOT > +class moeoDiversityThenFitnessComparator : public moeoComparator < MOEOT > + { + public: + + /** + * Returns true if _moeo1 < _moeo2 according to their diversity values, then according to their fitness values + * @param _moeo1 the first solution + * @param _moeo2 the second solution + */ + const bool operator()(const MOEOT & _moeo1, const MOEOT & _moeo2) + { + if (_moeo1.diversity() == _moeo2.diversity()) + { + return _moeo1.fitness() < _moeo2.fitness(); + } + else + { + return _moeo1.diversity() < _moeo2.diversity(); + } + } + + }; + +#endif /*MOEODIVERSITYTHENFITNESSCOMPARATOR_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/comparator/moeoFitnessThenDiversityComparator.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/comparator/moeoFitnessThenDiversityComparator.h new file mode 100644 index 000000000..cf6c4004b --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/comparator/moeoFitnessThenDiversityComparator.h @@ -0,0 +1,70 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOFITNESSTHENDIVERSITYCOMPARATOR_H_ +#define MOEOFITNESSTHENDIVERSITYCOMPARATOR_H_ + +#include + +/** + * Functor allowing to compare two solutions according to their fitness values, then according to their diversity values. + */ +template < class MOEOT > +class moeoFitnessThenDiversityComparator : public moeoComparator < MOEOT > + { + public: + + /** + * Returns true if _moeo1 < _moeo2 according to their fitness values, then according to their diversity values + * @param _moeo1 the first solution + * @param _moeo2 the second solution + */ + const bool operator()(const MOEOT & _moeo1, const MOEOT & _moeo2) + { + if (_moeo1.fitness() == _moeo2.fitness()) + { + return _moeo1.diversity() < _moeo2.diversity(); + } + else + { + return _moeo1.fitness() < _moeo2.fitness(); + } + } + + }; + +#endif /*MOEOFITNESSTHENDIVERSITYCOMPARATOR_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/comparator/moeoGDominanceObjectiveVectorComparator.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/comparator/moeoGDominanceObjectiveVectorComparator.h new file mode 100644 index 000000000..c51e26c02 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/comparator/moeoGDominanceObjectiveVectorComparator.h @@ -0,0 +1,127 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOGDOMINANCEOBJECTIVEVECTORCOMPARATOR_H_ +#define MOEOGDOMINANCEOBJECTIVEVECTORCOMPARATOR_H_ + +#include + +/** + * This functor class allows to compare 2 objective vectors according to g-dominance. + * The concept of g-dominance as been introduced in: + * J. Molina, L. V. Santana, A. G. Hernandez-Diaz, C. A. Coello Coello, R. Caballero, + * "g-dominance: Reference point based dominance" (2007) + */ +template < class ObjectiveVector > +class moeoGDominanceObjectiveVectorComparator : public moeoObjectiveVectorComparator < ObjectiveVector > + { + public: + + /** + * Ctor. + * @param _ref the reference point + */ + moeoGDominanceObjectiveVectorComparator(ObjectiveVector & _ref) : ref(_ref) + {} + + + /** + * Returns true if _objectiveVector1 is g-dominated by _objectiveVector2. + * @param _objectiveVector1 the first objective vector + * @param _objectiveVector2 the second objective vector + */ + const bool operator()(const ObjectiveVector & _objectiveVector1, const ObjectiveVector & _objectiveVector2) + { + unsigned int flag1 = flag(_objectiveVector1); + unsigned int flag2 = flag(_objectiveVector2); + if (flag2==0) + { + // cannot dominate + return false; + } + else if ( (flag2==1) && (flag1==0) ) + { + // is dominated + return true; + } + else // (flag1==1) && (flag2==1) + { + // both are on the good region, so let's use the classical Pareto dominance + return paretoComparator(_objectiveVector1, _objectiveVector2); + } + } + + + private: + + /** the reference point */ + ObjectiveVector & ref; + /** Pareto comparator */ + moeoParetoObjectiveVectorComparator < ObjectiveVector > paretoComparator; + + + /** + * Returns the flag of _objectiveVector according to the reference point + * @param _objectiveVector the first objective vector + */ + unsigned int flag(const ObjectiveVector & _objectiveVector) + { + unsigned int result=1; + for (unsigned int i=0; i ref[i]) + { + result=0; + } + } + if (result==0) + { + result=1; + for (unsigned int i=0; i +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOOBJECTIVEOBJECTIVEVECTORCOMPARATOR_H_ +#define MOEOOBJECTIVEOBJECTIVEVECTORCOMPARATOR_H_ + +#include + +/** + * Functor allowing to compare two objective vectors according to their first objective value, then their second, and so on. + */ +template < class ObjectiveVector > +class moeoObjectiveObjectiveVectorComparator : public moeoObjectiveVectorComparator < ObjectiveVector > + { + public: + + /** + * Returns true if _objectiveVector1 < _objectiveVector2 on the first objective, then on the second, and so on + * @param _objectiveVector1 the first objective vector + * @param _objectiveVector2 the second objective vector + */ + const bool operator()(const ObjectiveVector & _objectiveVector1, const ObjectiveVector & _objectiveVector2) + { + for (unsigned int i=0; i ObjectiveVector::Traits::tolerance() ) + { + if (_objectiveVector1[i] < _objectiveVector2[i]) + { + return true; + } + else + { + return false; + } + } + } + return false; + } + + }; + +#endif /*MOEOOBJECTIVEOBJECTIVEVECTORCOMPARATOR_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/comparator/moeoObjectiveVectorComparator.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/comparator/moeoObjectiveVectorComparator.h new file mode 100644 index 000000000..a34112690 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/comparator/moeoObjectiveVectorComparator.h @@ -0,0 +1,52 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOOBJECTIVEVECTORCOMPARATOR_H_ +#define MOEOOBJECTIVEVECTORCOMPARATOR_H_ + +#include +#include + +/** + * Abstract class allowing to compare 2 objective vectors. + * The template argument ObjectiveVector have to be a moeoObjectiveVector. + */ +template < class ObjectiveVector > +class moeoObjectiveVectorComparator : public eoBF < const ObjectiveVector &, const ObjectiveVector &, const bool > + {}; + +#endif /*MOEOOBJECTIVEVECTORCOMPARATOR_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/comparator/moeoOneObjectiveComparator.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/comparator/moeoOneObjectiveComparator.h new file mode 100644 index 000000000..66c71a1de --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/comparator/moeoOneObjectiveComparator.h @@ -0,0 +1,82 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOONEOBJECTIVECOMPARATOR_H_ +#define MOEOONEOBJECTIVECOMPARATOR_H_ + +#include + +/** + * Functor allowing to compare two solutions according to one objective. + */ +template < class MOEOT > +class moeoOneObjectiveComparator : public moeoComparator < MOEOT > + { + public: + + /** + * Ctor. + * @param _obj the index of objective + */ + moeoOneObjectiveComparator(unsigned int _obj) : obj(_obj) + { + if (obj > MOEOT::ObjectiveVector::nObjectives()) + { + throw std::runtime_error("Problem with the index of objective in moeoOneObjectiveComparator"); + } + } + + + /** + * Returns true if _moeo1 < _moeo2 on the obj objective + * @param _moeo1 the first solution + * @param _moeo2 the second solution + */ + const bool operator()(const MOEOT & _moeo1, const MOEOT & _moeo2) + { + return _moeo1.objectiveVector()[obj] < _moeo2.objectiveVector()[obj]; + } + + + private: + + /** the index of objective */ + unsigned int obj; + + }; + +#endif /*MOEOONEOBJECTIVECOMPARATOR_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/comparator/moeoParetoObjectiveVectorComparator.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/comparator/moeoParetoObjectiveVectorComparator.h new file mode 100644 index 000000000..fca1614f9 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/comparator/moeoParetoObjectiveVectorComparator.h @@ -0,0 +1,95 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOPARETOOBJECTIVEVECTORCOMPARATOR_H_ +#define MOEOPARETOOBJECTIVEVECTORCOMPARATOR_H_ + +#include + +/** + * This functor class allows to compare 2 objective vectors according to Pareto dominance. + */ +template < class ObjectiveVector > +class moeoParetoObjectiveVectorComparator : public moeoObjectiveVectorComparator < ObjectiveVector > + { + public: + + /** + * Returns true if _objectiveVector1 is dominated by _objectiveVector2 + * @param _objectiveVector1 the first objective vector + * @param _objectiveVector2 the second objective vector + */ + const bool operator()(const ObjectiveVector & _objectiveVector1, const ObjectiveVector & _objectiveVector2) + { + bool dom = false; + for (unsigned int i=0; i ObjectiveVector::Traits::tolerance() ) + { + // if the ith objective have to be minimized... + if (ObjectiveVector::minimizing(i)) + { + if (_objectiveVector1[i] > _objectiveVector2[i]) + { + dom = true; //_objectiveVector1[i] is not better than _objectiveVector2[i] + } + else + { + return false; //_objectiveVector2 cannot dominate _objectiveVector1 + } + } + // if the ith objective have to be maximized... + else if (ObjectiveVector::maximizing(i)) + { + if (_objectiveVector1[i] < _objectiveVector2[i]) + { + dom = true; //_objectiveVector1[i] is not better than _objectiveVector2[i] + } + else + { + return false; //_objectiveVector2 cannot dominate _objectiveVector1 + } + } + } + } + return dom; + } + + }; + +#endif /*MOEOPARETOOBJECTIVEVECTORCOMPARATOR_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/core/MOEO.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/core/MOEO.h new file mode 100644 index 000000000..6910486a0 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/core/MOEO.h @@ -0,0 +1,355 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEO_H_ +#define MOEO_H_ + +#include +#include +#include +#include + +/** + * Base class allowing to represent a solution (an individual) for multi-objective optimization. + * The template argument MOEOObjectiveVector allows to represent the solution in the objective space (it can be a moeoObjectiveVector object). + * The template argument MOEOFitness is an object reflecting the quality of the solution in term of convergence (the fitness of a solution is always to be maximized). + * The template argument MOEODiversity is an object reflecting the quality of the solution in term of diversity (the diversity of a solution is always to be maximized). + * All template arguments must have a void and a copy constructor. + * Using some specific representations, you will have to define a copy constructor if the default one is not what you want. + * In the same cases, you will also have to define the affectation operator (operator=). + * Then, you will explicitly have to call the parent copy constructor and the parent affectation operator at the beginning of the corresponding implementation. + * Besides, note that, contrary to the mono-objective case (and to EO) where the fitness value of a solution is confused with its objective value, + * the fitness value differs of the objectives values in the multi-objective case. + */ + +/* + template < typename DataType, typename DataTypeEx > struct Wrapper { + + Wrapper() {} + + Wrapper( const DataType& data ) + : embededData( data ) {} + + Wrapper( const Wrapper& wrapper ) + : embededData( wrapper.embededData ), embededDataEx( wrapper.embededDataEx ) {} + + operator const DataType& () const { return embededData; } + + Wrapper& operator= ( const Wrapper& wrapper ) { + + embededData = wrapper.embededData; + embededDataEx = wrapper.embededDataEx; + return *this; + } + + Wrapper& operator= ( const DataType& data ) { + + embededData = data; + return *this; + } + + DataType embededData; + DataTypeEx embededDataEx; +}; + **/ + + +template < class MOEOObjectiveVector, class MOEOFitness, class MOEODiversity > +class MOEO : public EO < MOEOObjectiveVector > + { + public: + + /** the objective vector type of a solution */ + typedef MOEOObjectiveVector ObjectiveVector; + + /** the fitness type of a solution */ + typedef MOEOFitness Fitness; +// typedef Wrapper< MOEOFitness, MOEOObjectiveVector > Fitness; + + /** the diversity type of a solution */ + typedef MOEODiversity Diversity; + + + /** + * Ctor + */ + MOEO() + { + // default values for every parameters + objectiveVectorValue = ObjectiveVector(); + fitnessValue = Fitness(); + diversityValue = Diversity(); + // invalidate all + invalidate(); + } + + + /** + * Virtual dtor + */ + virtual ~MOEO() + {}; + + + /** + * Returns the objective vector of the current solution + */ + ObjectiveVector objectiveVector() const + { + if ( invalidObjectiveVector() ) + { + throw std::runtime_error("invalid objective vector in MOEO"); + } + return objectiveVectorValue; + } + + + /** + * Sets the objective vector of the current solution + * @param _objectiveVectorValue the new objective vector + */ + void objectiveVector(const ObjectiveVector & _objectiveVectorValue) + { + objectiveVectorValue = _objectiveVectorValue; + invalidObjectiveVectorValue = false; + } + + + /** + * Sets the objective vector as invalid + */ + void invalidateObjectiveVector() + { + invalidObjectiveVectorValue = true; + } + + + /** + * Returns true if the objective vector is invalid, false otherwise + */ + bool invalidObjectiveVector() const + { + return invalidObjectiveVectorValue; + } + + + /** + * Returns the fitness value of the current solution + */ + Fitness fitness() const + { + if ( invalidFitness() ) + { + throw std::runtime_error("invalid fitness in MOEO"); + } +// const_cast< Fitness& >( fitnessValue ).embededDataEx = objectiveVectorValue; + + return fitnessValue; + } + + + /** + * Sets the fitness value of the current solution + * @param _fitnessValue the new fitness value + */ + void fitness(const Fitness & _fitnessValue) + { + fitnessValue = _fitnessValue; + invalidFitnessValue = false; + } + + + /** + * Sets the fitness value as invalid + */ + void invalidateFitness() + { + invalidFitnessValue = true; + } + + + /** + * Returns true if the fitness value is invalid, false otherwise + */ + bool invalidFitness() const + { + return invalidFitnessValue; + } + + + /** + * Returns the diversity value of the current solution + */ + Diversity diversity() const + { + if ( invalidDiversity() ) + { + throw std::runtime_error("invalid diversity in MOEO"); + } + return diversityValue; + } + + + /** + * Sets the diversity value of the current solution + * @param _diversityValue the new diversity value + */ + void diversity(const Diversity & _diversityValue) + { + diversityValue = _diversityValue; + invalidDiversityValue = false; + } + + + /** + * Sets the diversity value as invalid + */ + void invalidateDiversity() + { + invalidDiversityValue = true; + } + + + /** + * Returns true if the diversity value is invalid, false otherwise + */ + bool invalidDiversity() const + { + return invalidDiversityValue; + } + + + /** + * Sets the objective vector, the fitness value and the diversity value as invalid + */ + void invalidate() + { + invalidateObjectiveVector(); + invalidateFitness(); + invalidateDiversity(); + } + + + /** + * Returns true if the objective values are invalid, false otherwise + */ + bool invalid() const + { + return invalidObjectiveVector(); + } + + + /** + * Returns true if the objective vector of the current solution is smaller than the objective vector of _other on the first objective, + * then on the second, and so on (can be usefull for sorting/printing). + * You should implement another function in the sub-class of MOEO to have another sorting mecanism. + * @param _other the other MOEO object to compare with + */ + bool operator<(const MOEO & _other) const + { + return objectiveVector() < _other.objectiveVector(); + } + + + /** + * Return the class id (the class name as a std::string) + */ + virtual std::string className() const + { + return "MOEO"; + } + + + /** + * Writing object + * @param _os output stream + */ + virtual void printOn(std::ostream & _os) const + { + if ( invalidObjectiveVector() ) + { + _os << "INVALID\t"; + } + else + { + _os << objectiveVectorValue << '\t'; + } + } + + + /** + * Reading object + * @param _is input stream + */ + virtual void readFrom(std::istream & _is) + { + std::string objectiveVector_str; + int pos = _is.tellg(); + _is >> objectiveVector_str; + if (objectiveVector_str == "INVALID") + { + invalidateObjectiveVector(); + } + else + { + invalidObjectiveVectorValue = false; + _is.seekg(pos); // rewind + _is >> objectiveVectorValue; + } + } + + + private: + + /** the objective vector of this solution */ + ObjectiveVector objectiveVectorValue; + /** true if the objective vector is invalid */ + bool invalidObjectiveVectorValue; + /** the fitness value of this solution */ + Fitness fitnessValue; + /** true if the fitness value is invalid */ + bool invalidFitnessValue; + /** the diversity value of this solution */ + Diversity diversityValue; + /** true if the diversity value is invalid */ + bool invalidDiversityValue; + + }; + + + +#endif /*MOEO_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/core/moeoBitVector.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/core/moeoBitVector.h new file mode 100644 index 000000000..355ea9d51 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/core/moeoBitVector.h @@ -0,0 +1,108 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOBITVECTOR_H_ +#define MOEOBITVECTOR_H_ + +#include + +/** + * This class is an implementationeo of a simple bit-valued moeoVector. + */ +template < class MOEOObjectiveVector, class MOEOFitness, class MOEODiversity > +class moeoBitVector : public moeoVector < MOEOObjectiveVector, MOEOFitness, MOEODiversity, bool > + { + public: + + using moeoVector < MOEOObjectiveVector, MOEOFitness, MOEODiversity, bool > :: begin; + using moeoVector < MOEOObjectiveVector, MOEOFitness, MOEODiversity, bool > :: end; + using moeoVector < MOEOObjectiveVector, MOEOFitness, MOEODiversity, bool > :: resize; + using moeoVector < MOEOObjectiveVector, MOEOFitness, MOEODiversity, bool > :: size; + + + /** + * Ctor + * @param _size Length of vector (default is 0) + * @param _value Initial value of all elements (default is default value of type GeneType) + */ + moeoBitVector(unsigned int _size = 0, bool _value = false) : moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, bool >(_size, _value) + {} + + + /** + * Returns the class name as a std::string + */ + virtual std::string className() const + { + return "moeoBitVector"; + } + + + /** + * Writing object + * @param _os output stream + */ + virtual void printOn(std::ostream & _os) const + { + MOEO < MOEOObjectiveVector, MOEOFitness, MOEODiversity >::printOn(_os); + _os << ' '; + _os << size() << ' '; + std::copy(begin(), end(), std::ostream_iterator(_os)); + } + + + /** + * Reading object + * @param _is input stream + */ + virtual void readFrom(std::istream & _is) + { + MOEO < MOEOObjectiveVector, MOEOFitness, MOEODiversity >::readFrom(_is); + unsigned int s; + _is >> s; + std::string bits; + _is >> bits; + if (_is) + { + resize(bits.size()); + std::transform(bits.begin(), bits.end(), begin(), std::bind2nd(std::equal_to(), '1')); + } + } + + }; + +#endif /*MOEOBITVECTOR_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/core/moeoEvalFunc.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/core/moeoEvalFunc.h new file mode 100644 index 000000000..767fe8f9d --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/core/moeoEvalFunc.h @@ -0,0 +1,50 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOEVALFUNC_H_ +#define MOEOEVALFUNC_H_ + +#include + +/* + * Functor that evaluates one MOEO by setting all its objective values. + */ +template < class MOEOT > +class moeoEvalFunc : public eoEvalFunc< MOEOT > + {}; + +#endif /*MOEOEVALFUNC_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/core/moeoObjectiveVector.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/core/moeoObjectiveVector.h new file mode 100644 index 000000000..8629a4db9 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/core/moeoObjectiveVector.h @@ -0,0 +1,116 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOOBJECTIVEVECTOR_H_ +#define MOEOOBJECTIVEVECTOR_H_ + +#include + +/** + * Abstract class allowing to represent a solution in the objective space (phenotypic representation). + * The template argument ObjectiveVectorTraits defaults to moeoObjectiveVectorTraits, + * but it can be replaced at will by any other class that implements the static functions defined therein. + * Some static funtions to access to the traits characteristics are re-defined in order not to write a lot of typedef's. + */ +template < class ObjectiveVectorTraits, class ObjectiveVectorType > +class moeoObjectiveVector : public std::vector < ObjectiveVectorType > + { + public: + + /** The traits of objective vectors */ + typedef ObjectiveVectorTraits Traits; + /** The type of an objective value */ + typedef ObjectiveVectorType Type; + + + /** + * Ctor + */ + moeoObjectiveVector(Type _value = Type()) : std::vector < Type > (ObjectiveVectorTraits::nObjectives(), _value) + {} + + + /** + * Ctor from a vector of Type + * @param _v the std::vector < Type > + */ + moeoObjectiveVector(std::vector < Type > & _v) : std::vector < Type > (_v) + {} + + + /** + * Parameters setting (for the objective vector of any solution) + * @param _nObjectives the number of objectives + * @param _bObjectives the min/max vector (true = min / false = max) + */ + static void setup(unsigned int _nObjectives, std::vector < bool > & _bObjectives) + { + ObjectiveVectorTraits::setup(_nObjectives, _bObjectives); + } + + + /** + * Returns the number of objectives + */ + static unsigned int nObjectives() + { + return ObjectiveVectorTraits::nObjectives(); + } + + + /** + * Returns true if the _ith objective have to be minimized + * @param _i the index + */ + static bool minimizing(unsigned int _i) + { + return ObjectiveVectorTraits::minimizing(_i); + } + + + /** + * Returns true if the _ith objective have to be maximized + * @param _i the index + */ + static bool maximizing(unsigned int _i) + { + return ObjectiveVectorTraits::maximizing(_i); + } + + }; + +#endif /*MOEOOBJECTIVEVECTOR_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/core/moeoObjectiveVectorTraits.cpp b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/core/moeoObjectiveVectorTraits.cpp new file mode 100644 index 000000000..ffa042f24 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/core/moeoObjectiveVectorTraits.cpp @@ -0,0 +1,42 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#include + +// The static variables of the moeoObjectiveVectorTraits class need to be allocated +unsigned int moeoObjectiveVectorTraits::nObj; +std::vector < bool > moeoObjectiveVectorTraits::bObj; diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/core/moeoObjectiveVectorTraits.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/core/moeoObjectiveVectorTraits.h new file mode 100644 index 000000000..63c4f9697 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/core/moeoObjectiveVectorTraits.h @@ -0,0 +1,130 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOOBJECTIVEVECTORTRAITS_H_ +#define MOEOOBJECTIVEVECTORTRAITS_H_ + +#include +#include +#include + +/** + * A traits class for moeoObjectiveVector to specify the number of objectives and which ones have to be minimized or maximized. + */ +class moeoObjectiveVectorTraits + { + public: + + /** + * Parameters setting + * @param _nObjectives the number of objectives + * @param _bObjectives the min/max vector (true = min / false = max) + */ + static void setup(unsigned int _nObjectives, std::vector < bool > & _bObjectives) + { + // in case the number of objectives was already set to a different value + if ( nObj && (nObj != _nObjectives) ) + { + std::cout << "WARNING\n"; + std::cout << "WARNING : the number of objectives are changing\n"; + std::cout << "WARNING : Make sure all existing objects are destroyed\n"; + std::cout << "WARNING\n"; + } + // number of objectives + nObj = _nObjectives; + // min/max vector + bObj = _bObjectives; + // in case the number of objectives and the min/max vector size don't match + if (nObj != bObj.size()) + throw std::runtime_error("Number of objectives and min/max size don't match in moeoObjectiveVectorTraits::setup"); + } + + + /** + * Returns the number of objectives + */ + static unsigned int nObjectives() + { + // in case the number of objectives would not be assigned yet + if (! nObj) + throw std::runtime_error("Number of objectives not assigned in moeoObjectiveVectorTraits"); + return nObj; + } + + + /** + * Returns true if the _ith objective have to be minimized + * @param _i the index + */ + static bool minimizing(unsigned int _i) + { + // in case there would be a wrong index + if (_i >= bObj.size()) + throw std::runtime_error("Wrong index in moeoObjectiveVectorTraits"); + return bObj[_i]; + } + + + /** + * Returns true if the _ith objective have to be maximized + * @param _i the index + */ + static bool maximizing(unsigned int _i) + { + return (! minimizing(_i)); + } + + + /** + * Returns the tolerance value (to compare solutions) + */ + static double tolerance() + { + return 1e-6; + } + + + private: + + /** The number of objectives */ + static unsigned int nObj; + /** The min/max vector */ + static std::vector < bool > bObj; + + }; + +#endif /*MOEOOBJECTIVEVECTORTRAITS_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/core/moeoRealObjectiveVector.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/core/moeoRealObjectiveVector.h new file mode 100644 index 000000000..71ce24b00 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/core/moeoRealObjectiveVector.h @@ -0,0 +1,191 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOREALOBJECTIVEVECTOR_H_ +#define MOEOREALOBJECTIVEVECTOR_H_ + +#include +#include +#include +#include +#include + +/** + * This class allows to represent a solution in the objective space (phenotypic representation) by a std::vector of real values, + * i.e. that an objective value is represented using a double, and this for any objective. + */ +template < class ObjectiveVectorTraits > +class moeoRealObjectiveVector : public moeoObjectiveVector < ObjectiveVectorTraits, double > + { + public: + + using moeoObjectiveVector < ObjectiveVectorTraits, double >::size; + using moeoObjectiveVector < ObjectiveVectorTraits, double >::operator[]; + + /** + * Ctor + */ + moeoRealObjectiveVector(double _value = 0.0) : moeoObjectiveVector < ObjectiveVectorTraits, double > (_value) + {} + + + /** + * Ctor from a vector of doubles + * @param _v the std::vector < double > + */ + moeoRealObjectiveVector(std::vector < double > & _v) : moeoObjectiveVector < ObjectiveVectorTraits, double > (_v) + {} + + + /** + * Returns true if the current objective vector dominates _other according to the Pareto dominance relation + * (but it's better to use a moeoObjectiveVectorComparator object to compare solutions) + * @param _other the other moeoRealObjectiveVector object to compare with + */ + bool dominates(const moeoRealObjectiveVector < ObjectiveVectorTraits > & _other) const + { + moeoParetoObjectiveVectorComparator < moeoRealObjectiveVector > comparator; + return comparator(_other, *this); + } + + + /** + * Returns true if the current objective vector is equal to _other (according to a tolerance value) + * @param _other the other moeoRealObjectiveVector object to compare with + */ + bool operator==(const moeoRealObjectiveVector < ObjectiveVectorTraits > & _other) const + { + for (unsigned int i=0; i < size(); i++) + { + if ( fabs(operator[](i) - _other[i]) > ObjectiveVectorTraits::tolerance() ) + { + return false; + } + } + return true; + } + + + /** + * Returns true if the current objective vector is different than _other (according to a tolerance value) + * @param _other the other moeoRealObjectiveVector object to compare with + */ + bool operator!=(const moeoRealObjectiveVector < ObjectiveVectorTraits > & _other) const + { + return ! operator==(_other); + } + + + /** + * Returns true if the current objective vector is smaller than _other on the first objective, then on the second, and so on + * (can be usefull for sorting/printing) + * @param _other the other moeoRealObjectiveVector object to compare with + */ + bool operator<(const moeoRealObjectiveVector < ObjectiveVectorTraits > & _other) const + { + moeoObjectiveObjectiveVectorComparator < moeoRealObjectiveVector < ObjectiveVectorTraits > > cmp; + return cmp(*this, _other); + } + + + /** + * Returns true if the current objective vector is greater than _other on the first objective, then on the second, and so on + * (can be usefull for sorting/printing) + * @param _other the other moeoRealObjectiveVector object to compare with + */ + bool operator>(const moeoRealObjectiveVector < ObjectiveVectorTraits > & _other) const + { + return _other < *this; + } + + + /** + * Returns true if the current objective vector is smaller than or equal to _other on the first objective, then on the second, and so on + * (can be usefull for sorting/printing) + * @param _other the other moeoRealObjectiveVector object to compare with + */ + bool operator<=(const moeoRealObjectiveVector < ObjectiveVectorTraits > & _other) const + { + return operator==(_other) || operator<(_other); + } + + + /** + * Returns true if the current objective vector is greater than or equal to _other on the first objective, then on the second, and so on + * (can be usefull for sorting/printing) + * @param _other the other moeoRealObjectiveVector object to compare with + */ + bool operator>=(const moeoRealObjectiveVector < ObjectiveVectorTraits > & _other) const + { + return operator==(_other) || operator>(_other); + } + + }; + + +/** + * Output for a moeoRealObjectiveVector object + * @param _os output stream + * @param _objectiveVector the objective vector to write + */ +template < class ObjectiveVectorTraits > +std::ostream & operator<<(std::ostream & _os, const moeoRealObjectiveVector < ObjectiveVectorTraits > & _objectiveVector) +{ + for (unsigned int i=0; i<_objectiveVector.size(); i++) + { + _os << _objectiveVector[i] << '\t'; + } + return _os; +} + +/** + * Input for a moeoRealObjectiveVector object + * @param _is input stream + * @param _objectiveVector the objective vector to read + */ +template < class ObjectiveVectorTraits > +std::istream & operator>>(std::istream & _is, moeoRealObjectiveVector < ObjectiveVectorTraits > & _objectiveVector) +{ + _objectiveVector = moeoRealObjectiveVector < ObjectiveVectorTraits > (); + for (unsigned int i=0; i<_objectiveVector.size(); i++) + { + _is >> _objectiveVector[i]; + } + return _is; +} + +#endif /*MOEOREALOBJECTIVEVECTOR_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/core/moeoRealVector.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/core/moeoRealVector.h new file mode 100644 index 000000000..6a5dd07bb --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/core/moeoRealVector.h @@ -0,0 +1,70 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOREALVECTOR_H_ +#define MOEOREALVECTOR_H_ + +#include + +/** + * This class is an implementation of a simple double-valued moeoVector. + */ +template < class MOEOObjectiveVector, class MOEOFitness, class MOEODiversity > +class moeoRealVector : public moeoVector < MOEOObjectiveVector, MOEOFitness, MOEODiversity, double > + { + public: + + /** + * Ctor + * @param _size Length of vector (default is 0) + * @param _value Initial value of all elements (default is default value of type GeneType) + */ + moeoRealVector(unsigned int _size = 0, double _value = 0.0) : moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, double >(_size, _value) + {} + + + /** + * Returns the class name as a std::string + */ + virtual std::string className() const + { + return "moeoRealVector"; + } + + }; + +#endif /*MOEOREALVECTOR_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/core/moeoVector.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/core/moeoVector.h new file mode 100644 index 000000000..407d8ba22 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/core/moeoVector.h @@ -0,0 +1,168 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOVECTOR_H_ +#define MOEOVECTOR_H_ + +#include +#include +#include + +/** + * Base class for fixed length chromosomes, just derives from MOEO and std::vector and redirects the smaller than operator to MOEO (objective vector based comparison). + * GeneType must have the following methods: void ctor (needed for the std::vector<>), copy ctor. + */ +template < class MOEOObjectiveVector, class MOEOFitness, class MOEODiversity, class GeneType > +class moeoVector : public MOEO < MOEOObjectiveVector, MOEOFitness, MOEODiversity >, public std::vector < GeneType > + { + public: + + using MOEO < MOEOObjectiveVector, MOEOFitness, MOEODiversity > :: invalidate; + using std::vector < GeneType > :: operator[]; + using std::vector < GeneType > :: begin; + using std::vector < GeneType > :: end; + using std::vector < GeneType > :: resize; + using std::vector < GeneType > :: size; + + /** the atomic type */ + typedef GeneType AtomType; + /** the container type */ + typedef std::vector < GeneType > ContainerType; + + + /** + * Default ctor. + * @param _size Length of vector (default is 0) + * @param _value Initial value of all elements (default is default value of type GeneType) + */ + moeoVector(unsigned int _size = 0, GeneType _value = GeneType()) : + MOEO < MOEOObjectiveVector, MOEOFitness, MOEODiversity >(), std::vector(_size, _value) + {} + + + /** + * We can't have a Ctor from a std::vector as it would create ambiguity with the copy Ctor. + * @param _v a vector of GeneType + */ + void value(const std::vector < GeneType > & _v) + { + if (_v.size() != size()) // safety check + { + if (size()) // NOT an initial empty std::vector + { + std::cout << "Warning: Changing size in moeoVector assignation"<::operator< + * @param _moeo the object to compare with + */ + bool operator<(const moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType> & _moeo) const + { + return MOEO < MOEOObjectiveVector, MOEOFitness, MOEODiversity >::operator<(_moeo); + } + + + /** + * Writing object + * @param _os output stream + */ + virtual void printOn(std::ostream & _os) const + { + MOEO < MOEOObjectiveVector, MOEOFitness, MOEODiversity >::printOn(_os); + _os << ' '; + _os << size() << ' '; + std::copy(begin(), end(), std::ostream_iterator(_os, " ")); + } + + + /** + * Reading object + * @param _is input stream + */ + virtual void readFrom(std::istream & _is) + { + MOEO < MOEOObjectiveVector, MOEOFitness, MOEODiversity >::readFrom(_is); + unsigned int sz; + _is >> sz; + resize(sz); + unsigned int i; + for (i = 0; i < sz; ++i) + { + AtomType atom; + _is >> atom; + operator[](i) = atom; + } + } + + }; + + +/** + * To avoid conflicts between MOEO::operator< and std::vector::operator< + * @param _moeo1 the first object to compare + * @param _moeo2 the second object to compare + */ +template < class MOEOObjectiveVector, class MOEOFitness, class MOEODiversity, class GeneType > +bool operator<(const moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType> & _moeo1, const moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType> & _moeo2) +{ + return _moeo1.operator<(_moeo2); +} + + +/** + * To avoid conflicts between MOEO::operator> and std::vector::operator> + * @param _moeo1 the first object to compare + * @param _moeo2 the second object to compare + */ +template < class MOEOObjectiveVector, class MOEOFitness, class MOEODiversity, class GeneType > +bool operator>(const moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType> & _moeo1, const moeoVector< MOEOObjectiveVector, MOEOFitness, MOEODiversity, GeneType> & _moeo2) +{ + return _moeo1.operator>(_moeo2); +} + +#endif /*MOEOVECTOR_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/distance/moeoDistance.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/distance/moeoDistance.h new file mode 100644 index 000000000..d5cf75c75 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/distance/moeoDistance.h @@ -0,0 +1,79 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEODISTANCE_H_ +#define MOEODISTANCE_H_ + +#include + +/** + * The base class for distance computation. + */ +template < class MOEOT , class Type > +class moeoDistance : public eoBF < const MOEOT &, const MOEOT &, const Type > + { + public: + + /** + * Nothing to do + * @param _pop the population + */ + virtual void setup(const eoPop < MOEOT > & _pop) + {} + + + /** + * Nothing to do + * @param _min lower bound + * @param _max upper bound + * @param _obj the objective index + */ + virtual void setup(double _min, double _max, unsigned int _obj) + {} + + + /** + * Nothing to do + * @param _realInterval the eoRealInterval object + * @param _obj the objective index + */ + virtual void setup(eoRealInterval _realInterval, unsigned int _obj) + {} + + }; + +#endif /*MOEODISTANCE_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/distance/moeoDistanceMatrix.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/distance/moeoDistanceMatrix.h new file mode 100644 index 000000000..40514dc28 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/distance/moeoDistanceMatrix.h @@ -0,0 +1,101 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEODISTANCEMATRIX_H_ +#define MOEODISTANCEMATRIX_H_ + +#include +#include +#include + +/** + * A matrix to compute distances between every pair of individuals contained in a population. + */ +template < class MOEOT , class Type > +class moeoDistanceMatrix : public eoUF < const eoPop < MOEOT > &, void > , public std::vector< std::vector < Type > > + { + public: + + using std::vector< std::vector < Type > > :: size; + using std::vector< std::vector < Type > > :: operator[]; + + + /** + * Ctor + * @param _size size for every dimension of the matrix + * @param _distance the distance to use + */ + moeoDistanceMatrix (unsigned int _size, moeoDistance < MOEOT , Type > & _distance) : distance(_distance) + { + this->resize(_size); + for (unsigned int i=0; i<_size; i++) + { + this->operator[](i).resize(_size); + } + } + + + /** + * Sets the distance between every pair of individuals contained in the population _pop + * @param _pop the population + */ + void operator()(const eoPop < MOEOT > & _pop) + { + // 1 - setup the bounds (if necessary) + distance.setup(_pop); + // 2 - compute distances + this->operator[](0).operator[](0) = Type(); + for (unsigned int i=0; ioperator[](i).operator[](i) = Type(); + for (unsigned int j=0; joperator[](i).operator[](j) = distance(_pop[i], _pop[j]); + this->operator[](j).operator[](i) = this->operator[](i).operator[](j); + } + } + } + + + private: + + /** the distance to use */ + moeoDistance < MOEOT , Type > & distance; + + }; + +#endif /*MOEODISTANCEMATRIX_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/distance/moeoEuclideanDistance.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/distance/moeoEuclideanDistance.h new file mode 100644 index 000000000..7b29cce17 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/distance/moeoEuclideanDistance.h @@ -0,0 +1,83 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOEUCLIDEANDISTANCE_H_ +#define MOEOEUCLIDEANDISTANCE_H_ + +#include +#include + +/** + * A class allowing to compute an euclidian distance between two solutions in the objective space with normalized objective values (i.e. between 0 and 1). + * A distance value then lies between 0 and sqrt(nObjectives). + */ +template < class MOEOT > +class moeoEuclideanDistance : public moeoNormalizedDistance < MOEOT > + { + public: + + /** the objective vector type of the solutions */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + + /** + * Returns the euclidian distance between _moeo1 and _moeo2 in the objective space + * @param _moeo1 the first solution + * @param _moeo2 the second solution + */ + const double operator()(const MOEOT & _moeo1, const MOEOT & _moeo2) + { + double result = 0.0; + double tmp1, tmp2; + for (unsigned int i=0; i :: bounds; + + }; + +#endif /*MOEOEUCLIDEANDISTANCE_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/distance/moeoManhattanDistance.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/distance/moeoManhattanDistance.h new file mode 100644 index 000000000..91eea6f3d --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/distance/moeoManhattanDistance.h @@ -0,0 +1,83 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOMANHATTANDISTANCE_H_ +#define MOEOMANHATTANDISTANCE_H_ + +#include +#include + +/** + * A class allowing to compute the Manhattan distance between two solutions in the objective space normalized objective values (i.e. between 0 and 1). + * A distance value then lies between 0 and nObjectives. + */ +template < class MOEOT > +class moeoManhattanDistance : public moeoNormalizedDistance < MOEOT > + { + public: + + /** the objective vector type of the solutions */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + + /** + * Returns the Manhattan distance between _moeo1 and _moeo2 in the objective space + * @param _moeo1 the first solution + * @param _moeo2 the second solution + */ + const double operator()(const MOEOT & _moeo1, const MOEOT & _moeo2) + { + double result = 0.0; + double tmp1, tmp2; + for (unsigned int i=0; i :: bounds; + + }; + +#endif /*MOEOMANHATTANDISTANCE_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/distance/moeoNormalizedDistance.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/distance/moeoNormalizedDistance.h new file mode 100644 index 000000000..8cf2f93a5 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/distance/moeoNormalizedDistance.h @@ -0,0 +1,137 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEONORMALIZEDDISTANCE_H_ +#define MOEONORMALIZEDDISTANCE_H_ + +#include +#include +#include + +/** + * The base class for double distance computation with normalized objective values (i.e. between 0 and 1). + */ +template < class MOEOT , class Type = double > +class moeoNormalizedDistance : public moeoDistance < MOEOT , Type > + { + public: + + /** the objective vector type of the solutions */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + + /** + * Default ctr + */ + moeoNormalizedDistance() + { + bounds.resize(ObjectiveVector::Traits::nObjectives()); + // initialize bounds in case someone does not want to use them + for (unsigned int i=0; i & _pop) + { + double min, max; + for (unsigned int i=0; i bounds; + + }; + +#endif /*MOEONORMALIZEDDISTANCE_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/diversity/moeoCrowdingDiversityAssignment.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/diversity/moeoCrowdingDiversityAssignment.h new file mode 100644 index 000000000..119436091 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/diversity/moeoCrowdingDiversityAssignment.h @@ -0,0 +1,147 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOCROWDINGDIVERSITYASSIGNMENT_H_ +#define MOEOCROWDINGDIVERSITYASSIGNMENT_H_ + +#include +#include +#include + +/** + * Diversity assignment sheme based on crowding proposed in: + * K. Deb, A. Pratap, S. Agarwal, T. Meyarivan, "A Fast and Elitist Multi-Objective Genetic Algorithm: NSGA-II", IEEE Transactions on Evolutionary Computation, vol. 6, no. 2 (2002). + */ +template < class MOEOT > +class moeoCrowdingDiversityAssignment : public moeoDiversityAssignment < MOEOT > + { + public: + + /** the objective vector type of the solutions */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + + /** + * Returns a big value (regarded as infinite) + */ + double inf() const + { + return std::numeric_limits::max(); + } + + + /** + * Returns a very small value that can be used to avoid extreme cases (where the min bound == the max bound) + */ + double tiny() const + { + return 1e-6; + } + + + /** + * Computes diversity values for every solution contained in the population _pop + * @param _pop the population + */ + void operator()(eoPop < MOEOT > & _pop) + { + if (_pop.size() <= 2) + { + for (unsigned int i=0; i<_pop.size(); i++) + { + _pop[i].diversity(inf()); + } + } + else + { + setDistances(_pop); + } + } + + + /** + * @warning NOT IMPLEMENTED, DO NOTHING ! + * Updates the diversity values of the whole population _pop by taking the deletion of the objective vector _objVec into account. + * @param _pop the population + * @param _objVec the objective vector + * @warning NOT IMPLEMENTED, DO NOTHING ! + */ + void updateByDeleting(eoPop < MOEOT > & _pop, ObjectiveVector & _objVec) + { + std::cout << "WARNING : updateByDeleting not implemented in moeoCrowdingDiversityAssignment" << std::endl; + } + + + protected: + + /** + * Sets the distance values + * @param _pop the population + */ + virtual void setDistances (eoPop < MOEOT > & _pop) + { + double min, max, distance; + unsigned int nObjectives = MOEOT::ObjectiveVector::nObjectives(); + // set diversity to 0 + for (unsigned int i=0; i<_pop.size(); i++) + { + _pop[i].diversity(0); + } + // for each objective + for (unsigned int obj=0; obj objComp(obj); + // sort + std::sort(_pop.begin(), _pop.end(), objComp); + // min & max + min = _pop[0].objectiveVector()[obj]; + max = _pop[_pop.size()-1].objectiveVector()[obj]; + // set the diversity value to infiny for min and max + _pop[0].diversity(inf()); + _pop[_pop.size()-1].diversity(inf()); + for (unsigned int i=1; i<_pop.size()-1; i++) + { + distance = (_pop[i+1].objectiveVector()[obj] - _pop[i-1].objectiveVector()[obj]) / (max-min); + _pop[i].diversity(_pop[i].diversity() + distance); + } + } + } + + }; + +#endif /*MOEOCROWDINGDIVERSITYASSIGNMENT_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/diversity/moeoDiversityAssignment.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/diversity/moeoDiversityAssignment.h new file mode 100644 index 000000000..1f3e50560 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/diversity/moeoDiversityAssignment.h @@ -0,0 +1,76 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEODIVERSITYASSIGNMENT_H_ +#define MOEODIVERSITYASSIGNMENT_H_ + +#include +#include + +/** + * Functor that sets the diversity values of a whole population. + */ +template < class MOEOT > +class moeoDiversityAssignment : public eoUF < eoPop < MOEOT > &, void > + { + public: + + /** The type for objective vector */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + + /** + * Updates the diversity values of the whole population _pop by taking the deletion of the objective vector _objVec into account. + * @param _pop the population + * @param _objVec the objective vector + */ + virtual void updateByDeleting(eoPop < MOEOT > & _pop, ObjectiveVector & _objVec) = 0; + + + /** + * Updates the diversity values of the whole population _pop by taking the deletion of the individual _moeo into account. + * @param _pop the population + * @param _moeo the individual + */ + void updateByDeleting(eoPop < MOEOT > & _pop, MOEOT & _moeo) + { + updateByDeleting(_pop, _moeo.objectiveVector()); + } + + }; + +#endif /*MOEODIVERSITYASSIGNMENT_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/diversity/moeoDummyDiversityAssignment.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/diversity/moeoDummyDiversityAssignment.h new file mode 100644 index 000000000..f36a75252 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/diversity/moeoDummyDiversityAssignment.h @@ -0,0 +1,84 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEODUMMYDIVERSITYASSIGNMENT_H_ +#define MOEODUMMYDIVERSITYASSIGNMENT_H_ + +#include + +/** + * moeoDummyDiversityAssignment is a moeoDiversityAssignment that gives the value '0' as the individual's diversity for a whole population if it is invalid. + */ +template < class MOEOT > +class moeoDummyDiversityAssignment : public moeoDiversityAssignment < MOEOT > + { + public: + + /** The type for objective vector */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + + /** + * Sets the diversity to '0' for every individuals of the population _pop if it is invalid + * @param _pop the population + */ + void operator () (eoPop < MOEOT > & _pop) + { + for (unsigned int idx = 0; idx<_pop.size (); idx++) + { + if (_pop[idx].invalidDiversity()) + { + // set the diversity to 0 + _pop[idx].diversity(0.0); + } + } + } + + + /** + * Updates the diversity values of the whole population _pop by taking the deletion of the objective vector _objVec into account. + * @param _pop the population + * @param _objVec the objective vector + */ + void updateByDeleting(eoPop < MOEOT > & _pop, ObjectiveVector & _objVec) + { + // nothing to do... ;-) + } + + }; + +#endif /*MOEODUMMYDIVERSITYASSIGNMENT_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/diversity/moeoFrontByFrontCrowdingDiversityAssignment.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/diversity/moeoFrontByFrontCrowdingDiversityAssignment.h new file mode 100644 index 000000000..f089649d2 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/diversity/moeoFrontByFrontCrowdingDiversityAssignment.h @@ -0,0 +1,158 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOFRONTBYFRONTCROWDINGDIVERSITYASSIGNMENT_H_ +#define MOEOFRONTBYFRONTCROWDINGDIVERSITYASSIGNMENT_H_ + +#include +#include + +/** + * Diversity assignment sheme based on crowding proposed in: + * K. Deb, A. Pratap, S. Agarwal, T. Meyarivan, "A Fast and Elitist Multi-Objective Genetic Algorithm: NSGA-II", IEEE Transactions on Evolutionary Computation, vol. 6, no. 2 (2002). + * Tis strategy assigns diversity values FRONT BY FRONT. It is, for instance, used in NSGA-II. + */ +template < class MOEOT > +class moeoFrontByFrontCrowdingDiversityAssignment : public moeoCrowdingDiversityAssignment < MOEOT > + { + public: + + /** the objective vector type of the solutions */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + + /** + * @warning NOT IMPLEMENTED, DO NOTHING ! + * Updates the diversity values of the whole population _pop by taking the deletion of the objective vector _objVec into account. + * @param _pop the population + * @param _objVec the objective vector + * @warning NOT IMPLEMENTED, DO NOTHING ! + */ + void updateByDeleting(eoPop < MOEOT > & _pop, ObjectiveVector & _objVec) + { + std::cout << "WARNING : updateByDeleting not implemented in moeoFrontByFrontCrowdingDistanceDiversityAssignment" << std::endl; + } + + + private: + + using moeoCrowdingDiversityAssignment < MOEOT >::inf; + using moeoCrowdingDiversityAssignment < MOEOT >::tiny; + + /** + * Sets the distance values + * @param _pop the population + */ + void setDistances (eoPop < MOEOT > & _pop) + { + unsigned int a,b; + double min, max, distance; + unsigned int nObjectives = MOEOT::ObjectiveVector::nObjectives(); + // set diversity to 0 for every individual + for (unsigned int i=0; i<_pop.size(); i++) + { + _pop[i].diversity(0.0); + } + // sort the whole pop according to fitness values + moeoFitnessThenDiversityComparator < MOEOT > fitnessComparator; + std::sort(_pop.begin(), _pop.end(), fitnessComparator); + // compute the crowding distance values for every individual "front" by "front" (front : from a to b) + a = 0; // the front starts at a + while (a < _pop.size()) + { + b = lastIndex(_pop,a); // the front ends at b + // if there is less than 2 individuals in the front... + if ((b-a) < 2) + { + for (unsigned int i=a; i<=b; i++) + { + _pop[i].diversity(inf()); + } + } + // else... + else + { + // for each objective + for (unsigned int obj=0; obj objComp(obj); + std::sort(_pop.begin()+a, _pop.begin()+b+1, objComp); + // min & max + min = _pop[b].objectiveVector()[obj]; + max = _pop[a].objectiveVector()[obj]; + // avoid extreme case + if (min == max) + { + min -= tiny(); + max += tiny(); + } + // set the diversity value to infiny for min and max + _pop[a].diversity(inf()); + _pop[b].diversity(inf()); + // set the diversity values for the other individuals + for (unsigned int i=a+1; i & _pop, unsigned int _start) + { + unsigned int i=_start; + while ( (i<_pop.size()-1) && (_pop[i].fitness()==_pop[i+1].fitness()) ) + { + i++; + } + return i; + } + + }; + +#endif /*MOEOFRONTBYFRONTCROWDINGDIVERSITYASSIGNMENT_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/diversity/moeoFrontByFrontSharingDiversityAssignment.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/diversity/moeoFrontByFrontSharingDiversityAssignment.h new file mode 100644 index 000000000..20291e19c --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/diversity/moeoFrontByFrontSharingDiversityAssignment.h @@ -0,0 +1,131 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOFRONTBYFRONTSHARINGDIVERSITYASSIGNMENT_H_ +#define MOEOFRONTBYFRONTSHARINGDIVERSITYASSIGNMENT_H_ + +#include + +/** + * Sharing assignment scheme on the way it is used in NSGA. + */ +template < class MOEOT > +class moeoFrontByFrontSharingDiversityAssignment : public moeoSharingDiversityAssignment < MOEOT > + { + public: + + /** the objective vector type of the solutions */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + + /** + * Ctor + * @param _distance the distance used to compute the neighborhood of solutions (can be related to the decision space or the objective space) + * @param _nicheSize neighborhood size in terms of radius distance (closely related to the way the distances are computed) + * @param _alpha parameter used to regulate the shape of the sharing function + */ + moeoFrontByFrontSharingDiversityAssignment(moeoDistance & _distance, double _nicheSize = 0.5, double _alpha = 2.0) : moeoSharingDiversityAssignment < MOEOT >(_distance, _nicheSize, _alpha) + {} + + + /** + * Ctor with an euclidean distance (with normalized objective values) in the objective space is used as default + * @param _nicheSize neighborhood size in terms of radius distance (closely related to the way the distances are computed) + * @param _alpha parameter used to regulate the shape of the sharing function + */ + moeoFrontByFrontSharingDiversityAssignment(double _nicheSize = 0.5, double _alpha = 2.0) : moeoSharingDiversityAssignment < MOEOT >(_nicheSize, _alpha) + {} + + + /** + * @warning NOT IMPLEMENTED, DO NOTHING ! + * Updates the diversity values of the whole population _pop by taking the deletion of the objective vector _objVec into account. + * @param _pop the population + * @param _objVec the objective vector + * @warning NOT IMPLEMENTED, DO NOTHING ! + */ + void updateByDeleting(eoPop < MOEOT > & _pop, ObjectiveVector & _objVec) + { + std::cout << "WARNING : updateByDeleting not implemented in moeoSharingDiversityAssignment" << std::endl; + } + + + private: + + using moeoSharingDiversityAssignment < MOEOT >::distance; + using moeoSharingDiversityAssignment < MOEOT >::nicheSize; + using moeoSharingDiversityAssignment < MOEOT >::sh; + using moeoSharingDiversityAssignment < MOEOT >::operator(); + + + /** + * Sets similarities FRONT BY FRONT for every solution contained in the population _pop + * @param _pop the population + */ + void setSimilarities(eoPop < MOEOT > & _pop) + { + // compute distances between every individuals + moeoDistanceMatrix < MOEOT , double > dMatrix (_pop.size(), distance); + dMatrix(_pop); + // sets the distance to bigger than the niche size for every couple of solutions that do not belong to the same front + for (unsigned int i=0; i<_pop.size(); i++) + { + for (unsigned int j=0; j +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOSHARINGDIVERSITYASSIGNMENT_H_ +#define MOEOSHARINGDIVERSITYASSIGNMENT_H_ + +#include +#include +#include +#include +#include +#include + +/** + * Sharing assignment scheme originally porposed by: + * D. E. Goldberg, "Genetic Algorithms in Search, Optimization and Machine Learning", Addision-Wesley, MA, USA (1989). + */ +template < class MOEOT > +class moeoSharingDiversityAssignment : public moeoDiversityAssignment < MOEOT > + { + public: + + /** the objective vector type of the solutions */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + + /** + * Ctor + * @param _distance the distance used to compute the neighborhood of solutions (can be related to the decision space or the objective space) + * @param _nicheSize neighborhood size in terms of radius distance (closely related to the way the distances are computed) + * @param _alpha parameter used to regulate the shape of the sharing function + */ + moeoSharingDiversityAssignment(moeoDistance & _distance, double _nicheSize = 0.5, double _alpha = 1.0) : distance(_distance), nicheSize(_nicheSize), alpha(_alpha) + {} + + + /** + * Ctor with an euclidean distance (with normalized objective values) in the objective space is used as default + * @param _nicheSize neighborhood size in terms of radius distance (closely related to the way the distances are computed) + * @param _alpha parameter used to regulate the shape of the sharing function + */ + moeoSharingDiversityAssignment(double _nicheSize = 0.5, double _alpha = 1.0) : distance(defaultDistance), nicheSize(_nicheSize), alpha(_alpha) + {} + + + /** + * Sets diversity values for every solution contained in the population _pop + * @param _pop the population + */ + void operator()(eoPop < MOEOT > & _pop) + { + // 1 - set simuilarities + setSimilarities(_pop); + // 2 - a higher diversity is better, so the values need to be inverted + moeoDiversityThenFitnessComparator < MOEOT > divComparator; + double max = std::max_element(_pop.begin(), _pop.end(), divComparator)->diversity(); + for (unsigned int i=0 ; i<_pop.size() ; i++) + { + _pop[i].diversity(max - _pop[i].diversity()); + } + } + + + /** + * @warning NOT IMPLEMENTED, DO NOTHING ! + * Updates the diversity values of the whole population _pop by taking the deletion of the objective vector _objVec into account. + * @param _pop the population + * @param _objVec the objective vector + * @warning NOT IMPLEMENTED, DO NOTHING ! + */ + void updateByDeleting(eoPop < MOEOT > & _pop, ObjectiveVector & _objVec) + { + std::cout << "WARNING : updateByDeleting not implemented in moeoSharingDiversityAssignment" << std::endl; + } + + + protected: + + /** the distance used to compute the neighborhood of solutions */ + moeoDistance < MOEOT , double > & distance; + /** euclidean distancein the objective space (can be used as default) */ + moeoEuclideanDistance < MOEOT > defaultDistance; + /** neighborhood size in terms of radius distance */ + double nicheSize; + /** parameter used to regulate the shape of the sharing function */ + double alpha; + + + /** + * Sets similarities for every solution contained in the population _pop + * @param _pop the population + */ + virtual void setSimilarities(eoPop < MOEOT > & _pop) + { + // compute distances between every individuals + moeoDistanceMatrix < MOEOT , double > dMatrix (_pop.size(), distance); + dMatrix(_pop); + // compute similarities + double sum; + for (unsigned int i=0; i<_pop.size(); i++) + { + sum = 0.0; + for (unsigned int j=0; j<_pop.size(); j++) + { + sum += sh(dMatrix[i][j]); + } + _pop[i].diversity(sum); + } + } + + + /** + * Sharing function + * @param _dist the distance value + */ + double sh(double _dist) + { + double result; + if (_dist < nicheSize) + { + result = 1.0 - pow(_dist / nicheSize, alpha); + } + else + { + result = 0.0; + } + return result; + } + + }; + + +#endif /*MOEOSHARINGDIVERSITYASSIGNMENT_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/do/make_checkpoint_moeo.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/do/make_checkpoint_moeo.h new file mode 100755 index 000000000..e24d7a23b --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/do/make_checkpoint_moeo.h @@ -0,0 +1,201 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MAKE_CHECKPOINT_MOEO_H_ +#define MAKE_CHECKPOINT_MOEO_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +bool testDirRes(std::string _dirName, bool _erase); + +/** + * This functions allows to build an eoCheckPoint for multi-objective optimization from the parser (partly taken from make_checkpoint_pareto.h) + * @param _parser the parser + * @param _state to store allocated objects + * @param _eval the funtions evaluator + * @param _continue the stopping crietria + * @param _pop the population + * @param _archive the archive of non-dominated solutions + */ +template < class MOEOT > +eoCheckPoint < MOEOT > & do_make_checkpoint_moeo (eoParser & _parser, eoState & _state, eoEvalFuncCounter < MOEOT > & _eval, eoContinue < MOEOT > & _continue, eoPop < MOEOT > & _pop, moeoArchive < MOEOT > & _archive) +{ + eoCheckPoint < MOEOT > & checkpoint = _state.storeFunctor(new eoCheckPoint < MOEOT > (_continue)); + /* the objective vector type */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + /////////////////// + // Counters + ////////////////// + // is nb Eval to be used as counter? + //bool useEval = _parser.getORcreateParam(true, "useEval", "Use nb of eval. as counter (vs nb of gen.)", '\0', "Output").value(); + // Create anyway a generation-counter parameter + eoValueParam *generationCounter = new eoValueParam(0, "Gen."); + // Create an incrementor (sub-class of eoUpdater). + eoIncrementor & increment = _state.storeFunctor( new eoIncrementor(generationCounter->value()) ); + // Add it to the checkpoint + checkpoint.add(increment); + // dir for DISK output + std::string & dirName = _parser.getORcreateParam(std::string("Res"), "resDir", "Directory to store DISK outputs", '\0', "Output").value(); + // shoudl we empty it if exists + eoValueParam& eraseParam = _parser.getORcreateParam(true, "eraseDir", "erase files in dirName if any", '\0', "Output"); + bool dirOK = false; // not tested yet + + // Dump of the whole population + //----------------------------- + bool printPop = _parser.getORcreateParam(false, "printPop", "Print sorted pop. every gen.", '\0', "Output").value(); + eoSortedPopStat * popStat; + if ( printPop ) // we do want pop dump + { + popStat = & _state.storeFunctor(new eoSortedPopStat); + checkpoint.add(*popStat); + } + + ////////////////////////////////// + // State savers + ////////////////////////////// + // feed the state to state savers + // save state every N generation + eoValueParam& saveFrequencyParam = _parser.createParam((unsigned int)(0), "saveFrequency", "Save every F generation (0 = only final state, absent = never)", '\0', "Persistence" ); + if (_parser.isItThere(saveFrequencyParam)) + { + // first make sure dirName is OK + if (! dirOK ) + dirOK = testDirRes(dirName, eraseParam.value()); // TRUE + unsigned int freq = (saveFrequencyParam.value()>0 ? saveFrequencyParam.value() : UINT_MAX ); +#ifdef _MSVC + std::string stmp = dirName + "\generations"; +#else + std::string stmp = dirName + "/generations"; +#endif + eoCountedStateSaver *stateSaver1 = new eoCountedStateSaver(freq, _state, stmp); + _state.storeFunctor(stateSaver1); + checkpoint.add(*stateSaver1); + } + // save state every T seconds + eoValueParam& saveTimeIntervalParam = _parser.getORcreateParam((unsigned int)(0), "saveTimeInterval", "Save every T seconds (0 or absent = never)", '\0',"Persistence" ); + if (_parser.isItThere(saveTimeIntervalParam) && saveTimeIntervalParam.value()>0) + { + // first make sure dirName is OK + if (! dirOK ) + dirOK = testDirRes(dirName, eraseParam.value()); // TRUE +#ifdef _MSVC + std::string stmp = dirName + "\time"; +#else + std::string stmp = dirName + "/time"; +#endif + eoTimedStateSaver *stateSaver2 = new eoTimedStateSaver(saveTimeIntervalParam.value(), _state, stmp); + _state.storeFunctor(stateSaver2); + checkpoint.add(*stateSaver2); + } + + /////////////////// + // Archive + ////////////////// + // update the archive every generation + bool updateArch = _parser.getORcreateParam(true, "updateArch", "Update the archive at each gen.", '\0', "Evolution Engine").value(); + if (updateArch) + { + moeoArchiveUpdater < MOEOT > * updater = new moeoArchiveUpdater < MOEOT > (_archive, _pop); + _state.storeFunctor(updater); + checkpoint.add(*updater); + } + // store the objective vectors contained in the archive every generation + bool storeArch = _parser.getORcreateParam(false, "storeArch", "Store the archive's objective vectors at each gen.", '\0', "Output").value(); + if (storeArch) + { + if (! dirOK ) + dirOK = testDirRes(dirName, eraseParam.value()); // TRUE +#ifdef _MSVC + std::string stmp = dirName + "\arch"; +#else + std::string stmp = dirName + "/arch"; +#endif + moeoArchiveObjectiveVectorSavingUpdater < MOEOT > * save_updater = new moeoArchiveObjectiveVectorSavingUpdater < MOEOT > (_archive, stmp); + _state.storeFunctor(save_updater); + checkpoint.add(*save_updater); + } + // store the contribution of the non-dominated solutions + bool cont = _parser.getORcreateParam(false, "contribution", "Store the contribution of the archive at each gen.", '\0', "Output").value(); + if (cont) + { + if (! dirOK ) + dirOK = testDirRes(dirName, eraseParam.value()); // TRUE +#ifdef _MSVC + std::string stmp = dirName + "\contribution"; +#else + std::string stmp = dirName + "/contribution"; +#endif + moeoContributionMetric < ObjectiveVector > * contribution = new moeoContributionMetric < ObjectiveVector >; + moeoBinaryMetricSavingUpdater < MOEOT > * contribution_updater = new moeoBinaryMetricSavingUpdater < MOEOT > (*contribution, _archive, stmp); + _state.storeFunctor(contribution_updater); + checkpoint.add(*contribution_updater); + } + // store the entropy of the non-dominated solutions + bool ent = _parser.getORcreateParam(false, "entropy", "Store the entropy of the archive at each gen.", '\0', "Output").value(); + if (ent) + { + if (! dirOK ) + dirOK = testDirRes(dirName, eraseParam.value()); // TRUE +#ifdef _MSVC + std::string stmp = dirName + "\entropy"; +#else + std::string stmp = dirName + "/entropy"; +#endif + moeoEntropyMetric < ObjectiveVector > * entropy = new moeoEntropyMetric < ObjectiveVector >; + moeoBinaryMetricSavingUpdater < MOEOT > * entropy_updater = new moeoBinaryMetricSavingUpdater < MOEOT > (*entropy, _archive, stmp); + _state.storeFunctor(entropy_updater); + checkpoint.add(*entropy_updater); + } + + // and that's it for the (control and) output + return checkpoint; +} + +#endif /*MAKE_CHECKPOINT_MOEO_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/do/make_continue_moeo.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/do/make_continue_moeo.h new file mode 100755 index 000000000..84695d7ee --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/do/make_continue_moeo.h @@ -0,0 +1,131 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MAKE_CONTINUE_MOEO_H_ +#define MAKE_CONTINUE_MOEO_H_ + +#include +#include +#include +#include +#include +#ifndef _MSC_VER +#include +#endif +#include +#include + + +/** + * Helper function + * @param _combined the eoCombinedContinue object + * @param _cont the eoContinue to add + */ +template +eoCombinedContinue * make_combinedContinue(eoCombinedContinue *_combined, eoContinue *_cont) +{ + if (_combined) // already exists + _combined->add(*_cont); + else + _combined = new eoCombinedContinue(*_cont); + return _combined; +} + + +/** + * This functions allows to build a eoContinue for multi-objective optimization from the parser (partly taken from make_continue_pareto.h) + * @param _parser the parser + * @param _state to store allocated objects + * @param _eval the funtions evaluator + */ +template +eoContinue & do_make_continue_moeo(eoParser& _parser, eoState& _state, eoEvalFuncCounter & _eval) +{ + // the combined continue - to be filled + eoCombinedContinue *continuator = NULL; + // First the eoGenContinue - need a default value so you can run blind + // but we also need to be able to avoid it <--> 0 + eoValueParam& maxGenParam = _parser.createParam((unsigned int)(100), "maxGen", "Maximum number of generations (0 = none)",'G',"Stopping criterion"); + if (maxGenParam.value()) // positive: -> define and store + { + eoGenContinue *genCont = new eoGenContinue(maxGenParam.value()); + _state.storeFunctor(genCont); + // and "add" to combined + continuator = make_combinedContinue(continuator, genCont); + } + // maxEval + eoValueParam& maxEvalParam = _parser.getORcreateParam((unsigned long)(0), "maxEval", "Maximum number of evaluations (0 = none)", 'E', "Stopping criterion"); + if (maxEvalParam.value()) + { + eoEvalContinue *evalCont = new eoEvalContinue(_eval, maxEvalParam.value()); + _state.storeFunctor(evalCont); + // and "add" to combined + continuator = make_combinedContinue(continuator, evalCont); + } + // maxTime + eoValueParam& maxTimeParam = _parser.getORcreateParam((unsigned long)(0), "maxTime", "Maximum running time in seconds (0 = none)", 'T', "Stopping criterion"); + if (maxTimeParam.value()) // positive: -> define and store + { + eoTimeContinue *timeCont = new eoTimeContinue(maxTimeParam.value()); + _state.storeFunctor(timeCont); + // and "add" to combined + continuator = make_combinedContinue(continuator, timeCont); + } + // CtrlC +#ifndef _MSC_VER + // the CtrlC interception (Linux only I'm afraid) + eoCtrlCContinue *ctrlCCont; + eoValueParam& ctrlCParam = _parser.createParam(true, "CtrlC", "Terminate current generation upon Ctrl C",'C', "Stopping criterion"); + if (ctrlCParam.value()) + { + ctrlCCont = new eoCtrlCContinue; + // store + _state.storeFunctor(ctrlCCont); + // add to combinedContinue + continuator = make_combinedContinue(continuator, ctrlCCont); + } +#endif + // now check that there is at least one! + if (!continuator) + throw std::runtime_error("You MUST provide a stopping criterion"); + // OK, it's there: store in the eoState + _state.storeFunctor(continuator); + // and return + return *continuator; +} + +#endif /*MAKE_CONTINUE_MOEO_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/do/make_ea_moeo.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/do/make_ea_moeo.h new file mode 100755 index 000000000..6f98101ab --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/do/make_ea_moeo.h @@ -0,0 +1,297 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MAKE_EA_MOEO_H_ +#define MAKE_EA_MOEO_H_ + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +/** + * This functions allows to build a moeoEA from the parser + * @param _parser the parser + * @param _state to store allocated objects + * @param _eval the funtions evaluator + * @param _continue the stopping crietria + * @param _op the variation operators + * @param _archive the archive of non-dominated solutions + */ +template < class MOEOT > +moeoEA < MOEOT > & do_make_ea_moeo(eoParser & _parser, eoState & _state, eoEvalFunc < MOEOT > & _eval, eoContinue < MOEOT > & _continue, eoGenOp < MOEOT > & _op, moeoArchive < MOEOT > & _archive) +{ + + /* the objective vector type */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + + /* the fitness assignment strategy */ + std::string & fitnessParam = _parser.createParam(std::string("FastNonDominatedSorting"), "fitness", + "Fitness assignment scheme: Dummy, FastNonDominatedSorting or IndicatorBased", 'F', + "Evolution Engine").value(); + std::string & indicatorParam = _parser.createParam(std::string("Epsilon"), "indicator", + "Binary indicator for IndicatorBased: Epsilon, Hypervolume", 'i', + "Evolution Engine").value(); + double rho = _parser.createParam(1.1, "rho", "reference point for the hypervolume indicator", '\0', + "Evolution Engine").value(); + double kappa = _parser.createParam(0.05, "kappa", "Scaling factor kappa for IndicatorBased", 'k', + "Evolution Engine").value(); + moeoFitnessAssignment < MOEOT > * fitnessAssignment; + if (fitnessParam == std::string("Dummy")) + { + fitnessAssignment = new moeoDummyFitnessAssignment < MOEOT> (); + } + else if (fitnessParam == std::string("FastNonDominatedSorting")) + { + fitnessAssignment = new moeoFastNonDominatedSortingFitnessAssignment < MOEOT> (); + } + else if (fitnessParam == std::string("IndicatorBased")) + { + // metric + moeoNormalizedSolutionVsSolutionBinaryMetric < ObjectiveVector, double > *metric; + if (indicatorParam == std::string("Epsilon")) + { + metric = new moeoAdditiveEpsilonBinaryMetric < ObjectiveVector >; + } + else if (indicatorParam == std::string("Hypervolume")) + { + metric = new moeoHypervolumeBinaryMetric < ObjectiveVector > (rho); + } + else + { + std::string stmp = std::string("Invalid binary quality indicator: ") + indicatorParam; + throw std::runtime_error(stmp.c_str()); + } + fitnessAssignment = new moeoExpBinaryIndicatorBasedFitnessAssignment < MOEOT > (*metric, kappa); + } + else + { + std::string stmp = std::string("Invalid fitness assignment strategy: ") + fitnessParam; + throw std::runtime_error(stmp.c_str()); + } + _state.storeFunctor(fitnessAssignment); + + + /* the diversity assignment strategy */ + eoValueParam & diversityParam = _parser.createParam(eoParamParamType("Dummy"), "diversity", + "Diversity assignment scheme: Dummy, Sharing(nicheSize) or Crowding", 'D', "Evolution Engine"); + eoParamParamType & diversityParamValue = diversityParam.value(); + moeoDiversityAssignment < MOEOT > * diversityAssignment; + if (diversityParamValue.first == std::string("Dummy")) + { + diversityAssignment = new moeoDummyDiversityAssignment < MOEOT> (); + } + else if (diversityParamValue.first == std::string("Sharing")) + { + double nicheSize; + if (!diversityParamValue.second.size()) // no parameter added + { + std::cerr << "WARNING, no niche size given for Sharing, using 0.5" << std::endl; + nicheSize = 0.5; + diversityParamValue.second.push_back(std::string("0.5")); + } + else + { + nicheSize = atoi(diversityParamValue.second[0].c_str()); + } + diversityAssignment = new moeoFrontByFrontSharingDiversityAssignment < MOEOT> (nicheSize); + } + else if (diversityParamValue.first == std::string("Crowding")) + { + diversityAssignment = new moeoFrontByFrontCrowdingDiversityAssignment < MOEOT> (); + } + else + { + std::string stmp = std::string("Invalid diversity assignment strategy: ") + diversityParamValue.first; + throw std::runtime_error(stmp.c_str()); + } + _state.storeFunctor(diversityAssignment); + + + /* the comparator strategy */ + std::string & comparatorParam = _parser.createParam(std::string("FitnessThenDiversity"), "comparator", + "Comparator scheme: FitnessThenDiversity, DiversityThenFitness or Aggregative", 'c', "Evolution Engine").value(); + moeoComparator < MOEOT > * comparator; + if (comparatorParam == std::string("FitnessThenDiversity")) + { + comparator = new moeoFitnessThenDiversityComparator < MOEOT> (); + } + else if (comparatorParam == std::string("DiversityThenFitness")) + { + comparator = new moeoDiversityThenFitnessComparator < MOEOT> (); + } + else if (comparatorParam == std::string("Aggregative")) + { + comparator = new moeoAggregativeComparator < MOEOT> (); + } + else + { + std::string stmp = std::string("Invalid comparator strategy: ") + comparatorParam; + throw std::runtime_error(stmp.c_str()); + } + _state.storeFunctor(comparator); + + + /* the selection strategy */ + eoValueParam < eoParamParamType > & selectionParam = _parser.createParam(eoParamParamType("DetTour(2)"), "selection", + "Selection scheme: DetTour(T), StochTour(t) or Random", 'S', "Evolution Engine"); + eoParamParamType & ppSelect = selectionParam.value(); + moeoSelectOne < MOEOT > * select; + if (ppSelect.first == std::string("DetTour")) + { + unsigned int tSize; + if (!ppSelect.second.size()) // no parameter added + { + std::cerr << "WARNING, no parameter passed to DetTour, using 2" << std::endl; + tSize = 2; + // put back 2 in parameter for consistency (and status file) + ppSelect.second.push_back(std::string("2")); + } + else // parameter passed by user as DetTour(T) + { + tSize = atoi(ppSelect.second[0].c_str()); + } + select = new moeoDetTournamentSelect < MOEOT > (*comparator, tSize); + } + else if (ppSelect.first == std::string("StochTour")) + { + double tRate; + if (!ppSelect.second.size()) // no parameter added + { + std::cerr << "WARNING, no parameter passed to StochTour, using 1" << std::endl; + tRate = 1; + // put back 1 in parameter for consistency (and status file) + ppSelect.second.push_back(std::string("1")); + } + else // parameter passed by user as StochTour(T) + { + tRate = atof(ppSelect.second[0].c_str()); + } + select = new moeoStochTournamentSelect < MOEOT > (*comparator, tRate); + } + /* + else if (ppSelect.first == string("Roulette")) + { + // TO DO ! + // ... + } + */ + else if (ppSelect.first == std::string("Random")) + { + select = new moeoRandomSelect (); + } + else + { + std::string stmp = std::string("Invalid selection strategy: ") + ppSelect.first; + throw std::runtime_error(stmp.c_str()); + } + _state.storeFunctor(select); + + + /* the replacement strategy */ + std::string & replacementParam = _parser.createParam(std::string("Elitist"), "replacement", + "Replacement scheme: Elitist, Environmental or Generational", 'R', "Evolution Engine").value(); + moeoReplacement < MOEOT > * replace; + if (replacementParam == std::string("Elitist")) + { + replace = new moeoElitistReplacement < MOEOT> (*fitnessAssignment, *diversityAssignment, *comparator); + } + else if (replacementParam == std::string("Environmental")) + { + replace = new moeoEnvironmentalReplacement < MOEOT> (*fitnessAssignment, *diversityAssignment, *comparator); + } + else if (replacementParam == std::string("Generational")) + { + replace = new moeoGenerationalReplacement < MOEOT> (); + } + else + { + std::string stmp = std::string("Invalid replacement strategy: ") + replacementParam; + throw std::runtime_error(stmp.c_str()); + } + _state.storeFunctor(replace); + + + /* the number of offspring */ + eoValueParam < eoHowMany > & offspringRateParam = _parser.createParam(eoHowMany(1.0), "nbOffspring", + "Number of offspring (percentage or absolute)", 'O', "Evolution Engine"); + + + // the general breeder + eoGeneralBreeder < MOEOT > * breed = new eoGeneralBreeder < MOEOT > (*select, _op, offspringRateParam.value()); + _state.storeFunctor(breed); + // the eoEasyEA + moeoEA < MOEOT > * algo = new moeoEasyEA < MOEOT > (_continue, _eval, *breed, *replace, *fitnessAssignment, *diversityAssignment); + _state.storeFunctor(algo); + return *algo; + +} + +#endif /*MAKE_EA_MOEO_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/do/make_ls_moeo.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/do/make_ls_moeo.h new file mode 100755 index 000000000..4ac3e58f3 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/do/make_ls_moeo.h @@ -0,0 +1,147 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MAKE_LS_MOEO_H_ +#define MAKE_LS_MOEO_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/** + * This functions allows to build a moeoLS from the parser + * @param _parser the parser + * @param _state to store allocated objects + * @param _eval the funtions evaluator + * @param _moveIncrEval the incremental evaluation + * @param _continue the stopping crietria + * @param _op the variation operators + * @param _opInit the initilization operator + * @param _moveInit the move initializer + * @param _nextMove the move incrementor + * @param _archive the archive of non-dominated solutions + */ +template < class MOEOT, class Move > +moeoLS < MOEOT, eoPop & > & do_make_ls_moeo ( + eoParser & _parser, + eoState & _state, + eoEvalFunc < MOEOT > & _eval, + moeoMoveIncrEval < Move > & _moveIncrEval, + eoContinue < MOEOT > & _continue, + eoMonOp < MOEOT > & _op, + eoMonOp < MOEOT > & _opInit, + moMoveInit < Move > & _moveInit, + moNextMove < Move > & _nextMove, + moeoArchive < MOEOT > & _archive +) +{ + /* the objective vector type */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + /* the fitness assignment strategy */ + std::string & fitnessParam = _parser.getORcreateParam(std::string("IndicatorBased"), "fitness", + "Fitness assignment strategy parameter: IndicatorBased...", 'F', + "Evolution Engine").value(); + std::string & indicatorParam = _parser.getORcreateParam(std::string("Epsilon"), "indicator", + "Binary indicator to use with the IndicatorBased assignment: Epsilon, Hypervolume", 'i', + "Evolution Engine").value(); + double rho = _parser.getORcreateParam(1.1, "rho", "reference point for the hypervolume indicator", + 'r', "Evolution Engine").value(); + double kappa = _parser.getORcreateParam(0.05, "kappa", "Scaling factor kappa for IndicatorBased", + 'k', "Evolution Engine").value(); + moeoBinaryIndicatorBasedFitnessAssignment < MOEOT > * fitnessAssignment; + if (fitnessParam == std::string("IndicatorBased")) + { + // metric + moeoNormalizedSolutionVsSolutionBinaryMetric < ObjectiveVector, double > *metric; + if (indicatorParam == std::string("Epsilon")) + { + metric = new moeoAdditiveEpsilonBinaryMetric < ObjectiveVector >; + } + else if (indicatorParam == std::string("Hypervolume")) + { + metric = new moeoHypervolumeBinaryMetric < ObjectiveVector > (rho); + } + else + { + std::string stmp = std::string("Invalid binary quality indicator: ") + indicatorParam; + throw std::runtime_error(stmp.c_str()); + } + fitnessAssignment = new moeoExpBinaryIndicatorBasedFitnessAssignment < MOEOT> (*metric, kappa); + } + else + { + std::string stmp = std::string("Invalid fitness assignment strategy: ") + fitnessParam; + throw std::runtime_error(stmp.c_str()); + } + _state.storeFunctor(fitnessAssignment); + // number of iterations + unsigned int n = _parser.getORcreateParam(1, "n", "Number of iterations for population Initialization", 'n', "Evolution Engine").value(); + // LS + std::string & lsParam = _parser.getORcreateParam(std::string("I-IBMOLS"), "ls", + "Local Search: IBMOLS, I-IBMOLS (Iterated-IBMOLS)...", 'L', + "Evolution Engine").value(); + moeoLS < MOEOT, eoPop & > * ls; + if (lsParam == std::string("IBMOLS")) + { + ls = new moeoIBMOLS < MOEOT, Move > (_moveInit, _nextMove, _eval, _moveIncrEval, *fitnessAssignment, _continue); + ; + } + else if (lsParam == std::string("I-IBMOLS")) + { + ls = new moeoIteratedIBMOLS < MOEOT, Move > (_moveInit, _nextMove, _eval, _moveIncrEval, *fitnessAssignment, _continue, _op, _opInit, n); + } + else + { + std::string stmp = std::string("Invalid fitness assignment strategy: ") + fitnessParam; + throw std::runtime_error(stmp.c_str()); + } + _state.storeFunctor(ls); + // that's it ! + return *ls; +} + +#endif /*MAKE_LS_MOEO_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/fitness/moeoAchievementFitnessAssignment.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/fitness/moeoAchievementFitnessAssignment.h new file mode 100644 index 000000000..b77355bb1 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/fitness/moeoAchievementFitnessAssignment.h @@ -0,0 +1,170 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOACHIEVEMENTFITNESSASSIGNMENT_H_ +#define MOEOACHIEVEMENTFITNESSASSIGNMENT_H_ + +#include +#include +#include + +/** + * Fitness assignment sheme based on the achievement scalarizing function propozed by Wiersbicki (1980). + */ +template < class MOEOT > +class moeoAchievementFitnessAssignment : public moeoScalarFitnessAssignment < MOEOT > + { + public: + + /** the objective vector type of the solutions */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + + /** + * Default ctor + * @param _reference reference point vector + * @param _lambdas weighted coefficients vector + * @param _spn arbitrary small positive number (0 < _spn << 1) + */ + moeoAchievementFitnessAssignment(ObjectiveVector & _reference, std::vector < double > & _lambdas, double _spn=0.0001) : reference(_reference), lambdas(_lambdas), spn(_spn) + { + // consistency check + if ((spn < 0.0) || (spn > 1.0)) + { + std::cout << "Warning, the arbitrary small positive number should be > 0 and <<1, adjusted to 0.0001\n"; + spn = 0.0001; + } + } + + + /** + * Ctor with default values for lambdas (1/nObjectives) + * @param _reference reference point vector + * @param _spn arbitrary small positive number (0 < _spn << 1) + */ + moeoAchievementFitnessAssignment(ObjectiveVector & _reference, double _spn=0.0001) : reference(_reference), spn(_spn) + { + // compute the default values for lambdas + lambdas = std::vector < double > (ObjectiveVector::nObjectives()); + for (unsigned int i=0 ; i 1.0)) + { + std::cout << "Warning, the arbitrary small positive number should be > 0 and <<1, adjusted to 0.0001\n"; + spn = 0.0001; + } + } + + + /** + * Sets the fitness values for every solution contained in the population _pop + * @param _pop the population + */ + virtual void operator()(eoPop < MOEOT > & _pop) + { + for (unsigned int i=0; i<_pop.size() ; i++) + { + compute(_pop[i]); + } + } + + + /** + * Updates the fitness values of the whole population _pop by taking the deletion of the objective vector _objVec into account (nothing to do). + * @param _pop the population + * @param _objVec the objective vector + */ + void updateByDeleting(eoPop < MOEOT > & _pop, ObjectiveVector & _objVec) + { + // nothing to do ;-) + } + + + /** + * Sets the reference point + * @param _reference the new reference point + */ + void setReference(const ObjectiveVector & _reference) + { + reference = _reference; + } + + + private: + + /** the reference point */ + ObjectiveVector reference; + /** the weighted coefficients vector */ + std::vector < double > lambdas; + /** an arbitrary small positive number (0 < _spn << 1) */ + double spn; + + + /** + * Returns a big value (regarded as infinite) + */ + double inf() const + { + return std::numeric_limits::max(); + } + + + /** + * Computes the fitness value for a solution + * @param _moeo the solution + */ + void compute(MOEOT & _moeo) + { + unsigned int nobj = MOEOT::ObjectiveVector::nObjectives(); + double temp; + double min = inf(); + double sum = 0; + for (unsigned int obj=0; obj +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOBINARYINDICATORBASEDFITNESSASSIGNMENT_H_ +#define MOEOBINARYINDICATORBASEDFITNESSASSIGNMENT_H_ + +#include + +/** + * moeoIndicatorBasedFitnessAssignment for binary indicators. + */ +template < class MOEOT > +class moeoBinaryIndicatorBasedFitnessAssignment : public moeoIndicatorBasedFitnessAssignment < MOEOT > + { + public: + + /** The type for objective vector */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + + /** + * Updates the fitness values of the whole population _pop by taking the new objective vector _objVec into account + * and returns the fitness value of _objVec. + * @param _pop the population + * @param _objVec the objective vector + */ + virtual double updateByAdding(eoPop < MOEOT > & _pop, ObjectiveVector & _objVec) = 0; + + }; + +#endif /*MOEOINDICATORBASEDFITNESSASSIGNMENT_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/fitness/moeoCriterionBasedFitnessAssignment.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/fitness/moeoCriterionBasedFitnessAssignment.h new file mode 100644 index 000000000..398e005bc --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/fitness/moeoCriterionBasedFitnessAssignment.h @@ -0,0 +1,50 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOCRITERIONBASEDFITNESSASSIGNMENT_H_ +#define MOEOCRITERIONBASEDFITNESSASSIGNMENT_H_ + +#include + +/** + * moeoCriterionBasedFitnessAssignment is a moeoFitnessAssignment for criterion-based strategies. + */ +template < class MOEOT > +class moeoCriterionBasedFitnessAssignment : public moeoFitnessAssignment < MOEOT > + {}; + +#endif /*MOEOCRITERIONBASEDFITNESSASSIGNMENT_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/fitness/moeoDummyFitnessAssignment.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/fitness/moeoDummyFitnessAssignment.h new file mode 100644 index 000000000..be80edb57 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/fitness/moeoDummyFitnessAssignment.h @@ -0,0 +1,84 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEODUMMYFITNESSASSIGNMENT_H_ +#define MOEODUMMYFITNESSASSIGNMENT_H_ + +#include + +/** + * moeoDummyFitnessAssignment is a moeoFitnessAssignment that gives the value '0' as the individual's fitness for a whole population if it is invalid. + */ +template < class MOEOT > +class moeoDummyFitnessAssignment : public moeoFitnessAssignment < MOEOT > + { + public: + + /** The type for objective vector */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + + /** + * Sets the fitness to '0' for every individuals of the population _pop if it is invalid + * @param _pop the population + */ + void operator () (eoPop < MOEOT > & _pop) + { + for (unsigned int idx = 0; idx<_pop.size (); idx++) + { + if (_pop[idx].invalidFitness()) + { + // set the diversity to 0 + _pop[idx].fitness(0.0); + } + } + } + + + /** + * Updates the fitness values of the whole population _pop by taking the deletion of the objective vector _objVec into account. + * @param _pop the population + * @param _objVec the objective vector + */ + void updateByDeleting(eoPop < MOEOT > & _pop, ObjectiveVector & _objVec) + { + // nothing to do... ;-) + } + + }; + +#endif /*MOEODUMMYFITNESSASSIGNMENT_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/fitness/moeoExpBinaryIndicatorBasedFitnessAssignment.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/fitness/moeoExpBinaryIndicatorBasedFitnessAssignment.h new file mode 100644 index 000000000..a25382f41 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/fitness/moeoExpBinaryIndicatorBasedFitnessAssignment.h @@ -0,0 +1,227 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOEXPBINARYINDICATORBASEDFITNESSASSIGNMENT_H_ +#define MOEOEXPBINARYINDICATORBASEDFITNESSASSIGNMENT_H_ + +#include +#include +#include +#include +#include +#include + +/** + * Fitness assignment sheme based on an indicator proposed in: + * E. Zitzler, S. Künzli, "Indicator-Based Selection in Multiobjective Search", Proc. 8th International Conference on Parallel Problem Solving from Nature (PPSN VIII), pp. 832-842, Birmingham, UK (2004). + * This strategy is, for instance, used in IBEA. + */ +template < class MOEOT > +class moeoExpBinaryIndicatorBasedFitnessAssignment : public moeoBinaryIndicatorBasedFitnessAssignment < MOEOT > + { + public: + + /** The type of objective vector */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + + /** + * Ctor. + * @param _metric the quality indicator + * @param _kappa the scaling factor + */ + moeoExpBinaryIndicatorBasedFitnessAssignment(moeoNormalizedSolutionVsSolutionBinaryMetric < ObjectiveVector, double > & _metric, const double _kappa = 0.05) : metric(_metric), kappa(_kappa) + {} + + + /** + * Sets the fitness values for every solution contained in the population _pop + * @param _pop the population + */ + void operator()(eoPop < MOEOT > & _pop) + { + // 1 - setting of the bounds + setup(_pop); + // 2 - computing every indicator values + computeValues(_pop); + // 3 - setting fitnesses + setFitnesses(_pop); + } + + + /** + * Updates the fitness values of the whole population _pop by taking the deletion of the objective vector _objVec into account. + * @param _pop the population + * @param _objVec the objective vector + */ + void updateByDeleting(eoPop < MOEOT > & _pop, ObjectiveVector & _objVec) + { + std::vector < double > v; + v.resize(_pop.size()); + for (unsigned int i=0; i<_pop.size(); i++) + { + v[i] = metric(_objVec, _pop[i].objectiveVector()); + } + for (unsigned int i=0; i<_pop.size(); i++) + { + _pop[i].fitness( _pop[i].fitness() + exp(-v[i]/kappa) ); + } + } + + + /** + * Updates the fitness values of the whole population _pop by taking the adding of the objective vector _objVec into account + * and returns the fitness value of _objVec. + * @param _pop the population + * @param _objVec the objective vector + */ + double updateByAdding(eoPop < MOEOT > & _pop, ObjectiveVector & _objVec) + { + std::vector < double > v; + // update every fitness values to take the new individual into account + v.resize(_pop.size()); + for (unsigned int i=0; i<_pop.size(); i++) + { + v[i] = metric(_objVec, _pop[i].objectiveVector()); + } + for (unsigned int i=0; i<_pop.size(); i++) + { + _pop[i].fitness( _pop[i].fitness() - exp(-v[i]/kappa) ); + } + // compute the fitness of the new individual + v.clear(); + v.resize(_pop.size()); + for (unsigned int i=0; i<_pop.size(); i++) + { + v[i] = metric(_pop[i].objectiveVector(), _objVec); + } + double result = 0; + for (unsigned int i=0; i & metric; + /** the scaling factor */ + double kappa; + /** the computed indicator values */ + std::vector < std::vector > values; + + + /** + * Sets the bounds for every objective using the min and the max value for every objective vector of _pop + * @param _pop the population + */ + void setup(const eoPop < MOEOT > & _pop) + { + double min, max; + for (unsigned int i=0; i & _pop) + { + values.clear(); + values.resize(_pop.size()); + for (unsigned int i=0; i<_pop.size(); i++) + { + values[i].resize(_pop.size()); + for (unsigned int j=0; j<_pop.size(); j++) + { + if (i != j) + { + values[i][j] = metric(_pop[i].objectiveVector(), _pop[j].objectiveVector()); + } + } + } + } + + + /** + * Sets the fitness value of the whple population + * @param _pop the population + */ + void setFitnesses(eoPop < MOEOT > & _pop) + { + for (unsigned int i=0; i<_pop.size(); i++) + { + _pop[i].fitness(computeFitness(i)); + } + } + + + /** + * Returns the fitness value of the _idx th individual of the population + * @param _idx the index + */ + double computeFitness(const unsigned int _idx) + { + double result = 0; + for (unsigned int i=0; i +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOFASTNONDOMINATEDSORTINGFITNESSASSIGNMENT_H_ +#define MOEOFASTNONDOMINATEDSORTINGFITNESSASSIGNMENT_H_ + +#include +#include +#include +#include +#include +#include + + +/** + * Fitness assignment sheme based on Pareto-dominance count proposed in: + * N. Srinivas, K. Deb, "Multiobjective Optimization Using Nondominated Sorting in Genetic Algorithms", Evolutionary Computation vol. 2, no. 3, pp. 221-248 (1994) + * and in: + * K. Deb, A. Pratap, S. Agarwal, T. Meyarivan, "A Fast and Elitist Multi-Objective Genetic Algorithm: NSGA-II", IEEE Transactions on Evolutionary Computation, vol. 6, no. 2 (2002). + * This strategy is, for instance, used in NSGA and NSGA-II. + */ +template < class MOEOT > +class moeoFastNonDominatedSortingFitnessAssignment : public moeoParetoBasedFitnessAssignment < MOEOT > + { + public: + + /** the objective vector type of the solutions */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + + /** + * Default ctor + */ + moeoFastNonDominatedSortingFitnessAssignment() : comparator(paretoComparator) + {} + + + /** + * Ctor where you can choose your own way to compare objective vectors + * @param _comparator the functor used to compare objective vectors + */ + moeoFastNonDominatedSortingFitnessAssignment(moeoObjectiveVectorComparator < ObjectiveVector > & _comparator) : comparator(_comparator) + {} + + + /** + * Sets the fitness values for every solution contained in the population _pop + * @param _pop the population + */ + void operator()(eoPop < MOEOT > & _pop) + { + // number of objectives for the problem under consideration + unsigned int nObjectives = MOEOT::ObjectiveVector::nObjectives(); + if (nObjectives == 1) + { + // one objective + oneObjective(_pop); + } + else if (nObjectives == 2) + { + // two objectives (the two objectives function is still to implement) + mObjectives(_pop); + } + else if (nObjectives > 2) + { + // more than two objectives + mObjectives(_pop); + } + else + { + // problem with the number of objectives + throw std::runtime_error("Problem with the number of objectives in moeoNonDominatedSortingFitnessAssignment"); + } + // a higher fitness is better, so the values need to be inverted + double max = _pop[0].fitness(); + for (unsigned int i=1 ; i<_pop.size() ; i++) + { + max = std::max(max, _pop[i].fitness()); + } + for (unsigned int i=0 ; i<_pop.size() ; i++) + { + _pop[i].fitness(max - _pop[i].fitness()); + } + } + + + /** + * Updates the fitness values of the whole population _pop by taking the deletion of the objective vector _objVec into account. + * @param _pop the population + * @param _objVec the objective vector + */ + void updateByDeleting(eoPop < MOEOT > & _pop, ObjectiveVector & _objVec) + { + for (unsigned int i=0; i<_pop.size(); i++) + { + // if _pop[i] is dominated by _objVec + if ( comparator(_pop[i].objectiveVector(), _objVec) ) + { + _pop[i].fitness(_pop[i].fitness()+1); + } + } + } + + + private: + + /** Functor to compare two objective vectors */ + moeoObjectiveVectorComparator < ObjectiveVector > & comparator; + /** Functor to compare two objective vectors according to Pareto dominance relation */ + moeoParetoObjectiveVectorComparator < ObjectiveVector > paretoComparator; + /** Functor allowing to compare two solutions according to their first objective value, then their second, and so on. */ + class ObjectiveComparator : public moeoComparator < MOEOT > + { + public: + /** + * Returns true if _moeo1 < _moeo2 on the first objective, then on the second, and so on + * @param _moeo1 the first solution + * @param _moeo2 the second solution + */ + const bool operator()(const MOEOT & _moeo1, const MOEOT & _moeo2) + { + return cmp(_moeo1.objectiveVector(), _moeo2.objectiveVector()); + } + private: + /** the corresponding comparator for objective vectors */ + moeoObjectiveObjectiveVectorComparator < ObjectiveVector > cmp; + } + objComparator; + + + /** + * Sets the fitness values for mono-objective problems + * @param _pop the population + */ + void oneObjective (eoPop < MOEOT > & _pop) + { + // sorts the population in the ascending order + std::sort(_pop.begin(), _pop.end(), objComparator); + // assign fitness values + unsigned int rank = 1; + _pop[_pop.size()-1].fitness(rank); + for (unsigned int i=_pop.size()-2; i>=0; i--) + { + if (_pop[i].objectiveVector() != _pop[i+1].objectiveVector()) + { + rank++; + } + _pop[i].fitness(rank); + } + } + + + /** + * Sets the fitness values for bi-objective problems with a complexity of O(n log n), where n stands for the population size + * @param _pop the population + */ + void twoObjectives (eoPop < MOEOT > & _pop) + { + //... TO DO ! + } + + + /** + * Sets the fitness values for problems with more than two objectives with a complexity of O(n² log n), where n stands for the population size + * @param _pop the population + */ + void mObjectives (eoPop < MOEOT > & _pop) + { + // S[i] = indexes of the individuals dominated by _pop[i] + std::vector < std::vector > S(_pop.size()); + // n[i] = number of individuals that dominate the individual _pop[i] + std::vector < unsigned int > n(_pop.size(), 0); + // fronts: F[i] = indexes of the individuals contained in the ith front + std::vector < std::vector > F(_pop.size()+2); + // used to store the number of the first front + F[1].reserve(_pop.size()); + for (unsigned int p=0; p<_pop.size(); p++) + { + for (unsigned int q=0; q<_pop.size(); q++) + { + // if q is dominated by p + if ( comparator(_pop[q].objectiveVector(), _pop[p].objectiveVector()) ) + { + // add q to the set of solutions dominated by p + S[p].push_back(q); + } + // if p is dominated by q + else if ( comparator(_pop[p].objectiveVector(), _pop[q].objectiveVector()) ) + { + // increment the domination counter of p + n[p]++; + } + } + // if no individual dominates p + if (n[p] == 0) + { + // p belongs to the first front + _pop[p].fitness(1); + F[1].push_back(p); + } + } + // front counter + unsigned int counter=1; + unsigned int p,q; + while (! F[counter].empty()) + { + // used to store the number of the next front + F[counter+1].reserve(_pop.size()); + for (unsigned int i=0; i +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOFITNESSASSIGNMENT_H_ +#define MOEOFITNESSASSIGNMENT_H_ + +#include +#include + +/** + * Functor that sets the fitness values of a whole population. + */ +template < class MOEOT > +class moeoFitnessAssignment : public eoUF < eoPop < MOEOT > &, void > + { + public: + + /** The type for objective vector */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + + /** + * Updates the fitness values of the whole population _pop by taking the deletion of the objective vector _objVec into account. + * @param _pop the population + * @param _objVec the objective vector + */ + virtual void updateByDeleting(eoPop < MOEOT > & _pop, ObjectiveVector & _objVec) = 0; + + + /** + * Updates the fitness values of the whole population _pop by taking the deletion of the individual _moeo into account. + * @param _pop the population + * @param _moeo the individual + */ + void updateByDeleting(eoPop < MOEOT > & _pop, MOEOT & _moeo) + { + updateByDeleting(_pop, _moeo.objectiveVector()); + } + + }; + +#endif /*MOEOFITNESSASSIGNMENT_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/fitness/moeoIndicatorBasedFitnessAssignment.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/fitness/moeoIndicatorBasedFitnessAssignment.h new file mode 100644 index 000000000..23a761436 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/fitness/moeoIndicatorBasedFitnessAssignment.h @@ -0,0 +1,50 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOINDICATORBASEDFITNESSASSIGNMENT_H_ +#define MOEOINDICATORBASEDFITNESSASSIGNMENT_H_ + +#include + +/** + * moeoIndicatorBasedFitnessAssignment is a moeoFitnessAssignment for Indicator-based strategies. + */ +template < class MOEOT > +class moeoIndicatorBasedFitnessAssignment : public moeoFitnessAssignment < MOEOT > + {}; + +#endif /*MOEOINDICATORBASEDFITNESSASSIGNMENT_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/fitness/moeoParetoBasedFitnessAssignment.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/fitness/moeoParetoBasedFitnessAssignment.h new file mode 100644 index 000000000..ab794e279 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/fitness/moeoParetoBasedFitnessAssignment.h @@ -0,0 +1,50 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOPARETOBASEDFITNESSASSIGNMENT_H_ +#define MOEOPARETOBASEDFITNESSASSIGNMENT_H_ + +#include + +/** + * moeoParetoBasedFitnessAssignment is a moeoFitnessAssignment for Pareto-based strategies. + */ +template < class MOEOT > +class moeoParetoBasedFitnessAssignment : public moeoFitnessAssignment < MOEOT > + {}; + +#endif /*MOEOPARETOBASEDFITNESSASSIGNMENT_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/fitness/moeoReferencePointIndicatorBasedFitnessAssignment.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/fitness/moeoReferencePointIndicatorBasedFitnessAssignment.h new file mode 100755 index 000000000..6fb4470d2 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/fitness/moeoReferencePointIndicatorBasedFitnessAssignment.h @@ -0,0 +1,134 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOREFERENCEPOINTINDICATORBASEDFITNESSASSIGNMENT_H_ +#define MOEOREFERENCEPOINTINDICATORBASEDFITNESSASSIGNMENT_H_ + +#include +#include +#include +#include + +/** + * Fitness assignment sheme based a Reference Point and a Quality Indicator. + */ +template < class MOEOT > +class moeoReferencePointIndicatorBasedFitnessAssignment : public moeoFitnessAssignment < MOEOT > + { + public: + + /** The type of objective vector */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + /** + * Ctor + * @param _refPoint the reference point + * @param _metric the quality indicator + */ + moeoReferencePointIndicatorBasedFitnessAssignment (ObjectiveVector & _refPoint, moeoNormalizedSolutionVsSolutionBinaryMetric < ObjectiveVector, double > & _metric) : + refPoint(_refPoint), metric(_metric) + {} + + + /** + * Sets the fitness values for every solution contained in the population _pop + * @param _pop the population + */ + void operator()(eoPop < MOEOT > & _pop) + { + // 1 - setting of the bounds + setup(_pop); + // 2 - setting fitnesses + setFitnesses(_pop); + } + + + /** + * Updates the fitness values of the whole population _pop by taking the deletion of the objective vector _objVec into account. + * @param _pop the population + * @param _objVec the objective vector + */ + void updateByDeleting(eoPop < MOEOT > & _pop, ObjectiveVector & _objVec) + { + // nothing to do ;-) + } + + + protected: + + /** the reference point */ + ObjectiveVector & refPoint; + /** the quality indicator */ + moeoNormalizedSolutionVsSolutionBinaryMetric < ObjectiveVector, double > & metric; + + + /** + * Sets the bounds for every objective using the min and the max value for every objective vector of _pop (and the reference point) + * @param _pop the population + */ + void setup(const eoPop < MOEOT > & _pop) + { + double min, max; + for (unsigned int i=0; i & _pop) + { + for (unsigned int i=0; i<_pop.size(); i++) + { + _pop[i].fitness(- metric(_pop[i].objectiveVector(), refPoint) ); + } + } + + }; + +#endif /*MOEOREFERENCEPOINTINDICATORBASEDFITNESSASSIGNMENT_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/fitness/moeoScalarFitnessAssignment.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/fitness/moeoScalarFitnessAssignment.h new file mode 100644 index 000000000..1cbbd56d9 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/fitness/moeoScalarFitnessAssignment.h @@ -0,0 +1,50 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOSCALARFITNESSASSIGNMENT_H_ +#define MOEOSCALARFITNESSASSIGNMENT_H_ + +#include + +/** + * moeoScalarFitnessAssignment is a moeoFitnessAssignment for scalar strategies. + */ +template < class MOEOT > +class moeoScalarFitnessAssignment : public moeoFitnessAssignment < MOEOT > + {}; + +#endif /*MOEOSCALARFITNESSASSIGNMENT_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/fitness/moeoUnaryIndicatorBasedFitnessAssignment.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/fitness/moeoUnaryIndicatorBasedFitnessAssignment.h new file mode 100644 index 000000000..119ea37a8 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/fitness/moeoUnaryIndicatorBasedFitnessAssignment.h @@ -0,0 +1,50 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOUNARYINDICATORBASEDFITNESSASSIGNMENT_H_ +#define MOEOUNARYINDICATORBASEDFITNESSASSIGNMENT_H_ + +#include + +/** + * moeoIndicatorBasedFitnessAssignment for unary indicators. + */ +template < class MOEOT > +class moeoUnaryIndicatorBasedFitnessAssignment : public moeoIndicatorBasedFitnessAssignment < MOEOT > + {}; + +#endif /*MOEOINDICATORBASEDFITNESSASSIGNMENT_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/metric/moeoAdditiveEpsilonBinaryMetric.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/metric/moeoAdditiveEpsilonBinaryMetric.h new file mode 100644 index 000000000..8dacc9d7c --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/metric/moeoAdditiveEpsilonBinaryMetric.h @@ -0,0 +1,109 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOADDITIVEEPSILONBINARYMETRIC_H_ +#define MOEOADDITIVEEPSILONBINARYMETRIC_H_ + +#include + +/** + * Additive epsilon binary metric allowing to compare two objective vectors as proposed in + * Zitzler E., Thiele L., Laumanns M., Fonseca C. M., Grunert da Fonseca V.: + * Performance Assessment of Multiobjective Optimizers: An Analysis and Review. IEEE Transactions on Evolutionary Computation 7(2), pp.117–132 (2003). + */ +template < class ObjectiveVector > +class moeoAdditiveEpsilonBinaryMetric : public moeoNormalizedSolutionVsSolutionBinaryMetric < ObjectiveVector, double > + { + public: + + /** + * Returns the minimal distance by which the objective vector _o1 must be translated in all objectives + * so that it weakly dominates the objective vector _o2 + * @warning don't forget to set the bounds for every objective before the call of this function + * @param _o1 the first objective vector + * @param _o2 the second objective vector + */ + double operator()(const ObjectiveVector & _o1, const ObjectiveVector & _o2) + { + // computation of the epsilon value for the first objective + double result = epsilon(_o1, _o2, 0); + // computation of the epsilon value for the other objectives + double tmp; + for (unsigned int i=1; i :: bounds; + + + /** + * Returns the epsilon value by which the objective vector _o1 must be translated in the objective _obj + * so that it dominates the objective vector _o2 + * @param _o1 the first objective vector + * @param _o2 the second objective vector + * @param _obj the index of the objective + */ + double epsilon(const ObjectiveVector & _o1, const ObjectiveVector & _o2, const unsigned int _obj) + { + double result; + // if the objective _obj have to be minimized + if (ObjectiveVector::Traits::minimizing(_obj)) + { + // _o1[_obj] - _o2[_obj] + result = ( (_o1[_obj] - bounds[_obj].minimum()) / bounds[_obj].range() ) - ( (_o2[_obj] - bounds[_obj].minimum()) / bounds[_obj].range() ); + } + // if the objective _obj have to be maximized + else + { + // _o2[_obj] - _o1[_obj] + result = ( (_o2[_obj] - bounds[_obj].minimum()) / bounds[_obj].range() ) - ( (_o1[_obj] - bounds[_obj].minimum()) / bounds[_obj].range() ); + } + return result; + } + + }; + +#endif /*MOEOADDITIVEEPSILONBINARYMETRIC_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/metric/moeoContributionMetric.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/metric/moeoContributionMetric.h new file mode 100644 index 000000000..f8df458da --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/metric/moeoContributionMetric.h @@ -0,0 +1,138 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOCONTRIBUTIONMETRIC_H_ +#define MOEOCONTRIBUTIONMETRIC_H_ + +#include +#include + +/** + * The contribution metric evaluates the proportion of non-dominated solutions given by a Pareto set relatively to another Pareto set + * (Meunier, Talbi, Reininger: 'A multiobjective genetic algorithm for radio network optimization', in Proc. of the 2000 Congress on Evolutionary Computation, IEEE Press, pp. 317-324) + */ +template < class ObjectiveVector > +class moeoContributionMetric : public moeoVectorVsVectorBinaryMetric < ObjectiveVector, double > + { + public: + + /** + * Returns the contribution of the Pareto set '_set1' relatively to the Pareto set '_set2' + * @param _set1 the first Pareto set + * @param _set2 the second Pareto set + */ + double operator()(const std::vector < ObjectiveVector > & _set1, const std::vector < ObjectiveVector > & _set2) + { + unsigned int c = card_C(_set1, _set2); + unsigned int w1 = card_W(_set1, _set2); + unsigned int n1 = card_N(_set1, _set2); + unsigned int w2 = card_W(_set2, _set1); + unsigned int n2 = card_N(_set2, _set1); + return (double) (c / 2.0 + w1 + n1) / (c + w1 + n1 + w2 + n2); + } + + + private: + + /** Functor to compare two objective vectors according to Pareto dominance relation */ + moeoParetoObjectiveVectorComparator < ObjectiveVector > paretoComparator; + + + /** + * Returns the number of solutions both in '_set1' and '_set2' + * @param _set1 the first Pareto set + * @param _set2 the second Pareto set + */ + unsigned int card_C (const std::vector < ObjectiveVector > & _set1, const std::vector < ObjectiveVector > & _set2) + { + unsigned int c=0; + for (unsigned int i=0; i<_set1.size(); i++) + for (unsigned int j=0; j<_set2.size(); j++) + if (_set1[i] == _set2[j]) + { + c++; + break; + } + return c; + } + + + /** + * Returns the number of solutions in '_set1' dominating at least one solution of '_set2' + * @param _set1 the first Pareto set + * @param _set2 the second Pareto set + */ + unsigned int card_W (const std::vector < ObjectiveVector > & _set1, const std::vector < ObjectiveVector > & _set2) + { + unsigned int w=0; + for (unsigned int i=0; i<_set1.size(); i++) + for (unsigned int j=0; j<_set2.size(); j++) + if (paretoComparator(_set2[j], _set1[i])) + { + w++; + break; + } + return w; + } + + + /** + * Returns the number of solutions in '_set1' having no relation of dominance with those from '_set2' + * @param _set1 the first Pareto set + * @param _set2 the second Pareto set + */ + unsigned int card_N (const std::vector < ObjectiveVector > & _set1, const std::vector < ObjectiveVector > & _set2) + { + unsigned int n=0; + for (unsigned int i=0; i<_set1.size(); i++) + { + bool domin_rel = false; + for (unsigned int j=0; j<_set2.size(); j++) + if ( (paretoComparator(_set2[j], _set1[i])) || (paretoComparator(_set1[i], _set2[j])) ) + { + domin_rel = true; + break; + } + if (! domin_rel) + n++; + } + return n; + } + + }; + +#endif /*MOEOCONTRIBUTIONMETRIC_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/metric/moeoEntropyMetric.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/metric/moeoEntropyMetric.h new file mode 100644 index 000000000..012e99d9e --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/metric/moeoEntropyMetric.h @@ -0,0 +1,223 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOENTROPYMETRIC_H_ +#define MOEOENTROPYMETRIC_H_ + +#include +#include +#include + +/** + * The entropy gives an idea of the diversity of a Pareto set relatively to another + * (Basseur, Seynhaeve, Talbi: 'Design of Multi-objective Evolutionary Algorithms: Application to the Flow-shop Scheduling Problem', in Proc. of the 2002 Congress on Evolutionary Computation, IEEE Press, pp. 1155-1156) + */ +template < class ObjectiveVector > +class moeoEntropyMetric : public moeoVectorVsVectorBinaryMetric < ObjectiveVector, double > + { + public: + + /** + * Returns the entropy of the Pareto set '_set1' relatively to the Pareto set '_set2' + * @param _set1 the first Pareto set + * @param _set2 the second Pareto set + */ + double operator()(const std::vector < ObjectiveVector > & _set1, const std::vector < ObjectiveVector > & _set2) + { + // normalization + std::vector< ObjectiveVector > set1 = _set1; + std::vector< ObjectiveVector > set2= _set2; + removeDominated (set1); + removeDominated (set2); + prenormalize (set1); + normalize (set1); + normalize (set2); + + // making of PO* + std::vector< ObjectiveVector > star; // rotf :-) + computeUnion (set1, set2, star); + removeDominated (star); + + // making of PO1 U PO* + std::vector< ObjectiveVector > union_set1_star; // rotf again ... + computeUnion (set1, star, union_set1_star); + + unsigned int C = union_set1_star.size(); + float omega=0; + float entropy=0; + + for (unsigned int i=0 ; i 0) + { + omega += 1.0 / N_i; + entropy += (float) n_i / (N_i * C) * log (((float) n_i / C) / log (2.0)); + } + } + entropy /= - log (omega); + entropy *= log (2.0); + return entropy; + } + + + private: + + /** vector of min values */ + std::vector vect_min_val; + /** vector of max values */ + std::vector vect_max_val; + /** Functor to compare two objective vectors according to Pareto dominance relation */ + moeoParetoObjectiveVectorComparator < ObjectiveVector > paretoComparator; + + + /** + * Removes the dominated individuals contained in _f + * @param _f a Pareto set + */ + void removeDominated(std::vector < ObjectiveVector > & _f) + { + for (unsigned int i=0 ; i<_f.size(); i++) + { + bool dom = false; + for (unsigned int j=0; j<_f.size(); j++) + if (i != j && paretoComparator(_f[i],_f[j])) + { + dom = true; + break; + } + if (dom) + { + _f[i] = _f.back(); + _f.pop_back(); + i--; + } + } + } + + + /** + * Prenormalization + * @param _f a Pareto set + */ + void prenormalize (const std::vector< ObjectiveVector > & _f) + { + vect_min_val.clear(); + vect_max_val.clear(); + + for (unsigned int i=0 ; imax_val) + max_val = _f[j][i]; + } + vect_min_val.push_back(min_val); + vect_max_val.push_back (max_val); + } + } + + + /** + * Normalization + * @param _f a Pareto set + */ + void normalize (std::vector< ObjectiveVector > & _f) + { + for (unsigned int i=0 ; i & _f1, const std::vector< ObjectiveVector > & _f2, std::vector< ObjectiveVector > & _f) + { + _f = _f1 ; + for (unsigned int i=0; i<_f2.size(); i++) + { + bool b = false; + for (unsigned int j=0; j<_f1.size(); j ++) + if (_f1[j] == _f2[i]) + { + b = true; + break; + } + if (! b) + _f.push_back(_f2[i]); + } + } + + + /** + * How many in niche + */ + unsigned int howManyInNicheOf (const std::vector< ObjectiveVector > & _f, const ObjectiveVector & _s, unsigned int _size) + { + unsigned int n=0; + for (unsigned int i=0 ; i<_f.size(); i++) + { + if (euclidianDistance(_f[i], _s) < (_s.size() / (double) _size)) + n++; + } + return n; + } + + + /** + * Euclidian distance + */ + double euclidianDistance (const ObjectiveVector & _set1, const ObjectiveVector & _to, unsigned int _deg = 2) + { + double dist=0; + for (unsigned int i=0; i<_set1.size(); i++) + dist += pow(fabs(_set1[i] - _to[i]), (int)_deg); + return pow(dist, 1.0 / _deg); + } + + }; + +#endif /*MOEOENTROPYMETRIC_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/metric/moeoHypervolumeBinaryMetric.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/metric/moeoHypervolumeBinaryMetric.h new file mode 100644 index 000000000..d2e61cbf0 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/metric/moeoHypervolumeBinaryMetric.h @@ -0,0 +1,166 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOHYPERVOLUMEBINARYMETRIC_H_ +#define MOEOHYPERVOLUMEBINARYMETRIC_H_ + +#include +#include +#include + +/** + * Hypervolume binary metric allowing to compare two objective vectors as proposed in + * Zitzler E., Künzli S.: Indicator-Based Selection in Multiobjective Search. In Parallel Problem Solving from Nature (PPSN VIII). + * Lecture Notes in Computer Science 3242, Springer, Birmingham, UK pp.832–842 (2004). + * This indicator is based on the hypervolume concept introduced in + * Zitzler, E., Thiele, L.: Multiobjective Optimization Using Evolutionary Algorithms - A Comparative Case Study. + * Parallel Problem Solving from Nature (PPSN-V), pp.292-301 (1998). + */ +template < class ObjectiveVector > +class moeoHypervolumeBinaryMetric : public moeoNormalizedSolutionVsSolutionBinaryMetric < ObjectiveVector, double > + { + public: + + /** + * Ctor + * @param _rho value used to compute the reference point from the worst values for each objective (default : 1.1) + */ + moeoHypervolumeBinaryMetric(double _rho = 1.1) : rho(_rho) + { + // not-a-maximization problem check + for (unsigned int i=0; i :: bounds; + /** Functor to compare two objective vectors according to Pareto dominance relation */ + moeoParetoObjectiveVectorComparator < ObjectiveVector > paretoComparator; + + + /** + * Returns the volume of the space that is dominated by _o2 but not by _o1 with respect to a reference point computed using rho for the objective _obj. + * @param _o1 the first objective vector + * @param _o2 the second objective vector + * @param _obj the objective index + * @param _flag used for iteration, if _flag=true _o2 is not talen into account (default : false) + */ + double hypervolume(const ObjectiveVector & _o1, const ObjectiveVector & _o2, const unsigned int _obj, const bool _flag = false) + { + double result; + double range = rho * bounds[_obj].range(); + double max = bounds[_obj].minimum() + range; + // value of _1 for the objective _obj + double v1 = _o1[_obj]; + // value of _2 for the objective _obj (if _flag=true, v2=max) + double v2; + if (_flag) + { + v2 = max; + } + else + { + v2 = _o2[_obj]; + } + // computation of the volume + if (_obj == 0) + { + if (v1 < v2) + { + result = (v2 - v1) / range; + } + else + { + result = 0; + } + } + else + { + if (v1 < v2) + { + result = ( hypervolume(_o1, _o2, _obj-1, true) * (v2 - v1) / range ) + ( hypervolume(_o1, _o2, _obj-1) * (max - v2) / range ); + } + else + { + result = hypervolume(_o1, _o2, _obj-1) * (max - v2) / range; + } + } + return result; + } + + }; + +#endif /*MOEOHYPERVOLUMEBINARYMETRIC_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/metric/moeoMetric.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/metric/moeoMetric.h new file mode 100644 index 000000000..b214803de --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/metric/moeoMetric.h @@ -0,0 +1,99 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOMETRIC_H_ +#define MOEOMETRIC_H_ + +#include +#include + +/** + * Base class for performance metrics (also known as quality indicators). + */ +class moeoMetric : public eoFunctorBase + {}; + + +/** + * Base class for unary metrics. + */ +template < class A, class R > +class moeoUnaryMetric : public eoUF < A, R >, public moeoMetric + {}; + + +/** + * Base class for binary metrics. + */ +template < class A1, class A2, class R > +class moeoBinaryMetric : public eoBF < A1, A2, R >, public moeoMetric + {}; + + +/** + * Base class for unary metrics dedicated to the performance evaluation of a single solution's objective vector. + */ +template < class ObjectiveVector, class R > +class moeoSolutionUnaryMetric : public moeoUnaryMetric < const ObjectiveVector &, R > + {}; + + +/** + * Base class for unary metrics dedicated to the performance evaluation of a Pareto set (a vector of objective vectors) + */ +template < class ObjectiveVector, class R > +class moeoVectorUnaryMetric : public moeoUnaryMetric < const std::vector < ObjectiveVector > &, R > + {}; + + +/** + * Base class for binary metrics dedicated to the performance comparison between two solutions's objective vectors. + */ +template < class ObjectiveVector, class R > +class moeoSolutionVsSolutionBinaryMetric : public moeoBinaryMetric < const ObjectiveVector &, const ObjectiveVector &, R > + {}; + + +/** + * Base class for binary metrics dedicated to the performance comparison between two Pareto sets (two vectors of objective vectors) + */ +template < class ObjectiveVector, class R > +class moeoVectorVsVectorBinaryMetric : public moeoBinaryMetric < const std::vector < ObjectiveVector > &, const std::vector < ObjectiveVector > &, R > + {}; + + +#endif /*MOEOMETRIC_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/metric/moeoNormalizedSolutionVsSolutionBinaryMetric.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/metric/moeoNormalizedSolutionVsSolutionBinaryMetric.h new file mode 100644 index 000000000..95a4e54ab --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/metric/moeoNormalizedSolutionVsSolutionBinaryMetric.h @@ -0,0 +1,113 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEONORMALIZEDSOLUTIONVSSOLUTIONBINARYMETRIC_H_ +#define MOEONORMALIZEDSOLUTIONVSSOLUTIONBINARYMETRIC_H_ + +#include +#include +#include + +/** + * Base class for binary metrics dedicated to the performance comparison between two solutions's objective vectors using normalized values. + * Then, indicator values lie in the interval [-1,1]. + * Note that you have to set the bounds for every objective before using the operator(). + */ +template < class ObjectiveVector, class R > +class moeoNormalizedSolutionVsSolutionBinaryMetric : public moeoSolutionVsSolutionBinaryMetric < ObjectiveVector, R > + { + public: + + /** + * Default ctr for any moeoNormalizedSolutionVsSolutionBinaryMetric object + */ + moeoNormalizedSolutionVsSolutionBinaryMetric() + { + bounds.resize(ObjectiveVector::Traits::nObjectives()); + // initialize bounds in case someone does not want to use them + for (unsigned int i=0; i bounds; + + }; + +#endif /*MOEONORMALIZEDSOLUTIONVSSOLUTIONBINARYMETRIC_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/moeo b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/moeo new file mode 100644 index 000000000..c9d4d6555 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/moeo @@ -0,0 +1,126 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEO_ +#define MOEO_ + + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + + +#endif /*MOEO_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/move/moeoMoveIncrEval.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/move/moeoMoveIncrEval.h new file mode 100644 index 000000000..d6ef1e38d --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/move/moeoMoveIncrEval.h @@ -0,0 +1,47 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +#ifndef _MOEOMOVEINCREVAL_H +#define _MOEOMOVEINCREVAL_H + +#include + +template < class Move > +class moeoMoveIncrEval : public eoBF < const Move &, const typename Move::EOType &, typename Move::EOType::ObjectiveVector > + {}; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/replacement/moeoElitistReplacement.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/replacement/moeoElitistReplacement.h new file mode 100644 index 000000000..75f896b2e --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/replacement/moeoElitistReplacement.h @@ -0,0 +1,156 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOELITISTREPLACEMENT_H_ +#define MOEOELITISTREPLACEMENT_H_ + +#include +#include +#include +#include +#include +#include + +/** + * Elitist replacement strategy that consists in keeping the N best individuals. + */ +template < class MOEOT > class moeoElitistReplacement:public moeoReplacement < MOEOT > + { + public: + + /** + * Full constructor. + * @param _fitnessAssignment the fitness assignment strategy + * @param _diversityAssignment the diversity assignment strategy + * @param _comparator the comparator (used to compare 2 individuals) + */ + moeoElitistReplacement (moeoFitnessAssignment < MOEOT > & _fitnessAssignment, moeoDiversityAssignment < MOEOT > & _diversityAssignment, moeoComparator < MOEOT > & _comparator) : + fitnessAssignment (_fitnessAssignment), diversityAssignment (_diversityAssignment), comparator (_comparator) + {} + + + /** + * Constructor without comparator. A moeoFitThenDivComparator is used as default. + * @param _fitnessAssignment the fitness assignment strategy + * @param _diversityAssignment the diversity assignment strategy + */ + moeoElitistReplacement (moeoFitnessAssignment < MOEOT > & _fitnessAssignment, moeoDiversityAssignment < MOEOT > & _diversityAssignment) : + fitnessAssignment (_fitnessAssignment), diversityAssignment (_diversityAssignment), comparator (defaultComparator) + {} + + + /** + * Constructor without moeoDiversityAssignement. A dummy diversity is used as default. + * @param _fitnessAssignment the fitness assignment strategy + * @param _comparator the comparator (used to compare 2 individuals) + */ + moeoElitistReplacement (moeoFitnessAssignment < MOEOT > & _fitnessAssignment, moeoComparator < MOEOT > & _comparator) : + fitnessAssignment (_fitnessAssignment), diversityAssignment (defaultDiversity), comparator (_comparator) + {} + + + /** + * Constructor without moeoDiversityAssignement nor moeoComparator. + * A moeoFitThenDivComparator and a dummy diversity are used as default. + * @param _fitnessAssignment the fitness assignment strategy + */ + moeoElitistReplacement (moeoFitnessAssignment < MOEOT > & _fitnessAssignment) : + fitnessAssignment (_fitnessAssignment), diversityAssignment (defaultDiversity), comparator (defaultComparator) + {} + + + /** + * Replaces the first population by adding the individuals of the second one, sorting with a moeoComparator and resizing the whole population obtained. + * @param _parents the population composed of the parents (the population you want to replace) + * @param _offspring the offspring population + */ + void operator () (eoPop < MOEOT > &_parents, eoPop < MOEOT > &_offspring) + { + unsigned int sz = _parents.size (); + // merges offspring and parents into a global population + _parents.reserve (_parents.size () + _offspring.size ()); + std::copy (_offspring.begin (), _offspring.end (), back_inserter (_parents)); + // evaluates the fitness and the diversity of this global population + fitnessAssignment (_parents); + diversityAssignment (_parents); + // sorts the whole population according to the comparator + std::sort(_parents.begin(), _parents.end(), comparator); + // finally, resize this global population + _parents.resize (sz); + // and clear the offspring population + _offspring.clear (); + } + + + protected: + + /** the fitness assignment strategy */ + moeoFitnessAssignment < MOEOT > & fitnessAssignment; + /** the diversity assignment strategy */ + moeoDiversityAssignment < MOEOT > & diversityAssignment; + /** a dummy diversity assignment can be used as default */ + moeoDummyDiversityAssignment < MOEOT > defaultDiversity; + /** a fitness then diversity comparator can be used as default */ + moeoFitnessThenDiversityComparator < MOEOT > defaultComparator; + /** this object is used to compare solutions in order to sort the population */ + class Cmp + { + public: + /** + * Ctor. + * @param _comp the comparator + */ + Cmp(moeoComparator < MOEOT > & _comp) : comp(_comp) + {} + /** + * Returns true if _moeo1 is greater than _moeo2 according to the comparator + * _moeo1 the first individual + * _moeo2 the first individual + */ + bool operator()(const MOEOT & _moeo1, const MOEOT & _moeo2) + { + return comp(_moeo2,_moeo1); + } + private: + /** the comparator */ + moeoComparator < MOEOT > & comp; + } + comparator; + + }; + +#endif /*MOEOELITISTREPLACEMENT_H_ */ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/replacement/moeoEnvironmentalReplacement.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/replacement/moeoEnvironmentalReplacement.h new file mode 100755 index 000000000..4bba8e962 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/replacement/moeoEnvironmentalReplacement.h @@ -0,0 +1,172 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOENVIRONMENTALREPLACEMENT_H_ +#define MOEOENVIRONMENTALREPLACEMENT_H_ + +#include +#include +#include +#include +#include + +/** + * Environmental replacement strategy that consists in keeping the N best individuals by deleting individuals 1 by 1 + * and by updating the fitness and diversity values after each deletion. + */ +template < class MOEOT > class moeoEnvironmentalReplacement:public moeoReplacement < MOEOT > + { + public: + + /** The type for objective vector */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + + /** + * Full constructor. + * @param _fitnessAssignment the fitness assignment strategy + * @param _diversityAssignment the diversity assignment strategy + * @param _comparator the comparator (used to compare 2 individuals) + */ + moeoEnvironmentalReplacement (moeoFitnessAssignment < MOEOT > & _fitnessAssignment, moeoDiversityAssignment < MOEOT > & _diversityAssignment, moeoComparator < MOEOT > & _comparator) : + fitnessAssignment (_fitnessAssignment), diversityAssignment (_diversityAssignment), comparator (_comparator) + {} + + + /** + * Constructor without comparator. A moeoFitThenDivComparator is used as default. + * @param _fitnessAssignment the fitness assignment strategy + * @param _diversityAssignment the diversity assignment strategy + */ + moeoEnvironmentalReplacement (moeoFitnessAssignment < MOEOT > & _fitnessAssignment, moeoDiversityAssignment < MOEOT > & _diversityAssignment) : + fitnessAssignment (_fitnessAssignment), diversityAssignment (_diversityAssignment), comparator (defaultComparator) + {} + + + /** + * Constructor without moeoDiversityAssignement. A dummy diversity is used as default. + * @param _fitnessAssignment the fitness assignment strategy + * @param _comparator the comparator (used to compare 2 individuals) + */ + moeoEnvironmentalReplacement (moeoFitnessAssignment < MOEOT > & _fitnessAssignment, moeoComparator < MOEOT > & _comparator) : + fitnessAssignment (_fitnessAssignment), diversityAssignment (defaultDiversity), comparator (_comparator) + {} + + + /** + * Constructor without moeoDiversityAssignement nor moeoComparator. + * A moeoFitThenDivComparator and a dummy diversity are used as default. + * @param _fitnessAssignment the fitness assignment strategy + */ + moeoEnvironmentalReplacement (moeoFitnessAssignment < MOEOT > & _fitnessAssignment) : + fitnessAssignment (_fitnessAssignment), diversityAssignment (defaultDiversity), comparator (defaultComparator) + {} + + + /** + * Replaces the first population by adding the individuals of the second one, sorting with a moeoComparator and resizing the whole population obtained. + * @param _parents the population composed of the parents (the population you want to replace) + * @param _offspring the offspring population + */ + void operator () (eoPop < MOEOT > &_parents, eoPop < MOEOT > &_offspring) + { + unsigned int sz = _parents.size(); + // merges offspring and parents into a global population + _parents.reserve (_parents.size() + _offspring.size()); + std::copy (_offspring.begin(), _offspring.end(), back_inserter(_parents)); + // evaluates the fitness and the diversity of this global population + fitnessAssignment (_parents); + diversityAssignment (_parents); + // remove individuals 1 by 1 and update the fitness values + unsigned int worstIdx; + ObjectiveVector worstObjVec; + while (_parents.size() > sz) + { + // the individual to delete + worstIdx = std::min_element(_parents.begin(), _parents.end(), comparator) - _parents.begin(); + worstObjVec = _parents[worstIdx].objectiveVector(); + // remove the woorst individual + _parents[worstIdx] = _parents.back(); + _parents.pop_back(); + // update of the fitness and diversity values + fitnessAssignment.updateByDeleting(_parents, worstObjVec); + diversityAssignment.updateByDeleting(_parents, worstObjVec); + + } + // clear the offspring population + _offspring.clear (); + } + + + protected: + + /** the fitness assignment strategy */ + moeoFitnessAssignment < MOEOT > & fitnessAssignment; + /** the diversity assignment strategy */ + moeoDiversityAssignment < MOEOT > & diversityAssignment; + /** a dummy diversity assignment can be used as default */ + moeoDummyDiversityAssignment < MOEOT > defaultDiversity; + /** a fitness then diversity comparator can be used as default */ + moeoFitnessThenDiversityComparator < MOEOT > defaultComparator; + /** this object is used to compare solutions in order to sort the population */ + class Cmp + { + public: + /** + * Ctor. + * @param _comp the comparator + */ + Cmp(moeoComparator < MOEOT > & _comp) : comp(_comp) + {} + /** + * Returns true if _moeo1 is greater than _moeo2 according to the comparator + * _moeo1 the first individual + * _moeo2 the first individual + */ + bool operator()(const MOEOT & _moeo1, const MOEOT & _moeo2) + { + return comp(_moeo1,_moeo2); + } + private: + /** the comparator */ + moeoComparator < MOEOT > & comp; + } + comparator; + + }; + +#endif /*MOEOENVIRONMENTALREPLACEMENT_H_ */ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/replacement/moeoGenerationalReplacement.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/replacement/moeoGenerationalReplacement.h new file mode 100644 index 000000000..bf78a7745 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/replacement/moeoGenerationalReplacement.h @@ -0,0 +1,64 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOGENERATIONALREPLACEMENT_H_ +#define MOEOGENERATIONALREPLACEMENT_H_ + +#include +#include + +/** + * Generational replacement: only the new individuals are preserved. + */ +template < class MOEOT > +class moeoGenerationalReplacement : public moeoReplacement < MOEOT >, public eoGenerationalReplacement < MOEOT > + { + public: + + /** + * Swaps _parents and _offspring + * @param _parents the parents population + * @param _offspring the offspring population + */ + void operator()(eoPop < MOEOT > & _parents, eoPop < MOEOT > & _offspring) + { + eoGenerationalReplacement < MOEOT >::operator ()(_parents, _offspring); + } + + }; + +#endif /*MOEOGENERATIONALREPLACEMENT_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/replacement/moeoReplacement.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/replacement/moeoReplacement.h new file mode 100644 index 000000000..286575cc7 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/replacement/moeoReplacement.h @@ -0,0 +1,50 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOREPLACEMENT_H_ +#define MOEOREPLACEMENT_H_ + +#include + +/** + * Replacement strategy for multi-objective optimization. + */ +template < class MOEOT > +class moeoReplacement : public eoReplacement < MOEOT > + {}; + +#endif /*MOEOREPLACEMENT_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/selection/moeoDetTournamentSelect.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/selection/moeoDetTournamentSelect.h new file mode 100644 index 000000000..24e0a451c --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/selection/moeoDetTournamentSelect.h @@ -0,0 +1,108 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEODETTOURNAMENTSELECT_H_ +#define MOEODETTOURNAMENTSELECT_H_ + +#include +#include +#include +#include + +/** + * Selection strategy that selects ONE individual by deterministic tournament. + */ +template < class MOEOT > class moeoDetTournamentSelect:public moeoSelectOne < MOEOT > + { + public: + + /** + * Full Ctor. + * @param _comparator the comparator (used to compare 2 individuals) + * @param _tSize the number of individuals in the tournament (default: 2) + */ + moeoDetTournamentSelect (moeoComparator < MOEOT > & _comparator, unsigned int _tSize = 2) : comparator (_comparator), tSize (_tSize) + { + // consistency check + if (tSize < 2) + { + std:: + cout << "Warning, Tournament size should be >= 2\nAdjusted to 2\n"; + tSize = 2; + } + } + + + /** + * Ctor without comparator. A moeoFitnessThenDiversityComparator is used as default. + * @param _tSize the number of individuals in the tournament (default: 2) + */ + moeoDetTournamentSelect (unsigned int _tSize = 2) : comparator (defaultComparator), tSize (_tSize) + { + // consistency check + if (tSize < 2) + { + std:: + cout << "Warning, Tournament size should be >= 2\nAdjusted to 2\n"; + tSize = 2; + } + } + + + /** + * Apply the tournament to the given population + * @param _pop the population + */ + const MOEOT & operator() (const eoPop < MOEOT > &_pop) + { + // use the selector + return mo_deterministic_tournament (_pop, tSize, comparator); + } + + + protected: + + /** the comparator (used to compare 2 individuals) */ + moeoComparator < MOEOT > & comparator; + /** a fitness then diversity comparator can be used as default */ + moeoFitnessThenDiversityComparator < MOEOT > defaultComparator; + /** the number of individuals in the tournament */ + unsigned int tSize; + + }; + +#endif /*MOEODETTOURNAMENTSELECT_H_ */ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/selection/moeoRandomSelect.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/selection/moeoRandomSelect.h new file mode 100644 index 000000000..c27f07c91 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/selection/moeoRandomSelect.h @@ -0,0 +1,69 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEORANDOMSELECT_H_ +#define MOEORANDOMSELECT_H_ + +#include +#include + + +/** + * Selection strategy that selects only one element randomly from a whole population. + */ +template < class MOEOT > class moeoRandomSelect:public moeoSelectOne < MOEOT >, public eoRandomSelect + { + public: + + /** + * Ctor. + */ + moeoRandomSelect() + {} + + + /** + * Return one individual at random by using an eoRandomSelect. + */ + const MOEOT & operator () (const eoPop < MOEOT > &_pop) + { + return eoRandomSelect < MOEOT >::operator ()(_pop); + } + + }; + +#endif /*MOEORANDOMSELECT_H_ */ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/selection/moeoRouletteSelect.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/selection/moeoRouletteSelect.h new file mode 100644 index 000000000..5bf89b6e2 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/selection/moeoRouletteSelect.h @@ -0,0 +1,87 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOROULETTESELECT_H_ +#define MOEOROULETTESELECT_H_ + +#include +#include + +/** + * Selection strategy that selects ONE individual by using roulette wheel process. + * @WARNING This selection only uses fitness values (and not diversity values). + */ +template < class MOEOT > +class moeoRouletteSelect:public moeoSelectOne < MOEOT > + { + public: + + /** + * Ctor. + * @param _tSize the number of individuals in the tournament (default: 2) + */ + moeoRouletteSelect (unsigned int _tSize = 2) : tSize (_tSize) + { + // consistency check + if (tSize < 2) + { + std:: + cout << "Warning, Tournament size should be >= 2\nAdjusted to 2\n"; + tSize = 2; + } + } + + + /** + * Apply the tournament to the given population + * @param _pop the population + */ + const MOEOT & operator () (const eoPop < MOEOT > & _pop) + { + // use the selector + return mo_roulette_wheel(_pop,tSize); + } + + + protected: + + /** size */ + double & tSize; + + }; + +#endif /*MOEOROULETTESELECT_H_ */ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/selection/moeoSelectFromPopAndArch.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/selection/moeoSelectFromPopAndArch.h new file mode 100644 index 000000000..6b3c98700 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/selection/moeoSelectFromPopAndArch.h @@ -0,0 +1,117 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOSELECTONEFROMPOPANDARCH_H_ +#define MOEOSELECTONEFROMPOPANDARCH_H_ + +#include +#include +#include +#include +#include + +/** + * Elitist selection process that consists in choosing individuals in the archive as well as in the current population. + */ +template < class MOEOT > +class moeoSelectFromPopAndArch : public moeoSelectOne < MOEOT > + { + public: + + /** + * Ctor + * @param _popSelectOne the population's selection operator + * @param _archSelectOne the archive's selection operator + * @param _arch the archive + * @param _ratioFromPop the ratio of selected individuals from the population + */ + moeoSelectFromPopAndArch (moeoSelectOne < MOEOT > & _popSelectOne, moeoSelectOne < MOEOT > _archSelectOne, moeoArchive < MOEOT > & _arch, double _ratioFromPop=0.5) + : popSelectOne(_popSelectOne), archSelectOne(_archSelectOne), arch(_arch), ratioFromPop(_ratioFromPop) + {} + + + /** + * Defaulr ctor - the archive's selection operator is a random selector + * @param _popSelectOne the population's selection operator + * @param _arch the archive + * @param _ratioFromPop the ratio of selected individuals from the population + */ + moeoSelectFromPopAndArch (moeoSelectOne < MOEOT > & _popSelectOne, moeoArchive < MOEOT > & _arch, double _ratioFromPop=0.5) + : popSelectOne(_popSelectOne), archSelectOne(randomSelectOne), arch(_arch), ratioFromPop(_ratioFromPop) + {} + + + /** + * The selection process + */ + virtual const MOEOT & operator () (const eoPop < MOEOT > & pop) + { + if (arch.size() > 0) + if (rng.flip(ratioFromPop)) + return popSelectOne(pop); + else + return archSelectOne(arch); + else + return popSelectOne(pop); + } + + + /** + * Setups some population stats + */ + virtual void setup (const eoPop < MOEOT > & _pop) + { + popSelectOne.setup(_pop); + } + + + private: + + /** The population's selection operator */ + moeoSelectOne < MOEOT > & popSelectOne; + /** The archive's selection operator */ + moeoSelectOne < MOEOT > & archSelectOne; + /** The archive */ + moeoArchive < MOEOT > & arch; + /** The ratio of selected individuals from the population*/ + double ratioFromPop; + /** A random selection operator (used as default for archSelectOne) */ + moeoRandomSelect < MOEOT > randomSelectOne; + + }; + +#endif /*MOEOSELECTONEFROMPOPANDARCH_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/selection/moeoSelectOne.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/selection/moeoSelectOne.h new file mode 100644 index 000000000..c05e44740 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/selection/moeoSelectOne.h @@ -0,0 +1,50 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOSELECTONE_H_ +#define MOEOSELECTONE_H_ + +#include + +/** + * Selection strategy for multi-objective optimization that selects only one element from a whole population. + */ +template < class MOEOT > +class moeoSelectOne : public eoSelectOne < MOEOT > + {}; + +#endif /*MOEOSELECTONE_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/selection/moeoSelectors.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/selection/moeoSelectors.h new file mode 100644 index 000000000..1b61eafad --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/selection/moeoSelectors.h @@ -0,0 +1,183 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOSELECTORS_H_ +#define MOEOSELECTORS_H_ + +#include + + +template +It mo_deterministic_tournament(It _begin, It _end, unsigned int _t_size,moeoComparator& _comparator ,eoRng& _gen = rng) +{ + It best = _begin + _gen.random(_end - _begin); + + for (unsigned int i = 0; i < _t_size - 1; ++i) + { + It competitor = _begin + _gen.random(_end - _begin); + // compare the two individuals by using the comparator + if (_comparator(*best, *competitor)) + // best "better" than competitor + best=competitor; + } + return best; +} + + +template +const MOEOT& mo_deterministic_tournament(const eoPop& _pop, unsigned int _t_size,moeoComparator& _comparator, eoRng& _gen = rng) +{ + return *mo_deterministic_tournament(_pop.begin(), _pop.end(),_t_size,_comparator, _gen); +} + + +template +MOEOT& mo_deterministic_tournament(eoPop& _pop, unsigned int _t_size,moeoComparator& _comparator,eoRng& _gen = rng) +{ + return *mo_deterministic_tournament(_pop.begin(), _pop.end(), _t_size,_comparator, _gen); +} + + +template +It mo_stochastic_tournament(It _begin, It _end, double _t_rate,moeoComparator& _comparator ,eoRng& _gen = rng) +{ + It i1 = _begin + _gen.random(_end - _begin); + It i2 = _begin + _gen.random(_end - _begin); + + bool return_better = _gen.flip(_t_rate); + + if (_comparator(*i1, *i2)) + { + if (return_better) return i2; + // else + + return i1; + } + else + { + if (return_better) return i1; + // else + } + // else + + return i2; +} + + +template +const MOEOT& mo_stochastic_tournament(const eoPop& _pop, double _t_rate,moeoComparator& _comparator, eoRng& _gen = rng) +{ + return *mo_stochastic_tournament(_pop.begin(), _pop.end(), _t_rate,_comparator, _gen); +} + + +template +MOEOT& mo_stochastic_tournament(eoPop& _pop, double _t_rate, eoRng& _gen = rng) +{ + return *mo_stochastic_tournament(_pop.begin(), _pop.end(), _t_rate, _gen); +} + + +template +It mo_roulette_wheel(It _begin, It _end, double total, eoRng& _gen = rng) +{ + + float roulette = _gen.uniform(total); + + if (roulette == 0.0) // covers the case where total==0.0 + return _begin + _gen.random(_end - _begin); // uniform choice + + It i = _begin; + + while (roulette > 0.0) + { + roulette -= static_cast(*(i++)); + } + + return --i; +} + + +template +const MOEOT& mo_roulette_wheel(const eoPop& _pop, double total, eoRng& _gen = rng) +{ + float roulette = _gen.uniform(total); + + if (roulette == 0.0) // covers the case where total==0.0 + return _pop[_gen.random(_pop.size())]; // uniform choice + + typename eoPop::const_iterator i = _pop.begin(); + + while (roulette > 0.0) + { + roulette -= static_cast((i++)->fitness()); + } + + return *--i; +} + + +template +MOEOT& mo_roulette_wheel(eoPop& _pop, double total, eoRng& _gen = rng) +{ + float roulette = _gen.uniform(total); + + if (roulette == 0.0) // covers the case where total==0.0 + return _pop[_gen.random(_pop.size())]; // uniform choice + + typename eoPop::iterator i = _pop.begin(); + + while (roulette > 0.0) + { + // fitness only + roulette -= static_cast((i++)->fitness()); + } + + return *--i; +} + + +#endif /*MOEOSELECTORS_H_*/ + + + + + + + + + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/selection/moeoStochTournamentSelect.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/selection/moeoStochTournamentSelect.h new file mode 100644 index 000000000..c718db309 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/selection/moeoStochTournamentSelect.h @@ -0,0 +1,116 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOSTOCHTOURNAMENTSELECT_H_ +#define MOEOSTOCHTOURNAMENTSELECT_H_ + +#include +#include +#include +#include + +/** + * Selection strategy that selects ONE individual by stochastic tournament. + */ +template < class MOEOT > class moeoStochTournamentSelect:public moeoSelectOne + { + public: + + /** + * Full Ctor + * @param _comparator the comparator (used to compare 2 individuals) + * @param _tRate the tournament rate + */ + moeoStochTournamentSelect (moeoComparator < MOEOT > & _comparator, double _tRate = 1.0) : comparator (_comparator), tRate (_tRate) + { + // consistency checks + if (tRate < 0.5) + { + std::cerr << "Warning, Tournament rate should be > 0.5\nAdjusted to 0.55\n"; + tRate = 0.55; + } + if (tRate > 1) + { + std::cerr << "Warning, Tournament rate should be < 1\nAdjusted to 1\n"; + tRate = 1; + } + } + + + /** + * Ctor without comparator. A moeoFitnessThenDiversityComparator is used as default. + * @param _tRate the tournament rate + */ + moeoStochTournamentSelect (double _tRate = 1.0) : comparator (defaultComparator), tRate (_tRate) + { + // consistency checks + if (tRate < 0.5) + { + std::cerr << "Warning, Tournament rate should be > 0.5\nAdjusted to 0.55\n"; + tRate = 0.55; + } + if (tRate > 1) + { + std::cerr << "Warning, Tournament rate should be < 1\nAdjusted to 1\n"; + tRate = 1; + } + } + + + /** + * Apply the tournament to the given population + * @param _pop the population + */ + const MOEOT & operator() (const eoPop < MOEOT > &_pop) + { + // use the selector + return mo_stochastic_tournament(_pop,tRate,comparator); + } + + + protected: + + /** the comparator (used to compare 2 individuals) */ + moeoComparator < MOEOT > & comparator; + /** a fitness then diversity comparator can be used as default */ + moeoFitnessThenDiversityComparator < MOEOT > defaultComparator; + /** the tournament rate */ + double tRate; + + }; + +#endif /*MOEOSTOCHTOURNAMENTSELECT_H_ */ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/utils/moeoArchiveObjectiveVectorSavingUpdater.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/utils/moeoArchiveObjectiveVectorSavingUpdater.h new file mode 100644 index 000000000..819533fe1 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/utils/moeoArchiveObjectiveVectorSavingUpdater.h @@ -0,0 +1,120 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOARCHIVEOBJECTIVEVECTORSAVINGUPDATER_H_ +#define MOEOARCHIVEOBJECTIVEVECTORSAVINGUPDATER_H_ + +#include +#include +#include +#include +#include + +#define MAX_BUFFER_SIZE 1000 + +/** + * This class allows to save the objective vectors of the solutions contained in an archive into a file at each generation. + */ +template < class MOEOT > +class moeoArchiveObjectiveVectorSavingUpdater : public eoUpdater + { + public: + + /** + * Ctor + * @param _arch local archive + * @param _filename target filename + * @param _count put this variable to true if you want a new file to be created each time () is called and to false if you only want the file to be updated + * @param _id own ID + */ + moeoArchiveObjectiveVectorSavingUpdater (moeoArchive & _arch, const std::string & _filename, bool _count = false, int _id = -1) : + arch(_arch), filename(_filename), count(_count), counter(0), id(_id) + {} + + + /** + * Saves the fitness of the archive's members into the file + */ + void operator()() + { + char buff[MAX_BUFFER_SIZE]; + if (count) + { + if (id == -1) + { + sprintf (buff, "%s.%u", filename.c_str(), counter ++); + } + else + { + sprintf (buff, "%s.%u.%u", filename.c_str(), id, counter ++); + } + } + else + { + if (id == -1) + { + sprintf (buff, "%s", filename.c_str()); + } + else + { + sprintf (buff, "%s.%u", filename.c_str(), id); + } + counter ++; + } + std::ofstream f(buff); + for (unsigned int i = 0; i < arch.size (); i++) + f << arch[i].objectiveVector() << std::endl; + f.close (); + } + + + private: + + /** local archive */ + moeoArchive & arch; + /** target filename */ + std::string filename; + /** this variable is set to true if a new file have to be created each time () is called and to false if the file only HAVE to be updated */ + bool count; + /** counter */ + unsigned int counter; + /** own ID */ + int id; + + }; + +#endif /*MOEOARCHIVEOBJECTIVEVECTORSAVINGUPDATER_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/utils/moeoArchiveUpdater.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/utils/moeoArchiveUpdater.h new file mode 100644 index 000000000..aa1d377c7 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/utils/moeoArchiveUpdater.h @@ -0,0 +1,80 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOARCHIVEUPDATER_H_ +#define MOEOARCHIVEUPDATER_H_ + +#include +#include +#include + +/** + * This class allows to update the archive at each generation with newly found non-dominated solutions. + */ +template < class MOEOT > +class moeoArchiveUpdater : public eoUpdater + { + public: + + /** + * Ctor + * @param _arch an archive of non-dominated solutions + * @param _pop the main population + */ + moeoArchiveUpdater(moeoArchive < MOEOT > & _arch, const eoPop < MOEOT > & _pop) : arch(_arch), pop(_pop) + {} + + + /** + * Updates the archive with newly found non-dominated solutions contained in the main population + */ + void operator()() + { + arch.update(pop); + } + + + private: + + /** the archive of non-dominated solutions */ + moeoArchive < MOEOT > & arch; + /** the main population */ + const eoPop < MOEOT > & pop; + + }; + +#endif /*MOEOARCHIVEUPDATER_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/utils/moeoBinaryMetricSavingUpdater.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/utils/moeoBinaryMetricSavingUpdater.h new file mode 100644 index 000000000..6f0ed6172 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/utils/moeoBinaryMetricSavingUpdater.h @@ -0,0 +1,119 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOBINARYMETRICSAVINGUPDATER_H_ +#define MOEOBINARYMETRICSAVINGUPDATER_H_ + +#include +#include +#include +#include +#include +#include + +/** + * This class allows to save the progression of a binary metric comparing the objective vectors of the current population (or archive) + * with the objective vectors of the population (or archive) of the generation (n-1) into a file + */ +template < class MOEOT > +class moeoBinaryMetricSavingUpdater : public eoUpdater + { + public: + + /** The objective vector type of a solution */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + + /** + * Ctor + * @param _metric the binary metric comparing two Pareto sets + * @param _pop the main population + * @param _filename the target filename + */ + moeoBinaryMetricSavingUpdater (moeoVectorVsVectorBinaryMetric < ObjectiveVector, double > & _metric, const eoPop < MOEOT > & _pop, std::string _filename) : + metric(_metric), pop(_pop), filename(_filename), counter(1) + {} + + + /** + * Saves the metric's value for the current generation + */ + void operator()() + { + if (pop.size()) + { + if (firstGen) + { + firstGen = false; + } + else + { + // creation of the two Pareto sets + std::vector < ObjectiveVector > from; + std::vector < ObjectiveVector > to; + for (unsigned int i=0; i & metric; + /** main population */ + const eoPop < MOEOT > & pop; + /** (n-1) population */ + eoPop< MOEOT > oldPop; + /** target filename */ + std::string filename; + /** is it the first generation ? */ + bool firstGen; + /** counter */ + unsigned int counter; + + }; + +#endif /*MOEOBINARYMETRICSAVINGUPDATER_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/utils/moeoConvertPopToObjectiveVectors.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/utils/moeoConvertPopToObjectiveVectors.h new file mode 100644 index 000000000..62c5af29f --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/src/utils/moeoConvertPopToObjectiveVectors.h @@ -0,0 +1,69 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MOEOPOPTOOBJECTIVEVECTORS_H_ +#define MOEOPOPTOOBJECTIVEVECTORS_H_ + +#include +#include + +/** + * Functor allowing to get a vector of objective vectors from a population + */ +template < class MOEOT, class ObjectiveVector = typename MOEOT::ObjectiveVector > +class moeoConvertPopToObjectiveVectors : public eoUF < const eoPop < MOEOT >, const std::vector < ObjectiveVector > > + { + public: + + /** + * Returns a vector of the objective vectors from the population _pop + * @param _pop the population + */ + const std::vector < ObjectiveVector > operator()(const eoPop < MOEOT > _pop) + { + std::vector < ObjectiveVector > result; + result.resize(_pop.size()); + for (unsigned int i=0; i<_pop.size(); i++) + { + result.push_back(_pop[i].objectiveVector()); + } + return result; + } + + }; + +#endif /*MOEOPOPTOOBJECTIVEVECTORS_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/test/CMakeLists.txt b/branches/paradiseo-ix86-2.0/paradiseo-moeo/test/CMakeLists.txt new file mode 100644 index 000000000..7c6c49511 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/test/CMakeLists.txt @@ -0,0 +1,86 @@ +############################################################################### +## +## CMakeLists file for ParadisEO-MOEO/test +## +############################################################################### + + +###################################################################################### +### 1) Include the sources +###################################################################################### + +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src) +INCLUDE_DIRECTORIES(${ParadisEO-MOEO_SOURCE_DIR}/src) +INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}) + +###################################################################################### + + +###################################################################################### +### 2) Specify where CMake can find the libraries +###################################################################################### + +IF(NOT WIN32 OR CYGWIN) + LINK_DIRECTORIES(${EO_BIN_DIR}/lib ${ParadisEO-MOEO_BINARY_DIR}/lib) +ENDIF(NOT WIN32 OR CYGWIN) + +# especially for Visual Studio +IF(WIN32 AND NOT CYGWIN) + LINK_DIRECTORIES(${EO_BIN_DIR}\\lib\\${CMAKE_BUILD_TYPE} + ${ParadisEO-MOEO_BINARY_DIR}\\lib\\${CMAKE_BUILD_TYPE}) +ENDIF(WIN32 AND NOT CYGWIN) + +###################################################################################### + + + +###################################################################################### +### 3) Define your targets and link the librairies +###################################################################################### + +SET (TEST_LIST t-moeo) + +FOREACH (test ${TEST_LIST}) + SET ("T_${test}_SOURCES" "${test}.cpp") +ENDFOREACH (test) + + +IF(ENABLE_CMAKE_TESTING) + + # Add the tests + FOREACH (test ${TEST_LIST}) + ADD_EXECUTABLE(${test} ${T_${test}_SOURCES}) + ADD_TEST(${test} ${test}) + ENDFOREACH (test) + + # Link the librairies + FOREACH (test ${TEST_LIST}) + TARGET_LINK_LIBRARIES(${test} moeo ga es eoutils eo) + ENDFOREACH (test) + +ENDIF(ENABLE_CMAKE_TESTING) + +###################################################################################### + + +###################################################################################### +### 5) Windows advanced config - especially for Microsoft Visual Studio 8 +###################################################################################### + + IF(CMAKE_CXX_COMPILER MATCHES cl) + IF(NOT WITH_SHARED_LIBS) + IF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + SET(CMAKE_CXX_FLAGS "/nologo /W3 /Gy") + SET(CMAKE_CXX_FLAGS_DEBUG "/MTd /Z7 /Od") + SET(CMAKE_CXX_FLAGS_RELEASE "/MT /O2") + SET(CMAKE_CXX_FLAGS_MINSIZEREL "/MT /O2") + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MTd /Z7 /Od") + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:CONSOLE") + + ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + ENDIF(NOT WITH_SHARED_LIBS) + ENDIF(CMAKE_CXX_COMPILER MATCHES cl) +###################################################################################### + + + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/test/t-moeo.cpp b/branches/paradiseo-ix86-2.0/paradiseo-moeo/test/t-moeo.cpp new file mode 100644 index 000000000..bc996f156 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/test/t-moeo.cpp @@ -0,0 +1,54 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- +// t-moeo.cpp +//----------------------------------------------------------------------------- + +#include // MOEO + +//----------------------------------------------------------------------------- + + +//----------------------------------------------------------------------------- + +int main() +{ + std::cout << "Please fill the test" << std::endl; + + return 0; +} + +//----------------------------------------------------------------------------- diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/CMakeLists.txt b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/CMakeLists.txt new file mode 100644 index 000000000..d9c7a70dc --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/CMakeLists.txt @@ -0,0 +1,18 @@ + +###################################################################################### +### 1) Definitions +###################################################################################### + +SET(FLOWSHOP_SRC_DIR ${ParadisEO-MOEO_SOURCE_DIR}/tutorial/examples/flowshop) +SET(FLOWSHOP_BINARY_DIR ${ParadisEO-MOEO_BINARY_DIR}/tutorial/examples/flowshop) + +###################################################################################### + + +###################################################################################### +### 2) Where must cmake go now ? +###################################################################################### + +SUBDIRS(examples Lesson1 Lesson2) + +###################################################################################### diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/Lesson1/CMakeLists.txt b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/Lesson1/CMakeLists.txt new file mode 100644 index 000000000..4fe4edb36 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/Lesson1/CMakeLists.txt @@ -0,0 +1,96 @@ + +###################################################################################### +### 0) Copy the FlowShop.param file in the build path for an easy use. +###################################################################################### + +ADD_CUSTOM_TARGET(install DEPENDS ${ParadisEO-MOEO_SOURCE_DIR}/tutorial/Lesson1/FlowShopEA.param) +ADD_CUSTOM_COMMAND( + TARGET install + POST_BUILD + COMMAND ${CMAKE_COMMAND} + ARGS -E copy_if_different + ${ParadisEO-MOEO_SOURCE_DIR}/tutorial/Lesson1/FlowShopEA.param + ${ParadisEO-MOEO_BINARY_DIR}/tutorial/Lesson1) +###################################################################################### + + + +###################################################################################### +### 1) Include the sources +###################################################################################### + +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src) +INCLUDE_DIRECTORIES(${ParadisEO-MOEO_SOURCE_DIR}/src) +INCLUDE_DIRECTORIES(${FLOWSHOP_SRC_DIR}) + +###################################################################################### + + + +###################################################################################### +### 2) Specify where CMake can find the libraries +###################################################################################### + +IF(NOT WIN32 OR CYGWIN) + LINK_DIRECTORIES(${EO_BIN_DIR}/lib ${ParadisEO-MOEO_BINARY_DIR}/lib ${FLOWSHOP_BINARY_DIR}/lib) +ENDIF(NOT WIN32 OR CYGWIN) + +# especially for Visual Studio +IF(WIN32 AND NOT CYGWIN) + LINK_DIRECTORIES(${EO_BIN_DIR}\\lib\\${CMAKE_BUILD_TYPE} ${ParadisEO-MOEO_BINARY_DIR}\\lib\\${CMAKE_BUILD_TYPE} ${FLOWSHOP_BINARY_DIR}\\lib\\${CMAKE_BUILD_TYPE}) +ENDIF(WIN32 AND NOT CYGWIN) + +###################################################################################### + + + +###################################################################################### +### 3) Define your target(s): just an executable here +###################################################################################### + +ADD_EXECUTABLE(FlowShopEA FlowShopEA.cpp) +ADD_DEPENDENCIES(FlowShopEA flowshop moeo) +###################################################################################### + + + +###################################################################################### +### 4) Optionnal: define your target(s)'s version: no effect for windows +###################################################################################### + +SET(FLOWSHOPEA_VERSION ${GLOBAL_VERSION}) +SET_TARGET_PROPERTIES(FlowShopEA PROPERTIES VERSION "${FLOWSHOPEA_VERSION}") +###################################################################################### + + + +###################################################################################### +### 5) Link the librairies for your target(s) +###################################################################################### + + +TARGET_LINK_LIBRARIES(FlowShopEA moeo flowshop eo eoutils) + +###################################################################################### + + + +###################################################################################### +### 6) Windows advanced config - especially for Microsoft Visual Studio 8 +###################################################################################### + + IF(CMAKE_CXX_COMPILER MATCHES cl) + IF(NOT WITH_SHARED_LIBS) + IF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + SET(CMAKE_CXX_FLAGS "/nologo /W3 /Gy") + SET(CMAKE_CXX_FLAGS_DEBUG "/MTd /Z7 /Od") + SET(CMAKE_CXX_FLAGS_RELEASE "/MT /O2") + SET(CMAKE_CXX_FLAGS_MINSIZEREL "/MT /O2") + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MTd /Z7 /Od") + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:CONSOLE") + + ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + ENDIF(NOT WITH_SHARED_LIBS) + ENDIF(CMAKE_CXX_COMPILER MATCHES cl) +###################################################################################### + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/Lesson1/FlowShopEA.cpp b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/Lesson1/FlowShopEA.cpp new file mode 100644 index 000000000..87aa59ad5 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/Lesson1/FlowShopEA.cpp @@ -0,0 +1,132 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + + +// moeo general include +#include +// for the creation of an evaluator +#include +// for the creation of an initializer +#include +// for the creation of the variation operators +#include +// how to initialize the population +#include +// the stopping criterion +#include +// outputs (stats, population dumps, ...) +#include +// evolution engine (selection and replacement) +#include +// simple call to the algo +#include +// checks for help demand, and writes the status file and make_help; in libutils +void make_help(eoParser & _parser); +// definition of the representation +#include + + +using namespace std; + + +int main(int argc, char* argv[]) +{ + try + { + + eoParser parser(argc, argv); // for user-parameter reading + eoState state; // to keep all things allocated + + + /*** the representation-dependent things ***/ + + // The fitness evaluation + eoEvalFuncCounter& eval = do_make_eval(parser, state); + // the genotype (through a genotype initializer) + eoInit& init = do_make_genotype(parser, state); + // the variation operators + eoGenOp& op = do_make_op(parser, state); + + + /*** the representation-independent things ***/ + + // initialization of the population + eoPop& pop = do_make_pop(parser, state, init); + // definition of the archive + moeoArchive arch; + // stopping criteria + eoContinue& term = do_make_continue_moeo(parser, state, eval); + // output + eoCheckPoint& checkpoint = do_make_checkpoint_moeo(parser, state, eval, term, pop, arch); + // algorithm + eoAlgo& algo = do_make_ea_moeo(parser, state, eval, checkpoint, op, arch); + + + /*** Go ! ***/ + + // help ? + make_help(parser); + + // first evalution + apply(eval, pop); + + // printing of the initial population + cout << "Initial Population\n"; + pop.sortedPrintOn(cout); + cout << endl; + + // run the algo + do_run(algo, pop); + + // printing of the final population + cout << "Final Population\n"; + pop.sortedPrintOn(cout); + cout << endl; + + // printing of the final archive + cout << "Final Archive\n"; + arch.sortedPrintOn(cout); + cout << endl; + + + } + catch (exception& e) + { + cout << e.what() << endl; + } + return EXIT_SUCCESS; +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/Lesson1/FlowShopEA.param b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/Lesson1/FlowShopEA.param new file mode 100644 index 000000000..8ac33dbbb --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/Lesson1/FlowShopEA.param @@ -0,0 +1,49 @@ + +###### General ###### +--help=0 # -h : Prints this message +--stopOnUnknownParam=1 # Stop if unkown param entered +# --seed=1183379758 # -S : Random number seed + +###### Evolution Engine ###### +--popSize=20 # -P : Population Size +--updateArch=1 # Update the archive at each gen. +--fitness=FastNonDominatedSorting # -F : Fitness assignment scheme: Dummy, FastNonDominatedSorting or IndicatorBased +--indicator=Epsilon # -i : Binary indicator for IndicatorBased: Epsilon, Hypervolume +--rho=1.1 # -r : reference point for the hypervolume indicator +--kappa=0.05 # -k : Scaling factor kappa for IndicatorBased +--diversity=Crowding # -D : Diversity assignment scheme: Dummy, Sharing(nicheSize) or Crowding +--comparator=FitnessThenDiversity # -C : Comparator scheme: FitnessThenDiversity, DiversityThenFitness or Aggregative +--selection=DetTour(2) # -S : Selection scheme: DetTour(T), StochTour(t) or Random +--replacement=Elitist # -R : Replacement scheme: Elitist, Environmental or Generational +--nbOffspring=100% # -O : Number of offspring (percentage or absolute) + +###### Output ###### +--resDir=Res # Directory to store DISK outputs +--eraseDir=1 # erase files in dirName if any +--printPop=0 # Print sorted pop. every gen. +--storeArch=0 # Store the archive's objective vectors at each gen. +--contribution=0 # Store the contribution of the archive at each gen. +--entropy=0 # Store the entropy of the archive at each gen. + +###### Persistence ###### +--Load= # -L : A save file to restart from +--recomputeFitness=0 # -r : Recompute the fitness after re-loading the pop.? +--saveFrequency=0 # Save every F generation (0 = only final state, absent = never) +--saveTimeInterval=0 # Save every T seconds (0 or absent = never) +--status=./FlowShopEA.status # Status file + +###### Representation ###### +--BenchmarkFile=../examples/flowshop/benchs/020_10_01.txt # -B : Benchmark file name REQUIRED + +###### Stopping criterion ###### +--maxGen=100 # -G : Maximum number of generations (0 = none) +--maxEval=0 # -E : Maximum number of evaluations (0 = none) +--maxTime=0 # -T : Maximum running time in seconds (0 = none) +#--CtrlC=1 # -C : Terminate current generation upon Ctrl C (only available on Unix platforms) + +###### Variation Operators ###### +--crossRate=1 # Relative rate for the only crossover +--shiftMutRate=0.5 # Relative rate for shift mutation +--exchangeMutRate=0.5 # Relative rate for exchange mutation +--pCross=0.25 # -c : Probability of Crossover +--pMut=0.35 # -m : Probability of Mutation diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/Lesson1/Lesson1.pdf b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/Lesson1/Lesson1.pdf new file mode 100755 index 000000000..b2a20b134 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/Lesson1/Lesson1.pdf differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/Lesson2/CMakeLists.txt b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/Lesson2/CMakeLists.txt new file mode 100644 index 000000000..08808cc61 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/Lesson2/CMakeLists.txt @@ -0,0 +1,79 @@ + +###################################################################################### +### 1) Include the sources +###################################################################################### + +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src) +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/utils) +INCLUDE_DIRECTORIES(${ParadisEO-MOEO_SOURCE_DIR}/src) +###################################################################################### + + + +###################################################################################### +### 2) Specify where CMake can find the libraries +###################################################################################### + +IF(NOT WIN32 OR CYGWIN) + LINK_DIRECTORIES(${EO_BIN_DIR}/lib ${ParadisEO-MOEO_BINARY_DIR}/lib) +ENDIF(NOT WIN32 OR CYGWIN) + +# especially for Visual Studio +IF(WIN32 AND NOT CYGWIN) + LINK_DIRECTORIES(${EO_BIN_DIR}\\lib\\${CMAKE_BUILD_TYPE} ${ParadisEO-MOEO_BINARY_DIR}\\lib\\${CMAKE_BUILD_TYPE}) +ENDIF(WIN32 AND NOT CYGWIN) + +###################################################################################### + + + +###################################################################################### +### 3) Define your target(s): just an executable here +###################################################################################### + +ADD_EXECUTABLE(Sch1 Sch1.cpp) +ADD_DEPENDENCIES(Sch1 moeo) +###################################################################################### + + + +###################################################################################### +### 4) Optionnal: define your target(s)'s version: no effect for windows +###################################################################################### + +SET(SCH1_VERSION ${GLOBAL_VERSION}) +SET_TARGET_PROPERTIES(Sch1 PROPERTIES VERSION "${SCH1_VERSION}") +###################################################################################### + + + +###################################################################################### +### 5) Link the librairies for your target(s) +###################################################################################### + + +TARGET_LINK_LIBRARIES(Sch1 moeo eo eoutils) + +###################################################################################### + + + +###################################################################################### +### 6) Windows advanced config - especially for Microsoft Visual Studio 8 +###################################################################################### + + IF(CMAKE_CXX_COMPILER MATCHES cl) + IF(NOT WITH_SHARED_LIBS) + IF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + SET(CMAKE_CXX_FLAGS "/nologo /W3 /Gy") + SET(CMAKE_CXX_FLAGS_DEBUG "/MTd /Z7 /Od") + SET(CMAKE_CXX_FLAGS_RELEASE "/MT /O2") + SET(CMAKE_CXX_FLAGS_MINSIZEREL "/MT /O2") + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MTd /Z7 /Od") + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:CONSOLE") + + ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + ENDIF(NOT WITH_SHARED_LIBS) + ENDIF(CMAKE_CXX_COMPILER MATCHES cl) +###################################################################################### + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/Lesson2/Lesson2.pdf b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/Lesson2/Lesson2.pdf new file mode 100755 index 000000000..2a7261e06 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/Lesson2/Lesson2.pdf differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/Lesson2/Sch1.cpp b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/Lesson2/Sch1.cpp new file mode 100644 index 000000000..450d6350f --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/Lesson2/Sch1.cpp @@ -0,0 +1,133 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Abdelhakim Deneche +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#include +#include +#include +#include + +using namespace std; + +// the moeoObjectiveVectorTraits : minimizing 2 objectives +class Sch1ObjectiveVectorTraits : public moeoObjectiveVectorTraits + { + public: + static bool minimizing (int i) + { + return true; + } + static bool maximizing (int i) + { + return false; + } + static unsigned int nObjectives () + { + return 2; + } + }; + + +// objective vector of real values +typedef moeoRealObjectiveVector < Sch1ObjectiveVectorTraits > Sch1ObjectiveVector; + + +// multi-objective evolving object for the Sch1 problem +class Sch1 : public moeoRealVector < Sch1ObjectiveVector, double, double > + { + public: + Sch1() : moeoRealVector < Sch1ObjectiveVector, double, double > (1) + {} + }; + + +// evaluation of objective functions +class Sch1Eval : public moeoEvalFunc < Sch1 > + { + public: + void operator () (Sch1 & _sch1) + { + if (_sch1.invalidObjectiveVector()) + { + Sch1ObjectiveVector objVec; + double x = _sch1[0]; + objVec[0] = x * x; + objVec[1] = (x - 2.0) * (x - 2.0); + _sch1.objectiveVector(objVec); + } + } + }; + + +// main +int main (int argc, char *argv[]) +{ + // parameters + unsigned int POP_SIZE = 20; + unsigned int MAX_GEN = 100; + double M_EPSILON = 0.01; + double P_CROSS = 0.25; + double P_MUT = 0.35; + + // objective functions evaluation + Sch1Eval eval; + + // crossover and mutation + eoQuadCloneOp < Sch1 > xover; + eoUniformMutation < Sch1 > mutation (M_EPSILON); + + // generate initial population + eoRealVectorBounds bounds (1, 0.0, 2.0); // [0, 2] + eoRealInitBounded < Sch1 > init (bounds); + eoPop < Sch1 > pop (POP_SIZE, init); + + // build NSGA-II + moeoNSGAII < Sch1 > nsgaII (MAX_GEN, eval, xover, P_CROSS, mutation, P_MUT); + + // run the algo + nsgaII (pop); + + // extract first front of the final population using an moeoArchive (this is the output of nsgaII) + moeoArchive < Sch1 > arch; + arch.update (pop); + + // printing of the final archive + cout << "Final Archive" << endl; + arch.sortedPrintOn (cout); + cout << endl; + + return EXIT_SUCCESS; +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/CMakeLists.txt b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/CMakeLists.txt new file mode 100644 index 000000000..eae35f629 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/CMakeLists.txt @@ -0,0 +1,9 @@ + + +###################################################################################### +### 1) Where must cmake go now ? +###################################################################################### + +SUBDIRS(flowshop) + +###################################################################################### \ No newline at end of file diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/CMakeLists.txt b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/CMakeLists.txt new file mode 100644 index 000000000..86372c236 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/CMakeLists.txt @@ -0,0 +1,106 @@ + +###################################################################################### +### 0) Copy the "benchs" directory in the build directory to easily run the lessons +###################################################################################### + +ADD_CUSTOM_TARGET(install DEPENDS ${FLOWSHOP_SRC_DIR}/benchs) +ADD_CUSTOM_COMMAND( + TARGET install + POST_BUILD + COMMAND ${CMAKE_COMMAND} + ARGS -E copy_directory + ${FLOWSHOP_SRC_DIR}/benchs + ${FLOWSHOP_BINARY_DIR}/benchs) + +###################################################################################### + + +###################################################################################### +### 1) Include the sources +###################################################################################### + +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src) +INCLUDE_DIRECTORIES(${ParadisEO-MOEO_SOURCE_DIR}/src) +INCLUDE_DIRECTORIES(${FLOWSHOP_SRC_DIR}) + +###################################################################################### + + +###################################################################################### +### 2) Specify where CMake can find the libraries +###################################################################################### + +IF(NOT WIN32 OR CYGWIN) + LINK_DIRECTORIES(${EO_BIN_DIR}/lib) +ENDIF(NOT WIN32 OR CYGWIN) + +# especially for Visual Studio +IF(WIN32 AND NOT CYGWIN) + LINK_DIRECTORIES(${EO_BINARY_DIR}\\lib\\${CMAKE_BUILD_TYPE} ${ParadisEO-MOEO_BINARY_DIR}\\lib\\${CMAKE_BUILD_TYPE}) +ENDIF(WIN32 AND NOT CYGWIN) + +###################################################################################### + + +###################################################################################### +### 3) Define your target(s): just the flowshop lib here +###################################################################################### + +SET(FLOWSHOP_LIB_OUTPUT_PATH ${FLOWSHOP_BINARY_DIR}/lib) +SET(LIBRARY_OUTPUT_PATH ${FLOWSHOP_LIB_OUTPUT_PATH}) + +SET (FLOWSHOP_SOURCES FlowShopBenchmarkParser.cpp + FlowShopEval.cpp + FlowShopInit.cpp + FlowShopObjectiveVectorTraits.cpp + FlowShopOpCrossoverQuad.cpp + FlowShopOpMutationExchange.cpp + FlowShopOpMutationShift.cpp + FlowShop.cpp) + +ADD_LIBRARY(flowshop STATIC ${FLOWSHOP_SOURCES}) +ADD_DEPENDENCIES(flowshop moeo) +###################################################################################### + + + +###################################################################################### +### 4) Optionnal: define your target(s)'s version: no effect for windows +###################################################################################### + +SET(FLOWSHOP_VERSION ${GLOBAL_VERSION}) +SET_TARGET_PROPERTIES(flowshop PROPERTIES VERSION "${FLOWSHOP_VERSION}") +###################################################################################### + + +###################################################################################### +### 5) Link the librairies for your target(s) +###################################################################################### + +TARGET_LINK_LIBRARIES(flowshop eo) + +###################################################################################### + + +###################################################################################### +### 6) Windows advanced config - especially for Microsoft Visual Studio 8 +###################################################################################### + + IF(CMAKE_CXX_COMPILER MATCHES cl) + IF(NOT WITH_SHARED_LIBS) + IF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + SET(CMAKE_CXX_FLAGS "/nologo /W3 /Gy") + SET(CMAKE_CXX_FLAGS_DEBUG "/MTd /Z7 /Od") + SET(CMAKE_CXX_FLAGS_RELEASE "/MT /O2") + SET(CMAKE_CXX_FLAGS_MINSIZEREL "/MT /O2") + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MTd /Z7 /Od") + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:CONSOLE") + + ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + ENDIF(NOT WITH_SHARED_LIBS) + ENDIF(CMAKE_CXX_COMPILER MATCHES cl) +###################################################################################### + + + + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/FlowShop.cpp b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/FlowShop.cpp new file mode 100644 index 000000000..0bf5dfe89 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/FlowShop.cpp @@ -0,0 +1,43 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#include + +std::string FlowShop::className() const + { + return "FlowShop"; + } diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/FlowShop.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/FlowShop.h new file mode 100644 index 000000000..993f901d8 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/FlowShop.h @@ -0,0 +1,58 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef FLOWSHOP_H_ +#define FLOWSHOP_H_ + +#include +#include + +/** + * Structure of the genotype for the flow-shop scheduling problem: a vector of unsigned int int. + */ +class FlowShop: public moeoVector < FlowShopObjectiveVector , double , double , unsigned int > + { + public: + + /** + * class name + */ + std::string className() const; + + }; + +#endif /*FLOWSHOP_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/FlowShopBenchmarkParser.cpp b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/FlowShopBenchmarkParser.cpp new file mode 100644 index 000000000..5a8b412b5 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/FlowShopBenchmarkParser.cpp @@ -0,0 +1,131 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#include +#include + +FlowShopBenchmarkParser::FlowShopBenchmarkParser(const std::string _benchmarkFileName) +{ + init(_benchmarkFileName); +} + + +const unsigned int FlowShopBenchmarkParser::getM() +{ + return M; +} + + +const unsigned int FlowShopBenchmarkParser::getN() +{ + return N; +} + + +const std::vector< std::vector > FlowShopBenchmarkParser::getP() +{ + return p; +} + + +const std::vector FlowShopBenchmarkParser::getD() +{ + return d; +} + + +void FlowShopBenchmarkParser::printOn(std::ostream & _os) const + { + _os << "M=" << M << " N=" << N << std::endl; + _os << "*** processing times" << std::endl; + for (unsigned int i=0; i > (M,N); + d = std::vector (N); + // for each job... + for (unsigned int j=0 ; j j) + getline(inputFile, buffer, '\n'); + // due-date of the job j + getline(inputFile, buffer, '\n'); + d[j] = atoi(buffer.data()); + // processing times of the job j on each machine + getline(inputFile, buffer, '\n'); + start = buffer.find_first_not_of(" "); + for (unsigned int i=0 ; i +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef FLOWSHOPBENCHMARKPARSER_H_ +#define FLOWSHOPBENCHMARKPARSER_H_ + +#include +#include +#include + +/** + * Class to handle parameters of a flow-shop instance from a benchmark file + */ +class FlowShopBenchmarkParser + { + public: + + /** + * Ctor + * @param _benchmarkFileName the name of the benchmark file + */ + FlowShopBenchmarkParser(const std::string _benchmarkFileName); + + + /** + * the number of machines + */ + const unsigned int getM(); + + + /** + * the number of jobs + */ + const unsigned int getN(); + + + /** + * the processing times + */ + const std::vector < std::vector < unsigned int > > getP(); + + + /** + * the due-dates + */ + const std::vector < unsigned int > getD(); + + + /** + * printing... + */ + void printOn(std::ostream & _os) const; + + + private: + + /** number of machines */ + unsigned int M; + /** number of jobs */ + unsigned int N; + /** p[i][j] = processing time of job j on machine i */ + std::vector < std::vector < unsigned int > > p; + /** d[j] = due-date of the job j */ + std::vector < unsigned int > d; + + + /** + * Initialisation of the parameters with the data contained in the benchmark file + * @param _benchmarkFileName the name of the benchmark file + */ + void init(const std::string _benchmarkFileName); + + }; + +#endif /*FLOWSHOPBENCHMARKPARSER_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/FlowShopEval.cpp b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/FlowShopEval.cpp new file mode 100644 index 000000000..08465a6f8 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/FlowShopEval.cpp @@ -0,0 +1,90 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#include + + +FlowShopEval::FlowShopEval(unsigned int _M, unsigned int _N, const std::vector< std::vector > & _p, const std::vector & _d) : + M(_M), N (_N), p(_p), d(_d) +{} + + +void FlowShopEval::operator()(FlowShop & _flowshop) +{ + FlowShopObjectiveVector objVector; + objVector[0] = makespan(_flowshop); + objVector[1] = tardiness(_flowshop); + _flowshop.objectiveVector(objVector); +} + + + +double FlowShopEval::makespan(const FlowShop & _flowshop) +{ + // completion times computation for each job on each machine + // C[i][j] = completion of the jth job of the scheduling on the ith machine + std::vector< std::vector > C = completionTime(_flowshop); + return C[M-1][_flowshop[N-1]]; +} + + +double FlowShopEval::tardiness(const FlowShop & _flowshop) +{ + // completion times computation for each job on each machine + // C[i][j] = completion of the jth job of the scheduling on the ith machine + std::vector< std::vector > C = completionTime(_flowshop); + // tardiness computation + unsigned int long sum = 0; + for (unsigned int j=0 ; j > FlowShopEval::completionTime(const FlowShop & _flowshop) +{ + std::vector< std::vector > C(M,N); + C[0][_flowshop[0]] = p[0][_flowshop[0]]; + for (unsigned int j=1; j +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef FLOWSHOPEVAL_H_ +#define FLOWSHOPEVAL_H_ + +#include +#include +#include + +/** + * Evaluation of the objective vector a (multi-objective) FlowShop object + */ +class FlowShopEval : public moeoEvalFunc + { + public: + + /** + * Ctor + * @param _M the number of machines + * @param _N the number of jobs to schedule + * @param _p the processing times + * @param _d the due dates + */ + FlowShopEval(unsigned int _M, unsigned int _N, const std::vector< std::vector > & _p, const std::vector & _d); + + + /** + * computation of the multi-objective evaluation of a FlowShop object + * @param _flowshop the FlowShop object to evaluate + */ + void operator()(FlowShop & _flowshop); + + + private: + + /** number of machines */ + unsigned int M; + /** number of jobs */ + unsigned int N; + /** p[i][j] = processing time of job j on machine i */ + std::vector< std::vector < unsigned int > > p; + /** d[j] = due-date of the job j */ + std::vector < unsigned int > d; + + + /** + * computation of the makespan + * @param _flowshop the genotype to evaluate + */ + double makespan(const FlowShop & _flowshop); + + + /** + * computation of the tardiness + * @param _flowshop the genotype to evaluate + */ + double tardiness(const FlowShop & _flowshop); + + + /** + * computation of the completion times of a scheduling (for each job on each machine) + * C[i][j] = completion of the jth job of the scheduling on the ith machine + * @param _flowshop the genotype to evaluate + */ + std::vector< std::vector > completionTime (const FlowShop & _flowshop); + + }; + +#endif /*FLOWSHOPEVAL_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/FlowShopInit.cpp b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/FlowShopInit.cpp new file mode 100644 index 000000000..dde677384 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/FlowShopInit.cpp @@ -0,0 +1,64 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#include + + +FlowShopInit::FlowShopInit(unsigned int _N) : N(_N) +{} + + +void FlowShopInit::operator()(FlowShop & _flowshop) +{ + // scheduling vector + std::vector scheduling(N); + // initialisation of possible values + std::vector possibles(N); + for (unsigned int i=0 ; i +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef FLOWSHOPINIT_H_ +#define FLOWSHOPINIT_H_ + +#include +#include + +/** + * Initialization of a random genotype built by the default constructor of the FlowShop class + */ +class FlowShopInit : public eoInit + { + public: + + /** + * Ctor + * @param _N the number of jobs to schedule + */ + FlowShopInit(unsigned int _N); + + + /** + * builds a random genotype + * @param _flowshop a genotype that has been default-constructed + */ + void operator()(FlowShop & _flowshop); + + + private: + + /** the number of jobs (size of a scheduling vector) */ + unsigned int N; + + }; + +#endif /*FLOWSHOPINIT_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/FlowShopObjectiveVector.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/FlowShopObjectiveVector.h new file mode 100644 index 000000000..65814085f --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/FlowShopObjectiveVector.h @@ -0,0 +1,49 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef FLOWSHOPOBJECTIVEVECTOR_H_ +#define FLOWSHOPOBJECTIVEVECTOR_H_ + +#include +#include + +/** + * Definition of the objective vector for multi-objective flow-shop problems: a vector of doubles + */ +typedef moeoRealObjectiveVector < FlowShopObjectiveVectorTraits > FlowShopObjectiveVector; + +#endif /*FLOWSHOPOBJECTIVEVECTOR_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/FlowShopObjectiveVectorTraits.cpp b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/FlowShopObjectiveVectorTraits.cpp new file mode 100644 index 000000000..08487e873 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/FlowShopObjectiveVectorTraits.cpp @@ -0,0 +1,57 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#include + + +bool FlowShopObjectiveVectorTraits::minimizing (int _i) +{ + // minimizing both + return true; +} + +bool FlowShopObjectiveVectorTraits::maximizing (int _i) +{ + // minimizing both + return false; +} + +unsigned int FlowShopObjectiveVectorTraits::nObjectives () +{ + // 2 objectives + return 2; +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/FlowShopObjectiveVectorTraits.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/FlowShopObjectiveVectorTraits.h new file mode 100644 index 000000000..b95d6f2ea --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/FlowShopObjectiveVectorTraits.h @@ -0,0 +1,71 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef FLOWSHOPOBJECTIVEVECTORTRAITS_H_ +#define FLOWSHOPOBJECTIVEVECTORTRAITS_H_ + +#include + +/** + * Definition of the objective vector traits for multi-objective flow-shop problems + */ +class FlowShopObjectiveVectorTraits : public moeoObjectiveVectorTraits + { + public: + + /** + * Returns true if the _ith objective have to be minimzed + * @param _i index of the objective + */ + static bool minimizing (int _i); + + + /** + * Returns true if the _ith objective have to be maximzed + * @param _i index of the objective + */ + static bool maximizing (int _i); + + + /** + * Returns the number of objectives + */ + static unsigned int nObjectives (); + + }; + +#endif /*FLOWSHOPOBJECTIVEVECTORTRAITS_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/FlowShopOpCrossoverQuad.cpp b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/FlowShopOpCrossoverQuad.cpp new file mode 100644 index 000000000..5b64c7e41 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/FlowShopOpCrossoverQuad.cpp @@ -0,0 +1,110 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#include + + +std::string FlowShopOpCrossoverQuad::className() const + { + return "FlowShopOpCrossoverQuad"; + } + + +bool FlowShopOpCrossoverQuad::operator()(FlowShop & _flowshop1, FlowShop & _flowshop2) +{ + bool oneAtLeastIsModified; + // computation of the 2 random points + unsigned int point1, point2; + do + { + point1 = rng.random(std::min(_flowshop1.size(), _flowshop2.size())); + point2 = rng.random(std::min(_flowshop1.size(), _flowshop2.size())); + } + while (fabs((double) point1-point2) <= 2); + // computation of the offspring + FlowShop offspring1 = generateOffspring(_flowshop1, _flowshop2, point1, point2); + FlowShop offspring2 = generateOffspring(_flowshop2, _flowshop1, point1, point2); + // does at least one genotype has been modified ? + if ((_flowshop1 != offspring1) || (_flowshop2 != offspring2)) + { + // update + _flowshop1.value(offspring1); + _flowshop2.value(offspring2); + // at least one genotype has been modified + oneAtLeastIsModified = true; + } + else + { + // no genotype has been modified + oneAtLeastIsModified = false; + } + // return 'true' if at least one genotype has been modified + return oneAtLeastIsModified; +} + + +FlowShop FlowShopOpCrossoverQuad::generateOffspring(const FlowShop & _parent1, const FlowShop & _parent2, unsigned int _point1, unsigned int _point2) +{ + FlowShop result = _parent1; + std::vector taken_values(result.size(), false); + if (_point1 > _point2) + std::swap(_point1, _point2); + /* first parent */ + for (unsigned int i=0 ; i<=_point1 ; i++) + { + // result[i] == _parent1[i] + taken_values[_parent1[i]] = true; + } + for (unsigned int i=_point2 ; i +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef FLOWSHOPOPCROSSOVERQUAD_H_ +#define FLOWSHOPOPCROSSOVERQUAD_H_ + +#include +#include + +/** + * Quadratic crossover operator for flow-shop (modify the both genotypes) + */ +class FlowShopOpCrossoverQuad : public eoQuadOp < FlowShop > + { + public: + + /** + * the class name (used to display statistics) + */ + std::string className() const; + + + /** + * eoQuad crossover - _flowshop1 and _flowshop2 are the (future) offspring, i.e. _copies_ of the parents + * @param _flowshop1 the first parent + * @param _flowshop2 the second parent + */ + bool operator()(FlowShop & _flowshop1, FlowShop & _flowshop2); + + + private: + + /** + * generation of an offspring by a 2 points crossover + * @param _parent1 the first parent + * @param _parent2 the second parent + * @param _point1 the first point + * @param _point2 the second point + */ + FlowShop generateOffspring(const FlowShop & _parent1, const FlowShop & _parent2, unsigned int _point1, unsigned int _point2); + + }; + +#endif /*FLOWSHOPOPCROSSOVERQUAD_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/FlowShopOpMutationExchange.cpp b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/FlowShopOpMutationExchange.cpp new file mode 100644 index 000000000..a37ae2587 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/FlowShopOpMutationExchange.cpp @@ -0,0 +1,76 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#include + + +std::string FlowShopOpMutationExchange::className() const + { + return "FlowShopOpMutationExchange"; + } + + +bool FlowShopOpMutationExchange::operator()(FlowShop & _flowshop) +{ + bool isModified; + FlowShop result = _flowshop; + // computation of the 2 random points + unsigned int point1, point2; + do + { + point1 = rng.random(result.size()); + point2 = rng.random(result.size()); + } + while (point1 == point2); + // swap + std::swap (result[point1], result[point2]); + // update (if necessary) + if (result != _flowshop) + { + // update + _flowshop.value(result); + // the genotype has been modified + isModified = true; + } + else + { + // the genotype has not been modified + isModified = false; + } + // return 'true' if the genotype has been modified + return isModified; +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/FlowShopOpMutationExchange.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/FlowShopOpMutationExchange.h new file mode 100644 index 000000000..c54b8f063 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/FlowShopOpMutationExchange.h @@ -0,0 +1,65 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef FLOWSHOPOPMUTATIONEXCHANGE_H_ +#define FLOWSHOPOPMUTATIONEXCHANGE_H_ + +#include +#include + +/** + * Exchange mutation operator for the flow-shop + */ +class FlowShopOpMutationExchange : public eoMonOp + { + public: + + /** + * the class name (used to display statistics) + */ + std::string className() const; + + + /** + * modifies the parent with an exchange mutation + * @param _flowshop the parent genotype (will be modified) + */ + bool operator()(FlowShop & _flowshop); + + }; + +#endif /*FLOWSHOPOPMUTATIONEXCHANGE_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/FlowShopOpMutationShift.cpp b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/FlowShopOpMutationShift.cpp new file mode 100644 index 000000000..389842bdd --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/FlowShopOpMutationShift.cpp @@ -0,0 +1,86 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#include + + +std::string FlowShopOpMutationShift::className() const + { + return "FlowShopOpMutationShift"; + } + + +bool FlowShopOpMutationShift::operator()(FlowShop & _flowshop) +{ + bool isModified; + int direction; + unsigned int tmp; + FlowShop result = _flowshop; + // computation of the 2 random points + unsigned int point1, point2; + do + { + point1 = rng.random(result.size()); + point2 = rng.random(result.size()); + } + while (point1 == point2); + // direction + if (point1 < point2) + direction = 1; + else + direction = -1; + // mutation + tmp = result[point1]; + for (unsigned int i=point1 ; i!=point2 ; i+=direction) + result[i] = result[i+direction]; + result[point2] = tmp; + // update (if necessary) + if (result != _flowshop) + { + // update + _flowshop.value(result); + // the genotype has been modified + isModified = true; + } + else + { + // the genotype has not been modified + isModified = false; + } + // return 'true' if the genotype has been modified + return isModified; +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/FlowShopOpMutationShift.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/FlowShopOpMutationShift.h new file mode 100644 index 000000000..8e9fb851d --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/FlowShopOpMutationShift.h @@ -0,0 +1,65 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef FLOWSHOPOPMUTATIONSHIFT_H_ +#define FLOWSHOPOPMUTATIONSHIFT_H_ + +#include +#include + +/** + * Shift mutation operator for flow-shop + */ +class FlowShopOpMutationShift : public eoMonOp < FlowShop > + { + public: + + /** + * the class name (used to display statistics) + */ + std::string className() const; + + + /** + * modifies the parent with a shift mutation + * @param _flowshop the parent genotype (will be modified) + */ + bool operator()(FlowShop & _flowshop); + + }; + +#endif /*FLOWSHOPOPMUTATIONSHIFT_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/benchs/020_05_01.txt b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/benchs/020_05_01.txt new file mode 100644 index 000000000..2c2f78d86 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/benchs/020_05_01.txt @@ -0,0 +1,63 @@ +20 +5 +873654221 +0 +468 +54 79 16 66 58 +1 +325 +83 3 89 58 56 +2 +923 +15 11 49 31 20 +3 +513 +71 99 15 68 85 +4 +1070 +77 56 89 78 53 +5 +690 +36 70 45 91 35 +6 +602 +53 99 60 13 53 +7 +289 +38 60 23 59 41 +8 +873 +27 5 57 49 69 +9 +342 +87 56 64 85 13 +10 +764 +76 3 7 85 86 +11 +268 +91 61 1 9 72 +12 +1158 +14 73 63 39 8 +13 +646 +29 75 41 41 49 +14 +1111 +12 47 63 56 47 +15 +965 +77 14 47 40 87 +16 +703 +32 21 26 54 58 +17 +1205 +87 86 75 77 18 +18 +334 +68 5 77 51 68 +19 +1111 +94 77 40 31 28 diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/benchs/020_05_02.txt b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/benchs/020_05_02.txt new file mode 100644 index 000000000..c82c2d033 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/benchs/020_05_02.txt @@ -0,0 +1,63 @@ +20 +5 +379008056 +0 +517 +26 59 78 88 69 +1 +461 +38 62 90 54 30 +2 +832 +27 44 64 47 61 +3 +653 +88 10 49 83 35 +4 +933 +95 23 47 84 53 +5 +811 +55 64 20 9 98 +6 +966 +54 47 61 30 94 +7 +448 +63 68 93 11 33 +8 +577 +23 54 36 92 77 +9 +1122 +45 9 47 63 31 +10 +666 +86 30 70 62 54 +11 +1189 +43 31 54 75 71 +12 +470 +43 92 87 48 78 +13 +475 +40 7 13 23 9 +14 +462 +37 14 40 85 79 +15 +866 +54 95 34 23 51 +16 +392 +35 76 55 4 76 +17 +310 +59 82 13 31 56 +18 +719 +43 91 11 13 80 +19 +1221 +50 37 5 98 72 diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/benchs/020_10_01.txt b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/benchs/020_10_01.txt new file mode 100644 index 000000000..96bca095d --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/benchs/020_10_01.txt @@ -0,0 +1,63 @@ +20 +10 +587595453 +0 +1250 +74 28 89 60 54 92 9 4 25 15 +1 +1371 +21 3 52 88 66 11 8 18 15 84 +2 +637 +58 27 56 26 12 54 88 25 91 8 +3 +616 +4 61 13 58 57 97 72 28 49 30 +4 +917 +21 34 7 76 70 57 27 95 56 95 +5 +937 +28 76 32 98 82 53 22 51 10 79 +6 +1435 +58 64 32 29 99 65 50 84 62 9 +7 +1197 +83 87 98 47 84 77 2 18 70 91 +8 +1301 +31 54 46 79 16 51 49 6 76 76 +9 +637 +61 98 60 26 41 36 82 90 99 26 +10 +749 +94 76 23 19 23 53 93 69 58 42 +11 +1223 +44 41 87 48 11 19 96 61 83 66 +12 +887 +97 70 7 95 68 54 43 57 84 70 +13 +1316 +94 43 36 78 58 86 13 5 64 91 +14 +1330 +66 42 26 77 30 40 60 75 74 67 +15 +1380 +6 79 85 90 5 56 11 4 14 3 +16 +767 +37 88 7 24 5 79 37 38 18 98 +17 +574 +22 15 34 10 39 74 91 28 48 4 +18 +1398 +99 49 36 85 58 24 84 4 96 71 +19 +1179 +83 72 48 55 31 3 67 80 86 62 diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/benchs/020_10_02.txt b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/benchs/020_10_02.txt new file mode 100644 index 000000000..bf23361f5 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/benchs/020_10_02.txt @@ -0,0 +1,63 @@ +20 +10 +1401007982 +0 +1279 +80 59 59 31 30 53 93 90 65 64 +1 +1481 +13 83 70 64 88 19 79 92 97 38 +2 +1157 +64 85 76 11 14 99 88 35 27 44 +3 +1391 +77 85 10 9 22 62 77 13 25 46 +4 +763 +17 70 65 32 93 88 94 75 61 66 +5 +1456 +78 35 19 58 48 93 39 55 24 31 +6 +900 +82 2 77 98 10 34 74 80 97 48 +7 +1047 +4 76 86 95 7 72 46 67 61 27 +8 +1355 +72 46 21 25 14 42 17 3 75 82 +9 +1262 +93 72 75 4 91 65 30 93 92 51 +10 +1329 +68 69 96 45 5 39 62 54 73 90 +11 +562 +25 46 3 60 43 79 77 67 21 63 +12 +684 +67 3 50 87 30 9 43 25 29 85 +13 +567 +80 57 57 31 79 26 98 77 3 36 +14 +765 +43 71 66 1 39 72 48 38 96 69 +15 +808 +93 77 84 96 34 29 14 98 51 67 +16 +999 +21 33 98 22 77 36 45 96 26 81 +17 +548 +33 49 55 95 81 48 25 20 44 18 +18 +577 +14 59 70 73 11 57 98 15 56 81 +19 +704 +30 82 32 77 10 95 30 36 31 72 diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/benchs/020_20_01.txt b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/benchs/020_20_01.txt new file mode 100644 index 000000000..2ef8f0bee --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/benchs/020_20_01.txt @@ -0,0 +1,63 @@ +20 +20 +479340445 +0 +1696 +50 78 36 85 9 75 46 73 71 7 49 3 60 12 75 31 70 20 88 9 +1 +1273 +90 56 43 88 92 64 94 3 49 40 49 53 88 47 19 61 78 78 30 41 +2 +1546 +39 9 10 60 98 96 6 56 36 33 15 59 15 46 60 47 41 38 34 22 +3 +1882 +34 43 19 98 44 95 19 73 87 64 18 7 26 17 87 32 9 26 33 34 +4 +1117 +66 84 55 4 51 22 20 80 8 5 65 65 11 43 27 34 47 64 21 83 +5 +1181 +81 73 48 99 8 41 51 82 25 25 55 58 16 16 48 69 94 62 7 55 +6 +1416 +27 66 85 53 31 26 85 36 76 89 1 24 55 91 72 32 26 11 94 3 +7 +1635 +48 38 70 21 15 33 92 98 73 95 79 55 59 94 88 1 65 38 10 8 +8 +1723 +46 83 82 33 47 68 43 90 80 58 10 26 81 73 48 1 17 68 73 75 +9 +1932 +68 57 39 53 31 9 75 46 6 83 37 40 53 89 59 80 42 37 85 30 +10 +1219 +48 97 91 63 80 81 70 10 6 28 77 89 92 12 74 19 59 74 82 57 +11 +1521 +92 52 82 18 83 28 70 46 33 35 80 94 23 58 86 57 80 9 62 65 +12 +1322 +78 77 85 45 20 61 36 65 79 74 79 51 55 25 49 98 7 65 99 89 +13 +1057 +84 13 17 29 84 69 31 83 10 5 84 74 79 24 94 37 75 16 67 60 +14 +1922 +93 12 6 43 69 37 76 75 93 6 93 54 13 55 15 31 63 38 61 90 +15 +1130 +39 2 54 41 49 57 63 47 65 9 21 86 89 1 95 51 96 85 10 84 +16 +1411 +43 65 87 80 93 36 89 61 26 3 85 22 2 67 41 66 7 50 4 74 +17 +1840 +1 93 85 4 39 80 46 28 73 2 64 83 17 3 94 38 10 62 70 17 +18 +1741 +65 39 4 31 13 96 25 59 42 35 46 19 97 1 15 62 47 39 31 2 +19 +1377 +87 1 72 19 88 74 88 22 18 41 35 44 41 71 71 72 38 97 49 19 diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/benchs/050_05_01.txt b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/benchs/050_05_01.txt new file mode 100644 index 000000000..5f4b46f37 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/benchs/050_05_01.txt @@ -0,0 +1,153 @@ +50 +5 +1328042058 +0 +1290 +75 26 48 26 77 +1 +2352 +87 37 4 67 94 +2 +362 +13 25 92 4 9 +3 +305 +11 95 92 14 57 +4 +262 +41 49 72 93 29 +5 +1250 +43 12 45 54 79 +6 +2170 +93 59 5 21 55 +7 +1601 +69 17 98 20 73 +8 +2039 +80 46 93 6 65 +9 +1628 +13 20 17 18 86 +10 +483 +24 52 79 75 25 +11 +285 +72 44 11 25 39 +12 +1092 +38 92 16 16 76 +13 +936 +81 75 89 77 24 +14 +2349 +83 95 81 28 38 +15 +473 +88 33 92 24 5 +16 +2325 +26 10 45 15 91 +17 +747 +6 45 61 77 29 +18 +970 +89 2 39 36 22 +19 +434 +67 62 28 16 27 +20 +1258 +70 62 94 32 39 +21 +2405 +30 82 87 46 31 +22 +862 +89 29 23 21 46 +23 +298 +30 29 1 81 18 +24 +2014 +68 94 55 28 93 +25 +2608 +21 20 91 70 58 +26 +1737 +78 42 67 89 85 +27 +2214 +46 80 91 54 58 +28 +1910 +99 94 4 96 97 +29 +2245 +10 35 60 62 10 +30 +2211 +17 8 38 46 79 +31 +547 +23 41 25 60 93 +32 +2237 +83 65 90 19 2 +33 +1327 +47 4 93 97 87 +34 +700 +86 71 13 13 17 +35 +1011 +18 30 65 7 18 +36 +2001 +67 14 25 44 10 +37 +1230 +46 32 34 7 50 +38 +1020 +4 50 47 73 8 +39 +1918 +14 30 98 15 26 +40 +1001 +4 27 91 66 14 +41 +1383 +20 98 11 70 21 +42 +1229 +88 39 46 97 15 +43 +2594 +50 84 50 33 10 +44 +403 +84 65 77 97 85 +45 +1515 +58 12 5 64 46 +46 +431 +93 58 14 73 42 +47 +1971 +76 45 47 28 18 +48 +939 +50 49 80 4 36 +49 +2028 +30 15 45 87 2 diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/benchs/050_10_01.txt b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/benchs/050_10_01.txt new file mode 100644 index 000000000..17f3cb117 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/benchs/050_10_01.txt @@ -0,0 +1,153 @@ +50 +10 +1958948863 +0 +793 +46 61 3 51 37 79 83 22 27 24 +1 +2280 +52 87 1 24 16 93 87 29 92 47 +2 +939 +79 51 58 21 42 68 38 99 75 39 +3 +2591 +45 25 85 57 47 75 38 25 94 66 +4 +1540 +97 73 33 69 94 37 86 98 18 41 +5 +2386 +10 93 71 51 14 44 67 55 41 46 +6 +812 +44 28 58 50 94 34 23 80 37 24 +7 +2524 +24 90 56 51 34 39 19 82 58 23 +8 +1370 +85 94 64 21 72 76 97 33 56 68 +9 +1319 +75 59 43 19 36 62 78 68 20 50 +10 +2388 +66 64 48 63 88 74 66 47 2 93 +11 +961 +49 2 69 91 51 28 67 74 39 22 +12 +2831 +95 16 96 11 41 78 7 26 91 64 +13 +2790 +61 35 35 6 71 43 23 61 81 81 +14 +2076 +19 53 82 31 94 98 67 95 33 94 +15 +2519 +47 40 53 63 99 83 8 55 14 97 +16 +1981 +84 81 64 36 11 91 77 11 88 54 +17 +695 +13 26 11 39 97 27 71 42 22 82 +18 +2133 +11 85 61 57 44 6 85 72 36 11 +19 +1871 +19 4 36 47 77 82 29 14 65 91 +20 +1495 +98 4 53 56 69 60 49 8 79 23 +21 +754 +2 10 87 65 91 44 3 98 23 32 +22 +783 +85 63 88 59 38 43 94 90 66 26 +23 +984 +44 96 10 4 25 76 76 36 5 22 +24 +2004 +7 55 32 10 87 99 95 75 15 12 +25 +2269 +73 71 38 12 7 66 48 69 51 23 +26 +1771 +19 66 25 62 66 11 4 26 2 34 +27 +2030 +69 94 24 43 54 35 37 24 81 87 +28 +2603 +12 7 90 49 86 52 82 55 12 59 +29 +2150 +73 15 7 54 49 8 57 98 40 2 +30 +2157 +85 11 11 87 3 40 61 86 59 38 +31 +2187 +23 99 49 29 48 62 6 30 32 84 +32 +937 +53 37 2 2 44 25 97 92 16 62 +33 +728 +16 50 76 18 93 24 5 94 87 10 +34 +510 +88 56 17 75 37 30 27 66 78 11 +35 +2786 +8 69 32 39 82 1 95 47 41 93 +36 +2134 +26 22 39 77 31 73 46 3 43 57 +37 +1046 +42 56 9 69 59 27 92 41 94 81 +38 +2849 +58 67 83 15 78 16 46 41 1 10 +39 +1956 +63 63 69 78 33 91 52 47 93 40 +40 +2456 +7 96 67 68 36 33 8 89 22 62 +41 +1105 +2 74 28 37 3 11 11 28 93 49 +42 +1560 +44 4 88 22 58 99 7 39 62 90 +43 +1745 +38 42 23 41 10 2 54 80 53 34 +44 +2216 +24 40 91 92 98 60 72 47 30 11 +45 +1157 +76 30 71 67 6 90 57 57 34 81 +46 +1317 +85 93 3 24 44 36 85 74 27 51 +47 +2372 +61 36 26 87 62 62 22 38 30 21 +48 +777 +32 25 41 91 24 15 87 59 54 39 +49 +972 +90 87 96 31 94 3 65 5 77 27 diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/benchs/050_20_01.txt b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/benchs/050_20_01.txt new file mode 100644 index 000000000..23ccddab3 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/benchs/050_20_01.txt @@ -0,0 +1,153 @@ +50 +20 +1539989115 +0 +2509 +52 63 82 16 63 94 79 22 80 96 53 54 71 27 95 3 92 80 61 74 +1 +2039 +95 99 21 26 55 34 21 6 13 3 19 67 90 93 53 80 62 38 86 38 +2 +3096 +42 69 79 46 59 89 93 24 64 50 99 25 59 49 54 78 11 55 16 4 +3 +2950 +75 70 95 66 35 62 32 55 77 57 62 77 82 63 22 32 83 34 42 31 +4 +1249 +44 53 46 76 21 47 8 48 17 66 88 38 22 65 84 53 87 85 14 62 +5 +2481 +57 21 23 31 59 66 45 57 78 84 93 98 88 34 54 43 66 44 92 39 +6 +3193 +89 10 40 36 78 76 37 78 82 98 34 96 35 10 2 85 98 47 67 97 +7 +3253 +53 31 95 8 25 15 78 5 4 55 72 20 49 56 80 19 42 66 77 57 +8 +2123 +84 80 87 37 30 18 26 50 72 70 42 15 78 51 84 48 23 19 46 9 +9 +2390 +62 18 37 21 38 54 98 83 93 32 65 36 69 97 66 49 45 66 41 54 +10 +1764 +91 5 24 3 78 24 17 70 68 31 39 65 76 52 25 66 52 61 78 13 +11 +2940 +14 18 24 76 79 55 25 21 25 64 79 97 2 46 16 22 6 60 3 47 +12 +1635 +95 17 65 67 58 96 21 71 67 11 9 27 14 16 79 37 3 98 72 6 +13 +3171 +89 71 62 5 44 10 28 58 80 9 26 25 3 50 90 51 64 82 95 70 +14 +2670 +4 90 19 47 38 12 68 36 43 32 72 61 22 96 51 82 55 79 53 19 +15 +2932 +95 93 67 72 76 96 24 50 93 58 29 24 26 85 29 59 97 71 59 97 +16 +2054 +2 14 66 66 70 53 62 31 21 98 36 97 44 61 29 88 83 28 34 41 +17 +3238 +97 49 6 56 72 92 89 86 33 95 48 61 1 76 90 77 42 74 66 1 +18 +2466 +68 52 65 95 85 77 60 29 14 25 57 75 4 30 83 19 81 27 42 57 +19 +2384 +20 7 59 49 8 6 64 30 30 4 95 92 16 90 83 32 92 33 63 60 +20 +3473 +33 78 2 47 10 91 38 93 59 45 93 73 55 42 19 52 68 13 27 62 +21 +3290 +51 57 67 26 84 14 90 49 83 60 79 21 43 88 95 9 46 9 92 14 +22 +2086 +98 41 82 81 42 41 87 83 85 87 88 29 87 37 87 96 56 12 8 90 +23 +2560 +8 75 90 56 67 30 1 89 85 31 77 3 35 43 12 23 88 51 65 76 +24 +3253 +85 98 30 76 20 85 99 44 70 1 94 96 76 88 34 64 50 16 34 12 +25 +3205 +86 93 63 66 24 17 34 38 35 96 39 51 98 91 23 22 13 49 6 89 +26 +2534 +73 33 5 36 75 23 9 62 2 22 74 26 78 14 44 37 23 83 42 37 +27 +2039 +4 75 93 53 23 60 22 45 76 95 46 44 81 63 30 3 13 48 39 35 +28 +2273 +40 68 53 26 33 76 74 22 46 73 17 56 48 65 82 52 49 13 2 91 +29 +2062 +98 33 85 52 60 39 14 85 72 77 30 31 25 74 83 44 18 78 7 69 +30 +1909 +12 60 81 29 20 85 14 39 69 30 62 64 81 71 42 11 50 96 85 55 +31 +2432 +59 82 73 36 75 10 84 98 46 88 77 38 27 8 56 21 94 77 32 48 +32 +2624 +44 24 34 68 83 65 75 56 3 14 43 44 84 39 89 85 71 68 14 56 +33 +3325 +46 99 74 21 26 15 37 68 57 22 98 46 59 95 38 6 64 88 74 84 +34 +3427 +2 4 13 71 92 55 32 84 71 93 48 66 98 82 96 40 31 77 59 22 +35 +1318 +41 97 78 61 29 41 29 77 77 48 14 31 14 17 10 68 21 76 95 51 +36 +1539 +28 24 35 71 39 28 32 67 33 10 45 48 32 38 3 30 2 73 48 43 +37 +3223 +83 50 20 69 14 93 89 53 49 7 25 27 95 69 53 35 63 92 37 50 +38 +1703 +28 55 16 28 74 88 12 46 59 14 98 82 30 17 97 58 58 72 59 62 +39 +1051 +21 91 48 86 66 27 47 24 82 91 30 51 13 24 11 31 36 87 4 61 +40 +1512 +80 46 12 27 86 77 19 52 59 5 90 90 68 66 65 11 64 66 42 10 +41 +2589 +71 58 11 41 10 81 97 96 70 43 92 63 19 75 47 11 52 98 93 87 +42 +3248 +4 17 80 86 27 19 7 2 76 30 35 85 57 52 76 6 8 40 32 99 +43 +2047 +60 47 9 55 8 76 12 88 10 79 13 36 65 59 22 59 94 31 30 40 +44 +3333 +34 82 24 17 7 55 43 33 65 39 75 69 13 4 17 64 51 75 16 91 +45 +1760 +55 6 76 62 97 67 89 27 19 34 55 67 63 73 14 65 36 45 95 64 +46 +2333 +53 15 32 96 84 65 14 49 77 77 80 81 26 56 11 23 82 98 58 62 +47 +2400 +96 91 35 59 56 8 33 78 86 81 67 18 96 19 69 80 30 90 12 53 +48 +2142 +37 74 66 53 61 18 56 82 21 11 3 81 53 39 91 75 17 4 95 33 +49 +1231 +37 42 48 93 9 56 57 65 75 10 93 72 94 51 53 63 21 23 21 16 diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/benchs/100_05_01.txt b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/benchs/100_05_01.txt new file mode 100644 index 000000000..f0d8d9b38 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/benchs/100_05_01.txt @@ -0,0 +1,303 @@ +100 +5 +896678084 +0 +1682 +73 34 8 62 10 +1 +4503 +84 46 37 86 60 +2 +1249 +57 97 38 46 34 +3 +4984 +52 88 30 3 96 +4 +2923 +66 52 20 22 79 +5 +2401 +67 49 68 33 62 +6 +1978 +33 88 4 90 6 +7 +5318 +62 15 78 94 15 +8 +4769 +65 55 41 98 94 +9 +2093 +7 6 2 9 39 +10 +2438 +6 77 62 84 85 +11 +3143 +31 49 38 69 17 +12 +698 +42 46 95 26 55 +13 +621 +82 14 82 22 59 +14 +2463 +48 35 96 49 48 +15 +3865 +45 40 56 90 11 +16 +1563 +79 1 61 81 63 +17 +1461 +86 70 34 12 98 +18 +2285 +10 46 1 54 33 +19 +4381 +47 28 9 53 49 +20 +1057 +67 73 57 18 41 +21 +3190 +86 24 80 56 82 +22 +4493 +64 44 58 43 12 +23 +4604 +38 55 7 50 61 +24 +1592 +13 94 56 82 94 +25 +4645 +69 52 31 18 80 +26 +2729 +4 40 92 89 84 +27 +1925 +21 76 84 49 18 +28 +3843 +25 92 25 20 68 +29 +4188 +74 22 20 76 6 +30 +2635 +11 46 65 90 98 +31 +3773 +85 19 36 64 47 +32 +269 +50 18 67 89 6 +33 +307 +21 50 96 16 55 +34 +907 +93 31 35 3 73 +35 +288 +98 41 59 12 70 +36 +5211 +91 51 76 45 56 +37 +331 +26 73 66 67 46 +38 +1499 +4 22 83 97 50 +39 +1119 +28 21 37 80 90 +40 +4399 +61 79 33 97 89 +41 +1306 +8 93 2 92 88 +42 +1149 +55 98 95 56 50 +43 +3919 +68 89 20 50 99 +44 +3875 +30 44 84 95 41 +45 +3485 +26 64 43 25 36 +46 +2800 +81 93 4 52 16 +47 +1893 +95 66 44 21 84 +48 +2341 +49 14 74 47 98 +49 +874 +6 10 92 4 44 +50 +3355 +82 36 55 67 42 +51 +345 +71 36 98 62 43 +52 +1530 +61 69 8 63 62 +53 +3516 +84 79 30 25 49 +54 +3194 +29 90 18 3 22 +55 +985 +44 51 28 55 16 +56 +1638 +83 81 54 87 14 +57 +2970 +12 16 68 84 55 +58 +4265 +54 28 42 28 45 +59 +3494 +19 26 28 73 20 +60 +5134 +52 97 12 8 35 +61 +3520 +59 33 57 38 89 +62 +3570 +74 77 81 80 7 +63 +1335 +42 68 19 53 64 +64 +313 +60 28 16 70 36 +65 +1031 +43 46 88 9 5 +66 +4360 +80 16 75 87 63 +67 +2814 +34 96 11 33 8 +68 +571 +74 59 57 11 76 +69 +538 +46 56 99 65 95 +70 +2856 +40 4 4 92 40 +71 +747 +27 52 51 34 51 +72 +3321 +79 89 26 64 98 +73 +612 +1 84 6 96 77 +74 +4517 +98 42 16 67 92 +75 +1532 +44 37 71 54 35 +76 +2848 +8 90 52 26 3 +77 +4701 +55 51 96 32 56 +78 +263 +55 84 89 10 1 +79 +5340 +27 16 79 91 17 +80 +3979 +69 39 91 90 70 +81 +4804 +79 16 57 31 45 +82 +1574 +97 37 2 7 87 +83 +3644 +39 19 33 6 37 +84 +1512 +54 15 42 77 70 +85 +4445 +75 68 1 91 84 +86 +3253 +88 7 40 42 69 +87 +5334 +87 58 76 5 7 +88 +2338 +97 47 85 46 5 +89 +1071 +4 27 99 54 97 +90 +2398 +79 82 65 56 47 +91 +1675 +59 72 98 1 12 +92 +4974 +7 1 78 24 54 +93 +1785 +89 7 61 62 84 +94 +3391 +61 22 83 47 49 +95 +4517 +42 40 30 63 89 +96 +2909 +79 59 14 39 86 +97 +2733 +85 16 62 63 37 +98 +853 +66 7 41 95 52 +99 +4261 +99 72 91 45 85 diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/benchs/100_10_01.txt b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/benchs/100_10_01.txt new file mode 100644 index 000000000..480d6be62 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/benchs/100_10_01.txt @@ -0,0 +1,303 @@ +100 +10 +1539989115 +0 +3490 +52 82 63 79 80 53 71 95 92 61 +1 +2540 +95 21 55 21 13 19 90 53 62 86 +2 +4675 +42 79 59 93 64 99 59 54 11 16 +3 +4381 +75 95 35 32 77 62 82 22 83 42 +4 +945 +44 46 21 8 17 88 22 84 87 14 +5 +3435 +57 23 59 45 78 93 88 54 66 92 +6 +4873 +89 40 78 37 82 34 35 2 98 67 +7 +4993 +53 95 25 78 4 72 49 80 42 77 +8 +2710 +84 87 30 26 72 42 78 84 23 46 +9 +3251 +62 37 38 98 93 65 69 66 45 41 +10 +1985 +91 24 78 17 68 39 76 25 52 78 +11 +4361 +14 24 79 25 25 79 2 16 6 3 +12 +1726 +95 65 58 21 67 9 14 79 3 72 +13 +4828 +89 62 44 28 80 26 3 90 64 95 +14 +3816 +4 19 38 68 43 72 22 51 55 53 +15 +4345 +95 67 76 24 93 29 26 29 97 59 +16 +2572 +2 66 70 62 21 36 44 29 83 34 +17 +4963 +97 6 72 89 33 48 1 90 42 66 +18 +3403 +68 65 85 60 14 57 4 83 81 42 +19 +3238 +20 59 8 64 30 95 16 83 92 63 +20 +5437 +33 2 10 38 59 93 55 19 68 27 +21 +5068 +51 67 84 90 83 79 43 95 46 92 +22 +2635 +98 82 42 87 85 88 87 87 56 8 +23 +3593 +8 90 67 1 85 77 35 12 88 65 +24 +4993 +85 30 20 99 70 94 76 34 50 34 +25 +4897 +86 63 24 34 35 39 98 23 13 6 +26 +3542 +73 5 75 9 2 74 78 44 23 42 +27 +2541 +4 93 23 22 76 46 81 30 13 39 +28 +3014 +40 53 33 74 46 17 48 82 49 2 +29 +2587 +98 85 60 14 72 30 25 83 18 7 +30 +2278 +12 81 20 14 69 62 81 42 50 85 +31 +3336 +59 73 75 84 46 77 27 56 94 32 +32 +3723 +44 34 83 75 3 43 84 89 71 14 +33 +5138 +46 74 26 37 57 98 59 38 64 74 +34 +5345 +2 13 92 32 71 48 98 96 31 59 +35 +1084 +41 78 29 29 77 14 14 10 21 95 +36 +1531 +28 35 39 32 33 45 32 3 2 48 +37 +4932 +83 20 14 89 49 25 95 53 63 37 +38 +1863 +28 16 74 12 59 98 30 97 58 59 +39 +545 +21 48 66 47 82 30 13 11 36 4 +40 +1477 +80 12 86 19 59 90 68 65 64 42 +41 +3653 +71 11 10 97 70 92 19 47 52 93 +42 +4983 +4 80 27 7 76 35 57 76 8 32 +43 +2558 +60 9 8 12 10 13 65 22 94 30 +44 +5156 +34 24 7 43 65 75 13 17 51 16 +45 +1977 +55 76 97 89 19 55 63 14 36 95 +46 +3136 +53 32 84 14 77 80 26 11 82 58 +47 +3271 +96 35 56 33 86 67 96 69 30 12 +48 +2748 +37 66 61 56 21 3 53 91 17 95 +49 +909 +37 48 9 57 75 93 94 53 21 21 +50 +4366 +63 16 94 22 96 54 27 3 80 74 +51 +4943 +99 26 34 6 3 67 93 80 38 38 +52 +4596 +69 46 89 24 50 25 49 78 55 4 +53 +1793 +70 66 62 55 57 77 63 32 34 31 +54 +4596 +53 76 47 48 66 38 65 53 85 62 +55 +3717 +21 31 66 57 84 98 34 43 44 39 +56 +4624 +10 36 76 78 98 96 10 85 47 97 +57 +5212 +31 8 15 5 55 20 56 19 66 57 +58 +5604 +80 37 18 50 70 15 51 48 19 9 +59 +2110 +18 21 54 83 32 36 97 49 66 54 +60 +2568 +5 3 24 70 31 65 52 66 61 13 +61 +5330 +18 76 55 21 64 97 46 22 60 47 +62 +676 +17 67 96 71 11 27 16 37 98 6 +63 +1603 +71 5 10 58 9 25 50 51 82 70 +64 +1085 +90 47 12 36 32 61 96 82 79 19 +65 +5128 +93 72 96 50 58 24 85 59 71 97 +66 +938 +14 66 53 31 98 97 61 88 28 41 +67 +4778 +49 56 92 86 95 61 76 77 74 1 +68 +1986 +52 95 77 29 25 75 30 19 27 57 +69 +2115 +7 49 6 30 4 92 90 32 33 60 +70 +616 +78 47 91 93 45 73 42 52 13 62 +71 +534 +57 26 14 49 60 21 88 9 9 14 +72 +1231 +41 81 41 83 87 29 37 96 12 90 +73 +3376 +75 56 30 89 31 3 43 23 51 76 +74 +2922 +98 76 85 44 1 96 88 64 16 12 +75 +2152 +93 66 17 38 96 51 91 22 49 89 +76 +1813 +33 36 23 62 22 26 14 37 83 37 +77 +3561 +75 53 60 45 95 44 63 3 48 35 +78 +4603 +68 26 76 22 73 56 65 52 13 91 +79 +2813 +33 52 39 85 77 31 74 44 78 69 +80 +528 +60 29 85 39 30 64 71 11 96 55 +81 +1112 +82 36 10 98 88 38 8 21 77 48 +82 +4387 +24 68 65 56 14 44 39 85 68 56 +83 +4573 +99 21 15 68 22 46 95 6 88 84 +84 +5585 +4 71 55 84 93 66 82 40 77 22 +85 +2680 +97 61 41 77 48 31 17 68 76 51 +86 +3262 +24 71 28 67 10 48 38 30 73 43 +87 +3913 +50 69 93 53 7 27 69 35 92 50 +88 +1749 +55 28 88 46 14 82 17 58 72 62 +89 +2369 +91 86 27 24 91 51 24 31 87 61 +90 +888 +46 27 77 52 5 90 66 11 66 10 +91 +3107 +58 41 81 96 43 63 75 11 98 87 +92 +4964 +17 86 19 2 30 85 52 6 40 99 +93 +5249 +47 55 76 88 79 36 59 59 31 40 +94 +5632 +82 17 55 33 39 69 4 64 75 91 +95 +893 +6 62 67 27 34 67 73 65 45 64 +96 +3432 +15 96 65 49 77 81 56 23 98 62 +97 +5507 +91 59 8 78 81 18 19 80 90 53 +98 +2007 +74 53 18 82 11 81 39 75 4 33 +99 +5336 +42 93 56 65 10 72 51 63 23 16 diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/benchs/100_20_01.txt b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/benchs/100_20_01.txt new file mode 100644 index 000000000..f063c0f7c --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/benchs/100_20_01.txt @@ -0,0 +1,303 @@ +100 +20 +450926852 +0 +1420 +12 27 24 42 5 27 51 48 42 31 48 51 8 1 1 28 4 44 6 57 +1 +1890 +72 97 57 16 42 69 9 44 18 49 92 84 37 77 59 81 40 6 49 88 +2 +5212 +29 53 68 44 47 38 22 73 31 78 43 28 33 92 53 96 5 18 84 88 +3 +2835 +16 16 58 75 47 66 15 95 18 23 35 63 4 57 22 99 37 51 72 43 +4 +4466 +22 36 76 32 47 21 84 72 55 37 7 86 8 46 10 79 80 77 39 25 +5 +5004 +61 28 70 66 78 65 38 12 82 34 51 99 38 75 48 97 46 47 51 81 +6 +1562 +69 50 72 31 94 3 71 30 64 43 85 27 97 2 94 15 14 27 77 3 +7 +1927 +71 41 56 6 18 7 11 22 36 7 66 24 75 14 46 6 81 17 59 3 +8 +2807 +86 42 56 6 14 10 45 25 48 69 87 36 76 14 57 77 16 42 97 78 +9 +2057 +16 86 55 52 97 11 48 92 74 97 71 83 93 79 55 98 10 84 5 97 +10 +5762 +54 2 89 7 54 41 29 5 17 15 16 24 69 64 66 5 79 3 83 74 +11 +5182 +53 45 23 92 73 64 31 44 60 38 40 54 10 8 69 51 35 69 51 71 +12 +5558 +64 86 42 45 94 9 14 90 18 80 22 34 25 73 7 51 41 3 9 50 +13 +2591 +96 43 26 70 17 15 56 35 88 78 12 49 40 15 13 60 83 6 9 70 +14 +4353 +79 92 87 72 97 71 59 24 37 89 2 43 88 71 64 17 13 94 59 23 +15 +4442 +68 73 17 48 7 86 35 64 29 95 90 5 90 6 83 98 93 58 30 43 +16 +2375 +98 99 38 86 94 2 7 82 19 1 63 70 57 54 39 46 55 65 86 51 +17 +3311 +87 84 24 63 94 26 20 7 51 18 52 56 39 59 46 87 48 36 49 97 +18 +2369 +40 83 82 61 68 57 48 34 20 11 15 71 29 49 59 44 35 28 46 57 +19 +4728 +74 61 55 92 4 78 88 91 7 11 6 12 97 38 36 18 75 68 13 77 +20 +5437 +22 7 47 73 60 84 54 59 43 92 18 30 51 21 69 71 66 73 45 90 +21 +3616 +23 8 7 49 70 20 30 5 77 99 87 77 97 60 47 93 82 81 51 58 +22 +4472 +47 62 99 53 68 21 81 47 95 81 66 55 5 8 83 97 3 12 68 75 +23 +2738 +55 3 89 20 22 3 2 96 92 79 7 92 75 35 25 44 79 89 82 4 +24 +1604 +21 21 20 97 17 39 1 7 27 53 43 78 91 81 12 18 78 53 6 12 +25 +3121 +90 50 65 58 59 64 78 53 70 47 27 79 80 96 28 59 48 14 99 2 +26 +2296 +68 71 3 59 98 51 8 60 91 48 78 52 81 61 30 9 99 88 12 4 +27 +2107 +14 95 45 29 55 83 8 77 74 32 80 19 60 89 49 45 91 78 8 28 +28 +5637 +42 70 89 98 76 12 71 61 62 58 73 16 97 58 81 78 29 63 36 54 +29 +1686 +41 60 96 61 3 16 60 14 80 33 86 21 14 32 56 67 87 81 24 39 +30 +2186 +40 4 16 83 21 3 41 88 85 65 82 37 2 59 96 65 27 29 82 30 +31 +5311 +63 58 42 8 10 1 39 97 8 86 33 85 55 89 89 50 2 15 73 71 +32 +3210 +23 16 70 83 11 88 8 92 39 60 92 56 97 99 73 87 48 81 66 89 +33 +1223 +75 30 69 73 44 80 96 65 85 47 8 29 60 7 52 29 33 84 69 33 +34 +2856 +4 80 77 2 29 77 3 73 83 89 87 56 8 79 12 80 92 36 71 85 +35 +4618 +31 71 46 56 43 2 79 19 76 40 64 23 30 38 98 14 15 8 70 2 +36 +1981 +87 59 20 7 60 14 48 99 31 72 7 19 87 1 12 70 55 60 61 69 +37 +2755 +25 75 71 15 14 60 23 92 12 54 26 52 42 67 40 10 24 24 42 20 +38 +1976 +47 52 91 55 46 45 38 19 69 29 79 39 16 63 70 30 59 57 77 64 +39 +1153 +70 25 8 3 3 39 85 66 26 57 49 4 56 42 35 19 41 87 10 94 +40 +5686 +1 86 34 73 60 32 32 25 54 93 71 46 86 3 58 51 49 61 2 3 +41 +4817 +49 48 72 13 72 97 69 79 91 65 72 59 4 29 95 4 88 57 6 41 +42 +1305 +59 53 40 47 90 98 56 36 61 39 69 22 30 23 41 23 67 85 24 37 +43 +4539 +11 54 82 76 1 65 99 10 27 8 30 76 15 21 71 9 49 45 97 36 +44 +4894 +93 98 60 15 42 86 51 23 88 87 28 34 24 25 90 62 81 69 15 74 +45 +2853 +38 36 59 43 74 6 59 37 53 57 46 63 23 48 3 30 89 15 91 53 +46 +1815 +5 9 59 44 54 14 47 76 47 5 75 32 57 33 68 20 43 7 32 49 +47 +5816 +43 78 43 13 41 99 79 83 39 56 78 72 81 92 5 69 24 87 68 77 +48 +5297 +82 80 72 16 15 93 67 58 14 80 34 92 77 2 18 88 70 58 17 13 +49 +4830 +33 88 10 18 38 54 83 99 78 2 4 72 43 12 26 22 74 61 1 37 +50 +4903 +26 52 63 16 24 54 58 29 90 17 23 26 82 32 2 43 44 82 49 34 +51 +3618 +89 30 67 18 91 92 49 35 90 84 69 46 97 38 21 63 23 73 25 31 +52 +4572 +86 62 12 3 49 57 50 49 50 86 33 30 3 67 86 67 89 84 46 15 +53 +5078 +10 8 41 11 23 39 19 89 64 65 11 49 46 93 8 22 96 63 37 32 +54 +1714 +16 45 5 98 63 13 64 79 94 53 5 3 86 80 33 82 80 14 56 45 +55 +1214 +72 77 25 9 88 70 5 82 79 5 54 81 62 75 88 41 44 73 50 50 +56 +2317 +96 90 67 28 1 73 5 92 10 16 42 4 26 59 33 69 69 84 9 81 +57 +1939 +47 52 95 44 30 16 52 45 18 58 12 46 56 51 65 81 7 9 62 46 +58 +4684 +9 39 46 14 85 43 15 42 7 60 40 95 67 7 8 21 10 38 10 93 +59 +2148 +56 95 37 39 22 9 26 21 26 78 30 20 87 65 89 54 15 67 89 13 +60 +4555 +8 86 41 76 94 2 67 51 51 25 51 56 46 6 46 42 55 76 66 47 +61 +5302 +69 15 2 92 39 76 11 30 23 71 94 57 66 59 76 53 27 18 98 50 +62 +1794 +87 98 25 59 70 38 77 70 43 93 24 85 53 30 57 52 55 70 10 70 +63 +2125 +84 59 99 95 85 66 74 2 95 99 28 31 34 67 51 26 2 69 70 21 +64 +3571 +62 22 48 11 7 21 88 20 57 6 84 44 52 41 58 69 82 4 92 41 +65 +5197 +52 43 24 55 65 32 83 82 30 62 69 1 81 32 62 80 42 58 36 12 +66 +1470 +82 85 18 56 43 78 96 13 86 60 44 11 68 63 59 46 88 66 82 18 +67 +2420 +66 93 10 16 4 41 73 92 80 33 98 72 48 7 71 10 84 11 54 28 +68 +4451 +67 6 23 56 60 52 59 91 55 57 36 6 4 8 12 81 38 1 34 22 +69 +1234 +33 46 66 23 90 88 94 2 76 79 21 68 25 89 11 99 69 51 34 60 +70 +1487 +3 51 82 84 73 76 15 80 12 7 9 62 76 51 82 6 31 38 5 69 +71 +5745 +53 97 84 22 21 14 50 38 91 69 48 18 46 81 56 90 5 16 12 49 +72 +1472 +95 79 14 32 25 86 20 54 95 82 30 21 13 9 57 79 3 81 3 38 +73 +5132 +42 46 13 40 33 35 54 45 28 26 15 48 72 13 53 34 37 39 56 80 +74 +3842 +59 71 88 47 48 81 16 19 12 41 21 32 72 27 45 56 14 56 44 52 +75 +3269 +77 18 7 92 25 32 33 65 18 52 43 42 82 74 96 75 35 83 41 45 +76 +4366 +38 33 40 61 27 75 9 35 80 38 91 79 32 59 31 54 61 27 14 34 +77 +4912 +12 13 20 51 37 38 74 66 32 21 49 74 25 98 39 94 43 29 25 3 +78 +3383 +1 3 68 74 63 55 11 26 67 84 86 82 58 31 12 84 38 93 78 61 +79 +4632 +66 32 22 85 28 96 21 18 2 74 36 3 17 98 13 55 48 70 25 96 +80 +2775 +24 28 92 6 88 19 97 32 4 76 41 64 99 48 8 64 89 64 89 99 +81 +5614 +17 48 53 13 27 35 15 51 30 16 10 90 54 74 49 14 86 22 83 49 +82 +3465 +58 8 16 32 94 41 43 23 64 75 75 10 81 76 4 18 37 84 78 78 +83 +1004 +71 42 10 8 20 77 2 18 69 75 56 72 73 75 33 6 20 25 23 34 +84 +1425 +88 26 23 43 54 36 1 87 76 36 70 2 93 78 22 27 33 73 51 78 +85 +1759 +63 26 88 30 17 24 74 74 92 79 73 49 73 11 30 20 1 81 7 79 +86 +5341 +60 95 65 53 74 52 37 10 50 71 57 88 79 71 34 54 8 10 20 64 +87 +1080 +86 44 11 24 35 60 61 76 35 82 51 53 54 54 19 30 61 46 30 55 +88 +4906 +8 74 89 2 15 43 3 31 20 70 34 59 72 10 24 58 41 32 30 63 +89 +2859 +8 82 78 11 53 30 75 31 23 22 62 88 37 96 56 35 40 38 30 24 +90 +5588 +44 28 94 33 64 86 41 93 52 39 3 97 68 97 96 66 10 68 63 58 +91 +5551 +99 4 32 27 38 6 86 61 25 8 34 98 22 75 35 85 10 40 82 25 +92 +5376 +80 42 64 35 79 8 51 26 82 22 27 94 94 41 43 78 75 33 40 93 +93 +5672 +76 81 42 40 45 31 65 39 18 79 29 95 37 30 8 15 9 79 39 73 +94 +5671 +94 56 74 40 67 80 42 83 2 90 25 93 15 73 5 29 81 64 37 45 +95 +4086 +75 38 87 96 93 82 50 11 29 55 97 95 31 84 65 31 40 36 44 93 +96 +1806 +63 50 63 69 16 2 48 57 70 77 30 6 46 22 64 45 13 62 2 37 +97 +5810 +57 12 94 23 59 59 88 81 7 3 28 1 33 8 20 41 10 82 27 64 +98 +1083 +76 43 87 32 47 47 52 40 36 20 48 15 82 98 54 84 53 44 71 92 +99 +1887 +34 51 72 13 95 21 46 97 96 61 99 66 75 68 38 51 28 99 45 59 diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/benchs/200_10_01.txt b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/benchs/200_10_01.txt new file mode 100644 index 000000000..d1bccf9b0 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/benchs/200_10_01.txt @@ -0,0 +1,603 @@ +200 +10 +471503978 +0 +7166 +17 30 28 15 52 5 53 55 81 47 +1 +7478 +37 26 82 67 82 44 43 65 44 51 +2 +4344 +22 2 88 57 17 2 43 38 46 44 +3 +3004 +71 29 33 64 66 98 56 76 3 27 +4 +4783 +79 98 69 23 62 27 48 45 93 76 +5 +4813 +37 67 28 9 57 10 83 99 14 4 +6 +1411 +69 92 92 1 58 25 34 84 86 76 +7 +4573 +53 51 66 2 91 27 93 67 23 49 +8 +7480 +59 53 92 43 42 41 95 40 59 5 +9 +4429 +64 82 30 73 69 59 48 93 47 25 +10 +841 +11 86 67 94 48 89 63 70 76 23 +11 +9418 +67 47 53 96 46 36 93 45 45 67 +12 +8849 +27 36 93 78 18 62 91 75 64 55 +13 +5306 +64 23 45 14 94 29 94 91 10 40 +14 +4634 +59 34 7 32 83 17 32 21 4 58 +15 +9336 +31 66 70 23 48 37 81 72 29 26 +16 +4344 +43 43 58 83 81 35 69 15 69 36 +17 +10182 +42 71 58 29 57 47 29 73 46 83 +18 +5648 +56 31 17 75 93 37 44 43 68 65 +19 +10009 +88 36 41 55 67 52 2 62 89 91 +20 +7809 +71 41 56 91 19 3 66 40 48 77 +21 +6970 +86 6 34 44 65 87 25 43 68 62 +22 +6260 +6 28 62 46 49 4 60 96 13 6 +23 +3543 +54 43 81 59 45 50 69 39 36 57 +24 +4215 +92 18 44 11 22 96 44 23 85 87 +25 +7436 +75 64 95 20 92 74 34 79 35 4 +26 +2229 +83 28 50 68 41 68 68 66 25 11 +27 +6742 +2 13 88 3 38 30 77 19 21 60 +28 +1878 +60 7 19 17 26 69 31 41 44 23 +29 +3222 +62 13 50 55 2 17 10 71 40 87 +30 +2189 +83 93 25 59 90 34 57 60 20 50 +31 +9874 +73 93 88 18 79 95 21 72 83 18 +32 +1849 +55 56 1 31 17 3 56 62 76 23 +33 +10057 +3 72 6 84 61 24 36 17 26 24 +34 +7309 +71 71 45 61 81 51 26 25 50 82 +35 +9509 +34 28 29 55 67 55 11 59 98 16 +36 +10403 +40 95 2 46 18 60 6 95 6 96 +37 +4515 +13 96 54 77 1 61 86 47 83 37 +38 +1586 +62 55 71 59 36 15 2 10 51 29 +39 +638 +56 58 81 98 31 38 89 94 46 19 +40 +7434 +28 66 22 23 85 83 28 39 99 26 +41 +9737 +53 3 57 18 92 62 62 53 65 56 +42 +5477 +71 77 16 17 6 84 63 50 46 33 +43 +5976 +5 80 88 70 78 44 52 99 24 53 +44 +3293 +73 2 5 73 83 80 12 63 47 6 +45 +5869 +95 82 52 38 39 48 13 59 24 95 +46 +10358 +23 86 23 13 74 45 43 30 32 63 +47 +4698 +49 16 21 77 77 54 99 67 66 84 +48 +9855 +17 29 21 74 85 71 11 18 48 13 +49 +5305 +81 24 58 79 88 10 70 12 83 6 +50 +8401 +88 89 96 51 25 96 82 9 3 19 +51 +6004 +62 96 37 48 33 23 14 41 74 16 +52 +3369 +35 99 46 16 36 8 39 67 97 80 +53 +10335 +78 15 78 93 32 56 83 52 39 37 +54 +2868 +90 49 87 29 82 35 4 39 80 20 +55 +5297 +36 78 91 28 98 72 86 90 27 62 +56 +3744 +46 48 9 6 3 53 93 25 70 81 +57 +9148 +98 64 96 82 46 13 87 13 65 52 +58 +3270 +75 3 93 40 68 72 82 81 1 14 +59 +7616 +36 63 98 9 11 38 78 3 26 67 +60 +5131 +74 14 31 88 30 1 32 8 46 19 +61 +9674 +86 95 78 51 75 69 82 66 8 86 +62 +940 +67 88 20 48 42 85 24 67 74 1 +63 +6286 +87 9 75 1 93 2 88 51 47 53 +64 +1159 +68 61 18 4 36 28 45 54 19 21 +65 +10410 +1 24 34 77 97 18 48 85 85 33 +66 +3268 +87 38 48 48 1 10 67 10 62 68 +67 +6533 +87 50 49 6 63 70 14 95 33 28 +68 +1984 +7 47 69 1 86 67 34 59 96 25 +69 +2658 +34 42 88 32 54 95 76 64 33 69 +70 +7518 +1 30 30 79 33 72 1 90 5 71 +71 +3280 +91 97 34 40 71 64 51 28 23 60 +72 +8989 +7 49 22 14 1 19 15 48 43 69 +73 +4877 +6 79 81 20 18 60 67 57 63 99 +74 +7608 +46 19 50 86 75 31 57 85 10 53 +75 +4775 +3 80 40 40 55 29 3 78 47 77 +76 +4441 +45 30 73 25 62 43 37 18 73 27 +77 +689 +55 24 91 94 21 17 15 59 1 29 +78 +8408 +92 58 7 73 71 78 50 11 19 83 +79 +2103 +67 43 1 44 80 28 75 67 92 22 +80 +6500 +13 6 71 98 5 47 80 36 31 10 +81 +3906 +30 95 72 94 48 78 3 24 29 42 +82 +4713 +27 43 8 61 87 77 9 59 68 64 +83 +9905 +19 99 68 65 22 92 28 24 31 80 +84 +3660 +51 22 49 44 5 42 44 39 92 73 +85 +2405 +86 99 7 75 71 86 2 1 48 91 +86 +7436 +20 11 47 4 69 6 71 80 87 38 +87 +5400 +95 99 90 17 75 19 89 58 8 60 +88 +8689 +79 60 59 1 72 28 24 76 90 53 +89 +5805 +48 42 39 12 36 18 73 59 57 38 +90 +685 +83 33 49 78 54 4 28 90 40 19 +91 +9892 +91 68 28 51 24 24 98 92 25 14 +92 +9000 +78 78 22 55 55 57 17 3 49 35 +93 +2827 +41 26 10 53 5 82 27 51 26 10 +94 +1779 +61 77 96 96 40 7 90 1 35 44 +95 +2539 +90 1 2 92 56 4 4 55 90 97 +96 +5797 +57 13 88 82 8 94 13 50 99 17 +97 +6740 +4 67 90 20 19 9 83 15 30 50 +98 +5913 +21 87 69 22 7 57 43 31 5 22 +99 +1778 +68 31 44 13 12 82 63 99 52 19 +100 +9256 +87 49 74 40 44 98 68 8 12 70 +101 +1943 +62 90 16 43 66 54 74 44 11 88 +102 +2314 +69 6 90 23 39 2 12 91 72 31 +103 +5964 +79 76 7 30 41 71 69 83 32 7 +104 +2160 +69 94 14 16 60 94 38 75 81 81 +105 +5000 +35 76 47 76 11 69 74 66 21 58 +106 +753 +25 79 48 30 31 51 98 98 81 2 +107 +8317 +68 66 36 59 65 80 86 77 64 89 +108 +9608 +14 51 62 64 16 79 72 8 45 1 +109 +5659 +9 14 1 72 67 85 76 6 4 80 +110 +3727 +74 89 63 61 19 56 53 26 10 52 +111 +878 +61 87 86 13 69 79 94 47 90 15 +112 +5610 +58 1 49 81 56 46 45 55 11 25 +113 +8024 +81 65 48 25 96 71 30 39 88 11 +114 +7993 +52 53 3 90 78 85 39 91 52 97 +115 +7345 +93 19 51 67 36 52 60 78 96 90 +116 +5943 +44 21 80 21 56 42 69 49 92 62 +117 +5637 +57 98 86 70 12 66 12 23 44 69 +118 +3377 +89 90 97 96 37 82 83 92 54 34 +119 +10135 +81 45 4 99 1 91 21 68 28 66 +120 +2394 +69 77 58 64 50 48 25 88 85 54 +121 +6036 +98 54 79 68 43 70 50 9 51 84 +122 +6761 +78 86 28 61 58 21 47 38 21 62 +123 +7860 +70 2 19 36 13 82 43 60 4 71 +124 +8007 +3 3 93 57 55 12 58 2 42 70 +125 +7718 +70 88 88 86 87 94 11 8 43 60 +126 +7598 +62 39 44 10 20 17 63 86 55 54 +127 +3245 +81 56 74 57 84 45 74 62 89 52 +128 +4953 +61 24 18 88 28 68 6 41 4 71 +129 +8163 +65 91 95 59 59 60 23 66 1 9 +130 +8429 +65 86 2 73 65 93 94 94 97 99 +131 +8623 +33 80 22 43 56 30 93 54 65 41 +132 +1742 +62 58 7 25 2 5 26 9 38 30 +133 +1409 +19 54 82 37 36 31 49 75 87 23 +134 +5249 +57 57 52 70 41 30 30 43 58 60 +135 +9063 +82 42 17 97 7 71 50 9 47 1 +136 +7293 +78 32 59 29 23 29 47 10 53 67 +137 +1353 +94 5 42 33 25 82 89 79 51 55 +138 +6480 +65 43 51 99 81 20 43 10 40 64 +139 +8191 +14 80 79 34 6 13 32 97 80 21 +140 +7595 +9 86 93 96 67 94 45 39 20 16 +141 +739 +29 47 65 65 5 47 47 30 24 94 +142 +7977 +70 95 27 90 89 57 68 74 77 11 +143 +8304 +90 86 25 52 71 95 13 52 37 90 +144 +6930 +86 40 60 95 86 8 86 90 13 48 +145 +5996 +12 31 72 3 48 46 97 12 29 85 +146 +2438 +40 61 29 64 50 80 2 61 28 34 +147 +2339 +12 12 55 21 54 32 16 34 18 7 +148 +5848 +64 64 58 16 21 7 27 88 22 79 +149 +4982 +32 17 22 70 83 34 38 27 75 95 +150 +7604 +18 52 58 67 27 33 53 68 24 50 +151 +10491 +11 56 61 13 38 33 37 14 79 78 +152 +8007 +40 35 89 96 79 18 94 88 99 39 +153 +6393 +14 60 67 57 71 29 78 74 35 79 +154 +1948 +22 75 14 7 53 19 84 71 45 69 +155 +8138 +49 10 10 30 2 74 49 14 95 27 +156 +3757 +95 50 40 96 9 58 25 16 46 42 +157 +4120 +82 66 11 98 49 52 59 46 15 15 +158 +4850 +7 53 99 72 79 10 36 47 7 51 +159 +4564 +19 58 7 31 39 70 33 54 24 44 +160 +4171 +95 12 20 11 28 78 15 91 45 71 +161 +669 +39 66 78 36 39 59 36 89 20 32 +162 +4803 +71 81 6 10 70 32 47 59 35 66 +163 +5464 +34 51 71 20 72 20 83 39 61 49 +164 +6219 +89 75 48 26 70 12 24 52 97 8 +165 +2726 +63 71 39 67 38 98 71 91 69 7 +166 +6507 +85 46 58 13 48 18 7 21 78 44 +167 +6446 +60 88 7 60 57 12 6 90 13 1 +168 +3416 +91 58 17 50 11 57 55 58 53 15 +169 +918 +49 73 63 28 38 73 43 74 16 6 +170 +3139 +46 27 73 32 37 91 82 30 94 51 +171 +9351 +10 26 43 49 56 46 40 63 59 91 +172 +7171 +19 38 14 54 64 64 78 19 64 33 +173 +2127 +50 48 66 46 64 92 64 18 72 77 +174 +4461 +65 8 59 15 68 45 96 88 13 69 +175 +799 +41 14 75 49 27 86 27 22 47 28 +176 +6861 +58 58 96 94 36 84 99 43 22 8 +177 +9690 +62 89 28 63 94 15 11 60 9 8 +178 +3180 +45 44 12 96 65 99 91 20 68 48 +179 +2449 +67 16 99 43 89 8 78 32 4 7 +180 +8742 +64 20 63 73 23 87 97 67 67 55 +181 +4503 +6 69 19 19 93 61 23 1 92 51 +182 +10135 +77 67 26 19 14 42 48 42 49 89 +183 +8757 +94 80 8 81 57 25 20 95 23 61 +184 +1192 +24 81 72 82 93 35 99 84 37 82 +185 +8334 +38 82 55 69 60 64 39 37 16 39 +186 +9610 +73 27 67 13 82 74 53 30 39 89 +187 +8681 +59 5 1 85 16 40 3 12 47 47 +188 +8465 +61 44 23 32 69 89 65 87 94 24 +189 +8425 +14 38 35 34 57 4 81 13 71 79 +190 +3227 +59 53 6 57 8 43 47 60 36 86 +191 +4628 +83 16 89 69 52 12 25 92 72 60 +192 +1319 +3 48 93 63 98 28 36 52 67 67 +193 +9629 +46 16 88 49 67 68 44 51 78 10 +194 +4236 +16 31 86 56 19 46 29 91 13 61 +195 +5509 +56 79 37 37 56 23 85 76 68 60 +196 +9597 +40 75 53 54 38 3 26 32 36 68 +197 +8513 +7 14 45 60 75 70 4 81 69 72 +198 +2882 +79 67 32 97 69 81 9 57 28 9 +199 +7268 +55 70 69 44 14 14 59 71 69 47 diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/benchs/README b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/benchs/README new file mode 100644 index 000000000..7f3c69274 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/benchs/README @@ -0,0 +1 @@ +Further benchmarks for the bi-objective flow-shop scheduling problem are available at http://www.lifl.fr/~liefooga/benchmarks/ \ No newline at end of file diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/make_eval_FlowShop.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/make_eval_FlowShop.h new file mode 100644 index 000000000..680615af7 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/make_eval_FlowShop.h @@ -0,0 +1,81 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MAKE_EVAL_FLOWSHOP_H_ +#define MAKE_EVAL_FLOWSHOP_H_ + + +#include +#include +#include +#include +#include +#include + +/* + * This function creates an eoEvalFuncCounter that can later be used to evaluate an individual. + * @param eoParser& _parser to get user parameters + * @param eoState& _state to store the memory + */ +eoEvalFuncCounter & do_make_eval(eoParser& _parser, eoState& _state) +{ + // benchmark file name + std::string benchmarkFileName = _parser.getORcreateParam(std::string(), "BenchmarkFile", "Benchmark file name (benchmarks are available at www.lifl.fr/~liefooga/benchmarks)", 'B',"Representation", true).value(); + if (benchmarkFileName == "") + { + std::string stmp = "*** Missing name of the benchmark file\n"; + stmp += " Type '-B=the_benchmark_file_name' or '--BenchmarkFile=the_benchmark_file_name'\n"; + stmp += " Benchmarks files are available at www.lifl.fr/~liefooga/benchmarks"; + throw std::runtime_error(stmp.c_str()); + } + // reading of the parameters contained in the benchmark file + FlowShopBenchmarkParser fParser(benchmarkFileName); + unsigned int M = fParser.getM(); + unsigned int N = fParser.getN(); + std::vector< std::vector > p = fParser.getP(); + std::vector d = fParser.getD(); + // build of the initializer (a pointer, stored in the eoState) + FlowShopEval* plainEval = new FlowShopEval(M, N, p, d); + // turn that object into an evaluation counter + eoEvalFuncCounter* eval = new eoEvalFuncCounter (* plainEval); + // store in state + _state.storeFunctor(eval); + // and return a reference + return *eval; +} + +#endif /*MAKE_EVAL_FLOWSHOP_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/make_genotype_FlowShop.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/make_genotype_FlowShop.h new file mode 100644 index 000000000..5487a0f17 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/make_genotype_FlowShop.h @@ -0,0 +1,74 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MAKE_GENOTYPE_FLOWSHOP_H_ +#define MAKE_GENOTYPE_FLOWSHOP_H_ + +#include +#include +#include +#include +#include + +/* + * This function creates an eoInit that can later be used to initialize the population (see make_pop.h). + * @param eoParser& _parser to get user parameters + * @param eoState& _state to store the memory + */ +eoInit & do_make_genotype(eoParser& _parser, eoState& _state) +{ + // benchmark file name + std::string benchmarkFileName = _parser.getORcreateParam(std::string(), "BenchmarkFile", "Benchmark file name (benchmarks are available at www.lifl.fr/~liefooga/benchmarks/)", 'B',"Representation", true).value(); + if (benchmarkFileName == "") + { + std::string stmp = "*** Missing name of the benchmark file\n"; + stmp += " Type '-B=the_benchmark_file_name' or '--BenchmarkFile=the_benchmark_file_name'\n"; + stmp += " Benchmarks files are available at www.lifl.fr/~liefooga/benchmarks"; + throw std::runtime_error(stmp.c_str()); + } + // reading of number of jobs to schedule contained in the benchmark file + FlowShopBenchmarkParser fParser(benchmarkFileName); + unsigned int N = fParser.getN(); + // build of the initializer (a pointer, stored in the eoState) + eoInit* init = new FlowShopInit(N); + // store in state + _state.storeFunctor(init); + // and return a reference + return *init; +} + +#endif /*MAKE_GENOTYPE_FLOWSHOP_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/make_op_FlowShop.h b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/make_op_FlowShop.h new file mode 100644 index 000000000..4316f7f65 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-moeo/tutorial/examples/flowshop/make_op_FlowShop.h @@ -0,0 +1,132 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MAKE_OP_FLOWSHOP_H_ +#define MAKE_OP_FLOWSHOP_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * This function builds the operators that will be applied to the eoFlowShop + * @param eoParameterLoader& _parser to get user parameters + * @param eoState& _state to store the memory + */ +eoGenOp & do_make_op(eoParameterLoader& _parser, eoState& _state) +{ + + ///////////////////////////// + // Variation operators + //////////////////////////// + + // the crossover + //////////////// + + // a first crossover + eoQuadOp *cross = new FlowShopOpCrossoverQuad; + // store in the state + _state.storeFunctor(cross); + + // relative rate in the combination + double cross1Rate = _parser.createParam(1.0, "crossRate", "Relative rate for the only crossover", 0, "Variation Operators").value(); + // creation of the combined operator with this one + eoPropCombinedQuadOp *propXover = new eoPropCombinedQuadOp(*cross, cross1Rate); + // store in the state + _state.storeFunctor(propXover); + + + // the mutation + /////////////// + + // a first mutation : the shift mutation + eoMonOp *mut = new FlowShopOpMutationShift; + _state.storeFunctor(mut); + // its relative rate in the combination + double mut1Rate = _parser.createParam(0.5, "shiftMutRate", "Relative rate for shift mutation", 0, "Variation Operators").value(); + // creation of the combined operator with this one + eoPropCombinedMonOp *propMutation = new eoPropCombinedMonOp(*mut, mut1Rate); + _state.storeFunctor(propMutation); + + // a second mutation : the exchange mutation + mut = new FlowShopOpMutationExchange; + _state.storeFunctor(mut); + // its relative rate in the combination + double mut2Rate = _parser.createParam(0.5, "exchangeMutRate", "Relative rate for exchange mutation", 0, "Variation Operators").value(); + // addition of this one to the combined operator + propMutation -> add(*mut, mut2Rate); + + // end of crossover and mutation definitions + //////////////////////////////////////////// + + // First read the individual level parameters + eoValueParam& pCrossParam = _parser.createParam(0.25, "pCross", "Probability of Crossover", 'c', "Variation Operators" ); + // minimum check + if ( (pCrossParam.value() < 0) || (pCrossParam.value() > 1) ) + throw std::runtime_error("Invalid pCross"); + + eoValueParam& pMutParam = _parser.createParam(0.35, "pMut", "Probability of Mutation", 'm', "Variation Operators" ); + // minimum check + if ( (pMutParam.value() < 0) || (pMutParam.value() > 1) ) + throw std::runtime_error("Invalid pMut"); + + // the crossover - with probability pCross + eoProportionalOp * propOp = new eoProportionalOp ; + _state.storeFunctor(propOp); + eoQuadOp *ptQuad = new eoQuadCloneOp; + _state.storeFunctor(ptQuad); + propOp -> add(*propXover, pCrossParam.value()); // crossover, with proba pcross + propOp -> add(*ptQuad, 1-pCrossParam.value()); // nothing, with proba 1-pcross + + // now the sequential + eoSequentialOp *op = new eoSequentialOp; + _state.storeFunctor(op); + op -> add(*propOp, 1.0); // always do combined crossover + op -> add(*propMutation, pMutParam.value()); // then mutation, with proba pmut + + // return a reference + return *op; +} + +#endif /*MAKE_OP_FLOWSHOP_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/AUTHORS b/branches/paradiseo-ix86-2.0/paradiseo-peo/AUTHORS new file mode 100644 index 000000000..91f92d5ca --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/AUTHORS @@ -0,0 +1,3 @@ +Sébastien Cahon +Alexandru-Adrian Tantar +Clive Canape diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/CMakeLists.txt b/branches/paradiseo-ix86-2.0/paradiseo-peo/CMakeLists.txt new file mode 100644 index 000000000..61a1aef56 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/CMakeLists.txt @@ -0,0 +1,164 @@ + +###################################################################################### +### 0) Preliminary checking: no WIN and libxml2 +###################################################################################### + +#IF(WIN32) +# MESSAGE (FATAL_ERROR "ParadisEO-PEO can not be generated on Windows systems") +#ENDIF(WIN32) + +# check libxml2 +FIND_PROGRAM(XML2_CONFIG_PROGRAM NAMES xml2-config PATHS /usr/local/bin /usr/bin DOC "The libxml2 (www.xmlsoft.org) configuration tool") + +IF(NOT XML2_CONFIG_PROGRAM) + #MESSAGE(FATAL_ERROR "Libxml2 cannot be found on your system. Libxml2 is required for ParadisEO-PEO install") +ENDIF(NOT XML2_CONFIG_PROGRAM) + +# set libxml2 cflags in XML2_CFLAGS +EXECUTE_PROCESS(COMMAND ${XML2_CONFIG_PROGRAM} --cflags OUTPUT_VARIABLE XML2_CFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE) +SET(XML2_CFLAGS_WITH_WHITESPACE " ${XML2_CFLAGS}") + +# set libxml2 libs in XML2_LIBS +EXECUTE_PROCESS(COMMAND ${XML2_CONFIG_PROGRAM} --libs OUTPUT_VARIABLE XML2_LIBS OUTPUT_STRIP_TRAILING_WHITESPACE) +###################################################################################### + + +###################################################################################### +### 1) If you want to set your variables in peo-conf.cmake and avoid the cmd line +###################################################################################### + +INCLUDE(peo-conf.cmake OPTIONAL) + +###################################################################################### + + +###################################################################################### +### 2) Project properties +###################################################################################### + +# set the project name +PROJECT(ParadisEO-PEO) + +SET(PACKAGE_BUGREPORT "paradiseo-help@lists.gforge.inria.fr" CACHE STRING "Package bug report" FORCE) +SET(PACKAGE_NAME "ParadisEO-PEO Moving Objects" CACHE STRING "Package name" FORCE) +SET(PACKAGE_STRING "ParadisEO-PEO 1.0" CACHE STRING "Package string full name" FORCE) +SET(PACKAGE_VERSION "1.0" CACHE STRING "Package version" FORCE) +SET(GLOBAL_VERSION "1.0" CACHE STRING "Global version" FORCE) +SET(VERSION "1.0" CACHE STRING "Version" FORCE) + +# check cmake version compatibility +CMAKE_MINIMUM_REQUIRED(VERSION 2.4 FATAL_ERROR) + +# regular expression checking +INCLUDE_REGULAR_EXPRESSION("^.*$" "^$") + +# set a language for the entire project. +ENABLE_LANGUAGE(CXX) +ENABLE_LANGUAGE(C) + +##################################################################################### + + +##################################################################################### +### 3) Include required modules +##################################################################################### +INCLUDE(CMakeBackwardCompatibilityCXX) + +INCLUDE(FindDoxygen) + +INCLUDE(FindGnuplot) + +# check for some functions +INCLUDE(CheckLibraryExists) + +###################################################################################### + + +###################################################################################### +### 4) Include the main configuration variables +###################################################################################### + +# The "config" variable must be provided on the command line +IF(NOT DEFINED config OR NOT config) + MESSAGE(FATAL_ERROR "The \"config\" variable must be set on the command line to + give the path of the install configuration file. ") +ENDIF(NOT DEFINED config OR NOT config) + +# Need the config file whose full path is given thanks to the "config" variable +INCLUDE(${config}) + +###################################################################################### + + +###################################################################################### +### 4) Paths checking +###################################################################################### + +IF(WIN32) + SET (ABSOLUTE_PATH_REGEX "^[A-Z]:|^[a-z]:") +ELSE(WIN32) + SET (ABSOLUTE_PATH_REGEX "^/") +ENDIF(WIN32) + +SET(REQUIRED_PATHS "EO_SRC_DIR" "EO_BIN_DIR" "MO_SRC_DIR" "MO_BIN_DIR" "MOEO_SRC_DIR" "MOEO_BIN_DIR") +FOREACH (path ${REQUIRED_PATHS}) + IF(EXISTS ${${path}}) + MESSAGE (STATUS "Using ${path}=${${path}}") + ELSE(EXISTS ${${path}}) + MESSAGE (FATAL_ERROR "\n Cannot find \"${${path}}\". Please, fill \"${config}\" with a correct value for ${path} variable") + ENDIF(EXISTS ${${path}}) + + IF(NOT ${${path}} MATCHES "${ABSOLUTE_PATH_REGEX}") + MESSAGE (FATAL_ERROR "${${path}} MUST BE an absolute path") + ENDIF(NOT ${${path}} MATCHES "${ABSOLUTE_PATH_REGEX}") +ENDFOREACH (path ${REQUIRED_PATHS}) +###################################################################################### + + +##################################################################################### +### 5) Manage the build type +##################################################################################### + +# the user should choose the build type on windows environments,excepted under cygwin (default=none) +SET(CMAKE_DEFAULT_BUILD_TYPE "Release" CACHE STRING "Variable that stores the default CMake build type" FORCE) + +IF(WIN32 AND NOT CYGWIN) + IF(NOT CMAKE_BUILD_TYPE) + SET( CMAKE_BUILD_TYPE + ${CMAKE_DEFAULT_BUILD_TYPE} CACHE STRING + "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel." + FORCE) + ENDIF(NOT CMAKE_BUILD_TYPE) +ELSE(WIN32 AND NOT CYGWIN) + IF(CMAKE_COMPILER_IS_GNUCXX) + SET(CMAKE_CXX_FLAGS_DEBUG "-Wall -Wextra -Wno-import -Winit-self -Wmissing-include-dirs -Wunused-parameter -Wundef -Wshadow -Wunsafe-loop-optimizations -Wcast-align -Wconversion -Wsign-compare -Winline -Wdisabled-optimization") + ENDIF(CMAKE_COMPILER_IS_GNUCXX) +ENDIF(WIN32 AND NOT CYGWIN) + +IF(CMAKE_BUILD_TYPE MATCHES Debug) + ADD_DEFINITIONS(-DCMAKE_VERBOSE_MAKEFILE=ON) +ENDIF(CMAKE_BUILD_TYPE MATCHES Debug) + +##################################################################################### + + +###################################################################################### +### 6) Where must cmake go now ? +###################################################################################### + +SUBDIRS(doc src test tutorial) + +###################################################################################### + + +###################################################################################### +### 7) Test config +###################################################################################### + +SET(ENABLE_CMAKE_TESTING TRUE CACHE BOOL "Should we test using Dart") + +IF (ENABLE_CMAKE_TESTING) + ENABLE_TESTING() +ENDIF (ENABLE_CMAKE_TESTING) + +###################################################################################### diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/README b/branches/paradiseo-ix86-2.0/paradiseo-peo/README new file mode 100755 index 000000000..d60eb05c3 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/README @@ -0,0 +1,82 @@ + PARADISEO-PEO README FILE +======================================================================= + check latest news at http://paradiseo.gforge.inria.fr/ +======================================================================= + +Welcome to ParadisEO-PEO, the Parallel Evolving Objects library. +The latest news about ParadisEO-PEO can be found on the gforge repository at +http://paradiseo.gforge.inria.fr/ +In case of any problem, please e-mail us at +paradiseo-help@lists.gforge.inria.fr + + +======================================================================= + BUILDING PARADISEO-PEO +======================================================================= +The basic installation procedure goes the following. + +To compile paradiseo-peo in the default directory, +go to paradiseo-peo/build/ and run: + > cmake ../ -Dconfig= + > make + // for an easy-use of the provided lessons + > make install + // optional (if the documentation is not already available) + > make doc + +To compile paradiseo-peo anywhere else, simply run: + > cmake $(PEO) -Dconfig= + > make + // for an easy-use of the provided lessons + > make install + // optional (if the documentation is not already available) + > make doc + +To clean everything, simply run + > make clean + + +=================================================================== + DIRECTORY STRUCTURE +=================================================================== +After unpacking the archive file, you should end up with the following +structure: + +.../ The main PARADISEO-PEO directory, created when unpacking. + | + +-- build BUILD directory that contains libraries and executable files. + | + +-- src SOURCE directory Contains most PARADISEO-PEO .h files. + | + +-- doc DOCUMENTATION directory (generated by Doxygen). + | | + | +- html HTML files - start at index.html. + | | + | +- latex latex files - use to generate Postcript doc. + | | + | +- man Unix man format documentation. + | + | + +-- tutorial APPLICATIONS + | + +-- examples TSP + | + +-- Introduction Technical introduction + | + +-- Lesson1 Parallel evaluation for EA and PSO + | + +-- Lesson2 Parallel transformation (crossover + mutation) for EA + | + +-- Lesson3 Insular model for PSO and EA + | + +-- Lesson4 PSO and EA completely parallel + | + +-- Lesson5 Hybridization + | + +-- Lesson6 Multi-start : several local searches + +=================================================================== + NOTES +=================================================================== + +Mailing list : paradiseo-help@lists.gforge.inria.fr diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/CMakeLists.txt b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/CMakeLists.txt new file mode 100644 index 000000000..5934e8857 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/CMakeLists.txt @@ -0,0 +1,26 @@ + +########################################################################################## +### PEO Doc generation using Doxygen +########################################################################################## + +IF (DOXYGEN_FOUND) + + SET(DOC_DIR ${CMAKE_BINARY_DIR}/doc CACHE PATH "PEO documentation directory") + SET(PEO_DOC_CONFIG_FILE "peo.doxyfile" CACHE PATH "PEO documentation configuration file") + # define the doc target + IF (DOXYGEN_EXECUTABLE) + ADD_CUSTOM_TARGET(doc + COMMAND ${DOXYGEN_EXECUTABLE} ${PEO_DOC_CONFIG_FILE} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + ) + ENDIF (DOXYGEN_EXECUTABLE) + + # configure doxyfile file + CONFIGURE_FILE("${CMAKE_SOURCE_DIR}/doc/${PEO_DOC_CONFIG_FILE}.cmake" + "${CMAKE_BINARY_DIR}/doc/${PEO_DOC_CONFIG_FILE}") + +ELSE (DOXYGEN_FOUND) + MESSAGE(STATUS "Unable to generate the documentation, Doxygen package not found") +ENDIF (DOXYGEN_FOUND) + +########################################################################################## \ No newline at end of file diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/Lesson1_2main_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/Lesson1_2main_8cpp-source.html new file mode 100644 index 000000000..9342a2ab5 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/Lesson1_2main_8cpp-source.html @@ -0,0 +1,136 @@ + + +ParadisEO-PEOMovingObjects: main.cpp Source File + + + + +
+
+

main.cpp

00001 /* 
+00002 * <main.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include "route.h"
+00038 #include "route_init.h"
+00039 #include "route_eval.h"
+00040 
+00041 #include "order_xover.h"
+00042 #include "city_swap.h"
+00043 
+00044 #include "param.h"
+00045 
+00046 #include <peo>
+00047 
+00048 
+00049 #define POP_SIZE 10
+00050 #define NUM_GEN 100
+00051 #define CROSS_RATE 1.0
+00052 #define MUT_RATE 0.01
+00053 
+00054 
+00055 int main( int __argc, char** __argv ) {
+00056 
+00057         // initializing the ParadisEO-PEO environment
+00058         peo :: init( __argc, __argv );
+00059 
+00060 
+00061         // processing the command line specified parameters
+00062         loadParameters( __argc, __argv );
+00063 
+00064 
+00065         // init, eval operators, EA operators -------------------------------------------------------------------------------------------------------------
+00066 
+00067         RouteInit route_init;   // random init object - creates random Route objects
+00068         RouteEval full_eval;    // evaluator object - offers a fitness value for a specified Route object
+00069 
+00070         OrderXover crossover;   // crossover operator - creates two offsprings out of two specified parents
+00071         CitySwap mutation;      // mutation operator - randomly mutates one gene for a specified individual
+00072         // ------------------------------------------------------------------------------------------------------------------------------------------------
+00073 
+00074 
+00075         // evolutionary algorithm components --------------------------------------------------------------------------------------------------------------
+00076 
+00077         eoPop< Route > population( POP_SIZE, route_init );      // initial population for the algorithm having POP_SIZE individuals
+00078         peoSeqPopEval< Route > eaPopEval( full_eval );          // evaluator object - to be applied at each iteration on the entire population
+00079 
+00080         eoGenContinue< Route > eaCont( NUM_GEN );               // continuation criterion - the algorithm will iterate for NUM_GEN generations
+00081         eoCheckPoint< Route > eaCheckpointContinue( eaCont );   // checkpoint object - verify at each iteration if the continuation criterion is met
+00082 
+00083         eoRankingSelect< Route > selectionStrategy;             // selection strategy - applied at each iteration for selecting parent individuals
+00084         eoSelectNumber< Route > eaSelect( selectionStrategy, POP_SIZE ); // selection object - POP_SIZE individuals are selected at each iteration
+00085 
+00086         // transform operator - includes the crossover and the mutation operators with a specified associated rate
+00087         eoSGATransform< Route > transform( crossover, CROSS_RATE, mutation, MUT_RATE );
+00088         peoSeqTransform< Route > eaTransform( transform );      // ParadisEO transform operator (please remark the peo prefix) - wraps an e EO transform object
+00089 
+00090         eoPlusReplacement< Route > eaReplace;                   // replacement strategy - for replacing the initial population with offspring individuals
+00091         // ------------------------------------------------------------------------------------------------------------------------------------------------
+00092 
+00093 
+00094         // ParadisEO-PEO evolutionary algorithm -----------------------------------------------------------------------------------------------------------
+00095 
+00096         peoEA< Route > eaAlg( eaCheckpointContinue, eaPopEval, eaSelect, eaTransform, eaReplace );
+00097         
+00098         eaAlg( population );    // specifying the initial population for the algorithm, to be iteratively evolved
+00099         // ------------------------------------------------------------------------------------------------------------------------------------------------
+00100 
+00101 
+00102         peo :: run( );
+00103         peo :: finalize( );
+00104         // shutting down the ParadisEO-PEO environment
+00105 
+00106         return 0;
+00107 }
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/Lesson2_2main_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/Lesson2_2main_8cpp-source.html new file mode 100644 index 000000000..1c9f16bfe --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/Lesson2_2main_8cpp-source.html @@ -0,0 +1,168 @@ + + +ParadisEO-PEOMovingObjects: main.cpp Source File + + + + +
+
+

main.cpp

00001 /* 
+00002 * <main.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include "route.h"
+00038 #include "route_init.h"
+00039 #include "route_eval.h"
+00040 
+00041 #include "order_xover.h"
+00042 #include "city_swap.h"
+00043 
+00044 #include "param.h"
+00045 
+00046 #include "merge_route_eval.h"
+00047 #include "part_route_eval.h"
+00048 
+00049 
+00050 #include <peo>
+00051 
+00052 
+00053 #define POP_SIZE 10
+00054 #define NUM_GEN 100
+00055 #define CROSS_RATE 1.0
+00056 #define MUT_RATE 0.01
+00057 
+00058 #define NUM_PART_EVALS 2
+00059 
+00060 
+00061 // by default, parallel evaluation of the population is performed;
+00062 // for parallel fitness evaluation, uncomment the following line
+00063 
+00064 // #define PARALLEL_FIT_EVALUATION
+00065 
+00066 
+00067 int main( int __argc, char** __argv ) {
+00068 
+00069         // initializing the ParadisEO-PEO environment
+00070         peo :: init( __argc, __argv );
+00071 
+00072 
+00073         // processing the command line specified parameters
+00074         loadParameters( __argc, __argv );
+00075 
+00076 
+00077         // init, eval operators, EA operators -------------------------------------------------------------------------------------------------------------
+00078 
+00079         RouteInit route_init;   // random init object - creates random Route objects
+00080         RouteEval full_eval;    // evaluator object - offers a fitness value for a specified Route object
+00081 
+00082         OrderXover crossover;   // crossover operator - creates two offsprings out of two specified parents
+00083         CitySwap mutation;      // mutation operator - randomly mutates one gene for a specified individual
+00084         // ------------------------------------------------------------------------------------------------------------------------------------------------
+00085 
+00086 
+00087         // evolutionary algorithm components --------------------------------------------------------------------------------------------------------------
+00088 
+00089         eoPop< Route > population( POP_SIZE, route_init );      // initial population for the algorithm having POP_SIZE individuals
+00090 
+00091 
+00092         #ifdef PARALLEL_FIT_EVALUATION
+00093 
+00094                 MergeRouteEval merge_eval;
+00095 
+00096                 std :: vector< eoEvalFunc< Route >* > part_eval;
+00097                 for ( unsigned index = 1; index <= NUM_PART_EVALS; index++ )
+00098                         part_eval.push_back( new PartRouteEval( ( float )( index - 1 ) / NUM_PART_EVALS, ( float )index / NUM_PART_EVALS ) );
+00099 
+00100                 peoParaPopEval< Route > ox_pop_eval( part_eval, merge_eval );
+00101 
+00102         #else
+00103 
+00104                peoParaPopEval< Route > ox_pop_eval( full_eval );
+00105 
+00106         #endif
+00107 
+00108 
+00109 
+00110         peoParaPopEval< Route > eaPopEval( full_eval );         // evaluator object - to be applied at each iteration on the entire population
+00111 
+00112         eoGenContinue< Route > eaCont( NUM_GEN );               // continuation criterion - the algorithm will iterate for NUM_GEN generations
+00113         eoCheckPoint< Route > eaCheckpointContinue( eaCont );   // checkpoint object - verify at each iteration if the continuation criterion is met
+00114 
+00115         eoRankingSelect< Route > selectionStrategy;             // selection strategy - applied at each iteration for selecting parent individuals
+00116         eoSelectNumber< Route > eaSelect( selectionStrategy, POP_SIZE ); // selection object - POP_SIZE individuals are selected at each iteration
+00117 
+00118         // transform operator - includes the crossover and the mutation operators with a specified associated rate
+00119         eoSGATransform< Route > transform( crossover, CROSS_RATE, mutation, MUT_RATE );
+00120         peoSeqTransform< Route > eaTransform( transform );      // ParadisEO transform operator (please remark the peo prefix) - wraps an e EO transform object
+00121 
+00122         eoPlusReplacement< Route > eaReplace;                   // replacement strategy - for replacing the initial population with offspring individuals
+00123         // ------------------------------------------------------------------------------------------------------------------------------------------------
+00124 
+00125 
+00126         // ParadisEO-PEO evolutionary algorithm -----------------------------------------------------------------------------------------------------------
+00127 
+00128         peoEA< Route > eaAlg( eaCheckpointContinue, eaPopEval, eaSelect, eaTransform, eaReplace );
+00129         
+00130         eaAlg( population );    // specifying the initial population for the algorithm, to be iteratively evolved
+00131         // ------------------------------------------------------------------------------------------------------------------------------------------------
+00132 
+00133 
+00134         peo :: run( );
+00135         peo :: finalize( );
+00136         // shutting down the ParadisEO-PEO environment
+00137 
+00138         return 0;
+00139 }
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/Lesson3_2main_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/Lesson3_2main_8cpp-source.html new file mode 100644 index 000000000..95fcf0fac --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/Lesson3_2main_8cpp-source.html @@ -0,0 +1,217 @@ + + +ParadisEO-PEOMovingObjects: main.cpp Source File + + + + +
+
+

main.cpp

00001 /* 
+00002 * <main.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include "route.h"
+00038 #include "route_init.h"
+00039 #include "route_eval.h"
+00040 
+00041 #include "order_xover.h"
+00042 #include "city_swap.h"
+00043 
+00044 #include "param.h"
+00045 
+00046 
+00047 #include <peo>
+00048 
+00049 
+00050 #define POP_SIZE 10
+00051 #define NUM_GEN 100
+00052 #define CROSS_RATE 1.0
+00053 #define MUT_RATE 0.01
+00054 
+00055 #define MIG_FREQ 10
+00056 #define MIG_SIZE 5
+00057 
+00058 
+00059 int main( int __argc, char** __argv ) {
+00060 
+00061         // initializing the ParadisEO-PEO environment
+00062         peo :: init( __argc, __argv );
+00063 
+00064 
+00065         // processing the command line specified parameters
+00066         loadParameters( __argc, __argv );
+00067 
+00068 
+00069         // init, eval operators, EA operators -------------------------------------------------------------------------------------------------------------
+00070 
+00071         RouteInit route_init;   // random init object - creates random Route objects
+00072         RouteEval full_eval;    // evaluator object - offers a fitness value for a specified Route object
+00073 
+00074         OrderXover crossover;   // crossover operator - creates two offsprings out of two specified parents
+00075         CitySwap mutation;      // mutation operator - randomly mutates one gene for a specified individual
+00076         // ------------------------------------------------------------------------------------------------------------------------------------------------
+00077 
+00078 
+00079         // evolutionary algorithm components --------------------------------------------------------------------------------------------------------------
+00080 
+00081         eoPop< Route > population( POP_SIZE, route_init );      // initial population for the algorithm having POP_SIZE individuals
+00082         peoParaPopEval< Route > eaPopEval( full_eval );         // evaluator object - to be applied at each iteration on the entire population
+00083 
+00084         eoGenContinue< Route > eaCont( NUM_GEN );               // continuation criterion - the algorithm will iterate for NUM_GEN generations
+00085         eoCheckPoint< Route > eaCheckpointContinue( eaCont );   // checkpoint object - verify at each iteration if the continuation criterion is met
+00086 
+00087         eoRankingSelect< Route > selectionStrategy;             // selection strategy - applied at each iteration for selecting parent individuals
+00088         eoSelectNumber< Route > eaSelect( selectionStrategy, POP_SIZE ); // selection object - POP_SIZE individuals are selected at each iteration
+00089 
+00090         // transform operator - includes the crossover and the mutation operators with a specified associated rate
+00091         eoSGATransform< Route > transform( crossover, CROSS_RATE, mutation, MUT_RATE );
+00092         peoSeqTransform< Route > eaTransform( transform );      // ParadisEO transform operator (please remark the peo prefix) - wraps an e EO transform object
+00093 
+00094         eoPlusReplacement< Route > eaReplace;                   // replacement strategy - for replacing the initial population with offspring individuals
+00095         // ------------------------------------------------------------------------------------------------------------------------------------------------
+00096 
+00097 
+00098 
+00099         RingTopology topology;
+00100 
+00101         // migration policy and components ----------------------------------------------------------------------------------------------------------------
+00102 
+00103         eoPeriodicContinue< Route > mig_cont( MIG_FREQ );       // migration occurs periodically
+00104 
+00105         eoRandomSelect< Route > mig_select_one;                 // emigrants are randomly selected 
+00106         eoSelectNumber< Route > mig_select( mig_select_one, MIG_SIZE );
+00107 
+00108         eoPlusReplacement< Route > mig_replace;                 // immigrants replace the worse individuals
+00109 
+00110         peoSyncIslandMig< Route > mig( MIG_FREQ, mig_select, mig_replace, topology, population, population );
+00111         //peoAsyncIslandMig< Route > mig( mig_cont, mig_select, mig_replace, topology, population, population );
+00112 
+00113         eaCheckpointContinue.add( mig );
+00114         // ------------------------------------------------------------------------------------------------------------------------------------------------
+00115 
+00116 
+00117 
+00118 
+00119 
+00120         // ParadisEO-PEO evolutionary algorithm -----------------------------------------------------------------------------------------------------------
+00121 
+00122         peoEA< Route > eaAlg( eaCheckpointContinue, eaPopEval, eaSelect, eaTransform, eaReplace );
+00123 
+00124         mig.setOwner( eaAlg );
+00125         
+00126         eaAlg( population );    // specifying the initial population for the algorithm, to be iteratively evolved
+00127         // ------------------------------------------------------------------------------------------------------------------------------------------------
+00128 
+00129 
+00130 
+00131 
+00132         // evolutionary algorithm components --------------------------------------------------------------------------------------------------------------
+00133 
+00134         eoPop< Route > population2( POP_SIZE, route_init );     // initial population for the algorithm having POP_SIZE individuals
+00135         peoParaPopEval< Route > eaPopEval2( full_eval );        // evaluator object - to be applied at each iteration on the entire population
+00136 
+00137         eoGenContinue< Route > eaCont2( NUM_GEN );              // continuation criterion - the algorithm will iterate for NUM_GEN generations
+00138         eoCheckPoint< Route > eaCheckpointContinue2( eaCont2 ); // checkpoint object - verify at each iteration if the continuation criterion is met
+00139 
+00140         eoRankingSelect< Route > selectionStrategy2;            // selection strategy - applied at each iteration for selecting parent individuals
+00141         eoSelectNumber< Route > eaSelect2( selectionStrategy2, POP_SIZE ); // selection object - POP_SIZE individuals are selected at each iteration
+00142 
+00143         // transform operator - includes the crossover and the mutation operators with a specified associated rate
+00144         eoSGATransform< Route > transform2( crossover, CROSS_RATE, mutation, MUT_RATE );
+00145         peoSeqTransform< Route > eaTransform2( transform2 );    // ParadisEO transform operator (please remark the peo prefix) - wraps an e EO transform object
+00146 
+00147         eoPlusReplacement< Route > eaReplace2;                  // replacement strategy - for replacing the initial population with offspring individuals
+00148         // ------------------------------------------------------------------------------------------------------------------------------------------------
+00149 
+00150 
+00151 
+00152 
+00153         // migration policy and components ----------------------------------------------------------------------------------------------------------------
+00154 
+00155         eoPeriodicContinue< Route > mig_cont2( MIG_FREQ );      // migration occurs periodically
+00156 
+00157         eoRandomSelect< Route > mig_select_one2;                // emigrants are randomly selected 
+00158         eoSelectNumber< Route > mig_select2( mig_select_one2, MIG_SIZE );
+00159 
+00160         eoPlusReplacement< Route > mig_replace2;                // immigrants replace the worse individuals
+00161 
+00162         peoSyncIslandMig< Route > mig2( MIG_FREQ, mig_select2, mig_replace2, topology, population2, population2 );
+00163         //peoAsyncIslandMig< Route > mig2( mig_cont2, mig_select2, mig_replace2, topology, population2, population2 );
+00164 
+00165         eaCheckpointContinue2.add( mig2 );
+00166         // ------------------------------------------------------------------------------------------------------------------------------------------------
+00167 
+00168 
+00169 
+00170 
+00171 
+00172         // ParadisEO-PEO evolutionary algorithm -----------------------------------------------------------------------------------------------------------
+00173 
+00174         peoEA< Route > eaAlg2( eaCheckpointContinue2, eaPopEval2, eaSelect2, eaTransform2, eaReplace2 );
+00175 
+00176         mig2.setOwner( eaAlg2 );
+00177         
+00178         eaAlg2( population2 );  // specifying the initial population for the algorithm, to be iteratively evolved
+00179         // ------------------------------------------------------------------------------------------------------------------------------------------------
+00180 
+00181 
+00182 
+00183         peo :: run( );
+00184         peo :: finalize( );
+00185         // shutting down the ParadisEO-PEO environment
+00186 
+00187         return 0;
+00188 }
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/LessonParallelAlgorithm_2main_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/LessonParallelAlgorithm_2main_8cpp-source.html new file mode 100644 index 000000000..147881a07 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/LessonParallelAlgorithm_2main_8cpp-source.html @@ -0,0 +1,366 @@ + + +ParadisEO-PEOMovingObjects: main.cpp Source File + + + + +
+
+

main.cpp

00001 // "main.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, January 2006
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include <eo>
+00010 #include <paradiseo>
+00011 
+00012 #include <peoParallelAlgorithmWrapper.h>
+00013 #include <peoSynchronousMultiStart.h>
+00014 
+00015 
+00016 
+00017 #include "route.h"
+00018 #include "route_init.h"
+00019 #include "route_eval.h"
+00020 
+00021 #include "order_xover.h"
+00022 #include "city_swap.h"
+00023 
+00024 #include "param.h"
+00025 
+00026 
+00027 
+00028 
+00029 #include <mo.h>
+00030 
+00031 #include <graph.h>
+00032 #include <route.h>
+00033 #include <route_eval.h>
+00034 #include <route_init.h>
+00035 
+00036 #include <two_opt.h>
+00037 #include <two_opt_init.h>
+00038 #include <two_opt_next.h>
+00039 #include <two_opt_incr_eval.h>
+00040 
+00041 
+00042 
+00043 #define RANDOM_POP_SIZE 30
+00044 #define RANDOM_ITERATIONS 10
+00045 
+00046 
+00047 #define POP_SIZE 10
+00048 #define NUM_GEN 100
+00049 #define CROSS_RATE 1.0
+00050 #define MUT_RATE 0.01
+00051 
+00052 #define NUMBER_OF_POPULATIONS 3
+00053 
+00054 
+00055 
+00056 struct RandomExplorationAlgorithm {
+00057 
+00058         RandomExplorationAlgorithm( peoPopEval< Route >& __popEval, peoSynchronousMultiStart< Route >& extParallelExecution ) 
+00059                 : popEval( __popEval ), parallelExecution( extParallelExecution ) { 
+00060         }
+00061 
+00062 
+00063         // the sequential algorithm to be executed in parallel by the wrapper
+00064         void operator()() {
+00065 
+00066                 RouteInit route_init;   // random init object - creates random Route objects
+00067                 RouteEval route_eval;
+00068                 eoPop< Route > population( RANDOM_POP_SIZE, route_init );
+00069 
+00070                 popEval( population );
+00071 
+00072 
+00073                 // executing HCs on the population in parallel
+00074                 parallelExecution( population );
+00075 
+00076 
+00077 
+00078                 // just to show off :: HCs on a vector of Route objects
+00079                 {
+00080                         Route* rVect = new Route[ 5 ];
+00081                         for ( unsigned int index = 0; index < 5; index++ ) {
+00082         
+00083                                 route_init( rVect[ index ] ); route_eval( rVect[ index ] );
+00084                         }
+00085         
+00086                         // applying the HCs on the vector of Route objects
+00087                         parallelExecution( rVect, rVect + 5 );
+00088                         delete[] rVect;
+00089                 }
+00090 
+00091 
+00092 
+00093                 Route bestRoute = population.best_element();
+00094 
+00095                 for ( unsigned int index = 0; index < RANDOM_ITERATIONS; index++ ) {
+00096 
+00097                         for ( unsigned int routeIndex = 0; routeIndex < RANDOM_POP_SIZE; routeIndex++ ) {
+00098 
+00099                                 route_init( population[ routeIndex ] );
+00100                         }
+00101 
+00102                         popEval( population );
+00103 
+00104                         if ( fabs( population.best_element().fitness() ) < fabs( bestRoute.fitness() ) ) bestRoute = population.best_element();
+00105 
+00106                         std::cout << "Random Iteration #" << index << "... [ " << bestRoute.fitness() << " ]" << std::flush << std::endl; 
+00107                 }
+00108         }
+00109 
+00110 
+00111         peoPopEval< Route >& popEval;
+00112         peoSynchronousMultiStart< Route >& parallelExecution;
+00113 };
+00114 
+00115 
+00116 
+00117 
+00118 int main( int __argc, char** __argv ) {
+00119 
+00120         srand( time(NULL) );
+00121 
+00122 
+00123 
+00124         // initializing the ParadisEO-PEO environment
+00125         peo :: init( __argc, __argv );
+00126 
+00127 
+00128         // processing the command line specified parameters
+00129         loadParameters( __argc, __argv );
+00130 
+00131 
+00132 
+00133         // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+00134         // #1 An EO evolutionary algorithm to be executed in parallel with other algorithms (no parallel evaluation, no etc.).
+00135 
+00136         // init, eval operators, EA operators -------------------------------------------------------------------------------------------------------------
+00137         RouteInit route_init;   // random init object - creates random Route objects
+00138         RouteEval full_eval;    // evaluator object - offers a fitness value for a specified Route object
+00139 
+00140         OrderXover crossover;   // crossover operator - creates two offsprings out of two specified parents
+00141         CitySwap mutation;      // mutation operator - randomly mutates one gene for a specified individual
+00142         // ------------------------------------------------------------------------------------------------------------------------------------------------
+00143 
+00144 
+00145         // evolutionary algorithm components --------------------------------------------------------------------------------------------------------------
+00146 
+00147         eoPop< Route > population( POP_SIZE, route_init );      // initial population for the algorithm having POP_SIZE individuals
+00148 
+00149         eoGenContinue< Route > eaCont( NUM_GEN );               // continuation criterion - the algorithm will iterate for NUM_GEN generations
+00150         eoCheckPoint< Route > eaCheckpointContinue( eaCont );   // checkpoint object - verify at each iteration if the continuation criterion is met
+00151 
+00152         eoRankingSelect< Route > selectionStrategy;             // selection strategy - applied at each iteration for selecting parent individuals
+00153         eoSelectNumber< Route > eaSelect( selectionStrategy, POP_SIZE ); // selection object - POP_SIZE individuals are selected at each iteration
+00154 
+00155         // transform operator - includes the crossover and the mutation operators with a specified associated rate
+00156         eoSGATransform< Route > transform( crossover, CROSS_RATE, mutation, MUT_RATE );
+00157 
+00158         eoPlusReplacement< Route > eaReplace;                   // replacement strategy - for replacing the initial population with offspring individuals
+00159         // ------------------------------------------------------------------------------------------------------------------------------------------------
+00160 
+00161 
+00162 
+00163         // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+00164         // SEQENTIAL ALGORITHM DEFINITION -----------------------------------------------------------------------------------------------------------------
+00165         eoEasyEA< Route > eaAlg( eaCheckpointContinue, full_eval, eaSelect, transform, eaReplace );
+00166         // SEQENTIAL ALGORITHM DEFINITION -----------------------------------------------------------------------------------------------------------------
+00167 
+00168         // SETTING UP THE PARALLEL WRAPPER ----------------------------------------------------------------------------------------------------------------
+00169         peoParallelAlgorithmWrapper parallelEAAlg( eaAlg, population ); // specifying the embedded algorithm and the algorithm input data
+00170         // SETTING UP THE PARALLEL WRAPPER ----------------------------------------------------------------------------------------------------------------
+00171         // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+00172         // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+00173 
+00174 
+00175 
+00176 
+00177 
+00178         // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+00179         // #2 A MO hill climbing to be executed in parallel with other algorithms (no parallel evaluation, no etc.).
+00180 
+00181         if ( getNodeRank() == 1 ) {
+00182                 
+00183                 Graph::load( __argv [ 1 ] );
+00184         }
+00185         
+00186         Route route;
+00187         RouteInit init; init( route );
+00188         RouteEval full_evalHC; full_evalHC( route );
+00189         
+00190         if ( getNodeRank() == 1 ) {
+00191 
+00192                 std :: cout << "[From] " << route << std :: endl;
+00193         }
+00194         
+00195 
+00196         TwoOptInit two_opt_init;
+00197         TwoOptNext two_opt_next;
+00198         TwoOptIncrEval two_opt_incr_eval;
+00199         
+00200         moBestImprSelect< TwoOpt > two_opt_select;
+00201 
+00202 
+00203 
+00204         // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+00205         // SEQENTIAL ALGORITHM DEFINITION -----------------------------------------------------------------------------------------------------------------
+00206         moHC< TwoOpt > hill_climbing( two_opt_init, two_opt_next, two_opt_incr_eval, two_opt_select, full_evalHC );
+00207         // SEQENTIAL ALGORITHM DEFINITION -----------------------------------------------------------------------------------------------------------------
+00208 
+00209         // SETTING UP THE PARALLEL WRAPPER ----------------------------------------------------------------------------------------------------------------
+00210         peoParallelAlgorithmWrapper parallelHillClimbing( hill_climbing, route );       // specifying the embedded algorithm and the algorithm input data
+00211         // SETTING UP THE PARALLEL WRAPPER ----------------------------------------------------------------------------------------------------------------
+00212         // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+00213         // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+00214 
+00215 
+00216 
+00217 
+00218 
+00219         
+00220         // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+00221         // #3 A user defined algorithm to be executed in parallel with other algorithms - parallel evaluation and synchronous 
+00222         //              multi-start of several hill-climbing algorithms (inside the user defined algorithm)!!.
+00223 
+00224         RouteEval full_evalRandom;
+00225         peoParaPopEval< Route > randomParaEval( full_evalRandom );
+00226 
+00227 
+00228         peoSynchronousMultiStart< Route > parallelExecution( hill_climbing );
+00229 
+00230         RandomExplorationAlgorithm randomExplorationAlgorithm( randomParaEval, parallelExecution );
+00231 
+00232 
+00233         // SETTING UP THE PARALLEL WRAPPER ----------------------------------------------------------------------------------------------------------------
+00234         peoParallelAlgorithmWrapper parallelRandExp( randomExplorationAlgorithm );      // specifying the embedded algorithm - no input data in this case
+00235 
+00236         randomParaEval.setOwner( parallelRandExp );
+00237         parallelExecution.setOwner( parallelRandExp );
+00238         // SETTING UP THE PARALLEL WRAPPER ----------------------------------------------------------------------------------------------------------------
+00239         // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+00240 
+00241 
+00242 
+00243 
+00244         // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+00245         // #4 Synchronous Multi-Start: several hill-climbing algorithms launched in parallel on different initial solutions
+00246 
+00247         RouteInit ex_hc_route_init;     // random init object - creates random Route objects
+00248         RouteEval ex_hc_full_eval;      // evaluator object - offers a fitness value for a specified Route object
+00249 
+00250         eoPop< Route > ex_hc_population( POP_SIZE, ex_hc_route_init );
+00251 
+00252         for ( unsigned int index = 0; index < POP_SIZE; index++ ) {
+00253 
+00254                 ex_hc_full_eval( ex_hc_population[ index ] );
+00255         }
+00256 
+00257 
+00258         // SETTING UP THE PARALLEL WRAPPER ----------------------------------------------------------------------------------------------------------------
+00259         peoSynchronousMultiStart< Route > ex_hc_parallelExecution( hill_climbing );
+00260         peoParallelAlgorithmWrapper ex_hc_parallel( ex_hc_parallelExecution, ex_hc_population );        // specifying the embedded algorithm - no input data in this case
+00261 
+00262         ex_hc_parallelExecution.setOwner( ex_hc_parallel );
+00263         // SETTING UP THE PARALLEL WRAPPER ----------------------------------------------------------------------------------------------------------------
+00264         // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+00265 
+00266 
+00267 
+00268 
+00269 
+00270         // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+00271         // #5 Synchronous Multi-Start: Multiple EO evolutionary algorithms to be executed in parallel
+00272         //      (inside different processes, on different populations; no parallel evaluation, no etc.).
+00273 
+00274         RouteInit ex_route_init;        // random init object - creates random Route objects
+00275         RouteEval ex_full_eval;         // evaluator object - offers a fitness value for a specified Route object
+00276 
+00277         std::vector< eoPop< Route > > ex_population;
+00278         ex_population.resize( NUMBER_OF_POPULATIONS );
+00279 
+00280         for ( unsigned int indexPop = 0; indexPop < NUMBER_OF_POPULATIONS; indexPop++ ) {
+00281 
+00282                 ex_population[ indexPop ].resize( POP_SIZE );
+00283 
+00284                 for ( unsigned int index = 0; index < POP_SIZE; index++ ) {
+00285 
+00286                         ex_route_init( ex_population[ indexPop ][ index ] );
+00287                         ex_full_eval( ex_population[ indexPop ][ index ] );
+00288                 }
+00289         }
+00290 
+00291 
+00292         // SETTING UP THE PARALLEL WRAPPER ----------------------------------------------------------------------------------------------------------------
+00293         peoSynchronousMultiStart< eoPop< Route > > ex_parallelExecution( eaAlg );
+00294         peoParallelAlgorithmWrapper ex_parallel( ex_parallelExecution, ex_population ); // specifying the embedded algorithm - no input data in this case
+00295 
+00296         ex_parallelExecution.setOwner( ex_parallel );
+00297         // SETTING UP THE PARALLEL WRAPPER ----------------------------------------------------------------------------------------------------------------
+00298         // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+00299 
+00300 
+00301 
+00302 
+00303 
+00304 
+00305         peo :: run( );
+00306         peo :: finalize( );
+00307         // shutting down the ParadisEO-PEO environment
+00308 
+00309 
+00310 
+00311         // the algorithm is executed in the #1 rank process
+00312         if ( getNodeRank() == 1 ) {
+00313 
+00314                 std :: cout << "[To] " << route << std :: endl << std::endl;
+00315 
+00316 
+00317                 std :: cout << "Synchronous Multi-Start HCs:" << std :: endl ;
+00318                 for ( unsigned int index = 0; index < POP_SIZE; index++ ) {
+00319         
+00320                         std::cout << ex_hc_population[ index ] << std::endl;
+00321                 }
+00322                 std::cout << std::endl << std::endl;
+00323 
+00324 
+00325                 std :: cout << "Synchronous Multi-Start EAs:" << std :: endl ;
+00326                 for ( unsigned int index = 0; index < NUMBER_OF_POPULATIONS; index++ ) {
+00327         
+00328                         std::cout << ex_population[ index ] << std::endl;
+00329                 }
+00330                 std::cout << std::endl << std::flush;
+00331 
+00332         }
+00333 
+00334 
+00335 
+00336         return 0;
+00337 }
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/README-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/README-source.html new file mode 100644 index 000000000..4aa422480 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/README-source.html @@ -0,0 +1,107 @@ + + +ParadisEO-PEOMovingObjects: README Source File + + + + +
+
+

README

00001                 PARADISEO-PEO README FILE
+00002 =======================================================================
+00003          check latest news at http://paradiseo.gforge.inria.fr/
+00004 =======================================================================
+00005 
+00006 Welcome to ParadisEO-PEO, the Parallel Evolving Objects library.
+00007 The latest news about ParadisEO-PEO can be found on the gforge repository at
+00008 http://paradiseo.gforge.inria.fr/
+00009 In case of any problem, please e-mail us at
+00010 paradiseo-help@lists.gforge.inria.fr
+00011 
+00012 
+00013 =======================================================================
+00014                         BUILDING PARADISEO-PEO
+00015 =======================================================================
+00016 The basic installation procedure goes the following.
+00017 
+00018 To compile paradiseo-peo in the default directory,
+00019 go to paradiseo-peo/build/ and run:
+00020     > cmake ../ -Dconfig=<path to the install.cmake file>
+00021     > make
+00022     // for an easy-use of the provided lessons
+00023     > make install
+00024     // optional (if the documentation is not already available)
+00025     > make doc
+00026 
+00027 To compile paradiseo-peo anywhere else, simply run:
+00028     > cmake $(PEO) -Dconfig=<path to the install.cmake file>
+00029     > make
+00030     // for an easy-use of the provided lessons
+00031     > make install
+00032     // optional (if the documentation is not already available)
+00033     > make doc
+00034 
+00035 To clean everything, simply run
+00036     > make clean
+00037 
+00038 
+00039 ===================================================================
+00040                        DIRECTORY STRUCTURE
+00041 ===================================================================
+00042 After unpacking the archive file, you should end up with the following
+00043 structure:
+00044 
+00045 .../                     The main PARADISEO-PEO directory, created when unpacking.
+00046    |
+00047    +-- build             BUILD directory that contains libraries and executable files.
+00048    |
+00049    +-- src               SOURCE directory Contains most PARADISEO-PEO .h files. 
+00050    |   
+00051    +-- doc               DOCUMENTATION directory (generated by Doxygen).
+00052    |   |
+00053    |   +- html           HTML files - start at index.html. 
+00054    |   |
+00055    |   +- latex          latex files - use to generate Postcript doc.
+00056    |   |
+00057    |   +- man            Unix man format documentation.
+00058    |
+00059    |
+00060    +-- tutorial          APPLICATIONS - one directory per separate application.
+00061        |
+00062        +-- examples      Examples repository including source code shared by all or most of the included lessons.
+00063        |   |
+00064        |   +- tsp        A Traveling Salesman Problem (TSP) example with benchmarks, the main operators, definitions, etc.
+00065        |
+00066        +-- Lesson1       A simple ParadisEO-PEO evolutionary algorithm example using the peoEA class.
+00067        |
+00068        +-- Lesson2       Example of an EA featuring a parallel evaluation of the population/parallel fitness function evaluation.
+00069        |
+00070        +-- Lesson3       Example of an asynchronous insular model including two evolutionary algorithms.
+00071        |
+00072        +-- Walkthrough   Walkthrough ParadisEO-PEO features - EA+LS hybridization, parallelization, insular model.
+00073 
+00074 ===================================================================
+00075               NOTES
+00076 ===================================================================
+00077 
+00078 Mailing list : paradiseo-help@lists.gforge.inria.fr
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/annotated.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/annotated.html new file mode 100644 index 000000000..8bbde05d0 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/annotated.html @@ -0,0 +1,76 @@ + + +ParadisEO-PEOMovingObjects: Class List + + + + +
+
+ +

ParadisEO-PEOMovingObjects Class List

Here are the classes, structs, unions and interfaces with brief descriptions: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Communicable
Communicator
Cooperative
DisplayBestRoute
MergeRouteEval
peoAggEvalFunc< EOT >The peoAggEvalFunc class offers only the interface for creating aggregate evaluation functions - there are no direct internal functions provided
peoAsyncIslandMig< EOT >The peoAsyncIslandMig class offers the elementary basis for implementating an asynchronous island migration model - requires the specification of several basic parameters, i.e
peoEA< EOT >The peoEA class offers an elementary evolutionary algorithm implementation
peoNoAggEvalFunc< EOT >The peoNoAggEvalFunc class does nothing more than an association between a fitness value and a specified individual
peoParallelAlgorithmWrapper
peoParallelAlgorithmWrapper::AbstractAlgorithm
peoParallelAlgorithmWrapper::Algorithm< AlgorithmType, AlgorithmDataType >
peoParallelAlgorithmWrapper::Algorithm< AlgorithmType, void >
peoParaPopEval< EOT >The peoParaPopEval represents a wrapper for creating a functor capable of applying in parallel an EO-derived evaluation functor
peoParaSGATransform< EOT >
peoPopEval< EOT >The peoPopEval class provides the interface for constructing ParadisEO specific evaluation functors
peoSeqPopEval< EOT >The peoSeqPopEval class acts only as a ParadisEO specific sequential evaluation functor - a wrapper for incorporating an eoEvalFunc< EOT >-derived class as evaluation functor
peoSeqTransform< EOT >The peoSeqTransform represent a wrapper for offering the possibility of using EO derived transform operators along with the ParadisEO evolutionary algorithms
peoSynchronousMultiStart< EntityType >
peoSynchronousMultiStart< EntityType >::AbstractAggregationAlgorithm
peoSynchronousMultiStart< EntityType >::AbstractAlgorithm
peoSynchronousMultiStart< EntityType >::AbstractDataType
peoSynchronousMultiStart< EntityType >::AggregationAlgorithm< AggregationAlgorithmType >
peoSynchronousMultiStart< EntityType >::Algorithm< AlgorithmType >
peoSynchronousMultiStart< EntityType >::DataType< Type >
peoSynchronousMultiStart< EntityType >::NoAggregationFunction
peoSyncIslandMig< EOT >The peoSyncIslandMig class offers the elementary basis for implementating a synchronous island migration model - requires the specification of several basic parameters, i.e
peoSyncMultiStart< EOT >The peoSyncMultiStart class provides the basis for implementing the synchronous multi-start model, for launching several solution-based algorithms in parallel on a specified initial population
peoTransform< EOT >The peoTransform class acts only as an interface for creating transform operators - for an example please refer to the peoSeqTransform and the peoParaSGATransform classes
RandomExplorationAlgorithm
ReactiveThread
RingTopology
Runner
SEND_REQUEST
Service
Thread
Topology
Worker
+
Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/city__swap_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/city__swap_8cpp-source.html new file mode 100644 index 000000000..cae89d871 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/city__swap_8cpp-source.html @@ -0,0 +1,78 @@ + + +ParadisEO-PEOMovingObjects: city_swap.cpp Source File + + + + +
+
+

city_swap.cpp

00001 /* 
+00002 * <city_swap.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include <utils/eoRNG.h>
+00038 
+00039 #include "city_swap.h"
+00040 
+00041 bool CitySwap :: operator () (Route & __route) {
+00042   
+00043   std :: swap (__route [rng.random (__route.size ())],
+00044                __route [rng.random (__route.size ())]) ;
+00045     
+00046   __route.invalidate () ;
+00047   
+00048   return true ;
+00049 }
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/city__swap_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/city__swap_8h-source.html new file mode 100644 index 000000000..4b77e3b33 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/city__swap_8h-source.html @@ -0,0 +1,81 @@ + + +ParadisEO-PEOMovingObjects: city_swap.h Source File + + + + +
+
+

city_swap.h

00001 /* 
+00002 * <city_swap.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef city_swap_h
+00038 #define city_swap_h
+00039 
+00040 #include <eoOp.h>
+00041 
+00042 #include "route.h"
+00043 
+00046 class CitySwap : public eoMonOp <Route> {
+00047   
+00048 public :
+00049   
+00050   bool operator () (Route & __route) ;
+00051     
+00052 } ;
+00053 
+00054 #endif
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classCommunicable-members.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classCommunicable-members.html new file mode 100644 index 000000000..09c8fb595 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classCommunicable-members.html @@ -0,0 +1,48 @@ + + +ParadisEO-PEOMovingObjects: Member List + + + + +
+
+ +

Communicable Member List

This is the complete list of members for Communicable, including all inherited members.

+ + + + + + + + + + + +
Communicable()Communicable
getKey()Communicable
keyCommunicable [protected]
lock()Communicable
num_commCommunicable [protected, static]
resume()Communicable
sem_lockCommunicable [protected]
sem_stopCommunicable [protected]
stop()Communicable
unlock()Communicable
~Communicable()Communicable [virtual]


Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classCommunicable.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classCommunicable.html new file mode 100644 index 000000000..a9090f07e --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classCommunicable.html @@ -0,0 +1,98 @@ + + +ParadisEO-PEOMovingObjects: Communicable Class Reference + + + + +
+
+ +

Communicable Class Reference

Inheritance diagram for Communicable: +

+ +Cooperative +Runner +Service +Worker +peoAsyncIslandMig< EOT > +peoSyncIslandMig< EOT > +peoEA< EOT > +peoParallelAlgorithmWrapper +peoPopEval< EOT > +peoSynchronousMultiStart< EntityType > +peoSyncMultiStart< EOT > +peoTransform< EOT > + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

Communicable ()
+virtual ~Communicable ()
+COMM_ID getKey ()
+void lock ()
+void unlock ()
+void stop ()
+void resume ()

Protected Attributes

+COMM_ID key
+sem_t sem_lock
+sem_t sem_stop

Static Protected Attributes

+static unsigned num_comm = 0
+

Detailed Description

+ +

+ +

+Definition at line 44 of file communicable.h.


The documentation for this class was generated from the following files: +
Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classCommunicable.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classCommunicable.png new file mode 100644 index 000000000..d4c0f0893 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classCommunicable.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classCommunicator-members.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classCommunicator-members.html new file mode 100644 index 000000000..5fe11b6d9 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classCommunicator-members.html @@ -0,0 +1,46 @@ + + +ParadisEO-PEOMovingObjects: Member List + + + + +
+
+ +

Communicator Member List

This is the complete list of members for Communicator, including all inherited members.

+ + + + + + + + + +
Communicator(int *__argc, char ***__argv)Communicator
ReactiveThread()ReactiveThread
setActive()Thread
setPassive()Thread
sleep()ReactiveThread
start()Communicator [virtual]
Thread()Thread
wakeUp()ReactiveThread
~Thread()Thread [virtual]


Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classCommunicator.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classCommunicator.html new file mode 100644 index 000000000..466885c2b --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classCommunicator.html @@ -0,0 +1,59 @@ + + +ParadisEO-PEOMovingObjects: Communicator Class Reference + + + + +
+
+ +

Communicator Class Reference

Inheritance diagram for Communicator: +

+ +ReactiveThread +Thread + +List of all members. + + + + + + +

Public Member Functions

Communicator (int *__argc, char ***__argv)
+void start ()
+

Detailed Description

+ +

+ +

+Definition at line 43 of file comm.h.


The documentation for this class was generated from the following files: +
Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classCommunicator.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classCommunicator.png new file mode 100644 index 000000000..0f0ce225b Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classCommunicator.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classCooperative-members.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classCooperative-members.html new file mode 100644 index 000000000..a3bcc111d --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classCooperative-members.html @@ -0,0 +1,53 @@ + + +ParadisEO-PEOMovingObjects: Member List + + + + +
+
+ +

Cooperative Member List

This is the complete list of members for Cooperative, including all inherited members.

+ + + + + + + + + + + + + + + + +
Communicable()Communicable
getKey()Communicable
getOwner()Cooperative
keyCommunicable [protected]
lock()Communicable
notifySending()Cooperative [virtual]
num_commCommunicable [protected, static]
ownerCooperative [private]
resume()Communicable
sem_lockCommunicable [protected]
sem_stopCommunicable [protected]
send(Cooperative *__coop)Cooperative
setOwner(Runner &__runner)Cooperative
stop()Communicable
unlock()Communicable
~Communicable()Communicable [virtual]


Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classCooperative.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classCooperative.html new file mode 100644 index 000000000..12e67471f --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classCooperative.html @@ -0,0 +1,70 @@ + + +ParadisEO-PEOMovingObjects: Cooperative Class Reference + + + + +
+
+ +

Cooperative Class Reference

Inheritance diagram for Cooperative: +

+ +Communicable +peoAsyncIslandMig< EOT > +peoSyncIslandMig< EOT > + +List of all members. + + + + + + + + + + + + + +

Public Member Functions

+RunnergetOwner ()
+void setOwner (Runner &__runner)
+void send (Cooperative *__coop)
+virtual void notifySending ()

Private Attributes

+Runnerowner
+

Detailed Description

+ +

+ +

+Definition at line 45 of file cooperative.h.


The documentation for this class was generated from the following files: +
Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classCooperative.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classCooperative.png new file mode 100644 index 000000000..826cbc31b Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classCooperative.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classDisplayBestRoute-members.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classDisplayBestRoute-members.html new file mode 100644 index 000000000..492078e30 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classDisplayBestRoute-members.html @@ -0,0 +1,47 @@ + + +ParadisEO-PEOMovingObjects: Member List + + + + +
+
+ +

DisplayBestRoute Member List

This is the complete list of members for DisplayBestRoute, including all inherited members.

+ + + + + + + + + + +
addTo(eoCheckPoint< EOT > &cp)eoUpdater
className(void) const eoUpdater [virtual]
DisplayBestRoute(eoPop< Route > &__pop)DisplayBestRoute
functor_category()eoF< void > [static]
lastCall()eoUpdater [virtual]
operator()()DisplayBestRoute [virtual]
popDisplayBestRoute [private]
result_type typedefeoF< void >
~eoF()eoF< void > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Mon Oct 8 11:16:47 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classDisplayBestRoute.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classDisplayBestRoute.html new file mode 100644 index 000000000..9915fa19a --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classDisplayBestRoute.html @@ -0,0 +1,64 @@ + + +ParadisEO-PEOMovingObjects: DisplayBestRoute Class Reference + + + + +
+
+ +

DisplayBestRoute Class Reference

Inheritance diagram for DisplayBestRoute: +

+ +eoUpdater +eoF< void > +eoFunctorBase + +List of all members. + + + + + + + + + +

Public Member Functions

DisplayBestRoute (eoPop< Route > &__pop)
+void operator() ()

Private Attributes

+eoPop< Route > & pop
+

Detailed Description

+ +

+ +

+Definition at line 46 of file display_best_route.h.


The documentation for this class was generated from the following files: +
Generated on Mon Oct 8 11:16:47 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classDisplayBestRoute.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classDisplayBestRoute.png new file mode 100644 index 000000000..e8040d807 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classDisplayBestRoute.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classMergeRouteEval-members.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classMergeRouteEval-members.html new file mode 100644 index 000000000..c85d970f1 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classMergeRouteEval-members.html @@ -0,0 +1,42 @@ + + +ParadisEO-PEOMovingObjects: Member List + + + + +
+
+ +

MergeRouteEval Member List

This is the complete list of members for MergeRouteEval, including all inherited members.

+ + + + + +
functor_category()eoBF< A1, A2, R > [static]
operator()(Route &__route, const int &__part_fit)MergeRouteEval
peoAggEvalFunc::operator()(A1, A2)=0eoBF< A1, A2, R > [pure virtual]
~eoBF()eoBF< A1, A2, R > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Mon Oct 8 11:16:47 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classMergeRouteEval.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classMergeRouteEval.html new file mode 100644 index 000000000..212fc625d --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classMergeRouteEval.html @@ -0,0 +1,57 @@ + + +ParadisEO-PEOMovingObjects: MergeRouteEval Class Reference + + + + +
+
+ +

MergeRouteEval Class Reference

Inheritance diagram for MergeRouteEval: +

+ +peoAggEvalFunc< EOT > +eoBF< A1, A2, R > +eoFunctorBase + +List of all members. + + + + +

Public Member Functions

+void operator() (Route &__route, const int &__part_fit)
+

Detailed Description

+ +

+ +

+Definition at line 44 of file merge_route_eval.h.


The documentation for this class was generated from the following files: +
Generated on Mon Oct 8 11:16:47 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classMergeRouteEval.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classMergeRouteEval.png new file mode 100644 index 000000000..7fa639930 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classMergeRouteEval.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classReactiveThread-members.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classReactiveThread-members.html new file mode 100644 index 000000000..efc2b058b --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classReactiveThread-members.html @@ -0,0 +1,45 @@ + + +ParadisEO-PEOMovingObjects: Member List + + + + +
+
+ +

ReactiveThread Member List

This is the complete list of members for ReactiveThread, including all inherited members.

+ + + + + + + + +
ReactiveThread()ReactiveThread
semReactiveThread [private]
setActive()Thread
setPassive()Thread
sleep()ReactiveThread
Thread()Thread
wakeUp()ReactiveThread
~Thread()Thread [virtual]


Generated on Mon Oct 8 11:16:49 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classReactiveThread.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classReactiveThread.html new file mode 100644 index 000000000..9a1793083 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classReactiveThread.html @@ -0,0 +1,67 @@ + + +ParadisEO-PEOMovingObjects: ReactiveThread Class Reference + + + + +
+
+ +

ReactiveThread Class Reference

Inheritance diagram for ReactiveThread: +

+ +Thread +Communicator +Worker + +List of all members. + + + + + + + + + + + +

Public Member Functions

ReactiveThread ()
+void sleep ()
+void wakeUp ()

Private Attributes

+sem_t sem
+

Detailed Description

+ +

+ +

+Definition at line 44 of file reac_thread.h.


The documentation for this class was generated from the following files: +
Generated on Mon Oct 8 11:16:49 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classReactiveThread.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classReactiveThread.png new file mode 100644 index 000000000..46b2d6d40 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classReactiveThread.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classRingTopology-members.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classRingTopology-members.html new file mode 100644 index 000000000..ce31afe98 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classRingTopology-members.html @@ -0,0 +1,41 @@ + + +ParadisEO-PEOMovingObjects: Member List + + + + +
+
+ +

RingTopology Member List

This is the complete list of members for RingTopology, including all inherited members.

+ + + + +
add(Cooperative &__mig)Topology
migTopology [protected]
setNeighbors(Cooperative *__mig, std::vector< Cooperative * > &__from, std::vector< Cooperative * > &__to)RingTopology [virtual]
~Topology()Topology [virtual]


Generated on Mon Oct 8 11:16:49 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classRingTopology.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classRingTopology.html new file mode 100644 index 000000000..ca95bba4c --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classRingTopology.html @@ -0,0 +1,55 @@ + + +ParadisEO-PEOMovingObjects: RingTopology Class Reference + + + + +
+
+ +

RingTopology Class Reference

Inheritance diagram for RingTopology: +

+ +Topology + +List of all members. + + + + +

Public Member Functions

+void setNeighbors (Cooperative *__mig, std::vector< Cooperative * > &__from, std::vector< Cooperative * > &__to)
+

Detailed Description

+ +

+ +

+Definition at line 42 of file ring_topo.h.


The documentation for this class was generated from the following files: +
Generated on Mon Oct 8 11:16:49 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classRingTopology.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classRingTopology.png new file mode 100644 index 000000000..79e86b847 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classRingTopology.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classRunner-members.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classRunner-members.html new file mode 100644 index 000000000..18f6d3e25 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classRunner-members.html @@ -0,0 +1,62 @@ + + +ParadisEO-PEOMovingObjects: Member List + + + + +
+
+ +

Runner Member List

This is the complete list of members for Runner, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Communicable()Communicable
getID()Runner
getKey()Communicable
idRunner [private]
isLocal()Runner
keyCommunicable [protected]
lock()Communicable
notifySendingTermination()Runner
num_commCommunicable [protected, static]
packTermination()Runner
resume()Communicable
Runner()Runner
sem_lockCommunicable [protected]
sem_startRunner [private]
sem_stopCommunicable [protected]
setActive()Thread
setPassive()Thread
start()Runner [virtual]
stop()Communicable
terminate()Runner
Thread()Thread
unlock()Communicable
waitStarting()Runner
~Communicable()Communicable [virtual]
~Thread()Thread [virtual]


Generated on Mon Oct 8 11:16:49 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classRunner.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classRunner.html new file mode 100644 index 000000000..03025fd30 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classRunner.html @@ -0,0 +1,86 @@ + + +ParadisEO-PEOMovingObjects: Runner Class Reference + + + + +
+
+ +

Runner Class Reference

Inheritance diagram for Runner: +

+ +Communicable +Thread +peoEA< EOT > +peoParallelAlgorithmWrapper + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

Runner ()
+void start ()
+void waitStarting ()
+bool isLocal ()
+void terminate ()
+RUNNER_ID getID ()
+void packTermination ()
+void notifySendingTermination ()

Private Attributes

+sem_t sem_start
+unsigned id
+

Detailed Description

+ +

+ +

+Definition at line 47 of file runner.h.


The documentation for this class was generated from the following files: +
Generated on Mon Oct 8 11:16:49 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classRunner.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classRunner.png new file mode 100644 index 000000000..b1883c046 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classRunner.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classService-members.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classService-members.html new file mode 100644 index 000000000..0ad5e342a --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classService-members.html @@ -0,0 +1,62 @@ + + +ParadisEO-PEOMovingObjects: Member List + + + + +
+
+ +

Service Member List

This is the complete list of members for Service, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Communicable()Communicable
execute()Service [virtual]
getKey()Communicable
getOwner()Service
keyCommunicable [protected]
lock()Communicable
notifySendingAllResourceRequests()Service [virtual]
notifySendingData()Service [virtual]
notifySendingResourceRequest()Service [virtual]
num_commCommunicable [protected, static]
num_sent_rrService [private]
ownerService [private]
packData()Service [virtual]
packResourceRequest()Service
packResult()Service [virtual]
requestResourceRequest(unsigned __how_many=1)Service
resume()Communicable
sem_lockCommunicable [protected]
sem_stopCommunicable [protected]
setOwner(Thread &__owner)Service
stop()Communicable
unlock()Communicable
unpackData()Service [virtual]
unpackResult()Service [virtual]
~Communicable()Communicable [virtual]


Generated on Mon Oct 8 11:16:49 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classService.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classService.html new file mode 100644 index 000000000..a996a9c8e --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classService.html @@ -0,0 +1,103 @@ + + +ParadisEO-PEOMovingObjects: Service Class Reference + + + + +
+
+ +

Service Class Reference

Inheritance diagram for Service: +

+ +Communicable +peoPopEval< EOT > +peoSynchronousMultiStart< EntityType > +peoSyncMultiStart< EOT > +peoTransform< EOT > +peoParaPopEval< EOT > +peoSeqPopEval< EOT > +peoParaSGATransform< EOT > +peoSeqTransform< EOT > + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

+void setOwner (Thread &__owner)
+ThreadgetOwner ()
+void requestResourceRequest (unsigned __how_many=1)
+void packResourceRequest ()
+virtual void packData ()
+virtual void unpackData ()
+virtual void execute ()
+virtual void packResult ()
+virtual void unpackResult ()
+virtual void notifySendingData ()
+virtual void notifySendingResourceRequest ()
+virtual void notifySendingAllResourceRequests ()

Private Attributes

+Threadowner
+unsigned num_sent_rr
+

Detailed Description

+ +

+ +

+Definition at line 45 of file service.h.


The documentation for this class was generated from the following files: +
Generated on Mon Oct 8 11:16:49 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classService.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classService.png new file mode 100644 index 000000000..e92250d12 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classService.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classThread-members.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classThread-members.html new file mode 100644 index 000000000..10a051865 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classThread-members.html @@ -0,0 +1,42 @@ + + +ParadisEO-PEOMovingObjects: Member List + + + + +
+
+ +

Thread Member List

This is the complete list of members for Thread, including all inherited members.

+ + + + + +
actThread [private]
setActive()Thread
setPassive()Thread
Thread()Thread
~Thread()Thread [virtual]


Generated on Mon Oct 8 11:16:49 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classThread.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classThread.html new file mode 100644 index 000000000..df5463856 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classThread.html @@ -0,0 +1,73 @@ + + +ParadisEO-PEOMovingObjects: Thread Class Reference + + + + +
+
+ +

Thread Class Reference

Inheritance diagram for Thread: +

+ +ReactiveThread +Runner +Communicator +Worker +peoEA< EOT > +peoParallelAlgorithmWrapper + +List of all members. + + + + + + + + + + + + + +

Public Member Functions

Thread ()
+virtual ~Thread ()
+void setActive ()
+void setPassive ()

Private Attributes

+bool act
+

Detailed Description

+ +

+ +

+Definition at line 44 of file thread.h.


The documentation for this class was generated from the following files: +
Generated on Mon Oct 8 11:16:49 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classThread.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classThread.png new file mode 100644 index 000000000..138a055d9 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classThread.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classTopology-members.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classTopology-members.html new file mode 100644 index 000000000..1f53aba26 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classTopology-members.html @@ -0,0 +1,40 @@ + + +ParadisEO-PEOMovingObjects: Member List + + + + +
+
+ +

Topology Member List

This is the complete list of members for Topology, including all inherited members.

+ + + +
add(Cooperative &__mig)Topology
migTopology [protected]
~Topology()Topology [virtual]


Generated on Mon Oct 8 11:16:49 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classTopology.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classTopology.html new file mode 100644 index 000000000..3140e314d --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classTopology.html @@ -0,0 +1,62 @@ + + +ParadisEO-PEOMovingObjects: Topology Class Reference + + + + +
+
+ +

Topology Class Reference

Inheritance diagram for Topology: +

+ +RingTopology + +List of all members. + + + + + + + + + +

Public Member Functions

+virtual ~Topology ()
+void add (Cooperative &__mig)

Protected Attributes

+std::vector< Cooperative * > mig
+

Detailed Description

+ +

+ +

+Definition at line 44 of file topology.h.


The documentation for this class was generated from the following files: +
Generated on Mon Oct 8 11:16:49 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classTopology.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classTopology.png new file mode 100644 index 000000000..bc09751e5 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classTopology.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classWorker-members.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classWorker-members.html new file mode 100644 index 000000000..cdd934364 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classWorker-members.html @@ -0,0 +1,68 @@ + + +ParadisEO-PEOMovingObjects: Member List + + + + +
+
+ +

Worker Member List

This is the complete list of members for Worker, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Communicable()Communicable
getKey()Communicable
idWorker [private]
keyCommunicable [protected]
lock()Communicable
notifySendingResult()Worker
notifySendingTaskDone()Worker
num_commCommunicable [protected, static]
packResult()Worker
packTaskDone()Worker
ReactiveThread()ReactiveThread
resume()Communicable
sem_lockCommunicable [protected]
sem_stopCommunicable [protected]
servWorker [private]
serv_idWorker [private]
setActive()Thread
setPassive()Thread
setSource(int __rank)Worker
sleep()ReactiveThread
srcWorker [private]
start()Worker [virtual]
stop()Communicable
Thread()Thread
totoWorker [private]
unlock()Communicable
unpackData()Worker
wakeUp()ReactiveThread
Worker()Worker
~Communicable()Communicable [virtual]
~Thread()Thread [virtual]


Generated on Mon Oct 8 11:16:50 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classWorker.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classWorker.html new file mode 100644 index 000000000..6fa5e8e62 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classWorker.html @@ -0,0 +1,94 @@ + + +ParadisEO-PEOMovingObjects: Worker Class Reference + + + + +
+
+ +

Worker Class Reference

Inheritance diagram for Worker: +

+ +Communicable +ReactiveThread +Thread + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

Worker ()
+void start ()
+void packResult ()
+void unpackData ()
+void packTaskDone ()
+void notifySendingResult ()
+void notifySendingTaskDone ()
+void setSource (int __rank)

Private Attributes

+WORKER_ID id
+SERVICE_ID serv_id
+Serviceserv
+int src
+bool toto
+

Detailed Description

+ +

+ +

+Definition at line 46 of file worker.h.


The documentation for this class was generated from the following files: +
Generated on Mon Oct 8 11:16:50 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classWorker.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classWorker.png new file mode 100644 index 000000000..0ea239005 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classWorker.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classes.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classes.html new file mode 100644 index 000000000..e1552e671 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classes.html @@ -0,0 +1,50 @@ + + +ParadisEO-PEOMovingObjects: Alphabetical List + + + + +
+
+ +

ParadisEO-PEOMovingObjects Class Index

A | C | D | E | M | N | P | R | S | T | W

+ +
  A  
+
peoParallelAlgorithmWrapper::AbstractAlgorithm   peoSynchronousMultiStart   
peoAggEvalFunc   peoParallelAlgorithmWrapper::Algorithm   peoSynchronousMultiStart::AbstractAggregationAlgorithm   
peoAsyncIslandMig   peoParallelAlgorithmWrapper::Algorithm< AlgorithmType, void >   peoSynchronousMultiStart::AbstractAlgorithm   
  C  
+
peoParaPopEval   peoSynchronousMultiStart::AbstractDataType   
Communicable   peoParaSGATransform   peoSynchronousMultiStart::AggregationAlgorithm   
Communicator   peoPopEval   peoSynchronousMultiStart::Algorithm   
Cooperative   
  R  
+
peoSynchronousMultiStart::DataType   
  D  
+
RandomExplorationAlgorithm   peoSynchronousMultiStart::NoAggregationFunction   
DisplayBestRoute   ReactiveThread   peoSyncIslandMig   
  E  
+
RingTopology   peoSyncMultiStart   
peoEA   Runner   
  T  
+
  M  
+
  S  
+
Thread   
MergeRouteEval   SEND_REQUEST   Topology   
  N  
+
peoSeqPopEval   peoTransform   
peoNoAggEvalFunc   peoSeqTransform   
  W  
+
  P  
+
Service   Worker   
peoParallelAlgorithmWrapper   

A | C | D | E | M | N | P | R | S | T | W

+


Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoAggEvalFunc-members.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoAggEvalFunc-members.html new file mode 100644 index 000000000..9da1e9cef --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoAggEvalFunc-members.html @@ -0,0 +1,41 @@ + + +ParadisEO-PEOMovingObjects: Member List + + + + +
+
+ +

peoAggEvalFunc< EOT > Member List

This is the complete list of members for peoAggEvalFunc< EOT >, including all inherited members.

+ + + + +
functor_category()eoBF< A1, A2, R > [static]
operator()(A1, A2)=0eoBF< A1, A2, R > [pure virtual]
~eoBF()eoBF< A1, A2, R > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Mon Oct 8 11:16:47 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoAggEvalFunc.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoAggEvalFunc.html new file mode 100644 index 000000000..bfe4d5547 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoAggEvalFunc.html @@ -0,0 +1,70 @@ + + +ParadisEO-PEOMovingObjects: peoAggEvalFunc< EOT > Class Template Reference + + + + +
+
+ +

peoAggEvalFunc< EOT > Class Template Reference

The peoAggEvalFunc class offers only the interface for creating aggregate evaluation functions - there are no direct internal functions provided. +More... +

+#include <peoAggEvalFunc.h> +

+

Inheritance diagram for peoAggEvalFunc< EOT >: +

+ +eoBF< A1, A2, R > +eoFunctorBase +MergeRouteEval +peoNoAggEvalFunc< EOT > + +List of all members. + +
+

Detailed Description

+

template<class EOT>
+ class peoAggEvalFunc< EOT >

+ +The peoAggEvalFunc class offers only the interface for creating aggregate evaluation functions - there are no direct internal functions provided. +

+The class inherits public eoBF< EOT&, const typename EOT :: Fitness&, void > thus requiring, for the derived classes, the creation of a function having the following signature:

+ + + +
void operator()( EOT& __eot, const typename EOT :: Fitness& __partial_fittness );    
+

+The aggregation object is called in an iterative manner for each of the results obtained by applying partial evaluation functions. +

+ +

+Definition at line 53 of file peoAggEvalFunc.h.


The documentation for this class was generated from the following file: +
Generated on Mon Oct 8 11:16:47 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoAggEvalFunc.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoAggEvalFunc.png new file mode 100644 index 000000000..91f704db8 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoAggEvalFunc.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoAsyncIslandMig-members.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoAsyncIslandMig-members.html new file mode 100644 index 000000000..f48ac21dc --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoAsyncIslandMig-members.html @@ -0,0 +1,74 @@ + + +ParadisEO-PEOMovingObjects: Member List + + + + +
+
+ +

peoAsyncIslandMig< EOT > Member List

This is the complete list of members for peoAsyncIslandMig< EOT >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addTo(eoCheckPoint< EOT > &cp)eoUpdater
className(void) const eoUpdater [virtual]
Communicable()Communicable
contpeoAsyncIslandMig< EOT > [private]
coop_empeoAsyncIslandMig< EOT > [private]
destinationpeoAsyncIslandMig< EOT > [private]
empeoAsyncIslandMig< EOT > [private]
emigrate()peoAsyncIslandMig< EOT > [private]
functor_category()eoF< void > [static]
getKey()Communicable
getOwner()Cooperative
immpeoAsyncIslandMig< EOT > [private]
immigrate()peoAsyncIslandMig< EOT > [private]
keyCommunicable [protected]
lastCall()eoUpdater [virtual]
lock()Communicable
notifySending()Cooperative [virtual]
num_commCommunicable [protected, static]
operator()()peoAsyncIslandMig< EOT > [virtual]
pack()peoAsyncIslandMig< EOT > [virtual]
peoAsyncIslandMig(eoContinue< EOT > &__cont, eoSelect< EOT > &__select, eoReplacement< EOT > &__replace, Topology &__topology, eoPop< EOT > &__source, eoPop< EOT > &__destination)peoAsyncIslandMig< EOT >
replacepeoAsyncIslandMig< EOT > [private]
result_type typedefeoF< void >
resume()Communicable
selectpeoAsyncIslandMig< EOT > [private]
sem_lockCommunicable [protected]
sem_stopCommunicable [protected]
send(Cooperative *__coop)Cooperative
setOwner(Runner &__runner)Cooperative
sourcepeoAsyncIslandMig< EOT > [private]
stop()Communicable
topologypeoAsyncIslandMig< EOT > [private]
unlock()Communicable
unpack()peoAsyncIslandMig< EOT > [virtual]
~Communicable()Communicable [virtual]
~eoF()eoF< void > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Mon Oct 8 11:16:47 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoAsyncIslandMig.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoAsyncIslandMig.html new file mode 100644 index 000000000..be4ff7a22 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoAsyncIslandMig.html @@ -0,0 +1,305 @@ + + +ParadisEO-PEOMovingObjects: peoAsyncIslandMig< EOT > Class Template Reference + + + + +
+
+ +

peoAsyncIslandMig< EOT > Class Template Reference

The peoAsyncIslandMig class offers the elementary basis for implementating an asynchronous island migration model - requires the specification of several basic parameters, i.e. +More... +

+#include <peoAsyncIslandMig.h> +

+

Inheritance diagram for peoAsyncIslandMig< EOT >: +

+ +Cooperative +eoUpdater +Communicable +eoF< void > +eoFunctorBase + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 peoAsyncIslandMig (eoContinue< EOT > &__cont, eoSelect< EOT > &__select, eoReplacement< EOT > &__replace, Topology &__topology, eoPop< EOT > &__source, eoPop< EOT > &__destination)
 Constructor for the peoAsyncIslandMig class; the characteristics of the migration model are defined through the specified parameters - out of the box objects provided in EO, etc., or custom, derived objects may be passed as parameters.
void operator() ()
 Function operator to be called as checkpoint for performing the migration step.
+void pack ()
 Auxiliary function dealing with sending the emigrant individuals. There is no need to explicitly call the function.
+void unpack ()
 Auxiliary function dealing with receiving immigrant individuals. There is no need to explicitly call the function.

Private Member Functions

+void emigrate ()
+void immigrate ()

Private Attributes

+eoContinue< EOT > & cont
+eoSelect< EOT > & select
+eoReplacement< EOT > & replace
+Topologytopology
+eoPop< EOT > & source
+eoPop< EOT > & destination
+std::queue< eoPop< EOT > > imm
+std::queue< eoPop< EOT > > em
+std::queue< Cooperative * > coop_em
+

Detailed Description

+

template<class EOT>
+ class peoAsyncIslandMig< EOT >

+ +The peoAsyncIslandMig class offers the elementary basis for implementating an asynchronous island migration model - requires the specification of several basic parameters, i.e. +

+continuation criterion, selection and replacement strategies, a topological model and the source and destination population for the migrating individuals. As opposed to the synchronous migration model, in the asynchronous migration approach, there is no synchronization step between islands after performing the emigration phase.

+The migration operator is called at the end of each generation of an evolutionary algorithms as a checkpoint object - the following code exposes the structure of a classic evolutionary algorithm:

+ + + + + + + + + + + + + +
do {    
         select( population, offsprings );   // select the offsprings from the current population
         transform( offsprings );   // crossover and mutation operators are applied on the selected offsprings
         evaluate( offsprings );   // evaluation step of the resulting offsprings
         replace( population, offsprings );   // replace the individuals in the current population whith individuals from the offspring population, according to a specified replacement strategy
} while ( eaCheckpointContinue( population ) );   // checkpoint operators are applied on the current population, including the migration operator, if any specified
+

+Constructing an asynchronous island migration model requires having defined (1) a topological migration model, (2) the control parameters of the migration process, (3) a checkpoint object associated with an evolutionary algorithm, and (4) an owner object must be set. The owner object must be derived from the Runner class (for example a peoEA object represents a possible owner). A simple example is offered bellow:

+

    +
  1. +topological model to be followed when performing migrations:
    +
    + + + +
    RingTopology migTopology;   // a simple ring topological model - each island communicates with two other islands
    +

    +

  2. +
  3. +the continuation criterion, selection and replacement strategy etc. are defined:
    +
    + + + + + + + + + + + + + + + + + +
    eoPop< EOT > population( POP_SIZE, popInitializer );   // population of individuals to be used for the evolutionary algorithm
       
    eoPeriodicContinue< EOT > migCont( MIG_FREQ );   // migrations occur periodically at MIG_FREQ iterations
    eoRandomSelect< EOT > migSelectStrategy;   // selection strategy - in this case a random selection is applied
    eoSelectNumber< EOT > migSelect( migSelectStrategy, MIG_SIZE );   // number of individuals to be selected using the specified strategy
    eoPlusReplacement< EOT > migReplace;   // immigration strategy - the worse individuals in the destination population are replaced by the immigrant individuals
       
    peoAsyncIslandMig< EOT > asyncMigration(
    +          migCont, migSelect, migReplace, migTopology,
    +          population, population
    + );  
    // asynchronous migration object - the emigrant individuals are selected from the same from population in which the immigrant individuals are being integrated
    +

    +

  4. +
  5. +creation of a checkpoint object as part of the definition of an evolutionary algoritm (details of th EA not given as being out of scope):
    +
    + + + + + + + + + + + + + +
    ...    
    eoGenContinue< EOT > eaCont( NUM_GEN );   // the evolutionary algorithm will stop after NUM_GEN generations
    eoCheckPoint< EOT > eaCheckpointContinue( eaCont );   // number of individuals to be selected using the specified strategy
    ...    
    eaCheckpointContinue.add( asyncMigration );   // adding the migration operator as checkpoint element
    ...    
    +

    +

  6. +
  7. +definition of an owner evolutionary algorithm (an object inheriting the Runner class):
    +
    + + + + + + + +
    peoEA< EOT > eaAlg( eaCheckpointContinue, eaPopEval, eaSelect, eaTransform, eaReplace);   // evolutionary algorithm having as checkpoint the eaCheckpointContinue object defined above
    asyncMigration.setOwner( eaAlg );   // setting the evolutionary algorithm as owner of the migration object
    eaAlg( population );   // applying the evolutionary algorithm on a given population
    +
  8. +
+

+The source and the destination population for the migration object were specified as being the same, in step no. 2, as we are usually interested in selecting the emigrants and integrating the immigrant individuals from and in, respectively, one unique population, iteratively evolved by an evolutionary algorithm. There is no restriction in having two distinct populations as source and destination for the emigrant and immigrant individuals respectively.

+The above steps only create an asynchronous migration object associated to an evolutionary algorithm. The creation of several islands requires the reiteration of the steps 2 through 4 for creating distinct algorithms, with distinct populations and the associated distinctly parametrized migration objects. The interconnecting element is the underlying topology, defined at step 1 (the same C++ migTopology object has to be passed as parameter for all the migration objects, in order to interconnect them). +

+ +

+Definition at line 140 of file peoAsyncIslandMig.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
peoAsyncIslandMig< EOT >::peoAsyncIslandMig (eoContinue< EOT > &  __cont,
eoSelect< EOT > &  __select,
eoReplacement< EOT > &  __replace,
Topology __topology,
eoPop< EOT > &  __source,
eoPop< EOT > &  __destination 
)
+
+
+ +

+Constructor for the peoAsyncIslandMig class; the characteristics of the migration model are defined through the specified parameters - out of the box objects provided in EO, etc., or custom, derived objects may be passed as parameters. +

+

Parameters:
+ + + + + + + +
eoContinue< EOT >& __cont - continuation criterion specifying whether the migration is performed or not;
eoSelect< EOT >& __select - selection strategy to be applied for constructing a list of emigrant individuals out of the source population;
eoReplacement< EOT >& __replace - replacement strategy used for integrating the immigrant individuals in the destination population;
Topology& __topology - topological model to be followed when performing migrations;
eoPop< EOT >& __source - source population from which the emigrant individuals are selected;
eoPop< EOT >& __destination - destination population in which the immigrant population are integrated.
+
+ +

+Definition at line 199 of file peoAsyncIslandMig.h. +

+References Topology::add(). +

+

+


Member Function Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + +
void peoAsyncIslandMig< EOT >::operator() (  )  [virtual]
+
+
+ +

+Function operator to be called as checkpoint for performing the migration step. +

+The emigrant individuals are selected from the source population and sent to the next island (defined by the topology object) while the immigrant individuals are integrated in the destination population. There is no need to explicitly call the function - the wrapper checkpoint object (please refer to the above example) will perform the call when required. +

+Implements eoF< void >. +

+Definition at line 276 of file peoAsyncIslandMig.h. +

+References peoAsyncIslandMig< EOT >::cont, peoAsyncIslandMig< EOT >::emigrate(), peoAsyncIslandMig< EOT >::immigrate(), and peoAsyncIslandMig< EOT >::source. +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Oct 8 11:16:47 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoAsyncIslandMig.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoAsyncIslandMig.png new file mode 100644 index 000000000..3a59d02e1 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoAsyncIslandMig.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoEA-members.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoEA-members.html new file mode 100644 index 000000000..c12e05db0 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoEA-members.html @@ -0,0 +1,69 @@ + + +ParadisEO-PEOMovingObjects: Member List + + + + +
+
+ +

peoEA< EOT > Member List

This is the complete list of members for peoEA< EOT >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Communicable()Communicable
contpeoEA< EOT > [private]
getID()Runner
getKey()Communicable
isLocal()Runner
keyCommunicable [protected]
lock()Communicable
notifySendingTermination()Runner
num_commCommunicable [protected, static]
operator()(eoPop< EOT > &__pop)peoEA< EOT >
packTermination()Runner
peoEA(eoContinue< EOT > &__cont, peoPopEval< EOT > &__pop_eval, eoSelect< EOT > &__select, peoTransform< EOT > &__trans, eoReplacement< EOT > &__replace)peoEA< EOT >
poppeoEA< EOT > [private]
pop_evalpeoEA< EOT > [private]
replacepeoEA< EOT > [private]
resume()Communicable
run()peoEA< EOT > [virtual]
Runner()Runner
selectpeoEA< EOT > [private]
sem_lockCommunicable [protected]
sem_stopCommunicable [protected]
setActive()Thread
setPassive()Thread
start()Runner [virtual]
stop()Communicable
terminate()Runner
Thread()Thread
transpeoEA< EOT > [private]
unlock()Communicable
waitStarting()Runner
~Communicable()Communicable [virtual]
~Thread()Thread [virtual]


Generated on Mon Oct 8 11:16:47 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoEA.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoEA.html new file mode 100644 index 000000000..cf847b231 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoEA.html @@ -0,0 +1,236 @@ + + +ParadisEO-PEOMovingObjects: peoEA< EOT > Class Template Reference + + + + +
+
+ +

peoEA< EOT > Class Template Reference

The peoEA class offers an elementary evolutionary algorithm implementation. +More... +

+#include <peoEA.h> +

+

Inheritance diagram for peoEA< EOT >: +

+ +Runner +Communicable +Thread + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 peoEA (eoContinue< EOT > &__cont, peoPopEval< EOT > &__pop_eval, eoSelect< EOT > &__select, peoTransform< EOT > &__trans, eoReplacement< EOT > &__replace)
 Constructor for the evolutionary algorithm object - several basic parameters have to be specified, allowing for different levels of parallelism.
+void run ()
 Evolutionary algorithm function - a side effect of the fact that the class is derived from the Runner class, thus requiring the existence of a run function, the algorithm being executed on a distinct thread.
void operator() (eoPop< EOT > &__pop)
 Function operator for specifying the population to be associated with the algorithm.

Private Attributes

+eoContinue< EOT > & cont
+peoPopEval< EOT > & pop_eval
+eoSelect< EOT > & select
+peoTransform< EOT > & trans
+eoReplacement< EOT > & replace
+eoPop< EOT > * pop
+

Detailed Description

+

template<class EOT>
+ class peoEA< EOT >

+ +The peoEA class offers an elementary evolutionary algorithm implementation. +

+In addition, as compared with the algorithms provided by the EO framework, the peoEA class has the underlying necessary structure for including, for example, parallel evaluation and parallel transformation operators, migration operators etc. Although there is no restriction on using the algorithms provided by the EO framework, the drawback resides in the fact that the EO implementation is exclusively sequential and, in consequence, no parallelism is provided. A simple example for constructing a peoEA object:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
...    
eoPop< EOT > population( POP_SIZE, popInitializer );   // creation of a population with POP_SIZE individuals - the popInitializer is a functor to be called for each individual
   
eoGenContinue< EOT > eaCont( NUM_GEN );   // number of generations for the evolutionary algorithm
eoCheckPoint< EOT > eaCheckpointContinue( eaCont );   // checkpoint incorporating the continuation criterion - startpoint for adding other checkpoint objects
   
peoSeqPopEval< EOT > eaPopEval( evalFunction );   // sequential evaluation functor wrapper - evalFunction represents the actual evaluation functor
   
eoRankingSelect< EOT > selectionStrategy;   // selection strategy for creating the offspring population - a simple ranking selection in this case
eoSelectNumber< EOT > eaSelect( selectionStrategy, POP_SIZE );   // the number of individuals to be selected for creating the offspring population
eoRankingSelect< EOT > selectionStrategy;   // selection strategy for creating the offspring population - a simple ranking selection in this case
   
eoSGATransform< EOT > transform( crossover, CROSS_RATE, mutation, MUT_RATE );   // transformation operator - crossover and mutation operators with their associated probabilities
peoSeqTransform< EOT > eaTransform( transform );   // ParadisEO specific sequential operator - a parallel version may be specified in the same manner
   
eoPlusReplacement< EOT > eaReplace;   // replacement strategy - for integrating the offspring resulting individuals in the initial population
   
peoEA< EOT > eaAlg( eaCheckpointContinue, eaPopEval, eaSelect, eaTransform, eaReplace );   // ParadisEO evolutionary algorithm integrating the above defined objects
eaAlg( population );   // specifying the initial population for the algorithm
...    
+ +

+ +

+Definition at line 82 of file peoEA.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
peoEA< EOT >::peoEA (eoContinue< EOT > &  __cont,
peoPopEval< EOT > &  __pop_eval,
eoSelect< EOT > &  __select,
peoTransform< EOT > &  __trans,
eoReplacement< EOT > &  __replace 
)
+
+
+ +

+Constructor for the evolutionary algorithm object - several basic parameters have to be specified, allowing for different levels of parallelism. +

+Depending on the requirements, a sequential or a parallel evaluation operator may be specified or, in the same manner, a sequential or a parallel transformation operator may be given as parameter. Out of the box objects may be provided, from the EO package, for example, or custom defined ones may be specified, provided that they are derived from the correct base classes.

+

Parameters:
+ + + + + + +
eoContinue< EOT >& __cont - continuation criterion specifying whether the algorithm should continue or not;
peoPopEval< EOT >& __pop_eval - evaluation operator; it allows the specification of parallel evaluation operators, aggregate evaluation functions, etc.;
eoSelect< EOT >& __select - selection strategy to be applied for constructing a list of offspring individuals;
peoTransform< EOT >& __trans - transformation operator, i.e. crossover and mutation; allows for sequential or parallel transform;
eoReplacement< EOT >& __replace - replacement strategy for integrating the offspring individuals in the initial population;
+
+ +

+Definition at line 126 of file peoEA.h. +

+References peoEA< EOT >::pop_eval, and peoEA< EOT >::trans. +

+

+


Member Function Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + +
void peoEA< EOT >::operator() (eoPop< EOT > &  __pop  ) 
+
+
+ +

+Function operator for specifying the population to be associated with the algorithm. +

+

Parameters:
+ + +
eoPop< EOT >& __pop - initial population of the algorithm, to be iteratively evolved;
+
+ +

+Definition at line 142 of file peoEA.h. +

+References peoEA< EOT >::pop. +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Oct 8 11:16:47 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoEA.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoEA.png new file mode 100644 index 000000000..e3384cb44 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoEA.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoNoAggEvalFunc-members.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoNoAggEvalFunc-members.html new file mode 100644 index 000000000..02f4c5c2b --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoNoAggEvalFunc-members.html @@ -0,0 +1,42 @@ + + +ParadisEO-PEOMovingObjects: Member List + + + + +
+
+ +

peoNoAggEvalFunc< EOT > Member List

This is the complete list of members for peoNoAggEvalFunc< EOT >, including all inherited members.

+ + + + + +
functor_category()eoBF< A1, A2, R > [static]
operator()(EOT &__sol, const typename EOT::Fitness &__fit)peoNoAggEvalFunc< EOT >
peoAggEvalFunc::operator()(A1, A2)=0eoBF< A1, A2, R > [pure virtual]
~eoBF()eoBF< A1, A2, R > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Mon Oct 8 11:16:47 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoNoAggEvalFunc.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoNoAggEvalFunc.html new file mode 100644 index 000000000..e7abd2ce1 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoNoAggEvalFunc.html @@ -0,0 +1,68 @@ + + +ParadisEO-PEOMovingObjects: peoNoAggEvalFunc< EOT > Class Template Reference + + + + +
+
+ +

peoNoAggEvalFunc< EOT > Class Template Reference

The peoNoAggEvalFunc class does nothing more than an association between a fitness value and a specified individual. +More... +

+#include <peoNoAggEvalFunc.h> +

+

Inheritance diagram for peoNoAggEvalFunc< EOT >: +

+ +peoAggEvalFunc< EOT > +eoBF< A1, A2, R > +eoFunctorBase + +List of all members. + + + + + +

Public Member Functions

+void operator() (EOT &__sol, const typename EOT::Fitness &__fit)
 Operator which sets as fitness the __fit value for the __sol individual.
+

Detailed Description

+

template<class EOT>
+ class peoNoAggEvalFunc< EOT >

+ +The peoNoAggEvalFunc class does nothing more than an association between a fitness value and a specified individual. +

+The class is provided as a mean of declaring that no aggregation is required for the evaluation function - the fitness value is explicitly specified. +

+ +

+Definition at line 47 of file peoNoAggEvalFunc.h.


The documentation for this class was generated from the following file: +
Generated on Mon Oct 8 11:16:47 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoNoAggEvalFunc.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoNoAggEvalFunc.png new file mode 100644 index 000000000..2feda5514 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoNoAggEvalFunc.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoParaPopEval-members.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoParaPopEval-members.html new file mode 100644 index 000000000..0e1cc0c86 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoParaPopEval-members.html @@ -0,0 +1,73 @@ + + +ParadisEO-PEOMovingObjects: Member List + + + + +
+
+ +

peoParaPopEval< EOT > Member List

This is the complete list of members for peoParaPopEval< EOT >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ad_solpeoParaPopEval< EOT > [private]
Communicable()Communicable
execute()peoParaPopEval< EOT > [virtual]
funcspeoParaPopEval< EOT > [private]
getKey()Communicable
getOwner()Service
keyCommunicable [protected]
lock()Communicable
merge_evalpeoParaPopEval< EOT > [private]
no_merge_evalpeoParaPopEval< EOT > [private]
notifySendingAllResourceRequests()peoParaPopEval< EOT > [virtual]
notifySendingData()peoParaPopEval< EOT > [virtual]
notifySendingResourceRequest()Service [virtual]
num_commCommunicable [protected, static]
num_funcpeoParaPopEval< EOT > [private]
one_funcpeoParaPopEval< EOT > [private]
operator()(eoPop< EOT > &__pop)peoParaPopEval< EOT > [virtual]
packData()peoParaPopEval< EOT > [virtual]
packResourceRequest()Service
packResult()peoParaPopEval< EOT > [virtual]
peoParaPopEval(eoEvalFunc< EOT > &__eval_func)peoParaPopEval< EOT >
peoParaPopEval(const std::vector< eoEvalFunc< EOT > * > &__funcs, peoAggEvalFunc< EOT > &__merge_eval)peoParaPopEval< EOT >
progressionpeoParaPopEval< EOT > [private]
requestResourceRequest(unsigned __how_many=1)Service
resume()Communicable
sem_lockCommunicable [protected]
sem_stopCommunicable [protected]
setOwner(Thread &__owner)Service
solpeoParaPopEval< EOT > [private]
stop()Communicable
taskspeoParaPopEval< EOT > [private]
totalpeoParaPopEval< EOT > [private]
unlock()Communicable
unpackData()peoParaPopEval< EOT > [virtual]
unpackResult()peoParaPopEval< EOT > [virtual]
~Communicable()Communicable [virtual]


Generated on Mon Oct 8 11:16:48 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoParaPopEval.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoParaPopEval.html new file mode 100644 index 000000000..96e841252 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoParaPopEval.html @@ -0,0 +1,411 @@ + + +ParadisEO-PEOMovingObjects: peoParaPopEval< EOT > Class Template Reference + + + + +
+
+ +

peoParaPopEval< EOT > Class Template Reference

The peoParaPopEval represents a wrapper for creating a functor capable of applying in parallel an EO-derived evaluation functor. +More... +

+#include <peoParaPopEval.h> +

+

Inheritance diagram for peoParaPopEval< EOT >: +

+ +peoPopEval< EOT > +Service +Communicable + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 peoParaPopEval (eoEvalFunc< EOT > &__eval_func)
 Constructor function - an EO-derived evaluation functor has to be specified; an internal reference is set towards the specified evaluation functor.
 peoParaPopEval (const std::vector< eoEvalFunc< EOT > * > &__funcs, peoAggEvalFunc< EOT > &__merge_eval)
 Constructor function - a vector of EO-derived evaluation functors has to be specified as well as an aggregation function.
void operator() (eoPop< EOT > &__pop)
 Operator for applying the evaluation functor (direct or aggregate) for each individual of the specified population.
void packData ()
 Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase.
void unpackData ()
 Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase.
+void execute ()
 Auxiliary function - it calls the specified evaluation functor(s). There is no need to explicitly call the function.
void packResult ()
 Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase.
void unpackResult ()
 Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase.
void notifySendingData ()
 Auxiliary function for notifications between the process requesting an evaluation operation and the processes that performs the actual evaluation phase.
void notifySendingAllResourceRequests ()
 Auxiliary function for notifications between the process requesting an evaluation operation and the processes that performs the actual evaluation phase.

Private Attributes

+const std::vector< eoEvalFunc<
+ EOT > * > & 
funcs
+std::vector< eoEvalFunc< EOT > * > one_func
+peoAggEvalFunc< EOT > & merge_eval
+peoNoAggEvalFunc< EOT > no_merge_eval
+std::queue< EOT * > tasks
+std::map< EOT *, std::pair<
+ unsigned, unsigned > > 
progression
+unsigned num_func
+EOT sol
+EOT * ad_sol
+unsigned total
+

Detailed Description

+

template<class EOT>
+ class peoParaPopEval< EOT >

+ +The peoParaPopEval represents a wrapper for creating a functor capable of applying in parallel an EO-derived evaluation functor. +

+The class offers the possibility of chosing between a single-function evaluation and an aggregate evaluation function, including several sub-evalution functions. +

+ +

+Definition at line 54 of file peoParaPopEval.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + +
peoParaPopEval< EOT >::peoParaPopEval (eoEvalFunc< EOT > &  __eval_func  ) 
+
+
+ +

+Constructor function - an EO-derived evaluation functor has to be specified; an internal reference is set towards the specified evaluation functor. +

+

Parameters:
+ + +
eoEvalFunc< EOT >& __eval_func - EO-derived evaluation functor to be applied in parallel on each individual of a specified population
+
+ +

+Definition at line 130 of file peoParaPopEval.h. +

+References peoParaPopEval< EOT >::one_func. +

+

+ +

+
+
+template<class EOT>
+ + + + + + + + + + + + + + + + + + +
peoParaPopEval< EOT >::peoParaPopEval (const std::vector< eoEvalFunc< EOT > * > &  __funcs,
peoAggEvalFunc< EOT > &  __merge_eval 
)
+
+
+ +

+Constructor function - a vector of EO-derived evaluation functors has to be specified as well as an aggregation function. +

+

Parameters:
+ + + +
const std :: vector< eoEvalFunc < EOT >* >& __funcs - vector of EO-derived partial evaluation functors;
peoAggEvalFunc< EOT >& __merge_eval - aggregation functor for creating a fitness value out of the partial fitness values.
+
+ +

+Definition at line 139 of file peoParaPopEval.h. +

+

+


Member Function Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + +
void peoParaPopEval< EOT >::operator() (eoPop< EOT > &  __pop  )  [virtual]
+
+
+ +

+Operator for applying the evaluation functor (direct or aggregate) for each individual of the specified population. +

+

Parameters:
+ + +
eoPop< EOT >& __pop - population to be evaluated by applying the evaluation functor specified in the constructor.
+
+ +

+Implements peoPopEval< EOT >. +

+Definition at line 150 of file peoParaPopEval.h. +

+References peoParaPopEval< EOT >::funcs, peoParaPopEval< EOT >::progression, Service::requestResourceRequest(), Communicable::stop(), peoParaPopEval< EOT >::tasks, and peoParaPopEval< EOT >::total. +

+

+ +

+
+
+template<class EOT>
+ + + + + + + + +
void peoParaPopEval< EOT >::packData (  )  [virtual]
+
+
+ +

+Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. +

+There is no need to explicitly call the function. +

+Reimplemented from Service. +

+Definition at line 171 of file peoParaPopEval.h. +

+References peoParaPopEval< EOT >::progression, and peoParaPopEval< EOT >::tasks. +

+

+ +

+
+
+template<class EOT>
+ + + + + + + + +
void peoParaPopEval< EOT >::unpackData (  )  [virtual]
+
+
+ +

+Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. +

+There is no need to explicitly call the function. +

+Reimplemented from Service. +

+Definition at line 185 of file peoParaPopEval.h. +

+References peoParaPopEval< EOT >::ad_sol, peoParaPopEval< EOT >::num_func, and peoParaPopEval< EOT >::sol. +

+

+ +

+
+
+template<class EOT>
+ + + + + + + + +
void peoParaPopEval< EOT >::packResult (  )  [virtual]
+
+
+ +

+Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. +

+There is no need to explicitly call the function. +

+Reimplemented from Service. +

+Definition at line 202 of file peoParaPopEval.h. +

+References peoParaPopEval< EOT >::ad_sol, and peoParaPopEval< EOT >::sol. +

+

+ +

+
+
+template<class EOT>
+ + + + + + + + +
void peoParaPopEval< EOT >::unpackResult (  )  [virtual]
+
+
+ +

+Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. +

+There is no need to explicitly call the function. +

+Reimplemented from Service. +

+Definition at line 211 of file peoParaPopEval.h. +

+References peoParaPopEval< EOT >::ad_sol, Service::getOwner(), peoParaPopEval< EOT >::merge_eval, peoParaPopEval< EOT >::progression, Communicable::resume(), Thread::setActive(), and peoParaPopEval< EOT >::total. +

+

+ +

+
+
+template<class EOT>
+ + + + + + + + +
void peoParaPopEval< EOT >::notifySendingData (  )  [virtual]
+
+
+ +

+Auxiliary function for notifications between the process requesting an evaluation operation and the processes that performs the actual evaluation phase. +

+There is no need to explicitly call the function. +

+Reimplemented from Service. +

+Definition at line 242 of file peoParaPopEval.h. +

+

+ +

+
+
+template<class EOT>
+ + + + + + + + +
void peoParaPopEval< EOT >::notifySendingAllResourceRequests (  )  [virtual]
+
+
+ +

+Auxiliary function for notifications between the process requesting an evaluation operation and the processes that performs the actual evaluation phase. +

+There is no need to explicitly call the function. +

+Reimplemented from Service. +

+Definition at line 247 of file peoParaPopEval.h. +

+References Service::getOwner(), and Thread::setPassive(). +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Oct 8 11:16:48 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoParaPopEval.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoParaPopEval.png new file mode 100644 index 000000000..3ddb39223 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoParaPopEval.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoParaSGATransform-members.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoParaSGATransform-members.html new file mode 100644 index 000000000..e23316ef8 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoParaSGATransform-members.html @@ -0,0 +1,75 @@ + + +ParadisEO-PEOMovingObjects: Member List + + + + +
+
+ +

peoParaSGATransform< EOT > Member List

This is the complete list of members for peoParaSGATransform< EOT >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Communicable()Communicable
crosspeoParaSGATransform< EOT > [private]
cross_ratepeoParaSGATransform< EOT > [private]
execute()peoParaSGATransform< EOT > [virtual]
fatherpeoParaSGATransform< EOT > [private]
functor_category()eoUF< A1, R > [static]
getKey()Communicable
getOwner()Service
idxpeoParaSGATransform< EOT > [private]
keyCommunicable [protected]
lock()Communicable
motherpeoParaSGATransform< EOT > [private]
mutpeoParaSGATransform< EOT > [private]
mut_ratepeoParaSGATransform< EOT > [private]
notifySendingAllResourceRequests()peoParaSGATransform< EOT > [virtual]
notifySendingData()peoParaSGATransform< EOT > [virtual]
notifySendingResourceRequest()Service [virtual]
num_commCommunicable [protected, static]
num_termpeoParaSGATransform< EOT > [private]
operator()(eoPop< EOT > &__pop)peoParaSGATransform< EOT >
peoTransform::operator()(A1)=0eoUF< A1, R > [pure virtual]
packData()peoParaSGATransform< EOT > [virtual]
packResourceRequest()Service
packResult()peoParaSGATransform< EOT > [virtual]
peoParaSGATransform(eoQuadOp< EOT > &__cross, double __cross_rate, eoMonOp< EOT > &__mut, double __mut_rate)peoParaSGATransform< EOT >
poppeoParaSGATransform< EOT > [private]
requestResourceRequest(unsigned __how_many=1)Service
resume()Communicable
sem_lockCommunicable [protected]
sem_stopCommunicable [protected]
setOwner(Thread &__owner)Service
stop()Communicable
unlock()Communicable
unpackData()peoParaSGATransform< EOT > [virtual]
unpackResult()peoParaSGATransform< EOT > [virtual]
~Communicable()Communicable [virtual]
~eoFunctorBase()eoFunctorBase [virtual]
~eoUF()eoUF< A1, R > [virtual]


Generated on Mon Oct 8 11:16:48 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoParaSGATransform.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoParaSGATransform.html new file mode 100644 index 000000000..d2691e70b --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoParaSGATransform.html @@ -0,0 +1,115 @@ + + +ParadisEO-PEOMovingObjects: peoParaSGATransform< EOT > Class Template Reference + + + + +
+
+ +

peoParaSGATransform< EOT > Class Template Reference

Inheritance diagram for peoParaSGATransform< EOT >: +

+ +peoTransform< EOT > +Service +eoTransform< EOT > +Communicable +eoUF< A1, R > +eoFunctorBase + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

peoParaSGATransform (eoQuadOp< EOT > &__cross, double __cross_rate, eoMonOp< EOT > &__mut, double __mut_rate)
+void operator() (eoPop< EOT > &__pop)
+void packData ()
+void unpackData ()
+void execute ()
+void packResult ()
+void unpackResult ()
+void notifySendingData ()
+void notifySendingAllResourceRequests ()

Private Attributes

+eoQuadOp< EOT > & cross
+double cross_rate
+eoMonOp< EOT > & mut
+double mut_rate
+unsigned idx
+eoPop< EOT > * pop
+EOT father
+EOT mother
+unsigned num_term
+

Detailed Description

+

template<class EOT>
+ class peoParaSGATransform< EOT >

+ + +

+ +

+Definition at line 49 of file peoParaSGATransform.h.


The documentation for this class was generated from the following file: +
Generated on Mon Oct 8 11:16:48 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoParaSGATransform.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoParaSGATransform.png new file mode 100644 index 000000000..ed966aad7 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoParaSGATransform.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoParallelAlgorithmWrapper-members.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoParallelAlgorithmWrapper-members.html new file mode 100644 index 000000000..6fa13be24 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoParallelAlgorithmWrapper-members.html @@ -0,0 +1,65 @@ + + +ParadisEO-PEOMovingObjects: Member List + + + + +
+
+ +

peoParallelAlgorithmWrapper Member List

This is the complete list of members for peoParallelAlgorithmWrapper, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
algorithmpeoParallelAlgorithmWrapper [private]
Communicable()Communicable
getID()Runner
getKey()Communicable
isLocal()Runner
keyCommunicable [protected]
lock()Communicable
notifySendingTermination()Runner
num_commCommunicable [protected, static]
packTermination()Runner
peoParallelAlgorithmWrapper(AlgorithmType &externalAlgorithm)peoParallelAlgorithmWrapper [inline]
peoParallelAlgorithmWrapper(AlgorithmType &externalAlgorithm, AlgorithmDataType &externalData)peoParallelAlgorithmWrapper [inline]
resume()Communicable
run()peoParallelAlgorithmWrapper [inline, virtual]
Runner()Runner
sem_lockCommunicable [protected]
sem_stopCommunicable [protected]
setActive()Thread
setPassive()Thread
start()Runner [virtual]
stop()Communicable
terminate()Runner
Thread()Thread
unlock()Communicable
waitStarting()Runner
~Communicable()Communicable [virtual]
~peoParallelAlgorithmWrapper()peoParallelAlgorithmWrapper [inline]
~Thread()Thread [virtual]


Generated on Mon Oct 8 11:16:47 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoParallelAlgorithmWrapper.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoParallelAlgorithmWrapper.html new file mode 100644 index 000000000..2cacf76fb --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoParallelAlgorithmWrapper.html @@ -0,0 +1,79 @@ + + +ParadisEO-PEOMovingObjects: peoParallelAlgorithmWrapper Class Reference + + + + +
+
+ +

peoParallelAlgorithmWrapper Class Reference

Inheritance diagram for peoParallelAlgorithmWrapper: +

+ +Runner +Communicable +Thread + +List of all members. + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

+template<typename AlgorithmType>
 peoParallelAlgorithmWrapper (AlgorithmType &externalAlgorithm)
+template<typename AlgorithmType, typename AlgorithmDataType>
 peoParallelAlgorithmWrapper (AlgorithmType &externalAlgorithm, AlgorithmDataType &externalData)
~peoParallelAlgorithmWrapper ()
+void run ()

Private Attributes

+AbstractAlgorithmalgorithm

Classes

struct  AbstractAlgorithm
struct  Algorithm
struct  Algorithm< AlgorithmType, void >
+

Detailed Description

+ +

+ +

+Definition at line 47 of file peoParallelAlgorithmWrapper.h.


The documentation for this class was generated from the following file: +
Generated on Mon Oct 8 11:16:47 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoParallelAlgorithmWrapper.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoParallelAlgorithmWrapper.png new file mode 100644 index 000000000..0b0eb1065 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoParallelAlgorithmWrapper.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoPopEval-members.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoPopEval-members.html new file mode 100644 index 000000000..d233f1ae2 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoPopEval-members.html @@ -0,0 +1,61 @@ + + +ParadisEO-PEOMovingObjects: Member List + + + + +
+
+ +

peoPopEval< EOT > Member List

This is the complete list of members for peoPopEval< EOT >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + +
Communicable()Communicable
execute()Service [virtual]
getKey()Communicable
getOwner()Service
keyCommunicable [protected]
lock()Communicable
notifySendingAllResourceRequests()Service [virtual]
notifySendingData()Service [virtual]
notifySendingResourceRequest()Service [virtual]
num_commCommunicable [protected, static]
operator()(eoPop< EOT > &__pop)=0peoPopEval< EOT > [pure virtual]
packData()Service [virtual]
packResourceRequest()Service
packResult()Service [virtual]
requestResourceRequest(unsigned __how_many=1)Service
resume()Communicable
sem_lockCommunicable [protected]
sem_stopCommunicable [protected]
setOwner(Thread &__owner)Service
stop()Communicable
unlock()Communicable
unpackData()Service [virtual]
unpackResult()Service [virtual]
~Communicable()Communicable [virtual]


Generated on Mon Oct 8 11:16:48 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoPopEval.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoPopEval.html new file mode 100644 index 000000000..f7509c195 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoPopEval.html @@ -0,0 +1,69 @@ + + +ParadisEO-PEOMovingObjects: peoPopEval< EOT > Class Template Reference + + + + +
+
+ +

peoPopEval< EOT > Class Template Reference

The peoPopEval class provides the interface for constructing ParadisEO specific evaluation functors. +More... +

+#include <peoPopEval.h> +

+

Inheritance diagram for peoPopEval< EOT >: +

+ +Service +Communicable +peoParaPopEval< EOT > +peoSeqPopEval< EOT > + +List of all members. + + + + + +

Public Member Functions

+virtual void operator() (eoPop< EOT > &__pop)=0
 Interface function providing the signature for constructing an evaluation functor.
+

Detailed Description

+

template<class EOT>
+ class peoPopEval< EOT >

+ +The peoPopEval class provides the interface for constructing ParadisEO specific evaluation functors. +

+The derived classes may be used as wrappers for EO-derived evaluation functors. In order to have an example, please refer to the implementation of the peoSeqPopEval and peoParaPopEval classes. +

+ +

+Definition at line 47 of file peoPopEval.h.


The documentation for this class was generated from the following file: +
Generated on Mon Oct 8 11:16:48 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoPopEval.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoPopEval.png new file mode 100644 index 000000000..100bbb770 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoPopEval.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoSeqPopEval-members.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoSeqPopEval-members.html new file mode 100644 index 000000000..c16b20bd7 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoSeqPopEval-members.html @@ -0,0 +1,63 @@ + + +ParadisEO-PEOMovingObjects: Member List + + + + +
+
+ +

peoSeqPopEval< EOT > Member List

This is the complete list of members for peoSeqPopEval< EOT >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Communicable()Communicable
evalpeoSeqPopEval< EOT > [private]
execute()Service [virtual]
getKey()Communicable
getOwner()Service
keyCommunicable [protected]
lock()Communicable
notifySendingAllResourceRequests()Service [virtual]
notifySendingData()Service [virtual]
notifySendingResourceRequest()Service [virtual]
num_commCommunicable [protected, static]
operator()(eoPop< EOT > &__pop)peoSeqPopEval< EOT > [virtual]
packData()Service [virtual]
packResourceRequest()Service
packResult()Service [virtual]
peoSeqPopEval(eoEvalFunc< EOT > &__eval)peoSeqPopEval< EOT >
requestResourceRequest(unsigned __how_many=1)Service
resume()Communicable
sem_lockCommunicable [protected]
sem_stopCommunicable [protected]
setOwner(Thread &__owner)Service
stop()Communicable
unlock()Communicable
unpackData()Service [virtual]
unpackResult()Service [virtual]
~Communicable()Communicable [virtual]


Generated on Mon Oct 8 11:16:48 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoSeqPopEval.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoSeqPopEval.html new file mode 100644 index 000000000..ad1a5ffc0 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoSeqPopEval.html @@ -0,0 +1,142 @@ + + +ParadisEO-PEOMovingObjects: peoSeqPopEval< EOT > Class Template Reference + + + + +
+
+ +

peoSeqPopEval< EOT > Class Template Reference

The peoSeqPopEval class acts only as a ParadisEO specific sequential evaluation functor - a wrapper for incorporating an eoEvalFunc< EOT >-derived class as evaluation functor. +More... +

+#include <peoSeqPopEval.h> +

+

Inheritance diagram for peoSeqPopEval< EOT >: +

+ +peoPopEval< EOT > +Service +Communicable + +List of all members. + + + + + + + + + + + +

Public Member Functions

 peoSeqPopEval (eoEvalFunc< EOT > &__eval)
 Constructor function - it only sets an internal reference to point to the specified evaluation object.
void operator() (eoPop< EOT > &__pop)
 Operator for evaluating all the individuals of a given population - in a sequential iterative manner.

Private Attributes

+eoEvalFunc< EOT > & eval
+

Detailed Description

+

template<class EOT>
+ class peoSeqPopEval< EOT >

+ +The peoSeqPopEval class acts only as a ParadisEO specific sequential evaluation functor - a wrapper for incorporating an eoEvalFunc< EOT >-derived class as evaluation functor. +

+The specified EO evaluation object is applyied in an iterative manner to each individual of a specified population. +

+ +

+Definition at line 49 of file peoSeqPopEval.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + +
peoSeqPopEval< EOT >::peoSeqPopEval (eoEvalFunc< EOT > &  __eval  ) 
+
+
+ +

+Constructor function - it only sets an internal reference to point to the specified evaluation object. +

+

Parameters:
+ + +
eoEvalFunc< EOT >& __eval - evaluation object to be applied for each individual of a specified population
+
+ +

+Definition at line 69 of file peoSeqPopEval.h. +

+

+


Member Function Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + +
void peoSeqPopEval< EOT >::operator() (eoPop< EOT > &  __pop  )  [virtual]
+
+
+ +

+Operator for evaluating all the individuals of a given population - in a sequential iterative manner. +

+

Parameters:
+ + +
eoPop< EOT >& __pop - population to be evaluated.
+
+ +

+Implements peoPopEval< EOT >. +

+Definition at line 74 of file peoSeqPopEval.h. +

+References peoSeqPopEval< EOT >::eval. +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Oct 8 11:16:48 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoSeqPopEval.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoSeqPopEval.png new file mode 100644 index 000000000..df2001515 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoSeqPopEval.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoSeqTransform-members.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoSeqTransform-members.html new file mode 100644 index 000000000..5ffee7a7f --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoSeqTransform-members.html @@ -0,0 +1,67 @@ + + +ParadisEO-PEOMovingObjects: Member List + + + + +
+
+ +

peoSeqTransform< EOT > Member List

This is the complete list of members for peoSeqTransform< EOT >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Communicable()Communicable
execute()peoSeqTransform< EOT > [inline, virtual]
functor_category()eoUF< A1, R > [static]
getKey()Communicable
getOwner()Service
keyCommunicable [protected]
lock()Communicable
notifySendingAllResourceRequests()Service [virtual]
notifySendingData()Service [virtual]
notifySendingResourceRequest()Service [virtual]
num_commCommunicable [protected, static]
operator()(eoPop< EOT > &__pop)peoSeqTransform< EOT >
peoTransform::operator()(A1)=0eoUF< A1, R > [pure virtual]
packData()peoSeqTransform< EOT > [inline, virtual]
packResourceRequest()Service
packResult()peoSeqTransform< EOT > [inline, virtual]
peoSeqTransform(eoTransform< EOT > &__trans)peoSeqTransform< EOT >
requestResourceRequest(unsigned __how_many=1)Service
resume()Communicable
sem_lockCommunicable [protected]
sem_stopCommunicable [protected]
setOwner(Thread &__owner)Service
stop()Communicable
transpeoSeqTransform< EOT > [private]
unlock()Communicable
unpackData()peoSeqTransform< EOT > [inline, virtual]
unpackResult()peoSeqTransform< EOT > [inline, virtual]
~Communicable()Communicable [virtual]
~eoFunctorBase()eoFunctorBase [virtual]
~eoUF()eoUF< A1, R > [virtual]


Generated on Mon Oct 8 11:16:48 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoSeqTransform.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoSeqTransform.html new file mode 100644 index 000000000..afab019be --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoSeqTransform.html @@ -0,0 +1,163 @@ + + +ParadisEO-PEOMovingObjects: peoSeqTransform< EOT > Class Template Reference + + + + +
+
+ +

peoSeqTransform< EOT > Class Template Reference

The peoSeqTransform represent a wrapper for offering the possibility of using EO derived transform operators along with the ParadisEO evolutionary algorithms. +More... +

+#include <peoSeqTransform.h> +

+

Inheritance diagram for peoSeqTransform< EOT >: +

+ +peoTransform< EOT > +Service +eoTransform< EOT > +Communicable +eoUF< A1, R > +eoFunctorBase + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 peoSeqTransform (eoTransform< EOT > &__trans)
 Constructor function - sets an internal reference towards the specified EO-derived transform object.
void operator() (eoPop< EOT > &__pop)
 Operator for applying the specified transform operators on each individual of the given population.
+virtual void packData ()
 Interface function for providing a link with the parallel architecture of the ParadisEO framework.
+virtual void unpackData ()
 Interface function for providing a link with the parallel architecture of the ParadisEO framework.
+virtual void execute ()
 Interface function for providing a link with the parallel architecture of the ParadisEO framework.
+virtual void packResult ()
 Interface function for providing a link with the parallel architecture of the ParadisEO framework.
+virtual void unpackResult ()
 Interface function for providing a link with the parallel architecture of the ParadisEO framework.

Private Attributes

+eoTransform< EOT > & trans
+

Detailed Description

+

template<class EOT>
+ class peoSeqTransform< EOT >

+ +The peoSeqTransform represent a wrapper for offering the possibility of using EO derived transform operators along with the ParadisEO evolutionary algorithms. +

+A minimal set of interface functions is also provided for creating the link with the parallel architecture of the ParadisEO framework. +

+ +

+Definition at line 48 of file peoSeqTransform.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + +
peoSeqTransform< EOT >::peoSeqTransform (eoTransform< EOT > &  __trans  ) 
+
+
+ +

+Constructor function - sets an internal reference towards the specified EO-derived transform object. +

+

Parameters:
+ + +
eoTransform< EOT >& __trans - EO-derived transform object including crossover and mutation operators.
+
+ +

+Definition at line 83 of file peoSeqTransform.h. +

+

+


Member Function Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + +
void peoSeqTransform< EOT >::operator() (eoPop< EOT > &  __pop  ) 
+
+
+ +

+Operator for applying the specified transform operators on each individual of the given population. +

+

Parameters:
+ + +
eoPop< EOT >& __pop - population to be transformed by applying the crossover and mutation operators.
+
+ +

+Definition at line 88 of file peoSeqTransform.h. +

+References peoSeqTransform< EOT >::trans. +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Oct 8 11:16:48 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoSeqTransform.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoSeqTransform.png new file mode 100644 index 000000000..48c554a94 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoSeqTransform.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoSyncIslandMig-members.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoSyncIslandMig-members.html new file mode 100644 index 000000000..f2cb522e3 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoSyncIslandMig-members.html @@ -0,0 +1,75 @@ + + +ParadisEO-PEOMovingObjects: Member List + + + + +
+
+ +

peoSyncIslandMig< EOT > Member List

This is the complete list of members for peoSyncIslandMig< EOT >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addTo(eoCheckPoint< EOT > &cp)eoUpdater
className(void) const eoUpdater [virtual]
Communicable()Communicable
contpeoSyncIslandMig< EOT > [private]
coop_empeoSyncIslandMig< EOT > [private]
destinationpeoSyncIslandMig< EOT > [private]
empeoSyncIslandMig< EOT > [private]
emigrate()peoSyncIslandMig< EOT > [private]
functor_category()eoF< void > [static]
getKey()Communicable
getOwner()Cooperative
immpeoSyncIslandMig< EOT > [private]
immigrate()peoSyncIslandMig< EOT > [private]
keyCommunicable [protected]
lastCall()eoUpdater [virtual]
lock()Communicable
notifySending()peoSyncIslandMig< EOT > [virtual]
num_commCommunicable [protected, static]
operator()()peoSyncIslandMig< EOT > [virtual]
pack()peoSyncIslandMig< EOT > [virtual]
peoSyncIslandMig(unsigned __frequency, eoSelect< EOT > &__select, eoReplacement< EOT > &__replace, Topology &__topology, eoPop< EOT > &__source, eoPop< EOT > &__destination)peoSyncIslandMig< EOT >
replacepeoSyncIslandMig< EOT > [private]
result_type typedefeoF< void >
resume()Communicable
selectpeoSyncIslandMig< EOT > [private]
sem_lockCommunicable [protected]
sem_stopCommunicable [protected]
send(Cooperative *__coop)Cooperative
setOwner(Runner &__runner)Cooperative
sourcepeoSyncIslandMig< EOT > [private]
stop()Communicable
syncpeoSyncIslandMig< EOT > [private]
topologypeoSyncIslandMig< EOT > [private]
unlock()Communicable
unpack()peoSyncIslandMig< EOT > [virtual]
~Communicable()Communicable [virtual]
~eoF()eoF< void > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Mon Oct 8 11:16:49 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoSyncIslandMig.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoSyncIslandMig.html new file mode 100644 index 000000000..edd7ebfca --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoSyncIslandMig.html @@ -0,0 +1,310 @@ + + +ParadisEO-PEOMovingObjects: peoSyncIslandMig< EOT > Class Template Reference + + + + +
+
+ +

peoSyncIslandMig< EOT > Class Template Reference

The peoSyncIslandMig class offers the elementary basis for implementating a synchronous island migration model - requires the specification of several basic parameters, i.e. +More... +

+#include <peoSyncIslandMig.h> +

+

Inheritance diagram for peoSyncIslandMig< EOT >: +

+ +Cooperative +eoUpdater +Communicable +eoF< void > +eoFunctorBase + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 peoSyncIslandMig (unsigned __frequency, eoSelect< EOT > &__select, eoReplacement< EOT > &__replace, Topology &__topology, eoPop< EOT > &__source, eoPop< EOT > &__destination)
 Constructor for the peoSyncIslandMig class; the characteristics of the migration model are defined through the specified parameters - out of the box objects provided in EO, etc., or custom, derived objects may be passed as parameters.
void operator() ()
 Function operator to be called as checkpoint for performing the migration step.
+void pack ()
 Auxiliary function dealing with sending the emigrant individuals. There is no need to explicitly call the function.
+void unpack ()
 Auxiliary function dealing with receiving immigrant individuals. There is no need to explicitly call the function.
+void notifySending ()
 Auxiliary function dealing with migration notifications. There is no need to explicitly call the function.

Private Member Functions

+void emigrate ()
+void immigrate ()

Private Attributes

+eoPeriodicContinue< EOT > cont
+eoSelect< EOT > & select
+eoReplacement< EOT > & replace
+Topologytopology
+eoPop< EOT > & source
+eoPop< EOT > & destination
+std::queue< eoPop< EOT > > imm
+std::queue< eoPop< EOT > > em
+std::queue< Cooperative * > coop_em
+sem_t sync
+

Detailed Description

+

template<class EOT>
+ class peoSyncIslandMig< EOT >

+ +The peoSyncIslandMig class offers the elementary basis for implementating a synchronous island migration model - requires the specification of several basic parameters, i.e. +

+frequency of the migrations, selection and replacement strategies, a topological model and the source and destination population for the migrating individuals. The main difference as opposed to the asynchronous migration model is the synchronization step performed after selecting and sending the emigrant individuals.

+The migration operator is called at the end of each generation of an evolutionary algorithms as a checkpoint object - the following code exposes the structure of a classic evolutionary algorithm:

+ + + + + + + + + + + + + +
do {    
         select( population, offsprings );   // select the offsprings from the current population
         transform( offsprings );   // crossover and mutation operators are applied on the selected offsprings
         evaluate( offsprings );   // evaluation step of the resulting offspring
         replace( population, offsprings );   // replace the individuals in the current population whith individuals from the offspring population, according to a specified replacement strategy
} while ( eaCheckpointContinue( population ) );   // checkpoint operators are applied on the current population, including the migration operator, if any specified
+

+Constructing a synchronous island migration model requires having defined (1) a topological migration model, (2) the control parameters of the migration process, (3) a checkpoint object associated with an evolutionary algorithm, and (4) an owner object must be set. The owner object must be derived from the Runner class (for example a peoEA object represents a possible owner). A simple example is offered bellow:

+

    +
  1. +topological model to be followed when performing migrations:
    +
    + + + +
    RingTopology migTopology;   // a simple ring topological model - each island communicates with two other islands
    +

    +

  2. +
  3. +the continuation criterion, selection and replacement strategy etc. are defined:
    +
    + + + + + + + + + + + + + + + +
    eoPop< EOT > population( POP_SIZE, popInitializer );   // population of individuals to be used for the evolutionary algorithm
       
    eoRandomSelect< EOT > migSelectStrategy;   // selection strategy - in this case a random selection is applied
    eoSelectNumber< EOT > migSelect( migSelectStrategy, MIG_SIZE );   // number of individuals to be selected using the specified strategy
    eoPlusReplacement< EOT > migReplace;   // immigration strategy - the worse individuals in the destination population are replaced by the immigrant individuals
       
    peoSyncIslandMig< EOT > syncMigration(
    +          MIG_FREQ, migSelect, migReplace, migTopology,
    +          population, population
    + );  
    // synchronous migration object - the emigrant individuals are selected from the same from population in which the immigrant individuals are being integrated
    +

    +

  4. +
  5. +creation of a checkpoint object as part of the definition of an evolutionary algoritm (details of th EA not given as being out of scope):
    +
    + + + + + + + + + + + + + +
    ...    
    eoGenContinue< EOT > eaCont( NUM_GEN );   // the evolutionary algorithm will stop after NUM_GEN generations
    eoCheckPoint< EOT > eaCheckpointContinue( eaCont );   // number of individuals to be selected using the specified strategy
    ...    
    eaCheckpointContinue.add( syncMigration );   // adding the migration operator as checkpoint element
    ...    
    +

    +

  6. +
  7. +definition of an owner evolutionary algorithm (an object inheriting the Runner class):
    +
    + + + + + + + +
    peoEA< EOT > eaAlg( eaCheckpointContinue, eaPopEval, eaSelect, eaTransform, eaReplace);   // evolutionary algorithm having as checkpoint the eaCheckpointContinue object defined above
    syncMigration.setOwner( eaAlg );   // setting the evolutionary algorithm as owner of the migration object
    eaAlg( population );   // applying the evolutionary algorithm on a given population
    +
  8. +
+

+The source and the destination population for the migration object were specified as being the same, in step no. 2, as we are usually interested in selecting the emigrants and integrating the immigrant individuals from and in, respectively, one unique population, iteratively evolved by an evolutionary algorithm. There is no restriction in having two distinct populations as source and destination for the emigrant and immigrant individuals respectively.

+The above steps only create a synchronous migration object associated to an evolutionary algorithm. The creation of several islands requires the reiteration of the steps 2 through 4 for creating distinct algorithms, with distinct populations and the associated distinctly parametrized migration objects. The interconnecting element is the underlying topology, defined at step 1 (the same C++ migTopology object has to be passed as parameter for all the migration objects, in order to interconnect them). +

+ +

+Definition at line 142 of file peoSyncIslandMig.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
peoSyncIslandMig< EOT >::peoSyncIslandMig (unsigned  __frequency,
eoSelect< EOT > &  __select,
eoReplacement< EOT > &  __replace,
Topology __topology,
eoPop< EOT > &  __source,
eoPop< EOT > &  __destination 
)
+
+
+ +

+Constructor for the peoSyncIslandMig class; the characteristics of the migration model are defined through the specified parameters - out of the box objects provided in EO, etc., or custom, derived objects may be passed as parameters. +

+

Parameters:
+ + + + + + + +
unsigned __frequency - frequency of the migrations - the migrations occur periodically;
eoSelect< EOT >& __select - selection strategy to be applied for constructing a list of emigrant individuals out of the source population;
eoReplacement< EOT >& __replace - replacement strategy used for integrating the immigrant individuals in the destination population;
Topology& __topology - topological model to be followed when performing migrations;
eoPop< EOT >& __source - source population from which the emigrant individuals are selected;
eoPop< EOT >& __destination - destination population in which the immigrant population are integrated.
+
+ +

+Definition at line 206 of file peoSyncIslandMig.h. +

+References Topology::add(), and peoSyncIslandMig< EOT >::sync. +

+

+


Member Function Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + +
void peoSyncIslandMig< EOT >::operator() (  )  [virtual]
+
+
+ +

+Function operator to be called as checkpoint for performing the migration step. +

+The emigrant individuals are selected from the source population and sent to the next island (defined by the topology object) while the immigrant individuals are integrated in the destination population. There is no need to explicitly call the function - the wrapper checkpoint object (please refer to the above example) will perform the call when required. +

+Implements eoF< void >. +

+Definition at line 280 of file peoSyncIslandMig.h. +

+References peoSyncIslandMig< EOT >::cont, peoSyncIslandMig< EOT >::emigrate(), Cooperative::getOwner(), peoSyncIslandMig< EOT >::immigrate(), Thread::setActive(), peoSyncIslandMig< EOT >::source, Communicable::stop(), and peoSyncIslandMig< EOT >::sync. +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Oct 8 11:16:49 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoSyncIslandMig.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoSyncIslandMig.png new file mode 100644 index 000000000..6a1b7c227 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoSyncIslandMig.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoSyncMultiStart-members.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoSyncMultiStart-members.html new file mode 100644 index 000000000..ba4f886c9 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoSyncMultiStart-members.html @@ -0,0 +1,79 @@ + + +ParadisEO-PEOMovingObjects: Member List + + + + +
+
+ +

peoSyncMultiStart< EOT > Member List

This is the complete list of members for peoSyncMultiStart< EOT >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addTo(eoCheckPoint< EOT > &cp)eoUpdater
className(void) const eoUpdater [virtual]
Communicable()Communicable
contpeoSyncMultiStart< EOT > [private]
execute()peoSyncMultiStart< EOT > [virtual]
functor_category()eoF< void > [static]
getKey()Communicable
getOwner()Service
idxpeoSyncMultiStart< EOT > [private]
impr_selpeoSyncMultiStart< EOT > [private]
keyCommunicable [protected]
lastCall()eoUpdater [virtual]
lock()Communicable
lspeoSyncMultiStart< EOT > [private]
notifySendingAllResourceRequests()peoSyncMultiStart< EOT > [virtual]
notifySendingData()peoSyncMultiStart< EOT > [virtual]
notifySendingResourceRequest()Service [virtual]
num_commCommunicable [protected, static]
num_termpeoSyncMultiStart< EOT > [private]
operator()()peoSyncMultiStart< EOT > [virtual]
packData()peoSyncMultiStart< EOT > [virtual]
packResourceRequest()Service
packResult()peoSyncMultiStart< EOT > [virtual]
peoSyncMultiStart(eoContinue< EOT > &__cont, eoSelect< EOT > &__select, eoReplacement< EOT > &__replace, moAlgo< EOT > &__ls, eoPop< EOT > &__pop)peoSyncMultiStart< EOT >
poppeoSyncMultiStart< EOT > [private]
replacepeoSyncMultiStart< EOT > [private]
requestResourceRequest(unsigned __how_many=1)Service
result_type typedefeoF< void >
resume()Communicable
selpeoSyncMultiStart< EOT > [private]
selectpeoSyncMultiStart< EOT > [private]
sem_lockCommunicable [protected]
sem_stopCommunicable [protected]
setOwner(Thread &__owner)Service
solpeoSyncMultiStart< EOT > [private]
stop()Communicable
unlock()Communicable
unpackData()peoSyncMultiStart< EOT > [virtual]
unpackResult()peoSyncMultiStart< EOT > [virtual]
~Communicable()Communicable [virtual]
~eoF()eoF< void > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]


Generated on Mon Oct 8 11:16:49 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoSyncMultiStart.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoSyncMultiStart.html new file mode 100644 index 000000000..d8fcdc3b2 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoSyncMultiStart.html @@ -0,0 +1,418 @@ + + +ParadisEO-PEOMovingObjects: peoSyncMultiStart< EOT > Class Template Reference + + + + +
+
+ +

peoSyncMultiStart< EOT > Class Template Reference

The peoSyncMultiStart class provides the basis for implementing the synchronous multi-start model, for launching several solution-based algorithms in parallel on a specified initial population. +More... +

+#include <peoSyncMultiStart.h> +

+

Inheritance diagram for peoSyncMultiStart< EOT >: +

+ +Service +eoUpdater +Communicable +eoF< void > +eoFunctorBase + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 peoSyncMultiStart (eoContinue< EOT > &__cont, eoSelect< EOT > &__select, eoReplacement< EOT > &__replace, moAlgo< EOT > &__ls, eoPop< EOT > &__pop)
 Constructor function - several simple parameters are required for defining the characteristics of the multi-start model.
void operator() ()
 Operator which synchronously executes the specified algorithm on the individuals selected from the initial population.
void packData ()
 Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm.
void unpackData ()
 Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm.
void execute ()
 Auxiliary function for actually executing the specified algorithm on one assigned individual.
void packResult ()
 Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm.
void unpackResult ()
 Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm.
void notifySendingData ()
 Auxiliary function for notifications between the process requesting the synchronous multi-start execution and the processes that performs the actual execution phase.
void notifySendingAllResourceRequests ()
 Auxiliary function for notifications between the process requesting the synchronous multi-start execution and the processes that performs the actual execution phase.

Private Attributes

+eoContinue< EOT > & cont
+eoSelect< EOT > & select
+eoReplacement< EOT > & replace
+moAlgo< EOT > & ls
+eoPop< EOT > & pop
+eoPop< EOT > sel
+eoPop< EOT > impr_sel
+EOT sol
+unsigned idx
+unsigned num_term
+

Detailed Description

+

template<class EOT>
+ class peoSyncMultiStart< EOT >

+ +The peoSyncMultiStart class provides the basis for implementing the synchronous multi-start model, for launching several solution-based algorithms in parallel on a specified initial population. +

+As a simple example, several hill climbing algorithms may be synchronously launched on the specified population, each algorithm acting upon one individual only, the final result being integrated back in the population. A peoSyncMultiStart object can be specified as checkpoint object for a classic ParadisEO evolutionary algorithm thus allowing for simple hybridization schemes which combine the evolutionary approach with a local search approach, for example, executed at the end of each generation. +

+ +

+Definition at line 64 of file peoSyncMultiStart.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
peoSyncMultiStart< EOT >::peoSyncMultiStart (eoContinue< EOT > &  __cont,
eoSelect< EOT > &  __select,
eoReplacement< EOT > &  __replace,
moAlgo< EOT > &  __ls,
eoPop< EOT > &  __pop 
)
+
+
+ +

+Constructor function - several simple parameters are required for defining the characteristics of the multi-start model. +

+

Parameters:
+ + + + + + +
eoContinue< EOT >& __cont - defined for including further functionality - no semantics associated at this time;
eoSelect< EOT >& __select - selection strategy for obtaining a subset of the initial population on which to apply the specified algorithm;
eoReplacement< EOT >& __replace - replacement strategy for integrating the resulting individuals in the initial population;
moAlgo< EOT >& __ls - algorithm to be applied on each of the selected individuals - a moAlgo< EOT >-derived object must be specified;
eoPop< EOT >& __pop - the initial population from which the individuals are selected for applying the specified algorithm.
+
+ +

+Definition at line 134 of file peoSyncMultiStart.h. +

+

+


Member Function Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + +
void peoSyncMultiStart< EOT >::operator() (  )  [virtual]
+
+
+ +

+Operator which synchronously executes the specified algorithm on the individuals selected from the initial population. +

+There is no need to explicitly call the operator - automatically called as checkpoint operator. +

+Implements eoF< void >. +

+Definition at line 189 of file peoSyncMultiStart.h. +

+References peoSyncMultiStart< EOT >::idx, peoSyncMultiStart< EOT >::impr_sel, peoSyncMultiStart< EOT >::num_term, peoSyncMultiStart< EOT >::pop, Service::requestResourceRequest(), peoSyncMultiStart< EOT >::sel, peoSyncMultiStart< EOT >::select, and Communicable::stop(). +

+

+ +

+
+
+template<class EOT>
+ + + + + + + + +
void peoSyncMultiStart< EOT >::packData (  )  [virtual]
+
+
+ +

+Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. +

+There is no need to explicitly call the function. +

+Reimplemented from Service. +

+Definition at line 148 of file peoSyncMultiStart.h. +

+References peoSyncMultiStart< EOT >::idx, and peoSyncMultiStart< EOT >::sel. +

+

+ +

+
+
+template<class EOT>
+ + + + + + + + +
void peoSyncMultiStart< EOT >::unpackData (  )  [virtual]
+
+
+ +

+Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. +

+There is no need to explicitly call the function. +

+Reimplemented from Service. +

+Definition at line 154 of file peoSyncMultiStart.h. +

+References peoSyncMultiStart< EOT >::sol. +

+

+ +

+
+
+template<class EOT>
+ + + + + + + + +
void peoSyncMultiStart< EOT >::execute (  )  [virtual]
+
+
+ +

+Auxiliary function for actually executing the specified algorithm on one assigned individual. +

+There is no need to explicitly call the function. +

+Reimplemented from Service. +

+Definition at line 160 of file peoSyncMultiStart.h. +

+References peoSyncMultiStart< EOT >::ls, and peoSyncMultiStart< EOT >::sol. +

+

+ +

+
+
+template<class EOT>
+ + + + + + + + +
void peoSyncMultiStart< EOT >::packResult (  )  [virtual]
+
+
+ +

+Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. +

+There is no need to explicitly call the function. +

+Reimplemented from Service. +

+Definition at line 166 of file peoSyncMultiStart.h. +

+References peoSyncMultiStart< EOT >::sol. +

+

+ +

+
+
+template<class EOT>
+ + + + + + + + +
void peoSyncMultiStart< EOT >::unpackResult (  )  [virtual]
+
+
+ +

+Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. +

+There is no need to explicitly call the function. +

+Reimplemented from Service. +

+Definition at line 172 of file peoSyncMultiStart.h. +

+References Service::getOwner(), peoSyncMultiStart< EOT >::impr_sel, peoSyncMultiStart< EOT >::num_term, peoSyncMultiStart< EOT >::pop, peoSyncMultiStart< EOT >::replace, Communicable::resume(), peoSyncMultiStart< EOT >::sel, Thread::setActive(), and peoSyncMultiStart< EOT >::sol. +

+

+ +

+
+
+template<class EOT>
+ + + + + + + + +
void peoSyncMultiStart< EOT >::notifySendingData (  )  [virtual]
+
+
+ +

+Auxiliary function for notifications between the process requesting the synchronous multi-start execution and the processes that performs the actual execution phase. +

+There is no need to explicitly call the function. +

+Reimplemented from Service. +

+Definition at line 200 of file peoSyncMultiStart.h. +

+

+ +

+
+
+template<class EOT>
+ + + + + + + + +
void peoSyncMultiStart< EOT >::notifySendingAllResourceRequests (  )  [virtual]
+
+
+ +

+Auxiliary function for notifications between the process requesting the synchronous multi-start execution and the processes that performs the actual execution phase. +

+There is no need to explicitly call the function. +

+Reimplemented from Service. +

+Definition at line 205 of file peoSyncMultiStart.h. +

+References Service::getOwner(), and Thread::setPassive(). +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Oct 8 11:16:49 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoSyncMultiStart.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoSyncMultiStart.png new file mode 100644 index 000000000..2ab8fb990 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoSyncMultiStart.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoSynchronousMultiStart-members.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoSynchronousMultiStart-members.html new file mode 100644 index 000000000..4d2a5076d --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoSynchronousMultiStart-members.html @@ -0,0 +1,74 @@ + + +ParadisEO-PEOMovingObjects: Member List + + + + +
+
+ +

peoSynchronousMultiStart< EntityType > Member List

This is the complete list of members for peoSynchronousMultiStart< EntityType >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
aggregationFunctionpeoSynchronousMultiStart< EntityType > [private]
algorithmspeoSynchronousMultiStart< EntityType > [private]
Communicable()Communicable
datapeoSynchronousMultiStart< EntityType > [private]
dataIndexpeoSynchronousMultiStart< EntityType > [private]
entityTypeInstancepeoSynchronousMultiStart< EntityType > [private]
execute()peoSynchronousMultiStart< EntityType > [virtual]
functionIndexpeoSynchronousMultiStart< EntityType > [private]
getKey()Communicable
getOwner()Service
idxpeoSynchronousMultiStart< EntityType > [private]
keyCommunicable [protected]
lock()Communicable
notifySendingAllResourceRequests()peoSynchronousMultiStart< EntityType > [virtual]
notifySendingData()peoSynchronousMultiStart< EntityType > [virtual]
notifySendingResourceRequest()Service [virtual]
num_commCommunicable [protected, static]
num_termpeoSynchronousMultiStart< EntityType > [private]
operator()(Type &externalData)peoSynchronousMultiStart< EntityType > [inline]
operator()(const Type &externalDataBegin, const Type &externalDataEnd)peoSynchronousMultiStart< EntityType > [inline]
packData()peoSynchronousMultiStart< EntityType > [virtual]
packResourceRequest()Service
packResult()peoSynchronousMultiStart< EntityType > [virtual]
peoSynchronousMultiStart(AlgorithmType &externalAlgorithm)peoSynchronousMultiStart< EntityType > [inline]
peoSynchronousMultiStart(std::vector< AlgorithmType * > &externalAlgorithms, AggregationFunctionType &externalAggregationFunction)peoSynchronousMultiStart< EntityType > [inline]
requestResourceRequest(unsigned __how_many=1)Service
resume()Communicable
sem_lockCommunicable [protected]
sem_stopCommunicable [protected]
setOwner(Thread &__owner)Service
singularAlgorithmpeoSynchronousMultiStart< EntityType > [private]
stop()Communicable
unlock()Communicable
unpackData()peoSynchronousMultiStart< EntityType > [virtual]
unpackResult()peoSynchronousMultiStart< EntityType > [virtual]
~Communicable()Communicable [virtual]
~peoSynchronousMultiStart()peoSynchronousMultiStart< EntityType > [inline]


Generated on Mon Oct 8 11:16:48 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoSynchronousMultiStart.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoSynchronousMultiStart.html new file mode 100644 index 000000000..010e7e956 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoSynchronousMultiStart.html @@ -0,0 +1,139 @@ + + +ParadisEO-PEOMovingObjects: peoSynchronousMultiStart< EntityType > Class Template Reference + + + + +
+
+ +

peoSynchronousMultiStart< EntityType > Class Template Reference

Inheritance diagram for peoSynchronousMultiStart< EntityType >: +

+ +Service +Communicable + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

+template<typename AlgorithmType>
 peoSynchronousMultiStart (AlgorithmType &externalAlgorithm)
+template<typename AlgorithmType, typename AggregationFunctionType>
 peoSynchronousMultiStart (std::vector< AlgorithmType * > &externalAlgorithms, AggregationFunctionType &externalAggregationFunction)
~peoSynchronousMultiStart ()
+template<typename Type>
void operator() (Type &externalData)
+template<typename Type>
void operator() (const Type &externalDataBegin, const Type &externalDataEnd)
+void packData ()
+void unpackData ()
+void execute ()
+void packResult ()
+void unpackResult ()
+void notifySendingData ()
+void notifySendingAllResourceRequests ()

Private Attributes

+AbstractAlgorithmsingularAlgorithm
+std::vector< AbstractAlgorithm * > algorithms
+AbstractAggregationAlgorithmaggregationFunction
+EntityType entityTypeInstance
+std::vector< AbstractDataType * > data
+unsigned idx
+unsigned num_term
+unsigned dataIndex
+unsigned functionIndex

Classes

struct  AbstractAggregationAlgorithm
struct  AbstractAlgorithm
struct  AbstractDataType
struct  AggregationAlgorithm
struct  Algorithm
struct  DataType
struct  NoAggregationFunction
+

Detailed Description

+

template<typename EntityType>
+ class peoSynchronousMultiStart< EntityType >

+ + +

+ +

+Definition at line 45 of file peoSynchronousMultiStart.h.


The documentation for this class was generated from the following file: +
Generated on Mon Oct 8 11:16:48 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoSynchronousMultiStart.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoSynchronousMultiStart.png new file mode 100644 index 000000000..7504d31ad Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoSynchronousMultiStart.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoTransform-members.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoTransform-members.html new file mode 100644 index 000000000..a1a2a4231 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoTransform-members.html @@ -0,0 +1,64 @@ + + +ParadisEO-PEOMovingObjects: Member List + + + + +
+
+ +

peoTransform< EOT > Member List

This is the complete list of members for peoTransform< EOT >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Communicable()Communicable
execute()Service [virtual]
functor_category()eoUF< A1, R > [static]
getKey()Communicable
getOwner()Service
keyCommunicable [protected]
lock()Communicable
notifySendingAllResourceRequests()Service [virtual]
notifySendingData()Service [virtual]
notifySendingResourceRequest()Service [virtual]
num_commCommunicable [protected, static]
operator()(A1)=0eoUF< A1, R > [pure virtual]
packData()Service [virtual]
packResourceRequest()Service
packResult()Service [virtual]
requestResourceRequest(unsigned __how_many=1)Service
resume()Communicable
sem_lockCommunicable [protected]
sem_stopCommunicable [protected]
setOwner(Thread &__owner)Service
stop()Communicable
unlock()Communicable
unpackData()Service [virtual]
unpackResult()Service [virtual]
~Communicable()Communicable [virtual]
~eoFunctorBase()eoFunctorBase [virtual]
~eoUF()eoUF< A1, R > [virtual]


Generated on Mon Oct 8 11:16:49 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoTransform.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoTransform.html new file mode 100644 index 000000000..f5abe2875 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoTransform.html @@ -0,0 +1,65 @@ + + +ParadisEO-PEOMovingObjects: peoTransform< EOT > Class Template Reference + + + + +
+
+ +

peoTransform< EOT > Class Template Reference

The peoTransform class acts only as an interface for creating transform operators - for an example please refer to the peoSeqTransform and the peoParaSGATransform classes. +More... +

+#include <peoTransform.h> +

+

Inheritance diagram for peoTransform< EOT >: +

+ +Service +eoTransform< EOT > +Communicable +eoUF< A1, R > +eoFunctorBase +peoParaSGATransform< EOT > +peoSeqTransform< EOT > + +List of all members. + +
+

Detailed Description

+

template<class EOT>
+ class peoTransform< EOT >

+ +The peoTransform class acts only as an interface for creating transform operators - for an example please refer to the peoSeqTransform and the peoParaSGATransform classes. +

+ +

+Definition at line 48 of file peoTransform.h.


The documentation for this class was generated from the following file: +
Generated on Mon Oct 8 11:16:49 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoTransform.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoTransform.png new file mode 100644 index 000000000..d762a43a5 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/classpeoTransform.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/comm_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/comm_8cpp-source.html new file mode 100644 index 000000000..d9118ed38 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/comm_8cpp-source.html @@ -0,0 +1,124 @@ + + +ParadisEO-PEOMovingObjects: comm.cpp Source File + + + + +
+
+

comm.cpp

00001 /* 
+00002 * <comm.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 
+00038 #include <mpi.h>
+00039 
+00040 #include "comm.h"
+00041 #include "mess.h"
+00042 #include "node.h"
+00043 #include "param.h"
+00044 #include "../../core/peo_debug.h"
+00045 #include "../../core/runner.h"
+00046 #include "send.h"
+00047 #include "recv.h"
+00048 #include "scheduler.h"
+00049 
+00050 static sem_t sem_comm_init;
+00051 
+00052 static Communicator * the_thread;
+00053 
+00054 Communicator :: Communicator (int * __argc, char * * * __argv) {
+00055 
+00056   the_thread = this;  
+00057   initNode  (__argc, __argv);
+00058   loadRMCParameters (* __argc, * __argv);  
+00059   sem_post (& sem_comm_init);
+00060 }
+00061 
+00062 void Communicator :: start () {
+00063 
+00064   while (true) {
+00065     
+00066     /* Zzz Zzz Zzz :-))) */
+00067     sleep ();
+00068     sendMessages ();
+00069 
+00070     if (! atLeastOneActiveRunner ())     
+00071       break;
+00072     receiveMessages ();    
+00073   }
+00074   waitBuffers ();  
+00075   printDebugMessage ("finalizing");
+00076   MPI_Finalize ();  
+00077 }
+00078 
+00079 void initCommunication () {
+00080 
+00081   sem_init (& sem_comm_init, 0, 0);
+00082 }
+00083 
+00084 void waitNodeInitialization () {
+00085 
+00086   sem_wait (& sem_comm_init);
+00087 }
+00088 
+00089 void wakeUpCommunicator () {
+00090 
+00091   the_thread -> wakeUp ();
+00092 }
+00093 
+00094 
+00095 
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/comm_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/comm_8h-source.html new file mode 100644 index 000000000..4829f60ac --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/comm_8h-source.html @@ -0,0 +1,88 @@ + + +ParadisEO-PEOMovingObjects: comm.h Source File + + + + +
+
+

comm.h

00001 /* 
+00002 * <comm.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __comm_mpi_h
+00038 #define __comm_mpi_h
+00039 
+00040 #include "../../core/communicable.h"
+00041 #include "../../core/reac_thread.h"
+00042 
+00043 class Communicator : public ReactiveThread {
+00044 
+00045 public :
+00046   
+00047   /* Ctor */
+00048   Communicator (int * __argc, char * * * __argv);
+00049 
+00050   void start ();
+00051 };
+00052 
+00053 extern void initCommunication ();
+00054 
+00055 extern void waitNodeInitialization ();
+00056 
+00057 extern void wakeUpCommunicator ();
+00058 
+00059 #endif
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/communicable_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/communicable_8cpp-source.html new file mode 100644 index 000000000..3aa2cf96a --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/communicable_8cpp-source.html @@ -0,0 +1,127 @@ + + +ParadisEO-PEOMovingObjects: communicable.cpp Source File + + + + +
+
+

communicable.cpp

00001 /* 
+00002 * <communicable.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include <vector>
+00038 #include <map>
+00039 #include <cassert>
+00040 
+00041 #include "communicable.h"
+00042 
+00043 static std :: vector <Communicable *> key_to_comm (1); /* Vector of registered cooperators */
+00044 
+00045 static std :: map <const Communicable *, unsigned> comm_to_key; /* Map of registered cooperators */
+00046 
+00047 unsigned Communicable :: num_comm = 0;
+00048 
+00049 Communicable :: Communicable () {
+00050 
+00051   comm_to_key [this] = key = ++ num_comm;
+00052   key_to_comm.push_back (this);
+00053   sem_init (& sem_lock, 0, 1);
+00054   sem_init (& sem_stop, 0, 0);
+00055 }
+00056 
+00057 Communicable :: ~ Communicable () {
+00058 
+00059 }
+00060 
+00061 COMM_ID Communicable :: getKey () {
+00062 
+00063   return key;
+00064 }
+00065 
+00066 Communicable * getCommunicable (COMM_ID __key) {
+00067 
+00068   assert (__key < key_to_comm.size ());
+00069   return key_to_comm [__key];  
+00070 }
+00071 
+00072 COMM_ID getKey (const Communicable * __comm) {
+00073   
+00074   return comm_to_key [__comm];
+00075 }
+00076 
+00077 void Communicable :: lock () {
+00078 
+00079   sem_wait (& sem_lock);
+00080 }
+00081 
+00082 void Communicable :: unlock () {
+00083 
+00084   sem_post (& sem_lock);
+00085 }
+00086 
+00087 void Communicable :: stop () {
+00088 
+00089   sem_wait (& sem_stop);
+00090 }
+00091 
+00092 void Communicable :: resume () {
+00093 
+00094   sem_post (& sem_stop);
+00095 }
+00096 
+00097 
+00098 
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/communicable_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/communicable_8h-source.html new file mode 100644 index 000000000..f625215d2 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/communicable_8h-source.html @@ -0,0 +1,104 @@ + + +ParadisEO-PEOMovingObjects: communicable.h Source File + + + + +
+
+

communicable.h

00001 /* 
+00002 * <communicable.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __communicable_h
+00038 #define __communicable_h
+00039 
+00040 #include <semaphore.h>
+00041 
+00042 typedef unsigned COMM_ID;
+00043 
+00044 class Communicable {
+00045 
+00046 public :
+00047 
+00048   Communicable ();
+00049   
+00050   virtual ~ Communicable ();
+00051 
+00052   COMM_ID getKey ();  
+00053 
+00054   void lock (); /* It suspends the current process if the semaphore is locked */
+00055   void unlock (); /* It unlocks the shared semaphore */
+00056 
+00057   void stop (); /* It suspends the current process */
+00058   void resume (); /* It resumes ___________ */
+00059   
+00060 protected :
+00061 
+00062   COMM_ID key;
+00063 
+00064   sem_t sem_lock;
+00065   
+00066   sem_t sem_stop;
+00067 
+00068   static unsigned num_comm;
+00069 };
+00070 
+00071 extern Communicable * getCommunicable (COMM_ID __key); 
+00072 
+00073 //extern COMM_ID getKey (const Communicable * __comm);
+00074 
+00075 #endif
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/coop_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/coop_8cpp-source.html new file mode 100644 index 000000000..0c17572a4 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/coop_8cpp-source.html @@ -0,0 +1,99 @@ + + +ParadisEO-PEOMovingObjects: coop.cpp Source File + + + + +
+
+

coop.cpp

00001 /* 
+00002 * <coop.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include "../../core/cooperative.h"
+00038 #include "send.h"
+00039 #include "tags.h"
+00040 #include "schema.h"
+00041 #include "mess.h"
+00042 #include "../../core/peo_debug.h"
+00043 
+00044 Runner * Cooperative :: getOwner () {
+00045 
+00046   return owner;
+00047 }
+00048 
+00049 void Cooperative :: setOwner (Runner & __runner) {
+00050 
+00051   owner = & __runner;
+00052 }
+00053 
+00054 void Cooperative :: send (Cooperative * __coop) {
+00055 
+00056   :: send (this, getRankOfRunner (__coop -> getOwner () -> getID ()), COOP_TAG);   
+00057   //  stop ();
+00058 }
+00059 
+00060 Cooperative * getCooperative (COOP_ID __key) {
+00061 
+00062   return dynamic_cast <Cooperative *> (getCommunicable (__key));
+00063 }
+00064 
+00065 void Cooperative :: notifySending () {
+00066 
+00067   //getOwner -> setPassive ();
+00068   //  resume ();
+00069   //  printDebugMessage (b);
+00070 }
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/cooperative_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/cooperative_8h-source.html new file mode 100644 index 000000000..aedb3ed27 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/cooperative_8h-source.html @@ -0,0 +1,98 @@ + + +ParadisEO-PEOMovingObjects: cooperative.h Source File + + + + +
+
+

cooperative.h

00001 /* 
+00002 * <cooperative.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __cooperative_h
+00038 #define __cooperative_h
+00039 
+00040 #include "communicable.h"
+00041 #include "runner.h"
+00042 
+00043 typedef unsigned COOP_ID;
+00044 
+00045 class Cooperative : public Communicable {
+00046 
+00047 public :
+00048 
+00049   Runner * getOwner ();
+00050 
+00051   void setOwner (Runner & __runner);
+00052 
+00053   virtual void pack () = 0;
+00054   
+00055   virtual void unpack () = 0;
+00056 
+00057   void send (Cooperative * __coop); 
+00058 
+00059   virtual void notifySending ();
+00060 
+00061 private :
+00062 
+00063   Runner * owner;
+00064 
+00065 };
+00066 
+00067 extern Cooperative * getCooperative (COOP_ID __key); 
+00068 
+00069 #endif
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/core_2runner_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/core_2runner_8cpp-source.html new file mode 100644 index 000000000..5cc7127ca --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/core_2runner_8cpp-source.html @@ -0,0 +1,161 @@ + + +ParadisEO-PEOMovingObjects: runner.cpp Source File + + + + +
+
+

runner.cpp

00001 /* 
+00002 * <runner.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include <vector>
+00038 
+00039 #include "runner.h"
+00040 #include "reac_thread.h"
+00041 #include "peo_debug.h"
+00042 #include "messaging.h"
+00043 
+00044 static unsigned num_act = 0; /* Number of active runners */
+00045 
+00046 static std :: vector <pthread_t *> ll_threads; /* Low-level runner threads */ 
+00047 
+00048 static std :: vector <Runner *> the_runners;
+00049 
+00050 static unsigned num_runners = 0;
+00051 
+00052 Runner :: Runner () {
+00053 
+00054   id = ++ num_runners;
+00055   the_runners.push_back (this);
+00056   sem_init (& sem_start, 0, 0);
+00057   num_act ++;  
+00058 }
+00059 
+00060 extern int getNodeRank ();
+00061 
+00062 extern int getNumberOfNodes ();
+00063 
+00064 void unpackTerminationOfRunner () {
+00065   
+00066   RUNNER_ID id;
+00067   unpack (id);    
+00068   num_act --;
+00069   printDebugMessage ("I'm noticed of the termination of a runner");
+00070   if (! num_act) {
+00071     printDebugMessage ("all the runners have terminated. Now stopping the reactive threads.");
+00072     stopReactiveThreads ();
+00073   }
+00074 }
+00075 
+00076 bool atLeastOneActiveRunner () {
+00077 
+00078   return num_act;
+00079 }
+00080 
+00081 RUNNER_ID Runner :: getID () {
+00082 
+00083   return id;
+00084 }
+00085 
+00086 void Runner :: start () {
+00087 
+00088   setActive ();
+00089   sem_post (& sem_start);
+00090   run ();
+00091   terminate ();
+00092 }
+00093 
+00094 void Runner :: notifySendingTermination () {
+00095 
+00096   /*
+00097   char b [1000];
+00098   sprintf (b, "Il reste encore %d !!!!!!!!!!!!", n);
+00099   printDebugMessage (b);
+00100   */
+00101   printDebugMessage ("je suis informe que tout le monde a recu ma terminaison");
+00102   setPassive ();
+00103   
+00104 }
+00105 
+00106 void Runner :: waitStarting () {
+00107 
+00108   sem_wait (& sem_start);
+00109 }
+00110 
+00111 Runner * getRunner (RUNNER_ID __key) {
+00112 
+00113   return dynamic_cast <Runner *> (getCommunicable (__key));
+00114 }
+00115 
+00116 void startRunners () {
+00117   
+00118   /* Runners */
+00119   for (unsigned i = 0; i < the_runners.size (); i ++)
+00120     if (the_runners [i] -> isLocal ()) {
+00121       addThread (the_runners [i], ll_threads);
+00122       the_runners [i] -> waitStarting ();
+00123     }
+00124   printDebugMessage ("launched the parallel runners");
+00125 }
+00126 
+00127 
+00128 void joinRunners () {
+00129 
+00130 
+00131   joinThreads (ll_threads);
+00132 }
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/core_2service_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/core_2service_8cpp-source.html new file mode 100644 index 000000000..f9385b2e8 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/core_2service_8cpp-source.html @@ -0,0 +1,115 @@ + + +ParadisEO-PEOMovingObjects: service.cpp Source File + + + + +
+
+

service.cpp

00001 /* 
+00002 * <service.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include "service.h"
+00038 
+00039 void Service :: setOwner (Thread & __owner) {
+00040 
+00041   owner = & __owner;
+00042 }
+00043   
+00044 Thread * Service :: getOwner () {
+00045 
+00046   return owner;
+00047 }
+00048 
+00049 Service * getService (SERVICE_ID __key) {
+00050 
+00051   return dynamic_cast <Service *> (getCommunicable (__key));
+00052 }
+00053 
+00054 void Service :: notifySendingData () {
+00055 
+00056 }
+00057 void Service :: notifySendingResourceRequest () {
+00058 
+00059   num_sent_rr --;
+00060   if (! num_sent_rr)
+00061     notifySendingAllResourceRequests ();
+00062 }
+00063 
+00064 void Service :: notifySendingAllResourceRequests () {
+00065 
+00066 }
+00067 
+00068 void Service :: packData () {
+00069 
+00070 }
+00071 
+00072 void Service :: unpackData () {
+00073 
+00074 }
+00075 
+00076 void Service :: execute () {
+00077 
+00078 }
+00079   
+00080 void Service :: packResult () {
+00081 
+00082 }
+00083 
+00084 void Service :: unpackResult () {
+00085 
+00086 }
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/data_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/data_8cpp-source.html new file mode 100644 index 000000000..47c771d78 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/data_8cpp-source.html @@ -0,0 +1,155 @@ + + +ParadisEO-PEOMovingObjects: data.cpp Source File + + + + +
+
+

data.cpp

00001 /* 
+00002 * <data.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include <stdio.h>
+00038 #include <assert.h>
+00039 #include <string.h>
+00040 #include <stdlib.h>
+00041 
+00042 #include <utils/eoParser.h>
+00043 
+00044 #include "data.h"
+00045 #include "node.h"
+00046 
+00047 #define MAX_TRASH_LENGTH 1000
+00048 #define MAX_FIELD_LENGTH 1000
+00049 #define MAX_LINE_LENGTH 1000
+00050 
+00051 static void getNextField (FILE * __f, char * __buff) {
+00052   
+00053   char trash [MAX_TRASH_LENGTH];  
+00054 
+00055   fscanf (__f, "%[ \t:\n]", trash); /* Discarding sep. */ 
+00056   fscanf (__f, "%[^:\n]", __buff); /* Reading the field */
+00057   fgetc (__f);
+00058 }
+00059 
+00060 static void getLine (FILE * __f, char * __buff) {
+00061 
+00062   char trash [MAX_TRASH_LENGTH];  
+00063 
+00064   fscanf (__f, "%[ \t:\n]", trash); /* Discarding sep. */ 
+00065   fscanf (__f, "%[^\n]", __buff); /* Reading the line */
+00066 }
+00067 
+00068 void loadData (const char * __filename) {
+00069 
+00070   FILE * f = fopen (__filename, "r");
+00071 
+00072    if (f) {
+00073 
+00074      printf ("Loading '%s'.\n", __filename);
+00075      
+00076      char field [MAX_FIELD_LENGTH];
+00077      
+00078      getNextField (f, field); /* Name */
+00079      assert (strstr (field, "NAME"));
+00080      getNextField (f, field); 
+00081      printf ("NAME: %s.\n", field);
+00082      
+00083      getNextField (f, field); /* Comment */
+00084      assert (strstr (field, "COMMENT"));
+00085      getLine (f, field);
+00086      printf ("COMMENT: %s.\n", field);
+00087      
+00088      getNextField (f, field); /* Type */
+00089      assert (strstr (field, "TYPE"));
+00090      getNextField (f, field); 
+00091      printf ("TYPE: %s.\n", field);
+00092 
+00093      getNextField (f, field); /* Dimension */
+00094      assert (strstr (field, "DIMENSION"));
+00095      getNextField (f, field); 
+00096      printf ("DIMENSION: %s.\n", field);
+00097      numNodes = atoi (field);
+00098 
+00099      getNextField (f, field); /* Edge weight type */
+00100      assert (strstr (field, "EDGE_WEIGHT_TYPE"));
+00101      getNextField (f, field); 
+00102      printf ("EDGE_WEIGHT_TYPE: %s.\n", field);
+00103      
+00104      getNextField (f, field); /* Node coord section */
+00105      assert (strstr (field, "NODE_COORD_SECTION"));
+00106      loadNodes (f);
+00107      
+00108      getNextField (f, field); /* End of file */
+00109      assert (strstr (field, "EOF"));
+00110      printf ("EOF.\n");
+00111    }
+00112    else {
+00113      
+00114      fprintf (stderr, "Can't open '%s'.\n", __filename); 
+00115      exit (1);
+00116    }
+00117 }
+00118 
+00119 void loadData (eoParser & __parser) {
+00120   
+00121   /* Getting the path of the instance */
+00122   
+00123   eoValueParam <std :: string> param ("", "inst", "Path of the instance") ;
+00124   __parser.processParam (param) ;
+00125   loadData (param.value ().c_str ());
+00126 }
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/data_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/data_8h-source.html new file mode 100644 index 000000000..88fa11847 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/data_8h-source.html @@ -0,0 +1,75 @@ + + +ParadisEO-PEOMovingObjects: data.h Source File + + + + +
+
+

data.h

00001 /* 
+00002 * <data.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __data_h
+00038 #define __data_h
+00039 
+00040 #include <utils/eoParser.h>
+00041 
+00042 extern void loadData (const char * __filename);
+00043 
+00044 extern void loadData (eoParser & __parser);
+00045 
+00046 #endif
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/display_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/display_8cpp-source.html new file mode 100644 index 000000000..782dc66f4 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/display_8cpp-source.html @@ -0,0 +1,174 @@ + + +ParadisEO-PEOMovingObjects: display.cpp Source File + + + + +
+
+

display.cpp

00001 /* 
+00002 * <display.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include <iostream>
+00038 #include <fstream>
+00039 
+00040 #include <X11/Xlib.h>
+00041 
+00042 #include "display.h"
+00043 #include "node.h"
+00044 #include "opt_route.h"
+00045 
+00046 #define BORDER 20
+00047 #define RATIO 0.5
+00048 
+00049 #define screen_width 1024
+00050 #define screen_height 768
+00051 
+00052 static const char * filename;
+00053 
+00054 /* Computed coordinates */
+00055 static unsigned * X_new_coord, * Y_new_coord ;
+00056 
+00057 /* this variable will contain the handle to the returned graphics context. */
+00058 static GC gc;
+00059   
+00060 /* this variable will contain the pointer to the Display structure */
+00061 static Display* disp;
+00062 
+00063 /* this variable will store the ID of the newly created window. */
+00064 static Window win;
+00065 
+00066 static int screen;
+00067 
+00068 /* Create a new backing pixmap of the appropriate size */
+00069 
+00070   /* Best tour */
+00071   /*
+00072   gdk_gc_set_line_attributes (gc, 2,  GDK_LINE_ON_OFF_DASH, GDK_CAP_NOT_LAST, GDK_JOIN_MITER) ;
+00073 
+00074   gdk_gc_set_foreground  (gc, & color_green) ;      
+00075 
+00076   for (int i = 0 ; i < (int) numNodes ; i ++) {
+00077 
+00078     gdk_draw_line (pixmap, gc,
+00079                    X_new_coord [opt_route [i]],
+00080                    Y_new_coord [opt_route [i]],
+00081                    X_new_coord [opt_route [(i + 1) % numNodes]],
+00082                    Y_new_coord [opt_route [(i + 1) % numNodes]]);
+00083     
+00084                    }*/
+00085 
+00086 void openMainWindow (const char * __filename) {
+00087 
+00088   filename = __filename;
+00089 
+00090   /* Map */
+00091   int map_width = (int) (X_max - X_min);
+00092   int map_height = (int) (Y_max - Y_min);
+00093   int map_side = std :: max (map_width, map_height);
+00094   
+00095   /* Calculate the window's width and height. */
+00096   int win_width = (int) (screen_width * RATIO * map_width / map_side);
+00097   int win_height = (int) (screen_height * RATIO * map_height / map_side);
+00098 
+00099   /* Computing the coordinates */
+00100   X_new_coord = new unsigned [numNodes];
+00101   Y_new_coord = new unsigned [numNodes];
+00102 
+00103   for (unsigned i = 0; i < numNodes; i ++) {
+00104     X_new_coord [i] = (unsigned) (win_width * (1.0 - (X_coord [i] - X_min) / map_width) + BORDER);
+00105     Y_new_coord [i] = (unsigned) (win_height * (1.0 - (Y_coord [i] - Y_min) / map_height) + BORDER);
+00106   }
+00107   
+00108   /* Initialisation */
+00109   XGCValues val ;
+00110   
+00111   disp = XOpenDisplay (NULL) ;
+00112   screen = DefaultScreen (disp) ;
+00113   win = XCreateSimpleWindow (disp, RootWindow (disp, screen), 0, 0, win_width + 2 * BORDER, win_height + 2 * BORDER, 2, BlackPixel (disp, screen), WhitePixel (disp, screen)) ;
+00114   val.foreground = BlackPixel(disp, screen) ;
+00115   val.background = WhitePixel(disp, screen) ;
+00116   gc = XCreateGC (disp, win, GCForeground | GCBackground, & val) ; 
+00117 
+00118   XMapWindow (disp, win) ;
+00119   XFlush (disp) ;
+00120 
+00121   while (true) {
+00122     XClearWindow (disp, win) ;
+00123 
+00124     /* Vertices as circles */
+00125     for (unsigned i = 1 ; i < numNodes ; i ++)
+00126       XDrawArc (disp, win, gc, X_new_coord [i] - 1, Y_new_coord [i] - 1, 3, 3, 0, 364 * 64) ;
+00127     
+00128     /* New tour */
+00129     std :: ifstream f (filename);
+00130     if (f) {
+00131       Route route;
+00132       f >> route;
+00133       f.close ();
+00134       
+00135       for (int i = 0; i < (int) numNodes; i ++) 
+00136         XDrawLine (disp, win, gc,     
+00137                    X_new_coord [route [i]],
+00138                  Y_new_coord [route [i]],
+00139                    X_new_coord [route [(i + 1) % numNodes]],
+00140                    Y_new_coord [route [(i + 1) % numNodes]]);  
+00141     }
+00142     XFlush (disp) ;    
+00143     sleep (1) ;
+00144   }
+00145 }
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/display_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/display_8h-source.html new file mode 100644 index 000000000..ff79c926d --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/display_8h-source.html @@ -0,0 +1,73 @@ + + +ParadisEO-PEOMovingObjects: display.h Source File + + + + +
+
+

display.h

00001 /* 
+00002 * <display.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __display_h
+00038 #define __display_h
+00039 
+00040 #include "route.h"
+00041 
+00042 extern void openMainWindow (const char * __filename);
+00043 
+00044 #endif
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/display__best__route_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/display__best__route_8cpp-source.html new file mode 100644 index 000000000..3e1c1f630 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/display__best__route_8cpp-source.html @@ -0,0 +1,79 @@ + + +ParadisEO-PEOMovingObjects: display_best_route.cpp Source File + + + + +
+
+

display_best_route.cpp

00001 /* 
+00002 * <display_best_route.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include "display_best_route.h"
+00038 #include "display.h"
+00039 
+00040 DisplayBestRoute :: DisplayBestRoute (eoPop <Route> & __pop
+00041                                       ) : pop (__pop) {
+00042   
+00043   
+00044 }
+00045   
+00046 void DisplayBestRoute :: operator () () {
+00047   
+00048   displayRoute (pop.best_element ());
+00049 }
+00050 
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/display__best__route_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/display__best__route_8h-source.html new file mode 100644 index 000000000..41d920518 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/display__best__route_8h-source.html @@ -0,0 +1,89 @@ + + +ParadisEO-PEOMovingObjects: display_best_route.h Source File + + + + +
+
+

display_best_route.h

00001 /* 
+00002 * <display_best_route.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __display_best_route_h
+00038 #define __display_best_route_h
+00039 
+00040 #include <utils/eoUpdater.h>
+00041 
+00042 #include <eoPop.h>
+00043 
+00044 #include "route.h"
+00045 
+00046 class DisplayBestRoute : public eoUpdater {
+00047   
+00048 public :
+00049 
+00050   DisplayBestRoute (eoPop <Route> & __pop);
+00051   
+00052   void operator () ();
+00053 
+00054 private :
+00055   
+00056   eoPop <Route> & pop;
+00057 
+00058 };
+00059 
+00060 #endif
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/doclsn_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/doclsn_8h-source.html new file mode 100644 index 000000000..739191d90 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/doclsn_8h-source.html @@ -0,0 +1,527 @@ + + +ParadisEO-PEOMovingObjects: doclsn.h Source File + + + + +
+
+

doclsn.h

00001 
+00002 
+00003 
+00004 
+00005 
+00006 
+00007 
+00008 
+00009 
+00010 
+00011 
+00012 
+00013 
+00014 
+00015 
+00016 
+00017 
+00018 
+00019 
+00020 
+00021 
+00022 
+00023 
+00024 
+00025 
+00026 
+00027 
+00028 
+00029 
+00030 
+00031 
+00032 
+00033 
+00034 
+00035 
+00036 
+00037 
+00038 
+00039 
+00040 
+00041 
+00042 
+00043 
+00044 
+00045 
+00046 
+00047 
+00048 
+00049 
+00050 
+00051 
+00052 
+00053 
+00054 
+00055 
+00056 
+00057 
+00058 
+00059 
+00060 
+00061 
+00062 
+00063 
+00064 
+00065 
+00066 
+00067 
+00068 
+00069 
+00070 
+00071 
+00072 
+00073 
+00074 
+00075 
+00076 
+00077 
+00078 
+00079 
+00080 
+00081 
+00082 
+00083 
+00084 
+00085 
+00086 
+00087 
+00088 
+00089 
+00090 
+00091 
+00092 
+00093 
+00094 
+00095 
+00096 
+00097 
+00098 
+00099 
+00100 
+00101 
+00102 
+00103 
+00104 
+00105 
+00106 
+00107 
+00108 
+00109 
+00110 
+00111 
+00112 
+00113 
+00114 
+00115 
+00116 
+00117 
+00118 
+00119 
+00120 
+00121 
+00122 
+00123 
+00124 
+00125 
+00126 
+00127 
+00128 
+00129 
+00130 
+00131 
+00132 
+00133 
+00134 
+00135 
+00136 
+00137 
+00138 
+00139 
+00140 
+00141 
+00142 
+00143 
+00144 
+00145 
+00146 
+00147 
+00148 
+00149 
+00150 
+00151 
+00152 
+00153 
+00154 
+00155 
+00156 
+00157 
+00158 
+00159 
+00160 
+00161 
+00162 
+00163 
+00164 
+00165 
+00166 
+00167 
+00168 
+00169 
+00170 
+00171 
+00172 
+00173 
+00174 
+00175 
+00176 
+00177 
+00178 
+00179 
+00180 
+00181 
+00182 
+00183 
+00184 
+00185 
+00186 
+00187 
+00188 
+00189 
+00190 
+00191 
+00192 
+00193 
+00194 
+00195 
+00196 
+00197 
+00198 
+00199 
+00200 
+00201 
+00202 
+00203 
+00204 
+00205 
+00206 
+00207 
+00208 
+00209 
+00210 
+00211 
+00212 
+00213 
+00214 
+00215 
+00216 
+00217 
+00218 
+00219 
+00220 
+00221 
+00222 
+00223 
+00224 
+00225 
+00226 
+00227 
+00228 
+00229 
+00230 
+00231 
+00232 
+00233 
+00234 
+00235 
+00236 
+00237 
+00238 
+00239 
+00240 
+00241 
+00242 
+00243 
+00244 
+00245 
+00246 
+00247 
+00248 
+00249 
+00250 
+00251 
+00252 
+00253 
+00254 
+00255 
+00256 
+00257 
+00258 
+00259 
+00260 
+00261 
+00262 
+00263 
+00264 
+00265 
+00266 
+00267 
+00268 
+00269 
+00270 
+00271 
+00272 
+00273 
+00274 
+00275 
+00276 
+00277 
+00278 
+00279 
+00280 
+00281 
+00282 
+00283 
+00284 
+00285 
+00286 
+00287 
+00288 
+00289 
+00290 
+00291 
+00292 
+00293 
+00294 
+00295 
+00296 
+00297 
+00298 
+00299 
+00300 
+00301 
+00302 
+00303 
+00304 
+00305 
+00306 
+00307 
+00308 
+00309 
+00310 
+00311 
+00312 
+00313 
+00314 
+00315 
+00316 
+00317 
+00318 
+00319 
+00320 
+00321 
+00322 
+00323 
+00324 
+00325 
+00326 
+00327 
+00328 
+00329 
+00330 
+00331 
+00332 
+00333 
+00334 
+00335 
+00336 
+00337 
+00338 
+00339 
+00340 
+00341 
+00342 
+00343 
+00344 
+00345 
+00346 
+00347 
+00348 
+00349 
+00350 
+00351 
+00352 
+00353 
+00354 
+00355 
+00356 
+00357 
+00358 
+00359 
+00360 
+00361 
+00362 
+00363 
+00364 
+00365 
+00366 
+00367 
+00368 
+00369 
+00370 
+00371 
+00372 
+00373 
+00374 
+00375 
+00376 
+00377 
+00378 
+00379 
+00380 
+00381 
+00382 
+00383 
+00384 
+00385 
+00386 
+00387 
+00388 
+00389 
+00390 
+00391 
+00392 
+00393 
+00394 
+00395 
+00396 
+00397 
+00398 
+00399 
+00400 
+00401 
+00402 
+00403 
+00404 
+00405 
+00406 
+00407 
+00408 
+00409 
+00410 
+00411 
+00412 
+00413 
+00414 
+00415 
+00416 
+00417 
+00418 
+00419 
+00420 
+00421 
+00422 
+00423 
+00424 
+00425 
+00426 
+00427 
+00428 
+00429 
+00430 
+00431 
+00432 
+00433 
+00434 
+00435 
+00436 
+00437 
+00438 
+00439 
+00440 
+00441 
+00442 
+00443 
+00444 
+00445 
+00446 
+00447 
+00448 
+00449 
+00450 
+00451 
+00452 
+00453 
+00454 
+00455 
+00456 
+00457 
+00458 
+00459 
+00460 
+00461 
+00462 
+00463 
+00464 
+00465 
+00466 
+00467 
+00468 
+00469 
+00470 
+00471 
+00472 
+00473 
+00474 
+00475 
+00476 
+00477 
+00478 
+00479 
+00480 
+00481 
+00482 
+00483 
+00484 
+00485 
+00486 
+00487 
+00488 
+00489 
+00490 
+00491 
+00492 
+00493 
+00494 
+00495 
+00496 
+00497 
+00498 
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/doxygen.css b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/doxygen.css new file mode 100644 index 000000000..5d583694e --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/doxygen.css @@ -0,0 +1,358 @@ +BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV { + font-family: Geneva, Arial, Helvetica, sans-serif; +} +BODY,TD { + font-size: 90%; +} +H1 { + text-align: center; + font-size: 160%; +} +H2 { + font-size: 120%; +} +H3 { + font-size: 100%; +} +CAPTION { font-weight: bold } +DIV.qindex { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.nav { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.navtab { + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} +TD.navtab { + font-size: 70%; +} +A.qindex { + text-decoration: none; + font-weight: bold; + color: #1A419D; +} +A.qindex:visited { + text-decoration: none; + font-weight: bold; + color: #1A419D +} +A.qindex:hover { + text-decoration: none; + background-color: #ddddff; +} +A.qindexHL { + text-decoration: none; + font-weight: bold; + background-color: #6666cc; + color: #ffffff; + border: 1px double #9295C2; +} +A.qindexHL:hover { + text-decoration: none; + background-color: #6666cc; + color: #ffffff; +} +A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff } +A.el { text-decoration: none; font-weight: bold } +A.elRef { font-weight: bold } +A.code:link { text-decoration: none; font-weight: normal; color: #0000FF} +A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF} +A.codeRef:link { font-weight: normal; color: #0000FF} +A.codeRef:visited { font-weight: normal; color: #0000FF} +A:hover { text-decoration: none; background-color: #f2f2ff } +DL.el { margin-left: -1cm } +.fragment { + font-family: monospace, fixed; + font-size: 95%; +} +PRE.fragment { + border: 1px solid #CCCCCC; + background-color: #f5f5f5; + margin-top: 4px; + margin-bottom: 4px; + margin-left: 2px; + margin-right: 8px; + padding-left: 6px; + padding-right: 6px; + padding-top: 4px; + padding-bottom: 4px; +} +DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px } + +DIV.groupHeader { + margin-left: 16px; + margin-top: 12px; + margin-bottom: 6px; + font-weight: bold; +} +DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% } +BODY { + background: white; + color: black; + margin-right: 20px; + margin-left: 20px; +} +TD.indexkey { + background-color: #e8eef2; + font-weight: bold; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TD.indexvalue { + background-color: #e8eef2; + font-style: italic; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TR.memlist { + background-color: #f0f0f0; +} +P.formulaDsp { text-align: center; } +IMG.formulaDsp { } +IMG.formulaInl { vertical-align: middle; } +SPAN.keyword { color: #008000 } +SPAN.keywordtype { color: #604020 } +SPAN.keywordflow { color: #e08000 } +SPAN.comment { color: #800000 } +SPAN.preprocessor { color: #806020 } +SPAN.stringliteral { color: #002080 } +SPAN.charliteral { color: #008080 } +.mdescLeft { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.mdescRight { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.memItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplParams { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + color: #606060; + background-color: #FAFAFA; + font-size: 80%; +} +.search { color: #003399; + font-weight: bold; +} +FORM.search { + margin-bottom: 0px; + margin-top: 0px; +} +INPUT.search { font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +TD.tiny { font-size: 75%; +} +a { + color: #1A41A8; +} +a:visited { + color: #2A3798; +} +.dirtab { padding: 4px; + border-collapse: collapse; + border: 1px solid #84b0c7; +} +TH.dirtab { background: #e8eef2; + font-weight: bold; +} +HR { height: 1px; + border: none; + border-top: 1px solid black; +} + +/* Style for detailed member documentation */ +.memtemplate { + font-size: 80%; + color: #606060; + font-weight: normal; +} +.memnav { + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} +.memitem { + padding: 4px; + background-color: #eef3f5; + border-width: 1px; + border-style: solid; + border-color: #dedeee; + -moz-border-radius: 8px 8px 8px 8px; +} +.memname { + white-space: nowrap; + font-weight: bold; +} +.memdoc{ + padding-left: 10px; +} +.memproto { + background-color: #d5e1e8; + width: 100%; + border-width: 1px; + border-style: solid; + border-color: #84b0c7; + font-weight: bold; + -moz-border-radius: 8px 8px 8px 8px; +} +.paramkey { + text-align: right; +} +.paramtype { + white-space: nowrap; +} +.paramname { + color: #602020; + font-style: italic; +} +/* End Styling for detailed member documentation */ + +/* for the tree view */ +.ftvtree { + font-family: sans-serif; + margin:0.5em; +} +.directory { font-size: 9pt; font-weight: bold; } +.directory h3 { margin: 0px; margin-top: 1em; font-size: 11pt; } +.directory > h3 { margin-top: 0; } +.directory p { margin: 0px; white-space: nowrap; } +.directory div { display: none; margin: 0px; } +.directory img { vertical-align: -30%; } + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/doxygen.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/doxygen.png new file mode 100644 index 000000000..f0a274bba Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/doxygen.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/edge__xover_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/edge__xover_8cpp-source.html new file mode 100644 index 000000000..2741022d3 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/edge__xover_8cpp-source.html @@ -0,0 +1,175 @@ + + +ParadisEO-PEOMovingObjects: edge_xover.cpp Source File + + + + +
+
+

edge_xover.cpp

00001 /* 
+00002 * <edge_xover.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include <assert.h>
+00038 #include <values.h>
+00039 
+00040 #include <utils/eoRNG.h>
+00041 
+00042 #include "edge_xover.h"
+00043 
+00044 void EdgeXover :: build_map (const Route & __par1, const Route & __par2) {
+00045   
+00046   unsigned len = __par1.size () ;
+00047   
+00048   /* Initialization */
+00049   _map.clear () ;
+00050   _map.resize (len) ;
+00051   
+00052   for (unsigned i = 0 ; i < len ; i ++) {
+00053     _map [__par1 [i]].insert (__par1 [(i + 1) % len]) ;
+00054     _map [__par2 [i]].insert (__par2 [(i + 1) % len]) ;
+00055     _map [__par1 [i]].insert (__par1 [(i - 1 + len) % len]) ;
+00056     _map [__par2 [i]].insert (__par2 [(i - 1 + len) % len]) ;
+00057   }
+00058   
+00059   visited.clear () ;
+00060   visited.resize (len, false) ;
+00061 }
+00062 
+00063 void EdgeXover :: remove_entry (unsigned __vertex, std :: vector <std :: set <unsigned> > & __map) {
+00064   
+00065   std :: set <unsigned> & neigh = __map [__vertex] ;
+00066 
+00067   for (std :: set <unsigned> :: iterator it = neigh.begin () ;
+00068        it != neigh.end () ;
+00069        it ++)
+00070     __map [* it].erase (__vertex) ; 
+00071       
+00072 }
+00073 
+00074 void EdgeXover :: add_vertex (unsigned __vertex, Route & __child) {
+00075   
+00076   visited [__vertex] = true ;
+00077   __child.push_back (__vertex) ;    
+00078   remove_entry (__vertex, _map) ; /* Removing entries */    
+00079 }
+00080 
+00081 void EdgeXover :: cross (const Route & __par1, const Route & __par2, Route & __child) {
+00082   
+00083   build_map (__par1, __par2) ;
+00084   
+00085   unsigned len = __par1.size () ;
+00086  
+00087   /* Go ! */
+00088   __child.clear () ;
+00089   
+00090   unsigned cur_vertex = rng.random (len) ;
+00091   
+00092   add_vertex (cur_vertex, __child) ;
+00093 
+00094   for (unsigned i = 1 ; i < len ; i ++) {
+00095     
+00096     unsigned len_min_entry = MAXINT ;
+00097     
+00098     std :: set <unsigned> & neigh = _map [cur_vertex] ;
+00099     
+00100     for (std :: set <unsigned> :: iterator it = neigh.begin () ;
+00101          it != neigh.end () ;
+00102          it ++) {      
+00103       unsigned l = _map [* it].size () ;
+00104       if (len_min_entry > l)
+00105         len_min_entry = l ;
+00106     }
+00107     
+00108     std :: vector <unsigned> cand ; /* Candidates */
+00109     
+00110     for (std :: set <unsigned> :: iterator it = neigh.begin () ;
+00111          it != neigh.end () ;
+00112          it ++) {      
+00113       unsigned l = _map [* it].size () ;
+00114       if (len_min_entry == l)
+00115         cand.push_back (* it) ;
+00116     }
+00117        
+00118     if (! cand.size ()) {
+00119       
+00120       /* Oh no ! Implicit mutation */      
+00121       for (unsigned j = 0 ; j < len ; j ++)
+00122         if (! visited [j])
+00123           cand.push_back (j) ;
+00124     }
+00125 
+00126     cur_vertex = cand [rng.random (cand.size ())] ;
+00127     
+00128     add_vertex (cur_vertex, __child) ;
+00129   } 
+00130 }
+00131 
+00132 bool EdgeXover :: operator () (Route & __route1, Route & __route2) {
+00133   
+00134   // Init. copy
+00135   Route par [2] ;
+00136   par [0] = __route1 ;
+00137   par [1] = __route2 ;
+00138   
+00139   cross (par [0], par [1], __route1) ;
+00140   cross (par [1], par [0], __route2) ;
+00141   
+00142   __route1.invalidate () ;
+00143   __route2.invalidate () ;
+00144 
+00145   return true ;
+00146 }
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/edge__xover_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/edge__xover_8h-source.html new file mode 100644 index 000000000..97da77c21 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/edge__xover_8h-source.html @@ -0,0 +1,99 @@ + + +ParadisEO-PEOMovingObjects: edge_xover.h Source File + + + + +
+
+

edge_xover.h

00001 /* 
+00002 * <edge_xover.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef edge_xover_h
+00038 #define edge_xover_h
+00039 
+00040 #include <vector>
+00041 #include <set>
+00042 
+00043 #include <eoOp.h>
+00044 
+00045 #include "route.h"
+00046 
+00048 class EdgeXover : public eoQuadOp <Route> {
+00049   
+00050 public :
+00051   
+00052   bool operator () (Route & __route1, Route & __route2) ;
+00053 
+00054 private :
+00055   
+00056   void cross (const Route & __par1, const Route & __par2, Route & __child) ; /* Binary */
+00057 
+00058   void remove_entry (unsigned __vertex, std :: vector <std :: set <unsigned> > & __map) ;
+00059   /* Updating the map of entries */
+00060 
+00061   void build_map (const Route & __par1, const Route & __par2) ;
+00062 
+00063   void add_vertex (unsigned __vertex, Route & __child) ;
+00064 
+00065   std :: vector <std :: set <unsigned> > _map ; /* The handled map */
+00066 
+00067   std :: vector <bool> visited ; /* Vertices that are already visited */
+00068 
+00069 } ;
+00070 
+00071 #endif
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/eoPop__comm_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/eoPop__comm_8h-source.html new file mode 100644 index 000000000..967a4a442 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/eoPop__comm_8h-source.html @@ -0,0 +1,89 @@ + + +ParadisEO-PEOMovingObjects: eoPop_comm.h Source File + + + + +
+
+

eoPop_comm.h

00001 /* 
+00002 * <eoPop_comm.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __eoPop_comm_h
+00038 #define __eoPop_comm_h
+00039 
+00040 #include <eoPop.h>
+00041 
+00042 #include "messaging.h"
+00043 
+00044 template <class EOT> void pack (const eoPop <EOT> & __pop) {
+00045 
+00046   pack ((unsigned) __pop.size ());
+00047   for (unsigned i = 0; i < __pop.size (); i ++)
+00048     pack (__pop [i]);
+00049 }
+00050 
+00051 template <class EOT> void unpack (eoPop <EOT> & __pop) {
+00052 
+00053   unsigned n;
+00054   
+00055   unpack (n);
+00056   __pop.resize (n);
+00057   for (unsigned i = 0; i < n; i ++)
+00058     unpack (__pop [i]);
+00059 }
+00060 #endif
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/eoVector__comm_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/eoVector__comm_8h-source.html new file mode 100644 index 000000000..d3bc66666 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/eoVector__comm_8h-source.html @@ -0,0 +1,95 @@ + + +ParadisEO-PEOMovingObjects: eoVector_comm.h Source File + + + + +
+
+

eoVector_comm.h

00001 /* 
+00002 * <eoVector_comm.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __eoVector_comm_h
+00038 #define __eoVector_comm_h
+00039 
+00040 #include <eoVector.h>
+00041 
+00042 #include "messaging.h"
+00043 
+00044 template <class F, class T> void pack (const eoVector <F, T> & __v) {
+00045 
+00046   pack (__v.fitness ()) ;
+00047   unsigned len = __v.size ();
+00048   pack (len);
+00049   for (unsigned i = 0 ; i < len; i ++)
+00050     pack (__v [i]);  
+00051 }
+00052 
+00053 template <class F, class T> void unpack (eoVector <F, T> & __v) {
+00054 
+00055   F fit; 
+00056   unpack (fit);
+00057   __v.fitness (fit);
+00058 
+00059   unsigned len;
+00060   unpack (len);
+00061   __v.resize (len);
+00062   for (unsigned i = 0 ; i < len; i ++)
+00063     unpack (__v [i]);
+00064 }
+00065 
+00066 #endif
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/exampleA_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/exampleA_8cpp-source.html new file mode 100644 index 000000000..7e60ddf3b --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/exampleA_8cpp-source.html @@ -0,0 +1,135 @@ + + +ParadisEO-PEOMovingObjects: exampleA.cpp Source File + + + + +
+
+

exampleA.cpp

00001 /* 
+00002 * <exampleA.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 // (c) OPAC Team, LIFL, July 2007
+00037 //
+00038 // Contact: paradiseo-help@lists.gforge.inria.fr
+00039 
+00040 #include "param.h"
+00041 #include "route_init.h"
+00042 #include "route_eval.h"
+00043 
+00044 #include "order_xover.h"
+00045 #include "edge_xover.h"
+00046 #include "partial_mapped_xover.h"
+00047 #include "city_swap.h"
+00048 #include "part_route_eval.h"
+00049 #include "merge_route_eval.h"
+00050 #include "two_opt_init.h"
+00051 #include "two_opt_next.h"
+00052 #include "two_opt_incr_eval.h"
+00053 
+00054 #include <peo>
+00055 
+00056 #define POP_SIZE 10
+00057 #define NUM_GEN 10
+00058 #define CROSS_RATE 1.0
+00059 #define MUT_RATE 0.01
+00060 
+00061 
+00062 int main (int __argc, char * * __argv) {
+00063 
+00064   peo :: init (__argc, __argv);
+00065 
+00066   
+00067   loadParameters (__argc, __argv); /* Processing some parameters relative to the tackled
+00068                                       problem (TSP) */
+00069 
+00070   RouteInit route_init; /* It builds random routes */  
+00071   RouteEval full_eval; /* Full route evaluator */
+00072 
+00073   
+00074   OrderXover order_cross; /* Recombination */
+00075   PartialMappedXover pm_cross;
+00076   EdgeXover edge_cross;
+00077   CitySwap city_swap_mut;  /* Mutation */
+00078 
+00079 
+00081   TwoOptInit pmx_two_opt_init;
+00082   TwoOptNext pmx_two_opt_next;
+00083   TwoOptIncrEval pmx_two_opt_incr_eval;
+00084   moBestImprSelect <TwoOpt> pmx_two_opt_move_select;
+00085   moHC <TwoOpt> hc (pmx_two_opt_init, pmx_two_opt_next, pmx_two_opt_incr_eval, pmx_two_opt_move_select, full_eval);
+00086 
+00088   eoPop <Route> ox_pop (POP_SIZE, route_init);  /* Population */
+00089   
+00090   eoGenContinue <Route> ox_cont (NUM_GEN); /* A fixed number of iterations */  
+00091   eoCheckPoint <Route> ox_checkpoint (ox_cont); /* Checkpoint */
+00092   peoSeqPopEval <Route> ox_pop_eval (full_eval);  
+00093   eoStochTournamentSelect <Route> ox_select_one;
+00094   eoSelectNumber <Route> ox_select (ox_select_one, POP_SIZE);
+00095   eoSGATransform <Route> ox_transform (order_cross, CROSS_RATE, city_swap_mut, MUT_RATE);
+00096   peoSeqTransform <Route> ox_para_transform (ox_transform);    
+00097   eoEPReplacement <Route> ox_replace (2);
+00098 
+00099   peoEA <Route> ox_ea (ox_checkpoint, ox_pop_eval, ox_select, ox_para_transform, ox_replace);
+00100   
+00101   ox_ea (ox_pop);   /* Application to the given population */    
+00102     
+00103   peo :: run ();
+00104   peo :: finalize (); /* Termination */
+00105 
+00106   
+00107   return 0;
+00108 }
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/exampleB_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/exampleB_8cpp-source.html new file mode 100644 index 000000000..8c3f16b32 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/exampleB_8cpp-source.html @@ -0,0 +1,141 @@ + + +ParadisEO-PEOMovingObjects: exampleB.cpp Source File + + + + +
+
+

exampleB.cpp

00001 /* 
+00002 * <exampleB.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 // (c) OPAC Team, LIFL, July 2007
+00037 //
+00038 // Contact: paradiseo-help@lists.gforge.inria.fr
+00039 
+00040 #include "param.h"
+00041 #include "route_init.h"
+00042 #include "route_eval.h"
+00043 
+00044 #include "order_xover.h"
+00045 #include "edge_xover.h"
+00046 #include "partial_mapped_xover.h"
+00047 #include "city_swap.h"
+00048 #include "part_route_eval.h"
+00049 #include "merge_route_eval.h"
+00050 #include "two_opt_init.h"
+00051 #include "two_opt_next.h"
+00052 #include "two_opt_incr_eval.h"
+00053 
+00054 #include <peo>
+00055 
+00056 #define POP_SIZE 10
+00057 #define NUM_GEN 10
+00058 #define CROSS_RATE 1.0
+00059 #define MUT_RATE 0.01
+00060 
+00061 
+00062 int main (int __argc, char * * __argv) {
+00063 
+00064   peo :: init (__argc, __argv);
+00065 
+00066   
+00067   loadParameters (__argc, __argv); /* Processing some parameters relative to the tackled
+00068                                       problem (TSP) */
+00069 
+00070   RouteInit route_init; /* Its builds random routes */  
+00071   RouteEval full_eval; /* Full route evaluator */
+00072 
+00073   
+00074   OrderXover order_cross; /* Recombination */
+00075   PartialMappedXover pm_cross;
+00076   EdgeXover edge_cross;
+00077   CitySwap city_swap_mut;  /* Mutation */
+00078 
+00079 
+00081   TwoOptInit pmx_two_opt_init;
+00082   TwoOptNext pmx_two_opt_next;
+00083   TwoOptIncrEval pmx_two_opt_incr_eval;
+00084   moBestImprSelect <TwoOpt> pmx_two_opt_move_select;
+00085   moHC <TwoOpt> hc (pmx_two_opt_init, pmx_two_opt_next, pmx_two_opt_incr_eval, pmx_two_opt_move_select, full_eval);
+00086 
+00088   eoPop <Route> ox_pop (POP_SIZE, route_init);  /* Population */
+00089   
+00090   eoGenContinue <Route> ox_cont (NUM_GEN); /* A fixed number of iterations */  
+00091   eoCheckPoint <Route> ox_checkpoint (ox_cont); /* Checkpoint */
+00092   peoSeqPopEval <Route> ox_pop_eval (full_eval);  
+00093   eoStochTournamentSelect <Route> ox_select_one;
+00094   eoSelectNumber <Route> ox_select (ox_select_one, POP_SIZE);
+00095   eoSGATransform <Route> ox_transform (order_cross, CROSS_RATE, city_swap_mut, MUT_RATE);
+00096   peoSeqTransform <Route> ox_para_transform (ox_transform);    
+00097   eoEPReplacement <Route> ox_replace (2);
+00098 
+00099   peoEA <Route> ox_ea (ox_checkpoint, ox_pop_eval, ox_select, ox_para_transform, ox_replace);
+00100   
+00101   ox_ea (ox_pop);   /* Application to the given population */
+00102     
+00103     
+00104   peo :: run ();
+00105   peo :: finalize (); /* Termination */
+00106   
+00107 
+00108   std :: cout << ox_pop[ 0 ].fitness();
+00109   hc( ox_pop[ 0 ] );
+00110   std :: cout << " -> " << ox_pop[ 0 ].fitness() << std :: endl;
+00111 
+00112   
+00113   return 0;
+00114 }
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/exampleC_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/exampleC_8cpp-source.html new file mode 100644 index 000000000..89e01e5bb --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/exampleC_8cpp-source.html @@ -0,0 +1,195 @@ + + +ParadisEO-PEOMovingObjects: exampleC.cpp Source File + + + + +
+
+

exampleC.cpp

00001 /* 
+00002 * <exampleC.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 // (c) OPAC Team, LIFL, July 2007
+00037 //
+00038 // Contact: paradiseo-help@lists.gforge.inria.fr
+00039 
+00040 #include "param.h"
+00041 #include "route_init.h"
+00042 #include "route_eval.h"
+00043 
+00044 #include "order_xover.h"
+00045 #include "edge_xover.h"
+00046 #include "partial_mapped_xover.h"
+00047 #include "city_swap.h"
+00048 #include "part_route_eval.h"
+00049 #include "merge_route_eval.h"
+00050 #include "two_opt_init.h"
+00051 #include "two_opt_next.h"
+00052 #include "two_opt_incr_eval.h"
+00053 
+00054 #include <peo>
+00055 
+00056 #define POP_SIZE 10
+00057 #define NUM_GEN 10
+00058 #define CROSS_RATE 1.0
+00059 #define MUT_RATE 0.01
+00060 
+00061 #define MIG_FREQ 1 
+00062 #define MIG_SIZE 5
+00063 
+00064 
+00065 int main (int __argc, char * * __argv) {
+00066 
+00067   peo :: init (__argc, __argv);
+00068 
+00069   
+00070   loadParameters (__argc, __argv); /* Processing some parameters relative to the tackled
+00071                                       problem (TSP) */
+00072 
+00073   /* Migration topology */
+00074   RingTopology topo;
+00075 
+00076 
+00077 
+00078   // The First EA -------------------------------------------------------------------------------------
+00079   
+00080   RouteInit route_init; /* Its builds random routes */
+00081   RouteEval full_eval; /* Full route evaluator */
+00082 
+00083   OrderXover order_cross; /* Recombination */
+00084   CitySwap city_swap_mut;  /* Mutation */
+00085   
+00086   eoPop <Route> ox_pop (POP_SIZE, route_init);  /* Population */
+00087   
+00088   eoGenContinue <Route> ox_cont (NUM_GEN); /* A fixed number of iterations */  
+00089   eoCheckPoint <Route> ox_checkpoint (ox_cont); /* Checkpoint */
+00090   peoSeqPopEval <Route> ox_pop_eval (full_eval);  
+00091   eoStochTournamentSelect <Route> ox_select_one;
+00092   eoSelectNumber <Route> ox_select (ox_select_one, POP_SIZE);
+00093   eoSGATransform <Route> ox_transform (order_cross, CROSS_RATE, city_swap_mut, MUT_RATE);
+00094   peoSeqTransform <Route> ox_seq_transform (ox_transform);    
+00095   eoEPReplacement <Route> ox_replace (2);
+00096 
+00097   
+00098   /* The migration policy */
+00099   eoPeriodicContinue <Route> ox_mig_cont (MIG_FREQ); /* Migration occurs periodically */
+00100   eoStochTournamentSelect <Route> ox_mig_select_one; /* Emigrants are randomly selected */
+00101   eoSelectNumber <Route> ox_mig_select (ox_mig_select_one, MIG_SIZE);
+00102   eoPlusReplacement <Route> ox_mig_replace; /* Immigrants replace the worse individuals */
+00103   
+00104   peoAsyncIslandMig <Route> ox_mig (ox_mig_cont, ox_mig_select, ox_mig_replace, topo, ox_pop, ox_pop);
+00105   ox_checkpoint.add (ox_mig);
+00106   
+00107   peoEA <Route> ox_ea (ox_checkpoint, ox_pop_eval, ox_select, ox_seq_transform, ox_replace);
+00108   ox_mig.setOwner (ox_ea);
+00109   
+00110   ox_ea (ox_pop);   /* Application to the given population */
+00111   // --------------------------------------------------------------------------------------------------
+00112   
+00113 
+00114 
+00115   // The Second EA ------------------------------------------------------------------------------------
+00116 
+00117   RouteInit route_init2; /* Its builds random routes */
+00118   RouteEval full_eval2; /* Full route evaluator */
+00119 
+00120   OrderXover order_cross2; /* Recombination */
+00121   CitySwap city_swap_mut2;  /* Mutation */
+00122 
+00123 
+00124   eoPop <Route> ox_pop2 (POP_SIZE, route_init2);  /* Population */
+00125 
+00126 
+00127   eoGenContinue <Route> ox_cont2 (NUM_GEN); /* A fixed number of iterations */
+00128   eoCheckPoint <Route> ox_checkpoint2 (ox_cont2); /* Checkpoint */
+00129   peoSeqPopEval <Route> ox_pop_eval2 (full_eval2);
+00130   eoStochTournamentSelect <Route> ox_select_one2;
+00131   eoSelectNumber <Route> ox_select2 (ox_select_one2, POP_SIZE);
+00132   eoSGATransform <Route> ox_transform2 (order_cross2, CROSS_RATE, city_swap_mut2, MUT_RATE);
+00133   peoSeqTransform <Route> ox_seq_transform2 (ox_transform2);
+00134   eoEPReplacement <Route> ox_replace2 (2);
+00135 
+00136   /* The migration policy */
+00137   eoPeriodicContinue <Route> ox_mig_cont2 (MIG_FREQ); /* Migration occurs periodically */
+00138   eoStochTournamentSelect <Route> ox_mig_select_one2; /* Emigrants are randomly selected */
+00139   eoSelectNumber <Route> ox_mig_select2 (ox_mig_select_one2, MIG_SIZE);
+00140   eoPlusReplacement <Route> ox_mig_replace2; /* Immigrants replace the worse individuals */
+00141 
+00142   peoAsyncIslandMig <Route> ox_mig2 (ox_mig_cont2, ox_mig_select2, ox_mig_replace2, topo, ox_pop2, ox_pop2);
+00143   ox_checkpoint2.add (ox_mig2);
+00144 
+00145   peoEA <Route> ox_ea2 (ox_checkpoint2, ox_pop_eval2, ox_select2, ox_seq_transform2, ox_replace2);
+00146   ox_mig2.setOwner (ox_ea2);
+00147 
+00148   ox_ea2 (ox_pop2);   /* Application to the given population */
+00149   // --------------------------------------------------------------------------------------------------
+00150 
+00151 
+00152 
+00153   peo :: run ();
+00154   peo :: finalize (); /* Termination */
+00155 
+00156 
+00157   // rank 0 is assigned to the scheduler in the XML mapping file
+00158   if ( getNodeRank() == 1 ) { 
+00159 
+00160     std::cout << "EA[ 0 ] -----> " << ox_pop.best_element().fitness() << std::endl;
+00161     std::cout << "EA[ 1 ] -----> " << ox_pop2.best_element().fitness() << std::endl;
+00162   }
+00163 
+00164 
+00165   return 0;
+00166 }
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/exampleD_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/exampleD_8cpp-source.html new file mode 100644 index 000000000..f124d4a0b --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/exampleD_8cpp-source.html @@ -0,0 +1,138 @@ + + +ParadisEO-PEOMovingObjects: exampleD.cpp Source File + + + + +
+
+

exampleD.cpp

00001 /* 
+00002 * <exampleD.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 // (c) OPAC Team, LIFL, July 2007
+00037 //
+00038 // Contact: paradiseo-help@lists.gforge.inria.fr
+00039 
+00040 #include "param.h"
+00041 #include "route_init.h"
+00042 #include "route_eval.h"
+00043 
+00044 #include "order_xover.h"
+00045 #include "edge_xover.h"
+00046 #include "partial_mapped_xover.h"
+00047 #include "city_swap.h"
+00048 #include "part_route_eval.h"
+00049 #include "merge_route_eval.h"
+00050 #include "two_opt_init.h"
+00051 #include "two_opt_next.h"
+00052 #include "two_opt_incr_eval.h"
+00053 
+00054 #include <peo>
+00055 
+00056 #define POP_SIZE 10
+00057 #define NUM_GEN 10
+00058 #define CROSS_RATE 1.0
+00059 #define MUT_RATE 0.01
+00060 
+00061 
+00062 
+00063 int main (int __argc, char * * __argv) {
+00064 
+00065   peo :: init (__argc, __argv);
+00066 
+00067   
+00068   loadParameters (__argc, __argv); /* Processing some parameters relative to the tackled
+00069                                       problem (TSP) */
+00070 
+00071   RouteInit route_init; /* Its builds random routes */  
+00072   RouteEval full_eval; /* Full route evaluator */
+00073 
+00074   
+00075   OrderXover order_cross; /* Recombination */
+00076   CitySwap city_swap_mut;  /* Mutation */
+00077 
+00078 
+00080   eoPop <Route> ox_pop (POP_SIZE, route_init);  /* Population */
+00081   
+00082   eoGenContinue <Route> ox_cont (NUM_GEN); /* A fixed number of iterations */  
+00083   eoCheckPoint <Route> ox_checkpoint (ox_cont); /* Checkpoint */
+00084   peoSeqPopEval <Route> ox_pop_eval (full_eval);  
+00085   eoStochTournamentSelect <Route> ox_select_one;
+00086   eoSelectNumber <Route> ox_select (ox_select_one, POP_SIZE);
+00087   eoSGATransform <Route> ox_transform (order_cross, CROSS_RATE, city_swap_mut, MUT_RATE);
+00088   peoSeqTransform <Route> ox_para_transform (ox_transform);    
+00089   eoEPReplacement <Route> ox_replace (2);
+00090 
+00091   
+00092   peoEA <Route> ox_ea (ox_checkpoint, ox_pop_eval, ox_select, ox_para_transform, ox_replace);
+00093 
+00094     
+00095   ox_ea (ox_pop);   /* Application to the given population */
+00096     
+00097   peo :: run ();
+00098   peo :: finalize (); /* Termination */
+00099   
+00100  
+00101 
+00102   // rank 0 is assigned to the scheduler in the XML mapping file
+00103   if ( getNodeRank() == 1 ) {
+00104 
+00105     std::cout << "EA[ 0 ] -----> " << ox_pop.best_element().fitness() << std::endl;
+00106   }
+00107  
+00108     
+00109   return 0;
+00110 }
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/exampleE_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/exampleE_8cpp-source.html new file mode 100644 index 000000000..d5604c8aa --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/exampleE_8cpp-source.html @@ -0,0 +1,146 @@ + + +ParadisEO-PEOMovingObjects: exampleE.cpp Source File + + + + +
+
+

exampleE.cpp

00001 /* 
+00002 * <exampleE.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 // (c) OPAC Team, LIFL, July 2007
+00037 //
+00038 // Contact: paradiseo-help@lists.gforge.inria.fr
+00039 
+00040 #include "param.h"
+00041 #include "route_init.h"
+00042 #include "route_eval.h"
+00043 
+00044 #include "order_xover.h"
+00045 #include "edge_xover.h"
+00046 #include "partial_mapped_xover.h"
+00047 #include "city_swap.h"
+00048 #include "part_route_eval.h"
+00049 #include "merge_route_eval.h"
+00050 #include "two_opt_init.h"
+00051 #include "two_opt_next.h"
+00052 #include "two_opt_incr_eval.h"
+00053 
+00054 #include <peo>
+00055 
+00056 #define POP_SIZE 10
+00057 #define NUM_GEN 10
+00058 #define CROSS_RATE 1.0
+00059 #define MUT_RATE 0.01
+00060 
+00061 #define NUM_PART_EVALS 2
+00062 
+00063 
+00064 int main (int __argc, char * * __argv) {
+00065 
+00066   peo :: init (__argc, __argv);
+00067 
+00068   
+00069   loadParameters (__argc, __argv); /* Processing some parameters relative to the tackled
+00070                                       problem (TSP) */
+00071 
+00072   RouteInit route_init; /* Its builds random routes */  
+00073   RouteEval full_eval; /* Full route evaluator */
+00074 
+00075 
+00076   MergeRouteEval merge_eval;
+00077 
+00078   std :: vector <eoEvalFunc <Route> *> part_eval;
+00079   for (unsigned i = 1 ; i <= NUM_PART_EVALS ; i ++)
+00080     part_eval.push_back (new PartRouteEval ((float) (i - 1) / NUM_PART_EVALS, (float) i / NUM_PART_EVALS));
+00081 
+00082   
+00083   OrderXover order_cross; /* Recombination */
+00084   CitySwap city_swap_mut;  /* Mutation */
+00085 
+00086 
+00088   eoPop <Route> ox_pop (POP_SIZE, route_init);  /* Population */
+00089   
+00090   eoGenContinue <Route> ox_cont (NUM_GEN); /* A fixed number of iterations */  
+00091   eoCheckPoint <Route> ox_checkpoint (ox_cont); /* Checkpoint */
+00092   peoParaPopEval <Route> ox_pop_eval (full_eval);  
+00093   eoStochTournamentSelect <Route> ox_select_one;
+00094   eoSelectNumber <Route> ox_select (ox_select_one, POP_SIZE);
+00095   eoSGATransform <Route> ox_transform (order_cross, CROSS_RATE, city_swap_mut, MUT_RATE);
+00096   peoSeqTransform <Route> ox_para_transform (ox_transform);    
+00097   eoEPReplacement <Route> ox_replace (2);
+00098 
+00099   
+00100   peoEA <Route> ox_ea (ox_checkpoint, ox_pop_eval, ox_select, ox_para_transform, ox_replace);
+00101 
+00102     
+00103   ox_ea (ox_pop);   /* Application to the given population */
+00104     
+00105   peo :: run ();
+00106   peo :: finalize (); /* Termination */
+00107   
+00108  
+00109 
+00110   // rank 0 is assigned to the scheduler in the XML mapping file
+00111   if ( getNodeRank() == 1 ) {
+00112 
+00113     std::cout << "EA[ 0 ] -----> " << ox_pop.best_element().fitness() << std::endl;
+00114   }
+00115  
+00116     
+00117   return 0;
+00118 }
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/files.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/files.html new file mode 100644 index 000000000..dcdc3a4dd --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/files.html @@ -0,0 +1,153 @@ + + +ParadisEO-PEOMovingObjects: File Index + + + + +
+
+

ParadisEO-PEOMovingObjects File List

Here is a list of all documented files with brief descriptions: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
city_swap.cpp [code]
city_swap.h [code]
comm.cpp [code]
comm.h [code]
communicable.cpp [code]
communicable.h [code]
coop.cpp [code]
cooperative.h [code]
data.cpp [code]
data.h [code]
display.cpp [code]
display.h [code]
display_best_route.cpp [code]
display_best_route.h [code]
doclsn.h [code]
edge_xover.cpp [code]
edge_xover.h [code]
eoPop_comm.h [code]
eoVector_comm.h [code]
exampleA.cpp [code]
exampleB.cpp [code]
exampleC.cpp [code]
exampleD.cpp [code]
exampleE.cpp [code]
Lesson1/main.cpp [code]
Lesson2/main.cpp [code]
Lesson3/main.cpp [code]
LessonParallelAlgorithm/main.cpp [code]
merge_route_eval.cpp [code]
merge_route_eval.h [code]
mess.cpp [code]
mess.h [code]
messaging.h [code]
mix.h [code]
src/rmc/mpi/node.cpp [code]
tutorial/examples/tsp/node.cpp [code]
src/rmc/mpi/node.h [code]
tutorial/examples/tsp/node.h [code]
opt_route.cpp [code]
opt_route.h [code]
order_xover.cpp [code]
order_xover.h [code]
src/rmc/mpi/param.cpp [code]
tutorial/examples/tsp/param.cpp [code]
src/rmc/mpi/param.h [code]
tutorial/examples/tsp/param.h [code]
part_route_eval.cpp [code]
part_route_eval.h [code]
partial_mapped_xover.cpp [code]
partial_mapped_xover.h [code]
peo.h [code]
peo_debug.cpp [code]
peo_debug.h [code]
peo_fin.cpp [code]
peo_fin.h [code]
peo_init.cpp [code]
peo_init.h [code]
peo_param.cpp [code]
peo_param.h [code]
peo_run.cpp [code]
peo_run.h [code]
peoAggEvalFunc.h [code]
peoAsyncIslandMig.h [code]
peoEA.h [code]
peoNoAggEvalFunc.h [code]
peoParallelAlgorithmWrapper.h [code]
peoParaPopEval.h [code]
peoParaSGATransform.h [code]
peoPopEval.h [code]
peoSeqPopEval.h [code]
peoSeqTransform.h [code]
peoSynchronousMultiStart.h [code]
peoSyncIslandMig.h [code]
peoSyncMultiStart.h [code]
peoTransform.h [code]
reac_thread.cpp [code]
reac_thread.h [code]
README [code]
recv.cpp [code]
recv.h [code]
ring_topo.cpp [code]
ring_topo.h [code]
rmc.cpp [code]
rmc.h [code]
route.cpp [code]
route.h [code]
route_eval.cpp [code]
route_eval.h [code]
route_init.cpp [code]
route_init.h [code]
core/runner.cpp [code]
rmc/mpi/runner.cpp [code]
runner.h [code]
scheduler.cpp [code]
scheduler.h [code]
schema.cpp [code]
schema.h [code]
send.cpp [code]
send.h [code]
core/service.cpp [code]
rmc/mpi/service.cpp [code]
service.h [code]
t-peo.cpp [code]
tags.h [code]
thread.cpp [code]
thread.h [code]
topology.cpp [code]
topology.h [code]
two_opt.cpp [code]
two_opt.h [code]
two_opt_incr_eval.cpp [code]
two_opt_incr_eval.h [code]
two_opt_init.cpp [code]
two_opt_init.h [code]
two_opt_next.cpp [code]
two_opt_next.h [code]
two_opt_rand.cpp [code]
two_opt_rand.h [code]
worker.cpp [code]
worker.h [code]
xml_parser.cpp [code]
xml_parser.h [code]
+
Generated on Mon Oct 8 11:16:50 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/ftv2blank.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/ftv2blank.png new file mode 100644 index 000000000..493c3c0b6 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/ftv2blank.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/ftv2doc.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/ftv2doc.png new file mode 100644 index 000000000..f72999f92 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/ftv2doc.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/ftv2folderclosed.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/ftv2folderclosed.png new file mode 100644 index 000000000..d6d063440 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/ftv2folderclosed.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/ftv2folderopen.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/ftv2folderopen.png new file mode 100644 index 000000000..bbe2c913c Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/ftv2folderopen.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/ftv2lastnode.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/ftv2lastnode.png new file mode 100644 index 000000000..e7b9ba90c Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/ftv2lastnode.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/ftv2link.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/ftv2link.png new file mode 100644 index 000000000..14f3fed00 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/ftv2link.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/ftv2mlastnode.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/ftv2mlastnode.png new file mode 100644 index 000000000..09ceb6adb Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/ftv2mlastnode.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/ftv2mnode.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/ftv2mnode.png new file mode 100644 index 000000000..3254c0511 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/ftv2mnode.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/ftv2node.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/ftv2node.png new file mode 100644 index 000000000..c9f06a57f Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/ftv2node.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/ftv2plastnode.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/ftv2plastnode.png new file mode 100644 index 000000000..0b07e0091 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/ftv2plastnode.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/ftv2pnode.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/ftv2pnode.png new file mode 100644 index 000000000..2001b797b Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/ftv2pnode.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/ftv2vertline.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/ftv2vertline.png new file mode 100644 index 000000000..b330f3a33 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/ftv2vertline.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/functions.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/functions.html new file mode 100644 index 000000000..2173748ff --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/functions.html @@ -0,0 +1,245 @@ + + +ParadisEO-PEOMovingObjects: Class Members + + + + +
+
+ +
+ +
+
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- a -

+

- c -

+

- d -

+

- e -

+

- f -

+

- g -

+

- i -

+

- k -

+

- l -

+

- m -

+

- n -

+

- o -

+

- p -

+

- r -

+

- s -

+

- t -

+

- u -

+

- w -

+

- ~ -

+
Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/functions_func.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/functions_func.html new file mode 100644 index 000000000..988196720 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/functions_func.html @@ -0,0 +1,171 @@ + + +ParadisEO-PEOMovingObjects: Class Members - Functions + + + + +
+
+ +
+ +
+
+ +
+ +

+  +

+

- a -

+

- c -

+

- d -

+

- e -

+

- g -

+

- i -

+

- l -

+

- n -

+

- o -

+

- p -

+

- r -

+

- s -

+

- t -

+

- u -

+

- w -

+

- ~ -

+
Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/functions_vars.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/functions_vars.html new file mode 100644 index 000000000..a99036961 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/functions_vars.html @@ -0,0 +1,161 @@ + + +ParadisEO-PEOMovingObjects: Class Members - Variables + + + + +
+
+ +
+ +
+
+ +
+ +

+  +

+

- a -

+

- c -

+

- d -

+

- e -

+

- f -

+

- i -

+

- k -

+

- l -

+

- m -

+

- n -

+

- o -

+

- p -

+

- r -

+

- s -

+

- t -

+
Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/hierarchy.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/hierarchy.html new file mode 100644 index 000000000..dc125554e --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/hierarchy.html @@ -0,0 +1,129 @@ + + +ParadisEO-PEOMovingObjects: Hierarchical Index + + + + +
+
+ +

ParadisEO-PEOMovingObjects Class Hierarchy

This inheritance list is sorted roughly, but not completely, alphabetically: +
Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/index.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/index.html new file mode 100644 index 000000000..80a524ff7 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/index.html @@ -0,0 +1,8 @@ + + +ParadisEO-PEOMovingObjects + + + + + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/installdox b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/installdox new file mode 100755 index 000000000..294677f26 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/installdox @@ -0,0 +1,117 @@ +#!/usr/bin/perl + +%subst = ( "eo.doxytag", "", "mo.doxytag", ""); +$quiet = 0; + +if (open(F,"search.cfg")) +{ + $_= ; s/[ \t\n]*$//g ; $subst{"_doc"} = $_; + $_= ; s/[ \t\n]*$//g ; $subst{"_cgi"} = $_; +} + +while ( @ARGV ) { + $_ = shift @ARGV; + if ( s/^-// ) { + if ( /^l(.*)/ ) { + $v = ($1 eq "") ? shift @ARGV : $1; + ($v =~ /\/$/) || ($v .= "/"); + $_ = $v; + if ( /(.+)\@(.+)/ ) { + if ( exists $subst{$1} ) { + $subst{$1} = $2; + } else { + print STDERR "Unknown tag file $1 given with option -l\n"; + &usage(); + } + } else { + print STDERR "Argument $_ is invalid for option -l\n"; + &usage(); + } + } + elsif ( /^q/ ) { + $quiet = 1; + } + elsif ( /^\?|^h/ ) { + &usage(); + } + else { + print STDERR "Illegal option -$_\n"; + &usage(); + } + } + else { + push (@files, $_ ); + } +} + +foreach $sub (keys %subst) +{ + if ( $subst{$sub} eq "" ) + { + print STDERR "No substitute given for tag file `$sub'\n"; + &usage(); + } + elsif ( ! $quiet && $sub ne "_doc" && $sub ne "_cgi" ) + { + print "Substituting $subst{$sub} for each occurence of tag file $sub\n"; + } +} + +if ( ! @files ) { + if (opendir(D,".")) { + foreach $file ( readdir(D) ) { + $match = ".html"; + next if ( $file =~ /^\.\.?$/ ); + ($file =~ /$match/) && (push @files, $file); + ($file =~ "tree.js") && (push @files, $file); + } + closedir(D); + } +} + +if ( ! @files ) { + print STDERR "Warning: No input files given and none found!\n"; +} + +foreach $f (@files) +{ + if ( ! $quiet ) { + print "Editing: $f...\n"; + } + $oldf = $f; + $f .= ".bak"; + unless (rename $oldf,$f) { + print STDERR "Error: cannot rename file $oldf\n"; + exit 1; + } + if (open(F,"<$f")) { + unless (open(G,">$oldf")) { + print STDERR "Error: opening file $oldf for writing\n"; + exit 1; + } + if ($oldf ne "tree.js") { + while () { + s/doxygen\=\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\" (href|src)=\"\2/doxygen\=\"$1:$subst{$1}\" \3=\"$subst{$1}/g; + print G "$_"; + } + } + else { + while () { + s/\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\", \"\2/\"$1:$subst{$1}\" ,\"$subst{$1}/g; + print G "$_"; + } + } + } + else { + print STDERR "Warning file $f does not exist\n"; + } + unlink $f; +} + +sub usage { + print STDERR "Usage: installdox [options] [html-file [html-file ...]]\n"; + print STDERR "Options:\n"; + print STDERR " -l tagfile\@linkName tag file + URL or directory \n"; + print STDERR " -q Quiet mode\n\n"; + exit 1; +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/main.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/main.html new file mode 100644 index 000000000..a52382cd1 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/main.html @@ -0,0 +1,111 @@ + + +ParadisEO-PEOMovingObjects: The ParadisEO-PEO Framework + + + + +
+
+

The ParadisEO-PEO Framework

+

+

1.0

+intro

+ParadisEO is a white-box object-oriented framework dedicated to the reusable design of parallel and distributed metaheuristics (PDM). ParadisEO provides a broad range of features including evolutionary algorithms (EA), local searches (LS), the most common parallel and distributed models and hybridization mechanisms, etc. This high content and utility encourages its use at European level. ParadisEO is based on a clear conceptual separation of the solution methods from the problems they are intended to solve. This separation confers to the user a maximum code and design reuse. Furthermore, the fine-grained nature of the classes provided by the framework allow a higher flexibility compared to other frameworks. ParadisEO is one of the rare frameworks that provide the most common parallel and distributed models. Their implementation is portable on distributed-memory machines as well as on shared-memory multiprocessors, as it uses standard libraries such as MPI, PVM and PThreads. The models can be exploited in a transparent way, one has just to instantiate their associated provided classes. Their experimentation on the radio network design real-world application demonstrate their efficiency.

+In practice, combinatorial optimization problems are often NP-hard, CPU time-consuming, and evolve over time. Unlike exact methods, metaheuristics allow to tackle large-size problems instances by delivering satisfactory solutions in a reasonable time. Metaheuristics are general-purpose heuristics that split in two categories: evolutionary algorithms (EA) and local search methods (LS). These two families have complementary characteristics: EA allow a better exploration of the search space, while LS have the power to intensify the search in promising regions. Their hybridization allows to deliver robust and better solutions

+Although serial metaheuristics have a polynomial temporal complexity, they remain unsatisfactory for industrial problems. Parallel and distributed computing is a powerful way to deal with the performance issue of these problems. Numerous parallel and distributed metaheuristics (PDM) and their implementations have been proposed, and are available on theWeb. They can be reused and adapted to his/her own problems. However, the user has to deeply examine the code and rewrite its problem-specific sections. The task is tedious, errorprone, takes along time and makes harder the produced code maintenance. A better way to reuse the code of existing PDM is the reuse through libraries. These are often more reliable as they are more tested and documented. They allow a better maintainability and efficiency. However, libraries do not allow the reuse of design.

+Parallel and distributed metaheuristics

+

+Parallel distributed evolutionary algorithms

+Evolutionary Algorithms (EA) are based on the iterative improvement of a population of solutions. At each step, individuals are selected, paired and recombined in order to generate new solutions that replace other ones, and so on. As the algorithm converges, the population is mainly composed of individuals well adapted to the "environment", for instance the problem. The main features that characterize EA are the way the population is initialized, the selection strategy (deterministic/stochastic) by fostering "good" solutions, the replacement strategy that discards individuals, and the continuation/stopping criterion to decide whether the evolution should go on or not.

+Basically, three major parallel and distributed models for EA can been distinguished: the island (a)synchronous cooperative model, the parallel evaluation of the population, and the distributed evaluation of a single solution.

    +
  • +Island (a)synchronous cooperative model. Different EA are simultaneously deployed to cooperate for computing better and robust solutions. They exchange in an asynchronous way genetic stuff to diversify the search. The objective is to allow to delay the global convergence, especially when theEAare heterogeneous regarding the variation operators. The migration of individuals follows a policy defined by few parameters: the migration decision criterion, the exchange topology, the number of emigrants, the emigrants selection policy, and the replacement/integration policy.

    +

  • +
  • +Parallel evaluation of the population. It is required as it is in general the most timeconsuming. The parallel evaluation follows the centralized model. The farmer applies the following operations: selection, transformation and replacement as they require a global management of the population. At each generation, it distributes the set of new solutions between differentworkers. These evaluate and return back the solutions and their quality values. An efficient execution is often obtained particularly when the evaluation of each solution is costly. The two main advantages of an asynchronous model over the synchronous model are: (1) the fault tolerance of the asynchronous model; (2) the robustness in case the fitness computation can take very different computation times (e.g. for nonlinear numerical optimization). Whereas some time-out detection can be used to address the former issue, the latter one can be partially overcome if the grain is set to very small values, as individuals will be sent out for evaluations upon request of the workers.

    +

  • +
  • +Distributed evaluation of a single solution. The quality of each solution is evaluated in a parallel centralized way. That model is particularly interesting when the evaluation function can be itself parallelized as it is CPU time-consuming and/or IO intensive. In that case, the function can be viewed as an aggregation of a certain number of partial functions. The partial functions could also be identical if for example the problem to deal with is a data mining one. The evaluation is thus data parallel and the accesses to data base are performed in parallel. Furthermore, a reduction operation is performed on the results returned by the partial functions. As a summary, for this model the user has to indicate a set of partial functions and an aggregation operator of these.
  • +
+

+Parallel distributed local searches

+

+Local searches

+All metaheuristics dedicated to the improvement of a single solution are based on the concept of neighborhood. They start from a solution randomly generated or obtained from another optimization algorithm, and update it, step by step, by replacing the current solution by one of its neighboring candidates. Some criterion have been identified to differentiate such searches: the heuristic internal memory, the choice of the initial solution, the candidate solutions generator, and the selection strategy of candidate moves. Three main algorithms of local search stand out: Hill Climbing (HC), Simulated Annealing (SA) and Tabu Search (TS).

+Parallel local searches

+Two parallel distributed models are commonly used in the literature: the parallel distributed exploration of neighboring candidate solutions model, and the multi-start model.
    +
  • +Parallel exploration of neighboring candidates. It is a low-level Farmer-Worker model that does not alter the behavior of the heuristic. A sequential search computes the same results slower.At the beginning of each iteration, the farmer duplicates the current solution between distributed nodes. Each one manages some candidates and the results are returned to the farmer. The model is efficient if the evaluation of a each solution is time-consuming and/or there are a great deal of candidate neighbors to evaluate. This is obviously not applicable to SA since only one candidate is evaluated at each iteration. Likewise, the efficiency of the model for HC is not always guaranteed as the number of neighboring solutions to process before finding one that improves the current objective function may be highly variable.

    +

  • +
  • +Multi-start model. It consists in simultaneously launching several local searches. They may be heterogeneous, but no information is exchanged between them. The resultswould be identical as if the algorithms were sequentially run.Very often deterministic algorithms differ by the supplied initial solution and/or some other parameters. This trivial model is convenient for low-speed networks of workstations.
  • +
+

+Hybridization

+Recently, hybrid metaheuristics have gained a considerable interest. For many practical or academic optimization problems, the best found solutions are obtained by hybrid algorithms. Combinations of different metaheuristics have provided very powerful search methods. Two levels and two modes of hybridization have been distinguished: Low and High levels, and Relay and Cooperative modes. The low-level hybridization addresses the functional composition of a single optimization method. A function of a given metaheuristic is replaced by another metaheuristic. On the contrary, for high-level hybrid algorithms the different metaheuristics are self-containing, meaning no direct relationship to their internal working is considered. On the other hand, relay hybridization means a set of metaheuristics is applied in a pipeline way. The output of a metaheuristic (except the last) is the input of the following one (except the first). Conversely, co-evolutionist hybridization is a cooperative optimization model. Each metaheuristic performs a search in a solution space, and exchange solutions with others.

+Paradiseo goals and architecture

+The "EO" part of ParadisEO means Evolving Objects. EO is a C++ LGPL open source framework and includes a paradigm-free Evolutionary Computation library (EOlib) dedicated to the flexible design of EA through evolving objects superseding the most common dialects (Genetic Algorithms, Evolution Strategies, Evolutionary Programming and Genetic Programming). Furthermore, EO integrates several services including visualization facilities, on-line definition of parameters, application check-pointing, etc. ParadisEO is an extended version of the EO framework. The extensions include local search methods, hybridization mechanisms, parallelism and distribution mechanisms, and other features that are not addressed in this paper such as multi-objective optimization and grid computing. In the next sections, we present the motivations and goals of ParadisEO, its architecture and some of its main implementation details and issues.

+Motivations and goals

+A framework is normally intended to be exploited by as many users as possible. Therefore, its exploitation could be successful only if some important user criteria are satisfied. The following criteria are the major of them and constitute the main objectives of the ParadisEO framework:

+

    +
  • +Maximum design and code reuse. The framework must provide for the user a whole architecture design of his/her solution method. Moreover, the programmer may redo as little code as possible. This objective requires a clear and maximal conceptual separation between the solution methods and the problems to be solved, and thus a deep domain analysis. The user might therefore develop only the minimal problem-specific code.

    +

  • +
  • +Flexibility and adaptability. It must be possible for the user to easily add new features/ metaheuristics or change existing ones without implicating other components. Furthermore, as in practice existing problems evolve and new others arise these have to be tackled by specializing/adapting the framework components.

    +

  • +
  • +Utility. The framework must allow the user to cover a broad range of metaheuristics, problems, parallel distributed models, hybridization mechanisms, etc.

    +

  • +
  • +Transparent and easy access to performance and robustness. As the optimization applications are often time-consuming the performance issue is crucial. Parallelism and distribution are two important ways to achieve high performance execution. In order to facilitate its use it is implemented so that the user can deploy his/her parallel algorithms in a transparent manner. Moreover, the execution of the algorithms must be robust to guarantee the reliability and the quality of the results. The hybridization mechanism allows to obtain robust and better solutions.

    +

  • +
  • +Portability. In order to satisfy a large number of users the framework must support different material architectures and their associated operating systems.
  • +
+

+ParadisEO architecture

+The architecture of ParadisEO is multi-layer and modular allowing to achieve the objectives quoted above. This allows particularly a high flexibility and adaptability, an easier hybridization, and more code and design reuse. The architecture has three layers identifying three major categories of classes: Solvers, Runners and Helpers.
    +
  • +Helpers. Helpers are low-level classes that perform specific actions related to the evolution or search process. They are split in two categories: Evolutionary helpers (EH) and Local search helpers (LSH). EH include mainly the transformation, selection and replacement operations, the evaluation function and the stopping criterion. LSH can be generic such as the neighborhood explorer class, or specific to the local search metaheuristic like the tabu list manager class in the Tabu Search solution method. On the other hand, there are some special helpers dedicated to the management of parallel and distributed models 2 and 3, such as the communicators that embody the communication services.

    +Helpers cooperate between them and interact with the components of the upper layer i.e. the runners. The runners invoke the helpers through function parameters. Indeed, helpers have not their own data, but they work on the internal data of the runners.

    +

  • +
  • +Runners. The Runners layer contains a set of classes that implement the metaheuristics themselves. They perform the run of the metaheuristics from the initial state or population to the final one. One can distinguish the Evolutionary runners (ER) such as genetic algorithms, evolution strategies, etc., and Local search runners (LSR) like tabu search, simulated annealing and hill climbing. Runners invoke the helpers to perform specific actions on their data. For instance, an ER may ask the fitness function evaluation helper to evaluate its population. An LSR asks the movement helper to perform a given movement on the current state. Furthermore, runners can be serial or parallel distributed.

    +

  • +
  • +Solvers. Solvers are devoted to control the evolution process and/or the search. They generate the initial state (solution or population) and define the strategy for combining and sequencing different metaheuristics. Two types of solvers can be distinguished. Single metaheuristic solvers (SMS) and Multiple metaheuristics solvers (MMS). SMSs are dedicated to the execution of only one metaheuristic.MMS are more complex as they control and sequence several metaheuristics that can be heterogeneous. Solvers interact with the user by getting the input data and delivering the output (best solution, statistics, etc).
  • +
+

+According to the generality of their embedded features, the classes of the architecture split in two major categories: Provided classes and Required classes. Provided classes embody the factored out part of the metaheuristics. They are generic, implemented in the framework, and ensure the control at run time. Required classes are those that must be supplied by the user. They encapsulate the problem-specific aspects of the application. These classes are fixed but not implemented in ParadisEO. The programmer has the burden to develop them using the OO specialization mechanism.

+ParadisEO-PEO Tutorials

+The basisc of the ParadisEO framework philosophy are exposed in a few simple tutorials: +All the presented examples have as case study the traveling salesman problem (TSP). Different operators and auxiliary objects were designed, standing as a common shared source code base. While not being part of the ParadisEO-PEO framework, it may represent a startpoint for a better understanding of the presented tutorials.

+LICENCE

+This software is governed by the CeCILL license under French law and abiding by the rules of distribution of free software. You can use, modify and/ or redistribute the software under the terms of the CeCILL license as circulated by CEA, CNRS and INRIA at the following URL "http://www.cecill.info".

+As a counterpart to the access to the source code and rights to copy, modify and redistribute granted by the license, users are provided only with a limited warranty and the software's author, the holder of the economic rights, and the successive licensors have only limited liability.

+In this respect, the user's attention is drawn to the risks associated with loading, using, modifying and/or developing or reproducing the software by the user in light of its specific status of free software, that may mean that it is complicated to manipulate, and that also therefore means that it is reserved for developers and experienced professionals having in-depth computer knowledge. Users are therefore encouraged to load and test the software's suitability as regards their requirements in conditions enabling the security of their systems and/or data to be ensured and, more generally, to use and operate it in the same conditions as regards security. The fact that you are presently reading this means that you have had knowledge of the CeCILL license and that you accept its terms.

+ParadisEO WebSite : http://paradiseo.gforge.inria.fr Contact: paradiseo-help@lists.gforge.inria.fr


Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/merge__route__eval_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/merge__route__eval_8cpp-source.html new file mode 100644 index 000000000..579cec80a --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/merge__route__eval_8cpp-source.html @@ -0,0 +1,74 @@ + + +ParadisEO-PEOMovingObjects: merge_route_eval.cpp Source File + + + + +
+
+

merge_route_eval.cpp

00001 /* 
+00002 * <merge_route_eval.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include "merge_route_eval.h"
+00038 
+00039 void MergeRouteEval :: operator () (Route & __route, const int & __part_fit) {
+00040 
+00041   int len = __route.fitness ();
+00042   len += __part_fit;
+00043   __route.fitness (len);
+00044 }
+00045   
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/merge__route__eval_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/merge__route__eval_8h-source.html new file mode 100644 index 000000000..cdbb4a651 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/merge__route__eval_8h-source.html @@ -0,0 +1,81 @@ + + +ParadisEO-PEOMovingObjects: merge_route_eval.h Source File + + + + +
+
+

merge_route_eval.h

00001 /* 
+00002 * <merge_route_eval.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __merge_route_eval_h
+00038 #define __merge_route_eval_h
+00039 
+00040 #include <peoAggEvalFunc.h>
+00041 
+00042 #include "route.h"
+00043 
+00044 class MergeRouteEval : public peoAggEvalFunc <Route> {
+00045   
+00046 public :
+00047 
+00048   void operator () (Route & __route, const int & __part_fit) ;
+00049   
+00050 };
+00051 
+00052 #endif
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/mess_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/mess_8cpp-source.html new file mode 100644 index 000000000..c7f5446d0 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/mess_8cpp-source.html @@ -0,0 +1,294 @@ + + +ParadisEO-PEOMovingObjects: mess.cpp Source File + + + + +
+
+

mess.cpp

00001 /* 
+00002 * <mess.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include <mpi.h>
+00038 #include <vector>
+00039 
+00040 #include "mess.h"
+00041 #include "../../core/peo_debug.h"
+00042 #include "node.h"
+00043 
+00044 #define MPI_BUF_SIZE 1024*64
+00045         
+00046 static char mpi_buf [MPI_BUF_SIZE];
+00047         
+00048 static int pos_buf ;
+00049 
+00050 static std :: vector <char *> act_buf; /* Active buffers */
+00051 
+00052 static std :: vector <MPI_Request *> act_req; /* Active requests */
+00053 
+00054 void cleanBuffers () {
+00055 
+00056   for (unsigned i = 0; i < act_req.size ();) {
+00057        
+00058     MPI_Status stat ;
+00059     int flag ;
+00060     MPI_Test (act_req [i], & flag, & stat) ;
+00061     if (flag) {
+00062       
+00063       delete act_buf [i] ;
+00064       delete act_req [i] ;
+00065         
+00066       act_buf [i] = act_buf.back () ;
+00067       act_buf.pop_back () ;
+00068       
+00069       act_req [i] = act_req.back () ;
+00070       act_req.pop_back () ;
+00071     }
+00072     else
+00073       i ++;
+00074   } 
+00075 }
+00076 
+00077 void waitBuffers () {
+00078 
+00079   printDebugMessage ("waiting the termination of the asynchronous operations to complete");
+00080 
+00081   for (unsigned i = 0; i < act_req.size (); i ++) {
+00082        
+00083     MPI_Status stat ;
+00084 
+00085     MPI_Wait (act_req [i], & stat) ;
+00086       
+00087     delete act_buf [i] ;
+00088     delete act_req [i] ;
+00089   } 
+00090 }
+00091 
+00092 bool probeMessage (int & __src, int & __tag) {
+00093 
+00094   int flag;
+00095 
+00096   MPI_Status stat;
+00097 
+00098   MPI_Iprobe (MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, & flag, & stat);
+00099 
+00100   __src = stat.MPI_SOURCE;
+00101   __tag = stat.MPI_TAG;
+00102 
+00103   return flag;
+00104 }
+00105 
+00106 void waitMessage () {
+00107 
+00108   MPI_Status stat;  
+00109 
+00110   MPI_Probe (MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, & stat);
+00111 }
+00112 
+00113 void initMessage () {
+00114   
+00115   pos_buf = 0;
+00116 }
+00117 
+00118 void sendMessage (int __to, int __tag) {
+00119 
+00120   cleanBuffers ();  
+00121   act_buf.push_back (new char [pos_buf]);
+00122   act_req.push_back (new MPI_Request);  
+00123   memcpy (act_buf.back (), mpi_buf, pos_buf);  
+00124   MPI_Isend (act_buf.back (), pos_buf, MPI_PACKED, __to, __tag, MPI_COMM_WORLD, act_req.back ()); 
+00125 }
+00126 
+00127 void sendMessageToAll (int __tag) {
+00128 
+00129   for (int i = 0; i < getNumberOfNodes (); i ++)
+00130     sendMessage (i, __tag);
+00131 }
+00132 
+00133 void receiveMessage (int __from, int __tag) {
+00134   
+00135   MPI_Status stat;  
+00136   MPI_Request req;
+00137 
+00138   MPI_Irecv (mpi_buf, MPI_BUF_SIZE, MPI_PACKED, __from, __tag, MPI_COMM_WORLD, & req) ;
+00139   MPI_Wait (& req, & stat) ;
+00140 }
+00141 
+00142 /* Char */
+00143 void pack (const char & __c) {
+00144 
+00145   MPI_Pack ((void *) & __c, 1, MPI_CHAR, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD);
+00146 }
+00147 
+00148 /* Float */
+00149 void pack (const float & __f, int __nitem) {
+00150 
+00151   MPI_Pack ((void *) & __f, __nitem, MPI_FLOAT, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD);
+00152 }
+00153 
+00154 /* Double */
+00155 void pack (const double & __d, int __nitem) {
+00156 
+00157   MPI_Pack ((void *) & __d, __nitem, MPI_DOUBLE, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD);
+00158 }
+00159 
+00160 /* Integer */
+00161 void pack (const int & __i, int __nitem) {
+00162 
+00163   MPI_Pack ((void *) & __i, __nitem, MPI_INT, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD);
+00164 }
+00165 
+00166 /* Unsigned int. */
+00167 void pack (const unsigned int & __ui, int __nitem) {
+00168 
+00169   MPI_Pack ((void *) & __ui, __nitem, MPI_UNSIGNED, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD);
+00170 }
+00171 
+00172 /* Short int. */
+00173 void pack (const short & __sh, int __nitem) {
+00174 
+00175   MPI_Pack ((void *) & __sh, __nitem, MPI_SHORT, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD);
+00176 }
+00177 
+00178 /* Unsigned short */
+00179 void pack (const unsigned short & __ush, int __nitem) {
+00180 
+00181   MPI_Pack ((void *) & __ush, __nitem, MPI_UNSIGNED_SHORT, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD);
+00182 }
+00183 
+00184 /* Long */
+00185 void pack (const long & __l, int __nitem) {
+00186 
+00187   MPI_Pack ((void *) & __l, __nitem, MPI_LONG, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD);
+00188 }
+00189 
+00190 /* Unsigned long */
+00191 void pack (const unsigned long & __ul, int __nitem) {
+00192 
+00193   MPI_Pack ((void *) & __ul, __nitem, MPI_UNSIGNED_LONG, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD);
+00194 }
+00195 
+00196 /* String */
+00197 void pack (const char * __str) {
+00198   
+00199   int len = strlen (__str) + 1;
+00200   MPI_Pack (& len, 1, MPI_INT, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD);
+00201   MPI_Pack ((void *) __str, len, MPI_CHAR, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD);
+00202 }
+00203 
+00204 /* Char */
+00205 void unpack (char & __c) {
+00206 
+00207   MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __c, 1, MPI_CHAR, MPI_COMM_WORLD);
+00208 }
+00209 
+00210 /* Float */
+00211 void unpack (float & __f, int __nitem) {
+00212 
+00213   MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __f, __nitem, MPI_FLOAT, MPI_COMM_WORLD);
+00214 }
+00215 
+00216 /* Double */
+00217 void unpack (double & __d, int __nitem) {
+00218 
+00219   MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __d, __nitem, MPI_DOUBLE, MPI_COMM_WORLD);
+00220 }
+00221 
+00222 /* Integer */
+00223 void unpack (int & __i, int __nitem) {
+00224 
+00225   MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __i, __nitem, MPI_INT, MPI_COMM_WORLD);
+00226 }
+00227 
+00228 /* Unsigned int. */
+00229 void unpack (unsigned int & __ui, int __nitem) {
+00230 
+00231   MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __ui, __nitem, MPI_UNSIGNED, MPI_COMM_WORLD);
+00232 }
+00233 
+00234 /* Short int. */
+00235 void unpack (short & __sh, int __nitem) {
+00236 
+00237   MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __sh, __nitem, MPI_SHORT, MPI_COMM_WORLD);
+00238 }
+00239 
+00240 /* Unsigned short */
+00241 void unpack (unsigned short & __ush, int __nitem) {
+00242 
+00243   MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __ush, __nitem, MPI_UNSIGNED_SHORT, MPI_COMM_WORLD);
+00244 }
+00245 
+00246 /* Long */
+00247 void unpack (long & __l, int __nitem) {
+00248 
+00249   MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __l, __nitem, MPI_LONG, MPI_COMM_WORLD);
+00250 }
+00251 
+00252 /* Unsigned long */
+00253 void unpack (unsigned long & __ul, int __nitem) {
+00254 
+00255   MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __ul, __nitem, MPI_UNSIGNED_LONG, MPI_COMM_WORLD);
+00256 }
+00257 
+00258 /* String */
+00259 void unpack (char * __str) {
+00260 
+00261   int len;
+00262   MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & len, 1, MPI_INT, MPI_COMM_WORLD);
+00263   MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, __str, len, MPI_CHAR, MPI_COMM_WORLD);    
+00264 }
+00265 
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/mess_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/mess_8h-source.html new file mode 100644 index 000000000..533c566e8 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/mess_8h-source.html @@ -0,0 +1,88 @@ + + +ParadisEO-PEOMovingObjects: mess.h Source File + + + + +
+
+

mess.h

00001 /* 
+00002 * <mess.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __mess_rmc_h
+00038 #define __mess_rmc_h
+00039 
+00040 #include "../../core/messaging.h"
+00041 
+00042 extern void initMessage ();
+00043 
+00044 extern void sendMessage (int __to, int __tag);
+00045 
+00046 extern void sendMessageToAll (int __tag);
+00047 
+00048 extern void receiveMessage (int __from, int __tag);
+00049 
+00050 extern void cleanBuffers ();
+00051 
+00052 extern void waitBuffers ();
+00053 
+00054 extern bool probeMessage (int & __src, int & __tag);
+00055 
+00056 extern void waitMessage ();
+00057 
+00058 #endif
+00059 
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/messaging_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/messaging_8h-source.html new file mode 100644 index 000000000..2aef19eda --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/messaging_8h-source.html @@ -0,0 +1,161 @@ + + +ParadisEO-PEOMovingObjects: messaging.h Source File + + + + +
+
+

messaging.h

00001 /* 
+00002 * <messaging.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __mess_h
+00038 #define __mess_h
+00039 
+00040 #include <utility>
+00041 
+00042 /* Char */
+00043 extern void pack (const char & __c); 
+00044 
+00045 /* Float */
+00046 extern void pack (const float & __f, int __nitem = 1); 
+00047 
+00048 /* Double */
+00049 extern void pack (const double & __d, int __nitem = 1); 
+00050 
+00051 /* Integer */
+00052 extern void pack (const int & __i, int __nitem = 1); 
+00053 
+00054 /* Unsigned int. */
+00055 extern void pack (const unsigned int & __ui, int __nitem = 1); 
+00056 
+00057 /* Short int. */
+00058 extern void pack (const short & __sh, int __nitem = 1); 
+00059 
+00060 /* Unsigned short */
+00061 extern void pack (const unsigned short & __ush, int __nitem = 1);
+00062 
+00063 /* Long */
+00064 extern void pack (const long & __l, int __nitem = 1); 
+00065 
+00066 /* Unsigned long */
+00067 extern void pack (const unsigned long & __ul, int __nitem = 1); 
+00068 
+00069 /* String */
+00070 extern void pack (const char * __str); 
+00071 
+00072 /* Pointer */
+00073 template <class T> void pack (const T * __ptr) {
+00074   
+00075   pack ((unsigned long) __ptr); 
+00076 }
+00077 
+00078 /* Pair */
+00079 template <class U, class V> void pack (const std :: pair <U, V> & __pair) {
+00080   
+00081   pack (__pair.first);
+00082   pack (__pair.second);
+00083 }
+00084 
+00085 //
+00086 
+00087 /* Float */
+00088 extern void unpack (char & __c); 
+00089 
+00090 /* Float */
+00091 extern void unpack (float & __f, int __nitem = 1); 
+00092 
+00093 /* Double */
+00094 extern void unpack (double & __d, int __nitem = 1); 
+00095 
+00096 /* Integer */
+00097 extern void unpack (int & __i, int __nitem = 1); 
+00098 
+00099 /* Unsigned int. */
+00100 extern void unpack (unsigned int & __ui, int __nitem = 1); 
+00101 
+00102 /* Short int. */
+00103 extern void unpack (short & __sh, int __nitem = 1); 
+00104 
+00105 /* Unsigned short */
+00106 extern void unpack (unsigned short & __ush, int __nitem = 1);
+00107 
+00108 /* Long */
+00109 extern void unpack (long & __l, int __nitem = 1); 
+00110 
+00111 /* Unsigned long */
+00112 extern void unpack (unsigned long & __ul, int __nitem = 1); 
+00113 
+00114 /* String */
+00115 extern void unpack (char * __str); 
+00116 
+00117 /* Pointer */
+00118 template <class T> void unpack (T * & __ptr) {
+00119   
+00120   unsigned long p;
+00121   unpack (p);
+00122   __ptr = (T *) p;
+00123 }
+00124 
+00125 /* Pair */
+00126 template <class U, class V> void unpack (std :: pair <U, V> & __pair) {
+00127   
+00128   unpack (__pair.first);
+00129   unpack (__pair.second);
+00130 }
+00131 
+00132 #endif
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/mix_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/mix_8h-source.html new file mode 100644 index 000000000..113e73171 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/mix_8h-source.html @@ -0,0 +1,81 @@ + + +ParadisEO-PEOMovingObjects: mix.h Source File + + + + +
+
+

mix.h

00001 /* 
+00002 * <mix.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __mix_h
+00038 #define __mix_h
+00039 
+00040 #include <vector>
+00041 
+00042 #include <utils/eoRNG.h>
+00043 
+00044 template <class T> void mix (std :: vector <T> & __v) {
+00045   
+00046   unsigned len = __v.size () ;
+00047 
+00048   for (unsigned i = 0 ; i < len ; i ++)
+00049     std :: swap (__v [i], __v [rng.random (len)]) ;
+00050 }
+00051 
+00052 #endif
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/namespacemembers.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/namespacemembers.html new file mode 100644 index 000000000..8c60760fa --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/namespacemembers.html @@ -0,0 +1,51 @@ + + +ParadisEO-PEOMovingObjects: Class Members + + + + +
+
+ +
+ +
+Here is a list of all documented namespace members with links to the namespaces they belong to: +

+

+
Generated on Mon Oct 8 11:16:50 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/namespacemembers_func.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/namespacemembers_func.html new file mode 100644 index 000000000..66dbca22c --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/namespacemembers_func.html @@ -0,0 +1,49 @@ + + +ParadisEO-PEOMovingObjects: Class Members + + + + +
+
+ +
+ +
+  +

+

    +
  • finalize() +: peo
  • init() +: peo
  • loadParameters() +: peo
  • run() +: peo
+
Generated on Mon Oct 8 11:16:50 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/namespacemembers_vars.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/namespacemembers_vars.html new file mode 100644 index 000000000..d4063dec2 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/namespacemembers_vars.html @@ -0,0 +1,47 @@ + + +ParadisEO-PEOMovingObjects: Class Members + + + + +
+
+ +
+ +
+  +

+

+
Generated on Mon Oct 8 11:16:50 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/namespacepeo.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/namespacepeo.html new file mode 100644 index 000000000..a694168dc --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/namespacepeo.html @@ -0,0 +1,65 @@ + + +ParadisEO-PEOMovingObjects: peo Namespace Reference + + + + +
+
+ +

peo Namespace Reference

+

+ + + + + + + + + + + + + + + + + + + + +

Functions

+void finalize ()
+void init (int &__argc, char **&__argv)
+void loadParameters (int &__argc, char **&__argv)
+void run ()

Variables

+int * argc
+char *** argv
+int * argc
+char *** argv
+


Generated on Mon Oct 8 11:16:50 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/namespaces.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/namespaces.html new file mode 100644 index 000000000..29be8b450 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/namespaces.html @@ -0,0 +1,37 @@ + + +ParadisEO-PEOMovingObjects: Namespace Index + + + + +
+
+ +

ParadisEO-PEOMovingObjects Namespace List

Here is a list of all documented namespaces with brief descriptions: + +
peo
+
Generated on Mon Oct 8 11:16:50 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/node_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/node_8cpp-source.html new file mode 100644 index 000000000..e67d771dc --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/node_8cpp-source.html @@ -0,0 +1,87 @@ + + +ParadisEO-PEO: node.cpp Source File + + + + +
+
+

node.cpp

00001 // "node.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include <mpi.h>
+00010 #include <vector>
+00011 #include <map>
+00012 #include <string>
+00013 #include <cassert>
+00014 
+00015 static int rk, sz; /* Rank & size */
+00016 
+00017 static std :: map <std :: string, int> name_to_rk;
+00018 
+00019 static std :: vector <std :: string> rk_to_name;
+00020 
+00021 int getNodeRank () {
+00022 
+00023   return rk;
+00024 }
+00025 
+00026 int getNumberOfNodes () {
+00027 
+00028   return sz;
+00029 }
+00030 
+00031 int getRankFromName (const std :: string & __name) {
+00032   
+00033   return atoi (__name.c_str ());  
+00034 }
+00035 
+00036 void initNode (int * __argc, char * * * __argv) {
+00037   
+00038   int provided;
+00039   MPI_Init_thread (__argc,  __argv, MPI_THREAD_FUNNELED, & provided);  
+00040   assert (provided == MPI_THREAD_FUNNELED); /* The MPI implementation must be multi-threaded.
+00041                                                Yet, only one thread performs the comm.
+00042                                                operations */
+00043   MPI_Comm_rank (MPI_COMM_WORLD, & rk);   /* Who ? */
+00044   MPI_Comm_size (MPI_COMM_WORLD, & sz);    /* How many ? */
+00045 
+00046   char names [sz] [MPI_MAX_PROCESSOR_NAME];
+00047   int len;
+00048 
+00049   /* Processor names */ 
+00050   MPI_Get_processor_name (names [0], & len);   /* Me */  
+00051   MPI_Allgather (names, MPI_MAX_PROCESSOR_NAME, MPI_CHAR, names, MPI_MAX_PROCESSOR_NAME, MPI_CHAR, MPI_COMM_WORLD); /* Broadcast */
+00052   
+00053   for (int i = 0; i < sz; i ++) {
+00054     rk_to_name.push_back (names [i]);
+00055     name_to_rk [names [i]] = i;
+00056   }
+00057 }
+00058 
+

Generated on Thu Jul 5 13:43:30 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/node_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/node_8h-source.html new file mode 100644 index 000000000..457f6e4aa --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/node_8h-source.html @@ -0,0 +1,53 @@ + + +ParadisEO-PEO: node.h Source File + + + + +
+
+

node.h

00001 // "node.h"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __node_h
+00010 #define __node_h
+00011 
+00012 #include <string>
+00013 #include <cassert>
+00014 
+00015 extern int getNodeRank (); /* It gives the rank of the calling process */
+00016 
+00017 extern int getNumberOfNodes (); /* It gives the size of the environment (Total number of nodes) */
+00018 
+00019 extern int getRankFromName (const std :: string & __name); /* It gives the rank of the process
+00020                                                               expressed by its name */
+00021 
+00022 extern void initNode (int * __argc, char * * * __argv);
+00023 
+00024 #endif
+

Generated on Thu Jul 5 13:43:30 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/opt__route_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/opt__route_8cpp-source.html new file mode 100644 index 000000000..33a72622f --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/opt__route_8cpp-source.html @@ -0,0 +1,164 @@ + + +ParadisEO-PEOMovingObjects: opt_route.cpp Source File + + + + +
+
+

opt_route.cpp

00001 /* 
+00002 * <opt_route.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include "opt_route.h"
+00038 
+00039 #define MAX_TRASH_LENGTH 1000
+00040 #define MAX_FIELD_LENGTH 1000
+00041 #define MAX_LINE_LENGTH 1000
+00042 
+00043 static void getNextField (FILE * __f, char * __buff) {
+00044   
+00045   char trash [MAX_TRASH_LENGTH];  
+00046 
+00047   fscanf (__f, "%[ \t:\n]", trash); /* Discarding sep. */ 
+00048   fscanf (__f, "%[^:\n]", __buff); /* Reading the field */
+00049   fgetc (__f);
+00050 }
+00051 
+00052 static void getLine (FILE * __f, char * __buff) {
+00053 
+00054   char trash [MAX_TRASH_LENGTH];  
+00055 
+00056   fscanf (__f, "%[ \t:\n]", trash); /* Discarding sep. */ 
+00057   fscanf (__f, "%[^\n]", __buff); /* Reading the line */
+00058 }
+00059 
+00060 static void loadBestRoute (FILE * __f) {
+00061 
+00062   opt_route.clear ();
+00063   
+00064   for (unsigned i = 0; i < numNodes; i ++) {
+00065     Node node;
+00066     fscanf (__f, "%u", & node);
+00067     opt_route.push_back (node - 1);
+00068   }
+00069   int d; /* -1 ! */
+00070   fscanf (__f, "%d", & d);
+00071 }
+00072 
+00073 void loadOptimumRoute (const char * __filename) {
+00074 
+00075   FILE * f = fopen (__filename, "r");
+00076 
+00077   if (f) {
+00078      
+00079      printf ("Loading '%s'.\n", __filename);
+00080      
+00081      char field [MAX_FIELD_LENGTH];
+00082      
+00083      getNextField (f, field); /* Name */
+00084      assert (strstr (field, "NAME"));
+00085      getNextField (f, field); 
+00086      //printf ("NAME: %s.\n", field);
+00087 
+00088           getNextField (f, field); /* Comment */
+00089      assert (strstr (field, "COMMENT"));
+00090      getLine (f, field);
+00091      //     printf ("COMMENT: %s.\n", field);
+00092      
+00093      getNextField (f, field); /* Type */
+00094      assert (strstr (field, "TYPE"));
+00095      getNextField (f, field); 
+00096      //printf ("TYPE: %s.\n", field);
+00097 
+00098      getNextField (f, field); /* Dimension */
+00099      assert (strstr (field, "DIMENSION"));
+00100      getNextField (f, field); 
+00101      //     printf ("DIMENSION: %s.\n", field);
+00102      numNodes = atoi (field);
+00103 
+00104      getNextField (f, field); /* Tour section */
+00105      assert (strstr (field, "TOUR_SECTION"));
+00106      loadBestRoute (f);
+00107      
+00108      getNextField (f, field); /* End of file */
+00109      assert (strstr (field, "EOF"));
+00110      //printf ("EOF.\n");
+00111      
+00112      printf ("The length of the best route is %u.\n", length (opt_route));
+00113   }
+00114    else {
+00115      
+00116      fprintf (stderr, "Can't open '%s'.\n", __filename); 
+00117      exit (1);
+00118    }
+00119 }
+00120 
+00121 void loadOptimumRoute (eoParser & __parser) {
+00122   
+00123   /* Getting the path of the instance */
+00124   
+00125   eoValueParam <std :: string> param ("", "optimumTour", "Optimum tour") ;
+00126   __parser.processParam (param) ;
+00127   if (strlen (param.value ().c_str ()))
+00128     loadOptimumRoute (param.value ().c_str ());
+00129   else
+00130     opt_route.fitness (0);
+00131 }
+00132 
+00133 Route opt_route; /* Optimum route */
+00134 
+00135 
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/opt__route_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/opt__route_8h-source.html new file mode 100644 index 000000000..7fbb643aa --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/opt__route_8h-source.html @@ -0,0 +1,80 @@ + + +ParadisEO-PEOMovingObjects: opt_route.h Source File + + + + +
+
+

opt_route.h

00001 /* 
+00002 * <opt_route.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __opt_route_h
+00038 #define __opt_route_h
+00039 
+00040 #include <cassert>
+00041 #include <utils/eoParser.h>
+00042 
+00043 #include "route.h"
+00044 
+00045 extern void loadOptimumRoute (const char * __filename);
+00046 
+00047 extern void loadOptimumRoute (eoParser & __parser);
+00048 
+00049 extern Route opt_route; /* Optimum route */
+00050 
+00051 #endif
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/order__xover_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/order__xover_8cpp-source.html new file mode 100644 index 000000000..b73368e34 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/order__xover_8cpp-source.html @@ -0,0 +1,121 @@ + + +ParadisEO-PEOMovingObjects: order_xover.cpp Source File + + + + +
+
+

order_xover.cpp

00001 /* 
+00002 * <order_xover.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include <assert.h>
+00038 
+00039 #include <utils/eoRNG.h>
+00040 
+00041 #include "order_xover.h"
+00042 
+00043 void OrderXover :: cross (const Route & __par1, const Route & __par2, Route & __child) {
+00044 
+00045   unsigned cut2 = 1 + rng.random (numNodes) ;    
+00046   unsigned cut1 = rng.random (cut2);
+00047   unsigned l = 0;
+00048 
+00049   /* To store vertices that have already been crossed */
+00050   std :: vector <bool> v (numNodes, false);
+00051 
+00052   /* Copy of the left partial route of the first parent */ 
+00053   for (unsigned i = cut1 ; i < cut2 ; i ++) {
+00054     __child [l ++] = __par1 [i] ; 
+00055     v [__par1 [i]] = true ;
+00056   }
+00057    
+00058   /* Searching the vertex of the second path, that ended the previous first one */
+00059   unsigned from = 0 ;
+00060   for (unsigned i = 0; i < numNodes; i ++)
+00061     if (__par2 [i] == __child [cut2 - 1]) { 
+00062       from = i ;
+00063       break ;
+00064     }
+00065   
+00066   /* Selecting a direction (Left or Right) */
+00067   char direct = rng.flip () ? 1 : -1 ;
+00068       
+00069   for (unsigned i = 0; i < numNodes + 1; i ++) {
+00070     unsigned bidule = (direct * i + from + numNodes) % numNodes;
+00071     if (! v [__par2 [bidule]]) {
+00072       __child [l ++] = __par2 [bidule] ;
+00073       v [__par2 [bidule]] = true ;
+00074     }
+00075   }
+00076 } 
+00077 
+00078 bool OrderXover :: operator () (Route & __route1, Route & __route2) {
+00079   
+00080   // Init. copy
+00081   Route par [2] ;
+00082   par [0] = __route1 ;
+00083   par [1] = __route2 ;
+00084   
+00085   cross (par [0], par [1], __route1) ;
+00086   cross (par [1], par [0], __route2) ;
+00087   
+00088   __route1.invalidate () ;
+00089   __route2.invalidate () ;
+00090 
+00091   return true ;
+00092 }
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/order__xover_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/order__xover_8h-source.html new file mode 100644 index 000000000..93b2d10d1 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/order__xover_8h-source.html @@ -0,0 +1,84 @@ + + +ParadisEO-PEOMovingObjects: order_xover.h Source File + + + + +
+
+

order_xover.h

00001 /* 
+00002 * <order_xover.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef order_xover_h
+00038 #define order_xover_h
+00039 
+00040 #include <eoOp.h>
+00041 
+00042 #include "route.h"
+00043 
+00045 class OrderXover : public eoQuadOp <Route> {
+00046   
+00047 public :
+00048   
+00049   bool operator () (Route & __route1, Route & __route2) ;
+00050 
+00051 private :
+00052   
+00053   void cross (const Route & __par1, const Route & __par2, Route & __child) ;
+00054 } ;
+00055 
+00056 #endif
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/paradiseo_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/paradiseo_8h-source.html new file mode 100644 index 000000000..fb84c6c22 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/paradiseo_8h-source.html @@ -0,0 +1,70 @@ + + +ParadisEO-PEO: paradiseo.h Source File + + + + +
+
+

paradiseo.h

00001 // "paradiseo.h"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __paradiseo_h_
+00010 #define __paradiseo_h_
+00011 
+00012 #include <eo>
+00013 #include <mo>
+00014 
+00015 
+00260 
+00261 
+00262 
+00263 #include "core/peo_init.h"
+00264 #include "core/peo_run.h"
+00265 #include "core/peo_fin.h"
+00266 
+00267 #include "core/eoVector_comm.h"
+00268 
+00269 #include "peoEA.h"
+00270 
+00271 /* Parallel steps of the E.A. */
+00272 #include "peoSeqTransform.h"
+00273 #include "peoParaSGATransform.h"
+00274 #include "peoSeqPopEval.h"
+00275 #include "peoParaPopEval.h"
+00276 
+00277 /* Cooperative island model */
+00278 #include "core/ring_topo.h"
+00279 #include "peoAsyncIslandMig.h"
+00280 #include "peoSyncIslandMig.h"
+00281 
+00282 /* Synchronous multi-start model */
+00283 #include "peoSyncMultiStart.h"
+00284 
+00285 #endif
+

Generated on Thu Jul 5 13:43:30 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/param_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/param_8cpp-source.html new file mode 100644 index 000000000..819d3aaab --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/param_8cpp-source.html @@ -0,0 +1,50 @@ + + +ParadisEO-PEO: param.cpp Source File + + + + +
+
+

param.cpp

00001 // "param.cpp"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #include <utils/eoParser.h>
+00010 
+00011 #include "schema.h"
+00012 
+00013 void loadRMCParameters (int & __argc, char * * & __argv) {
+00014 
+00015   eoParser parser (__argc, __argv);
+00016 
+00017   /* Schema */
+00018   eoValueParam <std :: string> schema_param ("schema.xml", "schema", "?");
+00019   parser.processParam (schema_param);
+00020   loadSchema (schema_param.value ().c_str ());
+00021 }
+

Generated on Thu Jul 5 13:43:30 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/param_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/param_8h-source.html new file mode 100644 index 000000000..39df99494 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/param_8h-source.html @@ -0,0 +1,43 @@ + + +ParadisEO-PEO: param.h Source File + + + + +
+
+

param.h

00001 // "param.h"
+00002 
+00003 // (c) OPAC Team, LIFL, August 2005
+00004 
+00005 /* 
+00006    Contact: paradiseo-help@lists.gforge.inria.fr
+00007 */
+00008 
+00009 #ifndef __rmc_param_h
+00010 #define __rmc_param_h
+00011 
+00012 extern void loadRMCParameters (int & __argc, char * * & __argv);
+00013 
+00014 #endif
+

Generated on Thu Jul 5 13:43:30 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/part__route__eval_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/part__route__eval_8cpp-source.html new file mode 100644 index 000000000..34a6d4e92 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/part__route__eval_8cpp-source.html @@ -0,0 +1,87 @@ + + +ParadisEO-PEOMovingObjects: part_route_eval.cpp Source File + + + + +
+
+

part_route_eval.cpp

00001 /* 
+00002 * <part_route_eval.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include "part_route_eval.h"
+00038 #include "node.h"
+00039 
+00040 PartRouteEval :: PartRouteEval (float __from,
+00041                                 float __to
+00042                                 ) : from (__from),
+00043                                     to (__to) {
+00044   
+00045 }
+00046 
+00047 void PartRouteEval :: operator () (Route & __route) {
+00048   
+00049   
+00050   unsigned len = 0 ;
+00051   
+00052   for (unsigned i = (unsigned) (__route.size () * from) ;
+00053        i < (unsigned) (__route.size () * to) ;
+00054        i ++)
+00055     len += distance (__route [i], __route [(i + 1) % numNodes]) ;
+00056   
+00057   __route.fitness (- (int) len) ;
+00058 }
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/part__route__eval_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/part__route__eval_8h-source.html new file mode 100644 index 000000000..43fc31513 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/part__route__eval_8h-source.html @@ -0,0 +1,88 @@ + + +ParadisEO-PEOMovingObjects: part_route_eval.h Source File + + + + +
+
+

part_route_eval.h

00001 /* 
+00002 * <part_route_eval.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __part_route_eval_h
+00038 #define __part_route_eval_h
+00039 
+00040 #include <eoEvalFunc.h>
+00041 
+00042 #include "route.h"
+00043 
+00045 class PartRouteEval : public eoEvalFunc <Route> {
+00046   
+00047 public :
+00048 
+00050   PartRouteEval (float __from, float __to) ;
+00051     
+00052   void operator () (Route & __route) ;
+00053   
+00054 private :
+00055 
+00056   float from, to ;
+00057 
+00058 } ;
+00059 
+00060 
+00061 #endif
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/partial__mapped__xover_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/partial__mapped__xover_8cpp-source.html new file mode 100644 index 000000000..75f1c08a9 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/partial__mapped__xover_8cpp-source.html @@ -0,0 +1,118 @@ + + +ParadisEO-PEOMovingObjects: partial_mapped_xover.cpp Source File + + + + +
+
+

partial_mapped_xover.cpp

00001 /* 
+00002 * <partial_mapped_xover.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include <assert.h>
+00038 
+00039 #include <utils/eoRNG.h>
+00040 
+00041 #include "partial_mapped_xover.h"
+00042 #include "mix.h"
+00043 
+00044 void PartialMappedXover :: repair (Route & __route, unsigned __cut1, unsigned __cut2) {
+00045   
+00046   unsigned v [__route.size ()] ; // Number of times a cities are visited ...
+00047   
+00048   for (unsigned i = 0 ; i < __route.size () ; i ++)
+00049     v [i] = 0 ;
+00050   
+00051   for (unsigned i = 0 ; i < __route.size () ; i ++)
+00052     v [__route [i]] ++ ;
+00053   
+00054   std :: vector <unsigned> vert ;
+00055 
+00056   for (unsigned i = 0 ; i < __route.size () ; i ++)
+00057     if (! v [i])
+00058       vert.push_back (i) ;
+00059   
+00060   mix (vert) ;
+00061 
+00062   for (unsigned i = 0 ; i < __route.size () ; i ++)
+00063     if (i < __cut1 || i >= __cut2)
+00064       if (v [__route [i]] > 1) {
+00065         __route [i] = vert.back () ;
+00066         vert.pop_back () ;
+00067       }
+00068 }
+00069 
+00070 bool PartialMappedXover :: operator () (Route & __route1, Route & __route2) {
+00071     
+00072   unsigned cut1 = rng.random (__route1.size ()), cut2 = rng.random (__route2.size ()) ;
+00073   
+00074   if (cut2 < cut1)
+00075     std :: swap (cut1, cut2) ;
+00076   
+00077   // Between the cuts
+00078   for (unsigned i = cut1 ; i < cut2 ; i ++)
+00079     std :: swap (__route1 [i], __route2 [i]) ;
+00080   
+00081   // Outside the cuts
+00082   repair (__route1, cut1, cut2) ;
+00083   repair (__route2, cut1, cut2) ;
+00084   
+00085   __route1.invalidate () ;
+00086   __route2.invalidate () ;
+00087 
+00088   return true ;
+00089 }
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/partial__mapped__xover_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/partial__mapped__xover_8h-source.html new file mode 100644 index 000000000..5c5b555d6 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/partial__mapped__xover_8h-source.html @@ -0,0 +1,84 @@ + + +ParadisEO-PEOMovingObjects: partial_mapped_xover.h Source File + + + + +
+
+

partial_mapped_xover.h

00001 /* 
+00002 * <partial_mapped_xover.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef partial_mapped_xover_h
+00038 #define partial_mapped_xover_h
+00039 
+00040 #include <eoOp.h>
+00041 
+00042 #include "route.h"
+00043 
+00045 class PartialMappedXover : public eoQuadOp <Route> {
+00046   
+00047 public :
+00048   
+00049   bool operator () (Route & __route1, Route & __route2) ;
+00050 
+00051 private :
+00052   
+00053   void repair (Route & __route, unsigned __cut1, unsigned __cut2) ;
+00054 } ;
+00055 
+00056 #endif
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peoAggEvalFunc_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peoAggEvalFunc_8h-source.html new file mode 100644 index 000000000..d3c30f0b8 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peoAggEvalFunc_8h-source.html @@ -0,0 +1,77 @@ + + +ParadisEO-PEOMovingObjects: peoAggEvalFunc.h Source File + + + + +
+
+

peoAggEvalFunc.h

00001 /* 
+00002 * <peoAggEvalFunc.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __peoAggEvalFunc_h
+00038 #define __peoAggEvalFunc_h
+00039 
+00040 #include <eoFunctor.h>
+00041 
+00043 
+00053 template< class EOT > class peoAggEvalFunc : public eoBF< EOT&, const typename EOT :: Fitness&, void > {
+00054 
+00055 };
+00056 
+00057 
+00058 #endif
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peoAsyncIslandMig_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peoAsyncIslandMig_8h-source.html new file mode 100644 index 000000000..221bda745 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peoAsyncIslandMig_8h-source.html @@ -0,0 +1,217 @@ + + +ParadisEO-PEOMovingObjects: peoAsyncIslandMig.h Source File + + + + +
+
+

peoAsyncIslandMig.h

00001 /* 
+00002 * <peoAsyncIslandMig.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __peoAsyncIslandMig_h
+00038 #define __peoAsyncIslandMig_h
+00039 
+00040 
+00041 #include <queue>
+00042 
+00043 #include <utils/eoUpdater.h>
+00044 
+00045 #include <eoContinue.h>
+00046 #include <eoSelect.h>
+00047 #include <eoReplacement.h>
+00048 #include <eoPop.h>
+00049 
+00050 #include "core/topology.h"
+00051 #include "core/cooperative.h"
+00052 #include "core/eoPop_comm.h"
+00053 #include "core/peo_debug.h"
+00054 
+00055 
+00057 
+00140 template< class EOT > class peoAsyncIslandMig : public Cooperative, public eoUpdater {
+00141 
+00142 public:
+00143 
+00153         peoAsyncIslandMig( 
+00154                                 eoContinue< EOT >& __cont,
+00155                                 eoSelect< EOT >& __select,
+00156                                 eoReplacement< EOT >& __replace,
+00157                                 Topology& __topology,
+00158                                 eoPop< EOT >& __source,
+00159                                 eoPop< EOT >& __destination 
+00160         );
+00161 
+00166         void operator()();
+00167         
+00169         void pack();
+00171         void unpack();
+00172 
+00173 
+00174 private:
+00175 
+00176         void emigrate();
+00177         void immigrate();
+00178 
+00179 
+00180 private:
+00181 
+00182         eoContinue< EOT >& cont;        // continuator
+00183         eoSelect< EOT >& select;        // the selection strategy
+00184         eoReplacement< EOT >& replace;  // the replacement strategy
+00185         Topology& topology;             // the neighboring topology
+00186         
+00187         // source and destination populations
+00188         eoPop< EOT >& source;
+00189         eoPop< EOT >& destination;
+00190         
+00191         // immigrants & emigrants in the queue
+00192         std :: queue< eoPop< EOT > > imm;
+00193         std :: queue< eoPop< EOT > > em;
+00194         
+00195         std :: queue< Cooperative* > coop_em;
+00196 };
+00197 
+00198 
+00199 template< class EOT > peoAsyncIslandMig< EOT > :: peoAsyncIslandMig(
+00200 
+00201                 eoContinue< EOT >& __cont,
+00202                 eoSelect< EOT >& __select,
+00203                 eoReplacement< EOT >& __replace,
+00204                 Topology& __topology,
+00205                 eoPop< EOT >& __source,
+00206                 eoPop< EOT >& __destination
+00207 
+00208         ) : cont( __cont ), select( __select ), replace( __replace ), topology( __topology ), source( __source ), destination( __destination )
+00209 {
+00210 
+00211         __topology.add( *this );
+00212 }
+00213 
+00214 
+00215 template< class EOT > void peoAsyncIslandMig< EOT > :: pack()
+00216 {
+00217 
+00218         lock(); {
+00219 
+00220 		 :: pack( coop_em.front()->getKey() );
+00221 		 :: pack( em.front() );
+00222                 coop_em.pop();
+00223                 em.pop();
+00224         }
+00225         unlock();
+00226 }
+00227 
+00228 
+00229 template< class EOT > void peoAsyncIslandMig< EOT > :: unpack()
+00230 {
+00231 
+00232         lock(); {
+00233 
+00234                 eoPop< EOT > mig;
+00235 		 :: unpack( mig );
+00236                 imm.push( mig );
+00237         }
+00238         unlock();
+00239 }
+00240 
+00241 
+00242 template< class EOT > void peoAsyncIslandMig< EOT > :: emigrate()
+00243 {
+00244 
+00245         std :: vector< Cooperative* >in, out;
+00246         topology.setNeighbors( this, in, out );
+00247 
+00248         for ( unsigned i = 0; i < out.size(); i++ ) {
+00249         
+00250                 eoPop< EOT > mig;
+00251                 select( source, mig );
+00252                 em.push( mig );
+00253                 coop_em.push( out[i] );
+00254                 send( out[i] );
+00255                 printDebugMessage( "sending some emigrants." );
+00256         }
+00257 }
+00258 
+00259 
+00260 template< class EOT > void peoAsyncIslandMig< EOT > :: immigrate()
+00261 {
+00262 
+00263         lock(); {
+00264 
+00265                 while ( !imm.empty() ) {
+00266 
+00267                         replace( destination, imm.front() );
+00268                         imm.pop();
+00269                         printDebugMessage( "receiving some immigrants." );
+00270                 }
+00271         }
+00272         unlock();
+00273 }
+00274 
+00275 
+00276 template< class EOT > void peoAsyncIslandMig< EOT > :: operator()() {
+00277 
+00278         if ( !cont( source ) ) {
+00279 
+00280                 emigrate();     // sending emigrants
+00281                 immigrate();    // receiving immigrants
+00282         }
+00283 }
+00284 
+00285 
+00286 #endif
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peoEA_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peoEA_8h-source.html new file mode 100644 index 000000000..3913a0cc9 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peoEA_8h-source.html @@ -0,0 +1,156 @@ + + +ParadisEO-PEOMovingObjects: peoEA.h Source File + + + + +
+
+

peoEA.h

00001 /* 
+00002 * <peoEA.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __peoEA_h
+00038 #define __peoEA_h
+00039 
+00040 #include <eoContinue.h>
+00041 #include <eoEvalFunc.h>
+00042 #include <eoSelect.h>
+00043 #include <eoPopEvalFunc.h>
+00044 #include <eoReplacement.h>
+00045 
+00046 #include "peoPopEval.h"
+00047 #include "peoTransform.h"
+00048 #include "core/runner.h"
+00049 #include "core/peo_debug.h"
+00050 
+00052 
+00082 template < class EOT > class peoEA : public Runner {
+00083 
+00084 public:
+00085 
+00097         peoEA( 
+00098                 eoContinue< EOT >& __cont,
+00099                 peoPopEval< EOT >& __pop_eval,
+00100                 eoSelect< EOT >& __select,
+00101                 peoTransform< EOT >& __trans,
+00102                 eoReplacement< EOT >& __replace 
+00103         );
+00104 
+00107         void run();
+00108         
+00112         void operator()( eoPop< EOT >& __pop );
+00113 
+00114 private:
+00115 
+00116 
+00117         eoContinue< EOT >& cont;
+00118         peoPopEval< EOT >& pop_eval;
+00119         eoSelect< EOT >& select;
+00120         peoTransform< EOT >& trans;
+00121         eoReplacement< EOT >& replace;
+00122         eoPop< EOT >* pop;
+00123 };
+00124 
+00125 
+00126 template < class EOT > peoEA< EOT > :: peoEA( 
+00127 
+00128                                 eoContinue< EOT >& __cont, 
+00129                                 peoPopEval< EOT >& __pop_eval, 
+00130                                 eoSelect< EOT >& __select, 
+00131                                 peoTransform< EOT >& __trans, 
+00132                                 eoReplacement< EOT >& __replace
+00133 
+00134                 ) : cont( __cont ), pop_eval( __pop_eval ), select( __select ), trans( __trans ), replace( __replace )
+00135 {
+00136 
+00137         trans.setOwner( *this );
+00138         pop_eval.setOwner( *this );
+00139 }
+00140 
+00141 
+00142 template< class EOT > void peoEA< EOT > :: operator ()( eoPop< EOT >& __pop ) {
+00143 
+00144         pop = &__pop;
+00145 }
+00146 
+00147 
+00148 template< class EOT > void peoEA< EOT > :: run() {
+00149 
+00150         printDebugMessage( "performing the first evaluation of the population." );
+00151         pop_eval( *pop );
+00152         
+00153         do {
+00154 
+00155                 eoPop< EOT > off;
+00156 
+00157                 printDebugMessage( "performing the selection step." );
+00158                 select( *pop, off );
+00159                 trans( off );
+00160 
+00161                 printDebugMessage( "performing the evaluation of the population." );
+00162                 pop_eval( off );
+00163 
+00164                 printDebugMessage( "performing the replacement of the population." );
+00165                 replace( *pop, off );
+00166 
+00167                 printDebugMessage( "deciding of the continuation." );
+00168         
+00169         } while ( cont( *pop ) );
+00170 }
+00171 
+00172 
+00173 #endif
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peoNoAggEvalFunc_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peoNoAggEvalFunc_8h-source.html new file mode 100644 index 000000000..a549ffcc8 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peoNoAggEvalFunc_8h-source.html @@ -0,0 +1,86 @@ + + +ParadisEO-PEOMovingObjects: peoNoAggEvalFunc.h Source File + + + + +
+
+

peoNoAggEvalFunc.h

00001 /* 
+00002 * <peoNoAggEvalFunc.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __peoNoAggEvalFunc_h
+00038 #define __peoNoAggEvalFunc_h
+00039 
+00040 #include "peoAggEvalFunc.h"
+00041 
+00043 
+00047 template< class EOT > class peoNoAggEvalFunc : public peoAggEvalFunc< EOT > {
+00048 
+00049 public :
+00050 
+00052         void operator()( EOT& __sol, const typename EOT :: Fitness& __fit );
+00053 };
+00054 
+00055 
+00056 template< class EOT > void peoNoAggEvalFunc< EOT > :: operator()( EOT& __sol, const typename EOT :: Fitness& __fit ) {
+00057 
+00058         __sol.fitness( __fit );
+00059 }
+00060 
+00061 
+00062 #endif
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peoParaPopEval_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peoParaPopEval_8h-source.html new file mode 100644 index 000000000..48ce8e736 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peoParaPopEval_8h-source.html @@ -0,0 +1,254 @@ + + +ParadisEO-PEOMovingObjects: peoParaPopEval.h Source File + + + + +
+
+

peoParaPopEval.h

00001 /* 
+00002 * <peoParaPopEval.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __peoParaPopEval_h
+00038 #define __peoParaPopEval_h
+00039 
+00040 #include <queue>
+00041 #include <eoEvalFunc.h>
+00042 
+00043 #include "core/messaging.h"
+00044 #include "core/peo_debug.h"
+00045 #include "peoAggEvalFunc.h"
+00046 #include "peoNoAggEvalFunc.h"
+00047 
+00048 
+00050 
+00054 template< class EOT > class peoParaPopEval : public peoPopEval< EOT > {
+00055 
+00056 public:
+00057 
+00058         using peoPopEval< EOT > :: requestResourceRequest;
+00059         using peoPopEval< EOT > :: resume;
+00060         using peoPopEval< EOT > :: stop;
+00061         using peoPopEval< EOT > :: getOwner;
+00062         
+00067         peoParaPopEval( eoEvalFunc< EOT >& __eval_func );
+00068 
+00073         peoParaPopEval( const std :: vector< eoEvalFunc < EOT >* >& __funcs, peoAggEvalFunc< EOT >& __merge_eval );
+00074 
+00078         void operator()( eoPop< EOT >& __pop );
+00079 
+00082         void packData();
+00083         
+00086         void unpackData();
+00087 
+00089         void execute();
+00090         
+00093         void packResult();
+00094         
+00097         void unpackResult();
+00098         
+00101         void notifySendingData();
+00102 
+00105         void notifySendingAllResourceRequests();
+00106 
+00107 private:
+00108 
+00109 
+00110         const std :: vector< eoEvalFunc < EOT >* >& funcs;
+00111         std :: vector< eoEvalFunc < EOT >* > one_func;
+00112         
+00113         peoAggEvalFunc< EOT >& merge_eval;
+00114         peoNoAggEvalFunc< EOT > no_merge_eval;
+00115         
+00116         std :: queue< EOT* >tasks;
+00117         
+00118         std :: map< EOT*, std :: pair< unsigned, unsigned > > progression;
+00119         
+00120         unsigned num_func;
+00121         
+00122         EOT sol;
+00123         
+00124         EOT *ad_sol;
+00125         
+00126         unsigned total;
+00127 };
+00128 
+00129 
+00130 template< class EOT > peoParaPopEval< EOT > :: peoParaPopEval( eoEvalFunc< EOT >& __eval_func ) : 
+00131 
+00132                 funcs( one_func ), merge_eval( no_merge_eval )
+00133 {
+00134 
+00135         one_func.push_back( &__eval_func );
+00136 }
+00137 
+00138 
+00139 template< class EOT > peoParaPopEval< EOT > :: peoParaPopEval( 
+00140 
+00141                                 const std :: vector< eoEvalFunc< EOT >* >& __funcs,
+00142                                 peoAggEvalFunc< EOT >& __merge_eval 
+00143 
+00144                 ) : funcs( __funcs ), merge_eval( __merge_eval )
+00145 {
+00146 
+00147 }
+00148 
+00149 
+00150 template< class EOT > void peoParaPopEval< EOT >::operator()( eoPop< EOT >& __pop ) {
+00151 
+00152         for ( unsigned i = 0; i < __pop.size(); i++ ) {
+00153 
+00154                 __pop[ i ].fitness( typename EOT :: Fitness() );
+00155 
+00156                 progression[ &__pop[ i ] ].first = funcs.size() - 1;
+00157                 progression[ &__pop[ i ] ].second = funcs.size();
+00158                 
+00159                 for ( unsigned j = 0; j < funcs.size(); j++ ) {
+00160                         /* Queuing the 'invalid' solution and its associated owner */
+00161                         tasks.push( &__pop[ i ] );
+00162                 }
+00163         }
+00164         
+00165         total = funcs.size() * __pop.size();
+00166         requestResourceRequest( funcs.size() * __pop.size() );
+00167         stop();
+00168 }
+00169 
+00170 
+00171 template< class EOT > void peoParaPopEval< EOT > :: packData() {
+00172 
+00173         //  printDebugMessage ("debut pakc data");
+00174         pack( progression[ tasks.front() ].first-- );
+00175         
+00176         /* Packing the contents :-) of the solution */
+00177         pack( *tasks.front() );
+00178         
+00179         /* Packing the addresses of both the solution and the owner */
+00180         pack( tasks.front() );
+00181         tasks.pop(  );
+00182 }
+00183 
+00184 
+00185 template< class EOT > void peoParaPopEval< EOT > :: unpackData() {
+00186 
+00187         unpack( num_func );
+00188         /* Unpacking the solution */
+00189         unpack( sol );
+00190         /* Unpacking the @ of that one */
+00191         unpack( ad_sol );
+00192 }
+00193 
+00194 
+00195 template< class EOT > void peoParaPopEval< EOT > :: execute() {
+00196 
+00197         /* Computing the fitness of the solution */
+00198         funcs[ num_func ]->operator()( sol );
+00199 }
+00200 
+00201 
+00202 template< class EOT > void peoParaPopEval< EOT > :: packResult() {
+00203 
+00204         /* Packing the fitness of the solution */
+00205         pack( sol.fitness() );
+00206         /* Packing the @ of the individual */
+00207         pack( ad_sol );
+00208 }
+00209 
+00210 
+00211 template< class EOT > void peoParaPopEval< EOT > :: unpackResult() {
+00212 
+00213         typename EOT :: Fitness fit;
+00214         
+00215         /* Unpacking the computed fitness */
+00216         unpack( fit );
+00217                 
+00218         /* Unpacking the @ of the associated individual */
+00219         unpack( ad_sol );
+00220         
+00221         
+00222         /* Associating the fitness the local solution */
+00223         merge_eval( *ad_sol, fit );
+00224 
+00225         progression[ ad_sol ].second--;
+00226 
+00227         /* Notifying the container of the termination of the evaluation */
+00228         if ( !progression[ ad_sol ].second ) {
+00229 
+00230                 progression.erase( ad_sol );
+00231         }
+00232         
+00233         total--;
+00234         if ( !total ) {
+00235 
+00236                 getOwner()->setActive();
+00237                 resume();
+00238         }
+00239 }
+00240 
+00241 
+00242 template< class EOT > void peoParaPopEval< EOT > :: notifySendingData() {
+00243 
+00244 }
+00245 
+00246 
+00247 template< class EOT > void peoParaPopEval< EOT > :: notifySendingAllResourceRequests() {
+00248 
+00249         getOwner()->setPassive();
+00250 }
+00251 
+00252 
+00253 #endif
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peoParaSGATransform_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peoParaSGATransform_8h-source.html new file mode 100644 index 000000000..22c18d626 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peoParaSGATransform_8h-source.html @@ -0,0 +1,212 @@ + + +ParadisEO-PEOMovingObjects: peoParaSGATransform.h Source File + + + + +
+
+

peoParaSGATransform.h

00001 /* 
+00002 * <peoParaSGATransform.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __peoParaSGATransform_h
+00038 #define __peoParaSGATransform_h
+00039 
+00040 #include "peoTransform.h"
+00041 #include "core/thread.h"
+00042 #include "core/messaging.h"
+00043 #include "core/peo_debug.h"
+00044 
+00045 
+00046 extern int getNodeRank();
+00047 
+00048 
+00049 template< class EOT > class peoParaSGATransform : public peoTransform< EOT > {
+00050 
+00051 public:
+00052 
+00053         using peoTransform< EOT > :: requestResourceRequest;
+00054         using peoTransform< EOT > :: resume;
+00055         using peoTransform< EOT > :: stop;
+00056         using peoTransform< EOT > :: getOwner;
+00057 
+00058         peoParaSGATransform( 
+00059 
+00060                                 eoQuadOp< EOT >& __cross,
+00061                                 double __cross_rate,
+00062                                 eoMonOp< EOT >& __mut, 
+00063                                 double __mut_rate 
+00064         );
+00065 
+00066         void operator()( eoPop< EOT >& __pop );
+00067         
+00068         void packData();
+00069         
+00070         void unpackData();
+00071         
+00072         void execute();
+00073         
+00074         void packResult();
+00075         
+00076         void unpackResult();
+00077         
+00078         void notifySendingData();
+00079         void notifySendingAllResourceRequests();
+00080 
+00081 private:
+00082 
+00083     eoQuadOp< EOT >& cross;
+00084     double cross_rate;
+00085 
+00086     eoMonOp< EOT >& mut;
+00087     double mut_rate;
+00088 
+00089     unsigned idx;
+00090 
+00091     eoPop< EOT >* pop;
+00092 
+00093     EOT father, mother;
+00094 
+00095     unsigned num_term;
+00096 };
+00097 
+00098 template< class EOT > peoParaSGATransform< EOT > :: peoParaSGATransform( 
+00099 
+00100                                 eoQuadOp< EOT >& __cross,
+00101                                 double __cross_rate,
+00102                                 eoMonOp < EOT >& __mut,
+00103                                 double __mut_rate 
+00104 
+00105                 ) : cross( __cross ), cross_rate( __cross_rate ), mut( __mut ), mut_rate( __mut_rate )
+00106 {
+00107 
+00108 }
+00109 
+00110 
+00111 template< class EOT > void peoParaSGATransform< EOT > :: packData() {
+00112 
+00113         pack( idx );
+00114          :: pack( pop->operator[]( idx++ ) );
+00115          :: pack( pop->operator[]( idx++ ) );
+00116 }
+00117 
+00118 
+00119 template< class EOT > void peoParaSGATransform< EOT > :: unpackData() {
+00120 
+00121         unpack( idx );
+00122          :: unpack( father );
+00123          :: unpack( mother );
+00124 }
+00125 
+00126 
+00127 template< class EOT > void peoParaSGATransform< EOT > :: execute() {
+00128 
+00129         if( rng.uniform() < cross_rate ) cross( mother, father );
+00130 
+00131         if( rng.uniform() < mut_rate ) mut( mother );
+00132         if( rng.uniform() < mut_rate ) mut( father );
+00133 }
+00134 
+00135 
+00136 template< class EOT > void peoParaSGATransform< EOT > :: packResult() {
+00137 
+00138         pack( idx );
+00139          :: pack( father );
+00140          :: pack( mother );
+00141 }
+00142 
+00143 
+00144 template< class EOT > void peoParaSGATransform< EOT > :: unpackResult() {
+00145 
+00146         unsigned sidx;
+00147         
+00148         unpack( sidx );
+00149          :: unpack( pop->operator[]( sidx++ ) );
+00150          :: unpack( pop->operator[]( sidx ) );
+00151         num_term += 2;
+00152         
+00153         if( num_term == pop->size() ) {
+00154 
+00155                 getOwner()->setActive();
+00156                 resume();
+00157         }
+00158 }
+00159 
+00160 
+00161 template< class EOT > void peoParaSGATransform< EOT > :: operator()( eoPop < EOT >& __pop ) {
+00162 
+00163         printDebugMessage( "performing the parallel transformation step." );
+00164         pop = &__pop;
+00165         idx = 0;
+00166         num_term = 0;
+00167         requestResourceRequest( __pop.size() / 2 );
+00168         stop();
+00169 }
+00170 
+00171 
+00172 template< class EOT > void peoParaSGATransform< EOT > :: notifySendingData() {
+00173 
+00174 }
+00175 
+00176 
+00177 template< class EOT > void peoParaSGATransform< EOT > :: notifySendingAllResourceRequests() {
+00178 
+00179         getOwner()->setPassive();
+00180 }
+00181 
+00182 
+00183 #endif
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peoParallelAlgorithmWrapper_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peoParallelAlgorithmWrapper_8h-source.html new file mode 100644 index 000000000..4e630d7f9 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peoParallelAlgorithmWrapper_8h-source.html @@ -0,0 +1,142 @@ + + +ParadisEO-PEOMovingObjects: peoParallelAlgorithmWrapper.h Source File + + + + +
+
+

peoParallelAlgorithmWrapper.h

00001 /* 
+00002 * <peoParallelAlgorithmWrapper.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __peoParaAlgorithm_h
+00038 #define __peoParaAlgorithm_h
+00039 
+00040 
+00041 #include "core/runner.h"
+00042 #include "core/peo_debug.h"
+00043 
+00044 
+00045 
+00046 
+00047 class peoParallelAlgorithmWrapper : public Runner {
+00048 
+00049 public:
+00050 
+00051         template< typename AlgorithmType > peoParallelAlgorithmWrapper( AlgorithmType& externalAlgorithm ) 
+00052                 : algorithm( new Algorithm< AlgorithmType, void >( externalAlgorithm ) ) {
+00053 
+00054         }
+00055 
+00056         template< typename AlgorithmType, typename AlgorithmDataType > peoParallelAlgorithmWrapper( AlgorithmType& externalAlgorithm, AlgorithmDataType& externalData ) 
+00057                 : algorithm( new Algorithm< AlgorithmType, AlgorithmDataType >( externalAlgorithm, externalData ) ) {
+00058 
+00059         }
+00060 
+00061         ~peoParallelAlgorithmWrapper() {
+00062 
+00063                 delete algorithm;
+00064         }
+00065 
+00066         void run() { algorithm->operator()(); }
+00067 
+00068 
+00069 private:
+00070 
+00071         struct AbstractAlgorithm {
+00072 
+00073                 // virtual destructor as we will be using inheritance and polymorphism
+00074                 virtual ~AbstractAlgorithm() { }
+00075 
+00076                 // operator to be called for executing the algorithm
+00077                 virtual void operator()() { } 
+00078         };
+00079 
+00080 
+00081         template< typename AlgorithmType, typename AlgorithmDataType > struct Algorithm : public AbstractAlgorithm {
+00082 
+00083                 Algorithm( AlgorithmType& externalAlgorithm, AlgorithmDataType& externalData ) 
+00084                         : algorithm( externalAlgorithm ), algorithmData( externalData ) {
+00085 
+00086                 }
+00087 
+00088                 virtual void operator()() { algorithm( algorithmData ); } 
+00089 
+00090                 AlgorithmType& algorithm;
+00091                 AlgorithmDataType& algorithmData;
+00092         };
+00093 
+00094 
+00095         template< typename AlgorithmType > struct Algorithm< AlgorithmType, void >  : public AbstractAlgorithm {
+00096 
+00097                 Algorithm( AlgorithmType& externalAlgorithm ) : algorithm( externalAlgorithm ) {
+00098 
+00099                 }
+00100 
+00101                 virtual void operator()() { algorithm(); } 
+00102 
+00103                 AlgorithmType& algorithm;
+00104         };
+00105 
+00106 
+00107 private:
+00108 
+00109         AbstractAlgorithm* algorithm;
+00110 };
+00111 
+00112 
+00113 #endif
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peoPopEval_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peoPopEval_8h-source.html new file mode 100644 index 000000000..5a841add6 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peoPopEval_8h-source.html @@ -0,0 +1,80 @@ + + +ParadisEO-PEOMovingObjects: peoPopEval.h Source File + + + + +
+
+

peoPopEval.h

00001 /* 
+00002 * <peoPopEval.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __peoPopEval_h
+00038 #define __peoPopEval_h
+00039 
+00040 #include "core/service.h"
+00041 
+00043 
+00047 template< class EOT > class peoPopEval : public Service {
+00048 
+00049 public:
+00050 
+00052         virtual void operator()( eoPop< EOT >& __pop ) = 0;
+00053 };
+00054 
+00055 
+00056 #endif
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peoSeqPopEval_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peoSeqPopEval_8h-source.html new file mode 100644 index 000000000..02a67d54a --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peoSeqPopEval_8h-source.html @@ -0,0 +1,100 @@ + + +ParadisEO-PEOMovingObjects: peoSeqPopEval.h Source File + + + + +
+
+

peoSeqPopEval.h

00001 /* 
+00002 * <peoSeqPopEval.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __peoSeqPopEval_h
+00038 #define __peoSeqPopEval_h
+00039 
+00040 #include <eoEvalFunc.h>
+00041 
+00042 #include "peoPopEval.h"
+00043 
+00045 
+00049 template< class EOT > class peoSeqPopEval : public peoPopEval< EOT > {
+00050 
+00051 public:
+00052 
+00056         peoSeqPopEval( eoEvalFunc< EOT >& __eval );
+00057 
+00061         void operator()( eoPop< EOT >& __pop );
+00062 
+00063 private:
+00064 
+00065         eoEvalFunc< EOT >& eval;
+00066 };
+00067 
+00068 
+00069 template< class EOT > peoSeqPopEval< EOT > :: peoSeqPopEval( eoEvalFunc< EOT >& __eval ) : eval( __eval ) {
+00070 
+00071 }
+00072 
+00073 
+00074 template< class EOT > void peoSeqPopEval< EOT > :: operator()( eoPop< EOT >& __pop ) {
+00075 
+00076         for ( unsigned i = 0; i < __pop.size(); i++ )
+00077                 eval( __pop[i] );
+00078 }
+00079 
+00080 
+00081 #endif
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peoSeqTransform_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peoSeqTransform_8h-source.html new file mode 100644 index 000000000..ba1ffcf5d --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peoSeqTransform_8h-source.html @@ -0,0 +1,108 @@ + + +ParadisEO-PEOMovingObjects: peoSeqTransform.h Source File + + + + +
+
+

peoSeqTransform.h

00001 /* 
+00002 * <peoSeqTransform.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __peoSeqTransform_h
+00038 #define __peoSeqTransform_h
+00039 
+00040 #include "peoTransform.h"
+00041 
+00042 
+00044 
+00048 template< class EOT > class peoSeqTransform : public peoTransform< EOT > {
+00049 
+00050 public:
+00051 
+00055         peoSeqTransform( eoTransform< EOT >& __trans );
+00056         
+00060         void operator()( eoPop< EOT >& __pop );
+00061         
+00063         virtual void packData() { }
+00064 
+00066         virtual void unpackData() { }
+00067         
+00069         virtual void execute() { }
+00070         
+00072         virtual void packResult() { }
+00073 
+00075         virtual void unpackResult() { }
+00076 
+00077 private:
+00078 
+00079         eoTransform< EOT >& trans;
+00080 };
+00081 
+00082 
+00083 template< class EOT > peoSeqTransform< EOT > :: peoSeqTransform( eoTransform< EOT >& __trans ) : trans( __trans ) {
+00084 
+00085 }
+00086 
+00087 
+00088 template< class EOT > void peoSeqTransform< EOT > :: operator()( eoPop< EOT >& __pop ) {
+00089 
+00090         trans( __pop );
+00091 }
+00092 
+00093 
+00094 #endif
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peoSyncIslandMig_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peoSyncIslandMig_8h-source.html new file mode 100644 index 000000000..fe6024a01 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peoSyncIslandMig_8h-source.html @@ -0,0 +1,245 @@ + + +ParadisEO-PEOMovingObjects: peoSyncIslandMig.h Source File + + + + +
+
+

peoSyncIslandMig.h

00001 /* 
+00002 * <peoSyncIslandMig.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __peoSyncIslandMig_h
+00038 #define __peoSyncIslandMig_h
+00039 
+00040 
+00041 #include <queue>
+00042 #include <cassert>
+00043 
+00044 #include <eoPeriodicContinue.h>
+00045 
+00046 #include <utils/eoUpdater.h>
+00047 
+00048 #include <eoContinue.h>
+00049 #include <eoSelect.h>
+00050 #include <eoReplacement.h>
+00051 #include <eoPop.h>
+00052 
+00053 #include "core/topology.h"
+00054 #include "core/thread.h"
+00055 #include "core/eoPop_comm.h"
+00056 #include "core/peo_debug.h"
+00057 
+00058 
+00060 
+00142 template< class EOT > class peoSyncIslandMig : public Cooperative, public eoUpdater {
+00143 
+00144 public:
+00145 
+00155         peoSyncIslandMig(
+00156                                 unsigned __frequency,
+00157                                 eoSelect< EOT >& __select,
+00158                                 eoReplacement< EOT >& __replace,
+00159                                 Topology& __topology,
+00160                                 eoPop< EOT >& __source,
+00161                                 eoPop< EOT >& __destination
+00162         );
+00163 
+00168         void operator()();
+00169 
+00171         void pack();
+00173         void unpack();
+00174 
+00176         void notifySending();
+00177 
+00178 
+00179 private:
+00180 
+00181         void emigrate();
+00182         void immigrate();
+00183 
+00184 
+00185 private:
+00186 
+00187         eoPeriodicContinue< EOT > cont;
+00188         eoSelect< EOT >& select;        // selection strategy
+00189         eoReplacement< EOT >& replace;  // replacement strategy
+00190         Topology& topology;             // neighboring topology
+00191 
+00192         // source and target populations
+00193         eoPop< EOT >& source;
+00194         eoPop< EOT >& destination;
+00195 
+00196         // immigrants & emigrants in the queue
+00197         std :: queue< eoPop< EOT > > imm;
+00198         std :: queue< eoPop< EOT > > em;
+00199 
+00200         std :: queue< Cooperative* > coop_em;
+00201 
+00202         sem_t sync;
+00203 };
+00204 
+00205 
+00206 template< class EOT > peoSyncIslandMig< EOT > :: peoSyncIslandMig(
+00207 
+00208                 unsigned __frequency,
+00209                 eoSelect< EOT >& __select,
+00210                 eoReplacement< EOT >& __replace,
+00211                 Topology& __topology,
+00212                 eoPop< EOT >& __source,
+00213                 eoPop< EOT >& __destination
+00214 
+00215         ) : cont( __frequency ), select( __select ), replace( __replace ), topology( __topology ), source( __source ), destination( __destination ) 
+00216 {
+00217 
+00218         __topology.add( *this );
+00219         sem_init( &sync, 0, 0 );
+00220 }
+00221 
+00222 
+00223 template< class EOT > void peoSyncIslandMig< EOT > :: pack() {
+00224 
+00225         lock(); {
+00226 
+00227 		 :: pack( coop_em.front()->getKey() );
+00228 		 :: pack( em.front() );
+00229                 coop_em.pop();
+00230                 em.pop();
+00231         }
+00232         unlock();
+00233 }
+00234 
+00235 
+00236 template< class EOT > void peoSyncIslandMig< EOT > :: unpack() {
+00237 
+00238         lock(); {
+00239 
+00240                 eoPop< EOT > mig;
+00241 		 :: unpack( mig );
+00242                 imm.push( mig );
+00243         }
+00244         unlock();
+00245 
+00246         sem_post( &sync );
+00247 }
+00248 
+00249 
+00250 template< class EOT > void peoSyncIslandMig< EOT > :: emigrate() {
+00251 
+00252         std :: vector< Cooperative* > in, out;
+00253         topology.setNeighbors( this, in, out );
+00254         
+00255         for ( unsigned i = 0; i < out.size(); i ++ ) {
+00256 
+00257                 eoPop< EOT > mig;
+00258                 select( source, mig );
+00259                 em.push( mig );
+00260                 coop_em.push( out[ i ] );
+00261                 send( out[ i ] );
+00262                 printDebugMessage( "sending some emigrants." );
+00263         }
+00264 }
+00265 
+00266 
+00267 template< class EOT > void peoSyncIslandMig< EOT > :: immigrate() {
+00268 
+00269         lock(); {
+00270 
+00271                 assert( imm.size() );
+00272                 replace( destination, imm.front() ) ;
+00273                 imm.pop();
+00274                 printDebugMessage( "receiving some immigrants." );
+00275         }
+00276         unlock();
+00277 }
+00278 
+00279 
+00280 template< class EOT > void peoSyncIslandMig< EOT > :: operator()() {
+00281 
+00282         if ( !cont( source ) ) {
+00283         
+00284                 // sending emigrants
+00285                 emigrate();
+00286                 stop();
+00287 
+00288                 // synchronizing
+00289                 sem_wait( &sync );
+00290                 getOwner()->setActive();
+00291 
+00292                 // receiving immigrants
+00293                 immigrate();
+00294         }
+00295 }
+00296 
+00297 
+00298 template< class EOT > void peoSyncIslandMig< EOT > :: notifySending() {
+00299 
+00300         lock(); {
+00301 
+00302                 if ( imm.empty() ) {
+00303 
+00304                         printDebugMessage( "entering pasive mode\n" );
+00305                         getOwner()->setPassive();
+00306                 }
+00307         }
+00308         unlock();
+00309 
+00310         resume();
+00311 }
+00312 
+00313 
+00314 #endif
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peoSyncMultiStart_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peoSyncMultiStart_8h-source.html new file mode 100644 index 000000000..3193f103c --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peoSyncMultiStart_8h-source.html @@ -0,0 +1,209 @@ + + +ParadisEO-PEOMovingObjects: peoSyncMultiStart.h Source File + + + + +
+
+

peoSyncMultiStart.h

00001 /* 
+00002 * <peoSyncMultiStart.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __peoSyncMultiStart_h
+00038 #define __peoSyncMultiStart_h
+00039 
+00040 #include <utils/eoUpdater.h>
+00041 #include <moAlgo.h>
+00042 
+00043 #include <eoSelect.h>
+00044 #include <eoReplacement.h>
+00045 #include <eoContinue.h>
+00046 
+00047 #include "core/service.h"
+00048 #include "core/messaging.h"
+00049 #include "core/peo_debug.h"
+00050 
+00051 
+00052 extern int getNodeRank();
+00053 
+00054 
+00056 
+00064 template< class EOT > class peoSyncMultiStart : public Service, public eoUpdater {
+00065 
+00066 public:
+00067 
+00075         peoSyncMultiStart( 
+00076 
+00077                                 eoContinue< EOT >& __cont,
+00078                                 eoSelect< EOT >& __select,
+00079                                 eoReplacement< EOT >& __replace,
+00080                                 moAlgo< EOT >& __ls, 
+00081                                 eoPop< EOT >& __pop 
+00082                 );
+00083 
+00086         void operator()();
+00087 
+00090         void packData();
+00091 
+00094         void unpackData();
+00095 
+00098         void execute();
+00099 
+00102         void packResult();
+00103 
+00106         void unpackResult();
+00107 
+00110         void notifySendingData();
+00111 
+00114         void notifySendingAllResourceRequests();
+00115 
+00116 private:
+00117 
+00118         eoContinue< EOT >& cont;
+00119         eoSelect< EOT >& select;
+00120         eoReplacement< EOT >& replace;
+00121 
+00122         moAlgo< EOT >& ls;
+00123 
+00124         eoPop< EOT >& pop;
+00125         eoPop< EOT > sel;
+00126         eoPop< EOT > impr_sel;
+00127 
+00128         EOT sol;
+00129         unsigned idx;
+00130         unsigned num_term;
+00131 };
+00132 
+00133 
+00134 template< class EOT > peoSyncMultiStart< EOT > :: peoSyncMultiStart( 
+00135 
+00136                                 eoContinue < EOT >& __cont, 
+00137                                 eoSelect< EOT >& __select,
+00138                                 eoReplacement< EOT >& __replace, 
+00139                                 moAlgo < EOT >& __ls,
+00140                                 eoPop< EOT >& __pop 
+00141 
+00142                 ) : cont( __cont ), select( __select ), replace( __replace ), ls( __ls ), pop( __pop )
+00143 {
+00144 
+00145 }
+00146 
+00147 
+00148 template< class EOT > void peoSyncMultiStart< EOT > :: packData() {
+00149 
+00150          :: pack( sel[ idx++ ] );
+00151 }
+00152 
+00153 
+00154 template< class EOT > void peoSyncMultiStart< EOT > :: unpackData() {
+00155 
+00156         unpack( sol );
+00157 }
+00158 
+00159 
+00160 template< class EOT > void peoSyncMultiStart< EOT > :: execute() {
+00161 
+00162         ls( sol );
+00163 }
+00164 
+00165 
+00166 template< class EOT > void peoSyncMultiStart< EOT > :: packResult() {
+00167 
+00168         pack( sol );
+00169 }
+00170 
+00171 
+00172 template< class EOT > void peoSyncMultiStart< EOT > :: unpackResult() {
+00173 
+00174         unpack( sol );
+00175         impr_sel.push_back( sol );
+00176         num_term++;
+00177 
+00178         if ( num_term == sel.size() ) {
+00179 
+00180                 getOwner()->setActive();
+00181                 replace( pop, impr_sel );
+00182 
+00183                 printDebugMessage( "replacing the improved individuals in the population." );
+00184                 resume();
+00185         }
+00186 }
+00187 
+00188 
+00189 template< class EOT > void peoSyncMultiStart< EOT > :: operator()() {
+00190 
+00191         printDebugMessage( "performing the parallel multi-start hybridization." );
+00192         select( pop, sel );
+00193         impr_sel.clear();
+00194         idx = num_term = 0;
+00195         requestResourceRequest( sel.size() );
+00196         stop();
+00197 }
+00198 
+00199 
+00200 template< class EOT > void peoSyncMultiStart< EOT > :: notifySendingData() {
+00201 
+00202 }
+00203 
+00204 
+00205 template< class EOT > void peoSyncMultiStart< EOT > :: notifySendingAllResourceRequests() {
+00206 
+00207         getOwner()->setPassive();
+00208 }
+00209 
+00210 
+00211 #endif
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peoSynchronousMultiStart_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peoSynchronousMultiStart_8h-source.html new file mode 100644 index 000000000..683518196 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peoSynchronousMultiStart_8h-source.html @@ -0,0 +1,298 @@ + + +ParadisEO-PEOMovingObjects: peoSynchronousMultiStart.h Source File + + + + +
+
+

peoSynchronousMultiStart.h

00001 /* 
+00002 * <peoSynchronousMultiStart.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 #ifndef __peoSynchronousMultiStart_h
+00037 #define __peoSynchronousMultiStart_h
+00038 
+00039 #include <vector>
+00040 
+00041 #include "core/service.h"
+00042 #include "core/messaging.h"
+00043 
+00044 
+00045 template < typename EntityType > class peoSynchronousMultiStart : public Service {
+00046 
+00047 public:
+00048 
+00049         template < typename AlgorithmType > peoSynchronousMultiStart( AlgorithmType& externalAlgorithm ) { 
+00050 
+00051                 singularAlgorithm = new Algorithm< AlgorithmType >( externalAlgorithm );
+00052                 algorithms.push_back( singularAlgorithm );
+00053 
+00054                 aggregationFunction = new NoAggregationFunction();
+00055         }
+00056 
+00057         template < typename AlgorithmType, typename AggregationFunctionType > peoSynchronousMultiStart( std::vector< AlgorithmType* >& externalAlgorithms, AggregationFunctionType& externalAggregationFunction ) {
+00058 
+00059                 for ( unsigned int index = 0; index < externalAlgorithms; index++ ) {
+00060 
+00061                         algorithms.push_back( new Algorithm< AlgorithmType >( *externalAlgorithms[ index ] ) );
+00062                 }
+00063 
+00064                 aggregationFunction = new Algorithm< AggregationFunctionType >( externalAggregationFunction );
+00065         }
+00066 
+00067 
+00068         ~peoSynchronousMultiStart() {
+00069 
+00070                 for ( unsigned int index = 0; index < data.size(); index++ ) delete data[ index ];
+00071                 for ( unsigned int index = 0; index < algorithms.size(); index++ ) delete algorithms[ index ];
+00072 
+00073                 delete aggregationFunction;
+00074         }
+00075 
+00076 
+00077         template < typename Type > void operator()( Type& externalData ) {
+00078 
+00079                 for ( typename Type::iterator externalDataIterator = externalData.begin(); externalDataIterator != externalData.end(); externalDataIterator++ ) {
+00080 
+00081                         data.push_back( new DataType< EntityType >( *externalDataIterator ) );
+00082                 }
+00083                 
+00084                 functionIndex = dataIndex = idx = num_term = 0;
+00085                 requestResourceRequest( data.size() * algorithms.size() );
+00086                 stop();
+00087         }
+00088 
+00089 
+00090         template < typename Type > void operator()( const Type& externalDataBegin, const Type& externalDataEnd ) {
+00091 
+00092                 for ( Type externalDataIterator = externalDataBegin; externalDataIterator != externalDataEnd; externalDataIterator++ ) {
+00093 
+00094                         data.push_back( new DataType< EntityType >( *externalDataIterator ) );
+00095                 }
+00096                 
+00097                 functionIndex = dataIndex = idx = num_term = 0;
+00098                 requestResourceRequest( data.size() * algorithms.size() );
+00099                 stop();
+00100         }
+00101 
+00102 
+00103         void packData();
+00104 
+00105         void unpackData();
+00106 
+00107         void execute();
+00108 
+00109         void packResult();
+00110 
+00111         void unpackResult();
+00112 
+00113         void notifySendingData();
+00114 
+00115         void notifySendingAllResourceRequests();
+00116 
+00117 
+00118 private:
+00119 
+00120         template < typename Type > struct DataType;
+00121 
+00122         struct AbstractDataType {
+00123 
+00124                 virtual ~AbstractDataType() { }
+00125 
+00126                 template < typename Type > operator Type& () {
+00127 
+00128                         return ( dynamic_cast< DataType< Type >& >( *this ) ).data;
+00129                 }
+00130         };
+00131 
+00132         template < typename Type > struct DataType : public AbstractDataType {
+00133 
+00134                 DataType( Type& externalData ) : data( externalData ) { }
+00135 
+00136                 Type& data;
+00137         };
+00138 
+00139         struct AbstractAlgorithm {
+00140 
+00141                 virtual ~AbstractAlgorithm() { }
+00142 
+00143                 virtual void operator()( AbstractDataType& dataTypeInstance ) {}
+00144         };
+00145 
+00146         template < typename AlgorithmType > struct Algorithm : public AbstractAlgorithm {
+00147 
+00148                 Algorithm( AlgorithmType& externalAlgorithm ) : algorithm( externalAlgorithm ) { }
+00149 
+00150                 void operator()( AbstractDataType& dataTypeInstance ) { algorithm( dataTypeInstance ); }
+00151 
+00152                 AlgorithmType& algorithm;
+00153         }; 
+00154 
+00155 
+00156 
+00157         struct AbstractAggregationAlgorithm {
+00158 
+00159                 virtual ~AbstractAggregationAlgorithm() { }
+00160 
+00161                 virtual void operator()( AbstractDataType& dataTypeInstanceA, AbstractDataType& dataTypeInstanceB ) {};
+00162         };
+00163 
+00164         template < typename AggregationAlgorithmType > struct AggregationAlgorithm : public AbstractAggregationAlgorithm {
+00165 
+00166                 AggregationAlgorithm( AggregationAlgorithmType& externalAggregationAlgorithm ) : aggregationAlgorithm( externalAggregationAlgorithm ) { }
+00167 
+00168                 void operator()( AbstractDataType& dataTypeInstanceA, AbstractDataType& dataTypeInstanceB ) {
+00169 
+00170                         aggregationAlgorithm( dataTypeInstanceA, dataTypeInstanceB );
+00171                 }
+00172 
+00173                 AggregationAlgorithmType& aggregationAlgorithm;
+00174         };
+00175 
+00176         struct NoAggregationFunction : public AbstractAggregationAlgorithm {
+00177 
+00178                 void operator()( AbstractDataType& dataTypeInstanceA, AbstractDataType& dataTypeInstanceB ) {
+00179 
+00180                         static_cast< EntityType& >( dataTypeInstanceA ) = static_cast< EntityType& >( dataTypeInstanceB );
+00181                 }
+00182         };
+00183 
+00184 
+00185 
+00186         AbstractAlgorithm* singularAlgorithm;
+00187 
+00188         std::vector< AbstractAlgorithm* > algorithms;
+00189         AbstractAggregationAlgorithm* aggregationFunction;
+00190 
+00191 
+00192         EntityType entityTypeInstance;
+00193         std::vector< AbstractDataType* > data;
+00194 
+00195         unsigned idx;
+00196         unsigned num_term;
+00197         unsigned dataIndex;
+00198         unsigned functionIndex;
+00199 };
+00200 
+00201 
+00202 template < typename EntityType > void peoSynchronousMultiStart< EntityType >::packData() {
+00203 
+00204         ::pack( functionIndex );
+00205         ::pack( idx );
+00206         ::pack( ( EntityType& ) *data[ idx++ ]  );
+00207 
+00208         // done with functionIndex for the entire data set - moving to another
+00209         //  function/algorithm starting all over with the entire data set ( idx is set to 0 )
+00210         if ( idx == data.size() ) {
+00211 
+00212                 ++functionIndex; idx = 0;
+00213         }
+00214 }
+00215 
+00216 template < typename EntityType > void peoSynchronousMultiStart< EntityType >::unpackData() {
+00217 
+00218         ::unpack( functionIndex );
+00219         ::unpack( dataIndex );
+00220         ::unpack( entityTypeInstance );
+00221 }
+00222 
+00223 template < typename EntityType > void peoSynchronousMultiStart< EntityType >::execute() {
+00224 
+00225         // wrapping the unpacked data - the definition of an abstract algorithm imposes
+00226         // that its internal function operator acts only on abstract data types
+00227         AbstractDataType* entityWrapper = new DataType< EntityType >( entityTypeInstance );
+00228         algorithms[ functionIndex ]->operator()( *entityWrapper );
+00229 
+00230         delete entityWrapper;
+00231 }
+00232 
+00233 template < typename EntityType > void peoSynchronousMultiStart< EntityType >::packResult() {
+00234 
+00235         ::pack( dataIndex );
+00236         ::pack( entityTypeInstance );
+00237 }
+00238 
+00239 template < typename EntityType > void peoSynchronousMultiStart< EntityType >::unpackResult() {
+00240 
+00241         ::unpack( dataIndex );
+00242         ::unpack( entityTypeInstance );
+00243 
+00244         // wrapping the unpacked data - the definition of an abstract algorithm imposes
+00245         // that its internal function operator acts only on abstract data types
+00246         AbstractDataType* entityWrapper = new DataType< EntityType >( entityTypeInstance );
+00247         aggregationFunction->operator()( *data[ dataIndex ], *entityWrapper );
+00248         delete entityWrapper;
+00249 
+00250         num_term++;
+00251 
+00252         if ( num_term == data.size() * algorithms.size() ) {
+00253 
+00254                 getOwner()->setActive();
+00255                 resume();
+00256         }
+00257 }
+00258 
+00259 template < typename EntityType > void peoSynchronousMultiStart< EntityType >::notifySendingData() {
+00260 
+00261 }
+00262 
+00263 template < typename EntityType > void peoSynchronousMultiStart< EntityType >::notifySendingAllResourceRequests() {
+00264 
+00265         getOwner()->setPassive();
+00266 }
+00267 
+00268 
+00269 #endif
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peoTransform_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peoTransform_8h-source.html new file mode 100644 index 000000000..e658e6ce8 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peoTransform_8h-source.html @@ -0,0 +1,79 @@ + + +ParadisEO-PEOMovingObjects: peoTransform.h Source File + + + + +
+
+

peoTransform.h

00001 /* 
+00002 * <peoTransform.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __peoTransform_h
+00038 #define __peoTransform_h
+00039 
+00040 #include <eoTransform.h>
+00041 
+00042 #include "core/service.h"
+00043 
+00045 
+00048 template< class EOT > class peoTransform : public Service, public eoTransform< EOT > {
+00049 
+00050 };
+00051 
+00052 
+00053 #endif
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peo_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peo_8h-source.html new file mode 100644 index 000000000..698147329 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peo_8h-source.html @@ -0,0 +1,96 @@ + + +ParadisEO-PEOMovingObjects: peo.h Source File + + + + +
+
+

peo.h

00001 /* 
+00002 * <peo.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __peo_h_
+00038 #define __peo_h_
+00039 
+00040 #include <eo>
+00041 #include <mo>
+00042 
+00043 
+00319 
+00320 #include "core/peo_init.h"
+00321 #include "core/peo_run.h"
+00322 #include "core/peo_fin.h"
+00323 
+00324 #include "core/eoVector_comm.h"
+00325 
+00326 #include "peoEA.h"
+00327 
+00328 /* Parallel steps of the E.A. */
+00329 #include "peoSeqTransform.h"
+00330 #include "peoParaSGATransform.h"
+00331 #include "peoSeqPopEval.h"
+00332 #include "peoParaPopEval.h"
+00333 
+00334 /* Cooperative island model */
+00335 #include "core/ring_topo.h"
+00336 #include "peoAsyncIslandMig.h"
+00337 #include "peoSyncIslandMig.h"
+00338 
+00339 /* Synchronous multi-start model */
+00340 #include "peoSyncMultiStart.h"
+00341 
+00342 #endif
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peo__debug_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peo__debug_8cpp-source.html new file mode 100644 index 000000000..80f5471a8 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peo__debug_8cpp-source.html @@ -0,0 +1,134 @@ + + +ParadisEO-PEOMovingObjects: peo_debug.cpp Source File + + + + +
+
+

peo_debug.cpp

00001 /* 
+00002 * <peo_debug.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include "peo_debug.h"
+00038 
+00039 #include <stdio.h>
+00040 #include <time.h>
+00041 #include <unistd.h>
+00042 #include <string.h>
+00043 #include <sys/types.h>
+00044 #include <sys/stat.h>
+00045 #include <vector>
+00046 
+00047 #include "peo_debug.h"
+00048 
+00049 #define MAX_BUFF_SIZE 1000
+00050 
+00051 #define DEBUG_PATH "./log/"
+00052 
+00053 static bool debug = true;
+00054 
+00055 static char host [MAX_BUFF_SIZE];
+00056 
+00057 std :: vector <FILE *> files;
+00058 
+00059 void setDebugMode (bool __dbg) {
+00060 
+00061   debug = __dbg;
+00062   gethostname (host, MAX_BUFF_SIZE);
+00063 }
+00064 
+00065 extern int getNodeRank ();
+00066 
+00067 void initDebugging () {
+00068   
+00069   mkdir (DEBUG_PATH, S_IRWXU);
+00070   //  files.push_back (stdout);
+00071   char buff [MAX_BUFF_SIZE];
+00072   sprintf (buff, "%s/%d", DEBUG_PATH, getNodeRank ());
+00073   files.push_back (fopen (buff, "w"));
+00074 }
+00075 
+00076 void endDebugging () {
+00077 
+00078   for (unsigned i = 0; i < files.size (); i ++)
+00079     if (files [i] != stdout)
+00080       fclose (files [i]);
+00081 }
+00082 
+00083 void printDebugMessage (const char * __mess) {
+00084 
+00085   if (debug) {
+00086 
+00087     char buff [MAX_BUFF_SIZE];
+00088     time_t t = time (0);
+00089 
+00090     /* Date */
+00091     sprintf (buff, "[%s][%s: ", host, ctime (& t));
+00092     * strchr (buff, '\n') = ']';
+00093     for (unsigned i = 0; i < files.size (); i ++)
+00094       fprintf (files [i], buff);
+00095 
+00096     /* Message */
+00097     sprintf (buff, "%s", __mess);
+00098     
+00099     for (unsigned i = 0; i < files.size (); i ++) {
+00100       fputs (buff, files [i]);
+00101       fputs ("\n", files [i]);
+00102       fflush (files [i]);
+00103     }
+00104   }
+00105 }
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peo__debug_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peo__debug_8h-source.html new file mode 100644 index 000000000..aa8049514 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peo__debug_8h-source.html @@ -0,0 +1,79 @@ + + +ParadisEO-PEOMovingObjects: peo_debug.h Source File + + + + +
+
+

peo_debug.h

00001 /* 
+00002 * <peo_debug.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __peo_debug_h
+00038 #define __peo_debug_h
+00039 
+00040 extern void initDebugging ();
+00041 
+00042 extern void endDebugging ();
+00043 
+00044 extern void setDebugMode (bool __dbg = true); /* (Des)activating the Debugging mode */
+00045 
+00046 extern void printDebugMessage (const char * __mess); /* Print a new message both on the
+00047                                                         standard output and a target
+00048                                                         text-file in a subdirectory) */
+00049 
+00050 #endif
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peo__fin_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peo__fin_8cpp-source.html new file mode 100644 index 000000000..59534a903 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peo__fin_8cpp-source.html @@ -0,0 +1,81 @@ + + +ParadisEO-PEOMovingObjects: peo_fin.cpp Source File + + + + +
+
+

peo_fin.cpp

00001 /* 
+00002 * <peo_fin.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include "peo_fin.h"
+00038 #include "peo_debug.h"
+00039 #include "runner.h"
+00040 #include "rmc.h"
+00041 
+00042 void peo :: finalize () {
+00043 
+00044   printDebugMessage ("waiting for the termination of all threads");
+00045 
+00046   joinRunners ();
+00047 
+00048   finalizeRMC ();
+00049 
+00050   printDebugMessage ("this is the end");
+00051   endDebugging ();
+00052 }
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peo__fin_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peo__fin_8h-source.html new file mode 100644 index 000000000..3b51acf47 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peo__fin_8h-source.html @@ -0,0 +1,74 @@ + + +ParadisEO-PEOMovingObjects: peo_fin.h Source File + + + + +
+
+

peo_fin.h

00001 /* 
+00002 * <peo_fin.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __peo_finalize_h
+00038 #define __peo_finalize_h
+00039 
+00040 namespace peo {
+00041   
+00042   extern void finalize ();
+00043 }
+00044 
+00045 #endif
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peo__init_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peo__init_8cpp-source.html new file mode 100644 index 000000000..aa826f960 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peo__init_8cpp-source.html @@ -0,0 +1,94 @@ + + +ParadisEO-PEOMovingObjects: peo_init.cpp Source File + + + + +
+
+

peo_init.cpp

00001 /* 
+00002 * <peo_init.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include <stdio.h>
+00038 
+00039 #include "peo_init.h"
+00040 #include "peo_param.h"
+00041 #include "peo_debug.h"
+00042 #include "rmc.h"
+00043 
+00044 namespace peo {
+00045 
+00046   int * argc;
+00047   
+00048   char * * * argv;
+00049 
+00050   void init (int & __argc, char * * & __argv) {
+00051 
+00052     argc = & __argc;
+00053     
+00054     argv = & __argv;
+00055     
+00056     /* Initializing the the Resource Management and Communication */
+00057     initRMC (__argc, __argv);
+00058 
+00059     /* Loading the common parameters */ 
+00060     loadParameters (__argc, __argv);
+00061     
+00062     /* */
+00063     initDebugging ();
+00064   }
+00065 }
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peo__init_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peo__init_8h-source.html new file mode 100644 index 000000000..23a8d401f --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peo__init_8h-source.html @@ -0,0 +1,78 @@ + + +ParadisEO-PEOMovingObjects: peo_init.h Source File + + + + +
+
+

peo_init.h

00001 /* 
+00002 * <peo_init.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __peo_init_h
+00038 #define __peo_init_h
+00039 
+00040 namespace peo {
+00041 
+00042   extern int * argc;
+00043   
+00044   extern char * * * argv;
+00045   
+00046   extern void init (int & __argc, char * * & __argv);
+00047 }
+00048 
+00049 #endif
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peo__param_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peo__param_8cpp-source.html new file mode 100644 index 000000000..e96644b1a --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peo__param_8cpp-source.html @@ -0,0 +1,82 @@ + + +ParadisEO-PEOMovingObjects: peo_param.cpp Source File + + + + +
+
+

peo_param.cpp

00001 /* 
+00002 * <peo_param.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include <utils/eoParser.h>
+00038 
+00039 #include "peo_param.h"
+00040 #include "peo_debug.h"
+00041 
+00042 
+00043 
+00044 void peo :: loadParameters (int & __argc, char * * & __argv) {
+00045 
+00046   eoParser parser (__argc, __argv);
+00047 
+00048   /* Debug */
+00049   eoValueParam <std :: string> debug_param ("false", "debug", "?");
+00050   parser.processParam (debug_param);
+00051   if (debug_param.value () == "true")
+00052     setDebugMode ();
+00053 }
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peo__param_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peo__param_8h-source.html new file mode 100644 index 000000000..c8adfbebb --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peo__param_8h-source.html @@ -0,0 +1,74 @@ + + +ParadisEO-PEOMovingObjects: peo_param.h Source File + + + + +
+
+

peo_param.h

00001 /* 
+00002 * <peo_param.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __peo_param_h
+00038 #define __peo_param_h
+00039 
+00040 namespace peo {
+00041   
+00042   extern void loadParameters (int & __argc, char * * & __argv);
+00043 }
+00044 
+00045 #endif
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peo__run_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peo__run_8cpp-source.html new file mode 100644 index 000000000..aeac16030 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peo__run_8cpp-source.html @@ -0,0 +1,76 @@ + + +ParadisEO-PEOMovingObjects: peo_run.cpp Source File + + + + +
+
+

peo_run.cpp

00001 /* 
+00002 * <peo_run.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include "peo_init.h"
+00038 #include "peo_run.h"
+00039 #include "rmc.h"
+00040 #include "runner.h"
+00041 
+00042 void peo :: run () {
+00043   
+00044   startRunners ();
+00045 
+00046   runRMC ();
+00047 }
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peo__run_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peo__run_8h-source.html new file mode 100644 index 000000000..d694de425 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/peo__run_8h-source.html @@ -0,0 +1,74 @@ + + +ParadisEO-PEOMovingObjects: peo_run.h Source File + + + + +
+
+

peo_run.h

00001 /* 
+00002 * <peo_run.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __peo_run_h
+00038 #define __peo_run_h
+00039 
+00040 namespace peo {
+00041   
+00042   extern void run ();
+00043 }
+00044 
+00045 #endif
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/reac__thread_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/reac__thread_8cpp-source.html new file mode 100644 index 000000000..8f4efaaab --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/reac__thread_8cpp-source.html @@ -0,0 +1,93 @@ + + +ParadisEO-PEOMovingObjects: reac_thread.cpp Source File + + + + +
+
+

reac_thread.cpp

00001 /* 
+00002 * <reac_thread.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include "reac_thread.h"
+00038 
+00039 static bool the_end = false;
+00040 
+00041 static std :: vector <ReactiveThread *> reac_threads;
+00042 
+00043 ReactiveThread :: ReactiveThread () {
+00044 
+00045   reac_threads.push_back (this);
+00046   sem_init (& sem, 0, 0);
+00047 }
+00048 
+00049 void ReactiveThread :: sleep () {
+00050 
+00051   sem_wait (& sem);     
+00052 }
+00053 
+00054 void ReactiveThread :: wakeUp () {
+00055 
+00056   sem_post (& sem);     
+00057 }
+00058 
+00059 void stopReactiveThreads () {
+00060 
+00061   the_end = true;
+00062   for (unsigned i = 0; i < reac_threads.size (); i ++)
+00063     reac_threads [i] -> wakeUp  ();     
+00064 }
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/reac__thread_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/reac__thread_8h-source.html new file mode 100644 index 000000000..d7b48b719 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/reac__thread_8h-source.html @@ -0,0 +1,92 @@ + + +ParadisEO-PEOMovingObjects: reac_thread.h Source File + + + + +
+
+

reac_thread.h

00001 /* 
+00002 * <reac_thread.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef REAC_THREAD_H_
+00038 #define REAC_THREAD_H_
+00039 
+00040 #include <semaphore.h>
+00041 
+00042 #include "thread.h"
+00043 
+00044 class ReactiveThread : public Thread {
+00045         
+00046 public:
+00047 
+00048   /* Ctor */
+00049   ReactiveThread ();
+00050 
+00051   void sleep ();
+00052   
+00053   void wakeUp ();
+00054     
+00055 private:
+00056 
+00057   sem_t sem;
+00058    
+00059 };
+00060 
+00061 extern void stopReactiveThreads ();
+00062 
+00063 #endif /*THREAD_H_*/
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/recv_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/recv_8cpp-source.html new file mode 100644 index 000000000..4062ac302 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/recv_8cpp-source.html @@ -0,0 +1,169 @@ + + +ParadisEO-PEOMovingObjects: recv.cpp Source File + + + + +
+
+

recv.cpp

00001 /* 
+00002 * <recv.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include "comm.h"
+00038 #include "tags.h"
+00039 #include "worker.h"
+00040 #include "scheduler.h"
+00041 #include "mess.h"
+00042 #include "node.h"
+00043 #include "../../core/runner.h"
+00044 #include "../../core/cooperative.h"
+00045 #include "../../core/peo_debug.h"
+00046 
+00047 void receiveMessages () {
+00048 
+00049   cleanBuffers ();
+00050     
+00051   do {
+00052 
+00053     if (! atLeastOneActiveThread ()) {
+00054       //      printDebugMessage ("debut wait");
+00055       waitMessage ();
+00056       //printDebugMessage ("fin wait");
+00057     }
+00058     
+00059     int src, tag;
+00060 
+00061     while (probeMessage (src, tag)) {
+00062       
+00063       receiveMessage (src, tag);
+00064       initMessage ();
+00065       /*
+00066       char b [1000];
+00067       sprintf (b, "traitement recv %d\n", tag);
+00068       printDebugMessage (b);
+00069       */
+00070       
+00071       switch (tag) {
+00072         
+00073       case RUNNER_STOP_TAG:     
+00074         unpackTerminationOfRunner ();   
+00075         wakeUpCommunicator ();
+00076         break;
+00077       
+00078       case COOP_TAG:
+00079         //      printDebugMessage ("reception de message de cooperation");
+00080         COOP_ID coop_id;
+00081         unpack (coop_id);
+00082         getCooperative (coop_id) -> unpack ();
+00083         break;
+00084 
+00085       case SCHED_REQUEST_TAG:   
+00086         unpackResourceRequest ();
+00087         break;
+00088         
+00089       case SCHED_RESULT_TAG:
+00090         {         
+00091           /* Unpacking the resource */
+00092           SERVICE_ID serv_id;
+00093           unpack (serv_id);
+00094           Service * serv = getService (serv_id);
+00095           int dest;
+00096           unpack (dest);
+00097           WORKER_ID worker_id;
+00098           unpack (worker_id);
+00099 
+00100           /* Going back ... */
+00101           initMessage ();
+00102           pack (worker_id);
+00103           pack (serv_id); 
+00104           serv -> packData ();
+00105           serv -> notifySendingData ();
+00106           sendMessage (dest, TASK_DATA_TAG);
+00107           break;
+00108         }
+00109 
+00110       case TASK_DATA_TAG:
+00111       {
+00112         WORKER_ID worker_id;
+00113         unpack (worker_id);             
+00114         Worker * worker = getWorker (worker_id);
+00115         worker -> setSource (src);
+00116         worker -> unpackData ();
+00117         worker -> wakeUp ();
+00118         break; 
+00119       }
+00120       
+00121       case TASK_RESULT_TAG:
+00122         {
+00123           SERVICE_ID serv_id;
+00124           unpack (serv_id);
+00125           Service * serv = getService (serv_id);
+00126           serv -> unpackResult ();
+00127           break;
+00128         }
+00129 
+00130       case TASK_DONE_TAG:
+00131         unpackTaskDone ();
+00132         break;
+00133 
+00134       default:
+00135         ;
+00136       };
+00137     }
+00138         
+00139   } while (! atLeastOneActiveThread () && atLeastOneActiveRunner () /*&& ! allResourcesFree ()*/);
+00140 }
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/recv_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/recv_8h-source.html new file mode 100644 index 000000000..fa8af7233 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/recv_8h-source.html @@ -0,0 +1,71 @@ + + +ParadisEO-PEOMovingObjects: recv.h Source File + + + + +
+
+

recv.h

00001 /* 
+00002 * <recv.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __recv_h
+00038 #define __recv_h
+00039 
+00040 extern void receiveMessages ();
+00041 
+00042 #endif
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/ring__topo_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/ring__topo_8cpp-source.html new file mode 100644 index 000000000..f6b67ce85 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/ring__topo_8cpp-source.html @@ -0,0 +1,82 @@ + + +ParadisEO-PEOMovingObjects: ring_topo.cpp Source File + + + + +
+
+

ring_topo.cpp

00001 /* 
+00002 * <ring_topo.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include "ring_topo.h"
+00038 
+00039 void RingTopology :: setNeighbors (Cooperative * __mig,
+00040                                    std :: vector <Cooperative *> & __from,
+00041                                    std :: vector <Cooperative *> & __to) {
+00042   __from.clear () ;
+00043   __to.clear () ;
+00044 
+00045     int len = mig.size () ;
+00046     
+00047     for (int i = 0 ; i < len ; i ++)      
+00048       if (mig [i] == __mig) {   
+00049         __from.push_back (mig [(i - 1 + len) % len]) ;
+00050         __to.push_back (mig [(i + 1) % len]) ;  
+00051         break;
+00052       }
+00053 }
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/ring__topo_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/ring__topo_8h-source.html new file mode 100644 index 000000000..2d19ad101 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/ring__topo_8h-source.html @@ -0,0 +1,81 @@ + + +ParadisEO-PEOMovingObjects: ring_topo.h Source File + + + + +
+
+

ring_topo.h

00001 /* 
+00002 * <ring_topo.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __ring_topo_h
+00038 #define __ring_topo_h
+00039 
+00040 #include "topology.h"
+00041 
+00042 class RingTopology : public Topology {
+00043   
+00044 public :
+00045    
+00046   void setNeighbors (Cooperative * __mig,
+00047                      std :: vector <Cooperative *> & __from,
+00048                      std :: vector <Cooperative *> & __to);
+00049   
+00050 };
+00051 
+00052 #endif
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/rmc_2mpi_2runner_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/rmc_2mpi_2runner_8cpp-source.html new file mode 100644 index 000000000..cf9389486 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/rmc_2mpi_2runner_8cpp-source.html @@ -0,0 +1,90 @@ + + +ParadisEO-PEOMovingObjects: runner.cpp Source File + + + + +
+
+

runner.cpp

00001 /* 
+00002 * <runner.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include "../../core/messaging.h"
+00038 #include "../../core/runner.h"
+00039 #include "node.h"
+00040 #include "send.h"
+00041 #include "tags.h"
+00042 #include "schema.h"
+00043 
+00044 bool Runner :: isLocal () {
+00045 
+00046   for (unsigned i = 0; i < my_node -> id_run.size (); i ++)
+00047     if (my_node -> id_run [i] == id)
+00048       return true;
+00049   return false;
+00050 }
+00051 
+00052 void Runner :: packTermination () {
+00053 
+00054   pack (id);
+00055 }
+00056 
+00057 void Runner :: terminate () {
+00058 
+00059   sendToAll (this, RUNNER_STOP_TAG);     
+00060 }
+00061 
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/rmc_2mpi_2service_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/rmc_2mpi_2service_8cpp-source.html new file mode 100644 index 000000000..d24a7dccb --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/rmc_2mpi_2service_8cpp-source.html @@ -0,0 +1,87 @@ + + +ParadisEO-PEOMovingObjects: service.cpp Source File + + + + +
+
+

service.cpp

00001 /* 
+00002 * <service.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include "../../core/service.h"
+00038 #include "../../core/messaging.h"
+00039 #include "node.h"
+00040 #include "tags.h"
+00041 #include "send.h"
+00042 #include "scheduler.h"
+00043 
+00044 void Service :: requestResourceRequest (unsigned __how_many) {
+00045 
+00046   num_sent_rr = __how_many;
+00047   for (unsigned i = 0; i < __how_many; i ++)
+00048     send (this, my_node -> rk_sched, SCHED_REQUEST_TAG);
+00049 }
+00050 
+00051 void Service :: packResourceRequest () {
+00052 
+00053   SCHED_REQUEST req;
+00054   req.first = getNodeRank ();
+00055   req.second = getKey ();
+00056   //  printf ("demande de ressource pour %d\n", req.second);
+00057   :: pack (req);
+00058 }
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/rmc_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/rmc_8cpp-source.html new file mode 100644 index 000000000..d12de1681 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/rmc_8cpp-source.html @@ -0,0 +1,103 @@ + + +ParadisEO-PEOMovingObjects: rmc.cpp Source File + + + + +
+
+

rmc.cpp

00001 /* 
+00002 * <rmc.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include "send.h"
+00038 #include "worker.h"
+00039 #include "schema.h"
+00040 #include "comm.h"
+00041 #include "scheduler.h"
+00042 #include "../../core/peo_debug.h"
+00043 
+00044 static std :: vector <pthread_t *> ll_threads; /* Low level threads */
+00045 
+00046 void runRMC () {
+00047 
+00048   /* Worker(s) ? */
+00049   for (unsigned i = 0; i < my_node -> num_workers; i ++) 
+00050     addThread (new Worker, ll_threads);
+00051 
+00052   wakeUpCommunicator ();
+00053 }
+00054 
+00055 void initRMC (int & __argc, char * * & __argv) {
+00056 
+00057   /* Communication */
+00058   initCommunication ();
+00059   addThread (new Communicator (& __argc, & __argv), ll_threads);
+00060   waitNodeInitialization ();
+00061   initSending ();
+00062 
+00063   /* Scheduler */
+00064   if (isScheduleNode ())
+00065     initScheduler ();
+00066 
+00068 }
+00069 
+00070 void finalizeRMC () {
+00071 
+00072   printDebugMessage ("before join threads RMC");
+00073   joinThreads (ll_threads);
+00074   printDebugMessage ("after join threads RMC");
+00075 }
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/rmc_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/rmc_8h-source.html new file mode 100644 index 000000000..6e2d24667 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/rmc_8h-source.html @@ -0,0 +1,75 @@ + + +ParadisEO-PEOMovingObjects: rmc.h Source File + + + + +
+
+

rmc.h

00001 /* 
+00002 * <rmc.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __rmc_h
+00038 #define __rmc_h
+00039 
+00040 extern void initRMC (int & __argc, char * * & __argv);
+00041 
+00042 extern void runRMC (); /* Resource Management and Communication */ 
+00043 
+00044 extern void finalizeRMC ();
+00045 
+00046 #endif
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/route_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/route_8cpp-source.html new file mode 100644 index 000000000..9937479a9 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/route_8cpp-source.html @@ -0,0 +1,78 @@ + + +ParadisEO-PEOMovingObjects: route.cpp Source File + + + + +
+
+

route.cpp

00001 /* 
+00002 * <route.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include "route.h"
+00038 
+00039 unsigned length (const Route & __route) {
+00040 
+00041   unsigned len = 0 ;
+00042   
+00043   for (unsigned i = 0; i < numNodes; i ++)
+00044     len += distance (__route [i], __route [(i + 1) % numNodes]) ; 
+00045   
+00046   return len;
+00047 }
+00048 
+00049 
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/route_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/route_8h-source.html new file mode 100644 index 000000000..b5139e667 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/route_8h-source.html @@ -0,0 +1,77 @@ + + +ParadisEO-PEOMovingObjects: route.h Source File + + + + +
+
+

route.h

00001 /* 
+00002 * <route.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __route_h
+00038 #define __route_h
+00039 
+00040 #include <eoVector.h>
+00041 
+00042 #include "node.h"
+00043 
+00044 typedef eoVector <int, Node> Route; 
+00045 
+00046 unsigned length (const Route & __route); 
+00047 
+00048 #endif
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/route__eval_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/route__eval_8cpp-source.html new file mode 100644 index 000000000..26cded3dd --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/route__eval_8cpp-source.html @@ -0,0 +1,71 @@ + + +ParadisEO-PEOMovingObjects: route_eval.cpp Source File + + + + +
+
+

route_eval.cpp

00001 /* 
+00002 * <route_eval.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include "route_eval.h"
+00038 
+00039 void RouteEval :: operator () (Route & __route) {
+00040     
+00041   __route.fitness (- (int) length (__route)); 
+00042 }
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/route__eval_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/route__eval_8h-source.html new file mode 100644 index 000000000..0fcfb21fb --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/route__eval_8h-source.html @@ -0,0 +1,80 @@ + + +ParadisEO-PEOMovingObjects: route_eval.h Source File + + + + +
+
+

route_eval.h

00001 /* 
+00002 * <route_eval.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __route_eval_h
+00038 #define __route_eval_h
+00039 
+00040 #include <eoEvalFunc.h>
+00041 
+00042 #include "route.h"
+00043 
+00044 class RouteEval : public eoEvalFunc <Route> {
+00045   
+00046 public :
+00047     
+00048   void operator () (Route & __route) ;  
+00049 } ;
+00050 
+00051 #endif
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/route__init_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/route__init_8cpp-source.html new file mode 100644 index 000000000..824282875 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/route__init_8cpp-source.html @@ -0,0 +1,80 @@ + + +ParadisEO-PEOMovingObjects: route_init.cpp Source File + + + + +
+
+

route_init.cpp

00001 /* 
+00002 * <route_init.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include <utils/eoRNG.h>
+00038 
+00039 #include "route_init.h"
+00040 #include "node.h"
+00041 
+00042 void RouteInit :: operator () (Route & __route) {
+00043 
+00044   __route.clear ();
+00045   
+00046   for (unsigned i = 0 ; i < numNodes ; i ++)
+00047     __route.push_back (i);
+00048   
+00049   for (unsigned i = 0 ; i < numNodes ; i ++)    
+00050     std :: swap (__route [i], __route [rng.random (numNodes)]);
+00051 }
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/route__init_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/route__init_8h-source.html new file mode 100644 index 000000000..451e81a9a --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/route__init_8h-source.html @@ -0,0 +1,80 @@ + + +ParadisEO-PEOMovingObjects: route_init.h Source File + + + + +
+
+

route_init.h

00001 /* 
+00002 * <route_init.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __route_init_h
+00038 #define __route_init_h
+00039 
+00040 #include <eoInit.h>
+00041 
+00042 #include "route.h"
+00043 
+00044 class RouteInit : public eoInit <Route> {
+00045   
+00046 public :
+00047   
+00048   void operator () (Route & __route);  
+00049 } ;
+00050 
+00051 #endif
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/runner_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/runner_8h-source.html new file mode 100644 index 000000000..3975d3624 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/runner_8h-source.html @@ -0,0 +1,115 @@ + + +ParadisEO-PEOMovingObjects: runner.h Source File + + + + +
+
+

runner.h

00001 /* 
+00002 * <runner.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __runner_h
+00038 #define __runner_h
+00039 
+00040 #include <eoFunctor.h>
+00041 
+00042 #include "communicable.h"
+00043 #include "thread.h"
+00044 
+00045 typedef unsigned RUNNER_ID;
+00046 
+00047 class Runner : public Communicable, public Thread {
+00048 
+00049 public :
+00050 
+00051   Runner ();
+00052 
+00053   void start ();
+00054 
+00055   void waitStarting ();
+00056 
+00057   bool isLocal ();
+00058 
+00059   void terminate ();
+00060 
+00061   virtual void run () = 0;
+00062   
+00063   RUNNER_ID getID (); 
+00064 
+00065   void packTermination ();
+00066 
+00067   void notifySendingTermination ();
+00068 
+00069 private :
+00070 
+00071   sem_t sem_start;
+00072 
+00073   unsigned id;
+00074 };
+00075 
+00076 extern bool atLeastOneActiveRunner ();
+00077 
+00078 extern void unpackTerminationOfRunner ();
+00079 
+00080 extern Runner * getRunner (RUNNER_ID __key); 
+00081 
+00082 extern void startRunners ();
+00083 
+00084 extern void joinRunners ();
+00085 
+00086 #endif
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/scheduler_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/scheduler_8cpp-source.html new file mode 100644 index 000000000..20dc2624d --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/scheduler_8cpp-source.html @@ -0,0 +1,135 @@ + + +ParadisEO-PEOMovingObjects: scheduler.cpp Source File + + + + +
+
+

scheduler.cpp

00001 /* 
+00002 * <scheduler.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include <queue>
+00038 
+00039 #include "scheduler.h"
+00040 #include "tags.h"
+00041 #include "mess.h"
+00042 #include "../../core/peo_debug.h"
+00043 
+00044 static std :: queue <SCHED_RESOURCE> resources; /* Free resources */
+00045 
+00046 static std :: queue <SCHED_REQUEST> requests; /* Requests */
+00047 
+00048 static unsigned initNumberOfRes = 0;
+00049 
+00050 void initScheduler () {
+00051   
+00052   for (unsigned i = 0; i < the_schema.size (); i ++) {
+00053     
+00054     const Node & node = the_schema [i];
+00055     
+00056     if (node.rk_sched == my_node -> rk)      
+00057       for (unsigned j = 0; j < node.num_workers; j ++)
+00058         resources.push (std :: pair <RANK_ID, WORKER_ID> (i, j + 1));    
+00059   }  
+00060   initNumberOfRes = resources.size ();
+00061 }
+00062 
+00063 bool allResourcesFree () {
+00064 
+00065   return resources.size () == initNumberOfRes;
+00066 }
+00067 
+00068 static void update () {
+00069 
+00070   unsigned num_alloc = std :: min (resources.size (), requests.size ());
+00071   
+00072   for (unsigned i = 0; i < num_alloc; i ++) {
+00073     
+00074     SCHED_REQUEST req = requests.front ();
+00075     requests.pop ();
+00076     
+00077     SCHED_RESOURCE res = resources.front ();
+00078     resources.pop ();
+00079 
+00080     printDebugMessage ("allocating a resource.");    
+00081     initMessage ();
+00082     pack (req.second);
+00083     pack (res);
+00084     sendMessage (req.first, SCHED_RESULT_TAG);
+00085   }  
+00086 }
+00087 
+00088 void unpackResourceRequest () {
+00089 
+00090   printDebugMessage ("queuing a resource request.");
+00091   SCHED_REQUEST req;
+00092   unpack (req);
+00093   requests.push (req);
+00094   update ();
+00095 }
+00096 
+00097 void unpackTaskDone () {
+00098 
+00099   printDebugMessage ("I'm notified a worker is now idle.");
+00100   SCHED_RESOURCE res;
+00101   unpack (res);
+00102   resources.push (res);
+00103   if (resources.size () == initNumberOfRes)
+00104     printDebugMessage ("all the resources are now free.");
+00105   update ();
+00106 }
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/scheduler_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/scheduler_8h-source.html new file mode 100644 index 000000000..b012f4aa7 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/scheduler_8h-source.html @@ -0,0 +1,89 @@ + + +ParadisEO-PEOMovingObjects: scheduler.h Source File + + + + +
+
+

scheduler.h

00001 /* 
+00002 * <scheduler.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __scheduler_h
+00038 #define __scheduler_h
+00039 
+00040 #include <utility>
+00041 
+00042 #include "schema.h"
+00043 #include "worker.h"
+00044 
+00045 typedef std :: pair <RANK_ID, WORKER_ID> SCHED_RESOURCE;
+00046 
+00047 typedef std :: pair <RANK_ID, SERVICE_ID> SCHED_REQUEST;
+00048 
+00049 /* Initializing the list of available workers */
+00050 extern void initScheduler ();
+00051 
+00052 /* Processing a resource request from a service */
+00053 extern void unpackResourceRequest ();
+00054 
+00055 /* Being known a worker is now idle :-) */
+00056 extern void unpackTaskDone (); 
+00057 
+00058 extern bool allResourcesFree ();
+00059 
+00060 #endif
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/schema_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/schema_8cpp-source.html new file mode 100644 index 000000000..27e89390c --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/schema_8cpp-source.html @@ -0,0 +1,192 @@ + + +ParadisEO-PEOMovingObjects: schema.cpp Source File + + + + +
+
+

schema.cpp

00001 /* 
+00002 * <schema.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include <iostream>
+00038 #include <assert.h>
+00039 
+00040 #include "schema.h"
+00041 #include "xml_parser.h"
+00042 #include "comm.h"
+00043 #include "node.h"
+00044 #include "../../core/peo_debug.h"
+00045 
+00046 std :: vector <Node> the_schema;
+00047 
+00048 Node * my_node;
+00049 
+00050 RANK_ID getRankOfRunner (RUNNER_ID __key) {
+00051 
+00052   for (unsigned i = 0; i < the_schema.size (); i ++)
+00053     for (unsigned j = 0; j < the_schema [i].id_run.size (); j ++)
+00054       if (the_schema [i].id_run [j] == __key)
+00055         return the_schema [i].rk;
+00056   assert (false);
+00057   return 0; 
+00058 }
+00059 
+00060 static void loadNode (int __rk_sched) {
+00061 
+00062   Node node;
+00063   
+00064   node.rk_sched = __rk_sched;
+00065 
+00066   /* ATT: name*/
+00067   node.rk = getRankFromName (getAttributeValue ("name"));
+00068   /* ATT: num_workers */
+00069   node.num_workers = atoi (getAttributeValue ("num_workers").c_str ());
+00070 
+00071   while (true) {
+00072     
+00073     /* TAG: <runner> | </node> */
+00074     std :: string name = getNextNode ();
+00075     assert (name == "runner" || name == "node");    
+00076     if (name == "runner") {
+00077       /* TAG: </node> */
+00078       node.id_run.push_back (atoi (getNextNode ().c_str ()));
+00079       /* TAG: </runner> */
+00080       assert (getNextNode () == "runner");
+00081     }
+00082     else {      
+00083       /* TAG: </node> */
+00084       the_schema.push_back (node); 
+00085       break;
+00086     }
+00087   }
+00088 }
+00089 
+00090 static void loadGroup () {
+00091 
+00092   std :: string name;
+00093   
+00094   /* ATT: scheduler*/
+00095   int rk_sched = getRankFromName (getAttributeValue ("scheduler"));
+00096   
+00097   while (true) {
+00098 
+00099     /* TAG: <node> | </group> */
+00100     name = getNextNode ();
+00101     assert (name == "node" || name == "group");    
+00102     if (name == "node")
+00103       /* TAG: <node> */
+00104       loadNode (rk_sched);
+00105     else
+00106       /* TAG: </group> */
+00107       break;
+00108   }
+00109 }
+00110 
+00111 bool isScheduleNode () {
+00112   
+00113   return my_node -> rk == my_node -> rk_sched;
+00114 }
+00115 
+00116 void loadSchema (const char * __filename) {
+00117   
+00118   openXMLDocument (__filename);
+00119   
+00120   std :: string name;
+00121   
+00122   /* TAG: <schema> */
+00123   name = getNextNode ();
+00124   assert (name == "schema");
+00125     
+00126   while (true) {
+00127 
+00128     /* TAG: <group> | </schema> */
+00129     name = getNextNode ();
+00130     assert (name == "group" || name == "schema");    
+00131     if (name == "group")
+00132       /* TAG: <group> */
+00133       loadGroup ();
+00134     else
+00135       /* TAG: </schema> */
+00136       break;    
+00137   }
+00138 
+00139   /* Looking for my node */
+00140   for (unsigned i = 0; i < the_schema.size (); i ++)
+00141     if (the_schema [i].rk == getNodeRank ())
+00142       my_node = & (the_schema [i]);
+00143   
+00144   /* About me */
+00145   char mess [1000];
+00146   
+00147   sprintf (mess, "my rank is %d", my_node -> rk);
+00148   printDebugMessage (mess);
+00149   if (isScheduleNode ())
+00150     printDebugMessage ("I'am a scheduler");  
+00151   for (unsigned i = 0; i < my_node -> id_run.size (); i ++) {
+00152     sprintf (mess, "I manage the runner %d", my_node -> id_run [i]);
+00153     printDebugMessage (mess);
+00154   }
+00155   if (my_node -> num_workers) {
+00156     
+00157     sprintf (mess, "I manage %d worker(s)", my_node -> num_workers);
+00158     printDebugMessage (mess);
+00159   }
+00160           
+00161   closeXMLDocument ();
+00162 }
+00163 
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/schema_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/schema_8h-source.html new file mode 100644 index 000000000..b5044a17f --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/schema_8h-source.html @@ -0,0 +1,96 @@ + + +ParadisEO-PEOMovingObjects: schema.h Source File + + + + +
+
+

schema.h

00001 /* 
+00002 * <schema.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __schema_h
+00038 #define __schema_h
+00039 
+00040 #include <string>
+00041 #include <vector>
+00042 #include <cassert>
+00043 
+00044 #include "../../core/runner.h"
+00045 
+00046 typedef int RANK_ID;
+00047 
+00048 struct Node {
+00049   
+00050   RANK_ID rk; /* Rank */
+00051   std :: string name; /* Host name */
+00052   unsigned num_workers; /* Number of parallel workers */
+00053   int rk_sched; /* rank of the scheduler */
+00054   std :: vector <RUNNER_ID> id_run; /* List of runners */
+00055 };
+00056 
+00057 extern std :: vector <Node> the_schema;
+00058 
+00059 extern Node * my_node;
+00060 
+00061 extern void loadSchema (const char * __filename);
+00062 
+00063 extern RANK_ID getRankOfRunner (RUNNER_ID __key);
+00064 
+00065 extern bool isScheduleNode ();
+00066 
+00067 #endif
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/search.idx b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/search.idx new file mode 100644 index 000000000..50b796a59 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/search.idx differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/search.php b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/search.php new file mode 100644 index 000000000..861442bae --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/search.php @@ -0,0 +1,382 @@ + + +Search + + + + +
+
    +
  • Main Page
  • +
  • Namespaces
  • +
  • Classes
  • +
  • Files
  • +
  • +
    + + + + +1 document matching your query."; + } + else // $num>1 + { + return "Found $num documents matching your query. Showing best matches first."; + } +} + +function report_matches() +{ + return "Matches: "; +} +function end_form($value) +{ + echo " \n \n
    \n
    \n
  • \n
\n
\n"; +} + +function readInt($file) +{ + $b1 = ord(fgetc($file)); $b2 = ord(fgetc($file)); + $b3 = ord(fgetc($file)); $b4 = ord(fgetc($file)); + return ($b1<<24)|($b2<<16)|($b3<<8)|$b4; +} + +function readString($file) +{ + $result=""; + while (ord($c=fgetc($file))) $result.=$c; + return $result; +} + +function readHeader($file) +{ + $header =fgetc($file); $header.=fgetc($file); + $header.=fgetc($file); $header.=fgetc($file); + return $header; +} + +function computeIndex($word) +{ + // Fast string hashing + //$lword = strtolower($word); + //$l = strlen($lword); + //for ($i=0;$i<$l;$i++) + //{ + // $c = ord($lword{$i}); + // $v = (($v & 0xfc00) ^ ($v << 6) ^ $c) & 0xffff; + //} + //return $v; + + // Simple hashing that allows for substring search + if (strlen($word)<2) return -1; + // high char of the index + $hi = ord($word{0}); + if ($hi==0) return -1; + // low char of the index + $lo = ord($word{1}); + if ($lo==0) return -1; + // return index + return $hi*256+$lo; +} + +function search($file,$word,&$statsList) +{ + $index = computeIndex($word); + if ($index!=-1) // found a valid index + { + fseek($file,$index*4+4); // 4 bytes per entry, skip header + $index = readInt($file); + if ($index) // found words matching the hash key + { + $start=sizeof($statsList); + $count=$start; + fseek($file,$index); + $w = readString($file); + while ($w) + { + $statIdx = readInt($file); + if ($word==substr($w,0,strlen($word))) + { // found word that matches (as substring) + $statsList[$count++]=array( + "word"=>$word, + "match"=>$w, + "index"=>$statIdx, + "full"=>strlen($w)==strlen($word), + "docs"=>array() + ); + } + $w = readString($file); + } + $totalHi=0; + $totalFreqHi=0; + $totalFreqLo=0; + for ($count=$start;$count $idx, + "freq" => $freq>>1, + "rank" => 0.0, + "hi" => $freq&1 + ); + if ($freq&1) // word occurs in high priority doc + { + $totalHi++; + $totalFreqHi+=$freq*$multiplier; + } + else // word occurs in low priority doc + { + $totalFreqLo+=$freq*$multiplier; + } + } + // read name and url info for the doc + for ($i=0;$i<$numDocs;$i++) + { + fseek($file,$docInfo[$i]["idx"]); + $docInfo[$i]["name"]=readString($file); + $docInfo[$i]["url"]=readString($file); + } + $statInfo["docs"]=$docInfo; + } + $totalFreq=($totalHi+1)*$totalFreqLo + $totalFreqHi; + for ($count=$start;$count$key, + "name"=>$di["name"], + "rank"=>$rank + ); + } + $docs[$key]["words"][] = array( + "word"=>$wordInfo["word"], + "match"=>$wordInfo["match"], + "freq"=>$di["freq"] + ); + } + } + return $docs; +} + +function filter_results($docs,&$requiredWords,&$forbiddenWords) +{ + $filteredDocs=array(); + while (list ($key, $val) = each ($docs)) + { + $words = &$docs[$key]["words"]; + $copy=1; // copy entry by default + if (sizeof($requiredWords)>0) + { + foreach ($requiredWords as $reqWord) + { + $found=0; + foreach ($words as $wordInfo) + { + $found = $wordInfo["word"]==$reqWord; + if ($found) break; + } + if (!$found) + { + $copy=0; // document contains none of the required words + break; + } + } + } + if (sizeof($forbiddenWords)>0) + { + foreach ($words as $wordInfo) + { + if (in_array($wordInfo["word"],$forbiddenWords)) + { + $copy=0; // document contains a forbidden word + break; + } + } + } + if ($copy) $filteredDocs[$key]=$docs[$key]; + } + return $filteredDocs; +} + +function compare_rank($a,$b) +{ + if ($a["rank"] == $b["rank"]) + { + return 0; + } + return ($a["rank"]>$b["rank"]) ? -1 : 1; +} + +function sort_results($docs,&$sorted) +{ + $sorted = $docs; + usort($sorted,"compare_rank"); + return $sorted; +} + +function report_results(&$docs) +{ + echo "\n"; + echo " \n"; + echo " \n"; + echo " \n"; + $numDocs = sizeof($docs); + if ($numDocs==0) + { + echo " \n"; + echo " \n"; + echo " \n"; + } + else + { + echo " \n"; + echo " \n"; + echo " \n"; + $num=1; + foreach ($docs as $doc) + { + echo " \n"; + echo " "; + echo "\n"; + echo " \n"; + echo " \n"; + echo " \n"; + $num++; + } + } + echo "

".search_results()."

".matches_text(0)."
".matches_text($numDocs); + echo "\n"; + echo "
$num.".$doc["name"]."
".report_matches()." "; + foreach ($doc["words"] as $wordInfo) + { + $word = $wordInfo["word"]; + $matchRight = substr($wordInfo["match"],strlen($word)); + echo "$word$matchRight(".$wordInfo["freq"].") "; + } + echo "
\n"; +} + +function main() +{ + if(strcmp('4.1.0', phpversion()) > 0) + { + die("Error: PHP version 4.1.0 or above required!"); + } + if (!($file=fopen("search.idx","rb"))) + { + die("Error: Search index file could NOT be opened!"); + } + if (readHeader($file)!="DOXS") + { + die("Error: Header of index file is invalid!"); + } + $query=""; + if (array_key_exists("query", $_GET)) + { + $query=$_GET["query"]; + } + end_form($query); + echo " \n
\n"; + $results = array(); + $requiredWords = array(); + $forbiddenWords = array(); + $foundWords = array(); + $word=strtok($query," "); + while ($word) // for each word in the search query + { + if (($word{0}=='+')) { $word=substr($word,1); $requiredWords[]=$word; } + if (($word{0}=='-')) { $word=substr($word,1); $forbiddenWords[]=$word; } + if (!in_array($word,$foundWords)) + { + $foundWords[]=$word; + search($file,strtolower($word),$results); + } + $word=strtok(" "); + } + $docs = array(); + combine_results($results,$docs); + // filter out documents with forbidden word or that do not contain + // required words + $filteredDocs = filter_results($docs,$requiredWords,$forbiddenWords); + // sort the results based on rank + $sorted = array(); + sort_results($filteredDocs,$sorted); + // report results to the user + report_results($sorted); + echo "
\n"; + fclose($file); +} + +main(); + + +?> +
Generated on Mon Oct 8 11:16:50 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/send_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/send_8cpp-source.html new file mode 100644 index 000000000..80d5342f7 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/send_8cpp-source.html @@ -0,0 +1,173 @@ + + +ParadisEO-PEOMovingObjects: send.cpp Source File + + + + +
+
+

send.cpp

00001 /* 
+00002 * <send.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include <mpi.h>
+00038 #include <semaphore.h>
+00039 #include <queue>
+00040 
+00041 #include "tags.h"
+00042 #include "comm.h"
+00043 #include "worker.h"
+00044 #include "scheduler.h"
+00045 #include "mess.h"
+00046 #include "node.h"
+00047 #include "../../core/cooperative.h"
+00048 #include "../../core/peo_debug.h"
+00049 
+00050 #define TO_ALL -1
+00051 
+00052 typedef struct {
+00053 
+00054   Communicable * comm;
+00055   int to;
+00056   int tag;
+00057 
+00058 } SEND_REQUEST;
+00059         
+00060 static std :: queue <SEND_REQUEST> mess;
+00061 
+00062 static sem_t sem_send;
+00063 
+00064 void initSending () {
+00065 
+00066   sem_init (& sem_send, 0, 1);
+00067 }
+00068 
+00069 void send (Communicable * __comm, int __to, int __tag) {
+00070 
+00071   SEND_REQUEST req;  
+00072   req.comm = __comm;
+00073   req.to = __to;
+00074   req.tag = __tag;
+00075 
+00076   sem_wait (& sem_send);
+00077   mess.push (req);
+00078   sem_post (& sem_send);
+00079   wakeUpCommunicator ();
+00080 }
+00081 
+00082 void sendToAll (Communicable * __comm, int __tag) {
+00083   
+00084   send (__comm, TO_ALL, __tag);
+00085 }
+00086 
+00087 void sendMessages () {
+00088 
+00089   sem_wait (& sem_send);
+00090 
+00091   while (! mess.empty ()) {
+00092     
+00093     SEND_REQUEST req = mess.front ();
+00094     /*
+00095     char b [1000];
+00096     sprintf (b, "traitement send %d\n", req.tag);
+00097     printDebugMessage (b);
+00098     */
+00099     
+00100     Communicable * comm = req.comm;
+00101 
+00102     initMessage ();
+00103 
+00104     switch (req.tag) {
+00105 
+00106     case RUNNER_STOP_TAG:
+00107       dynamic_cast <Runner *> (comm) -> packTermination ();            
+00108       dynamic_cast <Runner *> (comm) -> notifySendingTermination ();            
+00109       break;
+00110 
+00111     case COOP_TAG:
+00112       dynamic_cast <Cooperative *> (comm) -> pack ();      
+00113       dynamic_cast <Cooperative *> (comm) -> notifySending ();      
+00114       break;
+00115           
+00116     case SCHED_REQUEST_TAG:
+00117       dynamic_cast <Service *> (comm) -> packResourceRequest ();
+00118       dynamic_cast <Service *> (comm) -> notifySendingResourceRequest ();            
+00119       break;
+00120 
+00121     case TASK_RESULT_TAG:
+00122       dynamic_cast <Worker *> (comm) -> packResult ();
+00123       dynamic_cast <Worker *> (comm) -> notifySendingResult ();
+00124       break;
+00125 
+00126     case TASK_DONE_TAG:
+00127       dynamic_cast <Worker *> (comm) -> packTaskDone ();
+00128       dynamic_cast <Worker *> (comm) -> notifySendingTaskDone ();
+00129       break;
+00130       
+00131     default :
+00132       break;
+00133 
+00134     };
+00135     
+00136     if (req.to == TO_ALL)
+00137       sendMessageToAll (req.tag);
+00138     else
+00139       sendMessage (req.to, req.tag);
+00140     mess.pop ();
+00141   }
+00142 
+00143   sem_post (& sem_send);  
+00144 }
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/send_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/send_8h-source.html new file mode 100644 index 000000000..53b935c60 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/send_8h-source.html @@ -0,0 +1,79 @@ + + +ParadisEO-PEOMovingObjects: send.h Source File + + + + +
+
+

send.h

00001 /* 
+00002 * <send.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __send_h
+00038 #define __send_h
+00039 
+00040 #include "../../core/communicable.h"
+00041 
+00042 extern void initSending ();
+00043 
+00044 extern void send (Communicable * __comm, int __to, int __tag);
+00045 
+00046 extern void sendToAll (Communicable * __comm, int __tag);
+00047 
+00048 extern void sendMessages ();
+00049 
+00050 #endif
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/service_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/service_8h-source.html new file mode 100644 index 000000000..a5a83054b --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/service_8h-source.html @@ -0,0 +1,107 @@ + + +ParadisEO-PEOMovingObjects: service.h Source File + + + + +
+
+

service.h

00001 /* 
+00002 * <service.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __service_h
+00038 #define __service_h
+00039 
+00040 #include "communicable.h"
+00041 #include "thread.h"
+00042 
+00043 typedef unsigned SERVICE_ID;
+00044 
+00045 class Service : public Communicable {
+00046 
+00047 public :
+00048 
+00049   void setOwner (Thread & __owner);
+00050   
+00051   Thread * getOwner (); 
+00052 
+00053   void requestResourceRequest (unsigned __how_many = 1);
+00054   void packResourceRequest ();
+00055 
+00056   virtual void packData ();
+00057   virtual void unpackData ();
+00058 
+00059   virtual void execute ();
+00060   
+00061   virtual void packResult ();
+00062   virtual void unpackResult ();
+00063 
+00064   virtual void notifySendingData ();
+00065   virtual void notifySendingResourceRequest ();
+00066   virtual void notifySendingAllResourceRequests ();
+00067 
+00068 private :
+00069 
+00070   Thread * owner; /* Owner thread (i.e. 'uses' that service) */ 
+00071 
+00072   unsigned num_sent_rr; /* Number of RR not really sent (i.e. still in the sending queue)*/
+00073 
+00074 };
+00075 
+00076 extern Service * getService (SERVICE_ID __key); 
+00077 
+00078 #endif
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/src_2rmc_2mpi_2node_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/src_2rmc_2mpi_2node_8cpp-source.html new file mode 100644 index 000000000..d52cbc6c3 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/src_2rmc_2mpi_2node_8cpp-source.html @@ -0,0 +1,115 @@ + + +ParadisEO-PEOMovingObjects: node.cpp Source File + + + + +
+
+

node.cpp

00001 /* 
+00002 * <node.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include <mpi.h>
+00038 #include <vector>
+00039 #include <map>
+00040 #include <string>
+00041 #include <cassert>
+00042 
+00043 static int rk, sz; /* Rank & size */
+00044 
+00045 static std :: map <std :: string, int> name_to_rk;
+00046 
+00047 static std :: vector <std :: string> rk_to_name;
+00048 
+00049 int getNodeRank () {
+00050 
+00051   return rk;
+00052 }
+00053 
+00054 int getNumberOfNodes () {
+00055 
+00056   return sz;
+00057 }
+00058 
+00059 int getRankFromName (const std :: string & __name) {
+00060   
+00061   return atoi (__name.c_str ());  
+00062 }
+00063 
+00064 void initNode (int * __argc, char * * * __argv) {
+00065   
+00066   int provided;
+00067   MPI_Init_thread (__argc,  __argv, MPI_THREAD_FUNNELED, & provided);  
+00068   assert (provided == MPI_THREAD_FUNNELED); /* The MPI implementation must be multi-threaded.
+00069                                                Yet, only one thread performs the comm.
+00070                                                operations */
+00071   MPI_Comm_rank (MPI_COMM_WORLD, & rk);   /* Who ? */
+00072   MPI_Comm_size (MPI_COMM_WORLD, & sz);    /* How many ? */
+00073 
+00074   char names [sz] [MPI_MAX_PROCESSOR_NAME];
+00075   int len;
+00076 
+00077   /* Processor names */ 
+00078   MPI_Get_processor_name (names [0], & len);   /* Me */  
+00079   MPI_Allgather (names, MPI_MAX_PROCESSOR_NAME, MPI_CHAR, names, MPI_MAX_PROCESSOR_NAME, MPI_CHAR, MPI_COMM_WORLD); /* Broadcast */
+00080   
+00081   for (int i = 0; i < sz; i ++) {
+00082     rk_to_name.push_back (names [i]);
+00083     name_to_rk [names [i]] = i;
+00084   }
+00085 }
+00086 
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/src_2rmc_2mpi_2node_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/src_2rmc_2mpi_2node_8h-source.html new file mode 100644 index 000000000..c107521e7 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/src_2rmc_2mpi_2node_8h-source.html @@ -0,0 +1,81 @@ + + +ParadisEO-PEOMovingObjects: node.h Source File + + + + +
+
+

node.h

00001 /* 
+00002 * <node.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __node_h
+00038 #define __node_h
+00039 
+00040 #include <string>
+00041 #include <cassert>
+00042 
+00043 extern int getNodeRank (); /* It gives the rank of the calling process */
+00044 
+00045 extern int getNumberOfNodes (); /* It gives the size of the environment (Total number of nodes) */
+00046 
+00047 extern int getRankFromName (const std :: string & __name); /* It gives the rank of the process
+00048                                                               expressed by its name */
+00049 
+00050 extern void initNode (int * __argc, char * * * __argv);
+00051 
+00052 #endif
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/src_2rmc_2mpi_2param_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/src_2rmc_2mpi_2param_8cpp-source.html new file mode 100644 index 000000000..4799a4a15 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/src_2rmc_2mpi_2param_8cpp-source.html @@ -0,0 +1,78 @@ + + +ParadisEO-PEOMovingObjects: param.cpp Source File + + + + +
+
+

param.cpp

00001 /* 
+00002 * <param.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include <utils/eoParser.h>
+00038 
+00039 #include "schema.h"
+00040 
+00041 void loadRMCParameters (int & __argc, char * * & __argv) {
+00042 
+00043   eoParser parser (__argc, __argv);
+00044 
+00045   /* Schema */
+00046   eoValueParam <std :: string> schema_param ("schema.xml", "schema", "?");
+00047   parser.processParam (schema_param);
+00048   loadSchema (schema_param.value ().c_str ());
+00049 }
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/src_2rmc_2mpi_2param_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/src_2rmc_2mpi_2param_8h-source.html new file mode 100644 index 000000000..5de9ceb5d --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/src_2rmc_2mpi_2param_8h-source.html @@ -0,0 +1,71 @@ + + +ParadisEO-PEOMovingObjects: param.h Source File + + + + +
+
+

param.h

00001 /* 
+00002 * <param.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __rmc_param_h
+00038 #define __rmc_param_h
+00039 
+00040 extern void loadRMCParameters (int & __argc, char * * & __argv);
+00041 
+00042 #endif
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structNode-members.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structNode-members.html new file mode 100644 index 000000000..607b10646 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structNode-members.html @@ -0,0 +1,42 @@ + + +ParadisEO-PEO: Member List + + + + +
+
+ +

Node Member List

This is the complete list of members for Node, including all inherited members.

+ + + + + +
id_runNode
nameNode
num_workersNode
rkNode
rk_schedNode


Generated on Thu Jul 5 13:40:47 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structNode.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structNode.html new file mode 100644 index 000000000..feca8d02e --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structNode.html @@ -0,0 +1,62 @@ + + +ParadisEO-PEO: Node Struct Reference + + + + +
+
+ +

Node Struct Reference

List of all members. + + + + + + + + + + + + +

Public Attributes

+RANK_ID rk
+std::string name
+unsigned num_workers
+int rk_sched
+std::vector< RUNNER_ID > id_run
+

Detailed Description

+ +

+ +

+Definition at line 20 of file schema.h.


The documentation for this struct was generated from the following file: +
Generated on Thu Jul 5 13:40:47 2007 for ParadisEO-PEO by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structRandomExplorationAlgorithm-members.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structRandomExplorationAlgorithm-members.html new file mode 100644 index 000000000..f45769568 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structRandomExplorationAlgorithm-members.html @@ -0,0 +1,41 @@ + + +ParadisEO-PEOMovingObjects: Member List + + + + +
+
+ +

RandomExplorationAlgorithm Member List

This is the complete list of members for RandomExplorationAlgorithm, including all inherited members.

+ + + + +
operator()()RandomExplorationAlgorithm [inline]
parallelExecutionRandomExplorationAlgorithm
popEvalRandomExplorationAlgorithm
RandomExplorationAlgorithm(peoPopEval< Route > &__popEval, peoSynchronousMultiStart< Route > &extParallelExecution)RandomExplorationAlgorithm [inline]


Generated on Mon Oct 8 11:16:49 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structRandomExplorationAlgorithm.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structRandomExplorationAlgorithm.html new file mode 100644 index 000000000..400d3148d --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structRandomExplorationAlgorithm.html @@ -0,0 +1,61 @@ + + +ParadisEO-PEOMovingObjects: RandomExplorationAlgorithm Struct Reference + + + + +
+
+ +

RandomExplorationAlgorithm Struct Reference

List of all members. + + + + + + + + + + + +

Public Member Functions

RandomExplorationAlgorithm (peoPopEval< Route > &__popEval, peoSynchronousMultiStart< Route > &extParallelExecution)
+void operator() ()

Public Attributes

+peoPopEval< Route > & popEval
+peoSynchronousMultiStart<
+ Route > & 
parallelExecution
+

Detailed Description

+ +

+ +

+Definition at line 56 of file LessonParallelAlgorithm/main.cpp.


The documentation for this struct was generated from the following file: +
Generated on Mon Oct 8 11:16:49 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structSEND__REQUEST-members.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structSEND__REQUEST-members.html new file mode 100644 index 000000000..e3d9f7ca9 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structSEND__REQUEST-members.html @@ -0,0 +1,40 @@ + + +ParadisEO-PEOMovingObjects: Member List + + + + +
+
+ +

SEND_REQUEST Member List

This is the complete list of members for SEND_REQUEST, including all inherited members.

+ + + +
commSEND_REQUEST
tagSEND_REQUEST
toSEND_REQUEST


Generated on Mon Oct 8 11:16:49 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structSEND__REQUEST.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structSEND__REQUEST.html new file mode 100644 index 000000000..307bc5ff4 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structSEND__REQUEST.html @@ -0,0 +1,56 @@ + + +ParadisEO-PEOMovingObjects: SEND_REQUEST Struct Reference + + + + +
+
+ +

SEND_REQUEST Struct Reference

List of all members. + + + + + + + + +

Public Attributes

+Communicablecomm
+int to
+int tag
+

Detailed Description

+ +

+ +

+Definition at line 52 of file send.cpp.


The documentation for this struct was generated from the following file: +
Generated on Mon Oct 8 11:16:49 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoParallelAlgorithmWrapper_1_1AbstractAlgorithm-members.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoParallelAlgorithmWrapper_1_1AbstractAlgorithm-members.html new file mode 100644 index 000000000..875eaa683 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoParallelAlgorithmWrapper_1_1AbstractAlgorithm-members.html @@ -0,0 +1,39 @@ + + +ParadisEO-PEOMovingObjects: Member List + + + + +
+
+ +

peoParallelAlgorithmWrapper::AbstractAlgorithm Member List

This is the complete list of members for peoParallelAlgorithmWrapper::AbstractAlgorithm, including all inherited members.

+ + +
operator()()peoParallelAlgorithmWrapper::AbstractAlgorithm [inline, virtual]
~AbstractAlgorithm()peoParallelAlgorithmWrapper::AbstractAlgorithm [inline, virtual]


Generated on Mon Oct 8 11:16:47 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoParallelAlgorithmWrapper_1_1AbstractAlgorithm.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoParallelAlgorithmWrapper_1_1AbstractAlgorithm.html new file mode 100644 index 000000000..cc8b12e0d --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoParallelAlgorithmWrapper_1_1AbstractAlgorithm.html @@ -0,0 +1,61 @@ + + +ParadisEO-PEOMovingObjects: peoParallelAlgorithmWrapper::AbstractAlgorithm Struct Reference + + + + +
+
+ + +

peoParallelAlgorithmWrapper::AbstractAlgorithm Struct Reference

Inheritance diagram for peoParallelAlgorithmWrapper::AbstractAlgorithm: +

+ +peoParallelAlgorithmWrapper::Algorithm< AlgorithmType, AlgorithmDataType > +peoParallelAlgorithmWrapper::Algorithm< AlgorithmType, void > + +List of all members. + + + + + + +

Public Member Functions

+virtual ~AbstractAlgorithm ()
+virtual void operator() ()
+

Detailed Description

+ +

+ +

+Definition at line 71 of file peoParallelAlgorithmWrapper.h.


The documentation for this struct was generated from the following file: +
Generated on Mon Oct 8 11:16:47 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoParallelAlgorithmWrapper_1_1AbstractAlgorithm.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoParallelAlgorithmWrapper_1_1AbstractAlgorithm.png new file mode 100644 index 000000000..88c4e7f51 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoParallelAlgorithmWrapper_1_1AbstractAlgorithm.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoParallelAlgorithmWrapper_1_1Algorithm-members.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoParallelAlgorithmWrapper_1_1Algorithm-members.html new file mode 100644 index 000000000..5a7b0bdfe --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoParallelAlgorithmWrapper_1_1Algorithm-members.html @@ -0,0 +1,42 @@ + + +ParadisEO-PEOMovingObjects: Member List + + + + +
+
+ +

peoParallelAlgorithmWrapper::Algorithm< AlgorithmType, AlgorithmDataType > Member List

This is the complete list of members for peoParallelAlgorithmWrapper::Algorithm< AlgorithmType, AlgorithmDataType >, including all inherited members.

+ + + + + +
algorithmpeoParallelAlgorithmWrapper::Algorithm< AlgorithmType, AlgorithmDataType >
Algorithm(AlgorithmType &externalAlgorithm, AlgorithmDataType &externalData)peoParallelAlgorithmWrapper::Algorithm< AlgorithmType, AlgorithmDataType > [inline]
algorithmDatapeoParallelAlgorithmWrapper::Algorithm< AlgorithmType, AlgorithmDataType >
operator()()peoParallelAlgorithmWrapper::Algorithm< AlgorithmType, AlgorithmDataType > [inline, virtual]
~AbstractAlgorithm()peoParallelAlgorithmWrapper::AbstractAlgorithm [inline, virtual]


Generated on Mon Oct 8 11:16:47 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoParallelAlgorithmWrapper_1_1Algorithm.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoParallelAlgorithmWrapper_1_1Algorithm.html new file mode 100644 index 000000000..81a64ce4f --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoParallelAlgorithmWrapper_1_1Algorithm.html @@ -0,0 +1,70 @@ + + +ParadisEO-PEOMovingObjects: peoParallelAlgorithmWrapper::Algorithm< AlgorithmType, AlgorithmDataType > Struct Template Reference + + + + +
+
+ + +

peoParallelAlgorithmWrapper::Algorithm< AlgorithmType, AlgorithmDataType > Struct Template Reference

Inheritance diagram for peoParallelAlgorithmWrapper::Algorithm< AlgorithmType, AlgorithmDataType >: +

+ +peoParallelAlgorithmWrapper::AbstractAlgorithm + +List of all members. + + + + + + + + + + + +

Public Member Functions

Algorithm (AlgorithmType &externalAlgorithm, AlgorithmDataType &externalData)
+virtual void operator() ()

Public Attributes

+AlgorithmType & algorithm
+AlgorithmDataType & algorithmData
+

Detailed Description

+

template<typename AlgorithmType, typename AlgorithmDataType>
+ struct peoParallelAlgorithmWrapper::Algorithm< AlgorithmType, AlgorithmDataType >

+ + +

+ +

+Definition at line 81 of file peoParallelAlgorithmWrapper.h.


The documentation for this struct was generated from the following file: +
Generated on Mon Oct 8 11:16:47 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoParallelAlgorithmWrapper_1_1Algorithm.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoParallelAlgorithmWrapper_1_1Algorithm.png new file mode 100644 index 000000000..8017c720c Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoParallelAlgorithmWrapper_1_1Algorithm.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoParallelAlgorithmWrapper_1_1Algorithm_3_01AlgorithmType_00_01void_01_4-members.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoParallelAlgorithmWrapper_1_1Algorithm_3_01AlgorithmType_00_01void_01_4-members.html new file mode 100644 index 000000000..234d9cc92 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoParallelAlgorithmWrapper_1_1Algorithm_3_01AlgorithmType_00_01void_01_4-members.html @@ -0,0 +1,41 @@ + + +ParadisEO-PEOMovingObjects: Member List + + + + +
+
+ +

peoParallelAlgorithmWrapper::Algorithm< AlgorithmType, void > Member List

This is the complete list of members for peoParallelAlgorithmWrapper::Algorithm< AlgorithmType, void >, including all inherited members.

+ + + + +
algorithmpeoParallelAlgorithmWrapper::Algorithm< AlgorithmType, void >
Algorithm(AlgorithmType &externalAlgorithm)peoParallelAlgorithmWrapper::Algorithm< AlgorithmType, void > [inline]
operator()()peoParallelAlgorithmWrapper::Algorithm< AlgorithmType, void > [inline, virtual]
~AbstractAlgorithm()peoParallelAlgorithmWrapper::AbstractAlgorithm [inline, virtual]


Generated on Mon Oct 8 11:16:47 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoParallelAlgorithmWrapper_1_1Algorithm_3_01AlgorithmType_00_01void_01_4.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoParallelAlgorithmWrapper_1_1Algorithm_3_01AlgorithmType_00_01void_01_4.html new file mode 100644 index 000000000..f49b5d557 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoParallelAlgorithmWrapper_1_1Algorithm_3_01AlgorithmType_00_01void_01_4.html @@ -0,0 +1,67 @@ + + +ParadisEO-PEOMovingObjects: peoParallelAlgorithmWrapper::Algorithm< AlgorithmType, void > Struct Template Reference + + + + +
+
+ + +

peoParallelAlgorithmWrapper::Algorithm< AlgorithmType, void > Struct Template Reference

Inheritance diagram for peoParallelAlgorithmWrapper::Algorithm< AlgorithmType, void >: +

+ +peoParallelAlgorithmWrapper::AbstractAlgorithm + +List of all members. + + + + + + + + + +

Public Member Functions

Algorithm (AlgorithmType &externalAlgorithm)
+virtual void operator() ()

Public Attributes

+AlgorithmType & algorithm
+

Detailed Description

+

template<typename AlgorithmType>
+ struct peoParallelAlgorithmWrapper::Algorithm< AlgorithmType, void >

+ + +

+ +

+Definition at line 95 of file peoParallelAlgorithmWrapper.h.


The documentation for this struct was generated from the following file: +
Generated on Mon Oct 8 11:16:47 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoParallelAlgorithmWrapper_1_1Algorithm_3_01AlgorithmType_00_01void_01_4.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoParallelAlgorithmWrapper_1_1Algorithm_3_01AlgorithmType_00_01void_01_4.png new file mode 100644 index 000000000..e7f3958d0 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoParallelAlgorithmWrapper_1_1Algorithm_3_01AlgorithmType_00_01void_01_4.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1AbstractAggregationAlgorithm-members.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1AbstractAggregationAlgorithm-members.html new file mode 100644 index 000000000..66cf13e18 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1AbstractAggregationAlgorithm-members.html @@ -0,0 +1,39 @@ + + +ParadisEO-PEOMovingObjects: Member List + + + + +
+
+ +

peoSynchronousMultiStart< EntityType >::AbstractAggregationAlgorithm Member List

This is the complete list of members for peoSynchronousMultiStart< EntityType >::AbstractAggregationAlgorithm, including all inherited members.

+ + +
operator()(AbstractDataType &dataTypeInstanceA, AbstractDataType &dataTypeInstanceB)peoSynchronousMultiStart< EntityType >::AbstractAggregationAlgorithm [inline, virtual]
~AbstractAggregationAlgorithm()peoSynchronousMultiStart< EntityType >::AbstractAggregationAlgorithm [inline, virtual]


Generated on Mon Oct 8 11:16:48 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1AbstractAggregationAlgorithm.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1AbstractAggregationAlgorithm.html new file mode 100644 index 000000000..4d647d542 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1AbstractAggregationAlgorithm.html @@ -0,0 +1,64 @@ + + +ParadisEO-PEOMovingObjects: peoSynchronousMultiStart< EntityType >::AbstractAggregationAlgorithm Struct Reference + + + + +
+
+ + +

peoSynchronousMultiStart< EntityType >::AbstractAggregationAlgorithm Struct Reference

Inheritance diagram for peoSynchronousMultiStart< EntityType >::AbstractAggregationAlgorithm: +

+ +peoSynchronousMultiStart< EntityType >::AggregationAlgorithm< AggregationAlgorithmType > +peoSynchronousMultiStart< EntityType >::NoAggregationFunction + +List of all members. + + + + + + +

Public Member Functions

+virtual ~AbstractAggregationAlgorithm ()
+virtual void operator() (AbstractDataType &dataTypeInstanceA, AbstractDataType &dataTypeInstanceB)
+

Detailed Description

+

template<typename EntityType>
+ struct peoSynchronousMultiStart< EntityType >::AbstractAggregationAlgorithm

+ + +

+ +

+Definition at line 157 of file peoSynchronousMultiStart.h.


The documentation for this struct was generated from the following file: +
Generated on Mon Oct 8 11:16:48 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1AbstractAggregationAlgorithm.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1AbstractAggregationAlgorithm.png new file mode 100644 index 000000000..d29a3362b Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1AbstractAggregationAlgorithm.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1AbstractAlgorithm-members.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1AbstractAlgorithm-members.html new file mode 100644 index 000000000..8779005d8 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1AbstractAlgorithm-members.html @@ -0,0 +1,39 @@ + + +ParadisEO-PEOMovingObjects: Member List + + + + +
+
+ +

peoSynchronousMultiStart< EntityType >::AbstractAlgorithm Member List

This is the complete list of members for peoSynchronousMultiStart< EntityType >::AbstractAlgorithm, including all inherited members.

+ + +
operator()(AbstractDataType &dataTypeInstance)peoSynchronousMultiStart< EntityType >::AbstractAlgorithm [inline, virtual]
~AbstractAlgorithm()peoSynchronousMultiStart< EntityType >::AbstractAlgorithm [inline, virtual]


Generated on Mon Oct 8 11:16:48 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1AbstractAlgorithm.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1AbstractAlgorithm.html new file mode 100644 index 000000000..d12786ed0 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1AbstractAlgorithm.html @@ -0,0 +1,63 @@ + + +ParadisEO-PEOMovingObjects: peoSynchronousMultiStart< EntityType >::AbstractAlgorithm Struct Reference + + + + +
+
+ + +

peoSynchronousMultiStart< EntityType >::AbstractAlgorithm Struct Reference

Inheritance diagram for peoSynchronousMultiStart< EntityType >::AbstractAlgorithm: +

+ +peoSynchronousMultiStart< EntityType >::Algorithm< AlgorithmType > + +List of all members. + + + + + + +

Public Member Functions

+virtual ~AbstractAlgorithm ()
+virtual void operator() (AbstractDataType &dataTypeInstance)
+

Detailed Description

+

template<typename EntityType>
+ struct peoSynchronousMultiStart< EntityType >::AbstractAlgorithm

+ + +

+ +

+Definition at line 139 of file peoSynchronousMultiStart.h.


The documentation for this struct was generated from the following file: +
Generated on Mon Oct 8 11:16:48 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1AbstractAlgorithm.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1AbstractAlgorithm.png new file mode 100644 index 000000000..0861ea04a Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1AbstractAlgorithm.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1AbstractDataType-members.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1AbstractDataType-members.html new file mode 100644 index 000000000..2ae5dfe8e --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1AbstractDataType-members.html @@ -0,0 +1,39 @@ + + +ParadisEO-PEOMovingObjects: Member List + + + + +
+
+ +

peoSynchronousMultiStart< EntityType >::AbstractDataType Member List

This is the complete list of members for peoSynchronousMultiStart< EntityType >::AbstractDataType, including all inherited members.

+ + +
operator Type &()peoSynchronousMultiStart< EntityType >::AbstractDataType [inline]
~AbstractDataType()peoSynchronousMultiStart< EntityType >::AbstractDataType [inline, virtual]


Generated on Mon Oct 8 11:16:48 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1AbstractDataType.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1AbstractDataType.html new file mode 100644 index 000000000..0b9ce2e85 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1AbstractDataType.html @@ -0,0 +1,64 @@ + + +ParadisEO-PEOMovingObjects: peoSynchronousMultiStart< EntityType >::AbstractDataType Struct Reference + + + + +
+
+ + +

peoSynchronousMultiStart< EntityType >::AbstractDataType Struct Reference

Inheritance diagram for peoSynchronousMultiStart< EntityType >::AbstractDataType: +

+ +peoSynchronousMultiStart< EntityType >::DataType< Type > + +List of all members. + + + + + + + +

Public Member Functions

+virtual ~AbstractDataType ()
+template<typename Type>
 operator Type & ()
+

Detailed Description

+

template<typename EntityType>
+ struct peoSynchronousMultiStart< EntityType >::AbstractDataType

+ + +

+ +

+Definition at line 122 of file peoSynchronousMultiStart.h.


The documentation for this struct was generated from the following file: +
Generated on Mon Oct 8 11:16:48 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1AbstractDataType.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1AbstractDataType.png new file mode 100644 index 000000000..fdec90776 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1AbstractDataType.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1AggregationAlgorithm-members.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1AggregationAlgorithm-members.html new file mode 100644 index 000000000..96c7aaa52 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1AggregationAlgorithm-members.html @@ -0,0 +1,41 @@ + + +ParadisEO-PEOMovingObjects: Member List + + + + +
+
+ +

peoSynchronousMultiStart< EntityType >::AggregationAlgorithm< AggregationAlgorithmType > Member List

This is the complete list of members for peoSynchronousMultiStart< EntityType >::AggregationAlgorithm< AggregationAlgorithmType >, including all inherited members.

+ + + + +
aggregationAlgorithmpeoSynchronousMultiStart< EntityType >::AggregationAlgorithm< AggregationAlgorithmType >
AggregationAlgorithm(AggregationAlgorithmType &externalAggregationAlgorithm)peoSynchronousMultiStart< EntityType >::AggregationAlgorithm< AggregationAlgorithmType > [inline]
operator()(AbstractDataType &dataTypeInstanceA, AbstractDataType &dataTypeInstanceB)peoSynchronousMultiStart< EntityType >::AggregationAlgorithm< AggregationAlgorithmType > [inline, virtual]
~AbstractAggregationAlgorithm()peoSynchronousMultiStart< EntityType >::AbstractAggregationAlgorithm [inline, virtual]


Generated on Mon Oct 8 11:16:48 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1AggregationAlgorithm.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1AggregationAlgorithm.html new file mode 100644 index 000000000..8b82eb1cf --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1AggregationAlgorithm.html @@ -0,0 +1,68 @@ + + +ParadisEO-PEOMovingObjects: peoSynchronousMultiStart< EntityType >::AggregationAlgorithm< AggregationAlgorithmType > Struct Template Reference + + + + +
+
+ + +

peoSynchronousMultiStart< EntityType >::AggregationAlgorithm< AggregationAlgorithmType > Struct Template Reference

Inheritance diagram for peoSynchronousMultiStart< EntityType >::AggregationAlgorithm< AggregationAlgorithmType >: +

+ +peoSynchronousMultiStart< EntityType >::AbstractAggregationAlgorithm + +List of all members. + + + + + + + + + +

Public Member Functions

AggregationAlgorithm (AggregationAlgorithmType &externalAggregationAlgorithm)
+void operator() (AbstractDataType &dataTypeInstanceA, AbstractDataType &dataTypeInstanceB)

Public Attributes

+AggregationAlgorithmType & aggregationAlgorithm
+

Detailed Description

+

template<typename EntityType>
+template<typename AggregationAlgorithmType>
+ struct peoSynchronousMultiStart< EntityType >::AggregationAlgorithm< AggregationAlgorithmType >

+ + +

+ +

+Definition at line 164 of file peoSynchronousMultiStart.h.


The documentation for this struct was generated from the following file: +
Generated on Mon Oct 8 11:16:48 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1AggregationAlgorithm.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1AggregationAlgorithm.png new file mode 100644 index 000000000..3b9e8664e Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1AggregationAlgorithm.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1Algorithm-members.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1Algorithm-members.html new file mode 100644 index 000000000..8aa35189e --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1Algorithm-members.html @@ -0,0 +1,41 @@ + + +ParadisEO-PEOMovingObjects: Member List + + + + +
+
+ +

peoSynchronousMultiStart< EntityType >::Algorithm< AlgorithmType > Member List

This is the complete list of members for peoSynchronousMultiStart< EntityType >::Algorithm< AlgorithmType >, including all inherited members.

+ + + + +
algorithmpeoSynchronousMultiStart< EntityType >::Algorithm< AlgorithmType >
Algorithm(AlgorithmType &externalAlgorithm)peoSynchronousMultiStart< EntityType >::Algorithm< AlgorithmType > [inline]
operator()(AbstractDataType &dataTypeInstance)peoSynchronousMultiStart< EntityType >::Algorithm< AlgorithmType > [inline, virtual]
~AbstractAlgorithm()peoSynchronousMultiStart< EntityType >::AbstractAlgorithm [inline, virtual]


Generated on Mon Oct 8 11:16:48 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1Algorithm.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1Algorithm.html new file mode 100644 index 000000000..74d0eeb9f --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1Algorithm.html @@ -0,0 +1,68 @@ + + +ParadisEO-PEOMovingObjects: peoSynchronousMultiStart< EntityType >::Algorithm< AlgorithmType > Struct Template Reference + + + + +
+
+ + +

peoSynchronousMultiStart< EntityType >::Algorithm< AlgorithmType > Struct Template Reference

Inheritance diagram for peoSynchronousMultiStart< EntityType >::Algorithm< AlgorithmType >: +

+ +peoSynchronousMultiStart< EntityType >::AbstractAlgorithm + +List of all members. + + + + + + + + + +

Public Member Functions

Algorithm (AlgorithmType &externalAlgorithm)
+void operator() (AbstractDataType &dataTypeInstance)

Public Attributes

+AlgorithmType & algorithm
+

Detailed Description

+

template<typename EntityType>
+template<typename AlgorithmType>
+ struct peoSynchronousMultiStart< EntityType >::Algorithm< AlgorithmType >

+ + +

+ +

+Definition at line 146 of file peoSynchronousMultiStart.h.


The documentation for this struct was generated from the following file: +
Generated on Mon Oct 8 11:16:48 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1Algorithm.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1Algorithm.png new file mode 100644 index 000000000..e3a21bff5 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1Algorithm.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1DataType-members.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1DataType-members.html new file mode 100644 index 000000000..ca702c581 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1DataType-members.html @@ -0,0 +1,41 @@ + + +ParadisEO-PEOMovingObjects: Member List + + + + +
+
+ +

peoSynchronousMultiStart< EntityType >::DataType< Type > Member List

This is the complete list of members for peoSynchronousMultiStart< EntityType >::DataType< Type >, including all inherited members.

+ + + + +
datapeoSynchronousMultiStart< EntityType >::DataType< Type >
DataType(Type &externalData)peoSynchronousMultiStart< EntityType >::DataType< Type > [inline]
operator Type &()peoSynchronousMultiStart< EntityType >::AbstractDataType [inline]
~AbstractDataType()peoSynchronousMultiStart< EntityType >::AbstractDataType [inline, virtual]


Generated on Mon Oct 8 11:16:49 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1DataType.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1DataType.html new file mode 100644 index 000000000..7887d2433 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1DataType.html @@ -0,0 +1,65 @@ + + +ParadisEO-PEOMovingObjects: peoSynchronousMultiStart< EntityType >::DataType< Type > Struct Template Reference + + + + +
+
+ + +

peoSynchronousMultiStart< EntityType >::DataType< Type > Struct Template Reference

Inheritance diagram for peoSynchronousMultiStart< EntityType >::DataType< Type >: +

+ +peoSynchronousMultiStart< EntityType >::AbstractDataType + +List of all members. + + + + + + + +

Public Member Functions

DataType (Type &externalData)

Public Attributes

+Type & data
+

Detailed Description

+

template<typename EntityType>
+template<typename Type>
+ struct peoSynchronousMultiStart< EntityType >::DataType< Type >

+ + +

+ +

+Definition at line 132 of file peoSynchronousMultiStart.h.


The documentation for this struct was generated from the following file: +
Generated on Mon Oct 8 11:16:49 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1DataType.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1DataType.png new file mode 100644 index 000000000..27559b2de Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1DataType.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1NoAggregationFunction-members.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1NoAggregationFunction-members.html new file mode 100644 index 000000000..63011af07 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1NoAggregationFunction-members.html @@ -0,0 +1,39 @@ + + +ParadisEO-PEOMovingObjects: Member List + + + + +
+
+ +

peoSynchronousMultiStart< EntityType >::NoAggregationFunction Member List

This is the complete list of members for peoSynchronousMultiStart< EntityType >::NoAggregationFunction, including all inherited members.

+ + +
operator()(AbstractDataType &dataTypeInstanceA, AbstractDataType &dataTypeInstanceB)peoSynchronousMultiStart< EntityType >::NoAggregationFunction [inline, virtual]
~AbstractAggregationAlgorithm()peoSynchronousMultiStart< EntityType >::AbstractAggregationAlgorithm [inline, virtual]


Generated on Mon Oct 8 11:16:49 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1NoAggregationFunction.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1NoAggregationFunction.html new file mode 100644 index 000000000..45c1478e8 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1NoAggregationFunction.html @@ -0,0 +1,60 @@ + + +ParadisEO-PEOMovingObjects: peoSynchronousMultiStart< EntityType >::NoAggregationFunction Struct Reference + + + + +
+
+ + +

peoSynchronousMultiStart< EntityType >::NoAggregationFunction Struct Reference

Inheritance diagram for peoSynchronousMultiStart< EntityType >::NoAggregationFunction: +

+ +peoSynchronousMultiStart< EntityType >::AbstractAggregationAlgorithm + +List of all members. + + + + +

Public Member Functions

+void operator() (AbstractDataType &dataTypeInstanceA, AbstractDataType &dataTypeInstanceB)
+

Detailed Description

+

template<typename EntityType>
+ struct peoSynchronousMultiStart< EntityType >::NoAggregationFunction

+ + +

+ +

+Definition at line 176 of file peoSynchronousMultiStart.h.


The documentation for this struct was generated from the following file: +
Generated on Mon Oct 8 11:16:49 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1NoAggregationFunction.png b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1NoAggregationFunction.png new file mode 100644 index 000000000..ca3756877 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/structpeoSynchronousMultiStart_1_1NoAggregationFunction.png differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/t-peo_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/t-peo_8cpp-source.html new file mode 100644 index 000000000..fffa8530d --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/t-peo_8cpp-source.html @@ -0,0 +1,83 @@ + + +ParadisEO-PEOMovingObjects: t-peo.cpp Source File + + + + +
+
+

t-peo.cpp

00001 /* 
+00002 * <t-peo.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 //-----------------------------------------------------------------------------
+00037 // t-peo.cpp
+00038 //-----------------------------------------------------------------------------
+00039 
+00040 #include <peo.h>
+00041 
+00042 //-----------------------------------------------------------------------------
+00043 
+00044 
+00045 //-----------------------------------------------------------------------------
+00046 
+00047 int main()
+00048 {
+00049   std::cout << "Please fill the test" << std::endl;
+00050 
+00051   return 0;
+00052 }
+00053 
+00054 //-----------------------------------------------------------------------------
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/tab_b.gif b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/tab_b.gif new file mode 100644 index 000000000..0d623483f Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/tab_b.gif differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/tab_l.gif b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/tab_l.gif new file mode 100644 index 000000000..9b1e6337c Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/tab_l.gif differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/tab_r.gif b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/tab_r.gif new file mode 100644 index 000000000..ce9dd9f53 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/tab_r.gif differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/tabs.css b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/tabs.css new file mode 100644 index 000000000..a61552a67 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/tabs.css @@ -0,0 +1,102 @@ +/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */ + +DIV.tabs +{ + float : left; + width : 100%; + background : url("tab_b.gif") repeat-x bottom; + margin-bottom : 4px; +} + +DIV.tabs UL +{ + margin : 0px; + padding-left : 10px; + list-style : none; +} + +DIV.tabs LI, DIV.tabs FORM +{ + display : inline; + margin : 0px; + padding : 0px; +} + +DIV.tabs FORM +{ + float : right; +} + +DIV.tabs A +{ + float : left; + background : url("tab_r.gif") no-repeat right top; + border-bottom : 1px solid #84B0C7; + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + +DIV.tabs A:hover +{ + background-position: 100% -150px; +} + +DIV.tabs A:link, DIV.tabs A:visited, +DIV.tabs A:active, DIV.tabs A:hover +{ + color: #1A419D; +} + +DIV.tabs SPAN +{ + float : left; + display : block; + background : url("tab_l.gif") no-repeat left top; + padding : 5px 9px; + white-space : nowrap; +} + +DIV.tabs INPUT +{ + float : right; + display : inline; + font-size : 1em; +} + +DIV.tabs TD +{ + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + + + +/* Commented Backslash Hack hides rule from IE5-Mac \*/ +DIV.tabs SPAN {float : none;} +/* End IE5-Mac hack */ + +DIV.tabs A:hover SPAN +{ + background-position: 0% -150px; +} + +DIV.tabs LI#current A +{ + background-position: 100% -150px; + border-width : 0px; +} + +DIV.tabs LI#current SPAN +{ + background-position: 0% -150px; + padding-bottom : 6px; +} + +DIV.nav +{ + background : none; + border : none; + border-bottom : 1px solid #84B0C7; +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/tags_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/tags_8h-source.html new file mode 100644 index 000000000..5527f749f --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/tags_8h-source.html @@ -0,0 +1,81 @@ + + +ParadisEO-PEOMovingObjects: tags.h Source File + + + + +
+
+

tags.h

00001 /* 
+00002 * <tags.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __tags_h
+00038 #define __tags_h
+00039 
+00040 #define RUNNER_STOP_TAG 13
+00041 
+00042 #define COOP_TAG 14
+00043 
+00044 #define SCHED_REQUEST_TAG 16
+00045 
+00046 #define SCHED_RESULT_TAG 17
+00047 #define TASK_DATA_TAG 18
+00048 
+00049 #define TASK_RESULT_TAG 19
+00050 #define TASK_DONE_TAG 20
+00051 
+00052 #endif
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/thread_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/thread_8cpp-source.html new file mode 100644 index 000000000..766870290 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/thread_8cpp-source.html @@ -0,0 +1,138 @@ + + +ParadisEO-PEOMovingObjects: thread.cpp Source File + + + + +
+
+

thread.cpp

00001 /* 
+00002 * <thread.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include <map>
+00038 
+00039 #include "thread.h"
+00040 
+00041 static std :: vector <Thread *> threads;
+00042 
+00043 unsigned num_act = 0;
+00044 
+00045 Thread :: Thread () {
+00046         
+00047   threads.push_back (this);
+00048   act = false;
+00049 }
+00050 
+00051 Thread :: ~ Thread () {
+00052 
+00053   /* Nothing ! */
+00054 }
+00055 
+00056 extern int getNodeRank ();
+00057 
+00058 void Thread :: setActive () {
+00059 
+00060   if (! act ) {
+00061 
+00062     act = true;
+00063     num_act ++;
+00064     //    if (getNodeRank () == 1)      
+00065     //   printf ("On passe a %d\n", num_act);
+00066   }
+00067 }
+00068 
+00069 void Thread :: setPassive () {
+00070 
+00071   if (act) {
+00072 
+00073    act = false;
+00074     num_act --;
+00075     //    if (getNodeRank () == 1)      
+00076     //  printf ("On passe a %d\n", num_act);
+00077 
+00078   } 
+00079 }
+00080 
+00081 bool atLeastOneActiveThread () {
+00082 
+00083   return num_act;
+00084 }
+00085 
+00086 unsigned numberOfActiveThreads () {
+00087 
+00088   return num_act;
+00089 }
+00090 
+00091 static void * launch (void * __arg) {
+00092 
+00093   Thread * thr = (Thread *) __arg;  
+00094   thr -> start ();
+00095   return 0;
+00096 }
+00097 
+00098 void addThread (Thread * __hl_thread, std :: vector <pthread_t *> & __ll_threads) {
+00099 
+00100   pthread_t * ll_thr = new pthread_t;
+00101   __ll_threads.push_back (ll_thr);
+00102   pthread_create (ll_thr, 0, launch, __hl_thread); 
+00103 }
+00104 
+00105 void joinThreads (std :: vector <pthread_t *> & __threads) {
+00106 
+00107   for (unsigned i = 0; i < __threads.size (); i ++)    
+00108     pthread_join (* __threads [i], 0);  
+00109 }
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/thread_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/thread_8h-source.html new file mode 100644 index 000000000..0ed667519 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/thread_8h-source.html @@ -0,0 +1,105 @@ + + +ParadisEO-PEOMovingObjects: thread.h Source File + + + + +
+
+

thread.h

00001 /* 
+00002 * <thread.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef THREAD_H_
+00038 #define THREAD_H_
+00039 
+00040 #include <vector>
+00041 
+00042 /* A high-level thread */
+00043 
+00044 class Thread {
+00045         
+00046 public:
+00047 
+00048   /* Ctor */
+00049   Thread ();
+00050 
+00051   /* Dtor */
+00052   virtual ~ Thread ();
+00053   
+00054   /* Go ! */
+00055   virtual void start () = 0;
+00056 
+00057   void setActive ();/* It means the current process is going to send messages soon */
+00058   void setPassive ();/* The current process is not going to perform send operations
+00059                         (but it may receive messages) */
+00060 
+00061 private :
+00062   
+00063   bool act;
+00064 };
+00065 
+00066 extern void addThread (Thread * __hl_thread, std :: vector <pthread_t *> & __ll_threads);
+00067 
+00068 extern void joinThreads (std :: vector <pthread_t *> & __ll_threads);
+00069 
+00070 extern bool atLeastOneActiveThread (); /* It returns 'true' iff at least one process is going
+00071                                       to send messages */
+00072   
+00073 extern unsigned numberOfActiveThreads ();
+00074 
+00075 
+00076 #endif /*THREAD_H_*/
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/topology_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/topology_8cpp-source.html new file mode 100644 index 000000000..d7bb2dd7c --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/topology_8cpp-source.html @@ -0,0 +1,77 @@ + + +ParadisEO-PEOMovingObjects: topology.cpp Source File + + + + +
+
+

topology.cpp

00001 /* 
+00002 * <topology.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include "topology.h"
+00038 
+00039 Topology :: ~ Topology () {
+00040   
+00041   /* Nothing ! */
+00042 }
+00043 
+00044 void Topology :: add (Cooperative & __mig) {
+00045   
+00046   mig.push_back (& __mig) ;
+00047 } 
+00048 
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/topology_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/topology_8h-source.html new file mode 100644 index 000000000..6bc3277cd --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/topology_8h-source.html @@ -0,0 +1,90 @@ + + +ParadisEO-PEOMovingObjects: topology.h Source File + + + + +
+
+

topology.h

00001 /* 
+00002 * <topology.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __topology_h
+00038 #define __topology_h
+00039 
+00040 #include <vector>
+00041 
+00042 #include "cooperative.h"
+00043 
+00044 class Topology {
+00045 
+00046 public:
+00047 
+00048         virtual ~Topology ();
+00049 
+00050         void add (Cooperative & __mig); 
+00051 
+00052         virtual void setNeighbors (Cooperative * __mig,
+00053                                 std :: vector <Cooperative *> & __from,
+00054                                 std :: vector <Cooperative *> & __to) = 0;
+00055 
+00056 protected:
+00057 
+00058         std :: vector <Cooperative *> mig ;  
+00059 };
+00060 
+00061 #endif
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/tree.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/tree.html new file mode 100644 index 000000000..560832a67 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/tree.html @@ -0,0 +1,336 @@ + + + + + + + TreeView + + + + +
+

ParadisEO-PEOMovingObjects

+
+

o*The ParadisEO-PEO Framework

+

o+Class List

+ +

o+Class Hierarchy

+
+

|o+Communicable

+ +

|o+eoFunctorBase [external]

+ +

|o+peoParallelAlgorithmWrapper::AbstractAlgorithm

+ +

|o+peoSynchronousMultiStart< EntityType >::AbstractAggregationAlgorithm

+ +

|o+peoSynchronousMultiStart< EntityType >::AbstractAlgorithm

+ +

|o+peoSynchronousMultiStart< EntityType >::AbstractDataType

+ +

|o*RandomExplorationAlgorithm

+

|o*SEND_REQUEST

+

|o+Thread

+ +

|\+Topology

+ +
+

o*Class Members

+

o+Namespace List

+
+

|\*peo

+
+

o*Namespace Members

+

\+File List

+
+

 o*city_swap.cpp

+

 o*city_swap.h

+

 o*comm.cpp

+

 o*comm.h

+

 o*communicable.cpp

+

 o*communicable.h

+

 o*coop.cpp

+

 o*cooperative.h

+

 o*data.cpp

+

 o*data.h

+

 o*display.cpp

+

 o*display.h

+

 o*display_best_route.cpp

+

 o*display_best_route.h

+

 o*doclsn.h

+

 o*edge_xover.cpp

+

 o*edge_xover.h

+

 o*eoPop_comm.h

+

 o*eoVector_comm.h

+

 o*exampleA.cpp

+

 o*exampleB.cpp

+

 o*exampleC.cpp

+

 o*exampleD.cpp

+

 o*exampleE.cpp

+

 o*Lesson1/main.cpp

+

 o*Lesson2/main.cpp

+

 o*Lesson3/main.cpp

+

 o*LessonParallelAlgorithm/main.cpp

+

 o*merge_route_eval.cpp

+

 o*merge_route_eval.h

+

 o*mess.cpp

+

 o*mess.h

+

 o*messaging.h

+

 o*mix.h

+

 o*src/rmc/mpi/node.cpp

+

 o*tutorial/examples/tsp/node.cpp

+

 o*src/rmc/mpi/node.h

+

 o*tutorial/examples/tsp/node.h

+

 o*opt_route.cpp

+

 o*opt_route.h

+

 o*order_xover.cpp

+

 o*order_xover.h

+

 o*src/rmc/mpi/param.cpp

+

 o*tutorial/examples/tsp/param.cpp

+

 o*src/rmc/mpi/param.h

+

 o*tutorial/examples/tsp/param.h

+

 o*part_route_eval.cpp

+

 o*part_route_eval.h

+

 o*partial_mapped_xover.cpp

+

 o*partial_mapped_xover.h

+

 o*peo.h

+

 o*peo_debug.cpp

+

 o*peo_debug.h

+

 o*peo_fin.cpp

+

 o*peo_fin.h

+

 o*peo_init.cpp

+

 o*peo_init.h

+

 o*peo_param.cpp

+

 o*peo_param.h

+

 o*peo_run.cpp

+

 o*peo_run.h

+

 o*peoAggEvalFunc.h

+

 o*peoAsyncIslandMig.h

+

 o*peoEA.h

+

 o*peoNoAggEvalFunc.h

+

 o*peoParallelAlgorithmWrapper.h

+

 o*peoParaPopEval.h

+

 o*peoParaSGATransform.h

+

 o*peoPopEval.h

+

 o*peoSeqPopEval.h

+

 o*peoSeqTransform.h

+

 o*peoSynchronousMultiStart.h

+

 o*peoSyncIslandMig.h

+

 o*peoSyncMultiStart.h

+

 o*peoTransform.h

+

 o*reac_thread.cpp

+

 o*reac_thread.h

+

 o*README

+

 o*recv.cpp

+

 o*recv.h

+

 o*ring_topo.cpp

+

 o*ring_topo.h

+

 o*rmc.cpp

+

 o*rmc.h

+

 o*route.cpp

+

 o*route.h

+

 o*route_eval.cpp

+

 o*route_eval.h

+

 o*route_init.cpp

+

 o*route_init.h

+

 o*core/runner.cpp

+

 o*rmc/mpi/runner.cpp

+

 o*runner.h

+

 o*scheduler.cpp

+

 o*scheduler.h

+

 o*schema.cpp

+

 o*schema.h

+

 o*send.cpp

+

 o*send.h

+

 o*core/service.cpp

+

 o*rmc/mpi/service.cpp

+

 o*service.h

+

 o*t-peo.cpp

+

 o*tags.h

+

 o*thread.cpp

+

 o*thread.h

+

 o*topology.cpp

+

 o*topology.h

+

 o*two_opt.cpp

+

 o*two_opt.h

+

 o*two_opt_incr_eval.cpp

+

 o*two_opt_incr_eval.h

+

 o*two_opt_init.cpp

+

 o*two_opt_init.h

+

 o*two_opt_next.cpp

+

 o*two_opt_next.h

+

 o*two_opt_rand.cpp

+

 o*two_opt_rand.h

+

 o*worker.cpp

+

 o*worker.h

+

 o*xml_parser.cpp

+

 \*xml_parser.h

+
+
+
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/tutorial_2examples_2tsp_2node_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/tutorial_2examples_2tsp_2node_8cpp-source.html new file mode 100644 index 000000000..9d6d9f2cb --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/tutorial_2examples_2tsp_2node_8cpp-source.html @@ -0,0 +1,134 @@ + + +ParadisEO-PEOMovingObjects: node.cpp Source File + + + + +
+
+

node.cpp

00001 /* 
+00002 * <node.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include <math.h>
+00038 #include <values.h>
+00039 
+00040 #include "node.h"
+00041 
+00042 unsigned numNodes; /* Number of nodes */
+00043 
+00044 //static unsigned * * dist; /* Square matrix of distances */
+00045 
+00046 double * X_coord, * Y_coord;
+00047 
+00048 double X_min = MAXDOUBLE, X_max = MINDOUBLE, Y_min = MAXDOUBLE, Y_max = MINDOUBLE;
+00049 
+00050 void loadNodes (FILE * __f) {
+00051 
+00052   /* Coord */
+00053   
+00054   X_coord = new double [numNodes];
+00055   
+00056   Y_coord = new double [numNodes];
+00057  
+00058   unsigned num;
+00059 
+00060   for (unsigned i = 0; i < numNodes; i ++) {
+00061     
+00062     fscanf (__f, "%u%lf%lf", & num, X_coord + i, Y_coord + i);
+00063     
+00064     if (X_coord [i] < X_min)
+00065       X_min = X_coord [i];
+00066     if (X_coord [i] > X_max)
+00067       X_max = X_coord [i];
+00068     if (Y_coord [i] < Y_min)
+00069       Y_min = Y_coord [i];
+00070     if (Y_coord [i] > Y_max)
+00071       Y_max = Y_coord [i];    
+00072   }
+00073   
+00074   /* Allocation */
+00075   /*
+00076   dist = new unsigned * [numNodes];
+00077   
+00078   for (unsigned i = 0; i < numNodes; i ++)
+00079     dist [i] = new unsigned [numNodes];
+00080   */
+00081   /* Computation of the distances */
+00082   
+00083   /*
+00084   for (unsigned i = 0; i < numNodes; i ++) {
+00085 
+00086     dist [i] [i] = 0;
+00087 
+00088     for (unsigned j = 0; j < numNodes; j ++) {
+00089       
+00090       double dx = X_coord [i] - X_coord [j], dy = Y_coord [i] - Y_coord [j];
+00091       
+00092       dist [i] [j] = dist [j] [i] = (unsigned) (sqrt (dx * dx + dy * dy) + 0.5) ;
+00093     }
+00094     }*/
+00095 }
+00096 
+00097 unsigned distance (Node __from, Node __to) {
+00098 
+00099   //  return dist [__from] [__to];
+00100 
+00101   double dx = X_coord [__from] - X_coord [__to], dy = Y_coord [__from] - Y_coord [__to];
+00102   
+00103   return (unsigned) (sqrt (dx * dx + dy * dy) + 0.5) ;
+00104 }
+00105 
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/tutorial_2examples_2tsp_2node_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/tutorial_2examples_2tsp_2node_8h-source.html new file mode 100644 index 000000000..c8d476ad7 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/tutorial_2examples_2tsp_2node_8h-source.html @@ -0,0 +1,83 @@ + + +ParadisEO-PEOMovingObjects: node.h Source File + + + + +
+
+

node.h

00001 /* 
+00002 * <node.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __node_h
+00038 #define __node_h
+00039 
+00040 #include <stdio.h>
+00041 
+00042 typedef unsigned Node; 
+00043 
+00044 extern double X_min, X_max, Y_min, Y_max;
+00045 
+00046 extern double * X_coord, * Y_coord;
+00047 
+00048 extern unsigned numNodes; /* Number of nodes */
+00049 
+00050 extern void loadNodes (FILE * __f);
+00051 
+00052 extern unsigned distance (Node __from, Node __to);
+00053 
+00054 #endif
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/tutorial_2examples_2tsp_2param_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/tutorial_2examples_2tsp_2param_8cpp-source.html new file mode 100644 index 000000000..2200d9b71 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/tutorial_2examples_2tsp_2param_8cpp-source.html @@ -0,0 +1,80 @@ + + +ParadisEO-PEOMovingObjects: param.cpp Source File + + + + +
+
+

param.cpp

00001 /* 
+00002 * <param.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include <utils/eoParser.h>
+00038 
+00039 #include "data.h"
+00040 #include "opt_route.h"
+00041 
+00042 void loadParameters (int __argc, char * * __argv) {
+00043 
+00044   eoParser parser (__argc, __argv);
+00045   
+00046   loadData (parser);
+00047 
+00048   loadOptimumRoute (parser);
+00049 }
+00050 
+00051 
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/tutorial_2examples_2tsp_2param_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/tutorial_2examples_2tsp_2param_8h-source.html new file mode 100644 index 000000000..1d8690989 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/tutorial_2examples_2tsp_2param_8h-source.html @@ -0,0 +1,71 @@ + + +ParadisEO-PEOMovingObjects: param.h Source File + + + + +
+
+

param.h

00001 /* 
+00002 * <param.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __param_h
+00038 #define __param_h
+00039 
+00040 extern void loadParameters (int __argc, char * * __argv);
+00041 
+00042 #endif
+

Generated on Mon Oct 8 11:16:45 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/two__opt_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/two__opt_8cpp-source.html new file mode 100644 index 000000000..ddf4275dc --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/two__opt_8cpp-source.html @@ -0,0 +1,77 @@ + + +ParadisEO-PEOMovingObjects: two_opt.cpp Source File + + + + +
+
+

two_opt.cpp

00001 /* 
+00002 * <two_opt.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include "two_opt.h"
+00038 
+00039 void TwoOpt :: operator () (Route & __route) {
+00040   
+00041   unsigned i = 0; 
+00042 
+00043   while ((2 * i) < (second - first)) {
+00044     
+00045     std :: swap (__route [first + i], __route [second - i]);
+00046     i ++;
+00047   }
+00048 }
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/two__opt_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/two__opt_8h-source.html new file mode 100644 index 000000000..629e5011a --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/two__opt_8h-source.html @@ -0,0 +1,82 @@ + + +ParadisEO-PEOMovingObjects: two_opt.h Source File + + + + +
+
+

two_opt.h

00001 /* 
+00002 * <two_opt.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __two_opt_h
+00038 #define __two_opt_h
+00039 
+00040 #include <utility>
+00041 #include <moMove.h>
+00042 
+00043 #include "route.h"
+00044 
+00045 class TwoOpt : public moMove <Route>, public std :: pair <unsigned, unsigned> {
+00046   
+00047 public :
+00048   
+00049   void operator () (Route & __route);
+00050 
+00051 } ;
+00052 
+00053 #endif
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/two__opt__incr__eval_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/two__opt__incr__eval_8cpp-source.html new file mode 100644 index 000000000..2a3fceadf --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/two__opt__incr__eval_8cpp-source.html @@ -0,0 +1,81 @@ + + +ParadisEO-PEOMovingObjects: two_opt_incr_eval.cpp Source File + + + + +
+
+

two_opt_incr_eval.cpp

00001 /* 
+00002 * <two_opt_incr_eval.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include "two_opt_incr_eval.h"
+00038 #include "node.h"
+00039 
+00040 int TwoOptIncrEval :: operator () (const TwoOpt & __move, const Route & __route) {
+00041   
+00042   /* From */
+00043   Node v1 = __route [__move.first], v1_left = __route [(__move.first - 1 + numNodes) % numNodes];
+00044   
+00045   /* To */
+00046   Node v2 = __route [__move.second], v2_right = __route [(__move.second + 1) % numNodes];
+00047  
+00048   if (v1 == v2 || v2_right == v1)
+00049     return __route.fitness ();
+00050   else 
+00051     return __route.fitness () - distance (v1_left, v2) - distance (v1, v2_right) + distance (v1_left, v1) + distance (v2, v2_right);
+00052 }
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/two__opt__incr__eval_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/two__opt__incr__eval_8h-source.html new file mode 100644 index 000000000..7a25390a2 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/two__opt__incr__eval_8h-source.html @@ -0,0 +1,80 @@ + + +ParadisEO-PEOMovingObjects: two_opt_incr_eval.h Source File + + + + +
+
+

two_opt_incr_eval.h

00001 /* 
+00002 * <two_opt_incr_eval.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __two_opt_incr_eval_h
+00038 #define __two_opt_incr_eval_h
+00039 
+00040 #include <moMoveIncrEval.h>
+00041 #include "two_opt.h"
+00042 
+00043 class TwoOptIncrEval : public moMoveIncrEval <TwoOpt> {
+00044 
+00045 public :
+00046   
+00047   int operator () (const TwoOpt & __move, const Route & __route) ; 
+00048 
+00049 } ;
+00050 
+00051 #endif
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/two__opt__init_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/two__opt__init_8cpp-source.html new file mode 100644 index 000000000..4453764a6 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/two__opt__init_8cpp-source.html @@ -0,0 +1,71 @@ + + +ParadisEO-PEOMovingObjects: two_opt_init.cpp Source File + + + + +
+
+

two_opt_init.cpp

00001 /* 
+00002 * <two_opt_init.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include "two_opt_init.h"
+00038 
+00039 void TwoOptInit :: operator () (TwoOpt & __move, const Route & __route) {
+00040   
+00041   __move.first = __move.second = 0;
+00042 }
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/two__opt__init_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/two__opt__init_8h-source.html new file mode 100644 index 000000000..0ce10347e --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/two__opt__init_8h-source.html @@ -0,0 +1,81 @@ + + +ParadisEO-PEOMovingObjects: two_opt_init.h Source File + + + + +
+
+

two_opt_init.h

00001 /* 
+00002 * <two_opt_init.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __two_opt_init_h
+00038 #define __two_opt_init_h
+00039 
+00040 #include <moMoveInit.h>
+00041 
+00042 #include "two_opt.h"
+00043 
+00044 class TwoOptInit : public moMoveInit <TwoOpt> {
+00045   
+00046 public :
+00047   
+00048   void operator () (TwoOpt & __move, const Route & __route) ;
+00049   
+00050 } ;
+00051 
+00052 #endif
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/two__opt__next_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/two__opt__next_8cpp-source.html new file mode 100644 index 000000000..d5b5f6eed --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/two__opt__next_8cpp-source.html @@ -0,0 +1,84 @@ + + +ParadisEO-PEOMovingObjects: two_opt_next.cpp Source File + + + + +
+
+

two_opt_next.cpp

00001 /* 
+00002 * <two_opt_next.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include "two_opt_next.h"
+00038 #include "node.h"
+00039 
+00040 bool TwoOptNext :: operator () (TwoOpt & __move, const Route & __route) {
+00041 
+00042   if (__move.first == numNodes - 1 && __move.second == numNodes - 1)
+00043     return false;
+00044   
+00045   else {
+00046     
+00047     __move.second ++;
+00048     if (__move.second == numNodes) {
+00049       
+00050       __move.first ++;
+00051       __move.second = __move.first;
+00052     }
+00053     return true ;
+00054   }
+00055 }
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/two__opt__next_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/two__opt__next_8h-source.html new file mode 100644 index 000000000..e0b7e9092 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/two__opt__next_8h-source.html @@ -0,0 +1,81 @@ + + +ParadisEO-PEOMovingObjects: two_opt_next.h Source File + + + + +
+
+

two_opt_next.h

00001 /* 
+00002 * <two_opt_next.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __two_opt_next_h
+00038 #define __two_opt_next_h
+00039 
+00040 #include <moNextMove.h>
+00041 
+00042 #include "two_opt.h"
+00043 
+00044 class TwoOptNext : public moNextMove <TwoOpt> {
+00045 
+00046 public :
+00047   
+00048   bool operator () (TwoOpt & __move, const Route & __route);
+00049   
+00050 };
+00051 
+00052 #endif
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/two__opt__rand_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/two__opt__rand_8cpp-source.html new file mode 100644 index 000000000..5ffc4e7c4 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/two__opt__rand_8cpp-source.html @@ -0,0 +1,78 @@ + + +ParadisEO-PEOMovingObjects: two_opt_rand.cpp Source File + + + + +
+
+

two_opt_rand.cpp

00001 /* 
+00002 * <two_opt_rand.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include <utils/eoRNG.h>
+00038 
+00039 #include "two_opt_rand.h"
+00040 #include "node.h"  
+00041 
+00042 void TwoOptRand :: operator () (TwoOpt & __move, const Route & __route) {
+00043 
+00044   __move.second = rng.random (numNodes);
+00045 
+00046   __move.first = rng.random (__move.second);
+00047 }
+00048   
+00049 
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/two__opt__rand_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/two__opt__rand_8h-source.html new file mode 100644 index 000000000..a2c308c36 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/two__opt__rand_8h-source.html @@ -0,0 +1,81 @@ + + +ParadisEO-PEOMovingObjects: two_opt_rand.h Source File + + + + +
+
+

two_opt_rand.h

00001 /* 
+00002 * <two_opt_rand.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __two_opt_rand_h
+00038 #define __two_opt_rand_h
+00039 
+00040 #include <eoMoveRand.h>
+00041 
+00042 #include "two_opt.h"
+00043 
+00044 class TwoOptRand : public eoMoveRand <TwoOpt> {
+00045   
+00046 public :
+00047   
+00048   void operator () (TwoOpt & __move, const Route & __route) ;
+00049   
+00050 } ;
+00051 
+00052 #endif
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/worker_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/worker_8cpp-source.html new file mode 100644 index 000000000..869d2133f --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/worker_8cpp-source.html @@ -0,0 +1,150 @@ + + +ParadisEO-PEOMovingObjects: worker.cpp Source File + + + + +
+
+

worker.cpp

00001 /* 
+00002 * <worker.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include <vector>
+00038 
+00039 #include "tags.h"
+00040 #include "send.h"
+00041 #include "node.h"
+00042 #include "schema.h"
+00043 #include "worker.h"
+00044 #include "mess.h"
+00045 #include "../../core/peo_debug.h"
+00046 
+00047 static std :: vector <Worker *> key_to_worker (1); /* Vector of registered workers */
+00048 
+00049 Worker * getWorker (WORKER_ID __key) {
+00050 
+00051   return key_to_worker [__key];  
+00052 }
+00053 
+00054 Worker :: Worker () {
+00055   
+00056   toto = false;
+00057   id = key_to_worker.size ();
+00058   key_to_worker.push_back (this);
+00059 }
+00060 
+00061 void Worker :: packResult () {
+00062   
+00063   pack (serv_id);
+00064   serv -> packResult ();    
+00065 }
+00066 
+00067 void Worker :: unpackData () {
+00068 
+00069   printDebugMessage ("unpacking the ID. of the service.");
+00070   unpack (serv_id);
+00071   serv = getService (serv_id); 
+00072   printDebugMessage ("found the service.");
+00073   serv -> unpackData (); 
+00074   printDebugMessage ("unpacking the data.");
+00075   setActive ();
+00076 }
+00077 
+00078 void Worker :: packTaskDone () {
+00079 
+00080   pack (getNodeRank ());
+00081   pack (id);
+00082 }
+00083 
+00084 void Worker :: notifySendingResult () {
+00085 
+00086   /* Notifying the scheduler of the termination */
+00087   toto = true;
+00088   wakeUp ();
+00089 }
+00090 
+00091 void Worker :: notifySendingTaskDone () {
+00092 
+00093   setPassive ();
+00094 }
+00095   
+00096 void Worker :: setSource (int __rank) {
+00097 
+00098   src = __rank;
+00099 }
+00100 
+00101 void Worker :: start () {
+00102 
+00103   while (true) {
+00104     
+00105     sleep (); 
+00106 
+00107     if (! atLeastOneActiveRunner ())
+00108       break;
+00109     
+00110     if (toto) {
+00111       send (this, my_node -> rk_sched, TASK_DONE_TAG);  
+00112       toto = false;
+00113     }
+00114     else {
+00115 
+00116       printDebugMessage ("executing the task.");
+00117       serv -> execute ();   
+00118       send (this, src, TASK_RESULT_TAG);    
+00119     }
+00120   }
+00121 }
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/worker_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/worker_8h-source.html new file mode 100644 index 000000000..7b0ee17e7 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/worker_8h-source.html @@ -0,0 +1,107 @@ + + +ParadisEO-PEOMovingObjects: worker.h Source File + + + + +
+
+

worker.h

00001 /* 
+00002 * <worker.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __worker_h
+00038 #define __worker_h
+00039 
+00040 #include "../../core/communicable.h"
+00041 #include "../../core/reac_thread.h"
+00042 #include "../../core/service.h"
+00043 
+00044 typedef unsigned WORKER_ID; 
+00045 
+00046 class Worker : public Communicable, public ReactiveThread {
+00047 
+00048 public : 
+00049 
+00050   Worker ();
+00051 
+00052   void start ();
+00053 
+00054   void packResult ();
+00055 
+00056   void unpackData ();
+00057 
+00058   void packTaskDone (); 
+00059 
+00060   void notifySendingResult ();
+00061 
+00062   void notifySendingTaskDone ();
+00063   
+00064   void setSource (int __rank);
+00065   
+00066 private :
+00067 
+00068   WORKER_ID id;
+00069   SERVICE_ID serv_id;
+00070   Service * serv;
+00071   int src;
+00072 
+00073   bool toto;
+00074 };
+00075 
+00076 extern Worker * getWorker (WORKER_ID __key);
+00077 
+00078 #endif
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/xml__parser_8cpp-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/xml__parser_8cpp-source.html new file mode 100644 index 000000000..d8f7d6632 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/xml__parser_8cpp-source.html @@ -0,0 +1,132 @@ + + +ParadisEO-PEOMovingObjects: xml_parser.cpp Source File + + + + +
+
+

xml_parser.cpp

00001 /* 
+00002 * <xml_parser.cpp>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #include <libxml/xmlreader.h>
+00038 
+00039 #include "xml_parser.h"
+00040 
+00041 static xmlTextReaderPtr reader;
+00042 
+00043 void openXMLDocument (const char * __filename) {
+00044   
+00045   reader = xmlNewTextReaderFilename (__filename);
+00046   
+00047   if (! reader) {
+00048     
+00049     fprintf (stderr, "unable to open '%s'.\n", __filename);
+00050     exit (1);
+00051   }
+00052 }
+00053 
+00054 void closeXMLDocument () {
+00055 
+00056   xmlFreeTextReader (reader);
+00057 }
+00058 
+00059 std :: string getAttributeValue (const std :: string & __attr) {
+00060   
+00061   xmlChar * value = xmlTextReaderGetAttribute (reader, (const xmlChar *) __attr.c_str ());
+00062   
+00063   std :: string str ((const char *) value);
+00064   
+00065   xmlFree (value);
+00066   
+00067   return str;
+00068 }
+00069 
+00070 static bool isSep (const xmlChar * __text) {
+00071   
+00072   for (unsigned i = 0; i < strlen ((char *) __text); i ++)
+00073     if (__text [i] != ' ' && __text [i] != '\t' && __text [i] != '\n')
+00074       return false;
+00075   return true;
+00076 }
+00077 
+00078 std :: string getNextNode () {
+00079   
+00080   xmlChar * name, * value;
+00081 
+00082   do {
+00083     xmlTextReaderRead (reader);
+00084     name = xmlTextReaderName (reader);
+00085     value = xmlTextReaderValue (reader);
+00086     //    printf ("value = %s\n", value);
+00087   } while (! strcmp ((char *) name, "#text") && isSep (value));
+00088 
+00089   std :: string str;
+00090 
+00091   if (strcmp ((char *) name, "#text"))
+00092     str.assign ((char *) name);
+00093   else
+00094     str.assign ((char *) value);
+00095   
+00096   if (name)
+00097     xmlFree (name);
+00098   if (value)
+00099     xmlFree (value);
+00100     
+00101   return str;
+00102 }
+00103 
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/xml__parser_8h-source.html b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/xml__parser_8h-source.html new file mode 100644 index 000000000..1d76ecd6d --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/html/xml__parser_8h-source.html @@ -0,0 +1,79 @@ + + +ParadisEO-PEOMovingObjects: xml_parser.h Source File + + + + +
+
+

xml_parser.h

00001 /* 
+00002 * <xml_parser.h>
+00003 * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00004 * (C) OPAC Team, LIFL, 2002-2007
+00005 *
+00006 * Sebastien Cahon, Alexandru-Adrian Tantar
+00007 *
+00008 * This software is governed by the CeCILL license under French law and
+00009 * abiding by the rules of distribution of free software.  You can  use,
+00010 * modify and/ or redistribute the software under the terms of the CeCILL
+00011 * license as circulated by CEA, CNRS and INRIA at the following URL
+00012 * "http://www.cecill.info".
+00013 *
+00014 * As a counterpart to the access to the source code and  rights to copy,
+00015 * modify and redistribute granted by the license, users are provided only
+00016 * with a limited warranty  and the software's author,  the holder of the
+00017 * economic rights,  and the successive licensors  have only  limited liability.
+00018 *
+00019 * In this respect, the user's attention is drawn to the risks associated
+00020 * with loading,  using,  modifying and/or developing or reproducing the
+00021 * software by the user in light of its specific status of free software,
+00022 * that may mean  that it is complicated to manipulate,  and  that  also
+00023 * therefore means  that it is reserved for developers  and  experienced
+00024 * professionals having in-depth computer knowledge. Users are therefore
+00025 * encouraged to load and test the software's suitability as regards their
+00026 * requirements in conditions enabling the security of their systems and/or
+00027 * data to be ensured and,  more generally, to use and operate it in the
+00028 * same conditions as regards security.
+00029 * The fact that you are presently reading this means that you have had
+00030 * knowledge of the CeCILL license and that you accept its terms.
+00031 *
+00032 * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00033 * Contact: paradiseo-help@lists.gforge.inria.fr
+00034 *
+00035 */
+00036 
+00037 #ifndef __xml_parser_h
+00038 #define __xml_parser_h
+00039 
+00040 #include <string>
+00041 
+00042 extern void openXMLDocument (const char * __filename);
+00043 
+00044 extern void closeXMLDocument ();
+00045 
+00046 extern std :: string getAttributeValue (const std :: string & __attr);
+00047 
+00048 extern std :: string getNextNode ();
+00049 
+00050 #endif
+

Generated on Mon Oct 8 11:16:46 2007 for ParadisEO-PEOMovingObjects by  + +doxygen 1.4.7
+ + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/FreeSans.ttf b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/FreeSans.ttf new file mode 100644 index 000000000..b550b90ba Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/FreeSans.ttf differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/Makefile b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/Makefile new file mode 100644 index 000000000..a67f1b7f6 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/Makefile @@ -0,0 +1,17 @@ +all: clean refman.pdf + +refman.pdf: refman.tex + pdflatex refman.tex + makeindex refman.idx + pdflatex refman.tex + latex_count=5 ; \ + while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\ + do \ + echo "Rerunning latex...." ;\ + pdflatex refman.tex ;\ + latex_count=`expr $$latex_count - 1` ;\ + done + + +clean: + rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out refman.pdf diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/annotated.tex b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/annotated.tex new file mode 100644 index 000000000..c9220430d --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/annotated.tex @@ -0,0 +1,41 @@ +\section{Paradis\-EO-PEOMoving\-Objects Class List} +Here are the classes, structs, unions and interfaces with brief descriptions:\begin{CompactList} +\item\contentsline{section}{\hyperlink{classCommunicable}{Communicable} }{\pageref{classCommunicable}}{} +\item\contentsline{section}{\hyperlink{classCommunicator}{Communicator} }{\pageref{classCommunicator}}{} +\item\contentsline{section}{\hyperlink{classCooperative}{Cooperative} }{\pageref{classCooperative}}{} +\item\contentsline{section}{\hyperlink{classDisplayBestRoute}{Display\-Best\-Route} }{\pageref{classDisplayBestRoute}}{} +\item\contentsline{section}{\hyperlink{classMergeRouteEval}{Merge\-Route\-Eval} }{\pageref{classMergeRouteEval}}{} +\item\contentsline{section}{\hyperlink{classpeoAggEvalFunc}{peo\-Agg\-Eval\-Func$<$ EOT $>$} (The \hyperlink{classpeoAggEvalFunc}{peo\-Agg\-Eval\-Func} class offers only the interface for creating aggregate evaluation functions - there are no direct internal functions provided )}{\pageref{classpeoAggEvalFunc}}{} +\item\contentsline{section}{\hyperlink{classpeoAsyncIslandMig}{peo\-Async\-Island\-Mig$<$ EOT $>$} (The \hyperlink{classpeoAsyncIslandMig}{peo\-Async\-Island\-Mig} class offers the elementary basis for implementating an asynchronous island migration model - requires the specification of several basic parameters, i.e )}{\pageref{classpeoAsyncIslandMig}}{} +\item\contentsline{section}{\hyperlink{classpeoEA}{peo\-EA$<$ EOT $>$} (The \hyperlink{classpeoEA}{peo\-EA} class offers an elementary evolutionary algorithm implementation )}{\pageref{classpeoEA}}{} +\item\contentsline{section}{\hyperlink{classpeoNoAggEvalFunc}{peo\-No\-Agg\-Eval\-Func$<$ EOT $>$} (The \hyperlink{classpeoNoAggEvalFunc}{peo\-No\-Agg\-Eval\-Func} class does nothing more than an association between a fitness value and a specified individual )}{\pageref{classpeoNoAggEvalFunc}}{} +\item\contentsline{section}{\hyperlink{classpeoParallelAlgorithmWrapper}{peo\-Parallel\-Algorithm\-Wrapper} }{\pageref{classpeoParallelAlgorithmWrapper}}{} +\item\contentsline{section}{\hyperlink{structpeoParallelAlgorithmWrapper_1_1AbstractAlgorithm}{peo\-Parallel\-Algorithm\-Wrapper::Abstract\-Algorithm} }{\pageref{structpeoParallelAlgorithmWrapper_1_1AbstractAlgorithm}}{} +\item\contentsline{section}{\hyperlink{structpeoParallelAlgorithmWrapper_1_1Algorithm}{peo\-Parallel\-Algorithm\-Wrapper::Algorithm$<$ Algorithm\-Type, Algorithm\-Data\-Type $>$} }{\pageref{structpeoParallelAlgorithmWrapper_1_1Algorithm}}{} +\item\contentsline{section}{\hyperlink{structpeoParallelAlgorithmWrapper_1_1Algorithm_3_01AlgorithmType_00_01void_01_4}{peo\-Parallel\-Algorithm\-Wrapper::Algorithm$<$ Algorithm\-Type, void $>$} }{\pageref{structpeoParallelAlgorithmWrapper_1_1Algorithm_3_01AlgorithmType_00_01void_01_4}}{} +\item\contentsline{section}{\hyperlink{classpeoParaPopEval}{peo\-Para\-Pop\-Eval$<$ EOT $>$} (The \hyperlink{classpeoParaPopEval}{peo\-Para\-Pop\-Eval} represents a wrapper for creating a functor capable of applying in parallel an EO-derived evaluation functor )}{\pageref{classpeoParaPopEval}}{} +\item\contentsline{section}{\hyperlink{classpeoParaSGATransform}{peo\-Para\-SGATransform$<$ EOT $>$} }{\pageref{classpeoParaSGATransform}}{} +\item\contentsline{section}{\hyperlink{classpeoPopEval}{peo\-Pop\-Eval$<$ EOT $>$} (The {\bf \hyperlink{classpeoPopEval}{peo\-Pop\-Eval}} class provides the interface for constructing Paradis\-EO specific evaluation functors )}{\pageref{classpeoPopEval}}{} +\item\contentsline{section}{\hyperlink{classpeoSeqPopEval}{peo\-Seq\-Pop\-Eval$<$ EOT $>$} (The \hyperlink{classpeoSeqPopEval}{peo\-Seq\-Pop\-Eval} class acts only as a Paradis\-EO specific sequential evaluation functor - a wrapper for incorporating an {\bf eo\-Eval\-Func$<$ EOT $>$}-derived class as evaluation functor )}{\pageref{classpeoSeqPopEval}}{} +\item\contentsline{section}{\hyperlink{classpeoSeqTransform}{peo\-Seq\-Transform$<$ EOT $>$} (The \hyperlink{classpeoSeqTransform}{peo\-Seq\-Transform} represent a wrapper for offering the possibility of using \doxyref{EO} derived transform operators along with the Paradis\-EO evolutionary algorithms )}{\pageref{classpeoSeqTransform}}{} +\item\contentsline{section}{\hyperlink{classpeoSynchronousMultiStart}{peo\-Synchronous\-Multi\-Start$<$ Entity\-Type $>$} }{\pageref{classpeoSynchronousMultiStart}}{} +\item\contentsline{section}{\hyperlink{structpeoSynchronousMultiStart_1_1AbstractAggregationAlgorithm}{peo\-Synchronous\-Multi\-Start$<$ Entity\-Type $>$::Abstract\-Aggregation\-Algorithm} }{\pageref{structpeoSynchronousMultiStart_1_1AbstractAggregationAlgorithm}}{} +\item\contentsline{section}{\hyperlink{structpeoSynchronousMultiStart_1_1AbstractAlgorithm}{peo\-Synchronous\-Multi\-Start$<$ Entity\-Type $>$::Abstract\-Algorithm} }{\pageref{structpeoSynchronousMultiStart_1_1AbstractAlgorithm}}{} +\item\contentsline{section}{\hyperlink{structpeoSynchronousMultiStart_1_1AbstractDataType}{peo\-Synchronous\-Multi\-Start$<$ Entity\-Type $>$::Abstract\-Data\-Type} }{\pageref{structpeoSynchronousMultiStart_1_1AbstractDataType}}{} +\item\contentsline{section}{\hyperlink{structpeoSynchronousMultiStart_1_1AggregationAlgorithm}{peo\-Synchronous\-Multi\-Start$<$ Entity\-Type $>$::Aggregation\-Algorithm$<$ Aggregation\-Algorithm\-Type $>$} }{\pageref{structpeoSynchronousMultiStart_1_1AggregationAlgorithm}}{} +\item\contentsline{section}{\hyperlink{structpeoSynchronousMultiStart_1_1Algorithm}{peo\-Synchronous\-Multi\-Start$<$ Entity\-Type $>$::Algorithm$<$ Algorithm\-Type $>$} }{\pageref{structpeoSynchronousMultiStart_1_1Algorithm}}{} +\item\contentsline{section}{\hyperlink{structpeoSynchronousMultiStart_1_1DataType}{peo\-Synchronous\-Multi\-Start$<$ Entity\-Type $>$::Data\-Type$<$ Type $>$} }{\pageref{structpeoSynchronousMultiStart_1_1DataType}}{} +\item\contentsline{section}{\hyperlink{structpeoSynchronousMultiStart_1_1NoAggregationFunction}{peo\-Synchronous\-Multi\-Start$<$ Entity\-Type $>$::No\-Aggregation\-Function} }{\pageref{structpeoSynchronousMultiStart_1_1NoAggregationFunction}}{} +\item\contentsline{section}{\hyperlink{classpeoSyncIslandMig}{peo\-Sync\-Island\-Mig$<$ EOT $>$} (The \hyperlink{classpeoSyncIslandMig}{peo\-Sync\-Island\-Mig} class offers the elementary basis for implementating a synchronous island migration model - requires the specification of several basic parameters, i.e )}{\pageref{classpeoSyncIslandMig}}{} +\item\contentsline{section}{\hyperlink{classpeoSyncMultiStart}{peo\-Sync\-Multi\-Start$<$ EOT $>$} (The \hyperlink{classpeoSyncMultiStart}{peo\-Sync\-Multi\-Start} class provides the basis for implementing the synchronous multi-start model, for launching several solution-based algorithms in parallel on a specified initial population )}{\pageref{classpeoSyncMultiStart}}{} +\item\contentsline{section}{\hyperlink{classpeoTransform}{peo\-Transform$<$ EOT $>$} (The \hyperlink{classpeoTransform}{peo\-Transform} class acts only as an interface for creating transform operators - for an example please refer to the {\bf \hyperlink{classpeoSeqTransform}{peo\-Seq\-Transform}} and the {\bf \hyperlink{classpeoParaSGATransform}{peo\-Para\-SGATransform}} classes )}{\pageref{classpeoTransform}}{} +\item\contentsline{section}{\hyperlink{structRandomExplorationAlgorithm}{Random\-Exploration\-Algorithm} }{\pageref{structRandomExplorationAlgorithm}}{} +\item\contentsline{section}{\hyperlink{classReactiveThread}{Reactive\-Thread} }{\pageref{classReactiveThread}}{} +\item\contentsline{section}{\hyperlink{classRingTopology}{Ring\-Topology} }{\pageref{classRingTopology}}{} +\item\contentsline{section}{\hyperlink{classRunner}{Runner} }{\pageref{classRunner}}{} +\item\contentsline{section}{\hyperlink{structSEND__REQUEST}{SEND\_\-REQUEST} }{\pageref{structSEND__REQUEST}}{} +\item\contentsline{section}{\hyperlink{classService}{Service} }{\pageref{classService}}{} +\item\contentsline{section}{\hyperlink{classThread}{Thread} }{\pageref{classThread}}{} +\item\contentsline{section}{\hyperlink{classTopology}{Topology} }{\pageref{classTopology}}{} +\item\contentsline{section}{\hyperlink{classWorker}{Worker} }{\pageref{classWorker}}{} +\end{CompactList} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classCommunicable.eps b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classCommunicable.eps new file mode 100644 index 000000000..bc98683b5 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classCommunicable.eps @@ -0,0 +1,257 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 79.3651 +%%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 6.3 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 6 def +/cols 6 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 +(Communicable) cw +(Cooperative) cw +(Runner) cw +(Service) cw +(Worker) cw +(peoAsyncIslandMig< EOT >) cw +(peoSyncIslandMig< EOT >) cw +(peoEA< EOT >) cw +(peoParallelAlgorithmWrapper) cw +(peoPopEval< EOT >) cw +(peoSynchronousMultiStart< EntityType >) cw +(peoSyncMultiStart< EOT >) cw +(peoTransform< EOT >) 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 ----- + + (Communicable) 3 5 box + (Cooperative) 0 4 box + (Runner) 2 4 box + (Service) 4 4 box + (Worker) 5 4 box + (peoAsyncIslandMig< EOT >) 1 3 box + (peoSyncIslandMig< EOT >) 1 2 box + (peoEA< EOT >) 3 3 box + (peoParallelAlgorithmWrapper) 3 2 box + (peoPopEval< EOT >) 5 3 box +5 3 mark + (peoSynchronousMultiStart< EntityType >) 5 2 box + (peoSyncMultiStart< EOT >) 5 1 box + (peoTransform< EOT >) 5 0 box +5 0 mark + +% ----- relations ----- + +solid +1 3 4.25 out +solid +0 5 5 conn +solid +0 0 4.75 in +solid +1 0 3.25 out +solid +0 2 4.75 in +solid +1 2 3.25 out +solid +0 4 4.75 in +solid +1 4 3.25 out +solid +0 5 4.75 in +solid +0 0 3.5 hedge +solid +0 0 2.5 hedge +solid +0 4 2.5 vedge +solid +0 2 3.5 hedge +solid +0 2 2.5 hedge +solid +2 4 2.5 vedge +solid +0 4 3.5 hedge +solid +0 4 2.5 hedge +solid +0 4 1.5 hedge +solid +0 4 0.5 hedge +solid +4 4 0.5 vedge diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classCommunicable.pdf b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classCommunicable.pdf new file mode 100644 index 000000000..9213c1a3e Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classCommunicable.pdf differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classCommunicable.tex b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classCommunicable.tex new file mode 100644 index 000000000..44bcd5647 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classCommunicable.tex @@ -0,0 +1,87 @@ +\hypertarget{classCommunicable}{ +\section{Communicable Class Reference} +\label{classCommunicable}\index{Communicable@{Communicable}} +} +Inheritance diagram for Communicable::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.22222cm]{classCommunicable} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classCommunicable_8ae1827ecf7569b3db1ed386c7d8ad78}{ +\hyperlink{classCommunicable_8ae1827ecf7569b3db1ed386c7d8ad78}{Communicable} ()} +\label{classCommunicable_8ae1827ecf7569b3db1ed386c7d8ad78} + +\item +\hypertarget{classCommunicable_2280b0dfa0d3a515fccf62c2a9fd5f41}{ +virtual \hyperlink{classCommunicable_2280b0dfa0d3a515fccf62c2a9fd5f41}{$\sim$Communicable} ()} +\label{classCommunicable_2280b0dfa0d3a515fccf62c2a9fd5f41} + +\item +\hypertarget{classCommunicable_db4307b69b9ccacff55fdbf84b8f50e4}{ +COMM\_\-ID \hyperlink{classCommunicable_db4307b69b9ccacff55fdbf84b8f50e4}{get\-Key} ()} +\label{classCommunicable_db4307b69b9ccacff55fdbf84b8f50e4} + +\item +\hypertarget{classCommunicable_e1f8bd1ee810fd73d44315c95998d19d}{ +void \hyperlink{classCommunicable_e1f8bd1ee810fd73d44315c95998d19d}{lock} ()} +\label{classCommunicable_e1f8bd1ee810fd73d44315c95998d19d} + +\item +\hypertarget{classCommunicable_caa814847192e71f434fbf9479ede862}{ +void \hyperlink{classCommunicable_caa814847192e71f434fbf9479ede862}{unlock} ()} +\label{classCommunicable_caa814847192e71f434fbf9479ede862} + +\item +\hypertarget{classCommunicable_cb53e6534b947bc889aa181d9dbbd13b}{ +void \hyperlink{classCommunicable_cb53e6534b947bc889aa181d9dbbd13b}{stop} ()} +\label{classCommunicable_cb53e6534b947bc889aa181d9dbbd13b} + +\item +\hypertarget{classCommunicable_3306a9adb11a0ab5af342c0db9f7bb2a}{ +void \hyperlink{classCommunicable_3306a9adb11a0ab5af342c0db9f7bb2a}{resume} ()} +\label{classCommunicable_3306a9adb11a0ab5af342c0db9f7bb2a} + +\end{CompactItemize} +\subsection*{Protected Attributes} +\begin{CompactItemize} +\item +\hypertarget{classCommunicable_605b0efeffe81326f216c9903f5bbf4c}{ +COMM\_\-ID \hyperlink{classCommunicable_605b0efeffe81326f216c9903f5bbf4c}{key}} +\label{classCommunicable_605b0efeffe81326f216c9903f5bbf4c} + +\item +\hypertarget{classCommunicable_cf9639312f71a2f348bc1e7789ccbd9d}{ +sem\_\-t \hyperlink{classCommunicable_cf9639312f71a2f348bc1e7789ccbd9d}{sem\_\-lock}} +\label{classCommunicable_cf9639312f71a2f348bc1e7789ccbd9d} + +\item +\hypertarget{classCommunicable_29c53b9191348e0505e3bcba6d8b82b1}{ +sem\_\-t \hyperlink{classCommunicable_29c53b9191348e0505e3bcba6d8b82b1}{sem\_\-stop}} +\label{classCommunicable_29c53b9191348e0505e3bcba6d8b82b1} + +\end{CompactItemize} +\subsection*{Static Protected Attributes} +\begin{CompactItemize} +\item +\hypertarget{classCommunicable_7a6acfdc781a67c9c0ec4f17893f86c3}{ +static unsigned \hyperlink{classCommunicable_7a6acfdc781a67c9c0ec4f17893f86c3}{num\_\-comm} = 0} +\label{classCommunicable_7a6acfdc781a67c9c0ec4f17893f86c3} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 44 of file communicable.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +communicable.h\item +communicable.cpp\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classCommunicator.eps b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classCommunicator.eps new file mode 100644 index 000000000..3d7cc0668 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classCommunicator.eps @@ -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 550.459 +%%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 0.908333 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 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 +(Communicator) cw +(ReactiveThread) cw +(Thread) 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 ----- + + (Communicator) 0 0 box + (ReactiveThread) 0 1 box + (Thread) 0 2 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classCommunicator.pdf b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classCommunicator.pdf new file mode 100644 index 000000000..803364617 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classCommunicator.pdf differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classCommunicator.tex b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classCommunicator.tex new file mode 100644 index 000000000..1252e00ff --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classCommunicator.tex @@ -0,0 +1,36 @@ +\hypertarget{classCommunicator}{ +\section{Communicator Class Reference} +\label{classCommunicator}\index{Communicator@{Communicator}} +} +Inheritance diagram for Communicator::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{classCommunicator} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classCommunicator_7c9dce4ea92bd04d01d53f80c0ef08ee}{ +\hyperlink{classCommunicator_7c9dce4ea92bd04d01d53f80c0ef08ee}{Communicator} (int $\ast$\_\-\_\-argc, char $\ast$$\ast$$\ast$\_\-\_\-argv)} +\label{classCommunicator_7c9dce4ea92bd04d01d53f80c0ef08ee} + +\item +\hypertarget{classCommunicator_142fae13b16b166519315f248a513c62}{ +void \hyperlink{classCommunicator_142fae13b16b166519315f248a513c62}{start} ()} +\label{classCommunicator_142fae13b16b166519315f248a513c62} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 43 of file comm.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +comm.h\item +comm.cpp\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classCooperative.eps b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classCooperative.eps new file mode 100644 index 000000000..60c6b6b94 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classCooperative.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 166.667 +%%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 3 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 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 +(Cooperative) cw +(Communicable) cw +(peoAsyncIslandMig< EOT >) cw +(peoSyncIslandMig< EOT >) 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 ----- + + (Cooperative) 0.5 1 box + (Communicable) 0.5 2 box + (peoAsyncIslandMig< EOT >) 0 0 box + (peoSyncIslandMig< EOT >) 1 0 box + +% ----- relations ----- + +solid +0 0.5 1 out +solid +1 0.5 2 in +solid +1 0.5 0.25 out +solid +0 1 1 conn +solid +0 0 0.75 in +solid +0 1 0.75 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classCooperative.pdf b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classCooperative.pdf new file mode 100644 index 000000000..d7a04b51a Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classCooperative.pdf differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classCooperative.tex b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classCooperative.tex new file mode 100644 index 000000000..772edcf01 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classCooperative.tex @@ -0,0 +1,54 @@ +\hypertarget{classCooperative}{ +\section{Cooperative Class Reference} +\label{classCooperative}\index{Cooperative@{Cooperative}} +} +Inheritance diagram for Cooperative::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{classCooperative} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classCooperative_4012b4e8329e87d26ee266491e1a883e}{ +\hyperlink{classRunner}{Runner} $\ast$ \hyperlink{classCooperative_4012b4e8329e87d26ee266491e1a883e}{get\-Owner} ()} +\label{classCooperative_4012b4e8329e87d26ee266491e1a883e} + +\item +\hypertarget{classCooperative_fe7b022567174c8305bc78d8c5749b12}{ +void \hyperlink{classCooperative_fe7b022567174c8305bc78d8c5749b12}{set\-Owner} (\hyperlink{classRunner}{Runner} \&\_\-\_\-runner)} +\label{classCooperative_fe7b022567174c8305bc78d8c5749b12} + +\item +\hypertarget{classCooperative_c609f2a1200da7d1ac96005602515fc6}{ +void \hyperlink{classCooperative_c609f2a1200da7d1ac96005602515fc6}{send} (\hyperlink{classCooperative}{Cooperative} $\ast$\_\-\_\-coop)} +\label{classCooperative_c609f2a1200da7d1ac96005602515fc6} + +\item +\hypertarget{classCooperative_4439ddeaa1246a2e44c003bfb781739b}{ +virtual void \hyperlink{classCooperative_4439ddeaa1246a2e44c003bfb781739b}{notify\-Sending} ()} +\label{classCooperative_4439ddeaa1246a2e44c003bfb781739b} + +\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +\hypertarget{classCooperative_7604f094479d08154ede4996a45bf79e}{ +\hyperlink{classRunner}{Runner} $\ast$ \hyperlink{classCooperative_7604f094479d08154ede4996a45bf79e}{owner}} +\label{classCooperative_7604f094479d08154ede4996a45bf79e} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 45 of file cooperative.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +cooperative.h\item +coop.cpp\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classDisplayBestRoute.eps b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classDisplayBestRoute.eps new file mode 100644 index 000000000..b2d0ad093 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classDisplayBestRoute.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 677.966 +%%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 0.7375 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 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 +(DisplayBestRoute) cw +(eoUpdater) cw +(eoF< void >) cw +(eoFunctorBase) 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 ----- + + (DisplayBestRoute) 0 0 box + (eoUpdater) 0 1 box + (eoF< void >) 0 2 box + (eoFunctorBase) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classDisplayBestRoute.pdf b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classDisplayBestRoute.pdf new file mode 100644 index 000000000..3e97f2f86 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classDisplayBestRoute.pdf differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classDisplayBestRoute.tex b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classDisplayBestRoute.tex new file mode 100644 index 000000000..390c5544a --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classDisplayBestRoute.tex @@ -0,0 +1,44 @@ +\hypertarget{classDisplayBestRoute}{ +\section{Display\-Best\-Route Class Reference} +\label{classDisplayBestRoute}\index{DisplayBestRoute@{DisplayBestRoute}} +} +Inheritance diagram for Display\-Best\-Route::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classDisplayBestRoute} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classDisplayBestRoute_db263e38f1e82174f811bf62f323f87f}{ +\hyperlink{classDisplayBestRoute_db263e38f1e82174f811bf62f323f87f}{Display\-Best\-Route} (\bf{eo\-Pop}$<$ \bf{Route} $>$ \&\_\-\_\-pop)} +\label{classDisplayBestRoute_db263e38f1e82174f811bf62f323f87f} + +\item +\hypertarget{classDisplayBestRoute_ee879344a6d8b81a04d4eabbed2c7a04}{ +void \hyperlink{classDisplayBestRoute_ee879344a6d8b81a04d4eabbed2c7a04}{operator()} ()} +\label{classDisplayBestRoute_ee879344a6d8b81a04d4eabbed2c7a04} + +\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +\hypertarget{classDisplayBestRoute_5270aabbf294d2deca9878934216eb89}{ +\bf{eo\-Pop}$<$ \bf{Route} $>$ \& \hyperlink{classDisplayBestRoute_5270aabbf294d2deca9878934216eb89}{pop}} +\label{classDisplayBestRoute_5270aabbf294d2deca9878934216eb89} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 46 of file display\_\-best\_\-route.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +display\_\-best\_\-route.h\item +display\_\-best\_\-route.cpp\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classMergeRouteEval.eps b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classMergeRouteEval.eps new file mode 100644 index 000000000..a46755cc0 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classMergeRouteEval.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 479.042 +%%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 1.04375 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 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 +(MergeRouteEval) cw +(peoAggEvalFunc< EOT >) cw +(eoBF< A1, A2, R >) cw +(eoFunctorBase) 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 ----- + + (MergeRouteEval) 0 0 box + (peoAggEvalFunc< EOT >) 0 1 box + (eoBF< A1, A2, R >) 0 2 box + (eoFunctorBase) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classMergeRouteEval.pdf b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classMergeRouteEval.pdf new file mode 100644 index 000000000..d469f7cf8 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classMergeRouteEval.pdf differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classMergeRouteEval.tex b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classMergeRouteEval.tex new file mode 100644 index 000000000..d2fcb7425 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classMergeRouteEval.tex @@ -0,0 +1,31 @@ +\hypertarget{classMergeRouteEval}{ +\section{Merge\-Route\-Eval Class Reference} +\label{classMergeRouteEval}\index{MergeRouteEval@{MergeRouteEval}} +} +Inheritance diagram for Merge\-Route\-Eval::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classMergeRouteEval} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classMergeRouteEval_29cb0028ac0df4b2cee3a809c8f35dea}{ +void \hyperlink{classMergeRouteEval_29cb0028ac0df4b2cee3a809c8f35dea}{operator()} (\bf{Route} \&\_\-\_\-route, const int \&\_\-\_\-part\_\-fit)} +\label{classMergeRouteEval_29cb0028ac0df4b2cee3a809c8f35dea} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 44 of file merge\_\-route\_\-eval.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +merge\_\-route\_\-eval.h\item +merge\_\-route\_\-eval.cpp\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classReactiveThread.eps b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classReactiveThread.eps new file mode 100644 index 000000000..9c8a085ba --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classReactiveThread.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 275.229 +%%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 1.81667 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 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 +(ReactiveThread) cw +(Thread) cw +(Communicator) cw +(Worker) 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 ----- + + (ReactiveThread) 0.5 1 box + (Thread) 0.5 2 box + (Communicator) 0 0 box + (Worker) 1 0 box + +% ----- relations ----- + +solid +0 0.5 1 out +solid +1 0.5 2 in +solid +1 0.5 0.25 out +solid +0 1 1 conn +solid +0 0 0.75 in +solid +0 1 0.75 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classReactiveThread.pdf b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classReactiveThread.pdf new file mode 100644 index 000000000..2e0f92b3c --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classReactiveThread.pdf @@ -0,0 +1,76 @@ +%PDF-1.3 +%쏢 +5 0 obj +<> +stream +xSM0Wό +BD\jY3·n]Eyٓu֕gwy/g}`îݔ-HJ6'E $lӚ7wg.w1C |F|4g;\ c"@cF +˶P2 뚅Z3֗8Ab@}" +-I.q|> +/Contents 5 0 R +>> +endobj +3 0 obj +<< /Type /Pages /Kids [ +4 0 R +] /Count 1 +>> +endobj +1 0 obj +<> +endobj +7 0 obj +<>endobj +9 0 obj +<> +endobj +10 0 obj +<> +endobj +8 0 obj +<> +endobj +2 0 obj +<>endobj +xref +0 11 +0000000000 65535 f +0000000746 00000 n +0000000960 00000 n +0000000687 00000 n +0000000534 00000 n +0000000015 00000 n +0000000515 00000 n +0000000794 00000 n +0000000894 00000 n +0000000835 00000 n +0000000864 00000 n +trailer +<< /Size 11 /Root 1 0 R /Info 2 0 R +/ID [(sY_Z?l!)(sY_Z?l!)] +>> +startxref +1117 +%%EOF diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classReactiveThread.tex b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classReactiveThread.tex new file mode 100644 index 000000000..1b9508e9d --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classReactiveThread.tex @@ -0,0 +1,49 @@ +\hypertarget{classReactiveThread}{ +\section{Reactive\-Thread Class Reference} +\label{classReactiveThread}\index{ReactiveThread@{ReactiveThread}} +} +Inheritance diagram for Reactive\-Thread::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{classReactiveThread} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classReactiveThread_77381649429941c99a3e3d568113d6cf}{ +\hyperlink{classReactiveThread_77381649429941c99a3e3d568113d6cf}{Reactive\-Thread} ()} +\label{classReactiveThread_77381649429941c99a3e3d568113d6cf} + +\item +\hypertarget{classReactiveThread_8263c2a32d8c99a49a05f1a7717d4262}{ +void \hyperlink{classReactiveThread_8263c2a32d8c99a49a05f1a7717d4262}{sleep} ()} +\label{classReactiveThread_8263c2a32d8c99a49a05f1a7717d4262} + +\item +\hypertarget{classReactiveThread_a724a54575de10f09cc03ab7aa4e59ce}{ +void \hyperlink{classReactiveThread_a724a54575de10f09cc03ab7aa4e59ce}{wake\-Up} ()} +\label{classReactiveThread_a724a54575de10f09cc03ab7aa4e59ce} + +\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +\hypertarget{classReactiveThread_915e5a42dc8cb1bcf6738d5fe883a4e7}{ +sem\_\-t \hyperlink{classReactiveThread_915e5a42dc8cb1bcf6738d5fe883a4e7}{sem}} +\label{classReactiveThread_915e5a42dc8cb1bcf6738d5fe883a4e7} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 44 of file reac\_\-thread.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +reac\_\-thread.h\item +reac\_\-thread.cpp\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classRingTopology.eps b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classRingTopology.eps new file mode 100644 index 000000000..04c98c56e --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classRingTopology.eps @@ -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 412.371 +%%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 1.2125 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 +(RingTopology) cw +(Topology) 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 ----- + + (RingTopology) 0 0 box + (Topology) 0 1 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classRingTopology.pdf b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classRingTopology.pdf new file mode 100644 index 000000000..3b9bdd5d6 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classRingTopology.pdf differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classRingTopology.tex b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classRingTopology.tex new file mode 100644 index 000000000..20e33d7b4 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classRingTopology.tex @@ -0,0 +1,31 @@ +\hypertarget{classRingTopology}{ +\section{Ring\-Topology Class Reference} +\label{classRingTopology}\index{RingTopology@{RingTopology}} +} +Inheritance diagram for Ring\-Topology::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{classRingTopology} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classRingTopology_292a7746993788f96042f2f628cfcbc5}{ +void \hyperlink{classRingTopology_292a7746993788f96042f2f628cfcbc5}{set\-Neighbors} (\hyperlink{classCooperative}{Cooperative} $\ast$\_\-\_\-mig, std::vector$<$ \hyperlink{classCooperative}{Cooperative} $\ast$ $>$ \&\_\-\_\-from, std::vector$<$ \hyperlink{classCooperative}{Cooperative} $\ast$ $>$ \&\_\-\_\-to)} +\label{classRingTopology_292a7746993788f96042f2f628cfcbc5} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 42 of file ring\_\-topo.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +ring\_\-topo.h\item +ring\_\-topo.cpp\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classRunner.eps b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classRunner.eps new file mode 100644 index 000000000..0bc955061 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classRunner.eps @@ -0,0 +1,215 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 161.29 +%%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 3.1 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 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 +(Runner) cw +(Communicable) cw +(Thread) cw +(peoEA< EOT >) cw +(peoParallelAlgorithmWrapper) 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 ----- + + (Runner) 0.5 1 box + (Communicable) 0 2 box + (Thread) 1 2 box + (peoEA< EOT >) 0 0 box + (peoParallelAlgorithmWrapper) 1 0 box + +% ----- relations ----- + +solid +0 0.5 1 out +solid +0 1 2 conn +solid +1 0 2 in +solid +1 1 2 in +solid +1 0.5 0.25 out +solid +0 1 1 conn +solid +0 0 0.75 in +solid +0 1 0.75 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classRunner.pdf b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classRunner.pdf new file mode 100644 index 000000000..c9bfd3d1a Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classRunner.pdf differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classRunner.tex b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classRunner.tex new file mode 100644 index 000000000..ce98b3b32 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classRunner.tex @@ -0,0 +1,80 @@ +\hypertarget{classRunner}{ +\section{Runner Class Reference} +\label{classRunner}\index{Runner@{Runner}} +} +Inheritance diagram for Runner::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{classRunner} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classRunner_7acb8258c21da9daa62f9a177a2e5acd}{ +\hyperlink{classRunner_7acb8258c21da9daa62f9a177a2e5acd}{Runner} ()} +\label{classRunner_7acb8258c21da9daa62f9a177a2e5acd} + +\item +\hypertarget{classRunner_7dc4419051fcc5cc9dadd54ecc9cd47d}{ +void \hyperlink{classRunner_7dc4419051fcc5cc9dadd54ecc9cd47d}{start} ()} +\label{classRunner_7dc4419051fcc5cc9dadd54ecc9cd47d} + +\item +\hypertarget{classRunner_5bc239db2be753b77369fa9a038769fd}{ +void \hyperlink{classRunner_5bc239db2be753b77369fa9a038769fd}{wait\-Starting} ()} +\label{classRunner_5bc239db2be753b77369fa9a038769fd} + +\item +\hypertarget{classRunner_40adbfb7d6944189b4fff60b02e669ca}{ +bool \hyperlink{classRunner_40adbfb7d6944189b4fff60b02e669ca}{is\-Local} ()} +\label{classRunner_40adbfb7d6944189b4fff60b02e669ca} + +\item +\hypertarget{classRunner_0f133e75c28fb8264549814f80608e68}{ +void \hyperlink{classRunner_0f133e75c28fb8264549814f80608e68}{terminate} ()} +\label{classRunner_0f133e75c28fb8264549814f80608e68} + +\item +\hypertarget{classRunner_5026c74eec184e3a15cb3c0ec4200a57}{ +RUNNER\_\-ID \hyperlink{classRunner_5026c74eec184e3a15cb3c0ec4200a57}{get\-ID} ()} +\label{classRunner_5026c74eec184e3a15cb3c0ec4200a57} + +\item +\hypertarget{classRunner_2ad6d199d684d6f34347fc202ffe2fa3}{ +void \hyperlink{classRunner_2ad6d199d684d6f34347fc202ffe2fa3}{pack\-Termination} ()} +\label{classRunner_2ad6d199d684d6f34347fc202ffe2fa3} + +\item +\hypertarget{classRunner_3591be473e0fcee1105fb57319b529aa}{ +void \hyperlink{classRunner_3591be473e0fcee1105fb57319b529aa}{notify\-Sending\-Termination} ()} +\label{classRunner_3591be473e0fcee1105fb57319b529aa} + +\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +\hypertarget{classRunner_4b0827d5df2df632db4ab71dd55e81b2}{ +sem\_\-t \hyperlink{classRunner_4b0827d5df2df632db4ab71dd55e81b2}{sem\_\-start}} +\label{classRunner_4b0827d5df2df632db4ab71dd55e81b2} + +\item +\hypertarget{classRunner_1989c1f8e0b0b54ad2e60a341007e59d}{ +unsigned \hyperlink{classRunner_1989c1f8e0b0b54ad2e60a341007e59d}{id}} +\label{classRunner_1989c1f8e0b0b54ad2e60a341007e59d} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 47 of file runner.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +runner.h\item +core/runner.cpp\item +rmc/mpi/runner.cpp\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classService.eps b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classService.eps new file mode 100644 index 000000000..b2c160b85 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classService.eps @@ -0,0 +1,241 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 63.4921 +%%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 7.875 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 5 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 +(Service) cw +(Communicable) cw +(peoPopEval< EOT >) cw +(peoSynchronousMultiStart< EntityType >) cw +(peoSyncMultiStart< EOT >) cw +(peoTransform< EOT >) cw +(peoParaPopEval< EOT >) cw +(peoSeqPopEval< EOT >) cw +(peoParaSGATransform< EOT >) cw +(peoSeqTransform< EOT >) 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 ----- + + (Service) 2 2 box + (Communicable) 2 3 box + (peoPopEval< EOT >) 0.5 1 box + (peoSynchronousMultiStart< EntityType >) 1.5 1 box + (peoSyncMultiStart< EOT >) 2.5 1 box + (peoTransform< EOT >) 3.5 1 box + (peoParaPopEval< EOT >) 0 0 box + (peoSeqPopEval< EOT >) 1 0 box + (peoParaSGATransform< EOT >) 3 0 box + (peoSeqTransform< EOT >) 4 0 box + +% ----- relations ----- + +solid +0 2 2 out +solid +1 2 3 in +solid +1 2 1.25 out +solid +0.5 3.5 2 conn +solid +0 0.5 1.75 in +solid +1 0.5 0.25 out +solid +0 1 1 conn +solid +0 1.5 1.75 in +solid +0 2.5 1.75 in +solid +0 3.5 1.75 in +solid +1 3.5 0.25 out +solid +3 4 1 conn +solid +0 0 0.75 in +solid +0 1 0.75 in +solid +0 3 0.75 in +solid +0 4 0.75 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classService.pdf b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classService.pdf new file mode 100644 index 000000000..c9b2abcb1 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classService.pdf differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classService.tex b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classService.tex new file mode 100644 index 000000000..fad0d49e2 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classService.tex @@ -0,0 +1,100 @@ +\hypertarget{classService}{ +\section{Service Class Reference} +\label{classService}\index{Service@{Service}} +} +Inheritance diagram for Service::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=1.77778cm]{classService} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classService_33b149b98498c0e7e401b0f0839d7f0d}{ +void \hyperlink{classService_33b149b98498c0e7e401b0f0839d7f0d}{set\-Owner} (\hyperlink{classThread}{Thread} \&\_\-\_\-owner)} +\label{classService_33b149b98498c0e7e401b0f0839d7f0d} + +\item +\hypertarget{classService_0dae00309c51a7b7069788142aed799f}{ +\hyperlink{classThread}{Thread} $\ast$ \hyperlink{classService_0dae00309c51a7b7069788142aed799f}{get\-Owner} ()} +\label{classService_0dae00309c51a7b7069788142aed799f} + +\item +\hypertarget{classService_7e2ae35a9070a05dcd46488df649896d}{ +void \hyperlink{classService_7e2ae35a9070a05dcd46488df649896d}{request\-Resource\-Request} (unsigned \_\-\_\-how\_\-many=1)} +\label{classService_7e2ae35a9070a05dcd46488df649896d} + +\item +\hypertarget{classService_c4289f98d1cd9ed53e850efbb6a947bd}{ +void \hyperlink{classService_c4289f98d1cd9ed53e850efbb6a947bd}{pack\-Resource\-Request} ()} +\label{classService_c4289f98d1cd9ed53e850efbb6a947bd} + +\item +\hypertarget{classService_aea4b8f7f8fb88e83862ee4bfd9ab207}{ +virtual void \hyperlink{classService_aea4b8f7f8fb88e83862ee4bfd9ab207}{pack\-Data} ()} +\label{classService_aea4b8f7f8fb88e83862ee4bfd9ab207} + +\item +\hypertarget{classService_3bd87b444710813d30fd754d4d0b4df3}{ +virtual void \hyperlink{classService_3bd87b444710813d30fd754d4d0b4df3}{unpack\-Data} ()} +\label{classService_3bd87b444710813d30fd754d4d0b4df3} + +\item +\hypertarget{classService_e4f2894e6121e60f38d41cfbd7447ae4}{ +virtual void \hyperlink{classService_e4f2894e6121e60f38d41cfbd7447ae4}{execute} ()} +\label{classService_e4f2894e6121e60f38d41cfbd7447ae4} + +\item +\hypertarget{classService_e5e4f90b2315e15c2a2913bd370f4cf5}{ +virtual void \hyperlink{classService_e5e4f90b2315e15c2a2913bd370f4cf5}{pack\-Result} ()} +\label{classService_e5e4f90b2315e15c2a2913bd370f4cf5} + +\item +\hypertarget{classService_45c06344edbfa482b91f68e2035a6099}{ +virtual void \hyperlink{classService_45c06344edbfa482b91f68e2035a6099}{unpack\-Result} ()} +\label{classService_45c06344edbfa482b91f68e2035a6099} + +\item +\hypertarget{classService_81ad4d6ebb50045b8977e2ab74826f30}{ +virtual void \hyperlink{classService_81ad4d6ebb50045b8977e2ab74826f30}{notify\-Sending\-Data} ()} +\label{classService_81ad4d6ebb50045b8977e2ab74826f30} + +\item +\hypertarget{classService_94e2012e76aaae3aa8199250f558d503}{ +virtual void \hyperlink{classService_94e2012e76aaae3aa8199250f558d503}{notify\-Sending\-Resource\-Request} ()} +\label{classService_94e2012e76aaae3aa8199250f558d503} + +\item +\hypertarget{classService_f94cc8a5c2665d4574041737e61e9ffc}{ +virtual void \hyperlink{classService_f94cc8a5c2665d4574041737e61e9ffc}{notify\-Sending\-All\-Resource\-Requests} ()} +\label{classService_f94cc8a5c2665d4574041737e61e9ffc} + +\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +\hypertarget{classService_8b615c65c876f342fe8209eb7e36d7b2}{ +\hyperlink{classThread}{Thread} $\ast$ \hyperlink{classService_8b615c65c876f342fe8209eb7e36d7b2}{owner}} +\label{classService_8b615c65c876f342fe8209eb7e36d7b2} + +\item +\hypertarget{classService_a5b2ad9520bb3710b54348b99acebd58}{ +unsigned \hyperlink{classService_a5b2ad9520bb3710b54348b99acebd58}{num\_\-sent\_\-rr}} +\label{classService_a5b2ad9520bb3710b54348b99acebd58} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 45 of file service.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +service.h\item +core/service.cpp\item +rmc/mpi/service.cpp\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classThread.eps b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classThread.eps new file mode 100644 index 000000000..b0fe5e8f1 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classThread.eps @@ -0,0 +1,227 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 80.6452 +%%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 6.2 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 def +/cols 4 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 +(Thread) cw +(ReactiveThread) cw +(Runner) cw +(Communicator) cw +(Worker) cw +(peoEA< EOT >) cw +(peoParallelAlgorithmWrapper) 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 ----- + + (Thread) 1.5 2 box + (ReactiveThread) 0.5 1 box + (Runner) 2.5 1 box + (Communicator) 0 0 box + (Worker) 1 0 box + (peoEA< EOT >) 2 0 box + (peoParallelAlgorithmWrapper) 3 0 box + +% ----- relations ----- + +solid +1 1.5 1.25 out +solid +0.5 2.5 2 conn +solid +0 0.5 1.75 in +solid +1 0.5 0.25 out +solid +0 1 1 conn +solid +0 2.5 1.75 in +solid +1 2.5 0.25 out +solid +2 3 1 conn +solid +0 0 0.75 in +solid +0 1 0.75 in +solid +0 2 0.75 in +solid +0 3 0.75 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classThread.pdf b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classThread.pdf new file mode 100644 index 000000000..2e71727a7 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classThread.pdf differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classThread.tex b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classThread.tex new file mode 100644 index 000000000..2c95acf63 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classThread.tex @@ -0,0 +1,54 @@ +\hypertarget{classThread}{ +\section{Thread Class Reference} +\label{classThread}\index{Thread@{Thread}} +} +Inheritance diagram for Thread::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.25806cm]{classThread} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classThread_95c703fb8f2f27cb64f475a8c940864a}{ +\hyperlink{classThread_95c703fb8f2f27cb64f475a8c940864a}{Thread} ()} +\label{classThread_95c703fb8f2f27cb64f475a8c940864a} + +\item +\hypertarget{classThread_37d9edd3a1a776cbc27dedff949c9726}{ +virtual \hyperlink{classThread_37d9edd3a1a776cbc27dedff949c9726}{$\sim$Thread} ()} +\label{classThread_37d9edd3a1a776cbc27dedff949c9726} + +\item +\hypertarget{classThread_e197c46f8f62ecce6d2a7fe95bdc5b38}{ +void \hyperlink{classThread_e197c46f8f62ecce6d2a7fe95bdc5b38}{set\-Active} ()} +\label{classThread_e197c46f8f62ecce6d2a7fe95bdc5b38} + +\item +\hypertarget{classThread_20632ffe9ddfa2a478afb0c84dc1096b}{ +void \hyperlink{classThread_20632ffe9ddfa2a478afb0c84dc1096b}{set\-Passive} ()} +\label{classThread_20632ffe9ddfa2a478afb0c84dc1096b} + +\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +\hypertarget{classThread_1b155d63bca3096ac4a1d039aea83c7c}{ +bool \hyperlink{classThread_1b155d63bca3096ac4a1d039aea83c7c}{act}} +\label{classThread_1b155d63bca3096ac4a1d039aea83c7c} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 44 of file thread.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +thread.h\item +thread.cpp\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classTopology.eps b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classTopology.eps new file mode 100644 index 000000000..45dacefa6 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classTopology.eps @@ -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 412.371 +%%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 1.2125 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 +(Topology) cw +(RingTopology) 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 ----- + + (Topology) 0 1 box + (RingTopology) 0 0 box + +% ----- relations ----- + +solid +1 0 0.25 out +solid +0 0 0.75 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classTopology.pdf b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classTopology.pdf new file mode 100644 index 000000000..dfcce5d06 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classTopology.pdf differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classTopology.tex b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classTopology.tex new file mode 100644 index 000000000..532211163 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classTopology.tex @@ -0,0 +1,44 @@ +\hypertarget{classTopology}{ +\section{Topology Class Reference} +\label{classTopology}\index{Topology@{Topology}} +} +Inheritance diagram for Topology::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{classTopology} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classTopology_3e447669757c8311c7f6f8edc705abf2}{ +virtual \hyperlink{classTopology_3e447669757c8311c7f6f8edc705abf2}{$\sim$Topology} ()} +\label{classTopology_3e447669757c8311c7f6f8edc705abf2} + +\item +\hypertarget{classTopology_62bc46d8c20fdc71dad9e7c7a0d7aded}{ +void \hyperlink{classTopology_62bc46d8c20fdc71dad9e7c7a0d7aded}{add} (\hyperlink{classCooperative}{Cooperative} \&\_\-\_\-mig)} +\label{classTopology_62bc46d8c20fdc71dad9e7c7a0d7aded} + +\end{CompactItemize} +\subsection*{Protected Attributes} +\begin{CompactItemize} +\item +\hypertarget{classTopology_247a2faa8568b678f0b7b11e62c7812c}{ +std::vector$<$ \hyperlink{classCooperative}{Cooperative} $\ast$ $>$ \hyperlink{classTopology_247a2faa8568b678f0b7b11e62c7812c}{mig}} +\label{classTopology_247a2faa8568b678f0b7b11e62c7812c} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 44 of file topology.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +topology.h\item +topology.cpp\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classWorker.eps b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classWorker.eps new file mode 100644 index 000000000..5972d40a6 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classWorker.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 275.229 +%%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 1.81667 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 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 +(Worker) cw +(Communicable) cw +(ReactiveThread) cw +(Thread) 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 ----- + + (Worker) 0.5 0 box + (Communicable) 0 1 box + (ReactiveThread) 1 1 box + (Thread) 1 2 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +0 1 1 conn +solid +1 0 1 in +solid +1 1 1 in +solid +0 1 1 out +solid +1 1 2 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classWorker.pdf b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classWorker.pdf new file mode 100644 index 000000000..e43d46552 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classWorker.pdf differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classWorker.tex b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classWorker.tex new file mode 100644 index 000000000..4cd676866 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classWorker.tex @@ -0,0 +1,94 @@ +\hypertarget{classWorker}{ +\section{Worker Class Reference} +\label{classWorker}\index{Worker@{Worker}} +} +Inheritance diagram for Worker::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{classWorker} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classWorker_3754817df06ffe220f7f0d903c78ccac}{ +\hyperlink{classWorker_3754817df06ffe220f7f0d903c78ccac}{Worker} ()} +\label{classWorker_3754817df06ffe220f7f0d903c78ccac} + +\item +\hypertarget{classWorker_abcbbace05c6113f1959c494b3577291}{ +void \hyperlink{classWorker_abcbbace05c6113f1959c494b3577291}{start} ()} +\label{classWorker_abcbbace05c6113f1959c494b3577291} + +\item +\hypertarget{classWorker_83780920118e6c2b67d9477bdf8be248}{ +void \hyperlink{classWorker_83780920118e6c2b67d9477bdf8be248}{pack\-Result} ()} +\label{classWorker_83780920118e6c2b67d9477bdf8be248} + +\item +\hypertarget{classWorker_bff2bdcd64fe5400156cc78704c64953}{ +void \hyperlink{classWorker_bff2bdcd64fe5400156cc78704c64953}{unpack\-Data} ()} +\label{classWorker_bff2bdcd64fe5400156cc78704c64953} + +\item +\hypertarget{classWorker_60d2e8eba85b9ef403d94be54c391640}{ +void \hyperlink{classWorker_60d2e8eba85b9ef403d94be54c391640}{pack\-Task\-Done} ()} +\label{classWorker_60d2e8eba85b9ef403d94be54c391640} + +\item +\hypertarget{classWorker_e2f487014766a73c5788bdcfd58ad863}{ +void \hyperlink{classWorker_e2f487014766a73c5788bdcfd58ad863}{notify\-Sending\-Result} ()} +\label{classWorker_e2f487014766a73c5788bdcfd58ad863} + +\item +\hypertarget{classWorker_13efd6a8e275745329a4a8e23a0eb0bb}{ +void \hyperlink{classWorker_13efd6a8e275745329a4a8e23a0eb0bb}{notify\-Sending\-Task\-Done} ()} +\label{classWorker_13efd6a8e275745329a4a8e23a0eb0bb} + +\item +\hypertarget{classWorker_5dab4ea663546b5a49d9398d7a624d27}{ +void \hyperlink{classWorker_5dab4ea663546b5a49d9398d7a624d27}{set\-Source} (int \_\-\_\-rank)} +\label{classWorker_5dab4ea663546b5a49d9398d7a624d27} + +\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +\hypertarget{classWorker_b5ffcb995e12fa71b9551e91729d6972}{ +WORKER\_\-ID \hyperlink{classWorker_b5ffcb995e12fa71b9551e91729d6972}{id}} +\label{classWorker_b5ffcb995e12fa71b9551e91729d6972} + +\item +\hypertarget{classWorker_d7dc76e301fd2bcf5d3a2088a59f1378}{ +SERVICE\_\-ID \hyperlink{classWorker_d7dc76e301fd2bcf5d3a2088a59f1378}{serv\_\-id}} +\label{classWorker_d7dc76e301fd2bcf5d3a2088a59f1378} + +\item +\hypertarget{classWorker_454e1764ed165af733cc44a73e395692}{ +\hyperlink{classService}{Service} $\ast$ \hyperlink{classWorker_454e1764ed165af733cc44a73e395692}{serv}} +\label{classWorker_454e1764ed165af733cc44a73e395692} + +\item +\hypertarget{classWorker_895c3ebc198018ea3391c09bc802d2f6}{ +int \hyperlink{classWorker_895c3ebc198018ea3391c09bc802d2f6}{src}} +\label{classWorker_895c3ebc198018ea3391c09bc802d2f6} + +\item +\hypertarget{classWorker_7ba5a18b2918cf9e704536b763be37f7}{ +bool \hyperlink{classWorker_7ba5a18b2918cf9e704536b763be37f7}{toto}} +\label{classWorker_7ba5a18b2918cf9e704536b763be37f7} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 46 of file worker.h. + +The documentation for this class was generated from the following files:\begin{CompactItemize} +\item +worker.h\item +worker.cpp\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoAggEvalFunc.eps b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoAggEvalFunc.eps new file mode 100644 index 000000000..de2aa80a5 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoAggEvalFunc.eps @@ -0,0 +1,215 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 218.579 +%%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.2875 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 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 +(peoAggEvalFunc< EOT >) cw +(eoBF< A1, A2, R >) cw +(eoFunctorBase) cw +(MergeRouteEval) cw +(peoNoAggEvalFunc< EOT >) 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 ----- + + (peoAggEvalFunc< EOT >) 0.5 1 box + (eoBF< A1, A2, R >) 0.5 2 box + (eoFunctorBase) 0.5 3 box + (MergeRouteEval) 0 0 box + (peoNoAggEvalFunc< EOT >) 1 0 box + +% ----- relations ----- + +solid +0 0.5 1 out +solid +1 0.5 2 in +solid +0 0.5 2 out +solid +1 0.5 3 in +solid +1 0.5 0.25 out +solid +0 1 1 conn +solid +0 0 0.75 in +solid +0 1 0.75 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoAggEvalFunc.pdf b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoAggEvalFunc.pdf new file mode 100644 index 000000000..474c0d8dd --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoAggEvalFunc.pdf @@ -0,0 +1,72 @@ +%PDF-1.3 +%쏢 +5 0 obj +<> +stream +xj1 LCP,ٖm]- e2d͡iKi $ g~I~,Mk'cJ<`\6-,+MJ@ ;3P@t%ZsPMz^o.`ߪ?fUkC8_!G@c v0DpȊŀ&7tT3XnF>h&uMȉG~7~yTN:=1h*fNGM޽<ם!vtY>Oe,uGX=?;bB+Gx=#/̨& S|rBg(IQRqw:*AH =@ FOp+Em.{dKk&Hil!-!AXPʒB2R(8.J&883TYRf]7gwendstream +endobj +6 0 obj +419 +endobj +4 0 obj +<> +/Contents 5 0 R +>> +endobj +3 0 obj +<< /Type /Pages /Kids [ +4 0 R +] /Count 1 +>> +endobj +1 0 obj +<> +endobj +7 0 obj +<>endobj +9 0 obj +<> +endobj +10 0 obj +<> +endobj +8 0 obj +<> +endobj +2 0 obj +<>endobj +xref +0 11 +0000000000 65535 f +0000000735 00000 n +0000000949 00000 n +0000000676 00000 n +0000000523 00000 n +0000000015 00000 n +0000000504 00000 n +0000000783 00000 n +0000000883 00000 n +0000000824 00000 n +0000000853 00000 n +trailer +<< /Size 11 /Root 1 0 R /Info 2 0 R +/ID [(Xě}y^}rz')(Xě}y^}rz')] +>> +startxref +1106 +%%EOF diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoAggEvalFunc.tex b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoAggEvalFunc.tex new file mode 100644 index 000000000..378801387 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoAggEvalFunc.tex @@ -0,0 +1,39 @@ +\hypertarget{classpeoAggEvalFunc}{ +\section{peo\-Agg\-Eval\-Func$<$ EOT $>$ Class Template Reference} +\label{classpeoAggEvalFunc}\index{peoAggEvalFunc@{peoAggEvalFunc}} +} +The \hyperlink{classpeoAggEvalFunc}{peo\-Agg\-Eval\-Func} class offers only the interface for creating aggregate evaluation functions - there are no direct internal functions provided. + + +{\tt \#include $<$peo\-Agg\-Eval\-Func.h$>$} + +Inheritance diagram for peo\-Agg\-Eval\-Func$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classpeoAggEvalFunc} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class peo\-Agg\-Eval\-Func$<$ EOT $>$} + +The \hyperlink{classpeoAggEvalFunc}{peo\-Agg\-Eval\-Func} class offers only the interface for creating aggregate evaluation functions - there are no direct internal functions provided. + +The class inherits {\bf public eo\-BF$<$ EOT\&, const typename EOT :: Fitness\&, void $>$} thus requiring, for the derived classes, the creation of a function having the following signature: + +\begin{TabularC}{2} +\hline +void operator()( EOT\& \_\-\_\-eot, const typename EOT :: Fitness\& \_\-\_\-partial\_\-fittness ); ~ &~ \\\hline +\end{TabularC} + + +The aggregation object is called in an iterative manner for each of the results obtained by applying partial evaluation functions. + + + +Definition at line 53 of file peo\-Agg\-Eval\-Func.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +peo\-Agg\-Eval\-Func.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoAsyncIslandMig.eps b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoAsyncIslandMig.eps new file mode 100644 index 000000000..292b6cce7 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoAsyncIslandMig.eps @@ -0,0 +1,221 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 222.222 +%%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.25 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 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 +(peoAsyncIslandMig< EOT >) cw +(Cooperative) cw +(eoUpdater) cw +(Communicable) cw +(eoF< void >) cw +(eoFunctorBase) 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 ----- + + (peoAsyncIslandMig< EOT >) 0.5 0 box + (Cooperative) 0 1 box + (eoUpdater) 1 1 box + (Communicable) 0 2 box + (eoF< void >) 1 2 box + (eoFunctorBase) 1 3 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +0 1 1 conn +solid +1 0 1 in +solid +0 0 1 out +solid +1 1 1 in +solid +0 1 1 out +solid +1 0 2 in +solid +1 1 2 in +solid +0 1 2 out +solid +1 1 3 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoAsyncIslandMig.pdf b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoAsyncIslandMig.pdf new file mode 100644 index 000000000..45d2aac49 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoAsyncIslandMig.pdf differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoAsyncIslandMig.tex b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoAsyncIslandMig.tex new file mode 100644 index 000000000..bb0bcc2cf --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoAsyncIslandMig.tex @@ -0,0 +1,218 @@ +\hypertarget{classpeoAsyncIslandMig}{ +\section{peo\-Async\-Island\-Mig$<$ EOT $>$ Class Template Reference} +\label{classpeoAsyncIslandMig}\index{peoAsyncIslandMig@{peoAsyncIslandMig}} +} +The \hyperlink{classpeoAsyncIslandMig}{peo\-Async\-Island\-Mig} class offers the elementary basis for implementating an asynchronous island migration model - requires the specification of several basic parameters, i.e. + + +{\tt \#include $<$peo\-Async\-Island\-Mig.h$>$} + +Inheritance diagram for peo\-Async\-Island\-Mig$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classpeoAsyncIslandMig} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hyperlink{classpeoAsyncIslandMig_e0f706cbf4148d3ca327227a5c7a9fdf}{peo\-Async\-Island\-Mig} (\bf{eo\-Continue}$<$ EOT $>$ \&\_\-\_\-cont, \bf{eo\-Select}$<$ EOT $>$ \&\_\-\_\-select, \bf{eo\-Replacement}$<$ EOT $>$ \&\_\-\_\-replace, \hyperlink{classTopology}{Topology} \&\_\-\_\-topology, \bf{eo\-Pop}$<$ EOT $>$ \&\_\-\_\-source, \bf{eo\-Pop}$<$ EOT $>$ \&\_\-\_\-destination) +\begin{CompactList}\small\item\em Constructor for the \hyperlink{classpeoAsyncIslandMig}{peo\-Async\-Island\-Mig} class; the characteristics of the migration model are defined through the specified parameters - out of the box objects provided in \doxyref{EO}, etc., or custom, derived objects may be passed as parameters. \item\end{CompactList}\item +void \hyperlink{classpeoAsyncIslandMig_13581e54425727a7f785ca8a6df527b5}{operator()} () +\begin{CompactList}\small\item\em \doxyref{Function} operator to be called as checkpoint for performing the migration step. \item\end{CompactList}\item +\hypertarget{classpeoAsyncIslandMig_6d790a5d0b6ac510cac4f61a1c0d8f16}{ +void \hyperlink{classpeoAsyncIslandMig_6d790a5d0b6ac510cac4f61a1c0d8f16}{pack} ()} +\label{classpeoAsyncIslandMig_6d790a5d0b6ac510cac4f61a1c0d8f16} + +\begin{CompactList}\small\item\em Auxiliary function dealing with sending the emigrant individuals. There is no need to explicitly call the function. \item\end{CompactList}\item +\hypertarget{classpeoAsyncIslandMig_455501aee5db2bbfbae15779c8429369}{ +void \hyperlink{classpeoAsyncIslandMig_455501aee5db2bbfbae15779c8429369}{unpack} ()} +\label{classpeoAsyncIslandMig_455501aee5db2bbfbae15779c8429369} + +\begin{CompactList}\small\item\em Auxiliary function dealing with receiving immigrant individuals. There is no need to explicitly call the function. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classpeoAsyncIslandMig_87a4ef7d4bd30d349a801bf0f9e87c82}{ +void \hyperlink{classpeoAsyncIslandMig_87a4ef7d4bd30d349a801bf0f9e87c82}{emigrate} ()} +\label{classpeoAsyncIslandMig_87a4ef7d4bd30d349a801bf0f9e87c82} + +\item +\hypertarget{classpeoAsyncIslandMig_5a9a64ba51a696e45f91b362c39c9a64}{ +void \hyperlink{classpeoAsyncIslandMig_5a9a64ba51a696e45f91b362c39c9a64}{immigrate} ()} +\label{classpeoAsyncIslandMig_5a9a64ba51a696e45f91b362c39c9a64} + +\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +\hypertarget{classpeoAsyncIslandMig_2fc077d02ef9ea4595cfe883af0d4f83}{ +\bf{eo\-Continue}$<$ EOT $>$ \& \hyperlink{classpeoAsyncIslandMig_2fc077d02ef9ea4595cfe883af0d4f83}{cont}} +\label{classpeoAsyncIslandMig_2fc077d02ef9ea4595cfe883af0d4f83} + +\item +\hypertarget{classpeoAsyncIslandMig_b1fa045094c8a411323e75b5820c80c2}{ +\bf{eo\-Select}$<$ EOT $>$ \& \hyperlink{classpeoAsyncIslandMig_b1fa045094c8a411323e75b5820c80c2}{select}} +\label{classpeoAsyncIslandMig_b1fa045094c8a411323e75b5820c80c2} + +\item +\hypertarget{classpeoAsyncIslandMig_b761dbd880ee32e170741ecd78da6f48}{ +\bf{eo\-Replacement}$<$ EOT $>$ \& \hyperlink{classpeoAsyncIslandMig_b761dbd880ee32e170741ecd78da6f48}{replace}} +\label{classpeoAsyncIslandMig_b761dbd880ee32e170741ecd78da6f48} + +\item +\hypertarget{classpeoAsyncIslandMig_e45e5a808a96f0853ab6ba42339fe679}{ +\hyperlink{classTopology}{Topology} \& \hyperlink{classpeoAsyncIslandMig_e45e5a808a96f0853ab6ba42339fe679}{topology}} +\label{classpeoAsyncIslandMig_e45e5a808a96f0853ab6ba42339fe679} + +\item +\hypertarget{classpeoAsyncIslandMig_8a502d82c773033e274dca932fc2d4ee}{ +\bf{eo\-Pop}$<$ EOT $>$ \& \hyperlink{classpeoAsyncIslandMig_8a502d82c773033e274dca932fc2d4ee}{source}} +\label{classpeoAsyncIslandMig_8a502d82c773033e274dca932fc2d4ee} + +\item +\hypertarget{classpeoAsyncIslandMig_e407f411d08ae7d96992603c145a7e43}{ +\bf{eo\-Pop}$<$ EOT $>$ \& \hyperlink{classpeoAsyncIslandMig_e407f411d08ae7d96992603c145a7e43}{destination}} +\label{classpeoAsyncIslandMig_e407f411d08ae7d96992603c145a7e43} + +\item +\hypertarget{classpeoAsyncIslandMig_b8c76d98d9ae99dd930a77c12860519a}{ +std::queue$<$ \bf{eo\-Pop}$<$ EOT $>$ $>$ \hyperlink{classpeoAsyncIslandMig_b8c76d98d9ae99dd930a77c12860519a}{imm}} +\label{classpeoAsyncIslandMig_b8c76d98d9ae99dd930a77c12860519a} + +\item +\hypertarget{classpeoAsyncIslandMig_a9cc0e2d61cac6e11647b141962adc89}{ +std::queue$<$ \bf{eo\-Pop}$<$ EOT $>$ $>$ \hyperlink{classpeoAsyncIslandMig_a9cc0e2d61cac6e11647b141962adc89}{em}} +\label{classpeoAsyncIslandMig_a9cc0e2d61cac6e11647b141962adc89} + +\item +\hypertarget{classpeoAsyncIslandMig_1a2c0004d23bc303420af137a8c8bd27}{ +std::queue$<$ \hyperlink{classCooperative}{Cooperative} $\ast$ $>$ \hyperlink{classpeoAsyncIslandMig_1a2c0004d23bc303420af137a8c8bd27}{coop\_\-em}} +\label{classpeoAsyncIslandMig_1a2c0004d23bc303420af137a8c8bd27} + +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class peo\-Async\-Island\-Mig$<$ EOT $>$} + +The \hyperlink{classpeoAsyncIslandMig}{peo\-Async\-Island\-Mig} class offers the elementary basis for implementating an asynchronous island migration model - requires the specification of several basic parameters, i.e. + +continuation criterion, selection and replacement strategies, a topological model and the source and destination population for the migrating individuals. As opposed to the synchronous migration model, in the asynchronous migration approach, there is no synchronization step between islands after performing the emigration phase. + +The migration operator is called at the end of each generation of an evolutionary algorithms as a checkpoint object - the following code exposes the structure of a classic evolutionary algorithm: + +\begin{TabularC}{2} +\hline +{\bf do} \{ ~ &~ \\\hline +~~~~~~~~ select( population, offsprings ); ~ &// select the offsprings from the current population \\\hline +~~~~~~~~ transform( offsprings ); ~ &// crossover and mutation operators are applied on the selected offsprings \\\hline +~~~~~~~~ evaluate( offsprings ); ~ &// evaluation step of the resulting offsprings \\\hline +~~~~~~~~ replace( population, offsprings ); ~ &// replace the individuals in the current population whith individuals from the offspring population, according to a specified replacement strategy \\\hline +\} {\bf while} ( ea\-Checkpoint\-Continue( population ) ); ~ &// checkpoint operators are applied on the current population, including the migration operator, if any specified \\\hline +\end{TabularC} + + +Constructing an asynchronous island migration model requires having defined (1) a topological migration model, (2) the control parameters of the migration process, (3) a checkpoint object associated with an evolutionary algorithm, and (4) an owner object must be set. The owner object must be derived from the {\bf \hyperlink{classRunner}{Runner}} class (for example a \hyperlink{classpeoEA}{peo\-EA} object represents a possible owner). A simple example is offered bellow: + +\begin{enumerate} +\item topological model to be followed when performing migrations: \par + \par + \begin{TabularC}{2} +\hline +\hyperlink{classRingTopology}{Ring\-Topology} mig\-Topology; ~ &// a simple ring topological model - each island communicates with two other islands \\\hline +\end{TabularC} + + +\item the continuation criterion, selection and replacement strategy etc. are defined: \par + \par + \begin{TabularC}{2} +\hline +eo\-Pop$<$ EOT $>$ population( POP\_\-SIZE, pop\-Initializer ); ~ &// population of individuals to be used for the evolutionary algorithm \\\hline +~ &~ \\\hline +eo\-Periodic\-Continue$<$ EOT $>$ mig\-Cont( MIG\_\-FREQ ); ~ &// migrations occur periodically at MIG\_\-FREQ iterations \\\hline +eo\-Random\-Select$<$ EOT $>$ mig\-Select\-Strategy; ~ &// selection strategy - in this case a random selection is applied \\\hline +eo\-Select\-Number$<$ EOT $>$ mig\-Select( mig\-Select\-Strategy, MIG\_\-SIZE ); ~ &// number of individuals to be selected using the specified strategy \\\hline +eo\-Plus\-Replacement$<$ EOT $>$ mig\-Replace; ~ &// immigration strategy - the worse individuals in the destination population are replaced by the immigrant individuals \\\hline +~ &~ \\\hline +peo\-Async\-Island\-Mig$<$ EOT $>$ async\-Migration( \par + ~~~~~~~~ mig\-Cont, mig\-Select, mig\-Replace, mig\-Topology, \par + ~~~~~~~~ population, population \par + ); ~ &// asynchronous migration object - the emigrant individuals are selected from the same from population in which the immigrant individuals are being integrated \\\hline +\end{TabularC} + + +\item creation of a checkpoint object as part of the definition of an evolutionary algoritm (details of th EA not given as being out of scope): \par + \par + \begin{TabularC}{2} +\hline +... ~ &~ \\\hline +eo\-Gen\-Continue$<$ EOT $>$ ea\-Cont( NUM\_\-GEN ); ~ &// the evolutionary algorithm will stop after NUM\_\-GEN generations \\\hline +eo\-Check\-Point$<$ EOT $>$ ea\-Checkpoint\-Continue( ea\-Cont ); ~ &// number of individuals to be selected using the specified strategy \\\hline +... ~ &~ \\\hline +ea\-Checkpoint\-Continue.add( async\-Migration ); ~ &// adding the migration operator as checkpoint element \\\hline +... ~ &~ \\\hline +\end{TabularC} + + +\item definition of an owner evolutionary algorithm (an object inheriting the {\bf \hyperlink{classRunner}{Runner}} class): \par + \par + \begin{TabularC}{2} +\hline +peo\-EA$<$ EOT $>$ ea\-Alg( ea\-Checkpoint\-Continue, ea\-Pop\-Eval, ea\-Select, ea\-Transform, ea\-Replace); ~ &// evolutionary algorithm having as checkpoint the ea\-Checkpoint\-Continue object defined above \\\hline +async\-Migration.set\-Owner( ea\-Alg ); ~ &// setting the evolutionary algorithm as owner of the migration object \\\hline +ea\-Alg( population ); ~ &// applying the evolutionary algorithm on a given population \\\hline +\end{TabularC} +\end{enumerate} + + +The source and the destination population for the migration object were specified as being the same, in step no. 2, as we are usually interested in selecting the emigrants and integrating the immigrant individuals from and in, respectively, one unique population, iteratively evolved by an evolutionary algorithm. There is no restriction in having two distinct populations as source and destination for the emigrant and immigrant individuals respectively. + +The above steps only create an asynchronous migration object associated to an evolutionary algorithm. The creation of several islands requires the reiteration of the steps 2 through 4 for creating distinct algorithms, with distinct populations and the associated distinctly parametrized migration objects. The interconnecting element is the underlying topology, defined at step 1 (the same C++ mig\-Topology object has to be passed as parameter for all the migration objects, in order to interconnect them). + + + +Definition at line 140 of file peo\-Async\-Island\-Mig.h. + +\subsection{Constructor \& Destructor Documentation} +\hypertarget{classpeoAsyncIslandMig_e0f706cbf4148d3ca327227a5c7a9fdf}{ +\index{peoAsyncIslandMig@{peo\-Async\-Island\-Mig}!peoAsyncIslandMig@{peoAsyncIslandMig}} +\index{peoAsyncIslandMig@{peoAsyncIslandMig}!peoAsyncIslandMig@{peo\-Async\-Island\-Mig}} +\subsubsection[peoAsyncIslandMig]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ \hyperlink{classpeoAsyncIslandMig}{peo\-Async\-Island\-Mig}$<$ EOT $>$::\hyperlink{classpeoAsyncIslandMig}{peo\-Async\-Island\-Mig} (\bf{eo\-Continue}$<$ EOT $>$ \& {\em \_\-\_\-cont}, \bf{eo\-Select}$<$ EOT $>$ \& {\em \_\-\_\-select}, \bf{eo\-Replacement}$<$ EOT $>$ \& {\em \_\-\_\-replace}, \hyperlink{classTopology}{Topology} \& {\em \_\-\_\-topology}, \bf{eo\-Pop}$<$ EOT $>$ \& {\em \_\-\_\-source}, \bf{eo\-Pop}$<$ EOT $>$ \& {\em \_\-\_\-destination})}} +\label{classpeoAsyncIslandMig_e0f706cbf4148d3ca327227a5c7a9fdf} + + +Constructor for the \hyperlink{classpeoAsyncIslandMig}{peo\-Async\-Island\-Mig} class; the characteristics of the migration model are defined through the specified parameters - out of the box objects provided in \doxyref{EO}, etc., or custom, derived objects may be passed as parameters. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em eo\-Continue$<$}]EOT $>$\& \_\-\_\-cont - continuation criterion specifying whether the migration is performed or not; \item[{\em eo\-Select$<$}]EOT $>$\& \_\-\_\-select - selection strategy to be applied for constructing a list of emigrant individuals out of the source population; \item[{\em eo\-Replacement$<$}]EOT $>$\& \_\-\_\-replace - replacement strategy used for integrating the immigrant individuals in the destination population; \item[{\em Topology\&}]\_\-\_\-topology - topological model to be followed when performing migrations; \item[{\em eo\-Pop$<$}]EOT $>$\& \_\-\_\-source - source population from which the emigrant individuals are selected; \item[{\em eo\-Pop$<$}]EOT $>$\& \_\-\_\-destination - destination population in which the immigrant population are integrated. \end{description} +\end{Desc} + + +Definition at line 199 of file peo\-Async\-Island\-Mig.h. + +References Topology::add(). + +\subsection{Member Function Documentation} +\hypertarget{classpeoAsyncIslandMig_13581e54425727a7f785ca8a6df527b5}{ +\index{peoAsyncIslandMig@{peo\-Async\-Island\-Mig}!operator()@{operator()}} +\index{operator()@{operator()}!peoAsyncIslandMig@{peo\-Async\-Island\-Mig}} +\subsubsection[operator()]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void \hyperlink{classpeoAsyncIslandMig}{peo\-Async\-Island\-Mig}$<$ EOT $>$::operator() ()\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}} +\label{classpeoAsyncIslandMig_13581e54425727a7f785ca8a6df527b5} + + +\doxyref{Function} operator to be called as checkpoint for performing the migration step. + +The emigrant individuals are selected from the source population and sent to the next island (defined by the topology object) while the immigrant individuals are integrated in the destination population. There is no need to explicitly call the function - the wrapper checkpoint object (please refer to the above example) will perform the call when required. + +Implements \bf{eo\-F$<$ void $>$}. + +Definition at line 276 of file peo\-Async\-Island\-Mig.h. + +References peo\-Async\-Island\-Mig$<$ EOT $>$::cont, peo\-Async\-Island\-Mig$<$ EOT $>$::emigrate(), peo\-Async\-Island\-Mig$<$ EOT $>$::immigrate(), and peo\-Async\-Island\-Mig$<$ EOT $>$::source. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +peo\-Async\-Island\-Mig.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoEA.eps b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoEA.eps new file mode 100644 index 000000000..e4aabc826 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoEA.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 280.374 +%%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 1.78333 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 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 +(peoEA< EOT >) cw +(Runner) cw +(Communicable) cw +(Thread) 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 ----- + + (peoEA< EOT >) 0.5 0 box + (Runner) 0.5 1 box + (Communicable) 0 2 box + (Thread) 1 2 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +1 0.5 1 in +solid +0 0.5 1 out +solid +0 1 2 conn +solid +1 0 2 in +solid +1 1 2 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoEA.pdf b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoEA.pdf new file mode 100644 index 000000000..10660f801 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoEA.pdf differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoEA.tex b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoEA.tex new file mode 100644 index 000000000..395b2e720 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoEA.tex @@ -0,0 +1,145 @@ +\hypertarget{classpeoEA}{ +\section{peo\-EA$<$ EOT $>$ Class Template Reference} +\label{classpeoEA}\index{peoEA@{peoEA}} +} +The \hyperlink{classpeoEA}{peo\-EA} class offers an elementary evolutionary algorithm implementation. + + +{\tt \#include $<$peo\-EA.h$>$} + +Inheritance diagram for peo\-EA$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{classpeoEA} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hyperlink{classpeoEA_dbfc4f8907bef234602149229f132371}{peo\-EA} (\bf{eo\-Continue}$<$ EOT $>$ \&\_\-\_\-cont, \hyperlink{classpeoPopEval}{peo\-Pop\-Eval}$<$ EOT $>$ \&\_\-\_\-pop\_\-eval, \bf{eo\-Select}$<$ EOT $>$ \&\_\-\_\-select, \hyperlink{classpeoTransform}{peo\-Transform}$<$ EOT $>$ \&\_\-\_\-trans, \bf{eo\-Replacement}$<$ EOT $>$ \&\_\-\_\-replace) +\begin{CompactList}\small\item\em Constructor for the evolutionary algorithm object - several basic parameters have to be specified, allowing for different levels of parallelism. \item\end{CompactList}\item +\hypertarget{classpeoEA_6ab8c321d29350634143a2a01cf2ad24}{ +void \hyperlink{classpeoEA_6ab8c321d29350634143a2a01cf2ad24}{run} ()} +\label{classpeoEA_6ab8c321d29350634143a2a01cf2ad24} + +\begin{CompactList}\small\item\em Evolutionary algorithm function - a side effect of the fact that the class is derived from the {\bf \hyperlink{classRunner}{Runner}} class, thus requiring the existence of a {\em run\/} function, the algorithm being executed on a distinct thread. \item\end{CompactList}\item +void \hyperlink{classpeoEA_3c709e3b2491147d26fee36138644613}{operator()} (\bf{eo\-Pop}$<$ EOT $>$ \&\_\-\_\-pop) +\begin{CompactList}\small\item\em \doxyref{Function} operator for specifying the population to be associated with the algorithm. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +\hypertarget{classpeoEA_5f015eebf42f176b9fe322488c446c2a}{ +\bf{eo\-Continue}$<$ EOT $>$ \& \hyperlink{classpeoEA_5f015eebf42f176b9fe322488c446c2a}{cont}} +\label{classpeoEA_5f015eebf42f176b9fe322488c446c2a} + +\item +\hypertarget{classpeoEA_9140259f50c9186edcb062b023624c96}{ +\hyperlink{classpeoPopEval}{peo\-Pop\-Eval}$<$ EOT $>$ \& \hyperlink{classpeoEA_9140259f50c9186edcb062b023624c96}{pop\_\-eval}} +\label{classpeoEA_9140259f50c9186edcb062b023624c96} + +\item +\hypertarget{classpeoEA_2d8428d69fdd6aefefbaf543fdd46d19}{ +\bf{eo\-Select}$<$ EOT $>$ \& \hyperlink{classpeoEA_2d8428d69fdd6aefefbaf543fdd46d19}{select}} +\label{classpeoEA_2d8428d69fdd6aefefbaf543fdd46d19} + +\item +\hypertarget{classpeoEA_713c77935eb8aafebfb9488cfaa4a363}{ +\hyperlink{classpeoTransform}{peo\-Transform}$<$ EOT $>$ \& \hyperlink{classpeoEA_713c77935eb8aafebfb9488cfaa4a363}{trans}} +\label{classpeoEA_713c77935eb8aafebfb9488cfaa4a363} + +\item +\hypertarget{classpeoEA_9bd2d4356cf7e69e3141dc269213aa8a}{ +\bf{eo\-Replacement}$<$ EOT $>$ \& \hyperlink{classpeoEA_9bd2d4356cf7e69e3141dc269213aa8a}{replace}} +\label{classpeoEA_9bd2d4356cf7e69e3141dc269213aa8a} + +\item +\hypertarget{classpeoEA_c0b110e410bc16283e8339f24b733772}{ +\bf{eo\-Pop}$<$ EOT $>$ $\ast$ \hyperlink{classpeoEA_c0b110e410bc16283e8339f24b733772}{pop}} +\label{classpeoEA_c0b110e410bc16283e8339f24b733772} + +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class peo\-EA$<$ EOT $>$} + +The \hyperlink{classpeoEA}{peo\-EA} class offers an elementary evolutionary algorithm implementation. + +In addition, as compared with the algorithms provided by the \doxyref{EO} framework, the \hyperlink{classpeoEA}{peo\-EA} class has the underlying necessary structure for including, for example, parallel evaluation and parallel transformation operators, migration operators etc. Although there is no restriction on using the algorithms provided by the \doxyref{EO} framework, the drawback resides in the fact that the \doxyref{EO} implementation is exclusively sequential and, in consequence, no parallelism is provided. A simple example for constructing a \hyperlink{classpeoEA}{peo\-EA} object: + +\begin{TabularC}{2} +\hline +... ~ &~ \\\hline +eo\-Pop$<$ EOT $>$ population( POP\_\-SIZE, pop\-Initializer ); ~ &// creation of a population with POP\_\-SIZE individuals - the pop\-Initializer is a functor to be called for each individual \\\hline +~ &~ \\\hline +eo\-Gen\-Continue$<$ EOT $>$ ea\-Cont( NUM\_\-GEN ); ~ &// number of generations for the evolutionary algorithm \\\hline +eo\-Check\-Point$<$ EOT $>$ ea\-Checkpoint\-Continue( ea\-Cont ); ~ &// checkpoint incorporating the continuation criterion - startpoint for adding other checkpoint objects \\\hline +~ &~ \\\hline +peo\-Seq\-Pop\-Eval$<$ EOT $>$ ea\-Pop\-Eval( eval\-Function ); ~ &// sequential evaluation functor wrapper - eval\-Function represents the actual evaluation functor \\\hline +~ &~ \\\hline +eo\-Ranking\-Select$<$ EOT $>$ selection\-Strategy; ~ &// selection strategy for creating the offspring population - a simple ranking selection in this case \\\hline +eo\-Select\-Number$<$ EOT $>$ ea\-Select( selection\-Strategy, POP\_\-SIZE ); ~ &// the number of individuals to be selected for creating the offspring population \\\hline +eo\-Ranking\-Select$<$ EOT $>$ selection\-Strategy; ~ &// selection strategy for creating the offspring population - a simple ranking selection in this case \\\hline +~ &~ \\\hline +eo\-SGATransform$<$ EOT $>$ transform( crossover, CROSS\_\-RATE, mutation, MUT\_\-RATE ); ~ &// transformation operator - crossover and mutation operators with their associated probabilities \\\hline +peo\-Seq\-Transform$<$ EOT $>$ ea\-Transform( transform ); ~ &// Paradis\-EO specific sequential operator - a parallel version may be specified in the same manner \\\hline +~ &~ \\\hline +eo\-Plus\-Replacement$<$ EOT $>$ ea\-Replace; ~ &// replacement strategy - for integrating the offspring resulting individuals in the initial population \\\hline +~ &~ \\\hline +peo\-EA$<$ EOT $>$ ea\-Alg( ea\-Checkpoint\-Continue, ea\-Pop\-Eval, ea\-Select, ea\-Transform, ea\-Replace ); ~ &// Paradis\-EO evolutionary algorithm integrating the above defined objects \\\hline +ea\-Alg( population ); ~ &// specifying the initial population for the algorithm \\\hline +... ~ &~ \\\hline +\end{TabularC} + + + + +Definition at line 82 of file peo\-EA.h. + +\subsection{Constructor \& Destructor Documentation} +\hypertarget{classpeoEA_dbfc4f8907bef234602149229f132371}{ +\index{peoEA@{peo\-EA}!peoEA@{peoEA}} +\index{peoEA@{peoEA}!peoEA@{peo\-EA}} +\subsubsection[peoEA]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ \hyperlink{classpeoEA}{peo\-EA}$<$ EOT $>$::\hyperlink{classpeoEA}{peo\-EA} (\bf{eo\-Continue}$<$ EOT $>$ \& {\em \_\-\_\-cont}, \hyperlink{classpeoPopEval}{peo\-Pop\-Eval}$<$ EOT $>$ \& {\em \_\-\_\-pop\_\-eval}, \bf{eo\-Select}$<$ EOT $>$ \& {\em \_\-\_\-select}, \hyperlink{classpeoTransform}{peo\-Transform}$<$ EOT $>$ \& {\em \_\-\_\-trans}, \bf{eo\-Replacement}$<$ EOT $>$ \& {\em \_\-\_\-replace})}} +\label{classpeoEA_dbfc4f8907bef234602149229f132371} + + +Constructor for the evolutionary algorithm object - several basic parameters have to be specified, allowing for different levels of parallelism. + +Depending on the requirements, a sequential or a parallel evaluation operator may be specified or, in the same manner, a sequential or a parallel transformation operator may be given as parameter. Out of the box objects may be provided, from the \doxyref{EO} package, for example, or custom defined ones may be specified, provided that they are derived from the correct base classes. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em eo\-Continue$<$}]EOT $>$\& \_\-\_\-cont - continuation criterion specifying whether the algorithm should continue or not; \item[{\em peo\-Pop\-Eval$<$}]EOT $>$\& \_\-\_\-pop\_\-eval - evaluation operator; it allows the specification of parallel evaluation operators, aggregate evaluation functions, etc.; \item[{\em eo\-Select$<$}]EOT $>$\& \_\-\_\-select - selection strategy to be applied for constructing a list of offspring individuals; \item[{\em peo\-Transform$<$}]EOT $>$\& \_\-\_\-trans - transformation operator, i.e. crossover and mutation; allows for sequential or parallel transform; \item[{\em eo\-Replacement$<$}]EOT $>$\& \_\-\_\-replace - replacement strategy for integrating the offspring individuals in the initial population; \end{description} +\end{Desc} + + +Definition at line 126 of file peo\-EA.h. + +References peo\-EA$<$ EOT $>$::pop\_\-eval, and peo\-EA$<$ EOT $>$::trans. + +\subsection{Member Function Documentation} +\hypertarget{classpeoEA_3c709e3b2491147d26fee36138644613}{ +\index{peoEA@{peo\-EA}!operator()@{operator()}} +\index{operator()@{operator()}!peoEA@{peo\-EA}} +\subsubsection[operator()]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void \hyperlink{classpeoEA}{peo\-EA}$<$ EOT $>$::operator() (\bf{eo\-Pop}$<$ EOT $>$ \& {\em \_\-\_\-pop})}} +\label{classpeoEA_3c709e3b2491147d26fee36138644613} + + +\doxyref{Function} operator for specifying the population to be associated with the algorithm. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em eo\-Pop$<$}]EOT $>$\& \_\-\_\-pop - initial population of the algorithm, to be iteratively evolved; \end{description} +\end{Desc} + + +Definition at line 142 of file peo\-EA.h. + +References peo\-EA$<$ EOT $>$::pop. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +peo\-EA.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoNoAggEvalFunc.eps b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoNoAggEvalFunc.eps new file mode 100644 index 000000000..b9f8ee753 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoNoAggEvalFunc.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 437.158 +%%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 1.14375 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 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 +(peoNoAggEvalFunc< EOT >) cw +(peoAggEvalFunc< EOT >) cw +(eoBF< A1, A2, R >) cw +(eoFunctorBase) 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 ----- + + (peoNoAggEvalFunc< EOT >) 0 0 box + (peoAggEvalFunc< EOT >) 0 1 box + (eoBF< A1, A2, R >) 0 2 box + (eoFunctorBase) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoNoAggEvalFunc.pdf b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoNoAggEvalFunc.pdf new file mode 100644 index 000000000..6c9a46e11 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoNoAggEvalFunc.pdf differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoNoAggEvalFunc.tex b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoNoAggEvalFunc.tex new file mode 100644 index 000000000..ff2628bb6 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoNoAggEvalFunc.tex @@ -0,0 +1,39 @@ +\hypertarget{classpeoNoAggEvalFunc}{ +\section{peo\-No\-Agg\-Eval\-Func$<$ EOT $>$ Class Template Reference} +\label{classpeoNoAggEvalFunc}\index{peoNoAggEvalFunc@{peoNoAggEvalFunc}} +} +The \hyperlink{classpeoNoAggEvalFunc}{peo\-No\-Agg\-Eval\-Func} class does nothing more than an association between a fitness value and a specified individual. + + +{\tt \#include $<$peo\-No\-Agg\-Eval\-Func.h$>$} + +Inheritance diagram for peo\-No\-Agg\-Eval\-Func$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classpeoNoAggEvalFunc} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classpeoNoAggEvalFunc_1a69ee1af8745ac75c864bf884436de5}{ +void \hyperlink{classpeoNoAggEvalFunc_1a69ee1af8745ac75c864bf884436de5}{operator()} (EOT \&\_\-\_\-sol, const typename EOT::Fitness \&\_\-\_\-fit)} +\label{classpeoNoAggEvalFunc_1a69ee1af8745ac75c864bf884436de5} + +\begin{CompactList}\small\item\em Operator which sets as fitness the {\bf \_\-\_\-fit} value for the {\bf \_\-\_\-sol} individual. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class peo\-No\-Agg\-Eval\-Func$<$ EOT $>$} + +The \hyperlink{classpeoNoAggEvalFunc}{peo\-No\-Agg\-Eval\-Func} class does nothing more than an association between a fitness value and a specified individual. + +The class is provided as a mean of declaring that no aggregation is required for the evaluation function - the fitness value is explicitly specified. + + + +Definition at line 47 of file peo\-No\-Agg\-Eval\-Func.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +peo\-No\-Agg\-Eval\-Func.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoParaPopEval.eps b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoParaPopEval.eps new file mode 100644 index 000000000..25c8b8af1 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoParaPopEval.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 487.805 +%%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 1.025 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 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 +(peoParaPopEval< EOT >) cw +(peoPopEval< EOT >) cw +(Service) cw +(Communicable) 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 ----- + + (peoParaPopEval< EOT >) 0 0 box + (peoPopEval< EOT >) 0 1 box + (Service) 0 2 box + (Communicable) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoParaPopEval.pdf b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoParaPopEval.pdf new file mode 100644 index 000000000..fcb9725ca --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoParaPopEval.pdf @@ -0,0 +1,73 @@ +%PDF-1.3 +%쏢 +5 0 obj +<> +stream +xN0EYO PŒJVE } 3IUABeܣqvрaZua4Z2} [S)E`0&@TGcbQ֛bnâyk 凚j,c`K#=DiXz:.: ¾VxFng˞Xsdc7duCTR!13aciuxo.j*2N^ +G=)B#gBYRB88)hy_i1FYH? !Ȕ r1K賐$ ~' "S{Lendstream +endobj +6 0 obj +354 +endobj +4 0 obj +<> +/Contents 5 0 R +>> +endobj +3 0 obj +<< /Type /Pages /Kids [ +4 0 R +] /Count 1 +>> +endobj +1 0 obj +<> +endobj +7 0 obj +<>endobj +9 0 obj +<> +endobj +10 0 obj +<> +endobj +8 0 obj +<> +endobj +2 0 obj +<>endobj +xref +0 11 +0000000000 65535 f +0000000669 00000 n +0000000883 00000 n +0000000610 00000 n +0000000458 00000 n +0000000015 00000 n +0000000439 00000 n +0000000717 00000 n +0000000817 00000 n +0000000758 00000 n +0000000787 00000 n +trailer +<< /Size 11 /Root 1 0 R /Info 2 0 R +/ID [(V%8cW65)(V%8cW65)] +>> +startxref +1040 +%%EOF diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoParaPopEval.tex b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoParaPopEval.tex new file mode 100644 index 000000000..7c1d7ae9f --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoParaPopEval.tex @@ -0,0 +1,258 @@ +\hypertarget{classpeoParaPopEval}{ +\section{peo\-Para\-Pop\-Eval$<$ EOT $>$ Class Template Reference} +\label{classpeoParaPopEval}\index{peoParaPopEval@{peoParaPopEval}} +} +The \hyperlink{classpeoParaPopEval}{peo\-Para\-Pop\-Eval} represents a wrapper for creating a functor capable of applying in parallel an EO-derived evaluation functor. + + +{\tt \#include $<$peo\-Para\-Pop\-Eval.h$>$} + +Inheritance diagram for peo\-Para\-Pop\-Eval$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classpeoParaPopEval} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hyperlink{classpeoParaPopEval_bcb540510a7038520bec41a7af332daf}{peo\-Para\-Pop\-Eval} (\bf{eo\-Eval\-Func}$<$ EOT $>$ \&\_\-\_\-eval\_\-func) +\begin{CompactList}\small\item\em Constructor function - an EO-derived evaluation functor has to be specified; an internal reference is set towards the specified evaluation functor. \item\end{CompactList}\item +\hyperlink{classpeoParaPopEval_1cc13a1ec366f95d219d682eccb455bc}{peo\-Para\-Pop\-Eval} (const std::vector$<$ \bf{eo\-Eval\-Func}$<$ EOT $>$ $\ast$ $>$ \&\_\-\_\-funcs, \hyperlink{classpeoAggEvalFunc}{peo\-Agg\-Eval\-Func}$<$ EOT $>$ \&\_\-\_\-merge\_\-eval) +\begin{CompactList}\small\item\em Constructor function - a vector of EO-derived evaluation functors has to be specified as well as an aggregation function. \item\end{CompactList}\item +void \hyperlink{classpeoParaPopEval_aeaa4fca4f8650e453e308838b4a2cb5}{operator()} (\bf{eo\-Pop}$<$ EOT $>$ \&\_\-\_\-pop) +\begin{CompactList}\small\item\em Operator for applying the evaluation functor (direct or aggregate) for each individual of the specified population. \item\end{CompactList}\item +void \hyperlink{classpeoParaPopEval_fea632bd645ab11182782fd3c038d6d8}{pack\-Data} () +\begin{CompactList}\small\item\em Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. \item\end{CompactList}\item +void \hyperlink{classpeoParaPopEval_410bf4c173e2f36df82251cb16ce1b05}{unpack\-Data} () +\begin{CompactList}\small\item\em Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. \item\end{CompactList}\item +\hypertarget{classpeoParaPopEval_3af76378611eac5a36da9a0a00aeeb6c}{ +void \hyperlink{classpeoParaPopEval_3af76378611eac5a36da9a0a00aeeb6c}{execute} ()} +\label{classpeoParaPopEval_3af76378611eac5a36da9a0a00aeeb6c} + +\begin{CompactList}\small\item\em Auxiliary function - it calls the specified evaluation functor(s). There is no need to explicitly call the function. \item\end{CompactList}\item +void \hyperlink{classpeoParaPopEval_24bb4ae84b0b9f64e7170e3d2b0e1223}{pack\-Result} () +\begin{CompactList}\small\item\em Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. \item\end{CompactList}\item +void \hyperlink{classpeoParaPopEval_fd7f0afe9cba30be39269d16097e190e}{unpack\-Result} () +\begin{CompactList}\small\item\em Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. \item\end{CompactList}\item +void \hyperlink{classpeoParaPopEval_1f78c3cec2940af08a059cc1aa96a9c8}{notify\-Sending\-Data} () +\begin{CompactList}\small\item\em Auxiliary function for notifications between the process requesting an evaluation operation and the processes that performs the actual evaluation phase. \item\end{CompactList}\item +void \hyperlink{classpeoParaPopEval_b77031fc4807921ffaf7cf6b669a7665}{notify\-Sending\-All\-Resource\-Requests} () +\begin{CompactList}\small\item\em Auxiliary function for notifications between the process requesting an evaluation operation and the processes that performs the actual evaluation phase. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +\hypertarget{classpeoParaPopEval_6d69b8f73c0b5d72baf75d6e53f025b7}{ +const std::vector$<$ \bf{eo\-Eval\-Func}$<$ EOT $>$ $\ast$ $>$ \& \hyperlink{classpeoParaPopEval_6d69b8f73c0b5d72baf75d6e53f025b7}{funcs}} +\label{classpeoParaPopEval_6d69b8f73c0b5d72baf75d6e53f025b7} + +\item +\hypertarget{classpeoParaPopEval_f0e8af3ee442d2b6baf0bd122226be3c}{ +std::vector$<$ \bf{eo\-Eval\-Func}$<$ EOT $>$ $\ast$ $>$ \hyperlink{classpeoParaPopEval_f0e8af3ee442d2b6baf0bd122226be3c}{one\_\-func}} +\label{classpeoParaPopEval_f0e8af3ee442d2b6baf0bd122226be3c} + +\item +\hypertarget{classpeoParaPopEval_b48bcd4e9f92f364118304535c089456}{ +\hyperlink{classpeoAggEvalFunc}{peo\-Agg\-Eval\-Func}$<$ EOT $>$ \& \hyperlink{classpeoParaPopEval_b48bcd4e9f92f364118304535c089456}{merge\_\-eval}} +\label{classpeoParaPopEval_b48bcd4e9f92f364118304535c089456} + +\item +\hypertarget{classpeoParaPopEval_bf255dd5861e27108c2abae7309d7690}{ +\hyperlink{classpeoNoAggEvalFunc}{peo\-No\-Agg\-Eval\-Func}$<$ EOT $>$ \hyperlink{classpeoParaPopEval_bf255dd5861e27108c2abae7309d7690}{no\_\-merge\_\-eval}} +\label{classpeoParaPopEval_bf255dd5861e27108c2abae7309d7690} + +\item +\hypertarget{classpeoParaPopEval_af76cd18368a0f6185878f37f0b5f272}{ +std::queue$<$ EOT $\ast$ $>$ \hyperlink{classpeoParaPopEval_af76cd18368a0f6185878f37f0b5f272}{tasks}} +\label{classpeoParaPopEval_af76cd18368a0f6185878f37f0b5f272} + +\item +\hypertarget{classpeoParaPopEval_80e7e34bb1bb2d12f1f2eed3feac6ecf}{ +std::map$<$ EOT $\ast$, std::pair$<$ unsigned, unsigned $>$ $>$ \hyperlink{classpeoParaPopEval_80e7e34bb1bb2d12f1f2eed3feac6ecf}{progression}} +\label{classpeoParaPopEval_80e7e34bb1bb2d12f1f2eed3feac6ecf} + +\item +\hypertarget{classpeoParaPopEval_87abb090c0de39f0ccc36af1f07cca0c}{ +unsigned \hyperlink{classpeoParaPopEval_87abb090c0de39f0ccc36af1f07cca0c}{num\_\-func}} +\label{classpeoParaPopEval_87abb090c0de39f0ccc36af1f07cca0c} + +\item +\hypertarget{classpeoParaPopEval_fb6941e0455515a908eb82342b995163}{ +EOT \hyperlink{classpeoParaPopEval_fb6941e0455515a908eb82342b995163}{sol}} +\label{classpeoParaPopEval_fb6941e0455515a908eb82342b995163} + +\item +\hypertarget{classpeoParaPopEval_60cafeab376262af675fdff43434c8d8}{ +EOT $\ast$ \hyperlink{classpeoParaPopEval_60cafeab376262af675fdff43434c8d8}{ad\_\-sol}} +\label{classpeoParaPopEval_60cafeab376262af675fdff43434c8d8} + +\item +\hypertarget{classpeoParaPopEval_b528ad9dd9006c3dd57f149a3843e57d}{ +unsigned \hyperlink{classpeoParaPopEval_b528ad9dd9006c3dd57f149a3843e57d}{total}} +\label{classpeoParaPopEval_b528ad9dd9006c3dd57f149a3843e57d} + +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class peo\-Para\-Pop\-Eval$<$ EOT $>$} + +The \hyperlink{classpeoParaPopEval}{peo\-Para\-Pop\-Eval} represents a wrapper for creating a functor capable of applying in parallel an EO-derived evaluation functor. + +The class offers the possibility of chosing between a single-function evaluation and an aggregate evaluation function, including several sub-evalution functions. + + + +Definition at line 54 of file peo\-Para\-Pop\-Eval.h. + +\subsection{Constructor \& Destructor Documentation} +\hypertarget{classpeoParaPopEval_bcb540510a7038520bec41a7af332daf}{ +\index{peoParaPopEval@{peo\-Para\-Pop\-Eval}!peoParaPopEval@{peoParaPopEval}} +\index{peoParaPopEval@{peoParaPopEval}!peoParaPopEval@{peo\-Para\-Pop\-Eval}} +\subsubsection[peoParaPopEval]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ \hyperlink{classpeoParaPopEval}{peo\-Para\-Pop\-Eval}$<$ EOT $>$::\hyperlink{classpeoParaPopEval}{peo\-Para\-Pop\-Eval} (\bf{eo\-Eval\-Func}$<$ EOT $>$ \& {\em \_\-\_\-eval\_\-func})}} +\label{classpeoParaPopEval_bcb540510a7038520bec41a7af332daf} + + +Constructor function - an EO-derived evaluation functor has to be specified; an internal reference is set towards the specified evaluation functor. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em eo\-Eval\-Func$<$}]EOT $>$\& \_\-\_\-eval\_\-func - EO-derived evaluation functor to be applied in parallel on each individual of a specified population \end{description} +\end{Desc} + + +Definition at line 130 of file peo\-Para\-Pop\-Eval.h. + +References peo\-Para\-Pop\-Eval$<$ EOT $>$::one\_\-func.\hypertarget{classpeoParaPopEval_1cc13a1ec366f95d219d682eccb455bc}{ +\index{peoParaPopEval@{peo\-Para\-Pop\-Eval}!peoParaPopEval@{peoParaPopEval}} +\index{peoParaPopEval@{peoParaPopEval}!peoParaPopEval@{peo\-Para\-Pop\-Eval}} +\subsubsection[peoParaPopEval]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ \hyperlink{classpeoParaPopEval}{peo\-Para\-Pop\-Eval}$<$ EOT $>$::\hyperlink{classpeoParaPopEval}{peo\-Para\-Pop\-Eval} (const std::vector$<$ \bf{eo\-Eval\-Func}$<$ EOT $>$ $\ast$ $>$ \& {\em \_\-\_\-funcs}, \hyperlink{classpeoAggEvalFunc}{peo\-Agg\-Eval\-Func}$<$ EOT $>$ \& {\em \_\-\_\-merge\_\-eval})}} +\label{classpeoParaPopEval_1cc13a1ec366f95d219d682eccb455bc} + + +Constructor function - a vector of EO-derived evaluation functors has to be specified as well as an aggregation function. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em const}]std :: vector$<$ \doxyref{eo\-Eval\-Func} $<$ EOT $>$$\ast$ $>$\& \_\-\_\-funcs - vector of EO-derived partial evaluation functors; \item[{\em peo\-Agg\-Eval\-Func$<$}]EOT $>$\& \_\-\_\-merge\_\-eval - aggregation functor for creating a fitness value out of the partial fitness values. \end{description} +\end{Desc} + + +Definition at line 139 of file peo\-Para\-Pop\-Eval.h. + +\subsection{Member Function Documentation} +\hypertarget{classpeoParaPopEval_aeaa4fca4f8650e453e308838b4a2cb5}{ +\index{peoParaPopEval@{peo\-Para\-Pop\-Eval}!operator()@{operator()}} +\index{operator()@{operator()}!peoParaPopEval@{peo\-Para\-Pop\-Eval}} +\subsubsection[operator()]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void \hyperlink{classpeoParaPopEval}{peo\-Para\-Pop\-Eval}$<$ EOT $>$::operator() (\bf{eo\-Pop}$<$ EOT $>$ \& {\em \_\-\_\-pop})\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}} +\label{classpeoParaPopEval_aeaa4fca4f8650e453e308838b4a2cb5} + + +Operator for applying the evaluation functor (direct or aggregate) for each individual of the specified population. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em eo\-Pop$<$}]EOT $>$\& \_\-\_\-pop - population to be evaluated by applying the evaluation functor specified in the constructor. \end{description} +\end{Desc} + + +Implements \hyperlink{classpeoPopEval_2f208067a5e39c3b26c1234050a41e8f}{peo\-Pop\-Eval$<$ EOT $>$}. + +Definition at line 150 of file peo\-Para\-Pop\-Eval.h. + +References peo\-Para\-Pop\-Eval$<$ EOT $>$::funcs, peo\-Para\-Pop\-Eval$<$ EOT $>$::progression, Service::request\-Resource\-Request(), Communicable::stop(), peo\-Para\-Pop\-Eval$<$ EOT $>$::tasks, and peo\-Para\-Pop\-Eval$<$ EOT $>$::total.\hypertarget{classpeoParaPopEval_fea632bd645ab11182782fd3c038d6d8}{ +\index{peoParaPopEval@{peo\-Para\-Pop\-Eval}!packData@{packData}} +\index{packData@{packData}!peoParaPopEval@{peo\-Para\-Pop\-Eval}} +\subsubsection[packData]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void \hyperlink{classpeoParaPopEval}{peo\-Para\-Pop\-Eval}$<$ EOT $>$::pack\-Data ()\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}} +\label{classpeoParaPopEval_fea632bd645ab11182782fd3c038d6d8} + + +Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. + +There is no need to explicitly call the function. + +Reimplemented from \hyperlink{classService_aea4b8f7f8fb88e83862ee4bfd9ab207}{Service}. + +Definition at line 171 of file peo\-Para\-Pop\-Eval.h. + +References peo\-Para\-Pop\-Eval$<$ EOT $>$::progression, and peo\-Para\-Pop\-Eval$<$ EOT $>$::tasks.\hypertarget{classpeoParaPopEval_410bf4c173e2f36df82251cb16ce1b05}{ +\index{peoParaPopEval@{peo\-Para\-Pop\-Eval}!unpackData@{unpackData}} +\index{unpackData@{unpackData}!peoParaPopEval@{peo\-Para\-Pop\-Eval}} +\subsubsection[unpackData]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void \hyperlink{classpeoParaPopEval}{peo\-Para\-Pop\-Eval}$<$ EOT $>$::unpack\-Data ()\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}} +\label{classpeoParaPopEval_410bf4c173e2f36df82251cb16ce1b05} + + +Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. + +There is no need to explicitly call the function. + +Reimplemented from \hyperlink{classService_3bd87b444710813d30fd754d4d0b4df3}{Service}. + +Definition at line 185 of file peo\-Para\-Pop\-Eval.h. + +References peo\-Para\-Pop\-Eval$<$ EOT $>$::ad\_\-sol, peo\-Para\-Pop\-Eval$<$ EOT $>$::num\_\-func, and peo\-Para\-Pop\-Eval$<$ EOT $>$::sol.\hypertarget{classpeoParaPopEval_24bb4ae84b0b9f64e7170e3d2b0e1223}{ +\index{peoParaPopEval@{peo\-Para\-Pop\-Eval}!packResult@{packResult}} +\index{packResult@{packResult}!peoParaPopEval@{peo\-Para\-Pop\-Eval}} +\subsubsection[packResult]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void \hyperlink{classpeoParaPopEval}{peo\-Para\-Pop\-Eval}$<$ EOT $>$::pack\-Result ()\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}} +\label{classpeoParaPopEval_24bb4ae84b0b9f64e7170e3d2b0e1223} + + +Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. + +There is no need to explicitly call the function. + +Reimplemented from \hyperlink{classService_e5e4f90b2315e15c2a2913bd370f4cf5}{Service}. + +Definition at line 202 of file peo\-Para\-Pop\-Eval.h. + +References peo\-Para\-Pop\-Eval$<$ EOT $>$::ad\_\-sol, and peo\-Para\-Pop\-Eval$<$ EOT $>$::sol.\hypertarget{classpeoParaPopEval_fd7f0afe9cba30be39269d16097e190e}{ +\index{peoParaPopEval@{peo\-Para\-Pop\-Eval}!unpackResult@{unpackResult}} +\index{unpackResult@{unpackResult}!peoParaPopEval@{peo\-Para\-Pop\-Eval}} +\subsubsection[unpackResult]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void \hyperlink{classpeoParaPopEval}{peo\-Para\-Pop\-Eval}$<$ EOT $>$::unpack\-Result ()\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}} +\label{classpeoParaPopEval_fd7f0afe9cba30be39269d16097e190e} + + +Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. + +There is no need to explicitly call the function. + +Reimplemented from \hyperlink{classService_45c06344edbfa482b91f68e2035a6099}{Service}. + +Definition at line 211 of file peo\-Para\-Pop\-Eval.h. + +References peo\-Para\-Pop\-Eval$<$ EOT $>$::ad\_\-sol, Service::get\-Owner(), peo\-Para\-Pop\-Eval$<$ EOT $>$::merge\_\-eval, peo\-Para\-Pop\-Eval$<$ EOT $>$::progression, Communicable::resume(), Thread::set\-Active(), and peo\-Para\-Pop\-Eval$<$ EOT $>$::total.\hypertarget{classpeoParaPopEval_1f78c3cec2940af08a059cc1aa96a9c8}{ +\index{peoParaPopEval@{peo\-Para\-Pop\-Eval}!notifySendingData@{notifySendingData}} +\index{notifySendingData@{notifySendingData}!peoParaPopEval@{peo\-Para\-Pop\-Eval}} +\subsubsection[notifySendingData]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void \hyperlink{classpeoParaPopEval}{peo\-Para\-Pop\-Eval}$<$ EOT $>$::notify\-Sending\-Data ()\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}} +\label{classpeoParaPopEval_1f78c3cec2940af08a059cc1aa96a9c8} + + +Auxiliary function for notifications between the process requesting an evaluation operation and the processes that performs the actual evaluation phase. + +There is no need to explicitly call the function. + +Reimplemented from \hyperlink{classService_81ad4d6ebb50045b8977e2ab74826f30}{Service}. + +Definition at line 242 of file peo\-Para\-Pop\-Eval.h.\hypertarget{classpeoParaPopEval_b77031fc4807921ffaf7cf6b669a7665}{ +\index{peoParaPopEval@{peo\-Para\-Pop\-Eval}!notifySendingAllResourceRequests@{notifySendingAllResourceRequests}} +\index{notifySendingAllResourceRequests@{notifySendingAllResourceRequests}!peoParaPopEval@{peo\-Para\-Pop\-Eval}} +\subsubsection[notifySendingAllResourceRequests]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void \hyperlink{classpeoParaPopEval}{peo\-Para\-Pop\-Eval}$<$ EOT $>$::notify\-Sending\-All\-Resource\-Requests ()\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}} +\label{classpeoParaPopEval_b77031fc4807921ffaf7cf6b669a7665} + + +Auxiliary function for notifications between the process requesting an evaluation operation and the processes that performs the actual evaluation phase. + +There is no need to explicitly call the function. + +Reimplemented from \hyperlink{classService_f94cc8a5c2665d4574041737e61e9ffc}{Service}. + +Definition at line 247 of file peo\-Para\-Pop\-Eval.h. + +References Service::get\-Owner(), and Thread::set\-Passive(). + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +peo\-Para\-Pop\-Eval.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoParaSGATransform.eps b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoParaSGATransform.eps new file mode 100644 index 000000000..7b2968db4 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoParaSGATransform.eps @@ -0,0 +1,227 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 250 +%%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 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 5 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 +(peoParaSGATransform< EOT >) cw +(peoTransform< EOT >) cw +(Service) cw +(eoTransform< EOT >) cw +(Communicable) cw +(eoUF< A1, R >) cw +(eoFunctorBase) 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 ----- + + (peoParaSGATransform< EOT >) 0.5 0 box + (peoTransform< EOT >) 0.5 1 box + (Service) 0 2 box + (eoTransform< EOT >) 1 2 box + (Communicable) 0 3 box + (eoUF< A1, R >) 1 3 box + (eoFunctorBase) 1 4 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +1 0.5 1 in +solid +0 0.5 1 out +solid +0 1 2 conn +solid +1 0 2 in +solid +0 0 2 out +solid +1 1 2 in +solid +0 1 2 out +solid +1 0 3 in +solid +1 1 3 in +solid +0 1 3 out +solid +1 1 4 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoParaSGATransform.pdf b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoParaSGATransform.pdf new file mode 100644 index 000000000..644de362e --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoParaSGATransform.pdf @@ -0,0 +1,75 @@ +%PDF-1.3 +%쏢 +5 0 obj +<> +stream +xSn0+xlbC.KAHrlr²i~iJ1R p<3Z>KZ3F\>|:%$ r\V'Yg-ujć_۲].v;ms%oVESVAh!(_Yh;A QK$"m- ($II2x;w + !nlVh}WS6:3 de4/jc{vV`3XXXwWZ>7h4DV^vfyx#?xw"LzeR`喙`<XTw` +A+[8 5bE|*R+f0c6d܆ ~<=8 +ݤMV{3aXN:9T%2T/tendstream +endobj +6 0 obj +523 +endobj +4 0 obj +<> +/Contents 5 0 R +>> +endobj +3 0 obj +<< /Type /Pages /Kids [ +4 0 R +] /Count 1 +>> +endobj +1 0 obj +<> +endobj +7 0 obj +<>endobj +9 0 obj +<> +endobj +10 0 obj +<> +endobj +8 0 obj +<> +endobj +2 0 obj +<>endobj +xref +0 11 +0000000000 65535 f +0000000836 00000 n +0000001050 00000 n +0000000777 00000 n +0000000627 00000 n +0000000015 00000 n +0000000608 00000 n +0000000884 00000 n +0000000984 00000 n +0000000925 00000 n +0000000954 00000 n +trailer +<< /Size 11 /Root 1 0 R /Info 2 0 R +/ID [(wVP$j)(wVP$j)] +>> +startxref +1207 +%%EOF diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoParaSGATransform.tex b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoParaSGATransform.tex new file mode 100644 index 000000000..c86bf9422 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoParaSGATransform.tex @@ -0,0 +1,120 @@ +\hypertarget{classpeoParaSGATransform}{ +\section{peo\-Para\-SGATransform$<$ EOT $>$ Class Template Reference} +\label{classpeoParaSGATransform}\index{peoParaSGATransform@{peoParaSGATransform}} +} +Inheritance diagram for peo\-Para\-SGATransform$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=5cm]{classpeoParaSGATransform} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classpeoParaSGATransform_2052bca82fbbfe5455bf6f69246d4dbf}{ +\hyperlink{classpeoParaSGATransform_2052bca82fbbfe5455bf6f69246d4dbf}{peo\-Para\-SGATransform} (\bf{eo\-Quad\-Op}$<$ EOT $>$ \&\_\-\_\-cross, double \_\-\_\-cross\_\-rate, \bf{eo\-Mon\-Op}$<$ EOT $>$ \&\_\-\_\-mut, double \_\-\_\-mut\_\-rate)} +\label{classpeoParaSGATransform_2052bca82fbbfe5455bf6f69246d4dbf} + +\item +\hypertarget{classpeoParaSGATransform_669de7f7c6316fa745a15b909efb6527}{ +void \hyperlink{classpeoParaSGATransform_669de7f7c6316fa745a15b909efb6527}{operator()} (\bf{eo\-Pop}$<$ EOT $>$ \&\_\-\_\-pop)} +\label{classpeoParaSGATransform_669de7f7c6316fa745a15b909efb6527} + +\item +\hypertarget{classpeoParaSGATransform_fd278bcde58d29c9a343d5cbead81a1e}{ +void \hyperlink{classpeoParaSGATransform_fd278bcde58d29c9a343d5cbead81a1e}{pack\-Data} ()} +\label{classpeoParaSGATransform_fd278bcde58d29c9a343d5cbead81a1e} + +\item +\hypertarget{classpeoParaSGATransform_a43a487a6e81791c8bbf6ce30f4336ab}{ +void \hyperlink{classpeoParaSGATransform_a43a487a6e81791c8bbf6ce30f4336ab}{unpack\-Data} ()} +\label{classpeoParaSGATransform_a43a487a6e81791c8bbf6ce30f4336ab} + +\item +\hypertarget{classpeoParaSGATransform_c9de2100fb897177a401c634002f6dd9}{ +void \hyperlink{classpeoParaSGATransform_c9de2100fb897177a401c634002f6dd9}{execute} ()} +\label{classpeoParaSGATransform_c9de2100fb897177a401c634002f6dd9} + +\item +\hypertarget{classpeoParaSGATransform_ba08e224ceaa4149e8e1a88694a2ccf2}{ +void \hyperlink{classpeoParaSGATransform_ba08e224ceaa4149e8e1a88694a2ccf2}{pack\-Result} ()} +\label{classpeoParaSGATransform_ba08e224ceaa4149e8e1a88694a2ccf2} + +\item +\hypertarget{classpeoParaSGATransform_257663dcdc6cc95b6183d472ffba1b2f}{ +void \hyperlink{classpeoParaSGATransform_257663dcdc6cc95b6183d472ffba1b2f}{unpack\-Result} ()} +\label{classpeoParaSGATransform_257663dcdc6cc95b6183d472ffba1b2f} + +\item +\hypertarget{classpeoParaSGATransform_4e19dfc22b6f69fa8b93537226551866}{ +void \hyperlink{classpeoParaSGATransform_4e19dfc22b6f69fa8b93537226551866}{notify\-Sending\-Data} ()} +\label{classpeoParaSGATransform_4e19dfc22b6f69fa8b93537226551866} + +\item +\hypertarget{classpeoParaSGATransform_8a0316e33897c395a81787f59ea7a1c8}{ +void \hyperlink{classpeoParaSGATransform_8a0316e33897c395a81787f59ea7a1c8}{notify\-Sending\-All\-Resource\-Requests} ()} +\label{classpeoParaSGATransform_8a0316e33897c395a81787f59ea7a1c8} + +\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +\hypertarget{classpeoParaSGATransform_c6f97deabe7502c84f5b6c479013f6dc}{ +\bf{eo\-Quad\-Op}$<$ EOT $>$ \& \hyperlink{classpeoParaSGATransform_c6f97deabe7502c84f5b6c479013f6dc}{cross}} +\label{classpeoParaSGATransform_c6f97deabe7502c84f5b6c479013f6dc} + +\item +\hypertarget{classpeoParaSGATransform_dfcf216e2df05016db4d57a5ffb0b0e2}{ +double \hyperlink{classpeoParaSGATransform_dfcf216e2df05016db4d57a5ffb0b0e2}{cross\_\-rate}} +\label{classpeoParaSGATransform_dfcf216e2df05016db4d57a5ffb0b0e2} + +\item +\hypertarget{classpeoParaSGATransform_34ff5f9d285ca4879cf8865fb425a311}{ +\bf{eo\-Mon\-Op}$<$ EOT $>$ \& \hyperlink{classpeoParaSGATransform_34ff5f9d285ca4879cf8865fb425a311}{mut}} +\label{classpeoParaSGATransform_34ff5f9d285ca4879cf8865fb425a311} + +\item +\hypertarget{classpeoParaSGATransform_b9d3a2094737d0bbd034aac942cc53e3}{ +double \hyperlink{classpeoParaSGATransform_b9d3a2094737d0bbd034aac942cc53e3}{mut\_\-rate}} +\label{classpeoParaSGATransform_b9d3a2094737d0bbd034aac942cc53e3} + +\item +\hypertarget{classpeoParaSGATransform_03972feadc86626e58fe60bd4061b57e}{ +unsigned \hyperlink{classpeoParaSGATransform_03972feadc86626e58fe60bd4061b57e}{idx}} +\label{classpeoParaSGATransform_03972feadc86626e58fe60bd4061b57e} + +\item +\hypertarget{classpeoParaSGATransform_94e10a1285e128aba6e71517c941f961}{ +\bf{eo\-Pop}$<$ EOT $>$ $\ast$ \hyperlink{classpeoParaSGATransform_94e10a1285e128aba6e71517c941f961}{pop}} +\label{classpeoParaSGATransform_94e10a1285e128aba6e71517c941f961} + +\item +\hypertarget{classpeoParaSGATransform_9ef60190e2e3bd5961a93d1b52cb275d}{ +EOT \hyperlink{classpeoParaSGATransform_9ef60190e2e3bd5961a93d1b52cb275d}{father}} +\label{classpeoParaSGATransform_9ef60190e2e3bd5961a93d1b52cb275d} + +\item +\hypertarget{classpeoParaSGATransform_e991ad2af6d116afd855de2db46e1d27}{ +EOT \hyperlink{classpeoParaSGATransform_e991ad2af6d116afd855de2db46e1d27}{mother}} +\label{classpeoParaSGATransform_e991ad2af6d116afd855de2db46e1d27} + +\item +\hypertarget{classpeoParaSGATransform_589ea7cd72d522ae51a07de4d8ffbf11}{ +unsigned \hyperlink{classpeoParaSGATransform_589ea7cd72d522ae51a07de4d8ffbf11}{num\_\-term}} +\label{classpeoParaSGATransform_589ea7cd72d522ae51a07de4d8ffbf11} + +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class peo\-Para\-SGATransform$<$ EOT $>$} + + + + + +Definition at line 49 of file peo\-Para\-SGATransform.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +peo\-Para\-SGATransform.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoParallelAlgorithmWrapper.eps b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoParallelAlgorithmWrapper.eps new file mode 100644 index 000000000..d3b1407fa --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoParallelAlgorithmWrapper.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 161.29 +%%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 3.1 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 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 +(peoParallelAlgorithmWrapper) cw +(Runner) cw +(Communicable) cw +(Thread) 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 ----- + + (peoParallelAlgorithmWrapper) 0.5 0 box + (Runner) 0.5 1 box + (Communicable) 0 2 box + (Thread) 1 2 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +1 0.5 1 in +solid +0 0.5 1 out +solid +0 1 2 conn +solid +1 0 2 in +solid +1 1 2 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoParallelAlgorithmWrapper.pdf b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoParallelAlgorithmWrapper.pdf new file mode 100644 index 000000000..897fdc562 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoParallelAlgorithmWrapper.pdf @@ -0,0 +1,74 @@ +%PDF-1.3 +%쏢 +5 0 obj +<> +stream +xSN@ WL}!DJ@Iy4lT ͎gg&v Yn*'j#jυ: s& Ybd!ն<MQUeuW-6kY6v[6zDE[V8 ,lQ"蘠)X3K4ݯש`']$OQa7}~oU9Z Y j +il}c}7sNF6Ro5TKP[ȿCO:kFg;)Gk:xP J O1abE"ek!Jb8Q?Mȑendstream +endobj +6 0 obj +365 +endobj +4 0 obj +<> +/Contents 5 0 R +>> +endobj +3 0 obj +<< /Type /Pages /Kids [ +4 0 R +] /Count 1 +>> +endobj +1 0 obj +<> +endobj +7 0 obj +<>endobj +9 0 obj +<> +endobj +10 0 obj +<> +endobj +8 0 obj +<> +endobj +2 0 obj +<>endobj +xref +0 11 +0000000000 65535 f +0000000681 00000 n +0000000895 00000 n +0000000622 00000 n +0000000469 00000 n +0000000015 00000 n +0000000450 00000 n +0000000729 00000 n +0000000829 00000 n +0000000770 00000 n +0000000799 00000 n +trailer +<< /Size 11 /Root 1 0 R /Info 2 0 R +/ID [(ijy> +startxref +1052 +%%EOF diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoParallelAlgorithmWrapper.tex b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoParallelAlgorithmWrapper.tex new file mode 100644 index 000000000..ff8968483 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoParallelAlgorithmWrapper.tex @@ -0,0 +1,62 @@ +\hypertarget{classpeoParallelAlgorithmWrapper}{ +\section{peo\-Parallel\-Algorithm\-Wrapper Class Reference} +\label{classpeoParallelAlgorithmWrapper}\index{peoParallelAlgorithmWrapper@{peoParallelAlgorithmWrapper}} +} +Inheritance diagram for peo\-Parallel\-Algorithm\-Wrapper::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{classpeoParallelAlgorithmWrapper} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classpeoParallelAlgorithmWrapper_e1e1de8b007934080876df1c65c4d8b0}{ +template$<$typename Algorithm\-Type$>$ \hyperlink{classpeoParallelAlgorithmWrapper_e1e1de8b007934080876df1c65c4d8b0}{peo\-Parallel\-Algorithm\-Wrapper} (Algorithm\-Type \&external\-Algorithm)} +\label{classpeoParallelAlgorithmWrapper_e1e1de8b007934080876df1c65c4d8b0} + +\item +\hypertarget{classpeoParallelAlgorithmWrapper_1ebfe70e6826002f6280aba01e141ad5}{ +template$<$typename Algorithm\-Type, typename Algorithm\-Data\-Type$>$ \hyperlink{classpeoParallelAlgorithmWrapper_1ebfe70e6826002f6280aba01e141ad5}{peo\-Parallel\-Algorithm\-Wrapper} (Algorithm\-Type \&external\-Algorithm, Algorithm\-Data\-Type \&external\-Data)} +\label{classpeoParallelAlgorithmWrapper_1ebfe70e6826002f6280aba01e141ad5} + +\item +\hypertarget{classpeoParallelAlgorithmWrapper_0e64f517afe790db467750a6980e1666}{ +\hyperlink{classpeoParallelAlgorithmWrapper_0e64f517afe790db467750a6980e1666}{$\sim$peo\-Parallel\-Algorithm\-Wrapper} ()} +\label{classpeoParallelAlgorithmWrapper_0e64f517afe790db467750a6980e1666} + +\item +\hypertarget{classpeoParallelAlgorithmWrapper_4b10b46b4ea2e3f66c660c15f3c98e6c}{ +void \hyperlink{classpeoParallelAlgorithmWrapper_4b10b46b4ea2e3f66c660c15f3c98e6c}{run} ()} +\label{classpeoParallelAlgorithmWrapper_4b10b46b4ea2e3f66c660c15f3c98e6c} + +\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +\hypertarget{classpeoParallelAlgorithmWrapper_99f10723f15c63c4822dd6431b9d6d7d}{ +\hyperlink{structpeoParallelAlgorithmWrapper_1_1AbstractAlgorithm}{Abstract\-Algorithm} $\ast$ \hyperlink{classpeoParallelAlgorithmWrapper_99f10723f15c63c4822dd6431b9d6d7d}{algorithm}} +\label{classpeoParallelAlgorithmWrapper_99f10723f15c63c4822dd6431b9d6d7d} + +\end{CompactItemize} +\subsection*{Classes} +\begin{CompactItemize} +\item +struct \hyperlink{structpeoParallelAlgorithmWrapper_1_1AbstractAlgorithm}{Abstract\-Algorithm} +\item +struct \hyperlink{structpeoParallelAlgorithmWrapper_1_1Algorithm}{Algorithm} +\item +struct \hyperlink{structpeoParallelAlgorithmWrapper_1_1Algorithm_3_01AlgorithmType_00_01void_01_4}{Algorithm$<$ Algorithm\-Type, void $>$} +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 47 of file peo\-Parallel\-Algorithm\-Wrapper.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +peo\-Parallel\-Algorithm\-Wrapper.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoPopEval.eps b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoPopEval.eps new file mode 100644 index 000000000..b486aceee --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoPopEval.eps @@ -0,0 +1,215 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 243.902 +%%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.05 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 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 +(peoPopEval< EOT >) cw +(Service) cw +(Communicable) cw +(peoParaPopEval< EOT >) cw +(peoSeqPopEval< EOT >) 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 ----- + + (peoPopEval< EOT >) 0.5 1 box + (Service) 0.5 2 box + (Communicable) 0.5 3 box + (peoParaPopEval< EOT >) 0 0 box + (peoSeqPopEval< EOT >) 1 0 box + +% ----- relations ----- + +solid +0 0.5 1 out +solid +1 0.5 2 in +solid +0 0.5 2 out +solid +1 0.5 3 in +solid +1 0.5 0.25 out +solid +0 1 1 conn +solid +0 0 0.75 in +solid +0 1 0.75 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoPopEval.pdf b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoPopEval.pdf new file mode 100644 index 000000000..4e901adc8 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoPopEval.pdf differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoPopEval.tex b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoPopEval.tex new file mode 100644 index 000000000..a43d26bb8 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoPopEval.tex @@ -0,0 +1,39 @@ +\hypertarget{classpeoPopEval}{ +\section{peo\-Pop\-Eval$<$ EOT $>$ Class Template Reference} +\label{classpeoPopEval}\index{peoPopEval@{peoPopEval}} +} +The {\bf \hyperlink{classpeoPopEval}{peo\-Pop\-Eval}} class provides the interface for constructing Paradis\-EO specific evaluation functors. + + +{\tt \#include $<$peo\-Pop\-Eval.h$>$} + +Inheritance diagram for peo\-Pop\-Eval$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classpeoPopEval} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classpeoPopEval_2f208067a5e39c3b26c1234050a41e8f}{ +virtual void \hyperlink{classpeoPopEval_2f208067a5e39c3b26c1234050a41e8f}{operator()} (\bf{eo\-Pop}$<$ EOT $>$ \&\_\-\_\-pop)=0} +\label{classpeoPopEval_2f208067a5e39c3b26c1234050a41e8f} + +\begin{CompactList}\small\item\em Interface function providing the signature for constructing an evaluation functor. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class peo\-Pop\-Eval$<$ EOT $>$} + +The {\bf \hyperlink{classpeoPopEval}{peo\-Pop\-Eval}} class provides the interface for constructing Paradis\-EO specific evaluation functors. + +The derived classes may be used as wrappers for {\bf \doxyref{EO}}-derived evaluation functors. In order to have an example, please refer to the implementation of the {\bf \hyperlink{classpeoSeqPopEval}{peo\-Seq\-Pop\-Eval}} and {\bf \hyperlink{classpeoParaPopEval}{peo\-Para\-Pop\-Eval}} classes. + + + +Definition at line 47 of file peo\-Pop\-Eval.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +peo\-Pop\-Eval.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoSeqPopEval.eps b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoSeqPopEval.eps new file mode 100644 index 000000000..e8cf5fd7e --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoSeqPopEval.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 506.329 +%%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 0.9875 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 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 +(peoSeqPopEval< EOT >) cw +(peoPopEval< EOT >) cw +(Service) cw +(Communicable) 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 ----- + + (peoSeqPopEval< EOT >) 0 0 box + (peoPopEval< EOT >) 0 1 box + (Service) 0 2 box + (Communicable) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoSeqPopEval.pdf b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoSeqPopEval.pdf new file mode 100644 index 000000000..259beaa2f Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoSeqPopEval.pdf differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoSeqPopEval.tex b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoSeqPopEval.tex new file mode 100644 index 000000000..1fb6c32f0 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoSeqPopEval.tex @@ -0,0 +1,88 @@ +\hypertarget{classpeoSeqPopEval}{ +\section{peo\-Seq\-Pop\-Eval$<$ EOT $>$ Class Template Reference} +\label{classpeoSeqPopEval}\index{peoSeqPopEval@{peoSeqPopEval}} +} +The \hyperlink{classpeoSeqPopEval}{peo\-Seq\-Pop\-Eval} class acts only as a Paradis\-EO specific sequential evaluation functor - a wrapper for incorporating an {\bf eo\-Eval\-Func$<$ EOT $>$}-derived class as evaluation functor. + + +{\tt \#include $<$peo\-Seq\-Pop\-Eval.h$>$} + +Inheritance diagram for peo\-Seq\-Pop\-Eval$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classpeoSeqPopEval} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hyperlink{classpeoSeqPopEval_a41f91ab4b2aeb325ff75feb66d4e003}{peo\-Seq\-Pop\-Eval} (\bf{eo\-Eval\-Func}$<$ EOT $>$ \&\_\-\_\-eval) +\begin{CompactList}\small\item\em Constructor function - it only sets an internal reference to point to the specified evaluation object. \item\end{CompactList}\item +void \hyperlink{classpeoSeqPopEval_b2c88b9a3ad9091949acf741844eb02f}{operator()} (\bf{eo\-Pop}$<$ EOT $>$ \&\_\-\_\-pop) +\begin{CompactList}\small\item\em Operator for evaluating all the individuals of a given population - in a sequential iterative manner. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +\hypertarget{classpeoSeqPopEval_5465f31386c6b96bc8f7fb9393a28a2f}{ +\bf{eo\-Eval\-Func}$<$ EOT $>$ \& \hyperlink{classpeoSeqPopEval_5465f31386c6b96bc8f7fb9393a28a2f}{eval}} +\label{classpeoSeqPopEval_5465f31386c6b96bc8f7fb9393a28a2f} + +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class peo\-Seq\-Pop\-Eval$<$ EOT $>$} + +The \hyperlink{classpeoSeqPopEval}{peo\-Seq\-Pop\-Eval} class acts only as a Paradis\-EO specific sequential evaluation functor - a wrapper for incorporating an {\bf eo\-Eval\-Func$<$ EOT $>$}-derived class as evaluation functor. + +The specified \doxyref{EO} evaluation object is applyied in an iterative manner to each individual of a specified population. + + + +Definition at line 49 of file peo\-Seq\-Pop\-Eval.h. + +\subsection{Constructor \& Destructor Documentation} +\hypertarget{classpeoSeqPopEval_a41f91ab4b2aeb325ff75feb66d4e003}{ +\index{peoSeqPopEval@{peo\-Seq\-Pop\-Eval}!peoSeqPopEval@{peoSeqPopEval}} +\index{peoSeqPopEval@{peoSeqPopEval}!peoSeqPopEval@{peo\-Seq\-Pop\-Eval}} +\subsubsection[peoSeqPopEval]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ \hyperlink{classpeoSeqPopEval}{peo\-Seq\-Pop\-Eval}$<$ EOT $>$::\hyperlink{classpeoSeqPopEval}{peo\-Seq\-Pop\-Eval} (\bf{eo\-Eval\-Func}$<$ EOT $>$ \& {\em \_\-\_\-eval})}} +\label{classpeoSeqPopEval_a41f91ab4b2aeb325ff75feb66d4e003} + + +Constructor function - it only sets an internal reference to point to the specified evaluation object. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em eo\-Eval\-Func$<$}]EOT $>$\& \_\-\_\-eval - evaluation object to be applied for each individual of a specified population \end{description} +\end{Desc} + + +Definition at line 69 of file peo\-Seq\-Pop\-Eval.h. + +\subsection{Member Function Documentation} +\hypertarget{classpeoSeqPopEval_b2c88b9a3ad9091949acf741844eb02f}{ +\index{peoSeqPopEval@{peo\-Seq\-Pop\-Eval}!operator()@{operator()}} +\index{operator()@{operator()}!peoSeqPopEval@{peo\-Seq\-Pop\-Eval}} +\subsubsection[operator()]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void \hyperlink{classpeoSeqPopEval}{peo\-Seq\-Pop\-Eval}$<$ EOT $>$::operator() (\bf{eo\-Pop}$<$ EOT $>$ \& {\em \_\-\_\-pop})\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}} +\label{classpeoSeqPopEval_b2c88b9a3ad9091949acf741844eb02f} + + +Operator for evaluating all the individuals of a given population - in a sequential iterative manner. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em eo\-Pop$<$}]EOT $>$\& \_\-\_\-pop - population to be evaluated. \end{description} +\end{Desc} + + +Implements \hyperlink{classpeoPopEval_2f208067a5e39c3b26c1234050a41e8f}{peo\-Pop\-Eval$<$ EOT $>$}. + +Definition at line 74 of file peo\-Seq\-Pop\-Eval.h. + +References peo\-Seq\-Pop\-Eval$<$ EOT $>$::eval. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +peo\-Seq\-Pop\-Eval.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoSeqTransform.eps b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoSeqTransform.eps new file mode 100644 index 000000000..200358ca0 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoSeqTransform.eps @@ -0,0 +1,227 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 297.619 +%%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 1.68 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 5 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 +(peoSeqTransform< EOT >) cw +(peoTransform< EOT >) cw +(Service) cw +(eoTransform< EOT >) cw +(Communicable) cw +(eoUF< A1, R >) cw +(eoFunctorBase) 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 ----- + + (peoSeqTransform< EOT >) 0.5 0 box + (peoTransform< EOT >) 0.5 1 box + (Service) 0 2 box + (eoTransform< EOT >) 1 2 box + (Communicable) 0 3 box + (eoUF< A1, R >) 1 3 box + (eoFunctorBase) 1 4 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +1 0.5 1 in +solid +0 0.5 1 out +solid +0 1 2 conn +solid +1 0 2 in +solid +0 0 2 out +solid +1 1 2 in +solid +0 1 2 out +solid +1 0 3 in +solid +1 1 3 in +solid +0 1 3 out +solid +1 1 4 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoSeqTransform.pdf b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoSeqTransform.pdf new file mode 100644 index 000000000..4b42bd7f9 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoSeqTransform.pdf differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoSeqTransform.tex b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoSeqTransform.tex new file mode 100644 index 000000000..723940aa1 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoSeqTransform.tex @@ -0,0 +1,111 @@ +\hypertarget{classpeoSeqTransform}{ +\section{peo\-Seq\-Transform$<$ EOT $>$ Class Template Reference} +\label{classpeoSeqTransform}\index{peoSeqTransform@{peoSeqTransform}} +} +The \hyperlink{classpeoSeqTransform}{peo\-Seq\-Transform} represent a wrapper for offering the possibility of using \doxyref{EO} derived transform operators along with the Paradis\-EO evolutionary algorithms. + + +{\tt \#include $<$peo\-Seq\-Transform.h$>$} + +Inheritance diagram for peo\-Seq\-Transform$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=5cm]{classpeoSeqTransform} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hyperlink{classpeoSeqTransform_3b8e4ed19d9458938eb669d83a53c626}{peo\-Seq\-Transform} (\bf{eo\-Transform}$<$ EOT $>$ \&\_\-\_\-trans) +\begin{CompactList}\small\item\em Constructor function - sets an internal reference towards the specified EO-derived transform object. \item\end{CompactList}\item +void \hyperlink{classpeoSeqTransform_1ba63536abb6c4e1c369e0b7e066872e}{operator()} (\bf{eo\-Pop}$<$ EOT $>$ \&\_\-\_\-pop) +\begin{CompactList}\small\item\em Operator for applying the specified transform operators on each individual of the given population. \item\end{CompactList}\item +\hypertarget{classpeoSeqTransform_c4bf2724e9f6055f12bd169fad893be3}{ +virtual void \hyperlink{classpeoSeqTransform_c4bf2724e9f6055f12bd169fad893be3}{pack\-Data} ()} +\label{classpeoSeqTransform_c4bf2724e9f6055f12bd169fad893be3} + +\begin{CompactList}\small\item\em Interface function for providing a link with the parallel architecture of the Paradis\-EO framework. \item\end{CompactList}\item +\hypertarget{classpeoSeqTransform_24e6cf15ef230ed538031b522ddd4ae6}{ +virtual void \hyperlink{classpeoSeqTransform_24e6cf15ef230ed538031b522ddd4ae6}{unpack\-Data} ()} +\label{classpeoSeqTransform_24e6cf15ef230ed538031b522ddd4ae6} + +\begin{CompactList}\small\item\em Interface function for providing a link with the parallel architecture of the Paradis\-EO framework. \item\end{CompactList}\item +\hypertarget{classpeoSeqTransform_0294a2f9d6b44ec74d22eaceccdffc2b}{ +virtual void \hyperlink{classpeoSeqTransform_0294a2f9d6b44ec74d22eaceccdffc2b}{execute} ()} +\label{classpeoSeqTransform_0294a2f9d6b44ec74d22eaceccdffc2b} + +\begin{CompactList}\small\item\em Interface function for providing a link with the parallel architecture of the Paradis\-EO framework. \item\end{CompactList}\item +\hypertarget{classpeoSeqTransform_4861c61f9e46d83964ea8a156a9a3ee0}{ +virtual void \hyperlink{classpeoSeqTransform_4861c61f9e46d83964ea8a156a9a3ee0}{pack\-Result} ()} +\label{classpeoSeqTransform_4861c61f9e46d83964ea8a156a9a3ee0} + +\begin{CompactList}\small\item\em Interface function for providing a link with the parallel architecture of the Paradis\-EO framework. \item\end{CompactList}\item +\hypertarget{classpeoSeqTransform_5dd029fc011eb2a810ca1140025129b1}{ +virtual void \hyperlink{classpeoSeqTransform_5dd029fc011eb2a810ca1140025129b1}{unpack\-Result} ()} +\label{classpeoSeqTransform_5dd029fc011eb2a810ca1140025129b1} + +\begin{CompactList}\small\item\em Interface function for providing a link with the parallel architecture of the Paradis\-EO framework. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +\hypertarget{classpeoSeqTransform_ad3e16c59dd6c46dfc1baf7b88af30cf}{ +\bf{eo\-Transform}$<$ EOT $>$ \& \hyperlink{classpeoSeqTransform_ad3e16c59dd6c46dfc1baf7b88af30cf}{trans}} +\label{classpeoSeqTransform_ad3e16c59dd6c46dfc1baf7b88af30cf} + +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class peo\-Seq\-Transform$<$ EOT $>$} + +The \hyperlink{classpeoSeqTransform}{peo\-Seq\-Transform} represent a wrapper for offering the possibility of using \doxyref{EO} derived transform operators along with the Paradis\-EO evolutionary algorithms. + +A minimal set of interface functions is also provided for creating the link with the parallel architecture of the Paradis\-EO framework. + + + +Definition at line 48 of file peo\-Seq\-Transform.h. + +\subsection{Constructor \& Destructor Documentation} +\hypertarget{classpeoSeqTransform_3b8e4ed19d9458938eb669d83a53c626}{ +\index{peoSeqTransform@{peo\-Seq\-Transform}!peoSeqTransform@{peoSeqTransform}} +\index{peoSeqTransform@{peoSeqTransform}!peoSeqTransform@{peo\-Seq\-Transform}} +\subsubsection[peoSeqTransform]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ \hyperlink{classpeoSeqTransform}{peo\-Seq\-Transform}$<$ EOT $>$::\hyperlink{classpeoSeqTransform}{peo\-Seq\-Transform} (\bf{eo\-Transform}$<$ EOT $>$ \& {\em \_\-\_\-trans})}} +\label{classpeoSeqTransform_3b8e4ed19d9458938eb669d83a53c626} + + +Constructor function - sets an internal reference towards the specified EO-derived transform object. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em eo\-Transform$<$}]EOT $>$\& \_\-\_\-trans - EO-derived transform object including crossover and mutation operators. \end{description} +\end{Desc} + + +Definition at line 83 of file peo\-Seq\-Transform.h. + +\subsection{Member Function Documentation} +\hypertarget{classpeoSeqTransform_1ba63536abb6c4e1c369e0b7e066872e}{ +\index{peoSeqTransform@{peo\-Seq\-Transform}!operator()@{operator()}} +\index{operator()@{operator()}!peoSeqTransform@{peo\-Seq\-Transform}} +\subsubsection[operator()]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void \hyperlink{classpeoSeqTransform}{peo\-Seq\-Transform}$<$ EOT $>$::operator() (\bf{eo\-Pop}$<$ EOT $>$ \& {\em \_\-\_\-pop})}} +\label{classpeoSeqTransform_1ba63536abb6c4e1c369e0b7e066872e} + + +Operator for applying the specified transform operators on each individual of the given population. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em eo\-Pop$<$}]EOT $>$\& \_\-\_\-pop - population to be transformed by applying the crossover and mutation operators. \end{description} +\end{Desc} + + +Definition at line 88 of file peo\-Seq\-Transform.h. + +References peo\-Seq\-Transform$<$ EOT $>$::trans. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +peo\-Seq\-Transform.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoSyncIslandMig.eps b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoSyncIslandMig.eps new file mode 100644 index 000000000..6f0fb127a --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoSyncIslandMig.eps @@ -0,0 +1,221 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 231.214 +%%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.1625 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 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 +(peoSyncIslandMig< EOT >) cw +(Cooperative) cw +(eoUpdater) cw +(Communicable) cw +(eoF< void >) cw +(eoFunctorBase) 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 ----- + + (peoSyncIslandMig< EOT >) 0.5 0 box + (Cooperative) 0 1 box + (eoUpdater) 1 1 box + (Communicable) 0 2 box + (eoF< void >) 1 2 box + (eoFunctorBase) 1 3 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +0 1 1 conn +solid +1 0 1 in +solid +0 0 1 out +solid +1 1 1 in +solid +0 1 1 out +solid +1 0 2 in +solid +1 1 2 in +solid +0 1 2 out +solid +1 1 3 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoSyncIslandMig.pdf b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoSyncIslandMig.pdf new file mode 100644 index 000000000..7b727b208 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoSyncIslandMig.pdf differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoSyncIslandMig.tex b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoSyncIslandMig.tex new file mode 100644 index 000000000..9a94013a2 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoSyncIslandMig.tex @@ -0,0 +1,227 @@ +\hypertarget{classpeoSyncIslandMig}{ +\section{peo\-Sync\-Island\-Mig$<$ EOT $>$ Class Template Reference} +\label{classpeoSyncIslandMig}\index{peoSyncIslandMig@{peoSyncIslandMig}} +} +The \hyperlink{classpeoSyncIslandMig}{peo\-Sync\-Island\-Mig} class offers the elementary basis for implementating a synchronous island migration model - requires the specification of several basic parameters, i.e. + + +{\tt \#include $<$peo\-Sync\-Island\-Mig.h$>$} + +Inheritance diagram for peo\-Sync\-Island\-Mig$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classpeoSyncIslandMig} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hyperlink{classpeoSyncIslandMig_96b7b6de20b5e318a8b1cde76842305c}{peo\-Sync\-Island\-Mig} (unsigned \_\-\_\-frequency, \bf{eo\-Select}$<$ EOT $>$ \&\_\-\_\-select, \bf{eo\-Replacement}$<$ EOT $>$ \&\_\-\_\-replace, \hyperlink{classTopology}{Topology} \&\_\-\_\-topology, \bf{eo\-Pop}$<$ EOT $>$ \&\_\-\_\-source, \bf{eo\-Pop}$<$ EOT $>$ \&\_\-\_\-destination) +\begin{CompactList}\small\item\em Constructor for the \hyperlink{classpeoSyncIslandMig}{peo\-Sync\-Island\-Mig} class; the characteristics of the migration model are defined through the specified parameters - out of the box objects provided in \doxyref{EO}, etc., or custom, derived objects may be passed as parameters. \item\end{CompactList}\item +void \hyperlink{classpeoSyncIslandMig_178476fd276f78b73607b33d19522c36}{operator()} () +\begin{CompactList}\small\item\em \doxyref{Function} operator to be called as checkpoint for performing the migration step. \item\end{CompactList}\item +\hypertarget{classpeoSyncIslandMig_e334188141eeba9f7b78bc6716f819ad}{ +void \hyperlink{classpeoSyncIslandMig_e334188141eeba9f7b78bc6716f819ad}{pack} ()} +\label{classpeoSyncIslandMig_e334188141eeba9f7b78bc6716f819ad} + +\begin{CompactList}\small\item\em Auxiliary function dealing with sending the emigrant individuals. There is no need to explicitly call the function. \item\end{CompactList}\item +\hypertarget{classpeoSyncIslandMig_85777bd9f709c5d4107799e8619948d1}{ +void \hyperlink{classpeoSyncIslandMig_85777bd9f709c5d4107799e8619948d1}{unpack} ()} +\label{classpeoSyncIslandMig_85777bd9f709c5d4107799e8619948d1} + +\begin{CompactList}\small\item\em Auxiliary function dealing with receiving immigrant individuals. There is no need to explicitly call the function. \item\end{CompactList}\item +\hypertarget{classpeoSyncIslandMig_8c427b3f91c19ff85f86930366b96008}{ +void \hyperlink{classpeoSyncIslandMig_8c427b3f91c19ff85f86930366b96008}{notify\-Sending} ()} +\label{classpeoSyncIslandMig_8c427b3f91c19ff85f86930366b96008} + +\begin{CompactList}\small\item\em Auxiliary function dealing with migration notifications. There is no need to explicitly call the function. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classpeoSyncIslandMig_4c8416e3acce1a6e4c3b0a442d94b063}{ +void \hyperlink{classpeoSyncIslandMig_4c8416e3acce1a6e4c3b0a442d94b063}{emigrate} ()} +\label{classpeoSyncIslandMig_4c8416e3acce1a6e4c3b0a442d94b063} + +\item +\hypertarget{classpeoSyncIslandMig_38dd72312a3d16808af1aa7beb9ed4a7}{ +void \hyperlink{classpeoSyncIslandMig_38dd72312a3d16808af1aa7beb9ed4a7}{immigrate} ()} +\label{classpeoSyncIslandMig_38dd72312a3d16808af1aa7beb9ed4a7} + +\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +\hypertarget{classpeoSyncIslandMig_2d8ae9104376f3e073e0b250d9b425a2}{ +\bf{eo\-Periodic\-Continue}$<$ EOT $>$ \hyperlink{classpeoSyncIslandMig_2d8ae9104376f3e073e0b250d9b425a2}{cont}} +\label{classpeoSyncIslandMig_2d8ae9104376f3e073e0b250d9b425a2} + +\item +\hypertarget{classpeoSyncIslandMig_5e9c9f5f65d6418ad46e647ee1804a3d}{ +\bf{eo\-Select}$<$ EOT $>$ \& \hyperlink{classpeoSyncIslandMig_5e9c9f5f65d6418ad46e647ee1804a3d}{select}} +\label{classpeoSyncIslandMig_5e9c9f5f65d6418ad46e647ee1804a3d} + +\item +\hypertarget{classpeoSyncIslandMig_cb6d2d909503a86415912900d6e1d891}{ +\bf{eo\-Replacement}$<$ EOT $>$ \& \hyperlink{classpeoSyncIslandMig_cb6d2d909503a86415912900d6e1d891}{replace}} +\label{classpeoSyncIslandMig_cb6d2d909503a86415912900d6e1d891} + +\item +\hypertarget{classpeoSyncIslandMig_ebfe6edb6be16d46bf6d71cb233fcace}{ +\hyperlink{classTopology}{Topology} \& \hyperlink{classpeoSyncIslandMig_ebfe6edb6be16d46bf6d71cb233fcace}{topology}} +\label{classpeoSyncIslandMig_ebfe6edb6be16d46bf6d71cb233fcace} + +\item +\hypertarget{classpeoSyncIslandMig_33fde1f09faf2a3f772d8b8f6a2615c6}{ +\bf{eo\-Pop}$<$ EOT $>$ \& \hyperlink{classpeoSyncIslandMig_33fde1f09faf2a3f772d8b8f6a2615c6}{source}} +\label{classpeoSyncIslandMig_33fde1f09faf2a3f772d8b8f6a2615c6} + +\item +\hypertarget{classpeoSyncIslandMig_a9bf4612c7c04da6cf69245c6617e6a6}{ +\bf{eo\-Pop}$<$ EOT $>$ \& \hyperlink{classpeoSyncIslandMig_a9bf4612c7c04da6cf69245c6617e6a6}{destination}} +\label{classpeoSyncIslandMig_a9bf4612c7c04da6cf69245c6617e6a6} + +\item +\hypertarget{classpeoSyncIslandMig_088c1623f32668dcd3683fceff9426c3}{ +std::queue$<$ \bf{eo\-Pop}$<$ EOT $>$ $>$ \hyperlink{classpeoSyncIslandMig_088c1623f32668dcd3683fceff9426c3}{imm}} +\label{classpeoSyncIslandMig_088c1623f32668dcd3683fceff9426c3} + +\item +\hypertarget{classpeoSyncIslandMig_11d6dd3e4a6db710433f501af0988322}{ +std::queue$<$ \bf{eo\-Pop}$<$ EOT $>$ $>$ \hyperlink{classpeoSyncIslandMig_11d6dd3e4a6db710433f501af0988322}{em}} +\label{classpeoSyncIslandMig_11d6dd3e4a6db710433f501af0988322} + +\item +\hypertarget{classpeoSyncIslandMig_2f7ca18d67ab7fb47a9851ab3179eb7d}{ +std::queue$<$ \hyperlink{classCooperative}{Cooperative} $\ast$ $>$ \hyperlink{classpeoSyncIslandMig_2f7ca18d67ab7fb47a9851ab3179eb7d}{coop\_\-em}} +\label{classpeoSyncIslandMig_2f7ca18d67ab7fb47a9851ab3179eb7d} + +\item +\hypertarget{classpeoSyncIslandMig_91e0e1ea59c2a6a66eb496bddd60a18f}{ +sem\_\-t \hyperlink{classpeoSyncIslandMig_91e0e1ea59c2a6a66eb496bddd60a18f}{sync}} +\label{classpeoSyncIslandMig_91e0e1ea59c2a6a66eb496bddd60a18f} + +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class peo\-Sync\-Island\-Mig$<$ EOT $>$} + +The \hyperlink{classpeoSyncIslandMig}{peo\-Sync\-Island\-Mig} class offers the elementary basis for implementating a synchronous island migration model - requires the specification of several basic parameters, i.e. + +frequency of the migrations, selection and replacement strategies, a topological model and the source and destination population for the migrating individuals. The main difference as opposed to the asynchronous migration model is the synchronization step performed after selecting and sending the emigrant individuals. + +The migration operator is called at the end of each generation of an evolutionary algorithms as a checkpoint object - the following code exposes the structure of a classic evolutionary algorithm: + +\begin{TabularC}{2} +\hline +{\bf do} \{ ~ &~ \\\hline +~~~~~~~~ select( population, offsprings ); ~ &// select the offsprings from the current population \\\hline +~~~~~~~~ transform( offsprings ); ~ &// crossover and mutation operators are applied on the selected offsprings \\\hline +~~~~~~~~ evaluate( offsprings ); ~ &// evaluation step of the resulting offspring \\\hline +~~~~~~~~ replace( population, offsprings ); ~ &// replace the individuals in the current population whith individuals from the offspring population, according to a specified replacement strategy \\\hline +\} {\bf while} ( ea\-Checkpoint\-Continue( population ) ); ~ &// checkpoint operators are applied on the current population, including the migration operator, if any specified \\\hline +\end{TabularC} + + +Constructing a synchronous island migration model requires having defined (1) a topological migration model, (2) the control parameters of the migration process, (3) a checkpoint object associated with an evolutionary algorithm, and (4) an owner object must be set. The owner object must be derived from the {\bf \hyperlink{classRunner}{Runner}} class (for example a \hyperlink{classpeoEA}{peo\-EA} object represents a possible owner). A simple example is offered bellow: + +\begin{enumerate} +\item topological model to be followed when performing migrations: \par + \par + \begin{TabularC}{2} +\hline +\hyperlink{classRingTopology}{Ring\-Topology} mig\-Topology; ~ &// a simple ring topological model - each island communicates with two other islands \\\hline +\end{TabularC} + + +\item the continuation criterion, selection and replacement strategy etc. are defined: \par + \par + \begin{TabularC}{2} +\hline +eo\-Pop$<$ EOT $>$ population( POP\_\-SIZE, pop\-Initializer ); ~ &// population of individuals to be used for the evolutionary algorithm \\\hline +~ &~ \\\hline +eo\-Random\-Select$<$ EOT $>$ mig\-Select\-Strategy; ~ &// selection strategy - in this case a random selection is applied \\\hline +eo\-Select\-Number$<$ EOT $>$ mig\-Select( mig\-Select\-Strategy, MIG\_\-SIZE ); ~ &// number of individuals to be selected using the specified strategy \\\hline +eo\-Plus\-Replacement$<$ EOT $>$ mig\-Replace; ~ &// immigration strategy - the worse individuals in the destination population are replaced by the immigrant individuals \\\hline +~ &~ \\\hline +peo\-Sync\-Island\-Mig$<$ EOT $>$ sync\-Migration( \par + ~~~~~~~~ MIG\_\-FREQ, mig\-Select, mig\-Replace, mig\-Topology, \par + ~~~~~~~~ population, population \par + ); ~ &// synchronous migration object - the emigrant individuals are selected from the same from population in which the immigrant individuals are being integrated \\\hline +\end{TabularC} + + +\item creation of a checkpoint object as part of the definition of an evolutionary algoritm (details of th EA not given as being out of scope): \par + \par + \begin{TabularC}{2} +\hline +... ~ &~ \\\hline +eo\-Gen\-Continue$<$ EOT $>$ ea\-Cont( NUM\_\-GEN ); ~ &// the evolutionary algorithm will stop after NUM\_\-GEN generations \\\hline +eo\-Check\-Point$<$ EOT $>$ ea\-Checkpoint\-Continue( ea\-Cont ); ~ &// number of individuals to be selected using the specified strategy \\\hline +... ~ &~ \\\hline +ea\-Checkpoint\-Continue.add( sync\-Migration ); ~ &// adding the migration operator as checkpoint element \\\hline +... ~ &~ \\\hline +\end{TabularC} + + +\item definition of an owner evolutionary algorithm (an object inheriting the {\bf \hyperlink{classRunner}{Runner}} class): \par + \par + \begin{TabularC}{2} +\hline +peo\-EA$<$ EOT $>$ ea\-Alg( ea\-Checkpoint\-Continue, ea\-Pop\-Eval, ea\-Select, ea\-Transform, ea\-Replace); ~ &// evolutionary algorithm having as checkpoint the ea\-Checkpoint\-Continue object defined above \\\hline +sync\-Migration.set\-Owner( ea\-Alg ); ~ &// setting the evolutionary algorithm as owner of the migration object \\\hline +ea\-Alg( population ); ~ &// applying the evolutionary algorithm on a given population \\\hline +\end{TabularC} +\end{enumerate} + + +The source and the destination population for the migration object were specified as being the same, in step no. 2, as we are usually interested in selecting the emigrants and integrating the immigrant individuals from and in, respectively, one unique population, iteratively evolved by an evolutionary algorithm. There is no restriction in having two distinct populations as source and destination for the emigrant and immigrant individuals respectively. + +The above steps only create a synchronous migration object associated to an evolutionary algorithm. The creation of several islands requires the reiteration of the steps 2 through 4 for creating distinct algorithms, with distinct populations and the associated distinctly parametrized migration objects. The interconnecting element is the underlying topology, defined at step 1 (the same C++ mig\-Topology object has to be passed as parameter for all the migration objects, in order to interconnect them). + + + +Definition at line 142 of file peo\-Sync\-Island\-Mig.h. + +\subsection{Constructor \& Destructor Documentation} +\hypertarget{classpeoSyncIslandMig_96b7b6de20b5e318a8b1cde76842305c}{ +\index{peoSyncIslandMig@{peo\-Sync\-Island\-Mig}!peoSyncIslandMig@{peoSyncIslandMig}} +\index{peoSyncIslandMig@{peoSyncIslandMig}!peoSyncIslandMig@{peo\-Sync\-Island\-Mig}} +\subsubsection[peoSyncIslandMig]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ \hyperlink{classpeoSyncIslandMig}{peo\-Sync\-Island\-Mig}$<$ EOT $>$::\hyperlink{classpeoSyncIslandMig}{peo\-Sync\-Island\-Mig} (unsigned {\em \_\-\_\-frequency}, \bf{eo\-Select}$<$ EOT $>$ \& {\em \_\-\_\-select}, \bf{eo\-Replacement}$<$ EOT $>$ \& {\em \_\-\_\-replace}, \hyperlink{classTopology}{Topology} \& {\em \_\-\_\-topology}, \bf{eo\-Pop}$<$ EOT $>$ \& {\em \_\-\_\-source}, \bf{eo\-Pop}$<$ EOT $>$ \& {\em \_\-\_\-destination})}} +\label{classpeoSyncIslandMig_96b7b6de20b5e318a8b1cde76842305c} + + +Constructor for the \hyperlink{classpeoSyncIslandMig}{peo\-Sync\-Island\-Mig} class; the characteristics of the migration model are defined through the specified parameters - out of the box objects provided in \doxyref{EO}, etc., or custom, derived objects may be passed as parameters. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em unsigned}]\_\-\_\-frequency - frequency of the migrations - the migrations occur periodically; \item[{\em eo\-Select$<$}]EOT $>$\& \_\-\_\-select - selection strategy to be applied for constructing a list of emigrant individuals out of the source population; \item[{\em eo\-Replacement$<$}]EOT $>$\& \_\-\_\-replace - replacement strategy used for integrating the immigrant individuals in the destination population; \item[{\em Topology\&}]\_\-\_\-topology - topological model to be followed when performing migrations; \item[{\em eo\-Pop$<$}]EOT $>$\& \_\-\_\-source - source population from which the emigrant individuals are selected; \item[{\em eo\-Pop$<$}]EOT $>$\& \_\-\_\-destination - destination population in which the immigrant population are integrated. \end{description} +\end{Desc} + + +Definition at line 206 of file peo\-Sync\-Island\-Mig.h. + +References Topology::add(), and peo\-Sync\-Island\-Mig$<$ EOT $>$::sync. + +\subsection{Member Function Documentation} +\hypertarget{classpeoSyncIslandMig_178476fd276f78b73607b33d19522c36}{ +\index{peoSyncIslandMig@{peo\-Sync\-Island\-Mig}!operator()@{operator()}} +\index{operator()@{operator()}!peoSyncIslandMig@{peo\-Sync\-Island\-Mig}} +\subsubsection[operator()]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void \hyperlink{classpeoSyncIslandMig}{peo\-Sync\-Island\-Mig}$<$ EOT $>$::operator() ()\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}} +\label{classpeoSyncIslandMig_178476fd276f78b73607b33d19522c36} + + +\doxyref{Function} operator to be called as checkpoint for performing the migration step. + +The emigrant individuals are selected from the source population and sent to the next island (defined by the topology object) while the immigrant individuals are integrated in the destination population. There is no need to explicitly call the function - the wrapper checkpoint object (please refer to the above example) will perform the call when required. + +Implements \bf{eo\-F$<$ void $>$}. + +Definition at line 280 of file peo\-Sync\-Island\-Mig.h. + +References peo\-Sync\-Island\-Mig$<$ EOT $>$::cont, peo\-Sync\-Island\-Mig$<$ EOT $>$::emigrate(), Cooperative::get\-Owner(), peo\-Sync\-Island\-Mig$<$ EOT $>$::immigrate(), Thread::set\-Active(), peo\-Sync\-Island\-Mig$<$ EOT $>$::source, Communicable::stop(), and peo\-Sync\-Island\-Mig$<$ EOT $>$::sync. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +peo\-Sync\-Island\-Mig.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoSyncMultiStart.eps b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoSyncMultiStart.eps new file mode 100644 index 000000000..6a97a65f8 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoSyncMultiStart.eps @@ -0,0 +1,221 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 232.558 +%%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.15 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 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 +(peoSyncMultiStart< EOT >) cw +(Service) cw +(eoUpdater) cw +(Communicable) cw +(eoF< void >) cw +(eoFunctorBase) 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 ----- + + (peoSyncMultiStart< EOT >) 0.5 0 box + (Service) 0 1 box + (eoUpdater) 1 1 box + (Communicable) 0 2 box + (eoF< void >) 1 2 box + (eoFunctorBase) 1 3 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +0 1 1 conn +solid +1 0 1 in +solid +0 0 1 out +solid +1 1 1 in +solid +0 1 1 out +solid +1 0 2 in +solid +1 1 2 in +solid +0 1 2 out +solid +1 1 3 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoSyncMultiStart.pdf b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoSyncMultiStart.pdf new file mode 100644 index 000000000..a091e904a Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoSyncMultiStart.pdf differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoSyncMultiStart.tex b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoSyncMultiStart.tex new file mode 100644 index 000000000..e47f6bc6d --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoSyncMultiStart.tex @@ -0,0 +1,245 @@ +\hypertarget{classpeoSyncMultiStart}{ +\section{peo\-Sync\-Multi\-Start$<$ EOT $>$ Class Template Reference} +\label{classpeoSyncMultiStart}\index{peoSyncMultiStart@{peoSyncMultiStart}} +} +The \hyperlink{classpeoSyncMultiStart}{peo\-Sync\-Multi\-Start} class provides the basis for implementing the synchronous multi-start model, for launching several solution-based algorithms in parallel on a specified initial population. + + +{\tt \#include $<$peo\-Sync\-Multi\-Start.h$>$} + +Inheritance diagram for peo\-Sync\-Multi\-Start$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classpeoSyncMultiStart} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hyperlink{classpeoSyncMultiStart_d29f94aad3c1f443bfffc8b6aee0704c}{peo\-Sync\-Multi\-Start} (\bf{eo\-Continue}$<$ EOT $>$ \&\_\-\_\-cont, \bf{eo\-Select}$<$ EOT $>$ \&\_\-\_\-select, \bf{eo\-Replacement}$<$ EOT $>$ \&\_\-\_\-replace, \bf{mo\-Algo}$<$ EOT $>$ \&\_\-\_\-ls, \bf{eo\-Pop}$<$ EOT $>$ \&\_\-\_\-pop) +\begin{CompactList}\small\item\em Constructor function - several simple parameters are required for defining the characteristics of the multi-start model. \item\end{CompactList}\item +void \hyperlink{classpeoSyncMultiStart_76385b33fe514f91cb83f0fbecbeb3c2}{operator()} () +\begin{CompactList}\small\item\em Operator which synchronously executes the specified algorithm on the individuals selected from the initial population. \item\end{CompactList}\item +void \hyperlink{classpeoSyncMultiStart_8becfab1922b64708dca5a53e2932a5a}{pack\-Data} () +\begin{CompactList}\small\item\em Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. \item\end{CompactList}\item +void \hyperlink{classpeoSyncMultiStart_2903a441b77cded266b5fb651e17a5b5}{unpack\-Data} () +\begin{CompactList}\small\item\em Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. \item\end{CompactList}\item +void \hyperlink{classpeoSyncMultiStart_a4d1c2943c290de540800087b54dc49b}{execute} () +\begin{CompactList}\small\item\em Auxiliary function for actually executing the specified algorithm on one assigned individual. \item\end{CompactList}\item +void \hyperlink{classpeoSyncMultiStart_6c48eb0dae741cff7203b65e226f9616}{pack\-Result} () +\begin{CompactList}\small\item\em Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. \item\end{CompactList}\item +void \hyperlink{classpeoSyncMultiStart_c3cbd1f10a89d1915c5ccf82a2c34a1d}{unpack\-Result} () +\begin{CompactList}\small\item\em Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. \item\end{CompactList}\item +void \hyperlink{classpeoSyncMultiStart_32ec0d01d3fd8a9932abd68f4781fc94}{notify\-Sending\-Data} () +\begin{CompactList}\small\item\em Auxiliary function for notifications between the process requesting the synchronous multi-start execution and the processes that performs the actual execution phase. \item\end{CompactList}\item +void \hyperlink{classpeoSyncMultiStart_fc90282cc4e93cdea8f82fd52dd78fb0}{notify\-Sending\-All\-Resource\-Requests} () +\begin{CompactList}\small\item\em Auxiliary function for notifications between the process requesting the synchronous multi-start execution and the processes that performs the actual execution phase. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +\hypertarget{classpeoSyncMultiStart_43f4fa9b125baef6fc8b968dfd16f437}{ +\bf{eo\-Continue}$<$ EOT $>$ \& \hyperlink{classpeoSyncMultiStart_43f4fa9b125baef6fc8b968dfd16f437}{cont}} +\label{classpeoSyncMultiStart_43f4fa9b125baef6fc8b968dfd16f437} + +\item +\hypertarget{classpeoSyncMultiStart_8fc9a3d046023ddd077defec3c23ab3b}{ +\bf{eo\-Select}$<$ EOT $>$ \& \hyperlink{classpeoSyncMultiStart_8fc9a3d046023ddd077defec3c23ab3b}{select}} +\label{classpeoSyncMultiStart_8fc9a3d046023ddd077defec3c23ab3b} + +\item +\hypertarget{classpeoSyncMultiStart_a375ccea98e9bf2a0854dac27df4522f}{ +\bf{eo\-Replacement}$<$ EOT $>$ \& \hyperlink{classpeoSyncMultiStart_a375ccea98e9bf2a0854dac27df4522f}{replace}} +\label{classpeoSyncMultiStart_a375ccea98e9bf2a0854dac27df4522f} + +\item +\hypertarget{classpeoSyncMultiStart_4d317966de767dcc87eee0286ea7f95d}{ +\bf{mo\-Algo}$<$ EOT $>$ \& \hyperlink{classpeoSyncMultiStart_4d317966de767dcc87eee0286ea7f95d}{ls}} +\label{classpeoSyncMultiStart_4d317966de767dcc87eee0286ea7f95d} + +\item +\hypertarget{classpeoSyncMultiStart_391178bd6b8a97a08ab4e345f070e967}{ +\bf{eo\-Pop}$<$ EOT $>$ \& \hyperlink{classpeoSyncMultiStart_391178bd6b8a97a08ab4e345f070e967}{pop}} +\label{classpeoSyncMultiStart_391178bd6b8a97a08ab4e345f070e967} + +\item +\hypertarget{classpeoSyncMultiStart_dbcc1a069ec72ecd8d40c392640d84b3}{ +\bf{eo\-Pop}$<$ EOT $>$ \hyperlink{classpeoSyncMultiStart_dbcc1a069ec72ecd8d40c392640d84b3}{sel}} +\label{classpeoSyncMultiStart_dbcc1a069ec72ecd8d40c392640d84b3} + +\item +\hypertarget{classpeoSyncMultiStart_ca10f6d258105e3c4f0d1660db5b7679}{ +\bf{eo\-Pop}$<$ EOT $>$ \hyperlink{classpeoSyncMultiStart_ca10f6d258105e3c4f0d1660db5b7679}{impr\_\-sel}} +\label{classpeoSyncMultiStart_ca10f6d258105e3c4f0d1660db5b7679} + +\item +\hypertarget{classpeoSyncMultiStart_2c2ebe46470d1425f0409897deab435b}{ +EOT \hyperlink{classpeoSyncMultiStart_2c2ebe46470d1425f0409897deab435b}{sol}} +\label{classpeoSyncMultiStart_2c2ebe46470d1425f0409897deab435b} + +\item +\hypertarget{classpeoSyncMultiStart_64191ef79b7b589964ac9c3e23ae6718}{ +unsigned \hyperlink{classpeoSyncMultiStart_64191ef79b7b589964ac9c3e23ae6718}{idx}} +\label{classpeoSyncMultiStart_64191ef79b7b589964ac9c3e23ae6718} + +\item +\hypertarget{classpeoSyncMultiStart_773eb9097550d9444f25ca8f48997a30}{ +unsigned \hyperlink{classpeoSyncMultiStart_773eb9097550d9444f25ca8f48997a30}{num\_\-term}} +\label{classpeoSyncMultiStart_773eb9097550d9444f25ca8f48997a30} + +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class peo\-Sync\-Multi\-Start$<$ EOT $>$} + +The \hyperlink{classpeoSyncMultiStart}{peo\-Sync\-Multi\-Start} class provides the basis for implementing the synchronous multi-start model, for launching several solution-based algorithms in parallel on a specified initial population. + +As a simple example, several hill climbing algorithms may be synchronously launched on the specified population, each algorithm acting upon one individual only, the final result being integrated back in the population. A \hyperlink{classpeoSyncMultiStart}{peo\-Sync\-Multi\-Start} object can be specified as checkpoint object for a classic Paradis\-EO evolutionary algorithm thus allowing for simple hybridization schemes which combine the evolutionary approach with a local search approach, for example, executed at the end of each generation. + + + +Definition at line 64 of file peo\-Sync\-Multi\-Start.h. + +\subsection{Constructor \& Destructor Documentation} +\hypertarget{classpeoSyncMultiStart_d29f94aad3c1f443bfffc8b6aee0704c}{ +\index{peoSyncMultiStart@{peo\-Sync\-Multi\-Start}!peoSyncMultiStart@{peoSyncMultiStart}} +\index{peoSyncMultiStart@{peoSyncMultiStart}!peoSyncMultiStart@{peo\-Sync\-Multi\-Start}} +\subsubsection[peoSyncMultiStart]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ \hyperlink{classpeoSyncMultiStart}{peo\-Sync\-Multi\-Start}$<$ EOT $>$::\hyperlink{classpeoSyncMultiStart}{peo\-Sync\-Multi\-Start} (\bf{eo\-Continue}$<$ EOT $>$ \& {\em \_\-\_\-cont}, \bf{eo\-Select}$<$ EOT $>$ \& {\em \_\-\_\-select}, \bf{eo\-Replacement}$<$ EOT $>$ \& {\em \_\-\_\-replace}, \bf{mo\-Algo}$<$ EOT $>$ \& {\em \_\-\_\-ls}, \bf{eo\-Pop}$<$ EOT $>$ \& {\em \_\-\_\-pop})}} +\label{classpeoSyncMultiStart_d29f94aad3c1f443bfffc8b6aee0704c} + + +Constructor function - several simple parameters are required for defining the characteristics of the multi-start model. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em eo\-Continue$<$}]EOT $>$\& \_\-\_\-cont - defined for including further functionality - no semantics associated at this time; \item[{\em eo\-Select$<$}]EOT $>$\& \_\-\_\-select - selection strategy for obtaining a subset of the initial population on which to apply the specified algorithm; \item[{\em eo\-Replacement$<$}]EOT $>$\& \_\-\_\-replace - replacement strategy for integrating the resulting individuals in the initial population; \item[{\em mo\-Algo$<$}]EOT $>$\& \_\-\_\-ls - algorithm to be applied on each of the selected individuals - a {\bf mo\-Algo$<$ EOT $>$}-derived object must be specified; \item[{\em eo\-Pop$<$}]EOT $>$\& \_\-\_\-pop - the initial population from which the individuals are selected for applying the specified algorithm. \end{description} +\end{Desc} + + +Definition at line 134 of file peo\-Sync\-Multi\-Start.h. + +\subsection{Member Function Documentation} +\hypertarget{classpeoSyncMultiStart_76385b33fe514f91cb83f0fbecbeb3c2}{ +\index{peoSyncMultiStart@{peo\-Sync\-Multi\-Start}!operator()@{operator()}} +\index{operator()@{operator()}!peoSyncMultiStart@{peo\-Sync\-Multi\-Start}} +\subsubsection[operator()]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void \hyperlink{classpeoSyncMultiStart}{peo\-Sync\-Multi\-Start}$<$ EOT $>$::operator() ()\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}} +\label{classpeoSyncMultiStart_76385b33fe514f91cb83f0fbecbeb3c2} + + +Operator which synchronously executes the specified algorithm on the individuals selected from the initial population. + +There is no need to explicitly call the operator - automatically called as checkpoint operator. + +Implements \bf{eo\-F$<$ void $>$}. + +Definition at line 189 of file peo\-Sync\-Multi\-Start.h. + +References peo\-Sync\-Multi\-Start$<$ EOT $>$::idx, peo\-Sync\-Multi\-Start$<$ EOT $>$::impr\_\-sel, peo\-Sync\-Multi\-Start$<$ EOT $>$::num\_\-term, peo\-Sync\-Multi\-Start$<$ EOT $>$::pop, Service::request\-Resource\-Request(), peo\-Sync\-Multi\-Start$<$ EOT $>$::sel, peo\-Sync\-Multi\-Start$<$ EOT $>$::select, and Communicable::stop().\hypertarget{classpeoSyncMultiStart_8becfab1922b64708dca5a53e2932a5a}{ +\index{peoSyncMultiStart@{peo\-Sync\-Multi\-Start}!packData@{packData}} +\index{packData@{packData}!peoSyncMultiStart@{peo\-Sync\-Multi\-Start}} +\subsubsection[packData]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void \hyperlink{classpeoSyncMultiStart}{peo\-Sync\-Multi\-Start}$<$ EOT $>$::pack\-Data ()\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}} +\label{classpeoSyncMultiStart_8becfab1922b64708dca5a53e2932a5a} + + +Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. + +There is no need to explicitly call the function. + +Reimplemented from \hyperlink{classService_aea4b8f7f8fb88e83862ee4bfd9ab207}{Service}. + +Definition at line 148 of file peo\-Sync\-Multi\-Start.h. + +References peo\-Sync\-Multi\-Start$<$ EOT $>$::idx, and peo\-Sync\-Multi\-Start$<$ EOT $>$::sel.\hypertarget{classpeoSyncMultiStart_2903a441b77cded266b5fb651e17a5b5}{ +\index{peoSyncMultiStart@{peo\-Sync\-Multi\-Start}!unpackData@{unpackData}} +\index{unpackData@{unpackData}!peoSyncMultiStart@{peo\-Sync\-Multi\-Start}} +\subsubsection[unpackData]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void \hyperlink{classpeoSyncMultiStart}{peo\-Sync\-Multi\-Start}$<$ EOT $>$::unpack\-Data ()\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}} +\label{classpeoSyncMultiStart_2903a441b77cded266b5fb651e17a5b5} + + +Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. + +There is no need to explicitly call the function. + +Reimplemented from \hyperlink{classService_3bd87b444710813d30fd754d4d0b4df3}{Service}. + +Definition at line 154 of file peo\-Sync\-Multi\-Start.h. + +References peo\-Sync\-Multi\-Start$<$ EOT $>$::sol.\hypertarget{classpeoSyncMultiStart_a4d1c2943c290de540800087b54dc49b}{ +\index{peoSyncMultiStart@{peo\-Sync\-Multi\-Start}!execute@{execute}} +\index{execute@{execute}!peoSyncMultiStart@{peo\-Sync\-Multi\-Start}} +\subsubsection[execute]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void \hyperlink{classpeoSyncMultiStart}{peo\-Sync\-Multi\-Start}$<$ EOT $>$::execute ()\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}} +\label{classpeoSyncMultiStart_a4d1c2943c290de540800087b54dc49b} + + +Auxiliary function for actually executing the specified algorithm on one assigned individual. + +There is no need to explicitly call the function. + +Reimplemented from \hyperlink{classService_e4f2894e6121e60f38d41cfbd7447ae4}{Service}. + +Definition at line 160 of file peo\-Sync\-Multi\-Start.h. + +References peo\-Sync\-Multi\-Start$<$ EOT $>$::ls, and peo\-Sync\-Multi\-Start$<$ EOT $>$::sol.\hypertarget{classpeoSyncMultiStart_6c48eb0dae741cff7203b65e226f9616}{ +\index{peoSyncMultiStart@{peo\-Sync\-Multi\-Start}!packResult@{packResult}} +\index{packResult@{packResult}!peoSyncMultiStart@{peo\-Sync\-Multi\-Start}} +\subsubsection[packResult]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void \hyperlink{classpeoSyncMultiStart}{peo\-Sync\-Multi\-Start}$<$ EOT $>$::pack\-Result ()\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}} +\label{classpeoSyncMultiStart_6c48eb0dae741cff7203b65e226f9616} + + +Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. + +There is no need to explicitly call the function. + +Reimplemented from \hyperlink{classService_e5e4f90b2315e15c2a2913bd370f4cf5}{Service}. + +Definition at line 166 of file peo\-Sync\-Multi\-Start.h. + +References peo\-Sync\-Multi\-Start$<$ EOT $>$::sol.\hypertarget{classpeoSyncMultiStart_c3cbd1f10a89d1915c5ccf82a2c34a1d}{ +\index{peoSyncMultiStart@{peo\-Sync\-Multi\-Start}!unpackResult@{unpackResult}} +\index{unpackResult@{unpackResult}!peoSyncMultiStart@{peo\-Sync\-Multi\-Start}} +\subsubsection[unpackResult]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void \hyperlink{classpeoSyncMultiStart}{peo\-Sync\-Multi\-Start}$<$ EOT $>$::unpack\-Result ()\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}} +\label{classpeoSyncMultiStart_c3cbd1f10a89d1915c5ccf82a2c34a1d} + + +Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. + +There is no need to explicitly call the function. + +Reimplemented from \hyperlink{classService_45c06344edbfa482b91f68e2035a6099}{Service}. + +Definition at line 172 of file peo\-Sync\-Multi\-Start.h. + +References Service::get\-Owner(), peo\-Sync\-Multi\-Start$<$ EOT $>$::impr\_\-sel, peo\-Sync\-Multi\-Start$<$ EOT $>$::num\_\-term, peo\-Sync\-Multi\-Start$<$ EOT $>$::pop, peo\-Sync\-Multi\-Start$<$ EOT $>$::replace, Communicable::resume(), peo\-Sync\-Multi\-Start$<$ EOT $>$::sel, Thread::set\-Active(), and peo\-Sync\-Multi\-Start$<$ EOT $>$::sol.\hypertarget{classpeoSyncMultiStart_32ec0d01d3fd8a9932abd68f4781fc94}{ +\index{peoSyncMultiStart@{peo\-Sync\-Multi\-Start}!notifySendingData@{notifySendingData}} +\index{notifySendingData@{notifySendingData}!peoSyncMultiStart@{peo\-Sync\-Multi\-Start}} +\subsubsection[notifySendingData]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void \hyperlink{classpeoSyncMultiStart}{peo\-Sync\-Multi\-Start}$<$ EOT $>$::notify\-Sending\-Data ()\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}} +\label{classpeoSyncMultiStart_32ec0d01d3fd8a9932abd68f4781fc94} + + +Auxiliary function for notifications between the process requesting the synchronous multi-start execution and the processes that performs the actual execution phase. + +There is no need to explicitly call the function. + +Reimplemented from \hyperlink{classService_81ad4d6ebb50045b8977e2ab74826f30}{Service}. + +Definition at line 200 of file peo\-Sync\-Multi\-Start.h.\hypertarget{classpeoSyncMultiStart_fc90282cc4e93cdea8f82fd52dd78fb0}{ +\index{peoSyncMultiStart@{peo\-Sync\-Multi\-Start}!notifySendingAllResourceRequests@{notifySendingAllResourceRequests}} +\index{notifySendingAllResourceRequests@{notifySendingAllResourceRequests}!peoSyncMultiStart@{peo\-Sync\-Multi\-Start}} +\subsubsection[notifySendingAllResourceRequests]{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void \hyperlink{classpeoSyncMultiStart}{peo\-Sync\-Multi\-Start}$<$ EOT $>$::notify\-Sending\-All\-Resource\-Requests ()\hspace{0.3cm}{\tt \mbox{[}virtual\mbox{]}}}} +\label{classpeoSyncMultiStart_fc90282cc4e93cdea8f82fd52dd78fb0} + + +Auxiliary function for notifications between the process requesting the synchronous multi-start execution and the processes that performs the actual execution phase. + +There is no need to explicitly call the function. + +Reimplemented from \hyperlink{classService_f94cc8a5c2665d4574041737e61e9ffc}{Service}. + +Definition at line 205 of file peo\-Sync\-Multi\-Start.h. + +References Service::get\-Owner(), and Thread::set\-Passive(). + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +peo\-Sync\-Multi\-Start.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoSynchronousMultiStart.eps b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoSynchronousMultiStart.eps new file mode 100644 index 000000000..6e4832756 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoSynchronousMultiStart.eps @@ -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 238.095 +%%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.1 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 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 +(peoSynchronousMultiStart< EntityType >) cw +(Service) cw +(Communicable) 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 ----- + + (peoSynchronousMultiStart< EntityType >) 0 0 box + (Service) 0 1 box + (Communicable) 0 2 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoSynchronousMultiStart.pdf b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoSynchronousMultiStart.pdf new file mode 100644 index 000000000..c8f374cbf Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoSynchronousMultiStart.pdf differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoSynchronousMultiStart.tex b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoSynchronousMultiStart.tex new file mode 100644 index 000000000..8b103fb89 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoSynchronousMultiStart.tex @@ -0,0 +1,152 @@ +\hypertarget{classpeoSynchronousMultiStart}{ +\section{peo\-Synchronous\-Multi\-Start$<$ Entity\-Type $>$ Class Template Reference} +\label{classpeoSynchronousMultiStart}\index{peoSynchronousMultiStart@{peoSynchronousMultiStart}} +} +Inheritance diagram for peo\-Synchronous\-Multi\-Start$<$ Entity\-Type $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{classpeoSynchronousMultiStart} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{classpeoSynchronousMultiStart_e9a336c61dd6216d7d15253ff9c9d2a3}{ +template$<$typename Algorithm\-Type$>$ \hyperlink{classpeoSynchronousMultiStart_e9a336c61dd6216d7d15253ff9c9d2a3}{peo\-Synchronous\-Multi\-Start} (Algorithm\-Type \&external\-Algorithm)} +\label{classpeoSynchronousMultiStart_e9a336c61dd6216d7d15253ff9c9d2a3} + +\item +\hypertarget{classpeoSynchronousMultiStart_689374232ff67f266ddaa5d309ea54ac}{ +template$<$typename Algorithm\-Type, typename Aggregation\-Function\-Type$>$ \hyperlink{classpeoSynchronousMultiStart_689374232ff67f266ddaa5d309ea54ac}{peo\-Synchronous\-Multi\-Start} (std::vector$<$ Algorithm\-Type $\ast$ $>$ \&external\-Algorithms, Aggregation\-Function\-Type \&external\-Aggregation\-Function)} +\label{classpeoSynchronousMultiStart_689374232ff67f266ddaa5d309ea54ac} + +\item +\hypertarget{classpeoSynchronousMultiStart_f9ec55d67f5f45f5a737064fae569277}{ +\hyperlink{classpeoSynchronousMultiStart_f9ec55d67f5f45f5a737064fae569277}{$\sim$peo\-Synchronous\-Multi\-Start} ()} +\label{classpeoSynchronousMultiStart_f9ec55d67f5f45f5a737064fae569277} + +\item +\hypertarget{classpeoSynchronousMultiStart_1fd09337a6edcf173edff1fdda2387c7}{ +template$<$typename Type$>$ void \hyperlink{classpeoSynchronousMultiStart_1fd09337a6edcf173edff1fdda2387c7}{operator()} (Type \&external\-Data)} +\label{classpeoSynchronousMultiStart_1fd09337a6edcf173edff1fdda2387c7} + +\item +\hypertarget{classpeoSynchronousMultiStart_45372c26ac5b979d29458815debceff8}{ +template$<$typename Type$>$ void \hyperlink{classpeoSynchronousMultiStart_45372c26ac5b979d29458815debceff8}{operator()} (const Type \&external\-Data\-Begin, const Type \&external\-Data\-End)} +\label{classpeoSynchronousMultiStart_45372c26ac5b979d29458815debceff8} + +\item +\hypertarget{classpeoSynchronousMultiStart_c73358b4f04f258c55f631660a7992fb}{ +void \hyperlink{classpeoSynchronousMultiStart_c73358b4f04f258c55f631660a7992fb}{pack\-Data} ()} +\label{classpeoSynchronousMultiStart_c73358b4f04f258c55f631660a7992fb} + +\item +\hypertarget{classpeoSynchronousMultiStart_9881b3f05c9f90bcb3c3ec0af8109ccc}{ +void \hyperlink{classpeoSynchronousMultiStart_9881b3f05c9f90bcb3c3ec0af8109ccc}{unpack\-Data} ()} +\label{classpeoSynchronousMultiStart_9881b3f05c9f90bcb3c3ec0af8109ccc} + +\item +\hypertarget{classpeoSynchronousMultiStart_da98ee86056eca293b3f08c89584b701}{ +void \hyperlink{classpeoSynchronousMultiStart_da98ee86056eca293b3f08c89584b701}{execute} ()} +\label{classpeoSynchronousMultiStart_da98ee86056eca293b3f08c89584b701} + +\item +\hypertarget{classpeoSynchronousMultiStart_0a5e0e1c1db5af61351e201e019f5a89}{ +void \hyperlink{classpeoSynchronousMultiStart_0a5e0e1c1db5af61351e201e019f5a89}{pack\-Result} ()} +\label{classpeoSynchronousMultiStart_0a5e0e1c1db5af61351e201e019f5a89} + +\item +\hypertarget{classpeoSynchronousMultiStart_976b78c11073ee3be09c1aed7826411a}{ +void \hyperlink{classpeoSynchronousMultiStart_976b78c11073ee3be09c1aed7826411a}{unpack\-Result} ()} +\label{classpeoSynchronousMultiStart_976b78c11073ee3be09c1aed7826411a} + +\item +\hypertarget{classpeoSynchronousMultiStart_de581c634fa9f952d571f9ed0a6611ed}{ +void \hyperlink{classpeoSynchronousMultiStart_de581c634fa9f952d571f9ed0a6611ed}{notify\-Sending\-Data} ()} +\label{classpeoSynchronousMultiStart_de581c634fa9f952d571f9ed0a6611ed} + +\item +\hypertarget{classpeoSynchronousMultiStart_e328547d97849bfc85f2a7356e5e7927}{ +void \hyperlink{classpeoSynchronousMultiStart_e328547d97849bfc85f2a7356e5e7927}{notify\-Sending\-All\-Resource\-Requests} ()} +\label{classpeoSynchronousMultiStart_e328547d97849bfc85f2a7356e5e7927} + +\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +\hypertarget{classpeoSynchronousMultiStart_ea22b8cd0f4974da519ec416904d772e}{ +\hyperlink{structpeoSynchronousMultiStart_1_1AbstractAlgorithm}{Abstract\-Algorithm} $\ast$ \hyperlink{classpeoSynchronousMultiStart_ea22b8cd0f4974da519ec416904d772e}{singular\-Algorithm}} +\label{classpeoSynchronousMultiStart_ea22b8cd0f4974da519ec416904d772e} + +\item +\hypertarget{classpeoSynchronousMultiStart_f47bb795f53df73f04c0d1528fa346a6}{ +std::vector$<$ \hyperlink{structpeoSynchronousMultiStart_1_1AbstractAlgorithm}{Abstract\-Algorithm} $\ast$ $>$ \hyperlink{classpeoSynchronousMultiStart_f47bb795f53df73f04c0d1528fa346a6}{algorithms}} +\label{classpeoSynchronousMultiStart_f47bb795f53df73f04c0d1528fa346a6} + +\item +\hypertarget{classpeoSynchronousMultiStart_abcd58d71eabf2fab35c662fb300e61c}{ +\hyperlink{structpeoSynchronousMultiStart_1_1AbstractAggregationAlgorithm}{Abstract\-Aggregation\-Algorithm} $\ast$ \hyperlink{classpeoSynchronousMultiStart_abcd58d71eabf2fab35c662fb300e61c}{aggregation\-Function}} +\label{classpeoSynchronousMultiStart_abcd58d71eabf2fab35c662fb300e61c} + +\item +\hypertarget{classpeoSynchronousMultiStart_6efedfa64f7a4f3a0d81002e8226dcea}{ +Entity\-Type \hyperlink{classpeoSynchronousMultiStart_6efedfa64f7a4f3a0d81002e8226dcea}{entity\-Type\-Instance}} +\label{classpeoSynchronousMultiStart_6efedfa64f7a4f3a0d81002e8226dcea} + +\item +\hypertarget{classpeoSynchronousMultiStart_f729f5a1671437dce7607ad5b7253560}{ +std::vector$<$ \hyperlink{structpeoSynchronousMultiStart_1_1AbstractDataType}{Abstract\-Data\-Type} $\ast$ $>$ \hyperlink{classpeoSynchronousMultiStart_f729f5a1671437dce7607ad5b7253560}{data}} +\label{classpeoSynchronousMultiStart_f729f5a1671437dce7607ad5b7253560} + +\item +\hypertarget{classpeoSynchronousMultiStart_0264a28725fb4a030ed1e4010e07e69e}{ +unsigned \hyperlink{classpeoSynchronousMultiStart_0264a28725fb4a030ed1e4010e07e69e}{idx}} +\label{classpeoSynchronousMultiStart_0264a28725fb4a030ed1e4010e07e69e} + +\item +\hypertarget{classpeoSynchronousMultiStart_e8c889e6228535ce02086c76d3480cbb}{ +unsigned \hyperlink{classpeoSynchronousMultiStart_e8c889e6228535ce02086c76d3480cbb}{num\_\-term}} +\label{classpeoSynchronousMultiStart_e8c889e6228535ce02086c76d3480cbb} + +\item +\hypertarget{classpeoSynchronousMultiStart_a49cb2d76e6fdbfdbe0788c8388d6a0f}{ +unsigned \hyperlink{classpeoSynchronousMultiStart_a49cb2d76e6fdbfdbe0788c8388d6a0f}{data\-Index}} +\label{classpeoSynchronousMultiStart_a49cb2d76e6fdbfdbe0788c8388d6a0f} + +\item +\hypertarget{classpeoSynchronousMultiStart_20cff9a01fb7bb621264b901dab7f336}{ +unsigned \hyperlink{classpeoSynchronousMultiStart_20cff9a01fb7bb621264b901dab7f336}{function\-Index}} +\label{classpeoSynchronousMultiStart_20cff9a01fb7bb621264b901dab7f336} + +\end{CompactItemize} +\subsection*{Classes} +\begin{CompactItemize} +\item +struct \hyperlink{structpeoSynchronousMultiStart_1_1AbstractAggregationAlgorithm}{Abstract\-Aggregation\-Algorithm} +\item +struct \hyperlink{structpeoSynchronousMultiStart_1_1AbstractAlgorithm}{Abstract\-Algorithm} +\item +struct \hyperlink{structpeoSynchronousMultiStart_1_1AbstractDataType}{Abstract\-Data\-Type} +\item +struct \hyperlink{structpeoSynchronousMultiStart_1_1AggregationAlgorithm}{Aggregation\-Algorithm} +\item +struct \hyperlink{structpeoSynchronousMultiStart_1_1Algorithm}{Algorithm} +\item +struct \hyperlink{structpeoSynchronousMultiStart_1_1DataType}{Data\-Type} +\item +struct \hyperlink{structpeoSynchronousMultiStart_1_1NoAggregationFunction}{No\-Aggregation\-Function} +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename Entity\-Type$>$ class peo\-Synchronous\-Multi\-Start$<$ Entity\-Type $>$} + + + + + +Definition at line 45 of file peo\-Synchronous\-Multi\-Start.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +peo\-Synchronous\-Multi\-Start.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoTransform.eps b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoTransform.eps new file mode 100644 index 000000000..685b4bc71 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoTransform.eps @@ -0,0 +1,233 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 250 +%%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 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 5 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 +(peoTransform< EOT >) cw +(Service) cw +(eoTransform< EOT >) cw +(Communicable) cw +(eoUF< A1, R >) cw +(eoFunctorBase) cw +(peoParaSGATransform< EOT >) cw +(peoSeqTransform< EOT >) 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 ----- + + (peoTransform< EOT >) 0.5 1 box + (Service) 0 2 box + (eoTransform< EOT >) 1 2 box + (Communicable) 0 3 box + (eoUF< A1, R >) 1 3 box + (eoFunctorBase) 1 4 box + (peoParaSGATransform< EOT >) 0 0 box + (peoSeqTransform< EOT >) 1 0 box + +% ----- relations ----- + +solid +0 0.5 1 out +solid +0 1 2 conn +solid +1 0 2 in +solid +0 0 2 out +solid +1 1 2 in +solid +0 1 2 out +solid +1 0 3 in +solid +1 1 3 in +solid +0 1 3 out +solid +1 1 4 in +solid +1 0.5 0.25 out +solid +0 1 1 conn +solid +0 0 0.75 in +solid +0 1 0.75 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoTransform.pdf b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoTransform.pdf new file mode 100644 index 000000000..936add316 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoTransform.pdf @@ -0,0 +1,74 @@ +%PDF-1.3 +%쏢 +5 0 obj +<> +stream +xUn0+Ŗ\/ (Imb\C\Xv4wD*N!vˡt +dM->;xxn|': æIEkr+(QkPݯX6p˟wBix +;*,JHKB4XIh$Ϫj6䁘**Fh(4,:5/E}g˱ܹWY@Zu2.G?7&0p^}l֏ mHZ@R #5̛mݬWoaª:WmFD)Zep;`LEޖF짬0܅,Eυ W~@"LP;Npnu2ښc-(2/ĮFpt5"ܩO;&c X,%f%ȼRjkDpMmmHyTCֆp#ۤezKXX6"bW]n{1A~ *\@eUJ8Տ"i܋)s_ $Zendstream +endobj +6 0 obj +557 +endobj +4 0 obj +<> +/Contents 5 0 R +>> +endobj +3 0 obj +<< /Type /Pages /Kids [ +4 0 R +] /Count 1 +>> +endobj +1 0 obj +<> +endobj +7 0 obj +<>endobj +9 0 obj +<> +endobj +10 0 obj +<> +endobj +8 0 obj +<> +endobj +2 0 obj +<>endobj +xref +0 11 +0000000000 65535 f +0000000870 00000 n +0000001084 00000 n +0000000811 00000 n +0000000661 00000 n +0000000015 00000 n +0000000642 00000 n +0000000918 00000 n +0000001018 00000 n +0000000959 00000 n +0000000988 00000 n +trailer +<< /Size 11 /Root 1 0 R /Info 2 0 R +/ID [(tgǙ\)U;PC)(tgǙ\)U;PC)] +>> +startxref +1241 +%%EOF diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoTransform.tex b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoTransform.tex new file mode 100644 index 000000000..5207893f6 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/classpeoTransform.tex @@ -0,0 +1,29 @@ +\hypertarget{classpeoTransform}{ +\section{peo\-Transform$<$ EOT $>$ Class Template Reference} +\label{classpeoTransform}\index{peoTransform@{peoTransform}} +} +The \hyperlink{classpeoTransform}{peo\-Transform} class acts only as an interface for creating transform operators - for an example please refer to the {\bf \hyperlink{classpeoSeqTransform}{peo\-Seq\-Transform}} and the {\bf \hyperlink{classpeoParaSGATransform}{peo\-Para\-SGATransform}} classes. + + +{\tt \#include $<$peo\-Transform.h$>$} + +Inheritance diagram for peo\-Transform$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=5cm]{classpeoTransform} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class peo\-Transform$<$ EOT $>$} + +The \hyperlink{classpeoTransform}{peo\-Transform} class acts only as an interface for creating transform operators - for an example please refer to the {\bf \hyperlink{classpeoSeqTransform}{peo\-Seq\-Transform}} and the {\bf \hyperlink{classpeoParaSGATransform}{peo\-Para\-SGATransform}} classes. + + + +Definition at line 48 of file peo\-Transform.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +peo\-Transform.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/doxygen.sty b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/doxygen.sty new file mode 100644 index 000000000..e00898f58 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/doxygen.sty @@ -0,0 +1,78 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{doxygen} +\RequirePackage{calc} +\RequirePackage{array} +\pagestyle{fancyplain} +\newcommand{\clearemptydoublepage}{\newpage{\pagestyle{empty}\cleardoublepage}} +\renewcommand{\chaptermark}[1]{\markboth{#1}{}} +\renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}} +\lhead[\fancyplain{}{\bfseries\thepage}] + {\fancyplain{}{\bfseries\rightmark}} +\rhead[\fancyplain{}{\bfseries\leftmark}] + {\fancyplain{}{\bfseries\thepage}} +\rfoot[\fancyplain{}{\bfseries\scriptsize Generated on Mon Oct 8 11:16:45 2007 for Paradis\-EO-PEOMoving\-Objects by Doxygen }]{} +\lfoot[]{\fancyplain{}{\bfseries\scriptsize Generated on Mon Oct 8 11:16:45 2007 for Paradis\-EO-PEOMoving\-Objects by Doxygen }} +\cfoot{} +\newenvironment{Code} +{\footnotesize} +{\normalsize} +\newcommand{\doxyref}[3]{\textbf{#1} (\textnormal{#2}\,\pageref{#3})} +\newenvironment{DocInclude} +{\footnotesize} +{\normalsize} +\newenvironment{VerbInclude} +{\footnotesize} +{\normalsize} +\newenvironment{Image} +{\begin{figure}[H]} +{\end{figure}} +\newenvironment{ImageNoCaption}{}{} +\newenvironment{CompactList} +{\begin{list}{}{ + \setlength{\leftmargin}{0.5cm} + \setlength{\itemsep}{0pt} + \setlength{\parsep}{0pt} + \setlength{\topsep}{0pt} + \renewcommand{\makelabel}{\hfill}}} +{\end{list}} +\newenvironment{CompactItemize} +{ + \begin{itemize} + \setlength{\itemsep}{-3pt} + \setlength{\parsep}{0pt} + \setlength{\topsep}{0pt} + \setlength{\partopsep}{0pt} +} +{\end{itemize}} +\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp} +\newlength{\tmplength} +\newenvironment{TabularC}[1] +{ +\setlength{\tmplength} + {\linewidth/(#1)-\tabcolsep*2-\arrayrulewidth*(#1+1)/(#1)} + \par\begin{tabular*}{\linewidth} + {*{#1}{|>{\PBS\raggedright\hspace{0pt}}p{\the\tmplength}}|} +} +{\end{tabular*}\par} +\newcommand{\entrylabel}[1]{ + {\parbox[b]{\labelwidth-4pt}{\makebox[0pt][l]{\textbf{#1}}\vspace{1.5\baselineskip}}}} +\newenvironment{Desc} +{\begin{list}{} + { + \settowidth{\labelwidth}{40pt} + \setlength{\leftmargin}{\labelwidth} + \setlength{\parsep}{0pt} + \setlength{\itemsep}{-4pt} + \renewcommand{\makelabel}{\entrylabel} + } +} +{\end{list}} +\newenvironment{Indent} + {\begin{list}{}{\setlength{\leftmargin}{0.5cm}} + \item[]\ignorespaces} + {\unskip\end{list}} +\setlength{\parindent}{0cm} +\setlength{\parskip}{0.2cm} +\addtocounter{secnumdepth}{1} +\sloppy +\usepackage[T1]{fontenc} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/hierarchy.tex b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/hierarchy.tex new file mode 100644 index 000000000..385abf60e --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/hierarchy.tex @@ -0,0 +1,88 @@ +\section{Paradis\-EO-PEOMoving\-Objects Class Hierarchy} +This inheritance list is sorted roughly, but not completely, alphabetically:\begin{CompactList} +\item \contentsline{section}{Communicable}{\pageref{classCommunicable}}{} +\begin{CompactList} +\item \contentsline{section}{Cooperative}{\pageref{classCooperative}}{} +\begin{CompactList} +\item \contentsline{section}{peo\-Async\-Island\-Mig$<$ EOT $>$}{\pageref{classpeoAsyncIslandMig}}{} +\item \contentsline{section}{peo\-Sync\-Island\-Mig$<$ EOT $>$}{\pageref{classpeoSyncIslandMig}}{} +\end{CompactList} +\item \contentsline{section}{Runner}{\pageref{classRunner}}{} +\begin{CompactList} +\item \contentsline{section}{peo\-EA$<$ EOT $>$}{\pageref{classpeoEA}}{} +\item \contentsline{section}{peo\-Parallel\-Algorithm\-Wrapper}{\pageref{classpeoParallelAlgorithmWrapper}}{} +\end{CompactList} +\item \contentsline{section}{Service}{\pageref{classService}}{} +\begin{CompactList} +\item \contentsline{section}{peo\-Pop\-Eval$<$ EOT $>$}{\pageref{classpeoPopEval}}{} +\begin{CompactList} +\item \contentsline{section}{peo\-Para\-Pop\-Eval$<$ EOT $>$}{\pageref{classpeoParaPopEval}}{} +\item \contentsline{section}{peo\-Seq\-Pop\-Eval$<$ EOT $>$}{\pageref{classpeoSeqPopEval}}{} +\end{CompactList} +\item \contentsline{section}{peo\-Synchronous\-Multi\-Start$<$ Entity\-Type $>$}{\pageref{classpeoSynchronousMultiStart}}{} +\item \contentsline{section}{peo\-Sync\-Multi\-Start$<$ EOT $>$}{\pageref{classpeoSyncMultiStart}}{} +\item \contentsline{section}{peo\-Transform$<$ EOT $>$}{\pageref{classpeoTransform}}{} +\begin{CompactList} +\item \contentsline{section}{peo\-Para\-SGATransform$<$ EOT $>$}{\pageref{classpeoParaSGATransform}}{} +\item \contentsline{section}{peo\-Seq\-Transform$<$ EOT $>$}{\pageref{classpeoSeqTransform}}{} +\end{CompactList} +\end{CompactList} +\item \contentsline{section}{Worker}{\pageref{classWorker}}{} +\end{CompactList} +\item eo\-Functor\-Base{\tt \mbox{[}external\mbox{]}}\begin{CompactList} +\item eo\-BF$<$ A1, A2, R $>${\tt \mbox{[}external\mbox{]}}\begin{CompactList} +\item \contentsline{section}{peo\-Agg\-Eval\-Func$<$ EOT $>$}{\pageref{classpeoAggEvalFunc}}{} +\begin{CompactList} +\item \contentsline{section}{Merge\-Route\-Eval}{\pageref{classMergeRouteEval}}{} +\item \contentsline{section}{peo\-No\-Agg\-Eval\-Func$<$ EOT $>$}{\pageref{classpeoNoAggEvalFunc}}{} +\end{CompactList} +\item \contentsline{section}{peo\-Agg\-Eval\-Func$<$ eo\-Vector$<$ int, Node $>$ $>$}{\pageref{classpeoAggEvalFunc}}{} +\end{CompactList} +\item eo\-F$<$ void $>${\tt \mbox{[}external\mbox{]}}\begin{CompactList} +\item eo\-Updater{\tt \mbox{[}external\mbox{]}}\begin{CompactList} +\item \contentsline{section}{Display\-Best\-Route}{\pageref{classDisplayBestRoute}}{} +\item \contentsline{section}{peo\-Async\-Island\-Mig$<$ EOT $>$}{\pageref{classpeoAsyncIslandMig}}{} +\item \contentsline{section}{peo\-Sync\-Island\-Mig$<$ EOT $>$}{\pageref{classpeoSyncIslandMig}}{} +\item \contentsline{section}{peo\-Sync\-Multi\-Start$<$ EOT $>$}{\pageref{classpeoSyncMultiStart}}{} +\end{CompactList} +\end{CompactList} +\item eo\-UF$<$ A1, R $>${\tt \mbox{[}external\mbox{]}}\begin{CompactList} +\item eo\-Transform$<$ EOT $>${\tt \mbox{[}external\mbox{]}}\begin{CompactList} +\item \contentsline{section}{peo\-Transform$<$ EOT $>$}{\pageref{classpeoTransform}}{} +\end{CompactList} +\end{CompactList} +\end{CompactList} +\item \contentsline{section}{peo\-Parallel\-Algorithm\-Wrapper::Abstract\-Algorithm}{\pageref{structpeoParallelAlgorithmWrapper_1_1AbstractAlgorithm}}{} +\begin{CompactList} +\item \contentsline{section}{peo\-Parallel\-Algorithm\-Wrapper::Algorithm$<$ Algorithm\-Type, Algorithm\-Data\-Type $>$}{\pageref{structpeoParallelAlgorithmWrapper_1_1Algorithm}}{} +\item \contentsline{section}{peo\-Parallel\-Algorithm\-Wrapper::Algorithm$<$ Algorithm\-Type, void $>$}{\pageref{structpeoParallelAlgorithmWrapper_1_1Algorithm_3_01AlgorithmType_00_01void_01_4}}{} +\end{CompactList} +\item \contentsline{section}{peo\-Synchronous\-Multi\-Start$<$ Entity\-Type $>$::Abstract\-Aggregation\-Algorithm}{\pageref{structpeoSynchronousMultiStart_1_1AbstractAggregationAlgorithm}}{} +\begin{CompactList} +\item \contentsline{section}{peo\-Synchronous\-Multi\-Start$<$ Entity\-Type $>$::Aggregation\-Algorithm$<$ Aggregation\-Algorithm\-Type $>$}{\pageref{structpeoSynchronousMultiStart_1_1AggregationAlgorithm}}{} +\item \contentsline{section}{peo\-Synchronous\-Multi\-Start$<$ Entity\-Type $>$::No\-Aggregation\-Function}{\pageref{structpeoSynchronousMultiStart_1_1NoAggregationFunction}}{} +\end{CompactList} +\item \contentsline{section}{peo\-Synchronous\-Multi\-Start$<$ Entity\-Type $>$::Abstract\-Algorithm}{\pageref{structpeoSynchronousMultiStart_1_1AbstractAlgorithm}}{} +\begin{CompactList} +\item \contentsline{section}{peo\-Synchronous\-Multi\-Start$<$ Entity\-Type $>$::Algorithm$<$ Algorithm\-Type $>$}{\pageref{structpeoSynchronousMultiStart_1_1Algorithm}}{} +\end{CompactList} +\item \contentsline{section}{peo\-Synchronous\-Multi\-Start$<$ Entity\-Type $>$::Abstract\-Data\-Type}{\pageref{structpeoSynchronousMultiStart_1_1AbstractDataType}}{} +\begin{CompactList} +\item \contentsline{section}{peo\-Synchronous\-Multi\-Start$<$ Entity\-Type $>$::Data\-Type$<$ Type $>$}{\pageref{structpeoSynchronousMultiStart_1_1DataType}}{} +\end{CompactList} +\item \contentsline{section}{Random\-Exploration\-Algorithm}{\pageref{structRandomExplorationAlgorithm}}{} +\item \contentsline{section}{SEND\_\-REQUEST}{\pageref{structSEND__REQUEST}}{} +\item \contentsline{section}{Thread}{\pageref{classThread}}{} +\begin{CompactList} +\item \contentsline{section}{Reactive\-Thread}{\pageref{classReactiveThread}}{} +\begin{CompactList} +\item \contentsline{section}{Communicator}{\pageref{classCommunicator}}{} +\item \contentsline{section}{Worker}{\pageref{classWorker}}{} +\end{CompactList} +\item \contentsline{section}{Runner}{\pageref{classRunner}}{} +\end{CompactList} +\item \contentsline{section}{Topology}{\pageref{classTopology}}{} +\begin{CompactList} +\item \contentsline{section}{Ring\-Topology}{\pageref{classRingTopology}}{} +\end{CompactList} +\end{CompactList} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/main.tex b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/main.tex new file mode 100644 index 000000000..fe3667dc0 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/main.tex @@ -0,0 +1,59 @@ +\hypertarget{main_intro}{}\section{intro}\label{main_intro} +Paradis\-EO is a white-box object-oriented framework dedicated to the reusable design of parallel and distributed metaheuristics (PDM). Paradis\-EO provides a broad range of features including evolutionary algorithms (EA), local searches (LS), the most common parallel and distributed models and hybridization mechanisms, etc. This high content and utility encourages its use at European level. Paradis\-EO is based on a clear conceptual separation of the solution methods from the problems they are intended to solve. This separation confers to the user a maximum code and design reuse. Furthermore, the fine-grained nature of the classes provided by the framework allow a higher flexibility compared to other frameworks. Paradis\-EO is one of the rare frameworks that provide the most common parallel and distributed models. Their implementation is portable on distributed-memory machines as well as on shared-memory multiprocessors, as it uses standard libraries such as MPI, PVM and PThreads. The models can be exploited in a transparent way, one has just to instantiate their associated provided classes. Their experimentation on the radio network design real-world application demonstrate their efficiency. + +In practice, combinatorial optimization problems are often NP-hard, CPU time-consuming, and evolve over time. Unlike exact methods, metaheuristics allow to tackle large-size problems instances by delivering satisfactory solutions in a reasonable time. Metaheuristics are general-purpose heuristics that split in two categories: evolutionary algorithms (EA) and local search methods (LS). These two families have complementary characteristics: EA allow a better exploration of the search space, while LS have the power to intensify the search in promising regions. Their hybridization allows to deliver robust and better solutions + +Although serial metaheuristics have a polynomial temporal complexity, they remain unsatisfactory for industrial problems. Parallel and distributed computing is a powerful way to deal with the performance issue of these problems. Numerous parallel and distributed metaheuristics (PDM) and their implementations have been proposed, and are available on the\-Web. They can be reused and adapted to his/her own problems. However, the user has to deeply examine the code and rewrite its problem-specific sections. The task is tedious, errorprone, takes along time and makes harder the produced code maintenance. A better way to reuse the code of existing PDM is the reuse through libraries. These are often more reliable as they are more tested and documented. They allow a better maintainability and efficiency. However, libraries do not allow the reuse of design.\hypertarget{main_parallel_metaheuristics}{}\section{Parallel and distributed metaheuristics}\label{main_parallel_metaheuristics} +\hypertarget{main_parallel_distributed}{}\subsection{Parallel distributed evolutionary algorithms}\label{main_parallel_distributed} +Evolutionary Algorithms (EA) are based on the iterative improvement of a population of solutions. At each step, individuals are selected, paired and recombined in order to generate new solutions that replace other ones, and so on. As the algorithm converges, the population is mainly composed of individuals well adapted to the \char`\"{}environment\char`\"{}, for instance the problem. The main features that characterize EA are the way the population is initialized, the selection strategy (deterministic/stochastic) by fostering \char`\"{}good\char`\"{} solutions, the replacement strategy that discards individuals, and the continuation/stopping criterion to decide whether the evolution should go on or not. + +Basically, three major parallel and distributed models for EA can been distinguished: the island (a)synchronous cooperative model, the parallel evaluation of the population, and the distributed evaluation of a single solution. \begin{itemize} +\item {\em Island (a)synchronous cooperative model\/}. Different EA are simultaneously deployed to cooperate for computing better and robust solutions. They exchange in an asynchronous way genetic stuff to diversify the search. The objective is to allow to delay the global convergence, especially when the\-EAare heterogeneous regarding the variation operators. The migration of individuals follows a policy defined by few parameters: the migration decision criterion, the exchange topology, the number of emigrants, the emigrants selection policy, and the replacement/integration policy. + +\item {\em Parallel evaluation of the population\/}. It is required as it is in general the most timeconsuming. The parallel evaluation follows the centralized model. The farmer applies the following operations: selection, transformation and replacement as they require a global management of the population. At each generation, it distributes the set of new solutions between differentworkers. These evaluate and return back the solutions and their quality values. An efficient execution is often obtained particularly when the evaluation of each solution is costly. The two main advantages of an asynchronous model over the synchronous model are: (1) the fault tolerance of the asynchronous model; (2) the robustness in case the fitness computation can take very different computation times (e.g. for nonlinear numerical optimization). Whereas some time-out detection can be used to address the former issue, the latter one can be partially overcome if the grain is set to very small values, as individuals will be sent out for evaluations upon request of the workers. + +\item {\em Distributed evaluation of a single solution\/}. The quality of each solution is evaluated in a parallel centralized way. That model is particularly interesting when the evaluation function can be itself parallelized as it is CPU time-consuming and/or IO intensive. In that case, the function can be viewed as an aggregation of a certain number of partial functions. The partial functions could also be identical if for example the problem to deal with is a data mining one. The evaluation is thus data parallel and the accesses to data base are performed in parallel. Furthermore, a reduction operation is performed on the results returned by the partial functions. As a summary, for this model the user has to indicate a set of partial functions and an aggregation operator of these. \end{itemize} +\hypertarget{main_parallel_ls}{}\subsection{Parallel distributed local searches}\label{main_parallel_ls} +\hypertarget{main_local_searches}{}\subsubsection{Local searches}\label{main_local_searches} +All metaheuristics dedicated to the improvement of a single solution are based on the concept of neighborhood. They start from a solution randomly generated or obtained from another optimization algorithm, and update it, step by step, by replacing the current solution by one of its neighboring candidates. Some criterion have been identified to differentiate such searches: the heuristic internal memory, the choice of the initial solution, the candidate solutions generator, and the selection strategy of candidate moves. Three main algorithms of local search stand out: Hill Climbing (HC), Simulated Annealing (SA) and Tabu Search (TS).\hypertarget{main_parallel_local_searches}{}\subsubsection{Parallel local searches}\label{main_parallel_local_searches} +Two parallel distributed models are commonly used in the literature: the parallel distributed exploration of neighboring candidate solutions model, and the multi-start model. \begin{itemize} +\item {\em Parallel exploration of neighboring candidates\/}. It is a low-level Farmer-Worker model that does not alter the behavior of the heuristic. A sequential search computes the same results slower.At the beginning of each iteration, the farmer duplicates the current solution between distributed nodes. Each one manages some candidates and the results are returned to the farmer. The model is efficient if the evaluation of a each solution is time-consuming and/or there are a great deal of candidate neighbors to evaluate. This is obviously not applicable to SA since only one candidate is evaluated at each iteration. Likewise, the efficiency of the model for HC is not always guaranteed as the number of neighboring solutions to process before finding one that improves the current objective function may be highly variable. + +\item {\em Multi-start model\/}. It consists in simultaneously launching several local searches. They may be heterogeneous, but no information is exchanged between them. The resultswould be identical as if the algorithms were sequentially run.Very often deterministic algorithms differ by the supplied initial solution and/or some other parameters. This trivial model is convenient for low-speed networks of workstations. \end{itemize} +\hypertarget{main_hybridization}{}\section{Hybridization}\label{main_hybridization} +Recently, hybrid metaheuristics have gained a considerable interest. For many practical or academic optimization problems, the best found solutions are obtained by hybrid algorithms. Combinations of different metaheuristics have provided very powerful search methods. Two levels and two modes of hybridization have been distinguished: Low and High levels, and Relay and \hyperlink{classCooperative}{Cooperative} modes. The low-level hybridization addresses the functional composition of a single optimization method. A function of a given metaheuristic is replaced by another metaheuristic. On the contrary, for high-level hybrid algorithms the different metaheuristics are self-containing, meaning no direct relationship to their internal working is considered. On the other hand, relay hybridization means a set of metaheuristics is applied in a pipeline way. The output of a metaheuristic (except the last) is the input of the following one (except the first). Conversely, co-evolutionist hybridization is a cooperative optimization model. Each metaheuristic performs a search in a solution space, and exchange solutions with others.\hypertarget{main_paradiseo_goals}{}\section{Paradiseo goals and architecture}\label{main_paradiseo_goals} +The \char`\"{}EO\char`\"{} part of Paradis\-EO means Evolving Objects. \doxyref{EO} is a C++ LGPL open source framework and includes a paradigm-free Evolutionary Computation library (EOlib) dedicated to the flexible design of EA through evolving objects superseding the most common dialects (Genetic Algorithms, Evolution Strategies, Evolutionary Programming and Genetic Programming). Furthermore, \doxyref{EO} integrates several services including visualization facilities, on-line definition of parameters, application check-pointing, etc. Paradis\-EO is an extended version of the \doxyref{EO} framework. The extensions include local search methods, hybridization mechanisms, parallelism and distribution mechanisms, and other features that are not addressed in this paper such as multi-objective optimization and grid computing. In the next sections, we present the motivations and goals of Paradis\-EO, its architecture and some of its main implementation details and issues.\hypertarget{main_motivation}{}\subsection{Motivations and goals}\label{main_motivation} +A framework is normally intended to be exploited by as many users as possible. Therefore, its exploitation could be successful only if some important user criteria are satisfied. The following criteria are the major of them and constitute the main objectives of the Paradis\-EO framework: + +\begin{itemize} +\item {\em Maximum design and code reuse\/}. The framework must provide for the user a whole architecture design of his/her solution method. Moreover, the programmer may redo as little code as possible. This objective requires a clear and maximal conceptual separation between the solution methods and the problems to be solved, and thus a deep domain analysis. The user might therefore develop only the minimal problem-specific code. + +\item {\em Flexibility and adaptability\/}. It must be possible for the user to easily add new features/ metaheuristics or change existing ones without implicating other components. Furthermore, as in practice existing problems evolve and new others arise these have to be tackled by specializing/adapting the framework components. + +\item {\em Utility\/}. The framework must allow the user to cover a broad range of metaheuristics, problems, parallel distributed models, hybridization mechanisms, etc. + +\item {\em Transparent and easy access to performance and robustness\/}. As the optimization applications are often time-consuming the performance issue is crucial. Parallelism and distribution are two important ways to achieve high performance execution. In order to facilitate its use it is implemented so that the user can deploy his/her parallel algorithms in a transparent manner. Moreover, the execution of the algorithms must be robust to guarantee the reliability and the quality of the results. The hybridization mechanism allows to obtain robust and better solutions. + +\item {\em Portability\/}. In order to satisfy a large number of users the framework must support different material architectures and their associated operating systems. \end{itemize} +\hypertarget{main_architecture}{}\subsection{Paradis\-EO architecture}\label{main_architecture} +The architecture of Paradis\-EO is multi-layer and modular allowing to achieve the objectives quoted above. This allows particularly a high flexibility and adaptability, an easier hybridization, and more code and design reuse. The architecture has three layers identifying three major categories of classes: {\em Solvers\/}, {\em Runners\/} and {\em Helpers\/}. \begin{itemize} +\item {\em Helpers\/}. Helpers are low-level classes that perform specific actions related to the evolution or search process. They are split in two categories: {\em Evolutionary helpers (EH)\/} and {\em Local search helpers (LSH)\/}. EH include mainly the transformation, selection and replacement operations, the evaluation function and the stopping criterion. LSH can be generic such as the neighborhood explorer class, or specific to the local search metaheuristic like the tabu list manager class in the Tabu Search solution method. On the other hand, there are some special helpers dedicated to the management of parallel and distributed models 2 and 3, such as the communicators that embody the communication services. + +Helpers cooperate between them and interact with the components of the upper layer i.e. the runners. The runners invoke the helpers through function parameters. Indeed, helpers have not their own data, but they work on the internal data of the runners. + +\item {\em Runners\/}. The Runners layer contains a set of classes that implement the metaheuristics themselves. They perform the run of the metaheuristics from the initial state or population to the final one. One can distinguish the {\em Evolutionary runners (ER)\/} such as genetic algorithms, evolution strategies, etc., and {\em Local search runners (LSR)\/} like tabu search, simulated annealing and hill climbing. Runners invoke the helpers to perform specific actions on their data. For instance, an ER may ask the fitness function evaluation helper to evaluate its population. An LSR asks the movement helper to perform a given movement on the current state. Furthermore, runners can be serial or parallel distributed. + +\item {\em Solvers\/}. Solvers are devoted to control the evolution process and/or the search. They generate the initial state (solution or population) and define the strategy for combining and sequencing different metaheuristics. Two types of solvers can be distinguished. {\em Single metaheuristic solvers (SMS)\/} and {\em Multiple metaheuristics solvers (MMS)\/}. SMSs are dedicated to the execution of only one metaheuristic.MMS are more complex as they control and sequence several metaheuristics that can be heterogeneous. Solvers interact with the user by getting the input data and delivering the output (best solution, statistics, etc). \end{itemize} + + +According to the generality of their embedded features, the classes of the architecture split in two major categories: {\em Provided classes\/} and {\em Required classes\/}. Provided classes embody the factored out part of the metaheuristics. They are generic, implemented in the framework, and ensure the control at run time. Required classes are those that must be supplied by the user. They encapsulate the problem-specific aspects of the application. These classes are fixed but not implemented in Paradis\-EO. The programmer has the burden to develop them using the OO specialization mechanism.\hypertarget{main_tutorials}{}\section{Paradis\-EO-PEO Tutorials}\label{main_tutorials} +The basisc of the Paradis\-EO framework philosophy are exposed in a few simple tutorials: \begin{itemize} +\item \href{lesson1/html/main.html}{\tt creating a simple Paradis\-EO evolutionary algorithm}; \end{itemize} +All the presented examples have as case study the traveling salesman problem (TSP). Different operators and auxiliary objects were designed, standing as a \href{lsnshared/html/index.html}{\tt common shared source code base}. While not being part of the Paradis\-EO-PEO framework, it may represent a startpoint for a better understanding of the presented tutorials.\hypertarget{main_LICENCE}{}\section{LICENCE}\label{main_LICENCE} +This software is governed by the Ce\-CILL license under French law and abiding by the rules of distribution of free software. You can use, modify and/ or redistribute the software under the terms of the Ce\-CILL license as circulated by CEA, CNRS and INRIA at the following URL \char`\"{}http://www.cecill.info\char`\"{}. + +As a counterpart to the access to the source code and rights to copy, modify and redistribute granted by the license, users are provided only with a limited warranty and the software's author, the holder of the economic rights, and the successive licensors have only limited liability. + +In this respect, the user's attention is drawn to the risks associated with loading, using, modifying and/or developing or reproducing the software by the user in light of its specific status of free software, that may mean that it is complicated to manipulate, and that also therefore means that it is reserved for developers and experienced professionals having in-depth computer knowledge. Users are therefore encouraged to load and test the software's suitability as regards their requirements in conditions enabling the security of their systems and/or data to be ensured and, more generally, to use and operate it in the same conditions as regards security. The fact that you are presently reading this means that you have had knowledge of the Ce\-CILL license and that you accept its terms. + +Paradis\-EO Web\-Site : \href{http://paradiseo.gforge.inria.fr}\tt{http://paradiseo.gforge.inria.fr} Contact: \href{mailto:paradiseo-help@lists.gforge.inria.fr}\tt{paradiseo-help@lists.gforge.inria.fr} \ No newline at end of file diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/namespacepeo.tex b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/namespacepeo.tex new file mode 100644 index 000000000..ee1f78ba8 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/namespacepeo.tex @@ -0,0 +1,52 @@ +\hypertarget{namespacepeo}{ +\section{peo Namespace Reference} +\label{namespacepeo}\index{peo@{peo}} +} + + +\subsection*{Functions} +\begin{CompactItemize} +\item +\hypertarget{namespacepeo_f90478489cc92d1e6abb222179163a30}{ +void \hyperlink{namespacepeo_f90478489cc92d1e6abb222179163a30}{finalize} ()} +\label{namespacepeo_f90478489cc92d1e6abb222179163a30} + +\item +\hypertarget{namespacepeo_8184c3b1f7eecc68f69bb8e8b872a7d3}{ +void \hyperlink{namespacepeo_8184c3b1f7eecc68f69bb8e8b872a7d3}{init} (int \&\_\-\_\-argc, char $\ast$$\ast$\&\_\-\_\-argv)} +\label{namespacepeo_8184c3b1f7eecc68f69bb8e8b872a7d3} + +\item +\hypertarget{namespacepeo_2b496ee9b81d9ae322ae6edb9a93dc71}{ +void \hyperlink{namespacepeo_2b496ee9b81d9ae322ae6edb9a93dc71}{load\-Parameters} (int \&\_\-\_\-argc, char $\ast$$\ast$\&\_\-\_\-argv)} +\label{namespacepeo_2b496ee9b81d9ae322ae6edb9a93dc71} + +\item +\hypertarget{namespacepeo_10819b2d60b37477c6a89b60c595c67c}{ +void \hyperlink{namespacepeo_10819b2d60b37477c6a89b60c595c67c}{run} ()} +\label{namespacepeo_10819b2d60b37477c6a89b60c595c67c} + +\end{CompactItemize} +\subsection*{Variables} +\begin{CompactItemize} +\item +\hypertarget{namespacepeo_18a3998ce8b39c4e1143914fdd07b3d2}{ +int $\ast$ \hyperlink{namespacepeo_18a3998ce8b39c4e1143914fdd07b3d2}{argc}} +\label{namespacepeo_18a3998ce8b39c4e1143914fdd07b3d2} + +\item +\hypertarget{namespacepeo_d07043237d4d923125e38860ba9bbe20}{ +char $\ast$$\ast$$\ast$ \hyperlink{namespacepeo_d07043237d4d923125e38860ba9bbe20}{argv}} +\label{namespacepeo_d07043237d4d923125e38860ba9bbe20} + +\item +\hypertarget{namespacepeo_18a3998ce8b39c4e1143914fdd07b3d2}{ +int $\ast$ \hyperlink{namespacepeo_18a3998ce8b39c4e1143914fdd07b3d2}{argc}} +\label{namespacepeo_18a3998ce8b39c4e1143914fdd07b3d2} + +\item +\hypertarget{namespacepeo_d07043237d4d923125e38860ba9bbe20}{ +char $\ast$$\ast$$\ast$ \hyperlink{namespacepeo_d07043237d4d923125e38860ba9bbe20}{argv}} +\label{namespacepeo_d07043237d4d923125e38860ba9bbe20} + +\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/namespaces.tex b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/namespaces.tex new file mode 100644 index 000000000..c69deee37 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/namespaces.tex @@ -0,0 +1,4 @@ +\section{Paradis\-EO-PEOMoving\-Objects Namespace List} +Here is a list of all documented namespaces with brief descriptions:\begin{CompactList} +\item\contentsline{section}{\hyperlink{namespacepeo}{peo} }{\pageref{namespacepeo}}{} +\end{CompactList} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/refman.tex b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/refman.tex new file mode 100644 index 000000000..e2e595b18 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/refman.tex @@ -0,0 +1,96 @@ +\documentclass[a4paper]{book} +\usepackage{a4wide} +\usepackage{makeidx} +\usepackage{fancyhdr} +\usepackage{graphicx} +\usepackage{multicol} +\usepackage{float} +\usepackage{textcomp} +\usepackage{alltt} +\usepackage{times} +\usepackage{ifpdf} +\ifpdf +\usepackage[pdftex, + pagebackref=true, + colorlinks=true, + linkcolor=blue + ]{hyperref} +\else +\usepackage[ps2pdf, + pagebackref=true, + colorlinks=true, + linkcolor=blue + ]{hyperref} +\usepackage{pspicture} +\fi +\usepackage{doxygen} +\makeindex +\setcounter{tocdepth}{1} +\renewcommand{\footrulewidth}{0.4pt} +\begin{document} +\begin{titlepage} +\vspace*{7cm} +\begin{center} +{\Large Paradis\-EO-PEOMoving\-Objects Reference Manual\\[1ex]\large 1.0 }\\ +\vspace*{1cm} +{\large Generated by Doxygen 1.4.7}\\ +\vspace*{0.5cm} +{\small Mon Oct 8 11:16:45 2007}\\ +\end{center} +\end{titlepage} +\clearemptydoublepage +\pagenumbering{roman} +\tableofcontents +\clearemptydoublepage +\pagenumbering{arabic} +\chapter{The Paradis\-EO-PEO Framework } +\label{index}\hypertarget{index}{}\input{main} +\chapter{Paradis\-EO-PEOMoving\-Objects Namespace Index} +\input{namespaces} +\chapter{Paradis\-EO-PEOMoving\-Objects Hierarchical Index} +\input{hierarchy} +\chapter{Paradis\-EO-PEOMoving\-Objects Class Index} +\input{annotated} +\chapter{Paradis\-EO-PEOMoving\-Objects Namespace Documentation} +\input{namespacepeo} +\chapter{Paradis\-EO-PEOMoving\-Objects Class Documentation} +\input{classCommunicable} +\include{classCommunicator} +\include{classCooperative} +\include{classDisplayBestRoute} +\include{classMergeRouteEval} +\include{classpeoAggEvalFunc} +\include{classpeoAsyncIslandMig} +\include{classpeoEA} +\include{classpeoNoAggEvalFunc} +\include{classpeoParallelAlgorithmWrapper} +\include{structpeoParallelAlgorithmWrapper_1_1AbstractAlgorithm} +\include{structpeoParallelAlgorithmWrapper_1_1Algorithm} +\include{structpeoParallelAlgorithmWrapper_1_1Algorithm_3_01AlgorithmType_00_01void_01_4} +\include{classpeoParaPopEval} +\include{classpeoParaSGATransform} +\include{classpeoPopEval} +\include{classpeoSeqPopEval} +\include{classpeoSeqTransform} +\include{classpeoSynchronousMultiStart} +\include{structpeoSynchronousMultiStart_1_1AbstractAggregationAlgorithm} +\include{structpeoSynchronousMultiStart_1_1AbstractAlgorithm} +\include{structpeoSynchronousMultiStart_1_1AbstractDataType} +\include{structpeoSynchronousMultiStart_1_1AggregationAlgorithm} +\include{structpeoSynchronousMultiStart_1_1Algorithm} +\include{structpeoSynchronousMultiStart_1_1DataType} +\include{structpeoSynchronousMultiStart_1_1NoAggregationFunction} +\include{classpeoSyncIslandMig} +\include{classpeoSyncMultiStart} +\include{classpeoTransform} +\include{structRandomExplorationAlgorithm} +\include{classReactiveThread} +\include{classRingTopology} +\include{classRunner} +\include{structSEND__REQUEST} +\include{classService} +\include{classThread} +\include{classTopology} +\include{classWorker} +\printindex +\end{document} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structRandomExplorationAlgorithm.tex b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structRandomExplorationAlgorithm.tex new file mode 100644 index 000000000..73b474c3a --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structRandomExplorationAlgorithm.tex @@ -0,0 +1,42 @@ +\hypertarget{structRandomExplorationAlgorithm}{ +\section{Random\-Exploration\-Algorithm Struct Reference} +\label{structRandomExplorationAlgorithm}\index{RandomExplorationAlgorithm@{RandomExplorationAlgorithm}} +} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{structRandomExplorationAlgorithm_ed4847c164759fbb1168948d3620037c}{ +\hyperlink{structRandomExplorationAlgorithm_ed4847c164759fbb1168948d3620037c}{Random\-Exploration\-Algorithm} (\hyperlink{classpeoPopEval}{peo\-Pop\-Eval}$<$ \bf{Route} $>$ \&\_\-\_\-pop\-Eval, \hyperlink{classpeoSynchronousMultiStart}{peo\-Synchronous\-Multi\-Start}$<$ \bf{Route} $>$ \&ext\-Parallel\-Execution)} +\label{structRandomExplorationAlgorithm_ed4847c164759fbb1168948d3620037c} + +\item +\hypertarget{structRandomExplorationAlgorithm_3a7b3cc174726fff45985854c3d1b812}{ +void \hyperlink{structRandomExplorationAlgorithm_3a7b3cc174726fff45985854c3d1b812}{operator()} ()} +\label{structRandomExplorationAlgorithm_3a7b3cc174726fff45985854c3d1b812} + +\end{CompactItemize} +\subsection*{Public Attributes} +\begin{CompactItemize} +\item +\hypertarget{structRandomExplorationAlgorithm_e9fbab7402f290c62224cedebd9de0a4}{ +\hyperlink{classpeoPopEval}{peo\-Pop\-Eval}$<$ \bf{Route} $>$ \& \hyperlink{structRandomExplorationAlgorithm_e9fbab7402f290c62224cedebd9de0a4}{pop\-Eval}} +\label{structRandomExplorationAlgorithm_e9fbab7402f290c62224cedebd9de0a4} + +\item +\hypertarget{structRandomExplorationAlgorithm_e36e837e956772738773364cd71201de}{ +\hyperlink{classpeoSynchronousMultiStart}{peo\-Synchronous\-Multi\-Start}$<$ \bf{Route} $>$ \& \hyperlink{structRandomExplorationAlgorithm_e36e837e956772738773364cd71201de}{parallel\-Execution}} +\label{structRandomExplorationAlgorithm_e36e837e956772738773364cd71201de} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 56 of file Lesson\-Parallel\-Algorithm/main.cpp. + +The documentation for this struct was generated from the following file:\begin{CompactItemize} +\item +Lesson\-Parallel\-Algorithm/main.cpp\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structSEND__REQUEST.tex b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structSEND__REQUEST.tex new file mode 100644 index 000000000..7b319bcac --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structSEND__REQUEST.tex @@ -0,0 +1,34 @@ +\hypertarget{structSEND__REQUEST}{ +\section{SEND\_\-REQUEST Struct Reference} +\label{structSEND__REQUEST}\index{SEND_REQUEST@{SEND\_\-REQUEST}} +} +\subsection*{Public Attributes} +\begin{CompactItemize} +\item +\hypertarget{structSEND__REQUEST_1ad8f7233fa3ff13262e783a9153920f}{ +\hyperlink{classCommunicable}{Communicable} $\ast$ \hyperlink{structSEND__REQUEST_1ad8f7233fa3ff13262e783a9153920f}{comm}} +\label{structSEND__REQUEST_1ad8f7233fa3ff13262e783a9153920f} + +\item +\hypertarget{structSEND__REQUEST_93e2a6a71d2a91aa2b7bdd050ee59b4d}{ +int \hyperlink{structSEND__REQUEST_93e2a6a71d2a91aa2b7bdd050ee59b4d}{to}} +\label{structSEND__REQUEST_93e2a6a71d2a91aa2b7bdd050ee59b4d} + +\item +\hypertarget{structSEND__REQUEST_3126b3ef9d6533d3086760e413a7f23f}{ +int \hyperlink{structSEND__REQUEST_3126b3ef9d6533d3086760e413a7f23f}{tag}} +\label{structSEND__REQUEST_3126b3ef9d6533d3086760e413a7f23f} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 52 of file send.cpp. + +The documentation for this struct was generated from the following file:\begin{CompactItemize} +\item +send.cpp\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoParallelAlgorithmWrapper_1_1AbstractAlgorithm.eps b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoParallelAlgorithmWrapper_1_1AbstractAlgorithm.eps new file mode 100644 index 000000000..c20f6ccc6 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoParallelAlgorithmWrapper_1_1AbstractAlgorithm.eps @@ -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 42.9185 +%%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 11.65 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 +(peoParallelAlgorithmWrapper::AbstractAlgorithm) cw +(peoParallelAlgorithmWrapper::Algorithm< AlgorithmType, AlgorithmDataType >) cw +(peoParallelAlgorithmWrapper::Algorithm< AlgorithmType, void >) 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 ----- + + (peoParallelAlgorithmWrapper::AbstractAlgorithm) 0.5 1 box + (peoParallelAlgorithmWrapper::Algorithm< AlgorithmType, AlgorithmDataType >) 0 0 box + (peoParallelAlgorithmWrapper::Algorithm< AlgorithmType, void >) 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 diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoParallelAlgorithmWrapper_1_1AbstractAlgorithm.pdf b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoParallelAlgorithmWrapper_1_1AbstractAlgorithm.pdf new file mode 100644 index 000000000..b76ae706b --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoParallelAlgorithmWrapper_1_1AbstractAlgorithm.pdf @@ -0,0 +1,73 @@ +%PDF-1.3 +%쏢 +5 0 obj +<> +stream +xMK@+"f?ūՀZIhM (JX&33fB>敺xp(jx@ +yp(bYC:Wdv 5 :}deYrjkdu]4y6Y'雺MLY$aak/MC譋X6wN5[`P8.ο7Yu\ ݬ8}_-_I;W(n#Hщ'@QFr$Cx@ܱ21?cCrGJjz85dԨVO'ʺxendstream +endobj +6 0 obj +309 +endobj +4 0 obj +<> +/Contents 5 0 R +>> +endobj +3 0 obj +<< /Type /Pages /Kids [ +4 0 R +] /Count 1 +>> +endobj +1 0 obj +<> +endobj +7 0 obj +<>endobj +9 0 obj +<> +endobj +10 0 obj +<> +endobj +8 0 obj +<> +endobj +2 0 obj +<>endobj +xref +0 11 +0000000000 65535 f +0000000624 00000 n +0000000838 00000 n +0000000565 00000 n +0000000413 00000 n +0000000015 00000 n +0000000394 00000 n +0000000672 00000 n +0000000772 00000 n +0000000713 00000 n +0000000742 00000 n +trailer +<< /Size 11 /Root 1 0 R /Info 2 0 R +/ID [(Z&)(Z&)] +>> +startxref +995 +%%EOF diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoParallelAlgorithmWrapper_1_1AbstractAlgorithm.tex b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoParallelAlgorithmWrapper_1_1AbstractAlgorithm.tex new file mode 100644 index 000000000..c6241f877 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoParallelAlgorithmWrapper_1_1AbstractAlgorithm.tex @@ -0,0 +1,35 @@ +\hypertarget{structpeoParallelAlgorithmWrapper_1_1AbstractAlgorithm}{ +\section{peo\-Parallel\-Algorithm\-Wrapper::Abstract\-Algorithm Struct Reference} +\label{structpeoParallelAlgorithmWrapper_1_1AbstractAlgorithm}\index{peoParallelAlgorithmWrapper::AbstractAlgorithm@{peoParallelAlgorithmWrapper::AbstractAlgorithm}} +} +Inheritance diagram for peo\-Parallel\-Algorithm\-Wrapper::Abstract\-Algorithm::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=1.20172cm]{structpeoParallelAlgorithmWrapper_1_1AbstractAlgorithm} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{structpeoParallelAlgorithmWrapper_1_1AbstractAlgorithm_af530b7731cb212f8dd74e5a57484a9e}{ +virtual \hyperlink{structpeoParallelAlgorithmWrapper_1_1AbstractAlgorithm_af530b7731cb212f8dd74e5a57484a9e}{$\sim$Abstract\-Algorithm} ()} +\label{structpeoParallelAlgorithmWrapper_1_1AbstractAlgorithm_af530b7731cb212f8dd74e5a57484a9e} + +\item +\hypertarget{structpeoParallelAlgorithmWrapper_1_1AbstractAlgorithm_32e08b3810cef49d0b8751645ef79b6f}{ +virtual void \hyperlink{structpeoParallelAlgorithmWrapper_1_1AbstractAlgorithm_32e08b3810cef49d0b8751645ef79b6f}{operator()} ()} +\label{structpeoParallelAlgorithmWrapper_1_1AbstractAlgorithm_32e08b3810cef49d0b8751645ef79b6f} + +\end{CompactItemize} + + +\subsection{Detailed Description} + + + + +Definition at line 71 of file peo\-Parallel\-Algorithm\-Wrapper.h. + +The documentation for this struct was generated from the following file:\begin{CompactItemize} +\item +peo\-Parallel\-Algorithm\-Wrapper.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoParallelAlgorithmWrapper_1_1Algorithm.eps b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoParallelAlgorithmWrapper_1_1Algorithm.eps new file mode 100644 index 000000000..5950e1a42 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoParallelAlgorithmWrapper_1_1Algorithm.eps @@ -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 85.8369 +%%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.825 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 +(peoParallelAlgorithmWrapper::Algorithm< AlgorithmType, AlgorithmDataType >) cw +(peoParallelAlgorithmWrapper::AbstractAlgorithm) 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 ----- + + (peoParallelAlgorithmWrapper::Algorithm< AlgorithmType, AlgorithmDataType >) 0 0 box + (peoParallelAlgorithmWrapper::AbstractAlgorithm) 0 1 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoParallelAlgorithmWrapper_1_1Algorithm.pdf b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoParallelAlgorithmWrapper_1_1Algorithm.pdf new file mode 100644 index 000000000..9e9621cbb Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoParallelAlgorithmWrapper_1_1Algorithm.pdf differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoParallelAlgorithmWrapper_1_1Algorithm.tex b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoParallelAlgorithmWrapper_1_1Algorithm.tex new file mode 100644 index 000000000..afe682d32 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoParallelAlgorithmWrapper_1_1Algorithm.tex @@ -0,0 +1,50 @@ +\hypertarget{structpeoParallelAlgorithmWrapper_1_1Algorithm}{ +\section{peo\-Parallel\-Algorithm\-Wrapper::Algorithm$<$ Algorithm\-Type, Algorithm\-Data\-Type $>$ Struct Template Reference} +\label{structpeoParallelAlgorithmWrapper_1_1Algorithm}\index{peoParallelAlgorithmWrapper::Algorithm@{peoParallelAlgorithmWrapper::Algorithm}} +} +Inheritance diagram for peo\-Parallel\-Algorithm\-Wrapper::Algorithm$<$ Algorithm\-Type, Algorithm\-Data\-Type $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{structpeoParallelAlgorithmWrapper_1_1Algorithm} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{structpeoParallelAlgorithmWrapper_1_1Algorithm_bdd2048610a35f525d7cef9a9041caba}{ +\hyperlink{structpeoParallelAlgorithmWrapper_1_1Algorithm_bdd2048610a35f525d7cef9a9041caba}{Algorithm} (Algorithm\-Type \&external\-Algorithm, Algorithm\-Data\-Type \&external\-Data)} +\label{structpeoParallelAlgorithmWrapper_1_1Algorithm_bdd2048610a35f525d7cef9a9041caba} + +\item +\hypertarget{structpeoParallelAlgorithmWrapper_1_1Algorithm_a54fa5366a7663491608399ab21ea092}{ +virtual void \hyperlink{structpeoParallelAlgorithmWrapper_1_1Algorithm_a54fa5366a7663491608399ab21ea092}{operator()} ()} +\label{structpeoParallelAlgorithmWrapper_1_1Algorithm_a54fa5366a7663491608399ab21ea092} + +\end{CompactItemize} +\subsection*{Public Attributes} +\begin{CompactItemize} +\item +\hypertarget{structpeoParallelAlgorithmWrapper_1_1Algorithm_91681bf54649f58335c181515a92db7a}{ +Algorithm\-Type \& \hyperlink{structpeoParallelAlgorithmWrapper_1_1Algorithm_91681bf54649f58335c181515a92db7a}{algorithm}} +\label{structpeoParallelAlgorithmWrapper_1_1Algorithm_91681bf54649f58335c181515a92db7a} + +\item +\hypertarget{structpeoParallelAlgorithmWrapper_1_1Algorithm_e812277c85c5b6884d2019849e7eabde}{ +Algorithm\-Data\-Type \& \hyperlink{structpeoParallelAlgorithmWrapper_1_1Algorithm_e812277c85c5b6884d2019849e7eabde}{algorithm\-Data}} +\label{structpeoParallelAlgorithmWrapper_1_1Algorithm_e812277c85c5b6884d2019849e7eabde} + +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename Algorithm\-Type, typename Algorithm\-Data\-Type$>$ struct peo\-Parallel\-Algorithm\-Wrapper::Algorithm$<$ Algorithm\-Type, Algorithm\-Data\-Type $>$} + + + + + +Definition at line 81 of file peo\-Parallel\-Algorithm\-Wrapper.h. + +The documentation for this struct was generated from the following file:\begin{CompactItemize} +\item +peo\-Parallel\-Algorithm\-Wrapper.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoParallelAlgorithmWrapper_1_1Algorithm_3_01AlgorithmType_00_01void_01_4.eps b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoParallelAlgorithmWrapper_1_1Algorithm_3_01AlgorithmType_00_01void_01_4.eps new file mode 100644 index 000000000..6c358548e --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoParallelAlgorithmWrapper_1_1Algorithm_3_01AlgorithmType_00_01void_01_4.eps @@ -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 104.439 +%%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 4.7875 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 +(peoParallelAlgorithmWrapper::Algorithm< AlgorithmType, void >) cw +(peoParallelAlgorithmWrapper::AbstractAlgorithm) 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 ----- + + (peoParallelAlgorithmWrapper::Algorithm< AlgorithmType, void >) 0 0 box + (peoParallelAlgorithmWrapper::AbstractAlgorithm) 0 1 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoParallelAlgorithmWrapper_1_1Algorithm_3_01AlgorithmType_00_01void_01_4.pdf b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoParallelAlgorithmWrapper_1_1Algorithm_3_01AlgorithmType_00_01void_01_4.pdf new file mode 100644 index 000000000..262887441 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoParallelAlgorithmWrapper_1_1Algorithm_3_01AlgorithmType_00_01void_01_4.pdf @@ -0,0 +1,74 @@ +%PDF-1.3 +%쏢 +5 0 obj +<> +stream +x[K0ẈI:eAA|n-ީ-BsNfd4ikţz +dְy);-5.kt['Yb1N/RѶU{}jƷ9PjQ.qƯ:Ǐyū@3k4~JnR +Md`V NQftvLE9.&,Grm=ya+#au/L12d3'Q*5g '0vendstream +endobj +6 0 obj +253 +endobj +4 0 obj +<> +/Contents 5 0 R +>> +endobj +3 0 obj +<< /Type /Pages /Kids [ +4 0 R +] /Count 1 +>> +endobj +1 0 obj +<> +endobj +7 0 obj +<>endobj +9 0 obj +<> +endobj +10 0 obj +<> +endobj +8 0 obj +<> +endobj +2 0 obj +<>endobj +xref +0 11 +0000000000 65535 f +0000000569 00000 n +0000000783 00000 n +0000000510 00000 n +0000000357 00000 n +0000000015 00000 n +0000000338 00000 n +0000000617 00000 n +0000000717 00000 n +0000000658 00000 n +0000000687 00000 n +trailer +<< /Size 11 /Root 1 0 R /Info 2 0 R +/ID [(}EqjYjv\n)(}EqjYjv\n)] +>> +startxref +940 +%%EOF diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoParallelAlgorithmWrapper_1_1Algorithm_3_01AlgorithmType_00_01void_01_4.tex b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoParallelAlgorithmWrapper_1_1Algorithm_3_01AlgorithmType_00_01void_01_4.tex new file mode 100644 index 000000000..6653f0f9d --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoParallelAlgorithmWrapper_1_1Algorithm_3_01AlgorithmType_00_01void_01_4.tex @@ -0,0 +1,45 @@ +\hypertarget{structpeoParallelAlgorithmWrapper_1_1Algorithm_3_01AlgorithmType_00_01void_01_4}{ +\section{peo\-Parallel\-Algorithm\-Wrapper::Algorithm$<$ Algorithm\-Type, void $>$ Struct Template Reference} +\label{structpeoParallelAlgorithmWrapper_1_1Algorithm_3_01AlgorithmType_00_01void_01_4}\index{peoParallelAlgorithmWrapper::Algorithm< AlgorithmType, void >@{peoParallelAlgorithmWrapper::Algorithm$<$ AlgorithmType, void $>$}} +} +Inheritance diagram for peo\-Parallel\-Algorithm\-Wrapper::Algorithm$<$ Algorithm\-Type, void $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{structpeoParallelAlgorithmWrapper_1_1Algorithm_3_01AlgorithmType_00_01void_01_4} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{structpeoParallelAlgorithmWrapper_1_1Algorithm_3_01AlgorithmType_00_01void_01_4_c44d45b69accab079e1fb30d7ddf6b4e}{ +\hyperlink{structpeoParallelAlgorithmWrapper_1_1Algorithm_3_01AlgorithmType_00_01void_01_4_c44d45b69accab079e1fb30d7ddf6b4e}{Algorithm} (Algorithm\-Type \&external\-Algorithm)} +\label{structpeoParallelAlgorithmWrapper_1_1Algorithm_3_01AlgorithmType_00_01void_01_4_c44d45b69accab079e1fb30d7ddf6b4e} + +\item +\hypertarget{structpeoParallelAlgorithmWrapper_1_1Algorithm_3_01AlgorithmType_00_01void_01_4_27b5bd346932e7f3ba9dd8c9e0dd952b}{ +virtual void \hyperlink{structpeoParallelAlgorithmWrapper_1_1Algorithm_3_01AlgorithmType_00_01void_01_4_27b5bd346932e7f3ba9dd8c9e0dd952b}{operator()} ()} +\label{structpeoParallelAlgorithmWrapper_1_1Algorithm_3_01AlgorithmType_00_01void_01_4_27b5bd346932e7f3ba9dd8c9e0dd952b} + +\end{CompactItemize} +\subsection*{Public Attributes} +\begin{CompactItemize} +\item +\hypertarget{structpeoParallelAlgorithmWrapper_1_1Algorithm_3_01AlgorithmType_00_01void_01_4_7dcb305dd8c78ffac232bd86b913183d}{ +Algorithm\-Type \& \hyperlink{structpeoParallelAlgorithmWrapper_1_1Algorithm_3_01AlgorithmType_00_01void_01_4_7dcb305dd8c78ffac232bd86b913183d}{algorithm}} +\label{structpeoParallelAlgorithmWrapper_1_1Algorithm_3_01AlgorithmType_00_01void_01_4_7dcb305dd8c78ffac232bd86b913183d} + +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename Algorithm\-Type$>$ struct peo\-Parallel\-Algorithm\-Wrapper::Algorithm$<$ Algorithm\-Type, void $>$} + + + + + +Definition at line 95 of file peo\-Parallel\-Algorithm\-Wrapper.h. + +The documentation for this struct was generated from the following file:\begin{CompactItemize} +\item +peo\-Parallel\-Algorithm\-Wrapper.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1AbstractAggregationAlgorithm.eps b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1AbstractAggregationAlgorithm.eps new file mode 100644 index 000000000..62a992443 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1AbstractAggregationAlgorithm.eps @@ -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 36.1011 +%%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 13.85 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 +(peoSynchronousMultiStart< EntityType >::AbstractAggregationAlgorithm) cw +(peoSynchronousMultiStart< EntityType >::AggregationAlgorithm< AggregationAlgorithmType >) cw +(peoSynchronousMultiStart< EntityType >::NoAggregationFunction) 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 ----- + + (peoSynchronousMultiStart< EntityType >::AbstractAggregationAlgorithm) 0.5 1 box + (peoSynchronousMultiStart< EntityType >::AggregationAlgorithm< AggregationAlgorithmType >) 0 0 box + (peoSynchronousMultiStart< EntityType >::NoAggregationFunction) 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 diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1AbstractAggregationAlgorithm.pdf b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1AbstractAggregationAlgorithm.pdf new file mode 100644 index 000000000..95a6fa637 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1AbstractAggregationAlgorithm.pdf differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1AbstractAggregationAlgorithm.tex b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1AbstractAggregationAlgorithm.tex new file mode 100644 index 000000000..d232dea56 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1AbstractAggregationAlgorithm.tex @@ -0,0 +1,37 @@ +\hypertarget{structpeoSynchronousMultiStart_1_1AbstractAggregationAlgorithm}{ +\section{peo\-Synchronous\-Multi\-Start$<$ Entity\-Type $>$::Abstract\-Aggregation\-Algorithm Struct Reference} +\label{structpeoSynchronousMultiStart_1_1AbstractAggregationAlgorithm}\index{peoSynchronousMultiStart::AbstractAggregationAlgorithm@{peoSynchronousMultiStart::AbstractAggregationAlgorithm}} +} +Inheritance diagram for peo\-Synchronous\-Multi\-Start$<$ Entity\-Type $>$::Abstract\-Aggregation\-Algorithm::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=1.01083cm]{structpeoSynchronousMultiStart_1_1AbstractAggregationAlgorithm} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{structpeoSynchronousMultiStart_1_1AbstractAggregationAlgorithm_d5bb9f3712564b788bb7c6da71ef2d3f}{ +virtual \hyperlink{structpeoSynchronousMultiStart_1_1AbstractAggregationAlgorithm_d5bb9f3712564b788bb7c6da71ef2d3f}{$\sim$Abstract\-Aggregation\-Algorithm} ()} +\label{structpeoSynchronousMultiStart_1_1AbstractAggregationAlgorithm_d5bb9f3712564b788bb7c6da71ef2d3f} + +\item +\hypertarget{structpeoSynchronousMultiStart_1_1AbstractAggregationAlgorithm_cf9b3275e26f24984c9bb839e7f07ba6}{ +virtual void \hyperlink{structpeoSynchronousMultiStart_1_1AbstractAggregationAlgorithm_cf9b3275e26f24984c9bb839e7f07ba6}{operator()} (\hyperlink{structpeoSynchronousMultiStart_1_1AbstractDataType}{Abstract\-Data\-Type} \&data\-Type\-Instance\-A, \hyperlink{structpeoSynchronousMultiStart_1_1AbstractDataType}{Abstract\-Data\-Type} \&data\-Type\-Instance\-B)} +\label{structpeoSynchronousMultiStart_1_1AbstractAggregationAlgorithm_cf9b3275e26f24984c9bb839e7f07ba6} + +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename Entity\-Type$>$ struct peo\-Synchronous\-Multi\-Start$<$ Entity\-Type $>$::Abstract\-Aggregation\-Algorithm} + + + + + +Definition at line 157 of file peo\-Synchronous\-Multi\-Start.h. + +The documentation for this struct was generated from the following file:\begin{CompactItemize} +\item +peo\-Synchronous\-Multi\-Start.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1AbstractAlgorithm.eps b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1AbstractAlgorithm.eps new file mode 100644 index 000000000..863be5db9 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1AbstractAlgorithm.eps @@ -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 96.1538 +%%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.2 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 +(peoSynchronousMultiStart< EntityType >::AbstractAlgorithm) cw +(peoSynchronousMultiStart< EntityType >::Algorithm< AlgorithmType >) 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 ----- + + (peoSynchronousMultiStart< EntityType >::AbstractAlgorithm) 0 1 box + (peoSynchronousMultiStart< EntityType >::Algorithm< AlgorithmType >) 0 0 box + +% ----- relations ----- + +solid +1 0 0.25 out +solid +0 0 0.75 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1AbstractAlgorithm.pdf b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1AbstractAlgorithm.pdf new file mode 100644 index 000000000..aa871ed95 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1AbstractAlgorithm.pdf differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1AbstractAlgorithm.tex b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1AbstractAlgorithm.tex new file mode 100644 index 000000000..7bcb35c7c --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1AbstractAlgorithm.tex @@ -0,0 +1,37 @@ +\hypertarget{structpeoSynchronousMultiStart_1_1AbstractAlgorithm}{ +\section{peo\-Synchronous\-Multi\-Start$<$ Entity\-Type $>$::Abstract\-Algorithm Struct Reference} +\label{structpeoSynchronousMultiStart_1_1AbstractAlgorithm}\index{peoSynchronousMultiStart::AbstractAlgorithm@{peoSynchronousMultiStart::AbstractAlgorithm}} +} +Inheritance diagram for peo\-Synchronous\-Multi\-Start$<$ Entity\-Type $>$::Abstract\-Algorithm::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{structpeoSynchronousMultiStart_1_1AbstractAlgorithm} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{structpeoSynchronousMultiStart_1_1AbstractAlgorithm_c77be114590c79c1b96d3afbe73596e0}{ +virtual \hyperlink{structpeoSynchronousMultiStart_1_1AbstractAlgorithm_c77be114590c79c1b96d3afbe73596e0}{$\sim$Abstract\-Algorithm} ()} +\label{structpeoSynchronousMultiStart_1_1AbstractAlgorithm_c77be114590c79c1b96d3afbe73596e0} + +\item +\hypertarget{structpeoSynchronousMultiStart_1_1AbstractAlgorithm_a5f7790ac2b99e798e4e84f2d5a5f78c}{ +virtual void \hyperlink{structpeoSynchronousMultiStart_1_1AbstractAlgorithm_a5f7790ac2b99e798e4e84f2d5a5f78c}{operator()} (\hyperlink{structpeoSynchronousMultiStart_1_1AbstractDataType}{Abstract\-Data\-Type} \&data\-Type\-Instance)} +\label{structpeoSynchronousMultiStart_1_1AbstractAlgorithm_a5f7790ac2b99e798e4e84f2d5a5f78c} + +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename Entity\-Type$>$ struct peo\-Synchronous\-Multi\-Start$<$ Entity\-Type $>$::Abstract\-Algorithm} + + + + + +Definition at line 139 of file peo\-Synchronous\-Multi\-Start.h. + +The documentation for this struct was generated from the following file:\begin{CompactItemize} +\item +peo\-Synchronous\-Multi\-Start.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1AbstractDataType.eps b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1AbstractDataType.eps new file mode 100644 index 000000000..15195ea2c --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1AbstractDataType.eps @@ -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 109.89 +%%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 4.55 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 +(peoSynchronousMultiStart< EntityType >::AbstractDataType) cw +(peoSynchronousMultiStart< EntityType >::DataType< Type >) 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 ----- + + (peoSynchronousMultiStart< EntityType >::AbstractDataType) 0 1 box + (peoSynchronousMultiStart< EntityType >::DataType< Type >) 0 0 box + +% ----- relations ----- + +solid +1 0 0.25 out +solid +0 0 0.75 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1AbstractDataType.pdf b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1AbstractDataType.pdf new file mode 100644 index 000000000..efbd671a0 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1AbstractDataType.pdf differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1AbstractDataType.tex b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1AbstractDataType.tex new file mode 100644 index 000000000..540d77fd4 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1AbstractDataType.tex @@ -0,0 +1,37 @@ +\hypertarget{structpeoSynchronousMultiStart_1_1AbstractDataType}{ +\section{peo\-Synchronous\-Multi\-Start$<$ Entity\-Type $>$::Abstract\-Data\-Type Struct Reference} +\label{structpeoSynchronousMultiStart_1_1AbstractDataType}\index{peoSynchronousMultiStart::AbstractDataType@{peoSynchronousMultiStart::AbstractDataType}} +} +Inheritance diagram for peo\-Synchronous\-Multi\-Start$<$ Entity\-Type $>$::Abstract\-Data\-Type::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{structpeoSynchronousMultiStart_1_1AbstractDataType} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{structpeoSynchronousMultiStart_1_1AbstractDataType_4d868a93f8e97621ec5c7b6a2e28b265}{ +virtual \hyperlink{structpeoSynchronousMultiStart_1_1AbstractDataType_4d868a93f8e97621ec5c7b6a2e28b265}{$\sim$Abstract\-Data\-Type} ()} +\label{structpeoSynchronousMultiStart_1_1AbstractDataType_4d868a93f8e97621ec5c7b6a2e28b265} + +\item +\hypertarget{structpeoSynchronousMultiStart_1_1AbstractDataType_a4addfca8a9acecadb4c786deed36934}{ +template$<$typename Type$>$ \hyperlink{structpeoSynchronousMultiStart_1_1AbstractDataType_a4addfca8a9acecadb4c786deed36934}{operator Type \&} ()} +\label{structpeoSynchronousMultiStart_1_1AbstractDataType_a4addfca8a9acecadb4c786deed36934} + +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename Entity\-Type$>$ struct peo\-Synchronous\-Multi\-Start$<$ Entity\-Type $>$::Abstract\-Data\-Type} + + + + + +Definition at line 122 of file peo\-Synchronous\-Multi\-Start.h. + +The documentation for this struct was generated from the following file:\begin{CompactItemize} +\item +peo\-Synchronous\-Multi\-Start.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1AggregationAlgorithm.eps b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1AggregationAlgorithm.eps new file mode 100644 index 000000000..9a1dfebaa --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1AggregationAlgorithm.eps @@ -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 72.2022 +%%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 6.925 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 +(peoSynchronousMultiStart< EntityType >::AggregationAlgorithm< AggregationAlgorithmType >) cw +(peoSynchronousMultiStart< EntityType >::AbstractAggregationAlgorithm) 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 ----- + + (peoSynchronousMultiStart< EntityType >::AggregationAlgorithm< AggregationAlgorithmType >) 0 0 box + (peoSynchronousMultiStart< EntityType >::AbstractAggregationAlgorithm) 0 1 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1AggregationAlgorithm.pdf b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1AggregationAlgorithm.pdf new file mode 100644 index 000000000..60c13dc95 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1AggregationAlgorithm.pdf differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1AggregationAlgorithm.tex b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1AggregationAlgorithm.tex new file mode 100644 index 000000000..1ed41f60a --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1AggregationAlgorithm.tex @@ -0,0 +1,45 @@ +\hypertarget{structpeoSynchronousMultiStart_1_1AggregationAlgorithm}{ +\section{peo\-Synchronous\-Multi\-Start$<$ Entity\-Type $>$::Aggregation\-Algorithm$<$ Aggregation\-Algorithm\-Type $>$ Struct Template Reference} +\label{structpeoSynchronousMultiStart_1_1AggregationAlgorithm}\index{peoSynchronousMultiStart::AggregationAlgorithm@{peoSynchronousMultiStart::AggregationAlgorithm}} +} +Inheritance diagram for peo\-Synchronous\-Multi\-Start$<$ Entity\-Type $>$::Aggregation\-Algorithm$<$ Aggregation\-Algorithm\-Type $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{structpeoSynchronousMultiStart_1_1AggregationAlgorithm} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{structpeoSynchronousMultiStart_1_1AggregationAlgorithm_1e03bf7728d19f4649366238962ca365}{ +\hyperlink{structpeoSynchronousMultiStart_1_1AggregationAlgorithm_1e03bf7728d19f4649366238962ca365}{Aggregation\-Algorithm} (Aggregation\-Algorithm\-Type \&external\-Aggregation\-Algorithm)} +\label{structpeoSynchronousMultiStart_1_1AggregationAlgorithm_1e03bf7728d19f4649366238962ca365} + +\item +\hypertarget{structpeoSynchronousMultiStart_1_1AggregationAlgorithm_f8abe94db942aa42f0e3d9c1657db581}{ +void \hyperlink{structpeoSynchronousMultiStart_1_1AggregationAlgorithm_f8abe94db942aa42f0e3d9c1657db581}{operator()} (\hyperlink{structpeoSynchronousMultiStart_1_1AbstractDataType}{Abstract\-Data\-Type} \&data\-Type\-Instance\-A, \hyperlink{structpeoSynchronousMultiStart_1_1AbstractDataType}{Abstract\-Data\-Type} \&data\-Type\-Instance\-B)} +\label{structpeoSynchronousMultiStart_1_1AggregationAlgorithm_f8abe94db942aa42f0e3d9c1657db581} + +\end{CompactItemize} +\subsection*{Public Attributes} +\begin{CompactItemize} +\item +\hypertarget{structpeoSynchronousMultiStart_1_1AggregationAlgorithm_3c701a64f21aa00278c58b5b4ac914a1}{ +Aggregation\-Algorithm\-Type \& \hyperlink{structpeoSynchronousMultiStart_1_1AggregationAlgorithm_3c701a64f21aa00278c58b5b4ac914a1}{aggregation\-Algorithm}} +\label{structpeoSynchronousMultiStart_1_1AggregationAlgorithm_3c701a64f21aa00278c58b5b4ac914a1} + +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename Entity\-Type$>$template$<$typename Aggregation\-Algorithm\-Type$>$ struct peo\-Synchronous\-Multi\-Start$<$ Entity\-Type $>$::Aggregation\-Algorithm$<$ Aggregation\-Algorithm\-Type $>$} + + + + + +Definition at line 164 of file peo\-Synchronous\-Multi\-Start.h. + +The documentation for this struct was generated from the following file:\begin{CompactItemize} +\item +peo\-Synchronous\-Multi\-Start.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1Algorithm.eps b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1Algorithm.eps new file mode 100644 index 000000000..23ef940d6 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1Algorithm.eps @@ -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 96.1538 +%%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.2 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 +(peoSynchronousMultiStart< EntityType >::Algorithm< AlgorithmType >) cw +(peoSynchronousMultiStart< EntityType >::AbstractAlgorithm) 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 ----- + + (peoSynchronousMultiStart< EntityType >::Algorithm< AlgorithmType >) 0 0 box + (peoSynchronousMultiStart< EntityType >::AbstractAlgorithm) 0 1 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1Algorithm.pdf b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1Algorithm.pdf new file mode 100644 index 000000000..e583faaf5 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1Algorithm.pdf differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1Algorithm.tex b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1Algorithm.tex new file mode 100644 index 000000000..4772f9628 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1Algorithm.tex @@ -0,0 +1,45 @@ +\hypertarget{structpeoSynchronousMultiStart_1_1Algorithm}{ +\section{peo\-Synchronous\-Multi\-Start$<$ Entity\-Type $>$::Algorithm$<$ Algorithm\-Type $>$ Struct Template Reference} +\label{structpeoSynchronousMultiStart_1_1Algorithm}\index{peoSynchronousMultiStart::Algorithm@{peoSynchronousMultiStart::Algorithm}} +} +Inheritance diagram for peo\-Synchronous\-Multi\-Start$<$ Entity\-Type $>$::Algorithm$<$ Algorithm\-Type $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{structpeoSynchronousMultiStart_1_1Algorithm} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{structpeoSynchronousMultiStart_1_1Algorithm_8ba4ac2674ca61a8e6b0af2e8e25ba66}{ +\hyperlink{structpeoSynchronousMultiStart_1_1Algorithm_8ba4ac2674ca61a8e6b0af2e8e25ba66}{Algorithm} (Algorithm\-Type \&external\-Algorithm)} +\label{structpeoSynchronousMultiStart_1_1Algorithm_8ba4ac2674ca61a8e6b0af2e8e25ba66} + +\item +\hypertarget{structpeoSynchronousMultiStart_1_1Algorithm_d8902e501b61a8d5727589a5a106bb10}{ +void \hyperlink{structpeoSynchronousMultiStart_1_1Algorithm_d8902e501b61a8d5727589a5a106bb10}{operator()} (\hyperlink{structpeoSynchronousMultiStart_1_1AbstractDataType}{Abstract\-Data\-Type} \&data\-Type\-Instance)} +\label{structpeoSynchronousMultiStart_1_1Algorithm_d8902e501b61a8d5727589a5a106bb10} + +\end{CompactItemize} +\subsection*{Public Attributes} +\begin{CompactItemize} +\item +\hypertarget{structpeoSynchronousMultiStart_1_1Algorithm_2d533c96d2eefea51a72d241d39abf22}{ +Algorithm\-Type \& \hyperlink{structpeoSynchronousMultiStart_1_1Algorithm_2d533c96d2eefea51a72d241d39abf22}{algorithm}} +\label{structpeoSynchronousMultiStart_1_1Algorithm_2d533c96d2eefea51a72d241d39abf22} + +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename Entity\-Type$>$template$<$typename Algorithm\-Type$>$ struct peo\-Synchronous\-Multi\-Start$<$ Entity\-Type $>$::Algorithm$<$ Algorithm\-Type $>$} + + + + + +Definition at line 146 of file peo\-Synchronous\-Multi\-Start.h. + +The documentation for this struct was generated from the following file:\begin{CompactItemize} +\item +peo\-Synchronous\-Multi\-Start.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1DataType.eps b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1DataType.eps new file mode 100644 index 000000000..b4f4c4665 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1DataType.eps @@ -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 109.89 +%%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 4.55 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 +(peoSynchronousMultiStart< EntityType >::DataType< Type >) cw +(peoSynchronousMultiStart< EntityType >::AbstractDataType) 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 ----- + + (peoSynchronousMultiStart< EntityType >::DataType< Type >) 0 0 box + (peoSynchronousMultiStart< EntityType >::AbstractDataType) 0 1 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1DataType.pdf b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1DataType.pdf new file mode 100644 index 000000000..5e993da80 Binary files /dev/null and b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1DataType.pdf differ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1DataType.tex b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1DataType.tex new file mode 100644 index 000000000..d0230a652 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1DataType.tex @@ -0,0 +1,40 @@ +\hypertarget{structpeoSynchronousMultiStart_1_1DataType}{ +\section{peo\-Synchronous\-Multi\-Start$<$ Entity\-Type $>$::Data\-Type$<$ Type $>$ Struct Template Reference} +\label{structpeoSynchronousMultiStart_1_1DataType}\index{peoSynchronousMultiStart::DataType@{peoSynchronousMultiStart::DataType}} +} +Inheritance diagram for peo\-Synchronous\-Multi\-Start$<$ Entity\-Type $>$::Data\-Type$<$ Type $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{structpeoSynchronousMultiStart_1_1DataType} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{structpeoSynchronousMultiStart_1_1DataType_cf5b9add5416139738e152b461008a89}{ +\hyperlink{structpeoSynchronousMultiStart_1_1DataType_cf5b9add5416139738e152b461008a89}{Data\-Type} (Type \&external\-Data)} +\label{structpeoSynchronousMultiStart_1_1DataType_cf5b9add5416139738e152b461008a89} + +\end{CompactItemize} +\subsection*{Public Attributes} +\begin{CompactItemize} +\item +\hypertarget{structpeoSynchronousMultiStart_1_1DataType_76abc322ae058a820b2c964907bc0d80}{ +Type \& \hyperlink{structpeoSynchronousMultiStart_1_1DataType_76abc322ae058a820b2c964907bc0d80}{data}} +\label{structpeoSynchronousMultiStart_1_1DataType_76abc322ae058a820b2c964907bc0d80} + +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename Entity\-Type$>$template$<$typename Type$>$ struct peo\-Synchronous\-Multi\-Start$<$ Entity\-Type $>$::Data\-Type$<$ Type $>$} + + + + + +Definition at line 132 of file peo\-Synchronous\-Multi\-Start.h. + +The documentation for this struct was generated from the following file:\begin{CompactItemize} +\item +peo\-Synchronous\-Multi\-Start.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1NoAggregationFunction.eps b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1NoAggregationFunction.eps new file mode 100644 index 000000000..a3ef4d771 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1NoAggregationFunction.eps @@ -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 93.6768 +%%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.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 +(peoSynchronousMultiStart< EntityType >::NoAggregationFunction) cw +(peoSynchronousMultiStart< EntityType >::AbstractAggregationAlgorithm) 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 ----- + + (peoSynchronousMultiStart< EntityType >::NoAggregationFunction) 0 0 box + (peoSynchronousMultiStart< EntityType >::AbstractAggregationAlgorithm) 0 1 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1NoAggregationFunction.pdf b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1NoAggregationFunction.pdf new file mode 100644 index 000000000..8cf88d473 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1NoAggregationFunction.pdf @@ -0,0 +1,74 @@ +%PDF-1.3 +%쏢 +5 0 obj +<> +stream +xn0 vA$&]m/*(h %h0 "߿x<}Ji!?0olD+>d%A0(yuCidwU8U٦xx?n}?? +'z*_^U}f)31Fl~JFd%&ByGi-8qђ-`~AKP'n"~|w +"iܕPਜhYH&l1naGDPI##RsB~zv@Ir~ja$ɘN*!8 (endstream +endobj +6 0 obj +327 +endobj +4 0 obj +<> +/Contents 5 0 R +>> +endobj +3 0 obj +<< /Type /Pages /Kids [ +4 0 R +] /Count 1 +>> +endobj +1 0 obj +<> +endobj +7 0 obj +<>endobj +9 0 obj +<> +endobj +10 0 obj +<> +endobj +8 0 obj +<> +endobj +2 0 obj +<>endobj +xref +0 11 +0000000000 65535 f +0000000642 00000 n +0000000856 00000 n +0000000583 00000 n +0000000431 00000 n +0000000015 00000 n +0000000412 00000 n +0000000690 00000 n +0000000790 00000 n +0000000731 00000 n +0000000760 00000 n +trailer +<< /Size 11 /Root 1 0 R /Info 2 0 R +/ID [(/gF1Y Zd3)(/gF1Y Zd3)] +>> +startxref +1013 +%%EOF diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1NoAggregationFunction.tex b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1NoAggregationFunction.tex new file mode 100644 index 000000000..6c3fe2a42 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/latex/structpeoSynchronousMultiStart_1_1NoAggregationFunction.tex @@ -0,0 +1,32 @@ +\hypertarget{structpeoSynchronousMultiStart_1_1NoAggregationFunction}{ +\section{peo\-Synchronous\-Multi\-Start$<$ Entity\-Type $>$::No\-Aggregation\-Function Struct Reference} +\label{structpeoSynchronousMultiStart_1_1NoAggregationFunction}\index{peoSynchronousMultiStart::NoAggregationFunction@{peoSynchronousMultiStart::NoAggregationFunction}} +} +Inheritance diagram for peo\-Synchronous\-Multi\-Start$<$ Entity\-Type $>$::No\-Aggregation\-Function::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{structpeoSynchronousMultiStart_1_1NoAggregationFunction} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\hypertarget{structpeoSynchronousMultiStart_1_1NoAggregationFunction_d094bb3cca92a48de0afadf576cda044}{ +void \hyperlink{structpeoSynchronousMultiStart_1_1NoAggregationFunction_d094bb3cca92a48de0afadf576cda044}{operator()} (\hyperlink{structpeoSynchronousMultiStart_1_1AbstractDataType}{Abstract\-Data\-Type} \&data\-Type\-Instance\-A, \hyperlink{structpeoSynchronousMultiStart_1_1AbstractDataType}{Abstract\-Data\-Type} \&data\-Type\-Instance\-B)} +\label{structpeoSynchronousMultiStart_1_1NoAggregationFunction_d094bb3cca92a48de0afadf576cda044} + +\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename Entity\-Type$>$ struct peo\-Synchronous\-Multi\-Start$<$ Entity\-Type $>$::No\-Aggregation\-Function} + + + + + +Definition at line 176 of file peo\-Synchronous\-Multi\-Start.h. + +The documentation for this struct was generated from the following file:\begin{CompactItemize} +\item +peo\-Synchronous\-Multi\-Start.h\end{CompactItemize} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/Communicable.3 b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/Communicable.3 new file mode 100644 index 000000000..d0e543861 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/Communicable.3 @@ -0,0 +1,62 @@ +.TH "Communicable" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-PEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Communicable \- +.SH SYNOPSIS +.br +.PP +Inherited by \fBCooperative\fP, \fBRunner\fP, \fBService\fP, and \fBWorker\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBCommunicable\fP ()" +.br +.ti -1c +.RI "virtual \fB~Communicable\fP ()" +.br +.ti -1c +.RI "COMM_ID \fBgetKey\fP ()" +.br +.ti -1c +.RI "void \fBlock\fP ()" +.br +.ti -1c +.RI "void \fBunlock\fP ()" +.br +.ti -1c +.RI "void \fBstop\fP ()" +.br +.ti -1c +.RI "void \fBresume\fP ()" +.br +.in -1c +.SS "Protected Attributes" + +.in +1c +.ti -1c +.RI "COMM_ID \fBkey\fP" +.br +.ti -1c +.RI "sem_t \fBsem_lock\fP" +.br +.ti -1c +.RI "sem_t \fBsem_stop\fP" +.br +.in -1c +.SS "Static Protected Attributes" + +.in +1c +.ti -1c +.RI "static unsigned \fBnum_comm\fP = 0" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 44 of file communicable.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/Communicator.3 b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/Communicator.3 new file mode 100644 index 000000000..4c541f2d4 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/Communicator.3 @@ -0,0 +1,27 @@ +.TH "Communicator" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-PEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Communicator \- +.SH SYNOPSIS +.br +.PP +Inherits \fBReactiveThread\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBCommunicator\fP (int *__argc, char ***__argv)" +.br +.ti -1c +.RI "void \fBstart\fP ()" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 43 of file comm.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/Cooperative.3 b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/Cooperative.3 new file mode 100644 index 000000000..9aa4a6bc7 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/Cooperative.3 @@ -0,0 +1,42 @@ +.TH "Cooperative" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-PEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Cooperative \- +.SH SYNOPSIS +.br +.PP +Inherits \fBCommunicable\fP. +.PP +Inherited by \fBpeoAsyncIslandMig< EOT >\fP, and \fBpeoSyncIslandMig< EOT >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBRunner\fP * \fBgetOwner\fP ()" +.br +.ti -1c +.RI "void \fBsetOwner\fP (\fBRunner\fP &__runner)" +.br +.ti -1c +.RI "void \fBsend\fP (\fBCooperative\fP *__coop)" +.br +.ti -1c +.RI "virtual void \fBnotifySending\fP ()" +.br +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBRunner\fP * \fBowner\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 45 of file cooperative.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/DisplayBestRoute.3 b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/DisplayBestRoute.3 new file mode 100644 index 000000000..18f1c70df --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/DisplayBestRoute.3 @@ -0,0 +1,34 @@ +.TH "DisplayBestRoute" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-PEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +DisplayBestRoute \- +.SH SYNOPSIS +.br +.PP +Inherits \fBeoUpdater\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBDisplayBestRoute\fP (\fBeoPop\fP< \fBRoute\fP > &__pop)" +.br +.ti -1c +.RI "void \fBoperator()\fP ()" +.br +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBeoPop\fP< \fBRoute\fP > & \fBpop\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 46 of file display_best_route.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/MergeRouteEval.3 b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/MergeRouteEval.3 new file mode 100644 index 000000000..96d7907c5 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/MergeRouteEval.3 @@ -0,0 +1,24 @@ +.TH "MergeRouteEval" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-PEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +MergeRouteEval \- +.SH SYNOPSIS +.br +.PP +Inherits \fBpeoAggEvalFunc< EOT >< eoVector< int, Node > >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "void \fBoperator()\fP (\fBRoute\fP &__route, const int &__part_fit)" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 44 of file merge_route_eval.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/RandomExplorationAlgorithm.3 b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/RandomExplorationAlgorithm.3 new file mode 100644 index 000000000..9964708ac --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/RandomExplorationAlgorithm.3 @@ -0,0 +1,35 @@ +.TH "RandomExplorationAlgorithm" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-PEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +RandomExplorationAlgorithm \- +.SH SYNOPSIS +.br +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBRandomExplorationAlgorithm\fP (\fBpeoPopEval\fP< \fBRoute\fP > &__popEval, \fBpeoSynchronousMultiStart\fP< \fBRoute\fP > &extParallelExecution)" +.br +.ti -1c +.RI "void \fBoperator()\fP ()" +.br +.in -1c +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "\fBpeoPopEval\fP< \fBRoute\fP > & \fBpopEval\fP" +.br +.ti -1c +.RI "\fBpeoSynchronousMultiStart\fP< \fBRoute\fP > & \fBparallelExecution\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 56 of file LessonParallelAlgorithm/main.cpp. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/ReactiveThread.3 b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/ReactiveThread.3 new file mode 100644 index 000000000..8467f49d3 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/ReactiveThread.3 @@ -0,0 +1,39 @@ +.TH "ReactiveThread" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-PEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +ReactiveThread \- +.SH SYNOPSIS +.br +.PP +Inherits \fBThread\fP. +.PP +Inherited by \fBCommunicator\fP, and \fBWorker\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBReactiveThread\fP ()" +.br +.ti -1c +.RI "void \fBsleep\fP ()" +.br +.ti -1c +.RI "void \fBwakeUp\fP ()" +.br +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "sem_t \fBsem\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 44 of file reac_thread.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/RingTopology.3 b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/RingTopology.3 new file mode 100644 index 000000000..a8d404156 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/RingTopology.3 @@ -0,0 +1,24 @@ +.TH "RingTopology" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-PEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +RingTopology \- +.SH SYNOPSIS +.br +.PP +Inherits \fBTopology\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "void \fBsetNeighbors\fP (\fBCooperative\fP *__mig, std::vector< \fBCooperative\fP * > &__from, std::vector< \fBCooperative\fP * > &__to)" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 42 of file ring_topo.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/Runner.3 b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/Runner.3 new file mode 100644 index 000000000..abdc983ec --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/Runner.3 @@ -0,0 +1,57 @@ +.TH "Runner" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-PEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Runner \- +.SH SYNOPSIS +.br +.PP +Inherits \fBCommunicable\fP, and \fBThread\fP. +.PP +Inherited by \fBpeoEA< EOT >\fP, and \fBpeoParallelAlgorithmWrapper\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBRunner\fP ()" +.br +.ti -1c +.RI "void \fBstart\fP ()" +.br +.ti -1c +.RI "void \fBwaitStarting\fP ()" +.br +.ti -1c +.RI "bool \fBisLocal\fP ()" +.br +.ti -1c +.RI "void \fBterminate\fP ()" +.br +.ti -1c +.RI "RUNNER_ID \fBgetID\fP ()" +.br +.ti -1c +.RI "void \fBpackTermination\fP ()" +.br +.ti -1c +.RI "void \fBnotifySendingTermination\fP ()" +.br +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "sem_t \fBsem_start\fP" +.br +.ti -1c +.RI "unsigned \fBid\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 47 of file runner.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/SEND_REQUEST.3 b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/SEND_REQUEST.3 new file mode 100644 index 000000000..de6fbfb17 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/SEND_REQUEST.3 @@ -0,0 +1,28 @@ +.TH "SEND_REQUEST" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-PEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +SEND_REQUEST \- +.SH SYNOPSIS +.br +.PP +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "\fBCommunicable\fP * \fBcomm\fP" +.br +.ti -1c +.RI "int \fBto\fP" +.br +.ti -1c +.RI "int \fBtag\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 52 of file send.cpp. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/Service.3 b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/Service.3 new file mode 100644 index 000000000..242238f59 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/Service.3 @@ -0,0 +1,69 @@ +.TH "Service" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-PEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Service \- +.SH SYNOPSIS +.br +.PP +Inherits \fBCommunicable\fP. +.PP +Inherited by \fBpeoPopEval< EOT >\fP, \fBpeoPopEval< eoVector< int, Node > >\fP, \fBpeoSynchronousMultiStart< EntityType >\fP, \fBpeoSynchronousMultiStart< eoVector< int, Node > >\fP, \fBpeoSyncMultiStart< EOT >\fP, and \fBpeoTransform< EOT >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "void \fBsetOwner\fP (\fBThread\fP &__owner)" +.br +.ti -1c +.RI "\fBThread\fP * \fBgetOwner\fP ()" +.br +.ti -1c +.RI "void \fBrequestResourceRequest\fP (unsigned __how_many=1)" +.br +.ti -1c +.RI "void \fBpackResourceRequest\fP ()" +.br +.ti -1c +.RI "virtual void \fBpackData\fP ()" +.br +.ti -1c +.RI "virtual void \fBunpackData\fP ()" +.br +.ti -1c +.RI "virtual void \fBexecute\fP ()" +.br +.ti -1c +.RI "virtual void \fBpackResult\fP ()" +.br +.ti -1c +.RI "virtual void \fBunpackResult\fP ()" +.br +.ti -1c +.RI "virtual void \fBnotifySendingData\fP ()" +.br +.ti -1c +.RI "virtual void \fBnotifySendingResourceRequest\fP ()" +.br +.ti -1c +.RI "virtual void \fBnotifySendingAllResourceRequests\fP ()" +.br +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBThread\fP * \fBowner\fP" +.br +.ti -1c +.RI "unsigned \fBnum_sent_rr\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 45 of file service.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/Thread.3 b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/Thread.3 new file mode 100644 index 000000000..668641367 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/Thread.3 @@ -0,0 +1,40 @@ +.TH "Thread" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-PEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Thread \- +.SH SYNOPSIS +.br +.PP +Inherited by \fBReactiveThread\fP, and \fBRunner\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBThread\fP ()" +.br +.ti -1c +.RI "virtual \fB~Thread\fP ()" +.br +.ti -1c +.RI "void \fBsetActive\fP ()" +.br +.ti -1c +.RI "void \fBsetPassive\fP ()" +.br +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "bool \fBact\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 44 of file thread.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/Topology.3 b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/Topology.3 new file mode 100644 index 000000000..5d4e939ee --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/Topology.3 @@ -0,0 +1,34 @@ +.TH "Topology" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-PEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Topology \- +.SH SYNOPSIS +.br +.PP +Inherited by \fBRingTopology\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "virtual \fB~Topology\fP ()" +.br +.ti -1c +.RI "void \fBadd\fP (\fBCooperative\fP &__mig)" +.br +.in -1c +.SS "Protected Attributes" + +.in +1c +.ti -1c +.RI "std::vector< \fBCooperative\fP * > \fBmig\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 44 of file topology.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/Worker.3 b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/Worker.3 new file mode 100644 index 000000000..2327bb56a --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/Worker.3 @@ -0,0 +1,64 @@ +.TH "Worker" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-PEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Worker \- +.SH SYNOPSIS +.br +.PP +Inherits \fBCommunicable\fP, and \fBReactiveThread\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBWorker\fP ()" +.br +.ti -1c +.RI "void \fBstart\fP ()" +.br +.ti -1c +.RI "void \fBpackResult\fP ()" +.br +.ti -1c +.RI "void \fBunpackData\fP ()" +.br +.ti -1c +.RI "void \fBpackTaskDone\fP ()" +.br +.ti -1c +.RI "void \fBnotifySendingResult\fP ()" +.br +.ti -1c +.RI "void \fBnotifySendingTaskDone\fP ()" +.br +.ti -1c +.RI "void \fBsetSource\fP (int __rank)" +.br +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "WORKER_ID \fBid\fP" +.br +.ti -1c +.RI "SERVICE_ID \fBserv_id\fP" +.br +.ti -1c +.RI "\fBService\fP * \fBserv\fP" +.br +.ti -1c +.RI "int \fBsrc\fP" +.br +.ti -1c +.RI "bool \fBtoto\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 46 of file worker.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peo.3 b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peo.3 new file mode 100644 index 000000000..ed1fecf92 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peo.3 @@ -0,0 +1,43 @@ +.TH "peo" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-PEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peo \- +.SH SYNOPSIS +.br +.PP +.SS "Functions" + +.in +1c +.ti -1c +.RI "void \fBfinalize\fP ()" +.br +.ti -1c +.RI "void \fBinit\fP (int &__argc, char **&__argv)" +.br +.ti -1c +.RI "void \fBloadParameters\fP (int &__argc, char **&__argv)" +.br +.ti -1c +.RI "void \fBrun\fP ()" +.br +.in -1c +.SS "Variables" + +.in +1c +.ti -1c +.RI "int * \fBargc\fP" +.br +.ti -1c +.RI "char *** \fBargv\fP" +.br +.ti -1c +.RI "int * \fBargc\fP" +.br +.ti -1c +.RI "char *** \fBargv\fP" +.br +.in -1c +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoAggEvalFunc.3 b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoAggEvalFunc.3 new file mode 100644 index 000000000..4109b0e40 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoAggEvalFunc.3 @@ -0,0 +1,33 @@ +.TH "peoAggEvalFunc" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-PEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoAggEvalFunc \- The \fBpeoAggEvalFunc\fP class offers only the interface for creating aggregate evaluation functions - there are no direct internal functions provided. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoBF< A1, A2, R >< const EOT &, EOT::Fitness &, void >\fP. +.PP +Inherited by \fBMergeRouteEval\fP, and \fBpeoNoAggEvalFunc< EOT >\fP. +.PP +.SH "Detailed Description" +.PP + +.SS "template class peoAggEvalFunc< EOT >" +The \fBpeoAggEvalFunc\fP class offers only the interface for creating aggregate evaluation functions - there are no direct internal functions provided. + +The class inherits \fBpublic eoBF< EOT&, const typename EOT :: Fitness&, void >\fP thus requiring, for the derived classes, the creation of a function having the following signature: +.PP +void operator()( EOT& __eot, const typename EOT :: Fitness& __partial_fittness ); +.PP +The aggregation object is called in an iterative manner for each of the results obtained by applying partial evaluation functions. +.PP +Definition at line 53 of file peoAggEvalFunc.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoAsyncIslandMig.3 b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoAsyncIslandMig.3 new file mode 100644 index 000000000..fd5d5126c --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoAsyncIslandMig.3 @@ -0,0 +1,176 @@ +.TH "peoAsyncIslandMig" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-PEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoAsyncIslandMig \- The \fBpeoAsyncIslandMig\fP class offers the elementary basis for implementating an asynchronous island migration model - requires the specification of several basic parameters, i.e. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBCooperative\fP, and \fBeoUpdater\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBpeoAsyncIslandMig\fP (\fBeoContinue\fP< EOT > &__cont, \fBeoSelect\fP< EOT > &__select, \fBeoReplacement\fP< EOT > &__replace, \fBTopology\fP &__topology, \fBeoPop\fP< EOT > &__source, \fBeoPop\fP< EOT > &__destination)" +.br +.RI "\fIConstructor for the \fBpeoAsyncIslandMig\fP class; the characteristics of the migration model are defined through the specified parameters - out of the box objects provided in \fBEO\fP, etc., or custom, derived objects may be passed as parameters. \fP" +.ti -1c +.RI "void \fBoperator()\fP ()" +.br +.RI "\fI\fBFunction\fP operator to be called as checkpoint for performing the migration step. \fP" +.ti -1c +.RI "void \fBpack\fP ()" +.br +.RI "\fIAuxiliary function dealing with sending the emigrant individuals. There is no need to explicitly call the function. \fP" +.ti -1c +.RI "void \fBunpack\fP ()" +.br +.RI "\fIAuxiliary function dealing with receiving immigrant individuals. There is no need to explicitly call the function. \fP" +.in -1c +.SS "Private Member Functions" + +.in +1c +.ti -1c +.RI "void \fBemigrate\fP ()" +.br +.ti -1c +.RI "void \fBimmigrate\fP ()" +.br +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBeoContinue\fP< EOT > & \fBcont\fP" +.br +.ti -1c +.RI "\fBeoSelect\fP< EOT > & \fBselect\fP" +.br +.ti -1c +.RI "\fBeoReplacement\fP< EOT > & \fBreplace\fP" +.br +.ti -1c +.RI "\fBTopology\fP & \fBtopology\fP" +.br +.ti -1c +.RI "\fBeoPop\fP< EOT > & \fBsource\fP" +.br +.ti -1c +.RI "\fBeoPop\fP< EOT > & \fBdestination\fP" +.br +.ti -1c +.RI "std::queue< \fBeoPop\fP< EOT > > \fBimm\fP" +.br +.ti -1c +.RI "std::queue< \fBeoPop\fP< EOT > > \fBem\fP" +.br +.ti -1c +.RI "std::queue< \fBCooperative\fP * > \fBcoop_em\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class peoAsyncIslandMig< EOT >" +The \fBpeoAsyncIslandMig\fP class offers the elementary basis for implementating an asynchronous island migration model - requires the specification of several basic parameters, i.e. + +continuation criterion, selection and replacement strategies, a topological model and the source and destination population for the migrating individuals. As opposed to the synchronous migration model, in the asynchronous migration approach, there is no synchronization step between islands after performing the emigration phase. +.PP +The migration operator is called at the end of each generation of an evolutionary algorithms as a checkpoint object - the following code exposes the structure of a classic evolutionary algorithm: +.PP +\fBdo\fP { select( population, offsprings ); // select the offsprings from the current population transform( offsprings ); // crossover and mutation operators are applied on the selected offsprings evaluate( offsprings ); // evaluation step of the resulting offsprings replace( population, offsprings ); // replace the individuals in the current population whith individuals from the offspring population, according to a specified replacement strategy } \fBwhile\fP ( eaCheckpointContinue( population ) ); // checkpoint operators are applied on the current population, including the migration operator, if any specified +.PP +Constructing an asynchronous island migration model requires having defined (1) a topological migration model, (2) the control parameters of the migration process, (3) a checkpoint object associated with an evolutionary algorithm, and (4) an owner object must be set. The owner object must be derived from the \fB\fBRunner\fP\fP class (for example a \fBpeoEA\fP object represents a possible owner). A simple example is offered bellow: +.PP +.PD 0 +.IP "1." 4 +topological model to be followed when performing migrations: +.br + +.br + \fBRingTopology\fP migTopology; // a simple ring topological model - each island communicates with two other islands +.PP + +.IP "2." 4 +the continuation criterion, selection and replacement strategy etc. are defined: +.br + +.br + eoPop< EOT > population( POP_SIZE, popInitializer ); // population of individuals to be used for the evolutionary algorithm eoPeriodicContinue< EOT > migCont( MIG_FREQ ); // migrations occur periodically at MIG_FREQ iterations eoRandomSelect< EOT > migSelectStrategy; // selection strategy - in this case a random selection is applied eoSelectNumber< EOT > migSelect( migSelectStrategy, MIG_SIZE ); // number of individuals to be selected using the specified strategy eoPlusReplacement< EOT > migReplace; // immigration strategy - the worse individuals in the destination population are replaced by the immigrant individuals peoAsyncIslandMig< EOT > asyncMigration( +.br + migCont, migSelect, migReplace, migTopology, +.br + population, population +.br + ); // asynchronous migration object - the emigrant individuals are selected from the same from population in which the immigrant individuals are being integrated +.PP + +.IP "3." 4 +creation of a checkpoint object as part of the definition of an evolutionary algoritm (details of th EA not given as being out of scope): +.br + +.br + ... eoGenContinue< EOT > eaCont( NUM_GEN ); // the evolutionary algorithm will stop after NUM_GEN generations eoCheckPoint< EOT > eaCheckpointContinue( eaCont ); // number of individuals to be selected using the specified strategy ... eaCheckpointContinue.add( asyncMigration ); // adding the migration operator as checkpoint element ... +.PP + +.IP "4." 4 +definition of an owner evolutionary algorithm (an object inheriting the \fB\fBRunner\fP\fP class): +.br + +.br + peoEA< EOT > eaAlg( eaCheckpointContinue, eaPopEval, eaSelect, eaTransform, eaReplace); // evolutionary algorithm having as checkpoint the eaCheckpointContinue object defined above asyncMigration.setOwner( eaAlg ); // setting the evolutionary algorithm as owner of the migration object eaAlg( population ); // applying the evolutionary algorithm on a given population +.PP +.PP +The source and the destination population for the migration object were specified as being the same, in step no. 2, as we are usually interested in selecting the emigrants and integrating the immigrant individuals from and in, respectively, one unique population, iteratively evolved by an evolutionary algorithm. There is no restriction in having two distinct populations as source and destination for the emigrant and immigrant individuals respectively. +.PP +The above steps only create an asynchronous migration object associated to an evolutionary algorithm. The creation of several islands requires the reiteration of the steps 2 through 4 for creating distinct algorithms, with distinct populations and the associated distinctly parametrized migration objects. The interconnecting element is the underlying topology, defined at step 1 (the same C++ migTopology object has to be passed as parameter for all the migration objects, in order to interconnect them). +.PP +Definition at line 140 of file peoAsyncIslandMig.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBpeoAsyncIslandMig\fP< EOT >::\fBpeoAsyncIslandMig\fP (\fBeoContinue\fP< EOT > & __cont, \fBeoSelect\fP< EOT > & __select, \fBeoReplacement\fP< EOT > & __replace, \fBTopology\fP & __topology, \fBeoPop\fP< EOT > & __source, \fBeoPop\fP< EOT > & __destination)" +.PP +Constructor for the \fBpeoAsyncIslandMig\fP class; the characteristics of the migration model are defined through the specified parameters - out of the box objects provided in \fBEO\fP, etc., or custom, derived objects may be passed as parameters. +.PP +\fBParameters:\fP +.RS 4 +\fIeoContinue<\fP EOT >& __cont - continuation criterion specifying whether the migration is performed or not; +.br +\fIeoSelect<\fP EOT >& __select - selection strategy to be applied for constructing a list of emigrant individuals out of the source population; +.br +\fIeoReplacement<\fP EOT >& __replace - replacement strategy used for integrating the immigrant individuals in the destination population; +.br +\fITopology&\fP __topology - topological model to be followed when performing migrations; +.br +\fIeoPop<\fP EOT >& __source - source population from which the emigrant individuals are selected; +.br +\fIeoPop<\fP EOT >& __destination - destination population in which the immigrant population are integrated. +.RE +.PP + +.PP +Definition at line 199 of file peoAsyncIslandMig.h. +.PP +References Topology::add(). +.SH "Member Function Documentation" +.PP +.SS "template void \fBpeoAsyncIslandMig\fP< EOT >::operator() ()\fC [virtual]\fP" +.PP +\fBFunction\fP operator to be called as checkpoint for performing the migration step. +.PP +The emigrant individuals are selected from the source population and sent to the next island (defined by the topology object) while the immigrant individuals are integrated in the destination population. There is no need to explicitly call the function - the wrapper checkpoint object (please refer to the above example) will perform the call when required. +.PP +Implements \fBeoF< void >\fP. +.PP +Definition at line 276 of file peoAsyncIslandMig.h. +.PP +References peoAsyncIslandMig< EOT >::cont, peoAsyncIslandMig< EOT >::emigrate(), peoAsyncIslandMig< EOT >::immigrate(), and peoAsyncIslandMig< EOT >::source. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoEA.3 b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoEA.3 new file mode 100644 index 000000000..9bfa31f02 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoEA.3 @@ -0,0 +1,109 @@ +.TH "peoEA" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-PEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoEA \- The \fBpeoEA\fP class offers an elementary evolutionary algorithm implementation. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBRunner\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBpeoEA\fP (\fBeoContinue\fP< EOT > &__cont, \fBpeoPopEval\fP< EOT > &__pop_eval, \fBeoSelect\fP< EOT > &__select, \fBpeoTransform\fP< EOT > &__trans, \fBeoReplacement\fP< EOT > &__replace)" +.br +.RI "\fIConstructor for the evolutionary algorithm object - several basic parameters have to be specified, allowing for different levels of parallelism. \fP" +.ti -1c +.RI "void \fBrun\fP ()" +.br +.RI "\fIEvolutionary algorithm function - a side effect of the fact that the class is derived from the \fB\fBRunner\fP\fP class, thus requiring the existence of a \fIrun\fP function, the algorithm being executed on a distinct thread. \fP" +.ti -1c +.RI "void \fBoperator()\fP (\fBeoPop\fP< EOT > &__pop)" +.br +.RI "\fI\fBFunction\fP operator for specifying the population to be associated with the algorithm. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBeoContinue\fP< EOT > & \fBcont\fP" +.br +.ti -1c +.RI "\fBpeoPopEval\fP< EOT > & \fBpop_eval\fP" +.br +.ti -1c +.RI "\fBeoSelect\fP< EOT > & \fBselect\fP" +.br +.ti -1c +.RI "\fBpeoTransform\fP< EOT > & \fBtrans\fP" +.br +.ti -1c +.RI "\fBeoReplacement\fP< EOT > & \fBreplace\fP" +.br +.ti -1c +.RI "\fBeoPop\fP< EOT > * \fBpop\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class peoEA< EOT >" +The \fBpeoEA\fP class offers an elementary evolutionary algorithm implementation. + +In addition, as compared with the algorithms provided by the \fBEO\fP framework, the \fBpeoEA\fP class has the underlying necessary structure for including, for example, parallel evaluation and parallel transformation operators, migration operators etc. Although there is no restriction on using the algorithms provided by the \fBEO\fP framework, the drawback resides in the fact that the \fBEO\fP implementation is exclusively sequential and, in consequence, no parallelism is provided. A simple example for constructing a \fBpeoEA\fP object: +.PP +... eoPop< EOT > population( POP_SIZE, popInitializer ); // creation of a population with POP_SIZE individuals - the popInitializer is a functor to be called for each individual eoGenContinue< EOT > eaCont( NUM_GEN ); // number of generations for the evolutionary algorithm eoCheckPoint< EOT > eaCheckpointContinue( eaCont ); // checkpoint incorporating the continuation criterion - startpoint for adding other checkpoint objects peoSeqPopEval< EOT > eaPopEval( evalFunction ); // sequential evaluation functor wrapper - evalFunction represents the actual evaluation functor eoRankingSelect< EOT > selectionStrategy; // selection strategy for creating the offspring population - a simple ranking selection in this case eoSelectNumber< EOT > eaSelect( selectionStrategy, POP_SIZE ); // the number of individuals to be selected for creating the offspring population eoRankingSelect< EOT > selectionStrategy; // selection strategy for creating the offspring population - a simple ranking selection in this case eoSGATransform< EOT > transform( crossover, CROSS_RATE, mutation, MUT_RATE ); // transformation operator - crossover and mutation operators with their associated probabilities peoSeqTransform< EOT > eaTransform( transform ); // ParadisEO specific sequential operator - a parallel version may be specified in the same manner eoPlusReplacement< EOT > eaReplace; // replacement strategy - for integrating the offspring resulting individuals in the initial population peoEA< EOT > eaAlg( eaCheckpointContinue, eaPopEval, eaSelect, eaTransform, eaReplace ); // ParadisEO evolutionary algorithm integrating the above defined objects eaAlg( population ); // specifying the initial population for the algorithm ... +.PP +Definition at line 82 of file peoEA.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBpeoEA\fP< EOT >::\fBpeoEA\fP (\fBeoContinue\fP< EOT > & __cont, \fBpeoPopEval\fP< EOT > & __pop_eval, \fBeoSelect\fP< EOT > & __select, \fBpeoTransform\fP< EOT > & __trans, \fBeoReplacement\fP< EOT > & __replace)" +.PP +Constructor for the evolutionary algorithm object - several basic parameters have to be specified, allowing for different levels of parallelism. +.PP +Depending on the requirements, a sequential or a parallel evaluation operator may be specified or, in the same manner, a sequential or a parallel transformation operator may be given as parameter. Out of the box objects may be provided, from the \fBEO\fP package, for example, or custom defined ones may be specified, provided that they are derived from the correct base classes. +.PP +\fBParameters:\fP +.RS 4 +\fIeoContinue<\fP EOT >& __cont - continuation criterion specifying whether the algorithm should continue or not; +.br +\fIpeoPopEval<\fP EOT >& __pop_eval - evaluation operator; it allows the specification of parallel evaluation operators, aggregate evaluation functions, etc.; +.br +\fIeoSelect<\fP EOT >& __select - selection strategy to be applied for constructing a list of offspring individuals; +.br +\fIpeoTransform<\fP EOT >& __trans - transformation operator, i.e. crossover and mutation; allows for sequential or parallel transform; +.br +\fIeoReplacement<\fP EOT >& __replace - replacement strategy for integrating the offspring individuals in the initial population; +.RE +.PP + +.PP +Definition at line 126 of file peoEA.h. +.PP +References peoEA< EOT >::pop_eval, and peoEA< EOT >::trans. +.SH "Member Function Documentation" +.PP +.SS "template void \fBpeoEA\fP< EOT >::operator() (\fBeoPop\fP< EOT > & __pop)" +.PP +\fBFunction\fP operator for specifying the population to be associated with the algorithm. +.PP +\fBParameters:\fP +.RS 4 +\fIeoPop<\fP EOT >& __pop - initial population of the algorithm, to be iteratively evolved; +.RE +.PP + +.PP +Definition at line 142 of file peoEA.h. +.PP +References peoEA< EOT >::pop. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoNoAggEvalFunc.3 b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoNoAggEvalFunc.3 new file mode 100644 index 000000000..caa54ee6a --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoNoAggEvalFunc.3 @@ -0,0 +1,35 @@ +.TH "peoNoAggEvalFunc" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-PEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoNoAggEvalFunc \- The \fBpeoNoAggEvalFunc\fP class does nothing more than an association between a fitness value and a specified individual. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBpeoAggEvalFunc< EOT >< EOT >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "void \fBoperator()\fP (EOT &__sol, const typename EOT::Fitness &__fit)" +.br +.RI "\fIOperator which sets as fitness the \fB__fit\fP value for the \fB__sol\fP individual. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class peoNoAggEvalFunc< EOT >" +The \fBpeoNoAggEvalFunc\fP class does nothing more than an association between a fitness value and a specified individual. + +The class is provided as a mean of declaring that no aggregation is required for the evaluation function - the fitness value is explicitly specified. +.PP +Definition at line 47 of file peoNoAggEvalFunc.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoParaPopEval.3 b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoParaPopEval.3 new file mode 100644 index 000000000..a2533e127 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoParaPopEval.3 @@ -0,0 +1,217 @@ +.TH "peoParaPopEval" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-PEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoParaPopEval \- The \fBpeoParaPopEval\fP represents a wrapper for creating a functor capable of applying in parallel an EO-derived evaluation functor. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBpeoPopEval< EOT >< EOT >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBpeoParaPopEval\fP (\fBeoEvalFunc\fP< EOT > &__eval_func)" +.br +.RI "\fIConstructor function - an EO-derived evaluation functor has to be specified; an internal reference is set towards the specified evaluation functor. \fP" +.ti -1c +.RI "\fBpeoParaPopEval\fP (const std::vector< \fBeoEvalFunc\fP< EOT > * > &__funcs, \fBpeoAggEvalFunc\fP< EOT > &__merge_eval)" +.br +.RI "\fIConstructor function - a vector of EO-derived evaluation functors has to be specified as well as an aggregation function. \fP" +.ti -1c +.RI "void \fBoperator()\fP (\fBeoPop\fP< EOT > &__pop)" +.br +.RI "\fIOperator for applying the evaluation functor (direct or aggregate) for each individual of the specified population. \fP" +.ti -1c +.RI "void \fBpackData\fP ()" +.br +.RI "\fIAuxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. \fP" +.ti -1c +.RI "void \fBunpackData\fP ()" +.br +.RI "\fIAuxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. \fP" +.ti -1c +.RI "void \fBexecute\fP ()" +.br +.RI "\fIAuxiliary function - it calls the specified evaluation functor(s). There is no need to explicitly call the function. \fP" +.ti -1c +.RI "void \fBpackResult\fP ()" +.br +.RI "\fIAuxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. \fP" +.ti -1c +.RI "void \fBunpackResult\fP ()" +.br +.RI "\fIAuxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. \fP" +.ti -1c +.RI "void \fBnotifySendingData\fP ()" +.br +.RI "\fIAuxiliary function for notifications between the process requesting an evaluation operation and the processes that performs the actual evaluation phase. \fP" +.ti -1c +.RI "void \fBnotifySendingAllResourceRequests\fP ()" +.br +.RI "\fIAuxiliary function for notifications between the process requesting an evaluation operation and the processes that performs the actual evaluation phase. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "const std::vector< \fBeoEvalFunc\fP< EOT > * > & \fBfuncs\fP" +.br +.ti -1c +.RI "std::vector< \fBeoEvalFunc\fP< EOT > * > \fBone_func\fP" +.br +.ti -1c +.RI "\fBpeoAggEvalFunc\fP< EOT > & \fBmerge_eval\fP" +.br +.ti -1c +.RI "\fBpeoNoAggEvalFunc\fP< EOT > \fBno_merge_eval\fP" +.br +.ti -1c +.RI "std::queue< EOT * > \fBtasks\fP" +.br +.ti -1c +.RI "std::map< EOT *, std::pair< unsigned, unsigned > > \fBprogression\fP" +.br +.ti -1c +.RI "unsigned \fBnum_func\fP" +.br +.ti -1c +.RI "EOT \fBsol\fP" +.br +.ti -1c +.RI "EOT * \fBad_sol\fP" +.br +.ti -1c +.RI "unsigned \fBtotal\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class peoParaPopEval< EOT >" +The \fBpeoParaPopEval\fP represents a wrapper for creating a functor capable of applying in parallel an EO-derived evaluation functor. + +The class offers the possibility of chosing between a single-function evaluation and an aggregate evaluation function, including several sub-evalution functions. +.PP +Definition at line 54 of file peoParaPopEval.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBpeoParaPopEval\fP< EOT >::\fBpeoParaPopEval\fP (\fBeoEvalFunc\fP< EOT > & __eval_func)" +.PP +Constructor function - an EO-derived evaluation functor has to be specified; an internal reference is set towards the specified evaluation functor. +.PP +\fBParameters:\fP +.RS 4 +\fIeoEvalFunc<\fP EOT >& __eval_func - EO-derived evaluation functor to be applied in parallel on each individual of a specified population +.RE +.PP + +.PP +Definition at line 130 of file peoParaPopEval.h. +.PP +References peoParaPopEval< EOT >::one_func. +.SS "template \fBpeoParaPopEval\fP< EOT >::\fBpeoParaPopEval\fP (const std::vector< \fBeoEvalFunc\fP< EOT > * > & __funcs, \fBpeoAggEvalFunc\fP< EOT > & __merge_eval)" +.PP +Constructor function - a vector of EO-derived evaluation functors has to be specified as well as an aggregation function. +.PP +\fBParameters:\fP +.RS 4 +\fIconst\fP std :: vector< \fBeoEvalFunc\fP < EOT >* >& __funcs - vector of EO-derived partial evaluation functors; +.br +\fIpeoAggEvalFunc<\fP EOT >& __merge_eval - aggregation functor for creating a fitness value out of the partial fitness values. +.RE +.PP + +.PP +Definition at line 139 of file peoParaPopEval.h. +.SH "Member Function Documentation" +.PP +.SS "template void \fBpeoParaPopEval\fP< EOT >::operator() (\fBeoPop\fP< EOT > & __pop)\fC [virtual]\fP" +.PP +Operator for applying the evaluation functor (direct or aggregate) for each individual of the specified population. +.PP +\fBParameters:\fP +.RS 4 +\fIeoPop<\fP EOT >& __pop - population to be evaluated by applying the evaluation functor specified in the constructor. +.RE +.PP + +.PP +Implements \fBpeoPopEval< EOT >\fP. +.PP +Definition at line 150 of file peoParaPopEval.h. +.PP +References peoParaPopEval< EOT >::funcs, peoParaPopEval< EOT >::progression, Service::requestResourceRequest(), Communicable::stop(), peoParaPopEval< EOT >::tasks, and peoParaPopEval< EOT >::total. +.SS "template void \fBpeoParaPopEval\fP< EOT >::packData ()\fC [virtual]\fP" +.PP +Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. +.PP +There is no need to explicitly call the function. +.PP +Reimplemented from \fBService\fP. +.PP +Definition at line 171 of file peoParaPopEval.h. +.PP +References peoParaPopEval< EOT >::progression, and peoParaPopEval< EOT >::tasks. +.SS "template void \fBpeoParaPopEval\fP< EOT >::unpackData ()\fC [virtual]\fP" +.PP +Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. +.PP +There is no need to explicitly call the function. +.PP +Reimplemented from \fBService\fP. +.PP +Definition at line 185 of file peoParaPopEval.h. +.PP +References peoParaPopEval< EOT >::ad_sol, peoParaPopEval< EOT >::num_func, and peoParaPopEval< EOT >::sol. +.SS "template void \fBpeoParaPopEval\fP< EOT >::packResult ()\fC [virtual]\fP" +.PP +Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. +.PP +There is no need to explicitly call the function. +.PP +Reimplemented from \fBService\fP. +.PP +Definition at line 202 of file peoParaPopEval.h. +.PP +References peoParaPopEval< EOT >::ad_sol, and peoParaPopEval< EOT >::sol. +.SS "template void \fBpeoParaPopEval\fP< EOT >::unpackResult ()\fC [virtual]\fP" +.PP +Auxiliary function for transferring data between the process requesting an evaluation operation and the process that performs the actual evaluation phase. +.PP +There is no need to explicitly call the function. +.PP +Reimplemented from \fBService\fP. +.PP +Definition at line 211 of file peoParaPopEval.h. +.PP +References peoParaPopEval< EOT >::ad_sol, Service::getOwner(), peoParaPopEval< EOT >::merge_eval, peoParaPopEval< EOT >::progression, Communicable::resume(), Thread::setActive(), and peoParaPopEval< EOT >::total. +.SS "template void \fBpeoParaPopEval\fP< EOT >::notifySendingData ()\fC [virtual]\fP" +.PP +Auxiliary function for notifications between the process requesting an evaluation operation and the processes that performs the actual evaluation phase. +.PP +There is no need to explicitly call the function. +.PP +Reimplemented from \fBService\fP. +.PP +Definition at line 242 of file peoParaPopEval.h. +.SS "template void \fBpeoParaPopEval\fP< EOT >::notifySendingAllResourceRequests ()\fC [virtual]\fP" +.PP +Auxiliary function for notifications between the process requesting an evaluation operation and the processes that performs the actual evaluation phase. +.PP +There is no need to explicitly call the function. +.PP +Reimplemented from \fBService\fP. +.PP +Definition at line 247 of file peoParaPopEval.h. +.PP +References Service::getOwner(), and Thread::setPassive(). + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoParaSGATransform.3 b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoParaSGATransform.3 new file mode 100644 index 000000000..978501baf --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoParaSGATransform.3 @@ -0,0 +1,83 @@ +.TH "peoParaSGATransform" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-PEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoParaSGATransform \- +.SH SYNOPSIS +.br +.PP +Inherits \fBpeoTransform< EOT >< EOT >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBpeoParaSGATransform\fP (\fBeoQuadOp\fP< EOT > &__cross, double __cross_rate, \fBeoMonOp\fP< EOT > &__mut, double __mut_rate)" +.br +.ti -1c +.RI "void \fBoperator()\fP (\fBeoPop\fP< EOT > &__pop)" +.br +.ti -1c +.RI "void \fBpackData\fP ()" +.br +.ti -1c +.RI "void \fBunpackData\fP ()" +.br +.ti -1c +.RI "void \fBexecute\fP ()" +.br +.ti -1c +.RI "void \fBpackResult\fP ()" +.br +.ti -1c +.RI "void \fBunpackResult\fP ()" +.br +.ti -1c +.RI "void \fBnotifySendingData\fP ()" +.br +.ti -1c +.RI "void \fBnotifySendingAllResourceRequests\fP ()" +.br +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBeoQuadOp\fP< EOT > & \fBcross\fP" +.br +.ti -1c +.RI "double \fBcross_rate\fP" +.br +.ti -1c +.RI "\fBeoMonOp\fP< EOT > & \fBmut\fP" +.br +.ti -1c +.RI "double \fBmut_rate\fP" +.br +.ti -1c +.RI "unsigned \fBidx\fP" +.br +.ti -1c +.RI "\fBeoPop\fP< EOT > * \fBpop\fP" +.br +.ti -1c +.RI "EOT \fBfather\fP" +.br +.ti -1c +.RI "EOT \fBmother\fP" +.br +.ti -1c +.RI "unsigned \fBnum_term\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class peoParaSGATransform< EOT >" + +.PP +Definition at line 49 of file peoParaSGATransform.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoParallelAlgorithmWrapper.3 b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoParallelAlgorithmWrapper.3 new file mode 100644 index 000000000..71288d753 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoParallelAlgorithmWrapper.3 @@ -0,0 +1,53 @@ +.TH "peoParallelAlgorithmWrapper" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-PEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoParallelAlgorithmWrapper \- +.SH SYNOPSIS +.br +.PP +Inherits \fBRunner\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "template \fBpeoParallelAlgorithmWrapper\fP (AlgorithmType &externalAlgorithm)" +.br +.ti -1c +.RI "template \fBpeoParallelAlgorithmWrapper\fP (AlgorithmType &externalAlgorithm, AlgorithmDataType &externalData)" +.br +.ti -1c +.RI "\fB~peoParallelAlgorithmWrapper\fP ()" +.br +.ti -1c +.RI "void \fBrun\fP ()" +.br +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBAbstractAlgorithm\fP * \fBalgorithm\fP" +.br +.in -1c +.SS "Classes" + +.in +1c +.ti -1c +.RI "struct \fBAbstractAlgorithm\fP" +.br +.ti -1c +.RI "struct \fBAlgorithm\fP" +.br +.ti -1c +.RI "struct \fBAlgorithm< AlgorithmType, void >\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 47 of file peoParallelAlgorithmWrapper.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoParallelAlgorithmWrapper_AbstractAlgorithm.3 b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoParallelAlgorithmWrapper_AbstractAlgorithm.3 new file mode 100644 index 000000000..4eda5a990 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoParallelAlgorithmWrapper_AbstractAlgorithm.3 @@ -0,0 +1,27 @@ +.TH "peoParallelAlgorithmWrapper::AbstractAlgorithm" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-PEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoParallelAlgorithmWrapper::AbstractAlgorithm \- +.SH SYNOPSIS +.br +.PP +Inherited by \fBpeoParallelAlgorithmWrapper::Algorithm< AlgorithmType, AlgorithmDataType >\fP, and \fBpeoParallelAlgorithmWrapper::Algorithm< AlgorithmType, void >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "virtual \fB~AbstractAlgorithm\fP ()" +.br +.ti -1c +.RI "virtual void \fBoperator()\fP ()" +.br +.in -1c +.SH "Detailed Description" +.PP +Definition at line 71 of file peoParallelAlgorithmWrapper.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoParallelAlgorithmWrapper_Algorithm.3 b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoParallelAlgorithmWrapper_Algorithm.3 new file mode 100644 index 000000000..4982862ee --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoParallelAlgorithmWrapper_Algorithm.3 @@ -0,0 +1,41 @@ +.TH "peoParallelAlgorithmWrapper::Algorithm" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-PEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoParallelAlgorithmWrapper::Algorithm \- +.SH SYNOPSIS +.br +.PP +Inherits \fBpeoParallelAlgorithmWrapper::AbstractAlgorithm\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBAlgorithm\fP (AlgorithmType &externalAlgorithm, AlgorithmDataType &externalData)" +.br +.ti -1c +.RI "virtual void \fBoperator()\fP ()" +.br +.in -1c +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "AlgorithmType & \fBalgorithm\fP" +.br +.ti -1c +.RI "AlgorithmDataType & \fBalgorithmData\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template struct peoParallelAlgorithmWrapper::Algorithm< AlgorithmType, AlgorithmDataType >" + +.PP +Definition at line 81 of file peoParallelAlgorithmWrapper.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoParallelAlgorithmWrapper_Algorithm_ AlgorithmType, void _.3 b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoParallelAlgorithmWrapper_Algorithm_ AlgorithmType, void _.3 new file mode 100644 index 000000000..cfd54f2b4 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoParallelAlgorithmWrapper_Algorithm_ AlgorithmType, void _.3 @@ -0,0 +1,38 @@ +.TH "peoParallelAlgorithmWrapper::Algorithm< AlgorithmType, void >" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-PEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoParallelAlgorithmWrapper::Algorithm< AlgorithmType, void > \- +.SH SYNOPSIS +.br +.PP +Inherits \fBpeoParallelAlgorithmWrapper::AbstractAlgorithm\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBAlgorithm\fP (AlgorithmType &externalAlgorithm)" +.br +.ti -1c +.RI "virtual void \fBoperator()\fP ()" +.br +.in -1c +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "AlgorithmType & \fBalgorithm\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template struct peoParallelAlgorithmWrapper::Algorithm< AlgorithmType, void >" + +.PP +Definition at line 95 of file peoParallelAlgorithmWrapper.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoPopEval.3 b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoPopEval.3 new file mode 100644 index 000000000..2b0d9884f --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoPopEval.3 @@ -0,0 +1,37 @@ +.TH "peoPopEval" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-PEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoPopEval \- The \fB\fBpeoPopEval\fP\fP class provides the interface for constructing ParadisEO specific evaluation functors. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBService\fP. +.PP +Inherited by \fBpeoParaPopEval< EOT >\fP, and \fBpeoSeqPopEval< EOT >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "virtual void \fBoperator()\fP (\fBeoPop\fP< EOT > &__pop)=0" +.br +.RI "\fIInterface function providing the signature for constructing an evaluation functor. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class peoPopEval< EOT >" +The \fB\fBpeoPopEval\fP\fP class provides the interface for constructing ParadisEO specific evaluation functors. + +The derived classes may be used as wrappers for \fB\fBEO\fP\fP-derived evaluation functors. In order to have an example, please refer to the implementation of the \fB\fBpeoSeqPopEval\fP\fP and \fB\fBpeoParaPopEval\fP\fP classes. +.PP +Definition at line 47 of file peoPopEval.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoSeqPopEval.3 b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoSeqPopEval.3 new file mode 100644 index 000000000..745865e94 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoSeqPopEval.3 @@ -0,0 +1,78 @@ +.TH "peoSeqPopEval" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-PEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoSeqPopEval \- The \fBpeoSeqPopEval\fP class acts only as a ParadisEO specific sequential evaluation functor - a wrapper for incorporating an \fBeoEvalFunc< EOT >\fP-derived class as evaluation functor. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBpeoPopEval< EOT >< EOT >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBpeoSeqPopEval\fP (\fBeoEvalFunc\fP< EOT > &__eval)" +.br +.RI "\fIConstructor function - it only sets an internal reference to point to the specified evaluation object. \fP" +.ti -1c +.RI "void \fBoperator()\fP (\fBeoPop\fP< EOT > &__pop)" +.br +.RI "\fIOperator for evaluating all the individuals of a given population - in a sequential iterative manner. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBeoEvalFunc\fP< EOT > & \fBeval\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class peoSeqPopEval< EOT >" +The \fBpeoSeqPopEval\fP class acts only as a ParadisEO specific sequential evaluation functor - a wrapper for incorporating an \fBeoEvalFunc< EOT >\fP-derived class as evaluation functor. + +The specified \fBEO\fP evaluation object is applyied in an iterative manner to each individual of a specified population. +.PP +Definition at line 49 of file peoSeqPopEval.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBpeoSeqPopEval\fP< EOT >::\fBpeoSeqPopEval\fP (\fBeoEvalFunc\fP< EOT > & __eval)" +.PP +Constructor function - it only sets an internal reference to point to the specified evaluation object. +.PP +\fBParameters:\fP +.RS 4 +\fIeoEvalFunc<\fP EOT >& __eval - evaluation object to be applied for each individual of a specified population +.RE +.PP + +.PP +Definition at line 69 of file peoSeqPopEval.h. +.SH "Member Function Documentation" +.PP +.SS "template void \fBpeoSeqPopEval\fP< EOT >::operator() (\fBeoPop\fP< EOT > & __pop)\fC [virtual]\fP" +.PP +Operator for evaluating all the individuals of a given population - in a sequential iterative manner. +.PP +\fBParameters:\fP +.RS 4 +\fIeoPop<\fP EOT >& __pop - population to be evaluated. +.RE +.PP + +.PP +Implements \fBpeoPopEval< EOT >\fP. +.PP +Definition at line 74 of file peoSeqPopEval.h. +.PP +References peoSeqPopEval< EOT >::eval. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoSeqTransform.3 b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoSeqTransform.3 new file mode 100644 index 000000000..78cb6d706 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoSeqTransform.3 @@ -0,0 +1,96 @@ +.TH "peoSeqTransform" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-PEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoSeqTransform \- The \fBpeoSeqTransform\fP represent a wrapper for offering the possibility of using \fBEO\fP derived transform operators along with the ParadisEO evolutionary algorithms. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBpeoTransform< EOT >< EOT >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBpeoSeqTransform\fP (\fBeoTransform\fP< EOT > &__trans)" +.br +.RI "\fIConstructor function - sets an internal reference towards the specified EO-derived transform object. \fP" +.ti -1c +.RI "void \fBoperator()\fP (\fBeoPop\fP< EOT > &__pop)" +.br +.RI "\fIOperator for applying the specified transform operators on each individual of the given population. \fP" +.ti -1c +.RI "virtual void \fBpackData\fP ()" +.br +.RI "\fIInterface function for providing a link with the parallel architecture of the ParadisEO framework. \fP" +.ti -1c +.RI "virtual void \fBunpackData\fP ()" +.br +.RI "\fIInterface function for providing a link with the parallel architecture of the ParadisEO framework. \fP" +.ti -1c +.RI "virtual void \fBexecute\fP ()" +.br +.RI "\fIInterface function for providing a link with the parallel architecture of the ParadisEO framework. \fP" +.ti -1c +.RI "virtual void \fBpackResult\fP ()" +.br +.RI "\fIInterface function for providing a link with the parallel architecture of the ParadisEO framework. \fP" +.ti -1c +.RI "virtual void \fBunpackResult\fP ()" +.br +.RI "\fIInterface function for providing a link with the parallel architecture of the ParadisEO framework. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBeoTransform\fP< EOT > & \fBtrans\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class peoSeqTransform< EOT >" +The \fBpeoSeqTransform\fP represent a wrapper for offering the possibility of using \fBEO\fP derived transform operators along with the ParadisEO evolutionary algorithms. + +A minimal set of interface functions is also provided for creating the link with the parallel architecture of the ParadisEO framework. +.PP +Definition at line 48 of file peoSeqTransform.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBpeoSeqTransform\fP< EOT >::\fBpeoSeqTransform\fP (\fBeoTransform\fP< EOT > & __trans)" +.PP +Constructor function - sets an internal reference towards the specified EO-derived transform object. +.PP +\fBParameters:\fP +.RS 4 +\fIeoTransform<\fP EOT >& __trans - EO-derived transform object including crossover and mutation operators. +.RE +.PP + +.PP +Definition at line 83 of file peoSeqTransform.h. +.SH "Member Function Documentation" +.PP +.SS "template void \fBpeoSeqTransform\fP< EOT >::operator() (\fBeoPop\fP< EOT > & __pop)" +.PP +Operator for applying the specified transform operators on each individual of the given population. +.PP +\fBParameters:\fP +.RS 4 +\fIeoPop<\fP EOT >& __pop - population to be transformed by applying the crossover and mutation operators. +.RE +.PP + +.PP +Definition at line 88 of file peoSeqTransform.h. +.PP +References peoSeqTransform< EOT >::trans. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoSyncIslandMig.3 b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoSyncIslandMig.3 new file mode 100644 index 000000000..d9854a182 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoSyncIslandMig.3 @@ -0,0 +1,183 @@ +.TH "peoSyncIslandMig" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-PEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoSyncIslandMig \- The \fBpeoSyncIslandMig\fP class offers the elementary basis for implementating a synchronous island migration model - requires the specification of several basic parameters, i.e. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBCooperative\fP, and \fBeoUpdater\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBpeoSyncIslandMig\fP (unsigned __frequency, \fBeoSelect\fP< EOT > &__select, \fBeoReplacement\fP< EOT > &__replace, \fBTopology\fP &__topology, \fBeoPop\fP< EOT > &__source, \fBeoPop\fP< EOT > &__destination)" +.br +.RI "\fIConstructor for the \fBpeoSyncIslandMig\fP class; the characteristics of the migration model are defined through the specified parameters - out of the box objects provided in \fBEO\fP, etc., or custom, derived objects may be passed as parameters. \fP" +.ti -1c +.RI "void \fBoperator()\fP ()" +.br +.RI "\fI\fBFunction\fP operator to be called as checkpoint for performing the migration step. \fP" +.ti -1c +.RI "void \fBpack\fP ()" +.br +.RI "\fIAuxiliary function dealing with sending the emigrant individuals. There is no need to explicitly call the function. \fP" +.ti -1c +.RI "void \fBunpack\fP ()" +.br +.RI "\fIAuxiliary function dealing with receiving immigrant individuals. There is no need to explicitly call the function. \fP" +.ti -1c +.RI "void \fBnotifySending\fP ()" +.br +.RI "\fIAuxiliary function dealing with migration notifications. There is no need to explicitly call the function. \fP" +.in -1c +.SS "Private Member Functions" + +.in +1c +.ti -1c +.RI "void \fBemigrate\fP ()" +.br +.ti -1c +.RI "void \fBimmigrate\fP ()" +.br +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBeoPeriodicContinue\fP< EOT > \fBcont\fP" +.br +.ti -1c +.RI "\fBeoSelect\fP< EOT > & \fBselect\fP" +.br +.ti -1c +.RI "\fBeoReplacement\fP< EOT > & \fBreplace\fP" +.br +.ti -1c +.RI "\fBTopology\fP & \fBtopology\fP" +.br +.ti -1c +.RI "\fBeoPop\fP< EOT > & \fBsource\fP" +.br +.ti -1c +.RI "\fBeoPop\fP< EOT > & \fBdestination\fP" +.br +.ti -1c +.RI "std::queue< \fBeoPop\fP< EOT > > \fBimm\fP" +.br +.ti -1c +.RI "std::queue< \fBeoPop\fP< EOT > > \fBem\fP" +.br +.ti -1c +.RI "std::queue< \fBCooperative\fP * > \fBcoop_em\fP" +.br +.ti -1c +.RI "sem_t \fBsync\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class peoSyncIslandMig< EOT >" +The \fBpeoSyncIslandMig\fP class offers the elementary basis for implementating a synchronous island migration model - requires the specification of several basic parameters, i.e. + +frequency of the migrations, selection and replacement strategies, a topological model and the source and destination population for the migrating individuals. The main difference as opposed to the asynchronous migration model is the synchronization step performed after selecting and sending the emigrant individuals. +.PP +The migration operator is called at the end of each generation of an evolutionary algorithms as a checkpoint object - the following code exposes the structure of a classic evolutionary algorithm: +.PP +\fBdo\fP { select( population, offsprings ); // select the offsprings from the current population transform( offsprings ); // crossover and mutation operators are applied on the selected offsprings evaluate( offsprings ); // evaluation step of the resulting offspring replace( population, offsprings ); // replace the individuals in the current population whith individuals from the offspring population, according to a specified replacement strategy } \fBwhile\fP ( eaCheckpointContinue( population ) ); // checkpoint operators are applied on the current population, including the migration operator, if any specified +.PP +Constructing a synchronous island migration model requires having defined (1) a topological migration model, (2) the control parameters of the migration process, (3) a checkpoint object associated with an evolutionary algorithm, and (4) an owner object must be set. The owner object must be derived from the \fB\fBRunner\fP\fP class (for example a \fBpeoEA\fP object represents a possible owner). A simple example is offered bellow: +.PP +.PD 0 +.IP "1." 4 +topological model to be followed when performing migrations: +.br + +.br + \fBRingTopology\fP migTopology; // a simple ring topological model - each island communicates with two other islands +.PP + +.IP "2." 4 +the continuation criterion, selection and replacement strategy etc. are defined: +.br + +.br + eoPop< EOT > population( POP_SIZE, popInitializer ); // population of individuals to be used for the evolutionary algorithm eoRandomSelect< EOT > migSelectStrategy; // selection strategy - in this case a random selection is applied eoSelectNumber< EOT > migSelect( migSelectStrategy, MIG_SIZE ); // number of individuals to be selected using the specified strategy eoPlusReplacement< EOT > migReplace; // immigration strategy - the worse individuals in the destination population are replaced by the immigrant individuals peoSyncIslandMig< EOT > syncMigration( +.br + MIG_FREQ, migSelect, migReplace, migTopology, +.br + population, population +.br + ); // synchronous migration object - the emigrant individuals are selected from the same from population in which the immigrant individuals are being integrated +.PP + +.IP "3." 4 +creation of a checkpoint object as part of the definition of an evolutionary algoritm (details of th EA not given as being out of scope): +.br + +.br + ... eoGenContinue< EOT > eaCont( NUM_GEN ); // the evolutionary algorithm will stop after NUM_GEN generations eoCheckPoint< EOT > eaCheckpointContinue( eaCont ); // number of individuals to be selected using the specified strategy ... eaCheckpointContinue.add( syncMigration ); // adding the migration operator as checkpoint element ... +.PP + +.IP "4." 4 +definition of an owner evolutionary algorithm (an object inheriting the \fB\fBRunner\fP\fP class): +.br + +.br + peoEA< EOT > eaAlg( eaCheckpointContinue, eaPopEval, eaSelect, eaTransform, eaReplace); // evolutionary algorithm having as checkpoint the eaCheckpointContinue object defined above syncMigration.setOwner( eaAlg ); // setting the evolutionary algorithm as owner of the migration object eaAlg( population ); // applying the evolutionary algorithm on a given population +.PP +.PP +The source and the destination population for the migration object were specified as being the same, in step no. 2, as we are usually interested in selecting the emigrants and integrating the immigrant individuals from and in, respectively, one unique population, iteratively evolved by an evolutionary algorithm. There is no restriction in having two distinct populations as source and destination for the emigrant and immigrant individuals respectively. +.PP +The above steps only create a synchronous migration object associated to an evolutionary algorithm. The creation of several islands requires the reiteration of the steps 2 through 4 for creating distinct algorithms, with distinct populations and the associated distinctly parametrized migration objects. The interconnecting element is the underlying topology, defined at step 1 (the same C++ migTopology object has to be passed as parameter for all the migration objects, in order to interconnect them). +.PP +Definition at line 142 of file peoSyncIslandMig.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBpeoSyncIslandMig\fP< EOT >::\fBpeoSyncIslandMig\fP (unsigned __frequency, \fBeoSelect\fP< EOT > & __select, \fBeoReplacement\fP< EOT > & __replace, \fBTopology\fP & __topology, \fBeoPop\fP< EOT > & __source, \fBeoPop\fP< EOT > & __destination)" +.PP +Constructor for the \fBpeoSyncIslandMig\fP class; the characteristics of the migration model are defined through the specified parameters - out of the box objects provided in \fBEO\fP, etc., or custom, derived objects may be passed as parameters. +.PP +\fBParameters:\fP +.RS 4 +\fIunsigned\fP __frequency - frequency of the migrations - the migrations occur periodically; +.br +\fIeoSelect<\fP EOT >& __select - selection strategy to be applied for constructing a list of emigrant individuals out of the source population; +.br +\fIeoReplacement<\fP EOT >& __replace - replacement strategy used for integrating the immigrant individuals in the destination population; +.br +\fITopology&\fP __topology - topological model to be followed when performing migrations; +.br +\fIeoPop<\fP EOT >& __source - source population from which the emigrant individuals are selected; +.br +\fIeoPop<\fP EOT >& __destination - destination population in which the immigrant population are integrated. +.RE +.PP + +.PP +Definition at line 206 of file peoSyncIslandMig.h. +.PP +References Topology::add(), and peoSyncIslandMig< EOT >::sync. +.SH "Member Function Documentation" +.PP +.SS "template void \fBpeoSyncIslandMig\fP< EOT >::operator() ()\fC [virtual]\fP" +.PP +\fBFunction\fP operator to be called as checkpoint for performing the migration step. +.PP +The emigrant individuals are selected from the source population and sent to the next island (defined by the topology object) while the immigrant individuals are integrated in the destination population. There is no need to explicitly call the function - the wrapper checkpoint object (please refer to the above example) will perform the call when required. +.PP +Implements \fBeoF< void >\fP. +.PP +Definition at line 280 of file peoSyncIslandMig.h. +.PP +References peoSyncIslandMig< EOT >::cont, peoSyncIslandMig< EOT >::emigrate(), Cooperative::getOwner(), peoSyncIslandMig< EOT >::immigrate(), Thread::setActive(), peoSyncIslandMig< EOT >::source, Communicable::stop(), and peoSyncIslandMig< EOT >::sync. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoSyncMultiStart.3 b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoSyncMultiStart.3 new file mode 100644 index 000000000..5decd8736 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoSyncMultiStart.3 @@ -0,0 +1,211 @@ +.TH "peoSyncMultiStart" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-PEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoSyncMultiStart \- The \fBpeoSyncMultiStart\fP class provides the basis for implementing the synchronous multi-start model, for launching several solution-based algorithms in parallel on a specified initial population. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBService\fP, and \fBeoUpdater\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBpeoSyncMultiStart\fP (\fBeoContinue\fP< EOT > &__cont, \fBeoSelect\fP< EOT > &__select, \fBeoReplacement\fP< EOT > &__replace, \fBmoAlgo\fP< EOT > &__ls, \fBeoPop\fP< EOT > &__pop)" +.br +.RI "\fIConstructor function - several simple parameters are required for defining the characteristics of the multi-start model. \fP" +.ti -1c +.RI "void \fBoperator()\fP ()" +.br +.RI "\fIOperator which synchronously executes the specified algorithm on the individuals selected from the initial population. \fP" +.ti -1c +.RI "void \fBpackData\fP ()" +.br +.RI "\fIAuxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. \fP" +.ti -1c +.RI "void \fBunpackData\fP ()" +.br +.RI "\fIAuxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. \fP" +.ti -1c +.RI "void \fBexecute\fP ()" +.br +.RI "\fIAuxiliary function for actually executing the specified algorithm on one assigned individual. \fP" +.ti -1c +.RI "void \fBpackResult\fP ()" +.br +.RI "\fIAuxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. \fP" +.ti -1c +.RI "void \fBunpackResult\fP ()" +.br +.RI "\fIAuxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. \fP" +.ti -1c +.RI "void \fBnotifySendingData\fP ()" +.br +.RI "\fIAuxiliary function for notifications between the process requesting the synchronous multi-start execution and the processes that performs the actual execution phase. \fP" +.ti -1c +.RI "void \fBnotifySendingAllResourceRequests\fP ()" +.br +.RI "\fIAuxiliary function for notifications between the process requesting the synchronous multi-start execution and the processes that performs the actual execution phase. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBeoContinue\fP< EOT > & \fBcont\fP" +.br +.ti -1c +.RI "\fBeoSelect\fP< EOT > & \fBselect\fP" +.br +.ti -1c +.RI "\fBeoReplacement\fP< EOT > & \fBreplace\fP" +.br +.ti -1c +.RI "\fBmoAlgo\fP< EOT > & \fBls\fP" +.br +.ti -1c +.RI "\fBeoPop\fP< EOT > & \fBpop\fP" +.br +.ti -1c +.RI "\fBeoPop\fP< EOT > \fBsel\fP" +.br +.ti -1c +.RI "\fBeoPop\fP< EOT > \fBimpr_sel\fP" +.br +.ti -1c +.RI "EOT \fBsol\fP" +.br +.ti -1c +.RI "unsigned \fBidx\fP" +.br +.ti -1c +.RI "unsigned \fBnum_term\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class peoSyncMultiStart< EOT >" +The \fBpeoSyncMultiStart\fP class provides the basis for implementing the synchronous multi-start model, for launching several solution-based algorithms in parallel on a specified initial population. + +As a simple example, several hill climbing algorithms may be synchronously launched on the specified population, each algorithm acting upon one individual only, the final result being integrated back in the population. A \fBpeoSyncMultiStart\fP object can be specified as checkpoint object for a classic ParadisEO evolutionary algorithm thus allowing for simple hybridization schemes which combine the evolutionary approach with a local search approach, for example, executed at the end of each generation. +.PP +Definition at line 64 of file peoSyncMultiStart.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBpeoSyncMultiStart\fP< EOT >::\fBpeoSyncMultiStart\fP (\fBeoContinue\fP< EOT > & __cont, \fBeoSelect\fP< EOT > & __select, \fBeoReplacement\fP< EOT > & __replace, \fBmoAlgo\fP< EOT > & __ls, \fBeoPop\fP< EOT > & __pop)" +.PP +Constructor function - several simple parameters are required for defining the characteristics of the multi-start model. +.PP +\fBParameters:\fP +.RS 4 +\fIeoContinue<\fP EOT >& __cont - defined for including further functionality - no semantics associated at this time; +.br +\fIeoSelect<\fP EOT >& __select - selection strategy for obtaining a subset of the initial population on which to apply the specified algorithm; +.br +\fIeoReplacement<\fP EOT >& __replace - replacement strategy for integrating the resulting individuals in the initial population; +.br +\fImoAlgo<\fP EOT >& __ls - algorithm to be applied on each of the selected individuals - a \fBmoAlgo< EOT >\fP-derived object must be specified; +.br +\fIeoPop<\fP EOT >& __pop - the initial population from which the individuals are selected for applying the specified algorithm. +.RE +.PP + +.PP +Definition at line 134 of file peoSyncMultiStart.h. +.SH "Member Function Documentation" +.PP +.SS "template void \fBpeoSyncMultiStart\fP< EOT >::operator() ()\fC [virtual]\fP" +.PP +Operator which synchronously executes the specified algorithm on the individuals selected from the initial population. +.PP +There is no need to explicitly call the operator - automatically called as checkpoint operator. +.PP +Implements \fBeoF< void >\fP. +.PP +Definition at line 189 of file peoSyncMultiStart.h. +.PP +References peoSyncMultiStart< EOT >::idx, peoSyncMultiStart< EOT >::impr_sel, peoSyncMultiStart< EOT >::num_term, peoSyncMultiStart< EOT >::pop, Service::requestResourceRequest(), peoSyncMultiStart< EOT >::sel, peoSyncMultiStart< EOT >::select, and Communicable::stop(). +.SS "template void \fBpeoSyncMultiStart\fP< EOT >::packData ()\fC [virtual]\fP" +.PP +Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. +.PP +There is no need to explicitly call the function. +.PP +Reimplemented from \fBService\fP. +.PP +Definition at line 148 of file peoSyncMultiStart.h. +.PP +References peoSyncMultiStart< EOT >::idx, and peoSyncMultiStart< EOT >::sel. +.SS "template void \fBpeoSyncMultiStart\fP< EOT >::unpackData ()\fC [virtual]\fP" +.PP +Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. +.PP +There is no need to explicitly call the function. +.PP +Reimplemented from \fBService\fP. +.PP +Definition at line 154 of file peoSyncMultiStart.h. +.PP +References peoSyncMultiStart< EOT >::sol. +.SS "template void \fBpeoSyncMultiStart\fP< EOT >::execute ()\fC [virtual]\fP" +.PP +Auxiliary function for actually executing the specified algorithm on one assigned individual. +.PP +There is no need to explicitly call the function. +.PP +Reimplemented from \fBService\fP. +.PP +Definition at line 160 of file peoSyncMultiStart.h. +.PP +References peoSyncMultiStart< EOT >::ls, and peoSyncMultiStart< EOT >::sol. +.SS "template void \fBpeoSyncMultiStart\fP< EOT >::packResult ()\fC [virtual]\fP" +.PP +Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. +.PP +There is no need to explicitly call the function. +.PP +Reimplemented from \fBService\fP. +.PP +Definition at line 166 of file peoSyncMultiStart.h. +.PP +References peoSyncMultiStart< EOT >::sol. +.SS "template void \fBpeoSyncMultiStart\fP< EOT >::unpackResult ()\fC [virtual]\fP" +.PP +Auxiliary function for transferring data between the process requesting the synchronous execution of the specified algorithm and the process which actually executes the algorithm. +.PP +There is no need to explicitly call the function. +.PP +Reimplemented from \fBService\fP. +.PP +Definition at line 172 of file peoSyncMultiStart.h. +.PP +References Service::getOwner(), peoSyncMultiStart< EOT >::impr_sel, peoSyncMultiStart< EOT >::num_term, peoSyncMultiStart< EOT >::pop, peoSyncMultiStart< EOT >::replace, Communicable::resume(), peoSyncMultiStart< EOT >::sel, Thread::setActive(), and peoSyncMultiStart< EOT >::sol. +.SS "template void \fBpeoSyncMultiStart\fP< EOT >::notifySendingData ()\fC [virtual]\fP" +.PP +Auxiliary function for notifications between the process requesting the synchronous multi-start execution and the processes that performs the actual execution phase. +.PP +There is no need to explicitly call the function. +.PP +Reimplemented from \fBService\fP. +.PP +Definition at line 200 of file peoSyncMultiStart.h. +.SS "template void \fBpeoSyncMultiStart\fP< EOT >::notifySendingAllResourceRequests ()\fC [virtual]\fP" +.PP +Auxiliary function for notifications between the process requesting the synchronous multi-start execution and the processes that performs the actual execution phase. +.PP +There is no need to explicitly call the function. +.PP +Reimplemented from \fBService\fP. +.PP +Definition at line 205 of file peoSyncMultiStart.h. +.PP +References Service::getOwner(), and Thread::setPassive(). + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoSynchronousMultiStart.3 b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoSynchronousMultiStart.3 new file mode 100644 index 000000000..166617ead --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoSynchronousMultiStart.3 @@ -0,0 +1,117 @@ +.TH "peoSynchronousMultiStart" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-PEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoSynchronousMultiStart \- +.SH SYNOPSIS +.br +.PP +Inherits \fBService\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "template \fBpeoSynchronousMultiStart\fP (AlgorithmType &externalAlgorithm)" +.br +.ti -1c +.RI "template \fBpeoSynchronousMultiStart\fP (std::vector< AlgorithmType * > &externalAlgorithms, AggregationFunctionType &externalAggregationFunction)" +.br +.ti -1c +.RI "\fB~peoSynchronousMultiStart\fP ()" +.br +.ti -1c +.RI "template void \fBoperator()\fP (Type &externalData)" +.br +.ti -1c +.RI "template void \fBoperator()\fP (const Type &externalDataBegin, const Type &externalDataEnd)" +.br +.ti -1c +.RI "void \fBpackData\fP ()" +.br +.ti -1c +.RI "void \fBunpackData\fP ()" +.br +.ti -1c +.RI "void \fBexecute\fP ()" +.br +.ti -1c +.RI "void \fBpackResult\fP ()" +.br +.ti -1c +.RI "void \fBunpackResult\fP ()" +.br +.ti -1c +.RI "void \fBnotifySendingData\fP ()" +.br +.ti -1c +.RI "void \fBnotifySendingAllResourceRequests\fP ()" +.br +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBAbstractAlgorithm\fP * \fBsingularAlgorithm\fP" +.br +.ti -1c +.RI "std::vector< \fBAbstractAlgorithm\fP * > \fBalgorithms\fP" +.br +.ti -1c +.RI "\fBAbstractAggregationAlgorithm\fP * \fBaggregationFunction\fP" +.br +.ti -1c +.RI "EntityType \fBentityTypeInstance\fP" +.br +.ti -1c +.RI "std::vector< \fBAbstractDataType\fP * > \fBdata\fP" +.br +.ti -1c +.RI "unsigned \fBidx\fP" +.br +.ti -1c +.RI "unsigned \fBnum_term\fP" +.br +.ti -1c +.RI "unsigned \fBdataIndex\fP" +.br +.ti -1c +.RI "unsigned \fBfunctionIndex\fP" +.br +.in -1c +.SS "Classes" + +.in +1c +.ti -1c +.RI "struct \fBAbstractAggregationAlgorithm\fP" +.br +.ti -1c +.RI "struct \fBAbstractAlgorithm\fP" +.br +.ti -1c +.RI "struct \fBAbstractDataType\fP" +.br +.ti -1c +.RI "struct \fBAggregationAlgorithm\fP" +.br +.ti -1c +.RI "struct \fBAlgorithm\fP" +.br +.ti -1c +.RI "struct \fBDataType\fP" +.br +.ti -1c +.RI "struct \fBNoAggregationFunction\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class peoSynchronousMultiStart< EntityType >" + +.PP +Definition at line 45 of file peoSynchronousMultiStart.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoSynchronousMultiStart_AbstractAggregationAlgorithm.3 b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoSynchronousMultiStart_AbstractAggregationAlgorithm.3 new file mode 100644 index 000000000..409b9e62f --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoSynchronousMultiStart_AbstractAggregationAlgorithm.3 @@ -0,0 +1,31 @@ +.TH "peoSynchronousMultiStart::AbstractAggregationAlgorithm" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-PEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoSynchronousMultiStart::AbstractAggregationAlgorithm \- +.SH SYNOPSIS +.br +.PP +Inherited by \fBpeoSynchronousMultiStart< EntityType >::AggregationAlgorithm< AggregationAlgorithmType >\fP, and \fBpeoSynchronousMultiStart< EntityType >::NoAggregationFunction\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "virtual \fB~AbstractAggregationAlgorithm\fP ()" +.br +.ti -1c +.RI "virtual void \fBoperator()\fP (\fBAbstractDataType\fP &dataTypeInstanceA, \fBAbstractDataType\fP &dataTypeInstanceB)" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template struct peoSynchronousMultiStart< EntityType >::AbstractAggregationAlgorithm" + +.PP +Definition at line 157 of file peoSynchronousMultiStart.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoSynchronousMultiStart_AbstractAlgorithm.3 b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoSynchronousMultiStart_AbstractAlgorithm.3 new file mode 100644 index 000000000..9bfd71852 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoSynchronousMultiStart_AbstractAlgorithm.3 @@ -0,0 +1,31 @@ +.TH "peoSynchronousMultiStart::AbstractAlgorithm" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-PEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoSynchronousMultiStart::AbstractAlgorithm \- +.SH SYNOPSIS +.br +.PP +Inherited by \fBpeoSynchronousMultiStart< EntityType >::Algorithm< AlgorithmType >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "virtual \fB~AbstractAlgorithm\fP ()" +.br +.ti -1c +.RI "virtual void \fBoperator()\fP (\fBAbstractDataType\fP &dataTypeInstance)" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template struct peoSynchronousMultiStart< EntityType >::AbstractAlgorithm" + +.PP +Definition at line 139 of file peoSynchronousMultiStart.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoSynchronousMultiStart_AbstractDataType.3 b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoSynchronousMultiStart_AbstractDataType.3 new file mode 100644 index 000000000..ed1b5ee4d --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoSynchronousMultiStart_AbstractDataType.3 @@ -0,0 +1,31 @@ +.TH "peoSynchronousMultiStart::AbstractDataType" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-PEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoSynchronousMultiStart::AbstractDataType \- +.SH SYNOPSIS +.br +.PP +Inherited by \fBpeoSynchronousMultiStart< EntityType >::DataType< Type >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "virtual \fB~AbstractDataType\fP ()" +.br +.ti -1c +.RI "template \fBoperator Type &\fP ()" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template struct peoSynchronousMultiStart< EntityType >::AbstractDataType" + +.PP +Definition at line 122 of file peoSynchronousMultiStart.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoSynchronousMultiStart_AggregationAlgorithm.3 b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoSynchronousMultiStart_AggregationAlgorithm.3 new file mode 100644 index 000000000..5f26001fc --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoSynchronousMultiStart_AggregationAlgorithm.3 @@ -0,0 +1,38 @@ +.TH "peoSynchronousMultiStart::AggregationAlgorithm" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-PEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoSynchronousMultiStart::AggregationAlgorithm \- +.SH SYNOPSIS +.br +.PP +Inherits \fBpeoSynchronousMultiStart< EntityType >::AbstractAggregationAlgorithm\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBAggregationAlgorithm\fP (AggregationAlgorithmType &externalAggregationAlgorithm)" +.br +.ti -1c +.RI "void \fBoperator()\fP (\fBAbstractDataType\fP &dataTypeInstanceA, \fBAbstractDataType\fP &dataTypeInstanceB)" +.br +.in -1c +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "AggregationAlgorithmType & \fBaggregationAlgorithm\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "templatetemplate struct peoSynchronousMultiStart< EntityType >::AggregationAlgorithm< AggregationAlgorithmType >" + +.PP +Definition at line 164 of file peoSynchronousMultiStart.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoSynchronousMultiStart_Algorithm.3 b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoSynchronousMultiStart_Algorithm.3 new file mode 100644 index 000000000..2336cfde9 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoSynchronousMultiStart_Algorithm.3 @@ -0,0 +1,38 @@ +.TH "peoSynchronousMultiStart::Algorithm" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-PEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoSynchronousMultiStart::Algorithm \- +.SH SYNOPSIS +.br +.PP +Inherits \fBpeoSynchronousMultiStart< EntityType >::AbstractAlgorithm\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBAlgorithm\fP (AlgorithmType &externalAlgorithm)" +.br +.ti -1c +.RI "void \fBoperator()\fP (\fBAbstractDataType\fP &dataTypeInstance)" +.br +.in -1c +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "AlgorithmType & \fBalgorithm\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "templatetemplate struct peoSynchronousMultiStart< EntityType >::Algorithm< AlgorithmType >" + +.PP +Definition at line 146 of file peoSynchronousMultiStart.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoSynchronousMultiStart_DataType.3 b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoSynchronousMultiStart_DataType.3 new file mode 100644 index 000000000..bd97d38d5 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoSynchronousMultiStart_DataType.3 @@ -0,0 +1,35 @@ +.TH "peoSynchronousMultiStart::DataType" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-PEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoSynchronousMultiStart::DataType \- +.SH SYNOPSIS +.br +.PP +Inherits \fBpeoSynchronousMultiStart< EntityType >::AbstractDataType\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBDataType\fP (Type &externalData)" +.br +.in -1c +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "Type & \fBdata\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "templatetemplate struct peoSynchronousMultiStart< EntityType >::DataType< Type >" + +.PP +Definition at line 132 of file peoSynchronousMultiStart.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoSynchronousMultiStart_NoAggregationFunction.3 b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoSynchronousMultiStart_NoAggregationFunction.3 new file mode 100644 index 000000000..2cd5af48d --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoSynchronousMultiStart_NoAggregationFunction.3 @@ -0,0 +1,28 @@ +.TH "peoSynchronousMultiStart::NoAggregationFunction" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-PEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoSynchronousMultiStart::NoAggregationFunction \- +.SH SYNOPSIS +.br +.PP +Inherits \fBpeoSynchronousMultiStart< EntityType >::AbstractAggregationAlgorithm\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "void \fBoperator()\fP (\fBAbstractDataType\fP &dataTypeInstanceA, \fBAbstractDataType\fP &dataTypeInstanceB)" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SS "template struct peoSynchronousMultiStart< EntityType >::NoAggregationFunction" + +.PP +Definition at line 176 of file peoSynchronousMultiStart.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoTransform.3 b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoTransform.3 new file mode 100644 index 000000000..2ffdb3dd9 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/man/man3/peoTransform.3 @@ -0,0 +1,27 @@ +.TH "peoTransform" 3 "8 Oct 2007" "Version 1.0" "ParadisEO-PEOMovingObjects" \" -*- nroff -*- +.ad l +.nh +.SH NAME +peoTransform \- The \fBpeoTransform\fP class acts only as an interface for creating transform operators - for an example please refer to the \fB\fBpeoSeqTransform\fP\fP and the \fB\fBpeoParaSGATransform\fP\fP classes. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBService\fP, and \fBeoTransform< EOT >< EOT >\fP. +.PP +Inherited by \fBpeoParaSGATransform< EOT >\fP, and \fBpeoSeqTransform< EOT >\fP. +.PP +.SH "Detailed Description" +.PP + +.SS "template class peoTransform< EOT >" +The \fBpeoTransform\fP class acts only as an interface for creating transform operators - for an example please refer to the \fB\fBpeoSeqTransform\fP\fP and the \fB\fBpeoParaSGATransform\fP\fP classes. +.PP +Definition at line 48 of file peoTransform.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for ParadisEO-PEOMovingObjects from the source code. diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/peo.doxyfile.cmake b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/peo.doxyfile.cmake new file mode 100644 index 000000000..70be700cf --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/doc/peo.doxyfile.cmake @@ -0,0 +1,239 @@ +# Doxyfile 1.4.7 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +PROJECT_NAME = @PACKAGE_NAME@ +PROJECT_NUMBER = @PACKAGE_VERSION@ +OUTPUT_DIRECTORY = @CMAKE_BINARY_DIR@/doc +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +USE_WINDOWS_ENCODING = NO +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = NO +STRIP_FROM_PATH = @CMAKE_SOURCE_DIR@ +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = YES +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = NO +INHERIT_DOCS = YES +SEPARATE_MEMBER_PAGES = NO +TAB_SIZE = 8 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = NO +OPTIMIZE_OUTPUT_JAVA = NO +BUILTIN_STL_SUPPORT = NO +DISTRIBUTE_GROUP_DOC = NO +SUBGROUPING = YES +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = NO +EXTRACT_PRIVATE = YES +EXTRACT_STATIC = YES +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = NO +HIDE_UNDOC_MEMBERS = YES +HIDE_UNDOC_CLASSES = YES +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = YES +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = NO +SORT_BRIEF_DOCS = NO +SORT_BY_SCOPE_NAME = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_DIRECTORIES = NO +FILE_VERSION_FILTER = +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = YES +WARNINGS = NO +WARN_IF_UNDOCUMENTED = NO +WARN_IF_DOC_ERROR = NO +WARN_NO_PARAMDOC = NO +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = @CMAKE_SOURCE_DIR@ +FILE_PATTERNS = *.cpp \ + *.h \ + NEWS \ + README +RECURSIVE = YES +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = * +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = YES +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = YES +REFERENCES_RELATION = YES +REFERENCES_LINK_SOURCE = YES +USE_HTAGS = NO +VERBATIM_HEADERS = YES +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = YES +COLS_IN_ALPHA_INDEX = 3 +IGNORE_PREFIX = peo +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +BINARY_TOC = NO +TOC_EXPAND = NO +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = YES +TREEVIEW_WIDTH = 250 +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = YES +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = YES +USE_PDFLATEX = YES +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = YES +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = @EO_BIN_DIR@/doc/eo.doxytag=http://eodev.sourceforge.net/eo/doc/html \ + @MO_BIN_DIR@/doc/mo.doxytag=@MO_BIN_DIR@/doc/html +GENERATE_TAGFILE = @CMAKE_BINARY_DIR@/doc/peo.doxytag +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = YES +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = NO +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = NO +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = NO +CALLER_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = png +DOT_PATH = +DOTFILE_DIRS = +MAX_DOT_GRAPH_WIDTH = 1024 +MAX_DOT_GRAPH_HEIGHT = 1024 +MAX_DOT_GRAPH_DEPTH = 0 +DOT_TRANSPARENT = NO +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = YES diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/peo-conf.cmake b/branches/paradiseo-ix86-2.0/paradiseo-peo/peo-conf.cmake new file mode 100644 index 000000000..ba4c4c037 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/peo-conf.cmake @@ -0,0 +1,24 @@ + +###################################################################################### +###################################################################################### +### In this file, you can specify many CMake variables used to build paradisEO-PEO. +###################################################################################### +###################################################################################### + + +###################################################################################### +### 1) OPTIONNAL +###################################################################################### + +# SET (MYVAR MYVALUE) + +###################################################################################### + + +##################################################################################### +### 2) OPTIONNAL - Overwrite subdirs +###################################################################################### + +# SUBDIRS(doc tutorial) + +###################################################################################### diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/CMakeLists.txt b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/CMakeLists.txt new file mode 100644 index 000000000..67c2c2478 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/CMakeLists.txt @@ -0,0 +1,8 @@ + +###################################################################################### +### 1) Where must cmake go now ? +###################################################################################### + +SUBDIRS(core rmc) + +###################################################################################### diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/CMakeLists.txt b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/CMakeLists.txt new file mode 100644 index 000000000..0bc45159e --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/CMakeLists.txt @@ -0,0 +1,77 @@ + +###################################################################################### +### 1) Include the sources +###################################################################################### + +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src) +INCLUDE_DIRECTORIES(${MOEO_SRC_DIR}/src) +###################################################################################### + + +###################################################################################### +### 2) Define your target(s): just the peo library here +###################################################################################### + +SET(CORE_LIB_OUTPUT_PATH ${ParadisEO-PEO_BINARY_DIR}/lib) +SET(LIBRARY_OUTPUT_PATH ${CORE_LIB_OUTPUT_PATH}) + +SET (CORE_SOURCES peo_init.cpp + peo_fin.cpp + peo_run.cpp + peo_param.cpp + peo_debug.cpp + thread.cpp + reac_thread.cpp + service.cpp + runner.cpp + communicable.cpp + topology.cpp + ring_topo.cpp) + + + +ADD_LIBRARY(peo STATIC ${CORE_SOURCES}) + +###################################################################################### + + +###################################################################################### +### 3) Optionnal: define your target(s)'s version: no effect for windows +###################################################################################### + +SET(CORE_VERSION ${GLOBAL_VERSION}) +SET_TARGET_PROPERTIES(peo PROPERTIES VERSION "${CORE_VERSION}") +###################################################################################### + + +###################################################################################### +### 4) Windows advanced config - especially for Microsoft Visual Studio 8 +###################################################################################### + + IF(CMAKE_CXX_COMPILER MATCHES cl) + IF(NOT WITH_SHARED_LIBS) + IF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + SET(CMAKE_CXX_FLAGS "/nologo /W3 /Gy") + SET(CMAKE_CXX_FLAGS_DEBUG "/MTd /Z7 /Od") + SET(CMAKE_CXX_FLAGS_RELEASE "/MT /O2") + SET(CMAKE_CXX_FLAGS_MINSIZEREL "/MT /O2") + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MTd /Z7 /Od") + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:CONSOLE") + + ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + ENDIF(NOT WITH_SHARED_LIBS) + ENDIF(CMAKE_CXX_COMPILER MATCHES cl) +###################################################################################### + + +###################################################################################### +### 5) Where must cmake go now ? +###################################################################################### + +# nothing to be compiled in the subdirs + +###################################################################################### + + + + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/communicable.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/communicable.cpp new file mode 100644 index 000000000..3d43db117 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/communicable.cpp @@ -0,0 +1,111 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include +#include +#include + +#include "communicable.h" + +static std :: vector key_to_comm (1); /* Vector of registered cooperators */ + +static std :: map comm_to_key; /* Map of registered cooperators */ + +unsigned Communicable :: num_comm = 0; + + +Communicable :: Communicable () +{ + + comm_to_key [this] = key = ++ num_comm; + key_to_comm.push_back (this); + sem_init (& sem_lock, 0, 1); + sem_init (& sem_stop, 0, 0); +} + +Communicable :: ~ Communicable () +{ +} + +COMM_ID Communicable :: getKey () +{ + + return key; +} + +Communicable * getCommunicable (COMM_ID __key) +{ + + assert (__key < key_to_comm.size ()); + return key_to_comm [__key]; +} + +COMM_ID getKey (const Communicable * __comm) +{ + + return comm_to_key [__comm]; +} + +void Communicable :: lock () + { + + sem_wait (& sem_lock); + } + +void Communicable :: unlock () +{ + + sem_post (& sem_lock); +} + +void Communicable :: stop () +{ + sem_wait (& sem_stop); +} + +void Communicable :: resume () +{ + + sem_post (& sem_stop); +} + +void initCommunicableEnv () +{ + + key_to_comm.resize (1); + comm_to_key.clear (); + Communicable :: num_comm = 0; +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/communicable.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/communicable.h new file mode 100644 index 000000000..37215299e --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/communicable.h @@ -0,0 +1,79 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __communicable_h +#define __communicable_h + +#include + + +typedef unsigned COMM_ID; + +class Communicable + { + + public : + + Communicable (); + + virtual ~ Communicable (); + + COMM_ID getKey (); + + void lock (); /* It suspends the current process if the semaphore is locked */ + void unlock (); /* It unlocks the shared semaphore */ + + void stop (); /* It suspends the current process */ + void resume (); /* It resumes ___________ */ + + public : + + static unsigned num_comm; + + protected : + + COMM_ID key; + + sem_t sem_lock; + + sem_t sem_stop; + }; + +extern void initCommunicableEnv (); + +extern Communicable * getCommunicable (COMM_ID __key); + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/cooperative.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/cooperative.h new file mode 100644 index 000000000..098107e51 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/cooperative.h @@ -0,0 +1,81 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __cooperative_h +#define __cooperative_h + +#include +#include "communicable.h" +#include "runner.h" + +typedef unsigned COOP_ID; + +class Cooperative : public Communicable + { + + public : + + Runner * getOwner (); + + void setOwner (Runner & __runner); + + virtual void pack () = 0; + + virtual void unpack () = 0; + + virtual void packSynchronizeReq () = 0; + + void send (Cooperative * __coop); + + void synchronizeCoopEx (); + + virtual void notifySending (); + + virtual void notifyReceiving (); + + virtual void notifySendingSyncReq (); + + virtual void notifySynchronized (); + + private : + + Runner * owner; + + }; + +extern Cooperative * getCooperative (COOP_ID __key); + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/eoPop_mesg.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/eoPop_mesg.h new file mode 100644 index 000000000..ac409ed56 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/eoPop_mesg.h @@ -0,0 +1,64 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __eoPop_mesg_h +#define __eoPop_mesg_h + +#include + +#include "messaging.h" + + +template void pack (const eoPop & __pop) +{ + + pack ((unsigned) __pop.size ()); + for (unsigned i = 0; i < __pop.size (); i ++) + pack (__pop [i]); +} + +template void unpack (eoPop & __pop) +{ + + unsigned n; + + unpack (n); + __pop.resize (n); + for (unsigned i = 0; i < n; i ++) + unpack (__pop [i]); +} + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/eoVector_mesg.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/eoVector_mesg.h new file mode 100644 index 000000000..5fbc98775 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/eoVector_mesg.h @@ -0,0 +1,218 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar, Clive Canape +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __eoVector_mesg_h +#define __eoVector_mesg_h + +#include +#include + +#include "messaging.h" + + +template void pack (const eoVector & __v) +{ + + if (__v.invalid()) + { + pack((unsigned)0); + } + else + { + pack((unsigned)1); + pack (__v.fitness ()); + } + + unsigned len = __v.size (); + pack (len); + for (unsigned i = 0 ; i < len; i ++) + pack (__v [i]); +} + +template void unpack (eoVector & __v) +{ + + unsigned valid; + unpack(valid); + + if (! valid) + { + __v.invalidate(); + } + else + { + F fit; + unpack (fit); + __v.fitness (fit); + } + + unsigned len; + unpack (len); + __v.resize (len); + for (unsigned i = 0 ; i < len; i ++) + unpack (__v [i]); +} + +template void pack (const eoVectorParticle & __v) +{ + + if (__v.invalid()) + { + pack((unsigned)0); + } + else + { + pack((unsigned)1); + pack (__v.fitness ()); + pack (__v.best()); + } + + unsigned len = __v.size (); + pack (len); + for (unsigned i = 0 ; i < len; i ++) + pack (__v [i]); + for (unsigned i = 0 ; i < len; i ++) + pack (__v.bestPositions[i]); + for (unsigned i = 0 ; i < len; i ++) + pack (__v.velocities[i]); +} + +template void unpack (eoVectorParticle & __v) +{ + + unsigned valid; + unpack(valid); + + if (! valid) + { + __v.invalidate(); + } + else + { + F fit; + unpack (fit); + __v.fitness (fit); + unpack(fit); + __v.best(fit); + + } + unsigned len; + unpack (len); + __v.resize (len); + for (unsigned i = 0 ; i < len; i ++) + unpack (__v [i]); + for (unsigned i = 0 ; i < len; i ++) + unpack (__v.bestPositions[i]); + for (unsigned i = 0 ; i < len; i ++) + unpack (__v.velocities[i]); +} + +template void unpack (moeoVector &_v) +{ + unsigned valid; + unpack(valid); + if (! valid) + _v.invalidate(); + else + { + T fit; + unpack (fit); + _v.fitness (fit); + } + unpack(valid); + if (! valid) + _v.invalidateDiversity(); + else + { + V diver; + unpack(diver); + _v.diversity(diver); + } + unsigned len; + unpack (len); + _v.resize (len); + for (unsigned i = 0 ; i < len; i ++) + unpack (_v [i]); + unpack(valid); + if (! valid) + _v.invalidateObjectiveVector(); + else + { + F object; + unpack (len); + object.resize(len); + for (unsigned i = 0 ; i < len; i ++) + unpack (object[i]); + _v.objectiveVector(object); + } +} + + +template void pack (moeoVector &_v) +{ + if (_v.invalid()) + pack((unsigned)0); + else + { + pack((unsigned)1); + pack (_v.fitness ()); + } + if (_v.invalidDiversity()) + pack((unsigned)0); + else + { + pack((unsigned)1); + pack(_v.diversity()); + } + unsigned len = _v.size (); + pack (len); + for (unsigned i = 0 ; i < len; i ++) + pack (_v[i]); + if (_v.invalidObjectiveVector()) + pack((unsigned)0); + else + { + pack((unsigned)1); + F object; + object=_v.objectiveVector(); + len=object.nObjectives(); + pack (len); + for (unsigned i = 0 ; i < len; i ++) + pack (object[i]); + } +} + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/messaging.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/messaging.h new file mode 100644 index 000000000..9a5a74d6f --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/messaging.h @@ -0,0 +1,145 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __mess_h +#define __mess_h + +#include +#include + +/* Char */ +extern void pack (const char & __c); + +/* Boolean */ +extern void pack (const bool & __b, int __nitem = 1); + +/* Float */ +extern void pack (const float & __f, int __nitem = 1); + +/* Double */ +extern void pack (const double & __d, int __nitem = 1); + +/* Integer */ +extern void pack (const int & __i, int __nitem = 1); + +/* Unsigned int. */ +extern void pack (const unsigned int & __ui, int __nitem = 1); + +/* Short int. */ +extern void pack (const short & __sh, int __nitem = 1); + +/* Unsigned short */ +extern void pack (const unsigned short & __ush, int __nitem = 1); + +/* Long */ +extern void pack (const long & __l, int __nitem = 1); + +/* Unsigned long */ +extern void pack (const unsigned long & __ul, int __nitem = 1); + +/* String */ +extern void pack (const char * __str); +extern void pack (const std::string & __str); + +/* Pointer */ +template void pack (const T * __ptr) +{ + + pack ((unsigned long) __ptr); +} + +/* Pair */ +template void pack (const std :: pair & __pair) +{ + + pack (__pair.first); + pack (__pair.second); +} + + + +/* Char */ +extern void unpack (char & __c); + +/* Boolean */ +extern void unpack (bool & __b, int __nitem = 1); + +/* Float */ +extern void unpack (float & __f, int __nitem = 1); + +/* Double */ +extern void unpack (double & __d, int __nitem = 1); + +/* Integer */ +extern void unpack (int & __i, int __nitem = 1); + +/* Unsigned int. */ +extern void unpack (unsigned int & __ui, int __nitem = 1); + +/* Short int. */ +extern void unpack (short & __sh, int __nitem = 1); + +/* Unsigned short */ +extern void unpack (unsigned short & __ush, int __nitem = 1); + +/* Long */ +extern void unpack (long & __l, int __nitem = 1); + +/* Unsigned long */ +extern void unpack (unsigned long & __ul, int __nitem = 1); + +/* String */ +extern void unpack (char * __str); +extern void unpack (std::string & __str); + +/* Pointer */ +template void unpack (T * & __ptr) +{ + + unsigned long p; + unpack (p); + __ptr = (T *) p; +} + +/* Pair */ +template void unpack (std :: pair & __pair) +{ + + unpack (__pair.first); + unpack (__pair.second); +} + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/peo_debug.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/peo_debug.cpp new file mode 100644 index 000000000..0228a8bb9 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/peo_debug.cpp @@ -0,0 +1,117 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include "peo_debug.h" + +#include +#include +#include +#include +#include +#include +#include + +#include "peo_debug.h" + +#define MAX_BUFF_SIZE 1000 + +#define DEBUG_PATH "./log/" + + +static bool debug = true; + +static char host [MAX_BUFF_SIZE]; + +std :: vector files; + + +void setDebugMode (bool __dbg) +{ + + debug = __dbg; + gethostname (host, MAX_BUFF_SIZE); +} + +extern int getNodeRank (); + +void initDebugging () +{ + + mkdir (DEBUG_PATH, S_IRWXU); + // files.push_back (stdout); + char buff [MAX_BUFF_SIZE]; + sprintf (buff, "%s/%d", DEBUG_PATH, getNodeRank ()); + files.push_back (fopen (buff, "w")); +} + +void endDebugging () +{ + + for (unsigned i = 0; i < files.size (); i ++) + if (files [i] != stdout) + fclose (files [i]); + files.clear(); +} + +void printDebugMessage (const char * __mess) +{ + + if (debug) + { + + char buff [MAX_BUFF_SIZE]; + char localTime [MAX_BUFF_SIZE]; + time_t t = time (0); + + /* Date */ + strcpy( localTime, ctime (& t) ); + localTime[ strlen( localTime )-1 ] = ']'; + sprintf (buff, "[%s][%s: ", host, localTime ); + + for (unsigned i = 0; i < files.size (); i ++) + fprintf (files [i], buff); + + /* Message */ + sprintf (buff, "%s", __mess); + + for (unsigned i = 0; i < files.size (); i ++) + { + fputs (buff, files [i]); + fputs ("\n", files [i]); + fflush (files [i]); + } + } +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/peo_debug.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/peo_debug.h new file mode 100644 index 000000000..8c72f860b --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/peo_debug.h @@ -0,0 +1,50 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __peo_debug_h +#define __peo_debug_h + +extern void initDebugging (); + +extern void endDebugging (); + +extern void setDebugMode (bool __dbg = true); /* (Des)activating the Debugging mode */ + +extern void printDebugMessage (const char * __mess); /* Print a new message both on the + standard output and a target + text-file in a subdirectory) */ + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/peo_fin.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/peo_fin.cpp new file mode 100644 index 000000000..6d104a991 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/peo_fin.cpp @@ -0,0 +1,52 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include "peo_fin.h" +#include "peo_debug.h" +#include "runner.h" +#include "rmc.h" + +void peo :: finalize () +{ + + printDebugMessage ("waiting for the termination of all threads"); + + joinRunners (); + finalizeRMC (); + + printDebugMessage ("this is the end"); + endDebugging (); +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/peo_fin.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/peo_fin.h new file mode 100644 index 000000000..de34ee2dd --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/peo_fin.h @@ -0,0 +1,46 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __peo_finalize_h +#define __peo_finalize_h + +namespace peo + { + + extern void finalize (); +} + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/peo_init.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/peo_init.cpp new file mode 100644 index 000000000..f984ca126 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/peo_init.cpp @@ -0,0 +1,102 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include + +#include "peo_init.h" +#include "peo_param.h" + +#include "peo_debug.h" +#include "rmc.h" +#include "runner.h" + + +extern void initCommunicableEnv (); +extern void initBuffers (); + +extern void initThreadsEnv (); +extern void initReactiveThreadsEnv (); + +extern void initRunnersEnv (); +extern void initWorkersEnv (); + +extern void initScheduler (); +extern void initSynchron (); + + +static void initExecutionEnv() +{ + + initCommunicableEnv (); + initBuffers (); + initScheduler(); + initSynchron (); + + initThreadsEnv (); + initReactiveThreadsEnv (); + + initRunnersEnv (); + initWorkersEnv (); +} + + +namespace peo + { + + int * argc; + + char * * * argv; + + void init (int & __argc, char * * & __argv) + { + + argc = & __argc; + + argv = & __argv; + + /* Initializing the execution environment */ + initExecutionEnv(); + + /* Loading the common parameters */ + loadParameters (__argc, __argv); + + /* Initializing the the Resource Management and Communication */ + initRMC ( *peo::argc, *peo::argv); + + /* */ + initDebugging (); + } +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/peo_init.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/peo_init.h new file mode 100644 index 000000000..0e39ad506 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/peo_init.h @@ -0,0 +1,50 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __peo_init_h +#define __peo_init_h + +namespace peo + { + + extern int * argc; + + extern char * * * argv; + + extern void init (int & __argc, char * * & __argv); +} + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/peo_param.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/peo_param.cpp new file mode 100644 index 000000000..5eab0da7f --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/peo_param.cpp @@ -0,0 +1,53 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include + +#include "peo_param.h" +#include "peo_debug.h" + + +void peo :: loadParameters (int & __argc, char * * & __argv) +{ + + eoParser parser (__argc, __argv); + + /* Debug */ + eoValueParam debug_param ("false", "debug", "?"); + parser.processParam (debug_param); + if (debug_param.value () == "true") + setDebugMode (); +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/peo_param.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/peo_param.h new file mode 100644 index 000000000..1860dce90 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/peo_param.h @@ -0,0 +1,46 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __peo_param_h +#define __peo_param_h + +namespace peo + { + + extern void loadParameters (int & __argc, char * * & __argv); +} + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/peo_run.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/peo_run.cpp new file mode 100644 index 000000000..d0d972fa0 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/peo_run.cpp @@ -0,0 +1,48 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include "peo_run.h" +#include "rmc.h" +#include "runner.h" + + +void peo :: run () +{ + + startRunners (); + + runRMC (); +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/peo_run.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/peo_run.h new file mode 100644 index 000000000..5eaf5483a --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/peo_run.h @@ -0,0 +1,46 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __peo_run_h +#define __peo_run_h + +namespace peo + { + + extern void run (); +} + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/reac_thread.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/reac_thread.cpp new file mode 100644 index 000000000..c22402990 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/reac_thread.cpp @@ -0,0 +1,82 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include "reac_thread.h" + +static bool the_end = false; + +static std :: vector reac_threads; + + +ReactiveThread :: ReactiveThread () +{ + + reac_threads.push_back (this); + sem_init (& sem, 0, 0); +} + +void ReactiveThread :: sleep () +{ + + sem_wait (& sem); +} + +void ReactiveThread :: wakeUp () +{ + + sem_post (& sem); +} + +void initReactiveThreadsEnv () +{ + + the_end = false; + reac_threads.clear (); +} + +void stopReactiveThreads () +{ + + the_end = true; + for (unsigned i = 0; i < reac_threads.size (); i ++) + reac_threads [i] -> wakeUp (); + reac_threads.clear (); +} + +bool theEnd () +{ + return the_end; +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/reac_thread.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/reac_thread.h new file mode 100644 index 000000000..943b4ccb3 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/reac_thread.h @@ -0,0 +1,66 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef REAC_THREAD_H_ +#define REAC_THREAD_H_ + +#include + +#include "thread.h" + + +class ReactiveThread : public Thread + { + + public: + + /* Ctor */ + ReactiveThread (); + + void sleep (); + + void wakeUp (); + + private: + + sem_t sem; + }; + +extern void initReactiveThreadsEnv (); + +extern void stopReactiveThreads (); + +#endif /*REAC_THREAD_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/ring_topo.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/ring_topo.cpp new file mode 100644 index 000000000..dfdbf571c --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/ring_topo.cpp @@ -0,0 +1,55 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include "ring_topo.h" + +void RingTopology :: setNeighbors (Cooperative * __mig, + std :: vector & __from, + std :: vector & __to) +{ + __from.clear () ; + __to.clear () ; + + int len = mig.size () ; + + for (int i = 0 ; i < len ; i ++) + if (mig [i] == __mig) + { + __from.push_back (mig [(i - 1 + len) % len]) ; + __to.push_back (mig [(i + 1) % len]) ; + break; + } +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/ring_topo.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/ring_topo.h new file mode 100644 index 000000000..b1715a99b --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/ring_topo.h @@ -0,0 +1,53 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __ring_topo_h +#define __ring_topo_h + +#include "topology.h" + +class RingTopology : public Topology + { + + public : + + void setNeighbors (Cooperative * __mig, + std :: vector & __from, + std :: vector & __to); + + }; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/rmc.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/rmc.h new file mode 100644 index 000000000..be2f18e2e --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/rmc.h @@ -0,0 +1,46 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __rmc_h +#define __rmc_h + +extern void initRMC (int & __argc, char * * & __argv); + +extern void runRMC (); /* Resource Management and Communication */ + +extern void finalizeRMC (); + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/runner.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/runner.cpp new file mode 100644 index 000000000..a9ad96ee4 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/runner.cpp @@ -0,0 +1,225 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include + +#include "runner.h" +#include "reac_thread.h" +#include "peo_debug.h" +#include "messaging.h" + +#include "../rmc/mpi/mess.h" +#include "../rmc/mpi/tags.h" + +#include "../rmc/mpi/node.h" +#include "../rmc/mpi/schema.h" + + +static std :: vector ll_threads; /* Low-level runner threads */ + +static std :: vector the_runners; + +static unsigned num_def_runners = 0; /* Number of defined runners */ + +static unsigned num_local_exec_runners = 0; /* Number of locally executing runners */ + +static unsigned num_exec_runners = 0; /* Number of globally executing runners */ + + +extern int getNodeRank (); + +extern int getNumberOfNodes (); + +extern void wakeUpCommunicator (); + + +Runner :: Runner () +{ + + exec_id = 0; + def_id = ++ num_def_runners; + + the_runners.push_back (this); + + sem_init (& sem_start, 0, 0); + sem_init (& sem_cntxt, 0, 0); +} + +RUNNER_ID Runner :: getDefinitionID () +{ + + return def_id; +} + +RUNNER_ID Runner :: getExecutionID () +{ + + return exec_id; +} + +void Runner :: setExecutionID (const RUNNER_ID& execution_id) +{ + + exec_id = execution_id; +} + +Runner * getRunner (RUNNER_ID __key) +{ + + return dynamic_cast (getCommunicable (__key)); +} + +void initializeContext () +{ + + num_local_exec_runners = 0; + + // setting up the execution IDs & counting the number of local exec. runners + for (unsigned i = 0; i < the_runners.size (); i ++) + { + the_runners [i] -> setExecutionID ( my_node -> execution_id_run[ i ] ); + if (the_runners [i] -> isAssignedLocally ()) num_local_exec_runners ++; + } + + collectiveCountOfRunners( &num_local_exec_runners, &num_exec_runners ); + + // synchronizeNodes (); + + for (unsigned i = 0; i < the_runners.size (); i ++) + if (the_runners [i] -> isAssignedLocally ()) the_runners [i] -> notifyContextInitialized (); +} + +void Runner :: waitStarting () +{ + + sem_wait (& sem_start); +} + +void Runner :: waitContextInitialization () +{ + + sem_wait (& sem_cntxt); +} + +void Runner :: start () +{ + + setActive (); + + sem_post (& sem_start); + + waitContextInitialization (); + run (); + terminate (); +} + +void startRunners () +{ + + /* Runners */ + for (unsigned i = 0; i < the_runners.size (); i ++) + if (the_runners [i] -> isAssignedLocally ()) + { + addThread (the_runners [i], ll_threads); + the_runners [i] -> waitStarting (); + } + + printDebugMessage ("launched the parallel runners"); +} + +void joinRunners () +{ + + joinThreads (ll_threads); + the_runners.clear(); +} + +bool atLeastOneActiveRunner () +{ + + return num_exec_runners; +} + +unsigned numberOfActiveRunners () +{ + + return num_exec_runners; +} + +void Runner :: notifyContextInitialized () +{ + + sem_post (& sem_cntxt); +} + +void Runner :: notifySendingTermination () +{ + + printDebugMessage ("I am informed that everyone received my termination notification."); + setPassive (); +} + +void unpackTerminationOfRunner () +{ + + RUNNER_ID finished_id; + unpack (finished_id); + + num_exec_runners --; + + printDebugMessage ("I'm noticed of the termination of a runner"); + + if (!num_exec_runners) + { + + printDebugMessage ("All the runners have terminated - now stopping the reactive threads."); + stopReactiveThreads (); + printDebugMessage ("Reactive threads stopped!"); + } + + wakeUpCommunicator (); +} + +void initRunnersEnv () +{ + + ll_threads.clear (); + the_runners.clear (); + + num_def_runners = 0; + num_local_exec_runners = 0; + num_exec_runners = 0; +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/runner.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/runner.h new file mode 100644 index 000000000..7d6f6b927 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/runner.h @@ -0,0 +1,106 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __runner_h +#define __runner_h + +#include + +#include "communicable.h" +#include "thread.h" + + +typedef unsigned RUNNER_ID; + + +class Runner : public Communicable, public Thread + { + + public : + + Runner (); + + RUNNER_ID getDefinitionID (); + + RUNNER_ID getExecutionID (); + + void setExecutionID (const RUNNER_ID& execution_id); + + bool isAssignedLocally (); + + void waitStarting (); + + void waitContextInitialization (); + + void start (); + + virtual void run () = 0; + + void terminate (); + + void notifyContextInitialized (); + + void notifySendingTermination (); + + void packTermination (); + + private : + + sem_t sem_start; + sem_t sem_cntxt; + + unsigned def_id; + unsigned exec_id; + }; + + +extern void initRunnersEnv (); + +extern Runner * getRunner (RUNNER_ID __key); + +extern void initializeContext (); + +extern void startRunners (); + +extern void joinRunners (); + +extern bool atLeastOneActiveRunner (); + +extern unsigned numberOfActiveRunners (); + +extern void unpackTerminationOfRunner (); + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/service.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/service.cpp new file mode 100644 index 000000000..fafc5dc11 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/service.cpp @@ -0,0 +1,84 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include "service.h" + +void Service :: setOwner (Thread & __owner) +{ + + owner = & __owner; +} + +Thread * Service :: getOwner () +{ + + return owner; +} + +Service * getService (SERVICE_ID __key) +{ + + return dynamic_cast (getCommunicable (__key)); +} + +void Service :: notifySendingData () +{ } + +void Service :: notifySendingResourceRequest () +{ + + num_sent_rr --; + if (! num_sent_rr) + notifySendingAllResourceRequests (); +} + +void Service :: notifySendingAllResourceRequests () +{ } + +void Service :: packData () +{} + +void Service :: unpackData () +{} + +void Service :: execute () +{} + +void Service :: packResult () +{} + +void Service :: unpackResult () +{} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/service.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/service.h new file mode 100644 index 000000000..2198cac06 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/service.h @@ -0,0 +1,80 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __service_h +#define __service_h + +#include "communicable.h" +#include "thread.h" + + +typedef unsigned SERVICE_ID; + +class Service : public Communicable + { + + public : + + void setOwner (Thread & __owner); + + Thread * getOwner (); + + void requestResourceRequest (unsigned __how_many = 1); + void packResourceRequest (); + + virtual void packData (); + virtual void unpackData (); + + virtual void execute (); + + virtual void packResult (); + virtual void unpackResult (); + + virtual void notifySendingData (); + virtual void notifySendingResourceRequest (); + virtual void notifySendingAllResourceRequests (); + + private : + + Thread * owner; /* Owner thread (i.e. 'uses' that service) */ + + unsigned num_sent_rr; /* Number of RR not really sent (i.e. still in the sending queue)*/ + + }; + +extern Service * getService (SERVICE_ID __key); + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/thread.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/thread.cpp new file mode 100644 index 000000000..b085ca1d2 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/thread.cpp @@ -0,0 +1,120 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include + +#include "thread.h" + +static std :: vector threads; + +unsigned num_act = 0; + + +Thread :: Thread () +{ + + threads.push_back (this); + act = false; +} + +Thread :: ~ Thread () +{ + + /* Nothing ! */ +} + +void Thread :: setActive () +{ + + if (! act) + { + + act = true; + num_act ++; + } +} + +void Thread :: setPassive () +{ + + if (act) + { + + act = false; + num_act --; + } +} + +void initThreadsEnv () +{ + + threads.clear (); + num_act = 0; +} + +bool atLeastOneActiveThread () +{ + + return num_act; +} + +static void * launch (void * __arg) +{ + + Thread * thr = (Thread *) __arg; + thr -> start (); + + return 0; +} + +void addThread (Thread * __hl_thread, std :: vector & __ll_threads) +{ + + pthread_t * ll_thr = new pthread_t; + __ll_threads.push_back (ll_thr); + pthread_create (ll_thr, 0, launch, __hl_thread); +} + +void joinThreads (std :: vector & __threads) +{ + + for (unsigned i = 0; i < __threads.size (); i ++) + { + pthread_join (* __threads [i], 0); + delete __threads [i]; + } + __threads.clear(); +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/thread.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/thread.h new file mode 100644 index 000000000..b8d90977e --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/thread.h @@ -0,0 +1,76 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef THREAD_H_ +#define THREAD_H_ + +#include + + +/* A high-level thread */ +class Thread + { + + public: + + /* Ctor */ + Thread (); + + /* Dtor */ + virtual ~ Thread (); + + /* Go ! */ + virtual void start () = 0; + + void setActive ();/* It means the current process is going to send messages soon */ + void setPassive ();/* The current process is not going to perform send operations + (but it may receive messages) */ + + private : + + bool act; + }; + +extern void initThreadsEnv (); + +extern void addThread (Thread * __hl_thread, std :: vector & __ll_threads); + +extern void joinThreads (std :: vector & __ll_threads); + +extern bool atLeastOneActiveThread (); /* It returns 'true' iff at least one process is going + to send messages */ + +#endif /*THREAD_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/topology.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/topology.cpp new file mode 100644 index 000000000..318658fce --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/topology.cpp @@ -0,0 +1,55 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include "topology.h" + +Topology :: ~ Topology () +{ + + /* Nothing ! */ +} + +void Topology :: add (Cooperative & __mig) + { + + mig.push_back (& __mig) ; + } + +Topology :: operator std :: vector & () +{ + + return mig; +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/topology.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/topology.h new file mode 100644 index 000000000..62c339feb --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/core/topology.h @@ -0,0 +1,64 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __topology_h +#define __topology_h + +#include + +#include "cooperative.h" + +class Topology + { + + public: + + virtual ~Topology (); + + void add (Cooperative & __mig); + + virtual void setNeighbors (Cooperative * __mig, + std :: vector & __from, + std :: vector & __to) = 0; + + operator std :: vector & (); + + protected: + + std :: vector mig; + }; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/peo b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/peo new file mode 100644 index 000000000..3ba8fec40 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/peo @@ -0,0 +1,42 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2008 +* +* Sebastien Cahon, Alexandru-Adrian Tantar, Clive Canape +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __peo_ +#define __peo_ + +#include "peo.h" + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/peo.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/peo.h new file mode 100644 index 000000000..a83c4e0f9 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/peo.h @@ -0,0 +1,349 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2008 +* +* Sebastien Cahon, Alexandru-Adrian Tantar, Clive Canape +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __peo_h_ +#define __peo_h_ + +#include +#include +#include + + +//! \mainpage The ParadisEO-PEO Framework +//! +//! \section intro Introduction +//! +//! ParadisEO is a white-box object-oriented framework dedicated to the reusable design +//! of parallel and distributed metaheuristics (PDM). ParadisEO provides a broad range of features including evolutionary +//! algorithms (EA), local searches (LS), the most common parallel and distributed models and hybridization +//! mechanisms, etc. This high content and utility encourages its use at European level. ParadisEO is based on a +//! clear conceptual separation of the solution methods from the problems they are intended to solve. This separation +//! confers to the user a maximum code and design reuse. Furthermore, the fine-grained nature of the classes +//! provided by the framework allow a higher flexibility compared to other frameworks. ParadisEO is one of the rare +//! frameworks that provide the most common parallel and distributed models. Their implementation is portable on +//! distributed-memory machines as well as on shared-memory multiprocessors, as it uses standard libraries such as +//! MPI, PVM and PThreads. The models can be exploited in a transparent way, one has just to instantiate their associated +//! provided classes. Their experimentation on the radio network design real-world application demonstrate their +//! efficiency. +//! +//! In practice, combinatorial optimization problems are often NP-hard, CPU time-consuming, +//! and evolve over time. Unlike exact methods, metaheuristics allow to tackle large-size problems +//! instances by delivering satisfactory solutions in a reasonable time. Metaheuristics are +//! general-purpose heuristics that split in two categories: evolutionary algorithms (EA) and local +//! search methods (LS). These two families have complementary characteristics: EA allow +//! a better exploration of the search space, while LS have the power to intensify the search in +//! promising regions. Their hybridization allows to deliver robust and better solutions +//! +//! Although serial metaheuristics have a polynomial temporal complexity, they remain +//! unsatisfactory for industrial problems. Parallel and distributed computing is a powerful way +//! to deal with the performance issue of these problems. Numerous parallel and distributed +//! metaheuristics (PDM) and their implementations have been proposed, and are available on +//! theWeb. They can be reused and adapted to his/her own problems. However, the user has to +//! deeply examine the code and rewrite its problem-specific sections. The task is tedious, errorprone, +//! takes along time and makes harder the produced code maintenance. A better way to +//! reuse the code of existing PDM is the reuse through libraries. These are often +//! more reliable as they are more tested and documented. They allow a better maintainability +//! and efficiency. However, libraries do not allow the reuse of design. +//! +//! \section parallel_metaheuristics Parallel and distributed metaheuristics +//! +//! \subsection parallel_distributed Parallel distributed evolutionary algorithms +//! +//! Evolutionary Algorithms (EA) are based on the iterative improvement of a +//! population of solutions. At each step, individuals are selected, paired and recombined in order +//! to generate new solutions that replace other ones, and so on. As the algorithm converges, +//! the population is mainly composed of individuals well adapted to the "environment", for +//! instance the problem. The main features that characterize EA are the way the population is +//! initialized, the selection strategy (deterministic/stochastic) by fostering "good" solutions, +//! the replacement strategy that discards individuals, and the continuation/stopping criterion +//! to decide whether the evolution should go on or not. +//! +//! Basically, three major parallel and distributed models for EA can been distinguished: +//! the island (a)synchronous cooperative model, the parallel evaluation of the +//! population, and the distributed evaluation of a single solution. +//!
    +//!
  • Island (a)synchronous cooperative model. Different EA are simultaneously deployed to +//! cooperate for computing better and robust solutions. They exchange in an asynchronous +//! way genetic stuff to diversify the search. The objective is to allow to delay the global +//! convergence, especially when theEAare heterogeneous regarding the variation operators. +//! The migration of individuals follows a policy defined by few parameters: the migration +//! decision criterion, the exchange topology, the number of emigrants, the emigrants selection +//! policy, and the replacement/integration policy.
  • +//! +//!
  • Parallel evaluation of the population. It is required as it is in general the most timeconsuming. +//! The parallel evaluation follows the centralized model. The farmer applies +//! the following operations: selection, transformation and replacement as they require a +//! global management of the population. At each generation, it distributes the set of new +//! solutions between differentworkers. These evaluate and return back the solutions and their +//! quality values. An efficient execution is often obtained particularly when the evaluation +//! of each solution is costly. The two main advantages of an asynchronous model over +//! the synchronous model are: (1) the fault tolerance of the asynchronous model; (2) the +//! robustness in case the fitness computation can take very different computation times (e.g. +//! for nonlinear numerical optimization). Whereas some time-out detection can be used to +//! address the former issue, the latter one can be partially overcome if the grain is set to very +//! small values, as individuals will be sent out for evaluations upon request of the workers.
  • +//! +//!
  • Distributed evaluation of a single solution. The quality of each solution is evaluated in +//! a parallel centralized way. That model is particularly interesting when the evaluation +//! function can be itself parallelized as it is CPU time-consuming and/or IO intensive. In +//! that case, the function can be viewed as an aggregation of a certain number of partial +//! functions. The partial functions could also be identical if for example the problem to deal +//! with is a data mining one. The evaluation is thus data parallel and the accesses to data +//! base are performed in parallel. Furthermore, a reduction operation is performed on the +//! results returned by the partial functions. As a summary, for this model the user has to +//! indicate a set of partial functions and an aggregation operator of these.
  • +//!
+//! +//! \subsection parallel_ls Parallel distributed local searches +//! +//! \subsubsection local_searches Local searches +//! +//! All metaheuristics dedicated to the improvement of a single solution +//! are based on the concept of neighborhood. They start from a solution randomly generated or +//! obtained from another optimization algorithm, and update it, step by step, by replacing the +//! current solution by one of its neighboring candidates. Some criterion have been identified to +//! differentiate such searches: the heuristic internal memory, the choice of the initial solution, +//! the candidate solutions generator, and the selection strategy of candidate moves. Three main +//! algorithms of local search stand out: Hill Climbing (HC), Simulated +//! Annealing (SA) and Tabu Search (TS). +//! +//! \subsubsection parallel_local_searches Parallel local searches +//! +//! Two parallel distributed models are commonly used in the literature: the parallel distributed +//! exploration of neighboring candidate solutions model, and the multi-start model. +//!
    +//!
  • Parallel exploration of neighboring candidates. It is a low-level Farmer-Worker model +//! that does not alter the behavior of the heuristic. A sequential search computes the same +//! results slower.At the beginning of each iteration, the farmer duplicates the current solution +//! between distributed nodes. Each one manages some candidates and the results are returned to the farmer. +//! The model is efficient if the evaluation of a each solution is time-consuming and/or there are a great +//! deal of candidate neighbors to evaluate. This is obviously not applicable to SA since only one candidate +//! is evaluated at each iteration. Likewise, the efficiency of the model for HC is not always guaranteed as +//! the number of neighboring solutions to process before finding one that improves the current objective function may +//! be highly variable.
  • +//! +//!
  • Multi-start model. It consists in simultaneously launching several local searches. They +//! may be heterogeneous, but no information is exchanged between them. The resultswould +//! be identical as if the algorithms were sequentially run.Very often deterministic algorithms +//! differ by the supplied initial solution and/or some other parameters. This trivial model is +//! convenient for low-speed networks of workstations.
  • +//!
+//! +//! \section hybridization Hybridization +//! +//! Recently, hybrid metaheuristics have gained a considerable interest. For many +//! practical or academic optimization problems, the best found solutions are obtained by +//! hybrid algorithms. Combinations of different metaheuristics have provided very powerful +//! search methods. Two levels and two modes +//! of hybridization have been distinguished: Low and High levels, and Relay and Cooperative modes. +//! The low-level hybridization addresses the functional composition of a single optimization +//! method. A function of a given metaheuristic is replaced by another metaheuristic. On the +//! contrary, for high-level hybrid algorithms the different metaheuristics are self-containing, +//! meaning no direct relationship to their internal working is considered. On the other hand, +//! relay hybridization means a set of metaheuristics is applied in a pipeline way. The output +//! of a metaheuristic (except the last) is the input of the following one (except the first). +//! Conversely, co-evolutionist hybridization is a cooperative optimization model. Each metaheuristic +//! performs a search in a solution space, and exchange solutions with others. +//! +//! \section paradiseo_goals Paradiseo goals and architecture +//! +//! The "EO" part of ParadisEO means Evolving Objects. EO is a C++ LGPL open source +//! framework and includes a paradigm-free Evolutionary Computation library (EOlib) +//! dedicated to the flexible design of EA through evolving objects superseding the most common +//! dialects (Genetic Algorithms, Evolution Strategies, Evolutionary Programming and +//! Genetic Programming). Furthermore, EO integrates several services including visualization +//! facilities, on-line definition of parameters, application check-pointing, etc. ParadisEO is an +//! extended version of the EO framework. The extensions include local search methods, hybridization +//! mechanisms, parallelism and distribution mechanisms, and other features that +//! are not addressed in this paper such as multi-objective optimization and grid computing. In +//! the next sections, we present the motivations and goals of ParadisEO, its architecture and +//! some of its main implementation details and issues. +//! +//! \subsection motivation Motivations and goals +//! +//! A framework is normally intended to be exploited by as many users as possible. Therefore, +//! its exploitation could be successful only if some important user criteria are satisfied. The +//! following criteria are the major of them and constitute the main objectives of the ParadisEO +//! framework: +//! +//!
    +//!
  • Maximum design and code reuse. The framework must provide for the user a whole +//! architecture design of his/her solution method. Moreover, the programmer may redo as +//! little code as possible. This objective requires a clear and maximal conceptual separation +//! between the solution methods and the problems to be solved, and thus a deep domain +//! analysis. The user might therefore develop only the minimal problem-specific code.
  • +//! +//!
  • Flexibility and adaptability. It must be possible for the user to easily add new features/ +//! metaheuristics or change existing ones without implicating other components. Furthermore, +//! as in practice existing problems evolve and new others arise these have to be +//! tackled by specializing/adapting the framework components.
  • +//! +//!
  • Utility. The framework must allow the user to cover a broad range of metaheuristics, +//! problems, parallel distributed models, hybridization mechanisms, etc.
  • +//! +//!
  • Transparent and easy access to performance and robustness. As the optimization applications +//! are often time-consuming the performance issue is crucial. Parallelism and +//! distribution are two important ways to achieve high performance execution. In order to +//! facilitate its use it is implemented so that the user can deploy his/her parallel algorithms in +//! a transparent manner. Moreover, the execution of the algorithms must be robust to guarantee +//! the reliability and the quality of the results. The hybridization mechanism allows +//! to obtain robust and better solutions.
  • +//! +//!
  • Portability. In order to satisfy a large number of users the framework must support +//! different material architectures and their associated operating systems.
  • +//!
+//! +//! \subsection architecture ParadisEO architecture +//! +//! The architecture of ParadisEO is multi-layer and modular allowing to achieve the objectives +//! quoted above. This allows particularly a high flexibility and adaptability, an +//! easier hybridization, and more code and design reuse. The architecture has three layers +//! identifying three major categories of classes: Solvers, Runners and Helpers. +//!
    +//!
  • Helpers. Helpers are low-level classes that perform specific actions related to the evolution +//! or search process. They are split in two categories: Evolutionary helpers (EH) +//! and Local search helpers (LSH). EH include mainly the transformation, selection and +//! replacement operations, the evaluation function and the stopping criterion. LSH can be +//! generic such as the neighborhood explorer class, or specific to the local search metaheuristic +//! like the tabu list manager class in the Tabu Search solution method. On the +//! other hand, there are some special helpers dedicated to the management of parallel and +//! distributed models 2 and 3, such as the communicators that embody the communication +//! services. +//! +//! Helpers cooperate between them and interact with the components of the upper layer +//! i.e. the runners. The runners invoke the helpers through function parameters. Indeed, +//! helpers have not their own data, but they work on the internal data of the runners.
  • +//! +//!
  • Runners. The Runners layer contains a set of classes that implement the metaheuristics +//! themselves. They perform the run of the metaheuristics from the initial state or +//! population to the final one. One can distinguish the Evolutionary runners (ER) such as +//! genetic algorithms, evolution strategies, etc., and Local search runners (LSR) like tabu +//! search, simulated annealing and hill climbing. Runners invoke the helpers to perform +//! specific actions on their data. For instance, an ER may ask the fitness function evaluation +//! helper to evaluate its population. An LSR asks the movement helper to perform +//! a given movement on the current state. Furthermore, runners can be serial or parallel +//! distributed.
  • +//! +//!
  • Solvers. Solvers are devoted to control the evolution process and/or the search. They +//! generate the initial state (solution or population) and define the strategy for combining +//! and sequencing different metaheuristics. Two types of solvers can be distinguished. +//! Single metaheuristic solvers (SMS) and Multiple metaheuristics solvers (MMS). SMSs +//! are dedicated to the execution of only one metaheuristic.MMS are more complex as they +//! control and sequence several metaheuristics that can be heterogeneous. Solvers interact with +//! the user by getting the input data and delivering the output (best solution, statistics, +//! etc).
  • +//!
+//! +//! According to the generality of their embedded features, the classes of the architecture split +//! in two major categories: Provided classes and Required classes. Provided classes embody +//! the factored out part of the metaheuristics. They are generic, implemented in the framework, +//! and ensure the control at run time. Required classes are those that must be supplied by the +//! user. They encapsulate the problem-specific aspects of the application. These classes are +//! fixed but not implemented in ParadisEO. The programmer has the burden to develop them +//! using the OO specialization mechanism. +//! +//! \section tutorials ParadisEO-PEO Tutorials +//! +//! The basisc of the ParadisEO framework philosophy are exposed in a few simple tutorials: +//! +//! All the presented examples have as case study the traveling salesman problem (TSP). Different operators and auxiliary objects were designed, +//! standing as a common shared source code base. While not being +//! part of the ParadisEO-PEO framework, it may represent a startpoint for a better understanding of the presented tutorials. +//! +//! \section LICENCE +//! +//! +//!This software is governed by the CeCILL license under French law and +//!abiding by the rules of distribution of free software. You can use, +//!modify and/ or redistribute the software under the terms of the CeCILL +//!license as circulated by CEA, CNRS and INRIA at the following URL +//!"http://www.cecill.info". +//! +//!As a counterpart to the access to the source code and rights to copy, +//!modify and redistribute granted by the license, users are provided only +//!with a limited warranty and the software's author, the holder of the +//!economic rights, and the successive licensors have only limited liability. +//! +//!In this respect, the user's attention is drawn to the risks associated +//!with loading, using, modifying and/or developing or reproducing the +//!software by the user in light of its specific status of free software, +//!that may mean that it is complicated to manipulate, and that also +//!therefore means that it is reserved for developers and experienced +//!professionals having in-depth computer knowledge. Users are therefore +//!encouraged to load and test the software's suitability as regards their +//!requirements in conditions enabling the security of their systems and/or +//!data to be ensured and, more generally, to use and operate it in the +//!same conditions as regards security. +//!The fact that you are presently reading this means that you have had +//!knowledge of the CeCILL license and that you accept its terms. +//! +//!ParadisEO WebSite : http://paradiseo.gforge.inria.fr +//!Contact: paradiseo-help@lists.gforge.inria.fr + +#include "core/peo_init.h" +#include "core/peo_run.h" +#include "core/peo_fin.h" + +#include "core/messaging.h" +#include "core/eoPop_mesg.h" +#include "core/eoVector_mesg.h" + +#include "peoWrapper.h" + +/* <------- components for parallel algorithms -------> */ +#include "peoTransform.h" +#include "peoEvalFunc.h" +#include "peoPopEval.h" +#include "peoMoeoPopEval.h" + +/* Cooperative island model */ +#include "core/ring_topo.h" +#include "peoData.h" +#include "peoSyncIslandMig.h" +#include "peoAsyncIslandMig.h" + +/* Synchronous multi-start model */ +#include "peoMultiStart.h" +/* <------- components for parallel algorithms -------> */ + +/* Parallel PSO */ +#include "peoPSO.h" + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/peoAggEvalFunc.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/peoAggEvalFunc.h new file mode 100644 index 000000000..5b4780e0e --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/peoAggEvalFunc.h @@ -0,0 +1,57 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2008 +* +* Sebastien Cahon, Alexandru-Adrian Tantar, Clive Canape +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __peoAggEvalFunc_h +#define __peoAggEvalFunc_h + +#include + +//! Interface class for creating an aggregate evaluation function. + +//! The peoAggEvalFunc class offers only the interface for creating aggregate evaluation functions - there +//! are no direct internal functions provided. The class inherits public eoBF< EOT&, const typename EOT :: Fitness&, void > +//! thus requiring, for the derived classes, the creation of a function having the following signature: +//! +//! +//! +//!
void operator()( EOT& __eot, const typename EOT :: Fitness& __partial_fittness );    
+//! +//! The aggregation object is called in an iterative manner for each of the results obtained by applying partial evaluation functions. +template< class EOT > class peoAggEvalFunc : public eoBF< EOT&, const typename EOT :: Fitness&, void > + {}; + + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/peoAsyncIslandMig.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/peoAsyncIslandMig.h new file mode 100644 index 000000000..445d24f98 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/peoAsyncIslandMig.h @@ -0,0 +1,208 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2008 +* +* Sebastien Cahon, Alexandru-Adrian Tantar, Clive Canape +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* peoData to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __peoAsyncIslandMig_h +#define __peoAsyncIslandMig_h + + +#include + +#include +#include +#include +#include +#include + + +#include "core/messaging.h" +#include "core/eoPop_mesg.h" +#include "core/eoVector_mesg.h" +#include "core/topology.h" +#include "core/thread.h" +#include "core/cooperative.h" +#include "core/peo_debug.h" + + +//! @class peoAsyncIslandMig +//! @brief Specific class for a asynchronous migration +//! @see Cooperative eoUpdater +//! @version 2.0 +//! @date january 2008 +template< class EOT, class TYPE > class peoAsyncIslandMig : public Cooperative, public eoUpdater + { + + public: + + //! @brief Constructor + //! @param continuator & __cont + //! @param selector & __select + //! @param replacement & __replace + //! @param Topology& __topology + //! @param peoData & __source + //! @param eoData & __destination + peoAsyncIslandMig( + continuator & __cont, + selector & __select, + replacement & __replace, + Topology& __topology, + peoData & __source, + peoData & __destination + ); + + //! @brief operator + void operator()(); + //! @brief Function realizing packages + void pack(); + //! @brief Function reconstituting packages + void unpack(); + //! @brief Function packSynchronizeReq + void packSynchronizeReq(); + + private: + //! @brief Function which sends some emigrants + void emigrate(); + //! @brief Function which receives some immigrants + void immigrate(); + + private: + //! @param continuator & cont + //! @param selector & select + //! @param replacement & replace + //! @param Topology& topology + //! @param peoData & source + //! @param peoData & destination + //! @param std :: queue< TYPE > imm + //! @param std :: queue< TYPE > em + //! @param std :: queue< Cooperative* > coop_em + continuator & cont; + selector & select; + replacement & replace; + Topology& topology; + peoData & source; + peoData & destination; + std :: queue< TYPE > imm; + std :: queue< TYPE > em; + std :: queue< Cooperative* > coop_em; + }; + + +template< class EOT , class TYPE> peoAsyncIslandMig< EOT, TYPE > :: peoAsyncIslandMig( + + continuator & __cont, + selector & __select, + replacement & __replace, + Topology& __topology, + peoData & __source, + peoData & __destination + +) : select( __select ), replace( __replace ), topology( __topology ), source( __source ), destination( __destination ), cont(__cont) +{ + + __topology.add( *this ); +} + + +template< class EOT , class TYPE> void peoAsyncIslandMig< EOT, TYPE > :: pack() +{ + lock (); + ::pack( coop_em.front()->getKey() ); + em.front().pack(); + coop_em.pop(); + em.pop(); + unlock(); +} + + +template< class EOT , class TYPE> void peoAsyncIslandMig< EOT , TYPE> :: unpack() +{ + lock (); + TYPE mig; + mig.unpack(); + imm.push( mig ); + unlock(); +} + +template< class EOT , class TYPE> void peoAsyncIslandMig< EOT, TYPE > :: packSynchronizeReq() +{} + +template< class EOT , class TYPE> void peoAsyncIslandMig< EOT , TYPE> :: emigrate() +{ + std :: vector< Cooperative* >in, out; + topology.setNeighbors( this, in, out ); + + for ( unsigned i = 0; i < out.size(); i++ ) + { + + TYPE mig; + select(mig); + em.push( mig ); + coop_em.push( out[i] ); + send( out[i] ); + printDebugMessage( "sending some emigrants." ); + } +} + + +template< class EOT , class TYPE> void peoAsyncIslandMig< EOT , TYPE> :: immigrate() +{ + + lock (); + { + + while ( !imm.empty() ) + { + replace(imm.front() ); + imm.pop(); + printDebugMessage( "receiving some immigrants." ); + } + } + unlock(); +} + + +template< class EOT , class TYPE> void peoAsyncIslandMig< EOT, TYPE > :: operator()() +{ + + if (cont.check()) + { + + emigrate(); + immigrate(); + } +} + + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/peoData.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/peoData.h new file mode 100644 index 000000000..480f6e823 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/peoData.h @@ -0,0 +1,280 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2008 +* +* Clive Canape, Thomas Legrand +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* peoData to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef _PEODATA_H +#define _PEODATA_H + +#include "core/eoVector_mesg.h" +#include "core/messaging.h" + +/**************************************************************************************/ +/************************** DEFINE A DATA ******************************************/ +/**************************************************************************************/ + +//! @class peoData +//! @brief Abstract class for a data exchanged by migration +//! @version 1.0 +//! @date january 2008 +class peoData + { + public: + + //! @brief Function realizing packages + virtual void pack () + {} + + //! @brief Function reconstituting packages + virtual void unpack () + {} + + }; + +//! @class peoPop +//! @brief Specific class for a migration of a population +//! @see peoData eoPop +//! @version 1.0 +//! @date january 2008 +template +class peoPop: public eoPop, public peoData + { + public: + + //! @brief Function realizing packages + virtual void pack () + { + ::pack ((unsigned) this->size ()); + for (unsigned i = 0; i < this->size (); i ++) + ::pack ((*this)[i]); + } + + //! @brief Function reconstituting packages + virtual void unpack () + { + unsigned n; + ::unpack (n); + this->resize (n); + for (unsigned i = 0; i < n; i ++) + ::unpack ((*this)[i]); + } + + }; + + +/**************************************************************************************/ +/************************** DEFINE A CONTINUATOR ***********************************/ +/**************************************************************************************/ + +//! @class continuator +//! @brief Abstract class for a continuator within the exchange of data by migration +//! @version 1.0 +//! @date january 2008 +class continuator + { + public: + + //! @brief Virtual function of check + //! @return true if the algorithm must continue + virtual bool check()=0; + }; + + +//! @class eoContinuator +//! @brief Specific class for a continuator within the exchange of migration of a population +//! @see continuator +//! @version 1.0 +//! @date january 2008 +template < class EOT> class eoContinuator : public continuator + { + public: + + //! @brief Constructor + //! @param eoContinue & + //! @param eoPop & + eoContinuator(eoContinue & _cont, const eoPop & _pop): cont (_cont), pop(_pop) + {} + + //! @brief Virtual function of check + //! @return true if the algorithm must continue + virtual bool check() + { + return cont(pop); + } + + protected: + //! @param eoContinue & + //! @param eoPop & + eoContinue & cont ; + const eoPop & pop; + }; + + +/**************************************************************************************/ +/************************** DEFINE A SELECTOR **************************************/ +/**************************************************************************************/ + +//! @class selector +//! @brief Abstract class for a selector within the exchange of data by migration +//! @version 1.0 +//! @date january 2008 +template < class TYPE> class selector + { + public: + + //! @brief Virtual operator on the template type + //! @param TYPE & + virtual void operator()(TYPE &)=0; + }; + + +//! @class eoSelector +//! @brief Specific class for a selector within the exchange of migration of a population +//! @see selector +//! @version 1.0 +//! @date january 2008 +template < class EOT, class TYPE> class eoSelector : public selector< TYPE > + { + public: + + //! @brief Constructor + //! @param eoSelectOne & + //! @param unsigned _nb_select + //! @param TYPE & _source (with TYPE which is the template type) + eoSelector(eoSelectOne & _select, unsigned _nb_select, const TYPE & _source): selector (_select), nb_select(_nb_select), source(_source) + {} + + //! @brief Virtual operator on the template type + //! @param TYPE & _dest + virtual void operator()(TYPE & _dest) + { + size_t target = static_cast(nb_select); + _dest.resize(target); + for (size_t i = 0; i < _dest.size(); ++i) + _dest[i] = selector(source); + } + + protected: + //! @param eoSelectOne & + //! @param unsigned nb_select + //! @param TYPE & source + eoSelectOne & selector ; + unsigned nb_select; + const TYPE & source; + }; + + +/**************************************************************************************/ +/************************** DEFINE A REPLACEMENT ***********************************/ +/**************************************************************************************/ + +//! @class replacement +//! @brief Abstract class for a replacement within the exchange of data by migration +//! @version 1.0 +//! @date january 2008 +template < class TYPE> class replacement + { + public: + //! @brief Virtual operator on the template type + //! @param TYPE & + virtual void operator()(TYPE &)=0; + }; + + +//! @class eoReplace +//! @brief Specific class for a replacement within the exchange of migration of a population +//! @see replacement +//! @version 1.0 +//! @date january 2008 +template < class EOT, class TYPE> class eoReplace : public replacement< TYPE > + { + public: + //! @brief Constructor + //! @param eoReplacement & + //! @param TYPE & _destination (with TYPE which is the template type) + eoReplace(eoReplacement & _replace, TYPE & _destination): replace(_replace), destination(_destination) + {} + + //! @brief Virtual operator on the template type + //! @param TYPE & _source + virtual void operator()(TYPE & _source) + { + replace(destination, _source); + } + + protected: + //! @param eoReplacement & + //! @param TYPE & destination + eoReplacement & replace; + TYPE & destination; + }; + + +/**************************************************************************************/ +/************************ Continuator for synchrone migartion ************************/ +/**************************************************************************************/ + +//! @class eoSyncContinue +//! @brief Class for a continuator within the exchange of data by synchrone migration +//! @see continuator +//! @version 1.0 +//! @date january 2008 +class eoSyncContinue: public continuator + { + + public: + //! @brief Constructor + //! @param unsigned __period + //! @param unsigned __init_counter + eoSyncContinue (unsigned __period, unsigned __init_counter = 0): period (__period),counter (__init_counter) + {} + + //! @brief Virtual function of check + //! @return true if the algorithm must continue + virtual bool check() + { + return ((++ counter) % period) != 0 ; + } + + + private: + //! @param unsigned period + //! @param unsigned counter + unsigned period; + unsigned counter; + }; + + +#endif + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/peoEvalFunc.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/peoEvalFunc.h new file mode 100644 index 000000000..1443965fb --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/peoEvalFunc.h @@ -0,0 +1,72 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, INRIA, 2008 +* +* Clive Canape +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: clive.canape@inria.fr +* +*/ + +#ifndef PEOEVALFUNC_H +#define PEOEVALFUNC_H + +//! @class peoEvalFunc +//! @brief Specific class for evaluation +//! @see eoEvalFunc +//! @version 1.0 +//! @date november 2007 +#ifdef _MSC_VER +template< class EOT, class FitT = EOT::Fitness, class FunctionArg = const EOT& > +#else +template< class EOT, class FitT = typename EOT::Fitness, class FunctionArg = const EOT& > +#endif +struct peoEvalFunc: public eoEvalFunc + { + + //! @brief Constructor + //! @param FitT (* _eval)( FunctionArg ) + peoEvalFunc( FitT (* _eval)( FunctionArg ) ) + : eoEvalFunc(), evalFunc( _eval ) + {}; + + //! @brief Virtual operator + //! @param EOT & _peo + virtual void operator() ( EOT & _peo ) + { + _peo.fitness((*evalFunc)( _peo )); + }; + +private: + //! @param FitT (* evalFunc )( FunctionArg ) + FitT (* evalFunc )( FunctionArg ); + }; + +#endif + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/peoMoeoPopEval.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/peoMoeoPopEval.h new file mode 100644 index 000000000..25dd7586d --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/peoMoeoPopEval.h @@ -0,0 +1,277 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2008 +* +* Clive Canape +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __peoMoeoPopEval_h +#define __peoMoeoPopEval_h + +#include +#include + +#include "core/messaging.h" +#include "core/peo_debug.h" +#include "peoAggEvalFunc.h" +#include "peoNoAggEvalFunc.h" + +//! @class peoPopEval +//! @brief Parallel evaluation functor wrapper with MOEO +//! @see Service eoPopEvalFunc +//! @version 1.0 +//! @date 2008 +template< class EOT > class peoMoeoPopEval : public Service, public eoPopEvalFunc + { + + public: + + //! Constructor function - an EO-derived evaluation functor has to be specified; an internal reference + //! is set towards the specified evaluation functor. + //! + //! @param eoEvalFunc< EOT >& __eval_func - EO-derived evaluation functor to be applied in parallel on each individual of a specified population + peoMoeoPopEval( eoEvalFunc< EOT >& __eval_func ); + + //! Constructor function - a vector of EO-derived evaluation functors has to be specified as well as an aggregation function. + //! + //! @param const std :: vector< eoEvalFunc < EOT >* >& __funcs - vector of EO-derived partial evaluation functors; + //! @param peoAggEvalFunc< EOT >& __merge_eval - aggregation functor for creating a fitness value out of the partial fitness values. + peoMoeoPopEval( const std :: vector< eoEvalFunc < EOT >* >& __funcs, peoAggEvalFunc< EOT >& __merge_eval ); + + //! Operator for applying the evaluation functor (direct or aggregate) for each individual of the specified population. + //! + //! @param eoPop< EOT >& __pop - population to be evaluated by applying the evaluation functor specified in the constructor. + void operator()(eoPop< EOT >& __pop); + + //! @brief Operator ()( eoPop< EOT >& __dummy, eoPop< EOT >& __pop ) + //! @param eoPop< EOT >& __dummy + //! @param eoPop< EOT >& __pop + void operator()( eoPop< EOT >& __dummy, eoPop< EOT >& __pop ); + + //! Auxiliary function for transferring data between the process requesting an evaluation operation and the process that + //! performs the actual evaluation phase. There is no need to explicitly call the function. + void packData(); + + //! Auxiliary function for transferring data between the process requesting an evaluation operation and the process that + //! performs the actual evaluation phase. There is no need to explicitly call the function. + void unpackData(); + + //! Auxiliary function - it calls the specified evaluation functor(s). There is no need to explicitly call the function. + void execute(); + + //! Auxiliary function for transferring data between the process requesting an evaluation operation and the process that + //! performs the actual evaluation phase. There is no need to explicitly call the function. + void packResult(); + + //! Auxiliary function for transferring data between the process requesting an evaluation operation and the process that + //! performs the actual evaluation phase. There is no need to explicitly call the function. + void unpackResult(); + + //! Auxiliary function for notifications between the process requesting an evaluation operation and the processes that + //! performs the actual evaluation phase. There is no need to explicitly call the function. + void notifySendingData(); + + //! Auxiliary function for notifications between the process requesting an evaluation operation and the processes that + //! performs the actual evaluation phase. There is no need to explicitly call the function. + void notifySendingAllResourceRequests(); + + private: + //! @param std :: vector< eoEvalFunc < EOT >* >& funcs + //! @param std :: vector< eoEvalFunc < EOT >* > one_func + //! @param peoAggEvalFunc< EOT >& merge_eval + //! @param peoNoAggEvalFunc< EOT > no_merge_eval + //! @param std :: queue< EOT* >tasks + //! @param std :: map< EOT*, std :: pair< unsigned, unsigned > > progression + //! @param unsigned num_func + //! @param EOT sol + //! @param EOT *ad_sol + //! @param unsigned total + const std :: vector< eoEvalFunc < EOT >* >& funcs; + std :: vector< eoEvalFunc < EOT >* > one_func; + peoAggEvalFunc< EOT >& merge_eval; + peoNoAggEvalFunc< EOT > no_merge_eval; + std :: queue< EOT* >tasks; + std :: map< EOT*, std :: pair< unsigned, unsigned > > progression; + unsigned num_func; + EOT sol; + EOT *ad_sol; + unsigned total; + }; + + +template< class EOT > peoMoeoPopEval< EOT > :: peoMoeoPopEval( eoEvalFunc< EOT >& __eval_func ) : + + funcs( one_func ), merge_eval( no_merge_eval ) +{ + + one_func.push_back( &__eval_func ); +} + + +template< class EOT > peoMoeoPopEval< EOT > :: peoMoeoPopEval( + + const std :: vector< eoEvalFunc< EOT >* >& __funcs, + peoAggEvalFunc< EOT >& __merge_eval + +) : funcs( __funcs ), merge_eval( __merge_eval ) +{} + +template< class EOT > void peoMoeoPopEval< EOT >::operator()(eoPop< EOT >& __dummy, eoPop< EOT >& __pop ) +{ + this->operator()(__pop); +} + +template< class EOT > void peoMoeoPopEval< EOT >::operator()(eoPop< EOT >& __pop ) +{ + for ( unsigned i = 0; i < __pop.size(); i++ ) + { + __pop[ i ].fitness(typename EOT :: Fitness() ); + progression[ &__pop[ i ] ].first = funcs.size() - 1; + progression[ &__pop[ i ] ].second = funcs.size(); + for ( unsigned j = 0; j < funcs.size(); j++ ) + { + /* Queuing the 'invalid' solution and its associated owner */ + tasks.push( &__pop[ i ] ); + } + } + total = funcs.size() * __pop.size(); + requestResourceRequest( funcs.size() * __pop.size() ); + stop(); +} + + +template< class EOT > void peoMoeoPopEval< EOT > :: packData() +{ + // printDebugMessage ("debut pakc data"); + pack( progression[ tasks.front() ].first-- ); + + /* Packing the contents :-) of the solution */ + pack( *tasks.front() ); + + /* Packing the addresses of both the solution and the owner */ + pack( tasks.front() ); + tasks.pop( ); +} + + +template< class EOT > void peoMoeoPopEval< EOT > :: unpackData() +{ + unpack( num_func ); + /* Unpacking the solution */ + unpack( sol ); + /* Unpacking the @ of that one */ + unpack( ad_sol ); +} + + +template< class EOT > void peoMoeoPopEval< EOT > :: execute() +{ + + /* Computing the fitness of the solution */ + funcs[ num_func ]->operator()( sol ); +} + + +template< class EOT > void peoMoeoPopEval< EOT > :: packResult() +{ +// std::cout<<"\nD"; + /* Packing the fitness of the solution */ + /* typedef typename PO < F >::Fitness Fitness; + MOEOObjectiveVector ObjectiveVector;*/ + std::vector < double > object; + unsigned len; + object=sol.objectiveVector(); + len=object.size(); + pack (len); + for (unsigned i = 0 ; i < len; i ++) + pack (object[i]); + + + +// pack( sol.fitness() ); + /* Packing the @ of the individual */ + pack( ad_sol ); +// std::cout<<"\nF"; +} + + +template< class EOT > void peoMoeoPopEval< EOT > :: unpackResult() +{ +// typename EOT :: Fitness fit; + + /* Unpacking the computed fitness */ +// unpack( fit ); + unsigned len; + std::vector < double > object; + + unpack(len); + object.resize(len); + for (unsigned i = 0 ; i < len; i ++) + unpack (object[i]); + /* Unpacking the @ of the associated individual */ + unpack( ad_sol ); + + + /* Associating the fitness the local solution */ +// merge_eval( *ad_sol, object ); + ad_sol->objectiveVector(object); + progression[ ad_sol ].second--; + + /* Notifying the container of the termination of the evaluation */ + if ( !progression[ ad_sol ].second ) + { + + progression.erase( ad_sol ); + } + + total--; + if ( !total ) + { + + getOwner()->setActive(); + resume(); + } + +} + + +template< class EOT > void peoMoeoPopEval< EOT > :: notifySendingData() +{} + + +template< class EOT > void peoMoeoPopEval< EOT > :: notifySendingAllResourceRequests() +{ + getOwner()->setPassive(); +} + + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/peoMultiStart.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/peoMultiStart.h new file mode 100644 index 000000000..a8c250929 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/peoMultiStart.h @@ -0,0 +1,320 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2008 +* +* Sebastien Cahon, Alexandru-Adrian Tantar, Clive Canape +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +#ifndef __peoMultiStart_h +#define __peoMultiStart_h + +#include + +#include "core/service.h" +#include "core/messaging.h" + +//! @class peoMultiStart +//! @brief Class allowing the launch of several algorithms +//! @see Service +//! @version 1.1 +//! @date january 2008 +template < typename EntityType > class peoMultiStart : public Service + { + + public: + + //! @brief Constructor + //! @param AlgorithmType& externalAlgorithm + template < typename AlgorithmType > peoMultiStart( AlgorithmType& externalAlgorithm ) + { + singularAlgorithm = new Algorithm< AlgorithmType >( externalAlgorithm ); + algorithms.push_back( singularAlgorithm ); + aggregationFunction = new NoAggregationFunction(); + } + + //! @brief Constructor + //! @param AlgorithmReturnType (*externalAlgorithm)( AlgorithmDataType& ) + template < typename AlgorithmReturnType, typename AlgorithmDataType > peoMultiStart( AlgorithmReturnType (*externalAlgorithm)( AlgorithmDataType& ) ) + { + singularAlgorithm = new FunctionAlgorithm< AlgorithmReturnType, AlgorithmDataType >( externalAlgorithm ); + algorithms.push_back( singularAlgorithm ); + aggregationFunction = new NoAggregationFunction(); + } + + //! @brief Constructor + //! @param std::vector< AlgorithmType* >& externalAlgorithms + //! @param AggregationFunctionType& externalAggregationFunction + template < typename AlgorithmType, typename AggregationFunctionType > peoMultiStart( std::vector< AlgorithmType* >& externalAlgorithms, AggregationFunctionType& externalAggregationFunction ) + { + for ( unsigned int index = 0; index < externalAlgorithms.size(); index++ ) + { + algorithms.push_back( new Algorithm< AlgorithmType >( *externalAlgorithms[ index ] ) ); + } + aggregationFunction = new AggregationAlgorithm< AggregationFunctionType >( externalAggregationFunction ); + } + + //! @brief Constructor + //! @param std::vector< AlgorithmReturnType (*)( AlgorithmDataType& ) >& externalAlgorithms + //! @param AggregationFunctionType& externalAggregationFunction + template < typename AlgorithmReturnType, typename AlgorithmDataType, typename AggregationFunctionType > peoMultiStart( std::vector< AlgorithmReturnType (*)( AlgorithmDataType& ) >& externalAlgorithms, AggregationFunctionType& externalAggregationFunction ) + { + for ( unsigned int index = 0; index < externalAlgorithms.size(); index++ ) + { + algorithms.push_back( new FunctionAlgorithm< AlgorithmReturnType, AlgorithmDataType >( externalAlgorithms[ index ] ) ); + } + aggregationFunction = new AggregationAlgorithm< AggregationFunctionType >( externalAggregationFunction ); + } + + //! @brief Destructor + ~peoMultiStart() + { + for ( unsigned int index = 0; index < data.size(); index++ ) delete data[ index ]; + for ( unsigned int index = 0; index < algorithms.size(); index++ ) delete algorithms[ index ]; + delete aggregationFunction; + } + + //! @brief operator on the template type + //! @param Type& externalData + template < typename Type > void operator()( Type& externalData ) + { + for ( typename Type::iterator externalDataIterator = externalData.begin(); externalDataIterator != externalData.end(); externalDataIterator++ ) + { + data.push_back( new DataType< EntityType >( *externalDataIterator ) ); + } + functionIndex = dataIndex = idx = num_term = 0; + requestResourceRequest( data.size() * algorithms.size() ); + stop(); + } + + //! @brief operator on the template type + //! @param Type& externalDataBegin + //! @param Type& externalDataEnd + template < typename Type > void operator()( const Type& externalDataBegin, const Type& externalDataEnd ) + { + for ( Type externalDataIterator = externalDataBegin; externalDataIterator != externalDataEnd; externalDataIterator++ ) + { + data.push_back( new DataType< EntityType >( *externalDataIterator ) ); + } + functionIndex = dataIndex = idx = num_term = 0; + requestResourceRequest( data.size() * algorithms.size() ); + stop(); + } + + //! @brief Function realizing packages of data + void packData(); + //! @brief Function reconstituting packages of data + void unpackData(); + //! @brief Function which executes the algorithm + void execute(); + //! @brief Function realizing packages of the result + void packResult(); + //! @brief Function reconstituting packages of result + void unpackResult(); + //! @brief Function notifySendingData + void notifySendingData(); + //! @brief Function notifySendingAllResourceRequests + void notifySendingAllResourceRequests(); + + private: + + //! @param AbstractAlgorithm* singularAlgorithm + //! @param std::vector< AbstractAlgorithm* > algorithms + //! @param AbstractAggregationAlgorithm* aggregationFunction + //! @param EntityType entityTypeInstance + //! @param std::vector< AbstractDataType* > data + //! @param unsigned idx + //! @param unsigned num_term + //! @param unsigned dataIndex + //! @param unsigned functionIndex + template < typename Type > struct DataType; + struct AbstractDataType + { + virtual ~AbstractDataType() + { } + template < typename Type > operator Type& () + { + return ( dynamic_cast< DataType< Type >& >( *this ) ).data; + } + }; + + template < typename Type > struct DataType : public AbstractDataType + { + DataType( Type& externalData ) : data( externalData ) + { } + Type& data; + }; + + struct AbstractAlgorithm + { + virtual ~AbstractAlgorithm() + { } + virtual void operator()( AbstractDataType& dataTypeInstance ) + {} + }; + + template < typename AlgorithmType > struct Algorithm : public AbstractAlgorithm + { + Algorithm( AlgorithmType& externalAlgorithm ) : algorithm( externalAlgorithm ) + { } + void operator()( AbstractDataType& dataTypeInstance ) + { + algorithm( dataTypeInstance ); + } + AlgorithmType& algorithm; + }; + + template < typename AlgorithmReturnType, typename AlgorithmDataType > struct FunctionAlgorithm : public AbstractAlgorithm + { + FunctionAlgorithm( AlgorithmReturnType (*externalAlgorithm)( AlgorithmDataType& ) ) : algorithm( externalAlgorithm ) + { } + void operator()( AbstractDataType& dataTypeInstance ) + { + algorithm( dataTypeInstance ); + } + AlgorithmReturnType (*algorithm)( AlgorithmDataType& ); + }; + + struct AbstractAggregationAlgorithm + { + virtual ~AbstractAggregationAlgorithm() + { } + virtual void operator()( AbstractDataType& dataTypeInstanceA, AbstractDataType& dataTypeInstanceB ) + {}; + }; + + template < typename AggregationAlgorithmType > struct AggregationAlgorithm : public AbstractAggregationAlgorithm + { + AggregationAlgorithm( AggregationAlgorithmType& externalAggregationAlgorithm ) : aggregationAlgorithm( externalAggregationAlgorithm ) + { } + void operator()( AbstractDataType& dataTypeInstanceA, AbstractDataType& dataTypeInstanceB ) + { + aggregationAlgorithm( dataTypeInstanceA, dataTypeInstanceB ); + } + AggregationAlgorithmType& aggregationAlgorithm; + }; + + struct NoAggregationFunction : public AbstractAggregationAlgorithm + { + void operator()( AbstractDataType& dataTypeInstanceA, AbstractDataType& dataTypeInstanceB ) + { + + static_cast< EntityType& >( dataTypeInstanceA ) = static_cast< EntityType& >( dataTypeInstanceB ); + } + }; + + AbstractAlgorithm* singularAlgorithm; + std::vector< AbstractAlgorithm* > algorithms; + AbstractAggregationAlgorithm* aggregationFunction; + EntityType entityTypeInstance; + std::vector< AbstractDataType* > data; + unsigned idx; + unsigned num_term; + unsigned dataIndex; + unsigned functionIndex; + }; + + +template < typename EntityType > void peoMultiStart< EntityType >::packData() +{ + + pack( functionIndex ); + pack( idx ); + pack( ( EntityType& ) *data[ idx++ ] ); + + // done with functionIndex for the entire data set - moving to another + // function/algorithm starting all over with the entire data set ( idx is set to 0 ) + if ( idx == data.size() ) + { + + ++functionIndex; + idx = 0; + } +} + +template < typename EntityType > void peoMultiStart< EntityType >::unpackData() +{ + + unpack( functionIndex ); + unpack( dataIndex ); + unpack( entityTypeInstance ); +} + +template < typename EntityType > void peoMultiStart< EntityType >::execute() +{ + + // wrapping the unpacked data - the definition of an abstract algorithm imposes + // that its internal function operator acts only on abstract data types + AbstractDataType* entityWrapper = new DataType< EntityType >( entityTypeInstance ); + algorithms[ functionIndex ]->operator()( *entityWrapper ); + + delete entityWrapper; +} + +template < typename EntityType > void peoMultiStart< EntityType >::packResult() +{ + + pack( dataIndex ); + pack( entityTypeInstance ); +} + +template < typename EntityType > void peoMultiStart< EntityType >::unpackResult() +{ + + unpack( dataIndex ); + unpack( entityTypeInstance ); + + // wrapping the unpacked data - the definition of an abstract algorithm imposes + // that its internal function operator acts only on abstract data types + AbstractDataType* entityWrapper = new DataType< EntityType >( entityTypeInstance ); + aggregationFunction->operator()( *data[ dataIndex ], *entityWrapper ); + delete entityWrapper; + + num_term++; + + if ( num_term == data.size() * algorithms.size() ) + { + + getOwner()->setActive(); + resume(); + } +} + +template < typename EntityType > void peoMultiStart< EntityType >::notifySendingData() +{} + +template < typename EntityType > void peoMultiStart< EntityType >::notifySendingAllResourceRequests() +{ + + getOwner()->setPassive(); +} + + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/peoNoAggEvalFunc.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/peoNoAggEvalFunc.h new file mode 100644 index 000000000..ec3979dd8 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/peoNoAggEvalFunc.h @@ -0,0 +1,66 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2008 +* +* Sebastien Cahon, Alexandru-Adrian Tantar, Clive Canape +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __peoNoAggEvalFunc_h +#define __peoNoAggEvalFunc_h + +#include "peoAggEvalFunc.h" + +//! Class providing a simple interface for associating a fitness value to a specified individual. + +//! The peoNoAggEvalFunc class does nothing more than an association between a fitness value and a specified individual. +//! The class is provided as a mean of declaring that no aggregation is required for the evaluation function - the fitness +//! value is explicitly specified. +template< class EOT > class peoNoAggEvalFunc : public peoAggEvalFunc< EOT > + { + + public : + + //! Operator which sets as fitness the __fit value for the __sol individual + //! @param EOT& __sol + //! @param typename EOT :: Fitness& __fit + void operator()( EOT& __sol, const typename EOT :: Fitness& __fit ); + }; + + +template< class EOT > void peoNoAggEvalFunc< EOT > :: operator()( EOT& __sol, const typename EOT :: Fitness& __fit ) +{ + + __sol.fitness( __fit ); +} + + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/peoPSO.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/peoPSO.h new file mode 100644 index 000000000..abe6bd477 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/peoPSO.h @@ -0,0 +1,156 @@ +/* +* +* (c) OPAC Team, October 2007 +* +* Clive Canape +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* Contact: clive.canape@inria.fr +*/ + +#ifndef peoPSO_h +#define peoPSO_h + +#include +#include +#include +#include +#include +#include +#include +#include + + +//! @class peoPSOSelect +//! @brief Specific class for a selection of a population of a PSO +//! @see eoSelectOne +//! @version 1.1 +//! @date october 2007 +template class peoPSOSelect: public eoSelectOne + { + public: + + //! @brief Constructor + //! @param eoTopology < POT > & _topology + peoPSOSelect(eoTopology < POT > & _topology):topology(_topology) + {} + + //! @brief typedef : creation of Fitness + typedef typename PO < POT >::Fitness Fitness; + + //! @brief Virtual operator + //! @param eoPop& _pop + //! @return POT& + virtual const POT& operator()(const eoPop& _pop) + { + return topology.globalBest(_pop); + } + + private: + //! @param eoTopology < POT > & topology + eoTopology < POT > & topology; + }; + +//! @class peoGlobalBestVelocity +//! @brief Specific class for a replacement thanks to the velocity migration of a population of a PSO +//! @see eoReplacement +//! @version 1.1 +//! @date october 2007 +template +class peoGlobalBestVelocity : public eoReplacement + { + public: + + //! @brief typedef : creation of VelocityType + typedef typename POT::ParticleVelocityType VelocityType; + + //! @brief Constructor + //! @param double & _c3 + //! @param eoVelocity < POT > &_velocity + peoGlobalBestVelocity( const double & _c3, eoVelocity < POT > &_velocity): c3 (_c3),velocity (_velocity) + {} + + //! @brief Virtual operator + //! @param eoPop& _dest + //! @param eoPop& _source + void operator()(eoPop& _dest, eoPop& _source) + { + + VelocityType newVelocity,r3; + r3 = (VelocityType) rng.uniform (1) * c3; + for (unsigned i=0;i<_dest.size();i++) + for (unsigned j=0;j<_dest[i].size();j++) + { + newVelocity= _dest[i].velocities[j] + r3 * (_source[0].bestPositions[j] - _dest[i][j]); + _dest[i].velocities[j]=newVelocity; + } + + } + + protected: + //! @param double & c3 + //! @param eoVelocity < POT > & velocity + const double & c3; + eoVelocity < POT > & velocity; + }; + +//! @class peoWorstPositionReplacement +//! @brief Specific class for a replacement of a population of a PSO +//! @see eoReplacement +//! @version 1.1 +//! @date october 2007 +template class peoWorstPositionReplacement : public eoReplacement + { + public: + //! @brief constructor + peoWorstPositionReplacement() + {} + + //! @brief operator + //! @param eoPop& _dest + //! @param eoPop& _source + void operator()(eoPop& _dest, eoPop& _source) + { + unsigned ind=0; + double best=_dest[0].best(); + for (unsigned j=1;j<_dest.size();j++) + if (_dest[j].best() < best) + { + ind=j; + best=_dest[j].best(); + } + if (_dest[ind].best() < _source[0].best()) + { + _dest[ind].best(_source[0].best()); + for (unsigned j=0;j<_dest[ind].size();j++) + _dest[ind].bestPositions[j]=_source[0].bestPositions[j]; + } + } + }; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/peoPopEval.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/peoPopEval.h new file mode 100644 index 000000000..f6440a885 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/peoPopEval.h @@ -0,0 +1,257 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2008 +* +* Sebastien Cahon, Alexandru-Adrian Tantar, Clive Canape +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __peoPopEval_h +#define __peoPopEval_h + +#include +#include + +#include "core/messaging.h" +#include "core/peo_debug.h" +#include "peoAggEvalFunc.h" +#include "peoNoAggEvalFunc.h" + +//! @class peoPopEval +//! @brief Parallel evaluation functor wrapper +//! @see Service eoPopEvalFunc +//! @version 1.2 +//! @date 2006 +template< class EOT > class peoPopEval : public Service, public eoPopEvalFunc + { + + public: + + //! Constructor function - an EO-derived evaluation functor has to be specified; an internal reference + //! is set towards the specified evaluation functor. + //! + //! @param eoEvalFunc< EOT >& __eval_func - EO-derived evaluation functor to be applied in parallel on each individual of a specified population + peoPopEval( eoEvalFunc< EOT >& __eval_func ); + + //! Constructor function - a vector of EO-derived evaluation functors has to be specified as well as an aggregation function. + //! + //! @param const std :: vector< eoEvalFunc < EOT >* >& __funcs - vector of EO-derived partial evaluation functors; + //! @param peoAggEvalFunc< EOT >& __merge_eval - aggregation functor for creating a fitness value out of the partial fitness values. + peoPopEval( const std :: vector< eoEvalFunc < EOT >* >& __funcs, peoAggEvalFunc< EOT >& __merge_eval ); + + //! Operator for applying the evaluation functor (direct or aggregate) for each individual of the specified population. + //! + //! @param eoPop< EOT >& __pop - population to be evaluated by applying the evaluation functor specified in the constructor. + void operator()(eoPop< EOT >& __pop); + + //! @brief Operator ()( eoPop< EOT >& __dummy, eoPop< EOT >& __pop ) + //! @param eoPop< EOT >& __dummy + //! @param eoPop< EOT >& __pop + void operator()( eoPop< EOT >& __dummy, eoPop< EOT >& __pop ); + + //! Auxiliary function for transferring data between the process requesting an evaluation operation and the process that + //! performs the actual evaluation phase. There is no need to explicitly call the function. + void packData(); + + //! Auxiliary function for transferring data between the process requesting an evaluation operation and the process that + //! performs the actual evaluation phase. There is no need to explicitly call the function. + void unpackData(); + + //! Auxiliary function - it calls the specified evaluation functor(s). There is no need to explicitly call the function. + void execute(); + + //! Auxiliary function for transferring data between the process requesting an evaluation operation and the process that + //! performs the actual evaluation phase. There is no need to explicitly call the function. + void packResult(); + + //! Auxiliary function for transferring data between the process requesting an evaluation operation and the process that + //! performs the actual evaluation phase. There is no need to explicitly call the function. + void unpackResult(); + + //! Auxiliary function for notifications between the process requesting an evaluation operation and the processes that + //! performs the actual evaluation phase. There is no need to explicitly call the function. + void notifySendingData(); + + //! Auxiliary function for notifications between the process requesting an evaluation operation and the processes that + //! performs the actual evaluation phase. There is no need to explicitly call the function. + void notifySendingAllResourceRequests(); + + private: + + //! @param std :: vector< eoEvalFunc < EOT >* >& funcs + //! @param std :: vector< eoEvalFunc < EOT >* > one_func + //! @param peoAggEvalFunc< EOT >& merge_eval + //! @param peoNoAggEvalFunc< EOT > no_merge_eval + //! @param std :: queue< EOT* >tasks + //! @param std :: map< EOT*, std :: pair< unsigned, unsigned > > progression + //! @param unsigned num_func + //! @param EOT sol + //! @param EOT *ad_sol + //! @param unsigned total + const std :: vector< eoEvalFunc < EOT >* >& funcs; + std :: vector< eoEvalFunc < EOT >* > one_func; + peoAggEvalFunc< EOT >& merge_eval; + peoNoAggEvalFunc< EOT > no_merge_eval; + std :: queue< EOT* >tasks; + std :: map< EOT*, std :: pair< unsigned, unsigned > > progression; + unsigned num_func; + EOT sol; + EOT *ad_sol; + unsigned total; + }; + + +template< class EOT > peoPopEval< EOT > :: peoPopEval( eoEvalFunc< EOT >& __eval_func ) : + + funcs( one_func ), merge_eval( no_merge_eval ) +{ + + one_func.push_back( &__eval_func ); +} + + +template< class EOT > peoPopEval< EOT > :: peoPopEval( + + const std :: vector< eoEvalFunc< EOT >* >& __funcs, + peoAggEvalFunc< EOT >& __merge_eval + +) : funcs( __funcs ), merge_eval( __merge_eval ) +{} + +template< class EOT > void peoPopEval< EOT >::operator()(eoPop< EOT >& __dummy, eoPop< EOT >& __pop ) +{ + this->operator()(__pop); +} + +template< class EOT > void peoPopEval< EOT >::operator()(eoPop< EOT >& __pop ) +{ + for ( unsigned i = 0; i < __pop.size(); i++ ) + { + __pop[ i ].fitness(typename EOT :: Fitness() ); + progression[ &__pop[ i ] ].first = funcs.size() - 1; + progression[ &__pop[ i ] ].second = funcs.size(); + for ( unsigned j = 0; j < funcs.size(); j++ ) + { + /* Queuing the 'invalid' solution and its associated owner */ + tasks.push( &__pop[ i ] ); + } + } + total = funcs.size() * __pop.size(); + requestResourceRequest( funcs.size() * __pop.size() ); + stop(); +} + + +template< class EOT > void peoPopEval< EOT > :: packData() +{ + // printDebugMessage ("debut pakc data"); + pack( progression[ tasks.front() ].first-- ); + + /* Packing the contents :-) of the solution */ + pack( *tasks.front() ); + + /* Packing the addresses of both the solution and the owner */ + pack( tasks.front() ); + tasks.pop( ); +} + + +template< class EOT > void peoPopEval< EOT > :: unpackData() +{ + unpack( num_func ); + /* Unpacking the solution */ + unpack( sol ); + /* Unpacking the @ of that one */ + unpack( ad_sol ); +} + + +template< class EOT > void peoPopEval< EOT > :: execute() +{ + + /* Computing the fitness of the solution */ + funcs[ num_func ]->operator()( sol ); +} + + +template< class EOT > void peoPopEval< EOT > :: packResult() +{ + /* Packing the fitness of the solution */ + pack( sol.fitness() ); + /* Packing the @ of the individual */ + pack( ad_sol ); +} + + +template< class EOT > void peoPopEval< EOT > :: unpackResult() +{ + typename EOT :: Fitness fit; + + /* Unpacking the computed fitness */ + unpack( fit ); + + /* Unpacking the @ of the associated individual */ + unpack( ad_sol ); + + + /* Associating the fitness the local solution */ + merge_eval( *ad_sol, fit ); + + progression[ ad_sol ].second--; + + /* Notifying the container of the termination of the evaluation */ + if ( !progression[ ad_sol ].second ) + { + + progression.erase( ad_sol ); + } + + total--; + if ( !total ) + { + + getOwner()->setActive(); + resume(); + } +} + + +template< class EOT > void peoPopEval< EOT > :: notifySendingData() +{} + + +template< class EOT > void peoPopEval< EOT > :: notifySendingAllResourceRequests() +{ + getOwner()->setPassive(); +} + + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/peoSyncIslandMig.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/peoSyncIslandMig.h new file mode 100644 index 000000000..7c12df50c --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/peoSyncIslandMig.h @@ -0,0 +1,268 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar, Clive Canape +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __peoSyncIslandMig_h +#define __peoSyncIslandMig_h + + +#include +#include + +#include + +#include + +#include +#include +#include +#include +#include "peoData.h" + +#include "core/messaging.h" +#include "core/eoPop_mesg.h" +#include "core/eoVector_mesg.h" + +#include "core/topology.h" +#include "core/thread.h" +#include "core/cooperative.h" +#include "core/peo_debug.h" + +#include "rmc/mpi/synchron.h" + + +//! @class peoSyncIslandMig +//! @brief Specific class for a synchronous migration +//! @see Cooperative eoUpdater +//! @version 2.0 +//! @date january 2008 +template< class EOT, class TYPE > class peoSyncIslandMig : public Cooperative, public eoUpdater + { + + public: + + //! @brief Constructor + //! @param unsigned __frequency + //! @param selector & __select + //! @param replacement & __replace + //! @param Topology& __topology + //! @param peoData & __source + //! @param eoData & __destination + peoSyncIslandMig( + unsigned __frequency, + selector & __select, + replacement & __replace, + Topology& __topology, + peoData & __source, + peoData & __destination + ); + + //! @brief operator + void operator()(); + //! @brief Function realizing packages + void pack(); + //! @brief Function reconstituting packages + void unpack(); + //! @brief Function packSynchronizeReq + void packSynchronizeReq(); + //! @brief Function notifySending + void notifySending(); + //! @brief Function notifyReceiving + void notifyReceiving(); + //! @brief notifySendingSyncReq + void notifySendingSyncReq(); + //! @brief notifySynchronized + void notifySynchronized(); + + private: + + void emigrate(); + void immigrate(); + + + private: + //! @param eoSyncContinue cont + //! @param selector & select + //! @param replacement & replace + //! @param Topology& topology + //! @param peoData & source + //! @param peoData & destination + //! @param std :: queue< TYPE > imm + //! @param std :: queue< TYPE > em + //! @param std :: queue< Cooperative* > coop_em + //! @param sem_t sync + //! @param bool explicitPassive + //! @param bool standbyMigration + //! @param std :: vector< Cooperative* > in, out, all + //! @param unsigned nbMigrations + eoSyncContinue cont; + selector & select; + replacement & replace; + Topology& topology; + peoData & source; + peoData & destination; + std :: queue< TYPE > imm; + std :: queue< TYPE > em; + std :: queue< Cooperative* > coop_em; + sem_t sync; + bool explicitPassive; + bool standbyMigration; + std :: vector< Cooperative* > in, out, all; + unsigned nbMigrations; + }; + + +template< class EOT, class TYPE > peoSyncIslandMig< EOT,TYPE > :: peoSyncIslandMig( + + unsigned __frequency, + selector & __select, + replacement & __replace, + Topology& __topology, + peoData & __source, + peoData & __destination + +) : cont( __frequency ), select( __select ), replace( __replace ), topology( __topology ), source( __source ), destination( __destination ) +{ + + __topology.add( *this ); + sem_init( &sync, 0, 0 ); +} + + +template< class EOT, class TYPE > void peoSyncIslandMig< EOT, TYPE > :: pack() +{ + ::pack( coop_em.front()->getKey() ); + em.front().pack(); + coop_em.pop(); + em.pop(); +} + +template< class EOT, class TYPE > void peoSyncIslandMig< EOT, TYPE > :: unpack() +{ + TYPE mig; + mig.unpack(); + imm.push( mig ); + explicitPassive = true; +} + +template< class EOT, class TYPE > void peoSyncIslandMig< EOT,TYPE > :: packSynchronizeReq() +{ + + packSynchronRequest( all ); +} + +template< class EOT, class TYPE > void peoSyncIslandMig< EOT , TYPE > :: emigrate() +{ + + for ( unsigned i = 0; i < out.size(); i ++ ) + { + + TYPE mig; + select( mig ); + em.push( mig ); + coop_em.push( out[ i ] ); + send( out[ i ] ); + printDebugMessage( "peoSyncIslandMig: sending some emigrants." ); + } +} + +template< class EOT, class TYPE > void peoSyncIslandMig< EOT , TYPE > :: immigrate() +{ + assert( imm.size() ); + + while ( imm.size() ) + { + replace( imm.front() ) ; + imm.pop(); + } + + printDebugMessage( "peoSyncIslandMig: receiving some immigrants." ); +} + +template< class EOT, class TYPE > void peoSyncIslandMig< EOT , TYPE > :: operator()() +{ + + if ( cont.check() ) + { + explicitPassive = standbyMigration = false; + topology.setNeighbors( this, in, out ); + all = topology; + nbMigrations = 0; + synchronizeCoopEx(); + stop(); + // sending emigrants + emigrate(); + // synchronizing + sem_wait( &sync ); + // receiving immigrants + immigrate(); + synchronizeCoopEx(); + stop(); + } +} + +template< class EOT, class TYPE > void peoSyncIslandMig< EOT , TYPE > :: notifySending() +{ + if ( !explicitPassive ) getOwner()->setPassive(); +} + +template< class EOT, class TYPE > void peoSyncIslandMig< EOT , TYPE > :: notifyReceiving() +{ + nbMigrations++; + + if ( nbMigrations == in.size() ) + { + + if ( standbyMigration ) getOwner()->setActive(); + sem_post( &sync ); + } +} + +template< class EOT, class TYPE > void peoSyncIslandMig< EOT, TYPE > :: notifySendingSyncReq () +{ + + getOwner()->setPassive(); +} + +template< class EOT, class TYPE > void peoSyncIslandMig< EOT, TYPE > :: notifySynchronized () +{ + + standbyMigration = true; + getOwner()->setActive(); + resume(); +} + + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/peoTransform.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/peoTransform.h new file mode 100644 index 000000000..7d5a3f4d4 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/peoTransform.h @@ -0,0 +1,199 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __peoTransform_h +#define __peoTransform_h + +#include "core/thread.h" +#include "core/messaging.h" +#include "core/peo_debug.h" +#include "core/service.h" + + +extern int getNodeRank(); + +//! @class peoTransform +//! @brief Class for a parallel transform +//! @see Service eoTransform +//! @version 1.1 +//! @date january 2008 +template< class EOT > class peoTransform : public Service, public eoTransform< EOT > + { + + public: + + //! @brief Constructor + //! @param eoQuadOp< EOT >& __cross + //! @param double __cross_rate + //! @param eoMonOp< EOT >& __mut + //! @param double __mut_rate + peoTransform( + eoQuadOp< EOT >& __cross, + double __cross_rate, + eoMonOp< EOT >& __mut, + double __mut_rate + ); + + //! @brief Operator + //! @param eoPop< EOT >& __pop + void operator()( eoPop< EOT >& __pop ); + //! @brief Function realizing packages of data + void packData(); + //! @brief Function reconstituting packages of data + void unpackData(); + //! @brief Function which executes the algorithm + void execute(); + //! @brief Function realizing packages of the result + void packResult(); + //! @brief Function reconstituting packages of result + void unpackResult(); + //! @brief Function notifySendingData + void notifySendingData(); + //! @brief Function notifySendingAllResourceRequests + void notifySendingAllResourceRequests(); + + private: + //! @param eoQuadOp< EOT >& cross + //! @param double cross_rate + //! @param eoMonOp< EOT >& mut + //! @param double mut_rate + //! @param unsigned idx + //! @param eoPop< EOT >* pop + //! @param EOT father + //! @param mother + //! @param unsigned num_term + eoQuadOp< EOT >& cross; + double cross_rate; + eoMonOp< EOT >& mut; + double mut_rate; + unsigned idx; + eoPop< EOT >* pop; + EOT father, mother; + unsigned num_term; + }; + +template< class EOT > peoTransform< EOT > :: peoTransform( + + eoQuadOp< EOT >& __cross, + double __cross_rate, + eoMonOp < EOT >& __mut, + double __mut_rate + +) : cross( __cross ), cross_rate( __cross_rate ), mut( __mut ), mut_rate( __mut_rate ) +{} + + +template< class EOT > void peoTransform< EOT > :: packData() +{ + + pack( idx ); + pack( pop->operator[]( idx++ ) ); + pack( pop->operator[]( idx++ ) ); +} + + +template< class EOT > void peoTransform< EOT > :: unpackData() +{ + + unpack( idx ); + unpack( father ); + unpack( mother ); +} + + +template< class EOT > void peoTransform< EOT > :: execute() +{ + + if ( rng.uniform() < cross_rate ) cross( mother, father ); + + if ( rng.uniform() < mut_rate ) mut( mother ); + if ( rng.uniform() < mut_rate ) mut( father ); +} + + +template< class EOT > void peoTransform< EOT > :: packResult() +{ + + pack( idx ); + pack( father ); + pack( mother ); +} + + +template< class EOT > void peoTransform< EOT > :: unpackResult() +{ + + unsigned sidx; + + unpack( sidx ); + unpack( pop->operator[]( sidx++ ) ); + unpack( pop->operator[]( sidx ) ); + num_term += 2; + + // Can be used with an odd size + if ( num_term == 2*(pop->size()/2) ) + { + + getOwner()->setActive(); + resume(); + } +} + + +template< class EOT > void peoTransform< EOT > :: operator()( eoPop < EOT >& __pop ) +{ + + printDebugMessage( "peoTransform: performing the parallel transformation step." ); + pop = &__pop; + idx = 0; + num_term = 0; + requestResourceRequest( __pop.size() / 2 ); + stop(); +} + + +template< class EOT > void peoTransform< EOT > :: notifySendingData() +{} + + +template< class EOT > void peoTransform< EOT > :: notifySendingAllResourceRequests() +{ + + getOwner()->setPassive(); +} + + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/peoWrapper.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/peoWrapper.h new file mode 100644 index 000000000..bb2479830 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/peoWrapper.h @@ -0,0 +1,174 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2008 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __peoParaAlgorithm_h +#define __peoParaAlgorithm_h + + +#include "core/runner.h" +#include "core/peo_debug.h" + +//! @class peoWrapper +//! @brief Specific class for wrapping +//! @see Runner +//! @version 1.1 +//! @date december 2007 +class peoWrapper : public Runner + { + + public: + + //! @brief constructor + //! @param AlgorithmType& externalAlgorithm + template< typename AlgorithmType > peoWrapper( AlgorithmType& externalAlgorithm ) + : algorithm( new Algorithm< AlgorithmType, void >( externalAlgorithm ) ) + {} + + //! @brief constructor + //! @param AlgorithmType& externalAlgorithm + //! @param AlgorithmDataType& externalData + template< typename AlgorithmType, typename AlgorithmDataType > peoWrapper( AlgorithmType& externalAlgorithm, AlgorithmDataType& externalData ) + : algorithm( new Algorithm< AlgorithmType, AlgorithmDataType >( externalAlgorithm, externalData ) ) + {} + + //! @brief constructor + //! @param AlgorithmReturnType& (*externalAlgorithm)() + template< typename AlgorithmReturnType > peoWrapper( AlgorithmReturnType& (*externalAlgorithm)() ) + : algorithm( new FunctionAlgorithm< AlgorithmReturnType, void >( externalAlgorithm ) ) + {} + + //! @brief constructor + //! @param AlgorithmReturnType& (*externalAlgorithm)( AlgorithmDataType& ) + //! @param AlgorithmDataType& externalData + template< typename AlgorithmReturnType, typename AlgorithmDataType > peoWrapper( AlgorithmReturnType& (*externalAlgorithm)( AlgorithmDataType& ), AlgorithmDataType& externalData ) + : algorithm( new FunctionAlgorithm< AlgorithmReturnType, AlgorithmDataType >( externalAlgorithm, externalData ) ) + {} + + //! @brief destructor + ~peoWrapper() + { + delete algorithm; + } + + //! @brief function run + void run() + { + algorithm->operator()(); + } + + + private: + + struct AbstractAlgorithm + { + + // virtual destructor as we will be using inheritance and polymorphism + virtual ~AbstractAlgorithm() + { } + + // operator to be called for executing the algorithm + virtual void operator()() + { } + }; + + template< typename AlgorithmType, typename AlgorithmDataType > struct Algorithm : public AbstractAlgorithm + { + + Algorithm( AlgorithmType& externalAlgorithm, AlgorithmDataType& externalData ) + : algorithm( externalAlgorithm ), algorithmData( externalData ) + {} + + virtual void operator()() + { + algorithm( algorithmData ); + } + + AlgorithmType& algorithm; + AlgorithmDataType& algorithmData; + }; + + template< typename AlgorithmType > struct Algorithm< AlgorithmType, void > : public AbstractAlgorithm + { + + Algorithm( AlgorithmType& externalAlgorithm ) : algorithm( externalAlgorithm ) + {} + + virtual void operator()() + { + algorithm(); + } + + AlgorithmType& algorithm; + }; + + template< typename AlgorithmReturnType, typename AlgorithmDataType > struct FunctionAlgorithm : public AbstractAlgorithm + { + + FunctionAlgorithm( AlgorithmReturnType (*externalAlgorithm)( AlgorithmDataType& ), AlgorithmDataType& externalData ) + : algorithm( externalAlgorithm ), algorithmData( externalData ) + {} + + virtual void operator()() + { + algorithm( algorithmData ); + } + + AlgorithmReturnType (*algorithm)( AlgorithmDataType& ); + AlgorithmDataType& algorithmData; + }; + + template< typename AlgorithmReturnType > struct FunctionAlgorithm< AlgorithmReturnType, void > : public AbstractAlgorithm + { + + FunctionAlgorithm( AlgorithmReturnType (*externalAlgorithm)() ) + : algorithm( externalAlgorithm ) + {} + + virtual void operator()() + { + algorithm(); + } + + AlgorithmReturnType (*algorithm)(); + }; + + private: + //! @param AbstractAlgorithm* algorithm + AbstractAlgorithm* algorithm; + }; + + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/CMakeLists.txt b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/CMakeLists.txt new file mode 100644 index 000000000..cff45bfa7 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/CMakeLists.txt @@ -0,0 +1,9 @@ + + +###################################################################################### +### 1) Where must cmake go now ? +###################################################################################### + +SUBDIRS(mpi) + +###################################################################################### \ No newline at end of file diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/CMakeLists.txt b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/CMakeLists.txt new file mode 100644 index 000000000..5ab0ccd94 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/CMakeLists.txt @@ -0,0 +1,102 @@ +SET(CMAKE_DEFAULT_BUILD_TYPE Debug CACHE STRING "Variable that stores the default CMake build type" FORCE) +SET(CMAKE_CXX_FLAGS "-O0 -g") +SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -g") +SET(CMAKE_CXX_FLAGS_RELEASE "-O0 -g") +SET(CMAKE_CXX_FLAGS_MINSIZEREL "-O0 -g") +SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O0 -g") + +###################################################################################### +### 0) Set the compiler +###################################################################################### + +SET (CMAKE_CXX_COMPILER mpicxx) + +###################################################################################### + + +###################################################################################### +### 1) Include the sources +###################################################################################### + +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src) +INCLUDE_DIRECTORIES(${XML2_CFLAGS_WITH_WHITESPACE}) + +###################################################################################### + + + +###################################################################################### +### 2) Define your target(s): just the rmc_mpi library here +###################################################################################### + +SET(RMC_MPI_LIB_OUTPUT_PATH ${ParadisEO-PEO_BINARY_DIR}/lib) +SET(LIBRARY_OUTPUT_PATH ${RMC_MPI_LIB_OUTPUT_PATH}) + +SET (RMC_MPI_SOURCES node.cpp + param.cpp + comm.cpp + cooperative.cpp + mess.cpp + rmc.cpp + scheduler.cpp + synchron.cpp + worker.cpp + send.cpp + recv.cpp + xml_parser.cpp + schema.cpp + runner.cpp + service.cpp) + +ADD_LIBRARY(rmc_mpi STATIC ${RMC_MPI_SOURCES}) +ADD_DEPENDENCIES(rmc_mpi peo) +###################################################################################### + + + +###################################################################################### +### 3) Optionnal: define your lib version: +###################################################################################### + +SET(RMC_MPI_VERSION ${GLOBAL_VERSION}) +SET_TARGET_PROPERTIES(rmc_mpi PROPERTIES VERSION "${RMC_MPI_VERSION}") +###################################################################################### + + +###################################################################################### +### 4) Link the librairies for your target(s) +###################################################################################### + +# No library required + +###################################################################################### + + +###################################################################################### +### 5) Windows advanced config - especially for Microsoft Visual Studio 8 +###################################################################################### + + IF(CMAKE_CXX_COMPILER MATCHES cl) + IF(NOT WITH_SHARED_LIBS) + IF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + SET(CMAKE_CXX_FLAGS "/nologo /W3 /Gy") + SET(CMAKE_CXX_FLAGS_DEBUG "/MTd /Z7 /Od") + SET(CMAKE_CXX_FLAGS_RELEASE "/MT /O2") + SET(CMAKE_CXX_FLAGS_MINSIZEREL "/MT /O2") + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MTd /Z7 /Od") + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:CONSOLE") + + ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + ENDIF(NOT WITH_SHARED_LIBS) + ENDIF(CMAKE_CXX_COMPILER MATCHES cl) +###################################################################################### + + +###################################################################################### +### 6) Where must cmake go now ? +###################################################################################### + +# nothing to be compiled in the subdirs + +###################################################################################### + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/comm.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/comm.cpp new file mode 100644 index 000000000..0cac09fca --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/comm.cpp @@ -0,0 +1,112 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + + +#include + +#include "comm.h" +#include "mess.h" +#include "node.h" +#include "param.h" +#include "../../core/peo_debug.h" +#include "../../core/runner.h" +#include "send.h" +#include "recv.h" +#include "scheduler.h" + +static sem_t sem_comm_init; + +static Communicator * the_thread; + + +Communicator :: Communicator (int * __argc, char * * * __argv) +{ + + the_thread = this; + initNode (__argc, __argv); + loadRMCParameters (* __argc, * __argv); + + sem_post (& sem_comm_init); +} + +void Communicator :: start () +{ + + while (true) + { + + /* Zzz Zzz Zzz :-))) */ + sleep (); + + sendMessages (); + + if (! atLeastOneActiveRunner () && ! atLeastOneActiveThread() && allResourcesFree ()) + break; + + receiveMessages (); + } + + waitBuffers (); + printDebugMessage ("finalizing"); + + //synchronizeNodes (); +} + +void initCommunication () +{ + + static bool initializedSemaphore = false; + + if (initializedSemaphore) + { + sem_destroy(& sem_comm_init); + } + + sem_init (& sem_comm_init, 0, 0); + initializedSemaphore = true; +} + +void waitNodeInitialization () +{ + + sem_wait (& sem_comm_init); +} + +void wakeUpCommunicator () +{ + + the_thread -> wakeUp (); +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/comm.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/comm.h new file mode 100644 index 000000000..ef19fa9ac --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/comm.h @@ -0,0 +1,60 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __comm_mpi_h +#define __comm_mpi_h + +#include "../../core/communicable.h" +#include "../../core/reac_thread.h" + +class Communicator : public ReactiveThread + { + + public : + + /* Ctor */ + Communicator (int * __argc, char * * * __argv); + + void start (); + }; + +extern void initCommunication (); + +extern void waitNodeInitialization (); + +extern void wakeUpCommunicator (); + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/cooperative.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/cooperative.cpp new file mode 100644 index 000000000..ab12e5510 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/cooperative.cpp @@ -0,0 +1,88 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include "../../core/cooperative.h" +#include "send.h" +#include "tags.h" +#include "schema.h" +#include "mess.h" +#include "../../core/peo_debug.h" + +Runner * Cooperative :: getOwner () +{ + + return owner; +} + +void Cooperative :: setOwner (Runner & __runner) +{ + + owner = & __runner; +} + +void Cooperative :: send (Cooperative * __coop) +{ + + :: send (this, getRankOfRunner (__coop -> getOwner () -> getDefinitionID ()), COOP_TAG); + // stop (); +} + +void Cooperative :: synchronizeCoopEx () +{ + :: send (this, my_node -> rk_sched, SYNCHRONIZE_REQ_TAG); +} + +Cooperative * getCooperative (COOP_ID __key) +{ + + return dynamic_cast (getCommunicable (__key)); +} + +void Cooperative :: notifySending () +{ + + //getOwner -> setPassive (); + // resume (); +} + +void Cooperative :: notifyReceiving () +{} + +void Cooperative :: notifySendingSyncReq () +{} + +void Cooperative :: notifySynchronized () +{} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/mess.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/mess.cpp new file mode 100644 index 000000000..af93c5117 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/mess.cpp @@ -0,0 +1,345 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include +#include + +#include "mess.h" +#include "../../core/peo_debug.h" +#include "node.h" + +#define MPI_BUF_SIZE 1024*64 + +static char mpi_buf [MPI_BUF_SIZE]; + +static int pos_buf; + +static std :: vector act_buf; /* Active buffers */ + +static std :: vector act_req; /* Active requests */ + +void initBuffers () +{ + + pos_buf = 0; + act_buf.clear (); + act_req.clear (); +} + +void cleanBuffers () +{ + + for (unsigned i = 0; i < act_req.size ();) + { + + MPI_Status stat ; + int flag ; + + MPI_Test (act_req [i], & flag, & stat) ; + if (flag) + { + + delete[] act_buf [i] ; + delete act_req [i] ; + + act_buf [i] = act_buf.back () ; + act_buf.pop_back () ; + + act_req [i] = act_req.back () ; + act_req.pop_back () ; + } + else + i ++; + } +} + +void waitBuffers () +{ + + printDebugMessage ("waiting the termination of the asynchronous operations to complete"); + + for (unsigned i = 0; i < act_req.size (); i ++) + { + + MPI_Status stat ; + + MPI_Wait (act_req [i], & stat) ; + + delete[] act_buf [i] ; + delete act_req [i] ; + } +} + +bool probeMessage (int & __src, int & __tag) +{ + + int flag; + + MPI_Status stat; + + MPI_Iprobe (MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, & flag, & stat); + + __src = stat.MPI_SOURCE; + __tag = stat.MPI_TAG; + + return flag; +} + +void waitMessage () +{ + + MPI_Status stat; + + MPI_Probe (MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, & stat); +} + +void initMessage () +{ + + pos_buf = 0; +} + +void sendMessage (int __to, int __tag) +{ + + cleanBuffers (); + act_buf.push_back (new char [pos_buf]); + act_req.push_back (new MPI_Request); + memcpy (act_buf.back (), mpi_buf, pos_buf); + MPI_Isend (act_buf.back (), pos_buf, MPI_PACKED, __to, __tag, MPI_COMM_WORLD, act_req.back ()); +} + +void sendMessageToAll (int __tag) +{ + + for (int i = 0; i < getNumberOfNodes (); i ++) + sendMessage (i, __tag); +} + +void receiveMessage (int __from, int __tag) +{ + + MPI_Status stat; + MPI_Request req; + + MPI_Irecv (mpi_buf, MPI_BUF_SIZE, MPI_PACKED, __from, __tag, MPI_COMM_WORLD, & req); + MPI_Wait (& req, & stat); +} + +void synchronizeNodes () +{ + + MPI_Barrier ( MPI_COMM_WORLD ); +} + +/* Char */ +void pack (const char & __c) +{ + + MPI_Pack ((void *) & __c, 1, MPI_CHAR, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD); +} + +/* Boolean */ +void pack (const bool & __b, int __nitem) +{ + + MPI_Pack ((void *) & __b, __nitem, MPI_INT, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD); +} + +/* Float */ +void pack (const float & __f, int __nitem) +{ + + MPI_Pack ((void *) & __f, __nitem, MPI_FLOAT, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD); +} + +/* Double */ +void pack (const double & __d, int __nitem) +{ + + MPI_Pack ((void *) & __d, __nitem, MPI_DOUBLE, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD); +} + +/* Integer */ +void pack (const int & __i, int __nitem) +{ + + MPI_Pack ((void *) & __i, __nitem, MPI_INT, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD); +} + +/* Unsigned int. */ +void pack (const unsigned int & __ui, int __nitem) +{ + + MPI_Pack ((void *) & __ui, __nitem, MPI_UNSIGNED, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD); +} + +/* Short int. */ +void pack (const short & __sh, int __nitem) +{ + + MPI_Pack ((void *) & __sh, __nitem, MPI_SHORT, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD); +} + +/* Unsigned short */ +void pack (const unsigned short & __ush, int __nitem) +{ + + MPI_Pack ((void *) & __ush, __nitem, MPI_UNSIGNED_SHORT, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD); +} + +/* Long */ +void pack (const long & __l, int __nitem) +{ + + MPI_Pack ((void *) & __l, __nitem, MPI_LONG, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD); +} + +/* Unsigned long */ +void pack (const unsigned long & __ul, int __nitem) +{ + + MPI_Pack ((void *) & __ul, __nitem, MPI_UNSIGNED_LONG, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD); +} + +/* String */ +void pack (const char * __str) +{ + + int len = strlen (__str) + 1; + MPI_Pack (& len, 1, MPI_INT, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD); + MPI_Pack ((void *) __str, len, MPI_CHAR, mpi_buf, MPI_BUF_SIZE, & pos_buf, MPI_COMM_WORLD); +} + +void pack (const std::string & __str) +{ + + size_t size = __str.size() + 1; + char * buffer = new char[ size ]; + strncpy( buffer, __str.c_str(), size ); + pack (buffer); + delete [] buffer; +} + +/* Char */ +void unpack (char & __c) +{ + + MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __c, 1, MPI_CHAR, MPI_COMM_WORLD); +} + +/* Boolean */ +extern void unpack (bool & __b, int __nitem ) + { + + MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __b, __nitem, MPI_INT, MPI_COMM_WORLD); + } + +/* Float */ +void unpack (float & __f, int __nitem) +{ + + MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __f, __nitem, MPI_FLOAT, MPI_COMM_WORLD); +} + +/* Double */ +void unpack (double & __d, int __nitem) +{ + + MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __d, __nitem, MPI_DOUBLE, MPI_COMM_WORLD); +} + +/* Integer */ +void unpack (int & __i, int __nitem) +{ + + MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __i, __nitem, MPI_INT, MPI_COMM_WORLD); +} + +/* Unsigned int. */ +void unpack (unsigned int & __ui, int __nitem) +{ + + MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __ui, __nitem, MPI_UNSIGNED, MPI_COMM_WORLD); +} + +/* Short int. */ +void unpack (short & __sh, int __nitem) +{ + + MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __sh, __nitem, MPI_SHORT, MPI_COMM_WORLD); +} + +/* Unsigned short */ +void unpack (unsigned short & __ush, int __nitem) +{ + + MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __ush, __nitem, MPI_UNSIGNED_SHORT, MPI_COMM_WORLD); +} + +/* Long */ +void unpack (long & __l, int __nitem) +{ + + MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __l, __nitem, MPI_LONG, MPI_COMM_WORLD); +} + +/* Unsigned long */ +void unpack (unsigned long & __ul, int __nitem) +{ + + MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & __ul, __nitem, MPI_UNSIGNED_LONG, MPI_COMM_WORLD); +} + +/* String */ +void unpack (char * __str) +{ + + int len; + MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & len, 1, MPI_INT, MPI_COMM_WORLD); + MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, __str, len, MPI_CHAR, MPI_COMM_WORLD); +} +void unpack (std::string & __str) +{ + + char * buffer; + int len; + MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, & len, 1, MPI_INT, MPI_COMM_WORLD); + MPI_Unpack (mpi_buf, MPI_BUF_SIZE, & pos_buf, buffer, len, MPI_CHAR, MPI_COMM_WORLD); + __str.assign( buffer ); + +} + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/mess.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/mess.h new file mode 100644 index 000000000..ac57c5665 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/mess.h @@ -0,0 +1,62 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __mess_rmc_h +#define __mess_rmc_h + +#include "../../core/messaging.h" + +extern void initMessage (); + +extern void sendMessage (int __to, int __tag); + +extern void sendMessageToAll (int __tag); + +extern void receiveMessage (int __from, int __tag); + +extern void initBuffers (); + +extern void cleanBuffers (); + +extern void waitBuffers (); + +extern bool probeMessage (int & __src, int & __tag); + +extern void waitMessage (); + +extern void synchronizeNodes (); + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/node.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/node.cpp new file mode 100644 index 000000000..ca996fcd7 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/node.cpp @@ -0,0 +1,154 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include +#include +#include +#include +#include + +#include "mess.h" + + +class MPIThreadedEnv + { + + public: + + static void init ( int * __argc, char * * * __argv ) + { + + static MPIThreadedEnv mpiThreadedEnv( __argc, __argv ); + } + + static void finalize () + { + + static bool finalizedEnvironment = false; + + if (! finalizedEnvironment ) + { + + MPI_Finalize (); + finalizedEnvironment = true; + } + } + + private: + + /* No instance of this class can be created outside its domain! */ + MPIThreadedEnv ( int * __argc, char * * * __argv ) + { + + static bool MPIThreadedEnvInitialized = false; + int provided = 1; + + if (! MPIThreadedEnvInitialized) + { + + MPI_Init_thread (__argc, __argv, MPI_THREAD_FUNNELED, & provided); + + assert (provided == MPI_THREAD_FUNNELED); /* The MPI implementation must be multi-threaded. + Yet, only one thread performs the comm. + operations */ + MPIThreadedEnvInitialized = true; + } + } + + ~MPIThreadedEnv() + { + + finalize (); + } + }; + + +static int rk, sz; /* Rank & size */ + +static std :: map name_to_rk; + +static std :: vector rk_to_name; + + +int getNodeRank () +{ + + return rk; +} + +int getNumberOfNodes () +{ + + return sz; +} + +void collectiveCountOfRunners ( unsigned int* num_local_exec_runners, unsigned int* num_exec_runners ) +{ + + MPI_Allreduce( num_local_exec_runners, num_exec_runners, 1, MPI_UNSIGNED, MPI_SUM, MPI_COMM_WORLD ); +} + +int getRankFromName (const std :: string & __name) +{ + + return atoi (__name.c_str ()); +} + +void initNode (int * __argc, char * * * __argv) +{ + + rk_to_name.clear (); + name_to_rk.clear (); + + MPIThreadedEnv :: init ( __argc, __argv ); + //synchronizeNodes(); + + MPI_Comm_rank (MPI_COMM_WORLD, & rk); /* Who ? */ + MPI_Comm_size (MPI_COMM_WORLD, & sz); /* How many ? */ + + char names [sz] [MPI_MAX_PROCESSOR_NAME]; + int len; + + /* Processor names */ + MPI_Get_processor_name (names [0], & len); /* Me */ + MPI_Allgather (names, MPI_MAX_PROCESSOR_NAME, MPI_CHAR, names, MPI_MAX_PROCESSOR_NAME, MPI_CHAR, MPI_COMM_WORLD); /* Broadcast */ + + for (int i = 0; i < sz; i ++) + { + rk_to_name.push_back (names [i]); + name_to_rk [names [i]] = i; + } +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/node.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/node.h new file mode 100644 index 000000000..631ad873a --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/node.h @@ -0,0 +1,75 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __node_h +#define __node_h + +#include +#include + +#include "../../core/runner.h" + +typedef int RANK_ID; + +struct Node + { + + RANK_ID rk; /* Rank */ + std :: string name; /* Host name */ + unsigned num_workers; /* Number of parallel workers */ + int rk_sched; /* rank of the scheduler */ + std :: vector id_run; /* List of runner def. IDs */ + std :: vector execution_id_run; /* List of runtime execution runner IDs */ + }; + +extern Node * my_node; + +extern bool isScheduleNode (); + +extern int getNodeRank (); /* It gives the rank of the calling process */ + +extern RANK_ID getRankOfRunner (RUNNER_ID __key); + +extern int getNumberOfNodes (); /* It gives the size of the environment (Total number of nodes) */ + +extern void collectiveCountOfRunners ( unsigned int* num_local_exec_runners, unsigned int* num_exec_runners ); + +extern int getRankFromName (const std :: string & __name); /* It gives the rank of the process + expressed by its name */ + +extern void initNode (int * __argc, char * * * __argv); + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/param.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/param.cpp new file mode 100644 index 000000000..c0cb02d9e --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/param.cpp @@ -0,0 +1,50 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include + +#include "schema.h" + +void loadRMCParameters (int & __argc, char * * & __argv) +{ + + eoParser parser (__argc, __argv); + + /* Schema */ + eoValueParam schema_param ("schema.xml", "schema", "?"); + parser.processParam (schema_param); + loadSchema (schema_param.value ().c_str ()); +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/param.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/param.h new file mode 100644 index 000000000..9d36e9241 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/param.h @@ -0,0 +1,42 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __rmc_param_h +#define __rmc_param_h + +extern void loadRMCParameters (int & __argc, char * * & __argv); + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/recv.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/recv.cpp new file mode 100644 index 000000000..4966fb384 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/recv.cpp @@ -0,0 +1,156 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include "comm.h" +#include "tags.h" +#include "worker.h" +#include "scheduler.h" +#include "synchron.h" +#include "mess.h" +#include "node.h" +#include "../../core/runner.h" +#include "../../core/cooperative.h" +#include "../../core/peo_debug.h" + +void receiveMessages () +{ + + cleanBuffers (); + + do + { + + if (! atLeastOneActiveThread ()) + { + + waitMessage (); + } + + int src, tag; + + while (probeMessage (src, tag)) + { + + receiveMessage (src, tag); + initMessage (); + + switch (tag) + { + + case RUNNER_STOP_TAG: + unpackTerminationOfRunner (); + break; + + case SYNCHRONIZE_REQ_TAG: + unpackSynchronRequest (); + break; + + case SYNCHRONIZED_TAG: + { + RUNNER_ID runner_id; + unpack (runner_id); + + COOP_ID coop_id; + unpack (coop_id); + + getCooperative (coop_id) -> notifySynchronized (); + break; + } + + case COOP_TAG: + COOP_ID coop_id; + unpack (coop_id); + getCooperative (coop_id) -> unpack (); + getCooperative (coop_id) -> notifyReceiving (); + break; + + case SCHED_REQUEST_TAG: + unpackResourceRequest (); + break; + + case SCHED_RESULT_TAG: + { + /* Unpacking the resource */ + SERVICE_ID serv_id; + unpack (serv_id); + Service * serv = getService (serv_id); + int dest; + unpack (dest); + WORKER_ID worker_id; + unpack (worker_id); + + /* Going back ... */ + initMessage (); + pack (worker_id); + pack (serv_id); + serv -> packData (); + serv -> notifySendingData (); + sendMessage (dest, TASK_DATA_TAG); + break; + } + + case TASK_DATA_TAG: + { + WORKER_ID worker_id; + unpack (worker_id); + Worker * worker = getWorker (worker_id); + worker -> setSource (src); + worker -> unpackData (); + worker -> wakeUp (); + break; + } + + case TASK_RESULT_TAG: + { + SERVICE_ID serv_id; + unpack (serv_id); + Service * serv = getService (serv_id); + serv -> unpackResult (); + break; + } + + case TASK_DONE_TAG: + unpackTaskDone (); + break; + + default: + ; + }; + } + + } + while ( ! atLeastOneActiveThread () && atLeastOneActiveRunner () /*&& ! allResourcesFree ()*/ ); +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/recv.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/recv.h new file mode 100644 index 000000000..80ab6bc95 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/recv.h @@ -0,0 +1,42 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __recv_h +#define __recv_h + +extern void receiveMessages (); + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/rmc.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/rmc.cpp new file mode 100644 index 000000000..af57cdb78 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/rmc.cpp @@ -0,0 +1,91 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include "send.h" +#include "worker.h" +#include "schema.h" +#include "comm.h" +#include "scheduler.h" +#include "../../core/peo_debug.h" + +static std :: vector ll_threads; /* Low level threads */ +static std :: vector worker_threads; /* Worker threads */ +static Communicator* communicator_thread = NULL; /* Communicator thread */ + + +void runRMC () +{ + + /* Worker(s) ? */ + for (unsigned i = 0; i < my_node -> num_workers; i ++) + { + worker_threads.push_back (new Worker); + addThread (worker_threads.back(), ll_threads); + } + + wakeUpCommunicator (); +} + +void initRMC (int & __argc, char * * & __argv) +{ + + /* Communication */ + initCommunication (); + communicator_thread = new Communicator (& __argc, & __argv); + addThread (communicator_thread, ll_threads); + waitNodeInitialization (); + initSending (); + + /* Scheduler */ + if (isScheduleNode ()) + initScheduler (); +} + +void finalizeRMC () +{ + + printDebugMessage ("before join threads RMC"); + + joinThreads (ll_threads); + for (unsigned i = 0; i < worker_threads.size(); i++ ) + { + delete worker_threads [i]; + } + worker_threads.clear (); + delete communicator_thread; + + printDebugMessage ("after join threads RMC"); +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/runner.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/runner.cpp new file mode 100644 index 000000000..34ba0b582 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/runner.cpp @@ -0,0 +1,65 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include "../../core/messaging.h" +#include "../../core/runner.h" +#include "node.h" +#include "mess.h" +#include "send.h" +#include "tags.h" +#include "schema.h" + + +bool Runner :: isAssignedLocally () +{ + + for (unsigned i = 0; i < my_node -> id_run.size (); i ++) + if (my_node -> id_run [i] == def_id) + return true; + return false; +} + +void Runner :: terminate () +{ + + sendToAll (this, RUNNER_STOP_TAG); +} + +void Runner :: packTermination () +{ + + pack (def_id); +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/scheduler.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/scheduler.cpp new file mode 100644 index 000000000..21f924786 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/scheduler.cpp @@ -0,0 +1,124 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include + +#include "scheduler.h" +#include "tags.h" +#include "mess.h" +#include "../../core/peo_debug.h" + +static std :: queue resources; /* Free resources */ + +static std :: queue requests; /* Requests */ + +static unsigned initNumberOfRes = 0; + +extern void wakeUpCommunicator(); + +void initScheduler () +{ + + resources = std :: queue (); + requests = std :: queue (); + initNumberOfRes = 0; + + for (unsigned i = 0; i < the_schema.size (); i ++) + { + + const Node & node = the_schema [i]; + + if (node.rk_sched == my_node -> rk) + for (unsigned j = 0; j < node.num_workers; j ++) + resources.push (std :: pair (i, j + 1)); + } + initNumberOfRes = resources.size (); +} + +bool allResourcesFree () +{ + return resources.size () == initNumberOfRes; +} + +unsigned numResourcesFree () +{ + return resources.size (); +} + +static void update () +{ + + unsigned num_alloc = std :: min (resources.size (), requests.size ()); + + for (unsigned i = 0; i < num_alloc; i ++) + { + + SCHED_REQUEST req = requests.front (); + requests.pop (); + + SCHED_RESOURCE res = resources.front (); + resources.pop (); + + printDebugMessage ("allocating a resource."); + initMessage (); + pack (req.second); + pack (res); + sendMessage (req.first, SCHED_RESULT_TAG); + } +} + +void unpackResourceRequest () +{ + + printDebugMessage ("queuing a resource request."); + SCHED_REQUEST req; + unpack (req); + requests.push (req); + update (); +} + +void unpackTaskDone () +{ + + printDebugMessage ("I'm notified a worker is now idle."); + SCHED_RESOURCE res; + unpack (res); + resources.push (res); + if (resources.size () == initNumberOfRes) + printDebugMessage ("all the resources are now free."); + update (); + wakeUpCommunicator(); +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/scheduler.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/scheduler.h new file mode 100644 index 000000000..186b33c78 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/scheduler.h @@ -0,0 +1,62 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __scheduler_h +#define __scheduler_h + +#include + +#include "schema.h" +#include "worker.h" + +typedef std :: pair SCHED_RESOURCE; + +typedef std :: pair SCHED_REQUEST; + +/* Initializing the list of available workers */ +extern void initScheduler (); + +/* Processing a resource request from a service */ +extern void unpackResourceRequest (); + +/* Being known a worker is now idle :-) */ +extern void unpackTaskDone (); + +extern bool allResourcesFree (); + +extern unsigned numResourcesFree (); + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/schema.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/schema.cpp new file mode 100644 index 000000000..5cd27a425 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/schema.cpp @@ -0,0 +1,207 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include +#include + +#include "schema.h" +#include "xml_parser.h" +#include "comm.h" +#include "node.h" +#include "../../core/peo_debug.h" + + +std :: vector the_schema; + +Node * my_node; + +static unsigned maxSpecifiedRunnerID = 0; + + +RANK_ID getRankOfRunner (RUNNER_ID __key) +{ + + for (unsigned i = 0; i < the_schema.size (); i ++) + for (unsigned j = 0; j < the_schema [i].id_run.size (); j ++) + if (the_schema [i].id_run [j] == __key) + return the_schema [i].rk; + assert (false); + return 0; +} + +static void loadNode (int __rk_sched) +{ + + Node node; + + node.rk_sched = __rk_sched; + + /* ATT: name*/ + node.rk = getRankFromName (getAttributeValue ("name")); + /* ATT: num_workers */ + node.num_workers = atoi (getAttributeValue ("num_workers").c_str ()); + + while (true) + { + + /* TAG: | */ + std :: string name = getNextNode (); + assert (name == "runner" || name == "node"); + if (name == "runner") + { + /* TAG: */ + node.id_run.push_back (atoi (getNextNode ().c_str ())); + if ( node.id_run.back() > maxSpecifiedRunnerID ) + maxSpecifiedRunnerID = node.id_run.back(); + /* TAG:
*/ + assert (getNextNode () == "runner"); + } + else + { + /* TAG: */ + node.execution_id_run = node.id_run; + the_schema.push_back (node); + break; + } + } +} + +static void loadGroup () +{ + + std :: string name; + + /* ATT: scheduler*/ + int rk_sched = getRankFromName (getAttributeValue ("scheduler")); + + while (true) + { + + /* TAG: | */ + name = getNextNode (); + assert (name == "node" || name == "group"); + if (name == "node") + /* TAG: */ + loadNode (rk_sched); + else + /* TAG: */ + break; + } +} + +bool isScheduleNode () +{ + + return my_node -> rk == my_node -> rk_sched; +} + +void loadSchema (const char * __filename) +{ + + openXMLDocument (__filename); + + std :: string name; + + /* TAG: */ + name = getNextNode (); + assert (name == "schema"); + + the_schema.clear(); + maxSpecifiedRunnerID = 0; + + while (true) + { + + /* TAG: | */ + name = getNextNode (); + assert (name == "group" || name == "schema"); + if (name == "group") + /* TAG: */ + loadGroup (); + else + /* TAG: */ + break; + } + + + std :: set uniqueRunnerIDs; + unsigned nbUniqueIDs = 0; + for (unsigned i = 0; i < the_schema.size (); i ++) + { + for (unsigned j = 0; j < the_schema [i].id_run.size(); j ++) + { + uniqueRunnerIDs.insert( the_schema [i].id_run[j] ); + /* In case a duplicate ID has been found */ + if ( uniqueRunnerIDs.size() == nbUniqueIDs ) + { + the_schema [i].execution_id_run[j] = ++maxSpecifiedRunnerID; + } + nbUniqueIDs = uniqueRunnerIDs.size(); + } + } + + /* Looking for my node */ + for (unsigned i = 0; i < the_schema.size (); i ++) + { + if (the_schema [i].rk == getNodeRank ()) + my_node = & (the_schema [i]); + } + + + /* About me */ + char mess [1000]; + + sprintf (mess, "my rank is %d", my_node -> rk); + printDebugMessage (mess); + + if (isScheduleNode ()) + printDebugMessage ("I'am a scheduler"); + + for (unsigned i = 0; i < my_node -> id_run.size (); i ++) + { + sprintf (mess, "I manage the runner %d", my_node -> id_run [i]); + printDebugMessage (mess); + } + + if (my_node -> num_workers) + { + + sprintf (mess, "I manage %d worker(s)", my_node -> num_workers); + printDebugMessage (mess); + } + + closeXMLDocument (); +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/schema.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/schema.h new file mode 100644 index 000000000..ef46f54ab --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/schema.h @@ -0,0 +1,58 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __schema_h +#define __schema_h + +#include +#include +#include + +#include "node.h" +#include "../../core/runner.h" + + +extern Node * my_node; + +extern bool isScheduleNode (); + +extern RANK_ID getRankOfRunner (RUNNER_ID __key); + +extern std :: vector the_schema; + +extern void loadSchema (const char * __filename); + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/send.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/send.cpp new file mode 100644 index 000000000..e78cb6e12 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/send.cpp @@ -0,0 +1,178 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include +#include +#include + +#include "tags.h" +#include "comm.h" +#include "worker.h" +#include "scheduler.h" +#include "mess.h" +#include "node.h" +#include "../../core/cooperative.h" +#include "../../core/peo_debug.h" + +#define TO_ALL -1 + + +typedef struct + { + + Communicable * comm; + int to; + int tag; + + } +SEND_REQUEST; + + +static std :: queue mess; + +static sem_t sem_send; + +static bool contextInitialized = false; + + +void initSending () +{ + + static bool initializedSemaphore = false; + + mess = std :: queue (); + + if (initializedSemaphore) + { + sem_destroy(& sem_send); + } + + sem_init (& sem_send, 0, 1); + initializedSemaphore = true; + + contextInitialized = false; +} + +void send (Communicable * __comm, int __to, int __tag) +{ + + SEND_REQUEST req; + req.comm = __comm; + req.to = __to; + req.tag = __tag; + + sem_wait (& sem_send); + mess.push (req); + sem_post (& sem_send); + wakeUpCommunicator (); +} + +void sendToAll (Communicable * __comm, int __tag) +{ + + send (__comm, TO_ALL, __tag); +} + +extern void initializeContext (); + +void sendMessages () +{ + + if (! contextInitialized) + { + contextInitialized = true; + initializeContext(); + } + + sem_wait (& sem_send); + + while (! mess.empty ()) + { + + SEND_REQUEST req = mess.front (); + + Communicable * comm = req.comm; + + initMessage (); + + switch (req.tag) + { + + case RUNNER_STOP_TAG: + dynamic_cast (comm) -> packTermination (); + dynamic_cast (comm) -> notifySendingTermination (); + break; + + case COOP_TAG: + dynamic_cast (comm) -> pack (); + dynamic_cast (comm) -> notifySending (); + break; + + case SYNCHRONIZE_REQ_TAG: + dynamic_cast (comm) -> packSynchronizeReq (); + dynamic_cast (comm) -> notifySendingSyncReq (); + break; + + case SCHED_REQUEST_TAG: + dynamic_cast (comm) -> packResourceRequest (); + dynamic_cast (comm) -> notifySendingResourceRequest (); + break; + + case TASK_RESULT_TAG: + dynamic_cast (comm) -> packResult (); + dynamic_cast (comm) -> notifySendingResult (); + break; + + case TASK_DONE_TAG: + dynamic_cast (comm) -> packTaskDone (); + dynamic_cast (comm) -> notifySendingTaskDone (); + break; + + default : + break; + + }; + + if (req.to == TO_ALL) + sendMessageToAll (req.tag); + else + sendMessage (req.to, req.tag); + + mess.pop (); + } + + sem_post (& sem_send); +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/send.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/send.h new file mode 100644 index 000000000..deccf1799 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/send.h @@ -0,0 +1,50 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __send_h +#define __send_h + +#include "../../core/communicable.h" + +extern void initSending (); + +extern void send (Communicable * __comm, int __to, int __tag); + +extern void sendToAll (Communicable * __comm, int __tag); + +extern void sendMessages (); + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/service.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/service.cpp new file mode 100644 index 000000000..41b989447 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/service.cpp @@ -0,0 +1,60 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include "../../core/service.h" +#include "../../core/messaging.h" +#include "node.h" +#include "tags.h" +#include "send.h" +#include "scheduler.h" + +void Service :: requestResourceRequest (unsigned __how_many) +{ + + num_sent_rr = __how_many; + for (unsigned i = 0; i < __how_many; i ++) + send (this, my_node -> rk_sched, SCHED_REQUEST_TAG); +} + +void Service :: packResourceRequest () +{ + + SCHED_REQUEST req; + req.first = getNodeRank (); + req.second = getKey (); + + :: pack (req); +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/synchron.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/synchron.cpp new file mode 100644 index 000000000..b0a69dfb1 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/synchron.cpp @@ -0,0 +1,132 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include +#include "synchron.h" +#include "../../core/messaging.h" +#include "node.h" +#include "tags.h" +#include "mess.h" + + + +static SYNC syncRunners; /* Runners to be synchronized */ + +extern void wakeUpCommunicator(); + +extern RANK_ID getRankOfRunner (RUNNER_ID __key); + +/* Initializing the list of runners to be synchronized */ +void initSynchron () +{ + + syncRunners = SYNC(); +} + +/* packing a synchronization request from a service */ +void packSynchronRequest ( const std :: vector & coops ) +{ + + /* Number of coops to synchronize */ + pack( (unsigned)( coops.size() ) ); + + /* Coops to synchronize */ + for (unsigned i = 0; i < coops.size(); i ++) + { + pack( coops[ i ]->getOwner()->getDefinitionID() ); + pack( coops[ i ]->getKey() ); + } +} + +/* Processing a synchronization request from a service */ +void unpackSynchronRequest () +{ + + unsigned req_num_entries; + unpack (req_num_entries); + + /* Creating a sync vector + adding the created entry */ + std::pair< SYNC_RUNNERS, unsigned > req_sync; + + /* Adding entries for each of the runners to be synchronized */ + SyncEntry req_entry; + for (unsigned i = 0; i < req_num_entries; i ++) + { + + unpack (req_entry.runner); + unpack (req_entry.coop); + + req_sync.first.push_back (req_entry); + } + + /* Looking for the sync vector */ + SYNC::iterator sync_it = syncRunners.find (req_sync); + + /* The vector does not exist - insert a new sync */ + if (sync_it == syncRunners.end ()) + { + req_sync.second = 1; + syncRunners.insert (req_sync); + } + else + { + + /* The vector exists - updating the entry */ + std::pair< SYNC_RUNNERS, unsigned >& sync_req_entry = const_cast< std::pair< SYNC_RUNNERS, unsigned >& > (*sync_it); + sync_req_entry.second ++; + + /* All the runners to be synchronized sent the SYNC_REQUEST signal */ + if (sync_req_entry.second == sync_req_entry.first.size()) + { + + /* Remove the entry */ + syncRunners.erase (sync_it); + + /* Send SYNCHRONIZED signals to all the coop objects */ + for (unsigned i = 0; i < req_sync.first.size(); i ++) + { + + initMessage (); + + pack (req_sync.first [i].runner); + pack (req_sync.first [i].coop); + + RANK_ID dest_rank = getRankOfRunner (req_sync.first [i].runner); + sendMessage (dest_rank, SYNCHRONIZED_TAG); + } + } + } +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/synchron.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/synchron.h new file mode 100644 index 000000000..6f2d831af --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/synchron.h @@ -0,0 +1,93 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __synchron_h +#define __synchron_h + +#include +#include +#include + +#include "../../core/runner.h" +#include "../../core/cooperative.h" + +struct SyncEntry + { + + RUNNER_ID runner; + COOP_ID coop; + }; + +struct SyncCompare + { + + bool operator()( const std::pair< std::vector< SyncEntry >, unsigned >& A, const std::pair< std::vector< SyncEntry >, unsigned >& B ) + { + + const std::vector< SyncEntry >& syncA = A.first; + const std::vector< SyncEntry >& syncB = B.first; + + if ( syncA.size() == syncB.size() ) + { + std::vector< SyncEntry >::const_iterator itA = syncA.begin(); + std::vector< SyncEntry >::const_iterator itB = syncB.begin(); + + while ( (*itA).runner < (*itB).runner && itA != syncA.end() ) + { + itA++; + itB++; + } + + return itA == syncA.end(); + } + + return syncA.size() < syncB.size(); + } + }; + +typedef std::vector< SyncEntry > SYNC_RUNNERS; +typedef std::set< std::pair< SYNC_RUNNERS, unsigned >, SyncCompare > SYNC; + +/* Initializing the list of runners to be synchronized */ +extern void initSynchron (); + +/* packing a synchronization request from a service */ +extern void packSynchronRequest ( const std :: vector & coops ); + +/* Processing a synchronization request from a service */ +extern void unpackSynchronRequest (); + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/tags.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/tags.h new file mode 100644 index 000000000..167b9e529 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/tags.h @@ -0,0 +1,54 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __tags_h +#define __tags_h + +#define RUNNER_STOP_TAG 13 + +#define COOP_TAG 14 + +#define SCHED_REQUEST_TAG 16 +#define SCHED_RESULT_TAG 17 + +#define TASK_DATA_TAG 18 +#define TASK_RESULT_TAG 19 +#define TASK_DONE_TAG 20 + +#define SYNCHRONIZE_REQ_TAG 1000 +#define SYNCHRONIZED_TAG 1001 + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/worker.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/worker.cpp new file mode 100644 index 000000000..1da1de3bf --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/worker.cpp @@ -0,0 +1,152 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include + +#include "tags.h" +#include "send.h" +#include "node.h" +#include "schema.h" +#include "worker.h" +#include "mess.h" +#include "../../core/peo_debug.h" + +static std :: vector key_to_worker (1); /* Vector of registered workers */ + +extern void wakeUpCommunicator (); + +Worker * getWorker (WORKER_ID __key) +{ + + return key_to_worker [__key]; +} + +Worker :: Worker () +{ + + recvAndCompleted = false; + taskAssigned = 0; + id = key_to_worker.size (); + key_to_worker.push_back (this); + + sem_init( &sem_task_done, 0, 0 ); +} + +void Worker :: packResult () +{ + + pack (serv_id); + serv -> packResult (); +} + +void Worker :: unpackData () +{ + + taskAssigned ++; + printDebugMessage ("unpacking the ID. of the service."); + unpack (serv_id); + serv = getService (serv_id); + printDebugMessage ("found the service."); + serv -> unpackData (); + printDebugMessage ("unpacking the data."); + setActive (); +} + +void Worker :: packTaskDone () +{ + + pack (getNodeRank ()); + pack (id); +} + +void Worker :: notifySendingResult () +{ + + /* Notifying the scheduler of the termination */ + recvAndCompleted = true; + wakeUp (); +} + +void Worker :: notifySendingTaskDone () +{ + + sem_post(&sem_task_done); + setPassive (); +} + +void Worker :: setSource (int __rank) +{ + + src = __rank; +} + +void Worker :: start () +{ + + while (true) + { + + sleep (); + + if (! atLeastOneActiveRunner () && ! taskAssigned) + break; + + if (recvAndCompleted) + { + send (this, my_node -> rk_sched, TASK_DONE_TAG); + recvAndCompleted = false; + sem_wait(&sem_task_done); + taskAssigned --; + } + else + { + + serv -> execute (); + send (this, src, TASK_RESULT_TAG); + } + } + + printDebugMessage ("Worker finished execution."); + setPassive (); + + wakeUpCommunicator(); +} + +void initWorkersEnv () +{ + + key_to_worker.resize (1); +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/worker.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/worker.h new file mode 100644 index 000000000..26500ec05 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/worker.h @@ -0,0 +1,86 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __worker_h +#define __worker_h + +#include "../../core/communicable.h" +#include "../../core/reac_thread.h" +#include "../../core/service.h" + + +typedef unsigned WORKER_ID; + +class Worker : public Communicable, public ReactiveThread + { + + public : + + Worker (); + + void start (); + + void packResult (); + + void unpackData (); + + void packTaskDone (); + + void notifySendingResult (); + + void notifySendingTaskDone (); + + void setSource (int __rank); + + private : + + WORKER_ID id; + SERVICE_ID serv_id; + Service * serv; + int src; + + bool recvAndCompleted; + unsigned taskAssigned; + + sem_t sem_task_done; + sem_t sem_task_asgn; + }; + +extern void initWorkersEnv (); + +extern Worker * getWorker (WORKER_ID __key); + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/xml_parser.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/xml_parser.cpp new file mode 100644 index 000000000..b5feaaa5b --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/xml_parser.cpp @@ -0,0 +1,109 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include + +#include "xml_parser.h" + +static xmlTextReaderPtr reader; + +void openXMLDocument (const char * __filename) +{ + + reader = xmlNewTextReaderFilename (__filename); + + if (! reader) + { + + fprintf (stderr, "unable to open '%s'.\n", __filename); + exit (1); + } +} + +void closeXMLDocument () +{ + + xmlFreeTextReader (reader); +} + +std :: string getAttributeValue (const std :: string & __attr) +{ + + xmlChar * value = xmlTextReaderGetAttribute (reader, (const xmlChar *) __attr.c_str ()); + + std :: string str ((const char *) value); + + xmlFree (value); + + return str; +} + +static bool isSep (const xmlChar * __text) +{ + + for (unsigned i = 0; i < strlen ((char *) __text); i ++) + if (__text [i] != ' ' && __text [i] != '\t' && __text [i] != '\n') + return false; + return true; +} + +std :: string getNextNode () +{ + + xmlChar * name, * value; + + do + { + xmlTextReaderRead (reader); + name = xmlTextReaderName (reader); + value = xmlTextReaderValue (reader); + } + while (! strcmp ((char *) name, "#text") && isSep (value)); + + std :: string str; + + if (strcmp ((char *) name, "#text")) + str.assign ((char *) name); + else + str.assign ((char *) value); + + if (name) + xmlFree (name); + if (value) + xmlFree (value); + + return str; +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/xml_parser.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/xml_parser.h new file mode 100644 index 000000000..89cc7b5be --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/src/rmc/mpi/xml_parser.h @@ -0,0 +1,50 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __xml_parser_h +#define __xml_parser_h + +#include + +extern void openXMLDocument (const char * __filename); + +extern void closeXMLDocument (); + +extern std :: string getAttributeValue (const std :: string & __attr); + +extern std :: string getNextNode (); + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/test/CMakeLists.txt b/branches/paradiseo-ix86-2.0/paradiseo-peo/test/CMakeLists.txt new file mode 100644 index 000000000..a2ed97667 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/test/CMakeLists.txt @@ -0,0 +1,131 @@ +############################################################################### +## +## CMakeLists file for ParadisEO-PEO/test +## +############################################################################### + + + +###################################################################################### +### 1) Include the sources +###################################################################################### + +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src) +INCLUDE_DIRECTORIES(${MO_SRC_DIR}/src) +INCLUDE_DIRECTORIES(${MOEO_SRC_DIR}/src) +INCLUDE_DIRECTORIES(${ParadisEO-PEO_SOURCE_DIR}/src) +INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}) + +INCLUDE(CheckLibraryExists) + +SET (CMAKE_CXX_COMPILER mpicxx) +ADD_CUSTOM_TARGET(install ALL DEPENDS ${ParadisEO-PEO_SOURCE_DIR}/test/param ${ParadisEO-PEO_SOURCE_DIR}/test/schema.xml) +ADD_CUSTOM_COMMAND( + TARGET install + PRE_BUILD + COMMAND ${CMAKE_COMMAND} + ARGS -E copy_if_different + ${ParadisEO-PEO_SOURCE_DIR}/test/param + ${ParadisEO-PEO_BINARY_DIR}/test) +ADD_CUSTOM_COMMAND( + TARGET install + PRE_BUILD + COMMAND ${CMAKE_COMMAND} + ARGS -E copy_if_different + ${ParadisEO-PEO_SOURCE_DIR}/test/schema.xml + ${ParadisEO-PEO_BINARY_DIR}/test) +###################################################################################### + + +###################################################################################### +### 2) Specify where CMake can find the libraries +###################################################################################### + +IF(NOT WIN32 OR CYGWIN) + LINK_DIRECTORIES(${EO_BIN_DIR}/lib ${ParadisEO-PEO_BINARY_DIR}/lib ) +ENDIF(NOT WIN32 OR CYGWIN) + +# especially for Visual Studio +IF(WIN32 AND NOT CYGWIN) + LINK_DIRECTORIES(${EO_BIN_DIR}\\lib\\${CMAKE_BUILD_TYPE} + ${ParadisEO-PEO_BINARY_DIR}\\lib\\${CMAKE_BUILD_TYPE}) +ENDIF(WIN32 AND NOT CYGWIN) + +###################################################################################### + + + +###################################################################################### +### 3) Define your targets and link the librairies +###################################################################################### + +SET (TEST_RUN t-Mpdboot) + + +SET (TEST_LIST t-ParallelEval + t-ParallelTransform + t-MultiStart + t-PSOSelect + t-EAAsyncIsland + t-EASyncIsland + t-PSOGlobalBest + t-PSOWorstPosition + t-Mpdallexit) + +SET (TEST_STOP t-Mpdallexit) + +FOREACH (test ${TEST_LIST} ${TEST_RUN} ${TEST_STOP}) + SET ("T_${test}_SOURCES" "${test}.cpp") +ENDFOREACH (test) + + +IF(ENABLE_CMAKE_TESTING) + + # Add the tests + FOREACH (test ${TEST_LIST} ${TEST_RUN} ${TEST_STOP}) + ADD_EXECUTABLE(${test} ${T_${test}_SOURCES}) + ENDFOREACH (test) + + FOREACH (test ${TEST_RUN}) + ADD_TEST(${test} ${test}) + ENDFOREACH (test) + + FOREACH (test ${TEST_LIST}) + ADD_TEST(${test} "mpiexec" "-n" "4" "${CMAKE_CURRENT_BINARY_DIR}/${test}" "@param") + ENDFOREACH (test) + + FOREACH (test ${TEST_STOP}) + ADD_TEST(${test} ${test}) + ENDFOREACH (test) + + # Link the librairies + FOREACH (test ${TEST_LIST}) + TARGET_LINK_LIBRARIES(${test} peo ${XML2_LIBS} rmc_mpi ga es eoutils eo) + ENDFOREACH (test) + +ENDIF(ENABLE_CMAKE_TESTING) + +###################################################################################### + + +###################################################################################### +### 5) Windows advanced config - especially for Microsoft Visual Studio 8 +###################################################################################### + + IF(CMAKE_CXX_COMPILER MATCHES cl) + IF(NOT WITH_SHARED_LIBS) + IF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + SET(CMAKE_CXX_FLAGS "/nologo /W3 /Gy") + SET(CMAKE_CXX_FLAGS_DEBUG "/MTd /Z7 /Od") + SET(CMAKE_CXX_FLAGS_RELEASE "/MT /O2") + SET(CMAKE_CXX_FLAGS_MINSIZEREL "/MT /O2") + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MTd /Z7 /Od") + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:CONSOLE") + + ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + ENDIF(NOT WITH_SHARED_LIBS) + ENDIF(CMAKE_CXX_COMPILER MATCHES cl) +###################################################################################### + + + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/test/param b/branches/paradiseo-ix86-2.0/paradiseo-peo/test/param new file mode 100644 index 000000000..eb843c65f --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/test/param @@ -0,0 +1,12 @@ +## miscallenous parameters + +--debug=false + +## deployment schema + +--schema=schema.xml + +## parameters + +--inst=../examples/tsp/benchs/eil101.tsp + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/test/schema.xml b/branches/paradiseo-ix86-2.0/paradiseo-peo/test/schema.xml new file mode 100644 index 000000000..9b8bf316c --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/test/schema.xml @@ -0,0 +1,19 @@ + + + + + + + + + 1 + 2 + + + + + + + + + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/test/t-EAAsyncIsland.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/test/t-EAAsyncIsland.cpp new file mode 100644 index 000000000..1bcbefe40 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/test/t-EAAsyncIsland.cpp @@ -0,0 +1,77 @@ +//Test : Asynchronous island with EA +#include +#include +typedef eoReal Indi; + +double f (const Indi & _indi) +{ + double sum=_indi[0]+_indi[1]; + return (-sum); +} +int main (int __argc, char *__argv[]) +{ + peo :: init( __argc, __argv ); + if (getNodeRank()==1) + std::cout<<"\n\nTest : Asynchronous island with EA\n\n"; + rng.reseed (10); + RingTopology topology; + eoGenContinue < Indi > genContPara (10); + eoCombinedContinue continuatorPara (genContPara); + eoCheckPoint checkpoint(continuatorPara); + peoEvalFunc mainEval( f ); + peoPopEval eval(mainEval); + eoUniformGenerator < double >uGen (-2., 2.); + eoInitFixedLength < Indi > random (2, uGen); + eoRankingSelect selectionStrategy; + eoSelectNumber select(selectionStrategy,10); + eoSegmentCrossover crossover; + eoUniformMutation mutation(0.01); + peoTransform transform(crossover,0.8,mutation,0.3); + peoPop < Indi > pop; + pop.append (10, random); + eoPlusReplacement replace; + eoRandomSelect mig_select_one; + eoSelector > mig_select (mig_select_one,2,pop); + eoReplace > mig_replace (replace,pop); + peoSyncIslandMig > mig(2,mig_select,mig_replace,topology,pop,pop); + checkpoint.add(mig); + eoEasyEA< Indi > eaAlg( checkpoint, eval, select, transform, replace ); + peoWrapper parallelEA( eaAlg, pop); + eval.setOwner(parallelEA); + transform.setOwner(parallelEA); + mig.setOwner(parallelEA); + eoGenContinue < Indi > genContPara2 (10); + eoCombinedContinue continuatorPara2 (genContPara2); + eoCheckPoint checkpoint2(continuatorPara2); + peoEvalFunc mainEval2( f ); + peoPopEval eval2(mainEval2); + eoUniformGenerator < double >uGen2 (-2., 2.); + eoInitFixedLength < Indi > random2 (2, uGen2); + eoRankingSelect selectionStrategy2; + eoSelectNumber select2(selectionStrategy2,10); + eoSegmentCrossover crossover2; + eoUniformMutation mutation2(0.01); + peoTransform transform2(crossover2,0.8,mutation2,0.3); + peoPop < Indi > pop2; + pop2.append (10, random2); + eoPlusReplacement replace2; + eoRandomSelect mig_select_one2; + eoSelector > mig_select2 (mig_select_one2,2,pop2); + eoReplace > mig_replace2 (replace2,pop2); + peoSyncIslandMig > mig2(2,mig_select2,mig_replace2,topology,pop2,pop2); + checkpoint2.add(mig2); + eoEasyEA< Indi > eaAlg2( checkpoint2, eval2, select2, transform2, replace2 ); + peoWrapper parallelEA2( eaAlg2, pop2); + eval2.setOwner(parallelEA2); + transform2.setOwner(parallelEA2); + mig2.setOwner(parallelEA2); + peo :: run(); + peo :: finalize(); + if (getNodeRank()==1) + { + pop.sort(); + pop2.sort(); + std::cout << "Final population 1 :\n" << pop << std::endl; + std::cout << "Final population 2 :\n" << pop2 << std::endl; + } +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/test/t-EASyncIsland.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/test/t-EASyncIsland.cpp new file mode 100644 index 000000000..a7b1b8c83 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/test/t-EASyncIsland.cpp @@ -0,0 +1,81 @@ +//Test : Synchronous island with EA +#include +#include +typedef eoReal Indi; + +double f (const Indi & _indi) +{ + double sum=_indi[0]+_indi[1]; + return (-sum); +} +int main (int __argc, char *__argv[]) +{ + peo :: init( __argc, __argv ); + if (getNodeRank()==1) + std::cout<<"\n\nTest : Synchronous island with EA\n\n"; + rng.reseed (10); + RingTopology topology; + eoGenContinue < Indi > genContPara (10); + eoCombinedContinue continuatorPara (genContPara); + eoCheckPoint checkpoint(continuatorPara); + peoEvalFunc mainEval( f ); + peoPopEval eval(mainEval); + eoUniformGenerator < double >uGen (-2., 2.); + eoInitFixedLength < Indi > random (2, uGen); + eoRankingSelect selectionStrategy; + eoSelectNumber select(selectionStrategy,10); + eoSegmentCrossover crossover; + eoUniformMutation mutation(0.01); + peoTransform transform(crossover,0.8,mutation,0.3); + peoPop < Indi > pop; + pop.append (10, random); + eoPlusReplacement replace; + eoRandomSelect mig_select_one; + eoSelector > mig_select (mig_select_one,2,pop); + eoReplace > mig_replace (replace,pop); + eoPeriodicContinue< Indi > mig_cont( 2 ); + eoContinuator cont(mig_cont, pop); + peoAsyncIslandMig > mig(cont,mig_select,mig_replace,topology,pop,pop); + checkpoint.add(mig); + eoEasyEA< Indi > eaAlg( checkpoint, eval, select, transform, replace ); + peoWrapper parallelEA( eaAlg, pop); + eval.setOwner(parallelEA); + transform.setOwner(parallelEA); + mig.setOwner(parallelEA); + eoGenContinue < Indi > genContPara2 (10); + eoCombinedContinue continuatorPara2 (genContPara2); + eoCheckPoint checkpoint2(continuatorPara2); + peoEvalFunc mainEval2( f ); + peoPopEval eval2(mainEval2); + eoUniformGenerator < double >uGen2 (-2., 2.); + eoInitFixedLength < Indi > random2 (2, uGen2); + eoRankingSelect selectionStrategy2; + eoSelectNumber select2(selectionStrategy2,10); + eoSegmentCrossover crossover2; + eoUniformMutation mutation2(0.01); + peoTransform transform2(crossover2,0.8,mutation2,0.3); + peoPop < Indi > pop2; + pop2.append (10, random2); + eoPlusReplacement replace2; + eoRandomSelect mig_select_one2; + eoSelector > mig_select2 (mig_select_one2,2,pop2); + eoReplace > mig_replace2 (replace2,pop2); + eoPeriodicContinue< Indi > mig_cont2( 2 ); + eoContinuator cont2(mig_cont2, pop2); + peoAsyncIslandMig > mig2(cont2,mig_select2,mig_replace2,topology,pop2,pop2); + checkpoint2.add(mig2); + eoEasyEA< Indi > eaAlg2( checkpoint2, eval2, select2, transform2, replace2 ); + peoWrapper parallelEA2( eaAlg2, pop2); + eval2.setOwner(parallelEA2); + transform2.setOwner(parallelEA2); + mig2.setOwner(parallelEA2); + peo :: run(); + peo :: finalize(); + if (getNodeRank()==1) + { + pop.sort(); + pop2.sort(); + std::cout << "Final population 1 :\n" << pop << std::endl; + std::cout << "Final population 2 :\n" << pop2 << std::endl; + } +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/test/t-Mpdallexit.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/test/t-Mpdallexit.cpp new file mode 100644 index 000000000..6a61d2482 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/test/t-Mpdallexit.cpp @@ -0,0 +1,6 @@ +#include + +int main (int __argc, char *__argv[]) +{ + system("mpdallexit"); +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/test/t-Mpdboot.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/test/t-Mpdboot.cpp new file mode 100644 index 000000000..3ef918bc9 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/test/t-Mpdboot.cpp @@ -0,0 +1,6 @@ +#include + +int main (int __argc, char *__argv[]) +{ + system("mpdboot"); +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/test/t-MultiStart.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/test/t-MultiStart.cpp new file mode 100644 index 000000000..96183bae0 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/test/t-MultiStart.cpp @@ -0,0 +1,40 @@ +// Test : multistart + +#include + +struct Algorithm +{ + void operator()(double & _d) + { + _d = _d * _d; + } +}; + +int main (int __argc, char * * __argv) +{ + + peo :: init (__argc, __argv); + if (getNodeRank()==1) + std::cout<<"\n\nTest : multistart\n\n"; + std::vector < double > v; + if (getNodeRank()==1) + std::cout<<"\n\nBefore :"; + for(unsigned i = 0; i< 10; i++) + { + v.push_back(i); + if (getNodeRank()==1) + std::cout<<"\n"< initParallel (algo); + peoWrapper parallelAlgo (initParallel, v); + initParallel.setOwner(parallelAlgo); + peo :: run( ); + peo :: finalize( ); + if (getNodeRank()==1) + { + std::cout<<"\n\nAfter :\n"; + for(unsigned i = 0; i< 10; i++) + std::cout< +typedef eoRealParticle < double >Indi; +double f (const Indi & _indi) +{ + double sum=_indi[0]+_indi[1]; + return (sum); +} +int main (int __argc, char *__argv[]) +{ + peo :: init( __argc, __argv ); + if (getNodeRank()==1) + std::cout<<"\n\nTest : PSO Global Best\n\n"; + rng.reseed (10); + RingTopology topologyMig; + eoGenContinue < Indi > genContPara (10); + eoCombinedContinue continuatorPara (genContPara); + eoCheckPoint checkpoint(continuatorPara); + peoEvalFunc plainEval(f); + peoPopEval< Indi > eval(plainEval); + eoUniformGenerator < double >uGen (0, 1.); + eoInitFixedLength < Indi > random (2, uGen); + eoUniformGenerator < double >sGen (-1., 1.); + eoVelocityInitFixedLength < Indi > veloRandom (2, sGen); + eoFirstIsBestInit < Indi > localInit; + eoRealVectorBounds bndsFlight(2,0,1.); + eoStandardFlight < Indi > flight(bndsFlight); + peoPop < Indi > pop; + pop.append (10, random); + eoLinearTopology topology(2); + eoRealVectorBounds bnds(2,-1.,1.); + eoStandardVelocity < Indi > velocity (topology,1,0.5,2.,bnds); + eoInitializer init(eval,veloRandom,localInit,topology,pop); + eoPeriodicContinue< Indi > mig_cont( 2 ); + peoPSOSelect mig_selec(topology); + peoGlobalBestVelocity mig_replac (2.,velocity); + eoContinuator cont(mig_cont, pop); + eoSelector > mig_select (mig_selec,1,pop); + eoReplace > mig_replace (mig_replac,pop); + eoGenContinue < Indi > genContPara2 (10); + eoCombinedContinue continuatorPara2 (genContPara2); + eoCheckPoint checkpoint2(continuatorPara2); + peoEvalFunc plainEval2(f); + peoPopEval< Indi > eval2(plainEval2); + eoUniformGenerator < double >uGen2 (0, 1.); + eoInitFixedLength < Indi > random2 (2, uGen2); + eoUniformGenerator < double >sGen2 (-1., 1.); + eoVelocityInitFixedLength < Indi > veloRandom2 (2, sGen2); + eoFirstIsBestInit < Indi > localInit2; + eoRealVectorBounds bndsFlight2(2,0,1.); + eoStandardFlight < Indi > flight2(bndsFlight2); + peoPop < Indi > pop2; + pop2.append (10, random2); + eoLinearTopology topology2(2); + eoRealVectorBounds bnds2(2,-1.,1.); + eoStandardVelocity < Indi > velocity2 (topology2,1,0.5,2.,bnds2); + eoInitializer init2(eval2,veloRandom2,localInit2,topology2,pop2); + eoPeriodicContinue< Indi > mig_cont2( 2 ); + peoPSOSelect mig_selec2(topology2); + peoGlobalBestVelocity mig_replac2 (2.,velocity2); + eoContinuator cont2(mig_cont2,pop2); + eoSelector > mig_select2 (mig_selec2,1,pop2); + eoReplace > mig_replace2 (mig_replac2,pop2); + peoAsyncIslandMig< Indi, peoPop > mig(cont,mig_select, mig_replace, topologyMig, pop, pop); + checkpoint.add( mig ); + peoAsyncIslandMig< Indi, peoPop > mig2(cont2,mig_select2, mig_replace2, topologyMig, pop2, pop2); + checkpoint2.add( mig2 ); + eoSyncEasyPSO psa(init,checkpoint,eval, velocity, flight); + peoWrapper parallelPSO( psa, pop); + eval.setOwner(parallelPSO); + mig.setOwner(parallelPSO); + eoSyncEasyPSO psa2(init2,checkpoint2,eval2, velocity2, flight2); + peoWrapper parallelPSO2( psa2, pop2); + eval2.setOwner(parallelPSO2); + mig2.setOwner(parallelPSO2); + peo :: run(); + peo :: finalize(); + if (getNodeRank()==1) + { + pop.sort(); + pop2.sort(); + std::cout << "Final population :\n" << pop << std::endl; + std::cout << "Final population :\n" << pop2 << std::endl; + } +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/test/t-PSOSelect.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/test/t-PSOSelect.cpp new file mode 100644 index 000000000..f5628fd6c --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/test/t-PSOSelect.cpp @@ -0,0 +1,34 @@ +//Test : PSO select +#include +typedef eoRealParticle < double >Indi; +double f (const Indi & _indi) +{ + double sum=_indi[0]+_indi[1]; + return (-sum); +} + +int main (int __argc, char *__argv[]) +{ + std::cout<<"\n\nTest : PSO select\n\n"; + rng.reseed (10); + peoEvalFunc plainEval(f); + eoEvalFuncCounter < Indi > firstEval(plainEval); + eoPopLoopEval < Indi > eval(firstEval); + eoUniformGenerator < double >uGen (1, 2); + eoInitFixedLength < Indi > random (2, uGen); + eoUniformGenerator < double >sGen (-1, 1); + eoVelocityInitFixedLength < Indi > veloRandom (2, sGen); + eoFirstIsBestInit < Indi > localInit; + eoRealVectorBounds bndsFlight(2,1,2); + eoStandardFlight < Indi > flight(bndsFlight); + eoLinearTopology topology(6); + eoRealVectorBounds bnds(2,-1,1); + eoStandardVelocity < Indi > velocity (topology,1,0.5,2.,bnds); + eoPop < Indi > empty_pop,pop(20, random); + eoInitializer init(eval,veloRandom,localInit,topology,pop); + init(); + eval (empty_pop,pop); + peoPSOSelect mig_selec(topology); + pop.sort(); + std::cout<<"\nBest : "< +typedef eoRealParticle < double >Indi; +double f (const Indi & _indi) +{ + double sum=_indi[0]+_indi[1]; + return (sum); +} +int main (int __argc, char *__argv[]) +{ + peo :: init( __argc, __argv ); + if (getNodeRank()==1) + std::cout<<"\n\nTest : PSO Worst Position\n\n"; + rng.reseed (10); + RingTopology topologyMig; + eoGenContinue < Indi > genContPara (10); + eoCombinedContinue continuatorPara (genContPara); + eoCheckPoint checkpoint(continuatorPara); + peoEvalFunc plainEval(f); + peoPopEval< Indi > eval(plainEval); + eoUniformGenerator < double >uGen (0, 1.); + eoInitFixedLength < Indi > random (2, uGen); + eoUniformGenerator < double >sGen (-1., 1.); + eoVelocityInitFixedLength < Indi > veloRandom (2, sGen); + eoFirstIsBestInit < Indi > localInit; + eoRealVectorBounds bndsFlight(2,0,1.); + eoStandardFlight < Indi > flight(bndsFlight); + peoPop < Indi > pop; + pop.append (10, random); + eoLinearTopology topology(2); + eoRealVectorBounds bnds(2,-1.,1.); + eoStandardVelocity < Indi > velocity (topology,1,0.5,2.,bnds); + eoInitializer init(eval,veloRandom,localInit,topology,pop); + eoPeriodicContinue< Indi > mig_cont( 2 ); + peoPSOSelect mig_selec(topology); + peoWorstPositionReplacement mig_replac; + eoContinuator cont(mig_cont, pop); + eoSelector > mig_select (mig_selec,1,pop); + eoReplace > mig_replace (mig_replac,pop); + eoGenContinue < Indi > genContPara2 (10); + eoCombinedContinue continuatorPara2 (genContPara2); + eoCheckPoint checkpoint2(continuatorPara2); + peoEvalFunc plainEval2(f); + peoPopEval< Indi > eval2(plainEval2); + eoUniformGenerator < double >uGen2 (0, 1.); + eoInitFixedLength < Indi > random2 (2, uGen2); + eoUniformGenerator < double >sGen2 (-1., 1.); + eoVelocityInitFixedLength < Indi > veloRandom2 (2, sGen2); + eoFirstIsBestInit < Indi > localInit2; + eoRealVectorBounds bndsFlight2(2,0,1.); + eoStandardFlight < Indi > flight2(bndsFlight2); + peoPop < Indi > pop2; + pop2.append (10, random2); + eoLinearTopology topology2(2); + eoRealVectorBounds bnds2(2,-1.,1.); + eoStandardVelocity < Indi > velocity2 (topology2,1,0.5,2.,bnds2); + eoInitializer init2(eval2,veloRandom2,localInit2,topology2,pop2); + eoPeriodicContinue< Indi > mig_cont2( 2 ); + peoPSOSelect mig_selec2(topology2); + peoWorstPositionReplacement mig_replac2; + eoContinuator cont2(mig_cont2,pop2); + eoSelector > mig_select2 (mig_selec2,1,pop2); + eoReplace > mig_replace2 (mig_replac2,pop2); + peoAsyncIslandMig< Indi, peoPop > mig(cont,mig_select, mig_replace, topologyMig, pop, pop); + checkpoint.add( mig ); + peoAsyncIslandMig< Indi, peoPop > mig2(cont2,mig_select2, mig_replace2, topologyMig, pop2, pop2); + checkpoint2.add( mig2 ); + eoSyncEasyPSO psa(init,checkpoint,eval, velocity, flight); + peoWrapper parallelPSO( psa, pop); + eval.setOwner(parallelPSO); + mig.setOwner(parallelPSO); + eoSyncEasyPSO psa2(init2,checkpoint2,eval2, velocity2, flight2); + peoWrapper parallelPSO2( psa2, pop2); + eval2.setOwner(parallelPSO2); + mig2.setOwner(parallelPSO2); + peo :: run(); + peo :: finalize(); + if (getNodeRank()==1) + { + pop.sort(); + pop2.sort(); + std::cout << "Final population :\n" << pop << std::endl; + std::cout << "Final population :\n" << pop2 << std::endl; + } +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/test/t-ParallelEval.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/test/t-ParallelEval.cpp new file mode 100644 index 000000000..0d3054cd5 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/test/t-ParallelEval.cpp @@ -0,0 +1,42 @@ +// Test : parallel evaluation +#include +#include +typedef eoReal Indi; +double f (const Indi & _indi) +{ + double sum=_indi[0]+_indi[1]; + return (-sum); +} +struct Algorithm +{ + Algorithm( peoPopEval < Indi > & _eval): eval( _eval ){} + void operator()(eoPop < Indi > & _pop) + { + eoPop < Indi > empty_pop; + eval(empty_pop, _pop); + } + peoPopEval < Indi > & eval; +}; + +int main (int __argc, char *__argv[]) +{ + peo :: init( __argc, __argv ); + if (getNodeRank()==1) + std::cout<<"\n\nTest : parallel evaluation\n\n"; + rng.reseed (10); + peoEvalFunc plainEval(f); + peoPopEval< Indi > eval(plainEval); + eoUniformGenerator < double >uGen (0, 1); + eoInitFixedLength < Indi > random (2, uGen); + eoPop < Indi > pop(20, random); + Algorithm algo ( eval ); + peoWrapper parallelAlgo( algo, pop); + eval.setOwner(parallelAlgo); + peo :: run(); + peo :: finalize(); + if (getNodeRank()==1) + { + pop.sort(); + std::cout< +#include +typedef eoReal Indi; +double f (const Indi & _indi) +{ + double sum=_indi[0]+_indi[1]; + return (-sum); +} +struct Algorithm +{ + Algorithm( eoEvalFunc < Indi > & _eval, eoSelect < Indi > & _select, peoTransform < Indi > & _transform): + loopEval(_eval), + eval(loopEval), + selectTransform( _select, _transform), + breed(selectTransform) {} + + void operator()(eoPop < Indi > & _pop) + { + eoPop < Indi > offspring, empty_pop; + eval(empty_pop, _pop); + eval(empty_pop, offspring); + std::cout<<"\n\nBefore :\n"< loopEval; + eoPopEvalFunc < Indi > & eval; + eoSelectTransform < Indi > selectTransform; + eoBreed < Indi > & breed; +}; + +int main (int __argc, char *__argv[]) +{ + peo :: init( __argc, __argv ); + if (getNodeRank()==1) + std::cout<<"\n\nTest : parallel transform\n\n"; + rng.reseed (10); + eoEvalFuncPtr < Indi > plainEval(f); + eoEvalFuncCounter < Indi > eval(plainEval); + eoUniformGenerator < double >uGen (0, 1); + eoInitFixedLength < Indi > random (2, uGen); + eoPop < Indi > empty_pop,pop(6, random); + eoRankingSelect < Indi > selectionStrategy; + eoSelectNumber < Indi > select(selectionStrategy,6); + eoSegmentCrossover < Indi > crossover; + eoUniformMutation < Indi > mutation(0.01); + peoTransform transform(crossover,0.8,mutation,0.3); + Algorithm algo ( eval, select, transform ); + peoWrapper parallelAlgo( algo, pop); + transform.setOwner(parallelAlgo); + peo :: run(); + peo :: finalize(); +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/CMakeLists.txt b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/CMakeLists.txt new file mode 100644 index 000000000..bdd06bb87 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/CMakeLists.txt @@ -0,0 +1,19 @@ +# +##################################################################################### +### 1) Definitions (required for tsp target) +###################################################################################### + +SET(TSP_SRC_DIR ${ParadisEO-PEO_SOURCE_DIR}/tutorial/examples/tsp) +SET(TSP_BINARY_DIR ${ParadisEO-PEO_BINARY_DIR}/tutorial/examples/tsp) +SET(FLOWSHOP_SRC_DIR "${MOEO_SRC_DIR}/tutorial/examples/flowshop" CACHE PATH "Flowshop source directory" FORCE) +SET(FLOWSHOP_BIN_DIR "${MOEO_BIN_DIR}/tutorial/examples/flowshop" CACHE PATH "Flowshop binary directory" FORCE) + +###################################################################################### + +###################################################################################### +### 2) Where must cmake go now ? +###################################################################################### + +SUBDIRS(examples Lesson1 Lesson2 Lesson3 Lesson4 Lesson5 Lesson6) + +###################################################################################### diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson1/CMakeLists.txt b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson1/CMakeLists.txt new file mode 100644 index 000000000..9827cfc22 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson1/CMakeLists.txt @@ -0,0 +1,103 @@ + +###################################################################################### +### 0) Set the compiler and define targets to easily run the lessons +###################################################################################### + +SET (CMAKE_CXX_COMPILER mpicxx) + +ADD_CUSTOM_TARGET(install DEPENDS ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson1/param ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson1/schema.xml) + +ADD_CUSTOM_COMMAND( + TARGET install + POST_BUILD + COMMAND ${CMAKE_COMMAND} + ARGS -E copy_if_different + ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson1/param + ${ParadisEO-PEO_BINARY_DIR}/tutorial/Lesson1) +ADD_CUSTOM_COMMAND( + TARGET install + POST_BUILD + COMMAND ${CMAKE_COMMAND} + ARGS -E copy_if_different + ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson1/schema.xml + ${ParadisEO-PEO_BINARY_DIR}/tutorial/Lesson1) + +###################################################################################### + + +###################################################################################### +### 1) Include the sources +###################################################################################### + +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src ${MOEO_SRC_DIR}/src ${MO_SRC_DIR}/src ${ParadisEO-PEO_SOURCE_DIR}/src) + +###################################################################################### + + +###################################################################################### +### 2) Specify where CMake can find the libraries +###################################################################################### + +IF(NOT WIN32 OR CYGWIN) + LINK_DIRECTORIES(${EO_BIN_DIR}/lib ${ParadisEO-PEO_BINARY_DIR}/lib) +ENDIF(NOT WIN32 OR CYGWIN) + +# especially for Visual Studio +IF(WIN32 AND NOT CYGWIN) + LINK_DIRECTORIES(${EO_BIN_DIR}\\lib\\${CMAKE_BUILD_TYPE} ${ParadisEO-PEO_BINARY_DIR}\\lib\\${CMAKE_BUILD_TYPE}) +ENDIF(WIN32 AND NOT CYGWIN) +###################################################################################### + + +###################################################################################### +### 3) Define your target(s): just an executable here +###################################################################################### + +ADD_EXECUTABLE(pso mainPSO.cpp) +ADD_DEPENDENCIES(pso peo rmc_mpi) +ADD_EXECUTABLE(ea mainEA.cpp) +ADD_DEPENDENCIES(ea peo rmc_mpi) +###################################################################################### + + +###################################################################################### +### 4) Optionnal: define properties +###################################################################################### + +SET(LESSON1_VERSION ${GLOBAL_VERSION}) +SET_TARGET_PROPERTIES(pso PROPERTIES VERSION "${LESSON1_VERSION}") +SET_TARGET_PROPERTIES(ea PROPERTIES VERSION "${LESSON1_VERSION}") +###################################################################################### + + +###################################################################################### +### 5) Link the librairies +###################################################################################### + +TARGET_LINK_LIBRARIES(pso ${XML2_LIBS} peo rmc_mpi eo eoutils) +TARGET_LINK_LIBRARIES(ea ${XML2_LIBS} peo rmc_mpi eo eoutils) + +###################################################################################### + + +###################################################################################### +### 6) Windows advanced config - especially for Microsoft Visual Studio 8 +###################################################################################### + + IF(CMAKE_CXX_COMPILER MATCHES cl) + IF(NOT WITH_SHARED_LIBS) + IF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + SET(CMAKE_CXX_FLAGS "/nologo /W3 /Gy") + SET(CMAKE_CXX_FLAGS_DEBUG "/MTd /Z7 /Od") + SET(CMAKE_CXX_FLAGS_RELEASE "/MT /O2") + SET(CMAKE_CXX_FLAGS_MINSIZEREL "/MT /O2") + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MTd /Z7 /Od") + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:CONSOLE") + + ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + ENDIF(NOT WITH_SHARED_LIBS) + ENDIF(CMAKE_CXX_COMPILER MATCHES cl) +###################################################################################### + + + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson1/mainEA.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson1/mainEA.cpp new file mode 100644 index 000000000..a6d5bf74f --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson1/mainEA.cpp @@ -0,0 +1,120 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, INRIA, 2007 +* +* Clive Canape +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include +#include + +typedef eoReal Indi; + +//Evaluation function + +double f (const Indi & _indi) +{ + // Rosenbrock function f(x) = 100*(x[1]-x[0]^2)^2+(1-x[0])^2 + // => optimal : f* = 0 , with x* =(1,1) + + double sum; + sum=_indi[1]-pow(_indi[0],2); + sum=100*pow(sum,2); + sum+=pow((1-_indi[0]),2); + return (-sum); +} + +int main (int __argc, char *__argv[]) +{ + + +// Initialization of the parallel environment : thanks this instruction, ParadisEO-PEO can initialize himself + peo :: init( __argc, __argv ); + +//Parameters + + const unsigned int VEC_SIZE = 2; // Don't change this parameter when you are resolving the Rosenbrock function + const unsigned int POP_SIZE = 20; // As with a sequential algorithm, you change the size of the population + const unsigned int MAX_GEN = 300; // Define the number of maximal generation + const double INIT_POSITION_MIN = -2.0; // For initialize x + const double INIT_POSITION_MAX = 2.0; // In the case of the Rosenbrock function : -2 < x[i] < 2 + const float CROSS_RATE = 0.8; // Crossover rate + const double EPSILON = 0.01; // Range for real uniform mutation + const float MUT_RATE = 0.3; // Mutation rate + rng.reseed (time(0)); + +// Stopping + eoGenContinue < Indi > genContPara (MAX_GEN); + eoCombinedContinue continuatorPara (genContPara); + eoCheckPoint checkpoint(continuatorPara); + +// For a parallel evaluation + + peoEvalFunc plainEval(f); + peoPopEval eval(plainEval); + + +// Initialization + eoUniformGenerator < double >uGen (INIT_POSITION_MIN, INIT_POSITION_MAX); + eoInitFixedLength < Indi > random (VEC_SIZE, uGen); + +// Selection + eoRankingSelect selectionStrategy; + eoSelectNumber select(selectionStrategy,POP_SIZE); + +// Transformation + eoSegmentCrossover crossover; // Crossover + eoUniformMutation mutation(EPSILON); // Mutation + eoSGATransform transform(crossover,CROSS_RATE,mutation,MUT_RATE); + +// Replacement + eoPlusReplacement replace; + +// Creation of the population + eoPop < Indi > pop; + pop.append (POP_SIZE, random); + +// Algorithm + eoEasyEA< Indi > eaAlg( checkpoint, eval, select, transform, replace ); + +//Parallel algorithm + peoWrapper parallelEA( eaAlg, pop); + eval.setOwner(parallelEA); + + peo :: run(); + peo :: finalize(); + if (getNodeRank()==1) + { + pop.sort(); + std::cout << "Final population :\n" << pop << std::endl; + } +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson1/mainPSO.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson1/mainPSO.cpp new file mode 100644 index 000000000..5b8c9771d --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson1/mainPSO.cpp @@ -0,0 +1,130 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, INRIA, 2007 +* +* Clive Canape +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include + +typedef eoRealParticle < double >Indi; + +//Evaluation function + +double f (const Indi & _indi) +{ + // Rosenbrock function f(x) = 100*(x[1]-x[0]^2)^2+(1-x[0])^2 + // => optimal : f* = 0 , with x* =(1,1) + + double sum; + sum=_indi[1]-pow(_indi[0],2); + sum=100*pow(sum,2); + sum+=pow((1-_indi[0]),2); + return (-sum); +} + +int main (int __argc, char *__argv[]) +{ + + +// Initialization of the parallel environment : thanks this instruction, ParadisEO-PEO can initialize himself + peo :: init( __argc, __argv ); + +//Parameters + + const unsigned int VEC_SIZE = 2; // Don't change this parameter when you are resolving the Rosenbrock function + + const unsigned int POP_SIZE = 20; // As with a sequential algorithm, you change the size of the population + + const unsigned int NEIGHBORHOOD_SIZE= 6; // This parameter define the neighborhoods in the PSO's topology + + const unsigned int MAX_GEN = 150; // Define the number of maximal generation + + const double INIT_POSITION_MIN = -2.0; // For initialize x + const double INIT_POSITION_MAX = 2.0; // In the case of the Rosenbrock function : -2 < x[i] < 2 + const double INIT_VELOCITY_MIN = -1.; + const double INIT_VELOCITY_MAX = 1.; + const double weight = 1; + const double C1 = 0.5; + const double C2 = 2.; + rng.reseed (time(0)); + +// Stopping + eoGenContinue < Indi > genContPara (MAX_GEN); + eoCombinedContinue continuatorPara (genContPara); + eoCheckPoint checkpoint(continuatorPara); + + +// For a parallel evaluation + peoEvalFunc plainEval(f); + peoPopEval< Indi > eval(plainEval); + +// Initialization + eoUniformGenerator < double >uGen (INIT_POSITION_MIN, INIT_POSITION_MAX); + eoInitFixedLength < Indi > random (VEC_SIZE, uGen); + +// Velocity + eoUniformGenerator < double >sGen (INIT_VELOCITY_MIN, INIT_VELOCITY_MAX); + eoVelocityInitFixedLength < Indi > veloRandom (VEC_SIZE, sGen); + +// Initializing the best + eoFirstIsBestInit < Indi > localInit; + +// Flight + eoRealVectorBounds bndsFlight(VEC_SIZE,INIT_POSITION_MIN,INIT_POSITION_MAX); + eoStandardFlight < Indi > flight(bndsFlight); + +// Creation of the population + eoPop < Indi > pop; + pop.append (POP_SIZE, random); + +// Topology (ie Lesson 6 of ParadisEO-PEO) + eoLinearTopology topology(NEIGHBORHOOD_SIZE); + eoRealVectorBounds bnds(VEC_SIZE,INIT_VELOCITY_MIN,INIT_VELOCITY_MAX); + eoStandardVelocity < Indi > velocity (topology,weight,C1,C2,bnds); + +// Initialization + eoInitializer init(eval,veloRandom,localInit,topology,pop); + +//Parallel algorithm + eoSyncEasyPSO psa(init,checkpoint,eval, velocity, flight); + peoWrapper parallelPSO( psa, pop); + eval.setOwner(parallelPSO); + + peo :: run(); + peo :: finalize(); + if (getNodeRank()==1) + { + pop.sort(); + std::cout << "Final population :\n" << pop << std::endl; + } +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson1/paradiseo-peo-lsn.doxyfile b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson1/paradiseo-peo-lsn.doxyfile new file mode 100644 index 000000000..dcbaf631a --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson1/paradiseo-peo-lsn.doxyfile @@ -0,0 +1,242 @@ +# Doxyfile 1.4.7 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +PROJECT_NAME = "ParadisEO-PEO Lesson1" +PROJECT_NUMBER = 0.1 +OUTPUT_DIRECTORY = ../../../doc/html/lesson1 +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +USE_WINDOWS_ENCODING = NO +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = NO +STRIP_FROM_PATH = +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = YES +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = NO +INHERIT_DOCS = YES +SEPARATE_MEMBER_PAGES = NO +TAB_SIZE = 8 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = NO +OPTIMIZE_OUTPUT_JAVA = NO +BUILTIN_STL_SUPPORT = NO +DISTRIBUTE_GROUP_DOC = NO +SUBGROUPING = YES +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = NO +EXTRACT_PRIVATE = YES +EXTRACT_STATIC = YES +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = NO +HIDE_UNDOC_MEMBERS = YES +HIDE_UNDOC_CLASSES = YES +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = YES +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = NO +SORT_BRIEF_DOCS = NO +SORT_BY_SCOPE_NAME = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_DIRECTORIES = NO +FILE_VERSION_FILTER = +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = YES +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = . +FILE_PATTERNS = *.cpp \ + *.h \ + NEWS \ + README +RECURSIVE = YES +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = * +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = ../../docs/images +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = YES +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = YES +REFERENCES_RELATION = YES +REFERENCES_LINK_SOURCE = YES +USE_HTAGS = NO +VERBATIM_HEADERS = YES +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = YES +COLS_IN_ALPHA_INDEX = 3 +IGNORE_PREFIX = peo +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +BINARY_TOC = NO +TOC_EXPAND = NO +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = YES +TREEVIEW_WIDTH = 250 +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = YES +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = YES +USE_PDFLATEX = YES +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = YES +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = ../../../paradiseo-mo/docs/eo.doxytag=../../../../../paradiseo-mo/docs/html \ + ../../../paradiseo-mo/docs/mo.doxytag=../../../../../paradiseo-mo/docs/html \ + ../../docs/paradiseo-peo.doxytag=../../ \ + ../shared/paradiseo-peo-lsn-shared.doxytag=../../lsnshared/html +GENERATE_TAGFILE = ../../docs/paradiseo-peo-lsn.doxytag +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = YES +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = NO +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = NO +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = NO +CALLER_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = png +DOT_PATH = +DOTFILE_DIRS = +MAX_DOT_GRAPH_WIDTH = 1024 +MAX_DOT_GRAPH_HEIGHT = 1024 +MAX_DOT_GRAPH_DEPTH = 0 +DOT_TRANSPARENT = NO +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = YES + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson1/param b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson1/param new file mode 100644 index 000000000..730f547e1 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson1/param @@ -0,0 +1,9 @@ +## miscallenous parameters + +--debug=false + +## deployment schema + +--schema=schema.xml + + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson1/schema.xml b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson1/schema.xml new file mode 100644 index 000000000..f34107574 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson1/schema.xml @@ -0,0 +1,19 @@ + + + + + + + + + 1 + + + + + + + + + + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson2/CMakeLists.txt b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson2/CMakeLists.txt new file mode 100644 index 000000000..b5bd31249 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson2/CMakeLists.txt @@ -0,0 +1,99 @@ + +###################################################################################### +### 0) Set the compiler and define targets to easily run the lessons +###################################################################################### + +SET (CMAKE_CXX_COMPILER mpicxx) + +ADD_CUSTOM_TARGET(install DEPENDS ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson2/param ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson2/schema.xml) + +ADD_CUSTOM_COMMAND( + TARGET install + POST_BUILD + COMMAND ${CMAKE_COMMAND} + ARGS -E copy_if_different + ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson2/param + ${ParadisEO-PEO_BINARY_DIR}/tutorial/Lesson2) +ADD_CUSTOM_COMMAND( + TARGET install + POST_BUILD + COMMAND ${CMAKE_COMMAND} + ARGS -E copy_if_different + ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson2/schema.xml + ${ParadisEO-PEO_BINARY_DIR}/tutorial/Lesson2) + +###################################################################################### + + +###################################################################################### +### 1) Include the sources +###################################################################################### + +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src ${MOEO_SRC_DIR}/src ${MO_SRC_DIR}/src ${ParadisEO-PEO_SOURCE_DIR}/src) + +###################################################################################### + + +###################################################################################### +### 2) Specify where CMake can find the libraries +###################################################################################### + +IF(NOT WIN32 OR CYGWIN) + LINK_DIRECTORIES(${EO_BIN_DIR}/lib ${ParadisEO-PEO_BINARY_DIR}/lib) +ENDIF(NOT WIN32 OR CYGWIN) + +# especially for Visual Studio +IF(WIN32 AND NOT CYGWIN) + LINK_DIRECTORIES(${EO_BIN_DIR}\\lib\\${CMAKE_BUILD_TYPE} ${ParadisEO-PEO_BINARY_DIR}\\lib\\${CMAKE_BUILD_TYPE}) +ENDIF(WIN32 AND NOT CYGWIN) +###################################################################################### + + +###################################################################################### +### 3) Define your target(s): just an executable here +###################################################################################### + +ADD_EXECUTABLE(ea mainEA.cpp) +ADD_DEPENDENCIES(ea peo rmc_mpi) +###################################################################################### + + +###################################################################################### +### 4) Optionnal: define properties +###################################################################################### + +SET(LESSON2_VERSION ${GLOBAL_VERSION}) +SET_TARGET_PROPERTIES(ea PROPERTIES VERSION "${LESSON2_VERSION}") +###################################################################################### + + +###################################################################################### +### 5) Link the librairies +###################################################################################### + +TARGET_LINK_LIBRARIES(ea ${XML2_LIBS} peo rmc_mpi eo eoutils) + +###################################################################################### + + +###################################################################################### +### 6) Windows advanced config - especially for Microsoft Visual Studio 8 +###################################################################################### + + IF(CMAKE_CXX_COMPILER MATCHES cl) + IF(NOT WITH_SHARED_LIBS) + IF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + SET(CMAKE_CXX_FLAGS "/nologo /W3 /Gy") + SET(CMAKE_CXX_FLAGS_DEBUG "/MTd /Z7 /Od") + SET(CMAKE_CXX_FLAGS_RELEASE "/MT /O2") + SET(CMAKE_CXX_FLAGS_MINSIZEREL "/MT /O2") + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MTd /Z7 /Od") + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:CONSOLE") + + ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + ENDIF(NOT WITH_SHARED_LIBS) + ENDIF(CMAKE_CXX_COMPILER MATCHES cl) +###################################################################################### + + + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson2/mainEA.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson2/mainEA.cpp new file mode 100644 index 000000000..4ff15a1e7 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson2/mainEA.cpp @@ -0,0 +1,94 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, INRIA, 2007 +* +* Clive Canape +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include +#include + +typedef eoReal Indi; + +double f (const Indi & _indi) +{ + double sum; + sum=_indi[1]-pow(_indi[0],2); + sum=100*pow(sum,2); + sum+=pow((1-_indi[0]),2); + return (-sum); +} + +int main (int __argc, char *__argv[]) +{ + + peo :: init( __argc, __argv ); + const unsigned int VEC_SIZE = 2; + const unsigned int POP_SIZE = 20; + const unsigned int MAX_GEN = 300; + const double INIT_POSITION_MIN = -2.0; + const double INIT_POSITION_MAX = 2.0; + const float CROSS_RATE = 0.8; + const double EPSILON = 0.01; + const float MUT_RATE = 0.3; + rng.reseed (time(0)); + eoGenContinue < Indi > genContPara (MAX_GEN); + eoCombinedContinue continuatorPara (genContPara); + eoCheckPoint checkpoint(continuatorPara); + peoEvalFunc plainEval(f); + peoPopEval eval(plainEval); + eoUniformGenerator < double >uGen (INIT_POSITION_MIN, INIT_POSITION_MAX); + eoInitFixedLength < Indi > random (VEC_SIZE, uGen); + eoRankingSelect selectionStrategy; + eoSelectNumber select(selectionStrategy,POP_SIZE); + eoSegmentCrossover crossover; + eoUniformMutation mutation(EPSILON); + + peoTransform transform(crossover,CROSS_RATE,mutation,MUT_RATE); + + eoPlusReplacement replace; + eoPop < Indi > pop; + pop.append (POP_SIZE, random); + eoEasyEA< Indi > eaAlg( checkpoint, eval, select, transform, replace ); + peoWrapper parallelEA( eaAlg, pop); + eval.setOwner(parallelEA); + + transform.setOwner (parallelEA); + + peo :: run(); + peo :: finalize(); + if (getNodeRank()==1) + { + pop.sort(); + std::cout << "Final population :\n" << pop << std::endl; + } +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson2/paradiseo-peo-lsn.doxyfile b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson2/paradiseo-peo-lsn.doxyfile new file mode 100644 index 000000000..f85ae31ec --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson2/paradiseo-peo-lsn.doxyfile @@ -0,0 +1,242 @@ +# Doxyfile 1.4.7 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +PROJECT_NAME = "ParadisEO-PEO Lesson2" +PROJECT_NUMBER = 0.1 +OUTPUT_DIRECTORY = ../../../doc/html/lesson2 +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +USE_WINDOWS_ENCODING = NO +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = NO +STRIP_FROM_PATH = +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = YES +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = NO +INHERIT_DOCS = YES +SEPARATE_MEMBER_PAGES = NO +TAB_SIZE = 8 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = NO +OPTIMIZE_OUTPUT_JAVA = NO +BUILTIN_STL_SUPPORT = NO +DISTRIBUTE_GROUP_DOC = NO +SUBGROUPING = YES +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = NO +EXTRACT_PRIVATE = YES +EXTRACT_STATIC = YES +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = NO +HIDE_UNDOC_MEMBERS = YES +HIDE_UNDOC_CLASSES = YES +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = YES +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = NO +SORT_BRIEF_DOCS = NO +SORT_BY_SCOPE_NAME = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_DIRECTORIES = NO +FILE_VERSION_FILTER = +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = YES +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = . +FILE_PATTERNS = *.cpp \ + *.h \ + NEWS \ + README +RECURSIVE = YES +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = * +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = ../../docs/images +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = YES +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = YES +REFERENCES_RELATION = YES +REFERENCES_LINK_SOURCE = YES +USE_HTAGS = NO +VERBATIM_HEADERS = YES +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = YES +COLS_IN_ALPHA_INDEX = 3 +IGNORE_PREFIX = peo +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +BINARY_TOC = NO +TOC_EXPAND = NO +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = YES +TREEVIEW_WIDTH = 250 +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = YES +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = YES +USE_PDFLATEX = YES +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = YES +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = ../../../paradiseo-mo/docs/eo.doxytag=../../../../../paradiseo-mo/docs/html \ + ../../../paradiseo-mo/docs/mo.doxytag=../../../../../paradiseo-mo/docs/html \ + ../../docs/paradiseo-peo.doxytag=../../ \ + ../shared/paradiseo-peo-lsn-shared.doxytag=../../lsnshared/html +GENERATE_TAGFILE = ../../docs/paradiseo-peo-lsn.doxytag +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = YES +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = NO +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = NO +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = NO +CALLER_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = png +DOT_PATH = +DOTFILE_DIRS = +MAX_DOT_GRAPH_WIDTH = 1024 +MAX_DOT_GRAPH_HEIGHT = 1024 +MAX_DOT_GRAPH_DEPTH = 0 +DOT_TRANSPARENT = NO +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = YES + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson2/param b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson2/param new file mode 100644 index 000000000..730f547e1 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson2/param @@ -0,0 +1,9 @@ +## miscallenous parameters + +--debug=false + +## deployment schema + +--schema=schema.xml + + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson2/schema.xml b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson2/schema.xml new file mode 100644 index 000000000..f34107574 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson2/schema.xml @@ -0,0 +1,19 @@ + + + + + + + + + 1 + + + + + + + + + + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson3/CMakeLists.txt b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson3/CMakeLists.txt new file mode 100644 index 000000000..a1f006c06 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson3/CMakeLists.txt @@ -0,0 +1,103 @@ + +###################################################################################### +### 0) Set the compiler and define targets to easily run the lessons +###################################################################################### + +SET (CMAKE_CXX_COMPILER mpicxx) + +ADD_CUSTOM_TARGET(install DEPENDS ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson3/param ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson3/schema.xml) + +ADD_CUSTOM_COMMAND( + TARGET install + POST_BUILD + COMMAND ${CMAKE_COMMAND} + ARGS -E copy_if_different + ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson3/param + ${ParadisEO-PEO_BINARY_DIR}/tutorial/Lesson3) +ADD_CUSTOM_COMMAND( + TARGET install + POST_BUILD + COMMAND ${CMAKE_COMMAND} + ARGS -E copy_if_different + ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson3/schema.xml + ${ParadisEO-PEO_BINARY_DIR}/tutorial/Lesson3) + +###################################################################################### + + +###################################################################################### +### 1) Include the sources +###################################################################################### + +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src ${MOEO_SRC_DIR}/src ${MO_SRC_DIR}/src ${ParadisEO-PEO_SOURCE_DIR}/src) + +###################################################################################### + + +###################################################################################### +### 2) Specify where CMake can find the libraries +###################################################################################### + +IF(NOT WIN32 OR CYGWIN) + LINK_DIRECTORIES(${EO_BIN_DIR}/lib ${ParadisEO-PEO_BINARY_DIR}/lib) +ENDIF(NOT WIN32 OR CYGWIN) + +# especially for Visual Studio +IF(WIN32 AND NOT CYGWIN) + LINK_DIRECTORIES(${EO_BIN_DIR}\\lib\\${CMAKE_BUILD_TYPE} ${ParadisEO-PEO_BINARY_DIR}\\lib\\${CMAKE_BUILD_TYPE}) +ENDIF(WIN32 AND NOT CYGWIN) +###################################################################################### + + +###################################################################################### +### 3) Define your target(s): just an executable here +###################################################################################### + +ADD_EXECUTABLE(pso mainPSO.cpp) +ADD_DEPENDENCIES(pso peo rmc_mpi) +ADD_EXECUTABLE(ea mainEA.cpp) +ADD_DEPENDENCIES(ea peo rmc_mpi) +###################################################################################### + + +###################################################################################### +### 4) Optionnal: define properties +###################################################################################### + +SET(LESSON3_VERSION ${GLOBAL_VERSION}) +SET_TARGET_PROPERTIES(pso PROPERTIES VERSION "${LESSON3_VERSION}") +SET_TARGET_PROPERTIES(ea PROPERTIES VERSION "${LESSON3_VERSION}") +###################################################################################### + + +###################################################################################### +### 5) Link the librairies +###################################################################################### + +TARGET_LINK_LIBRARIES(pso ${XML2_LIBS} peo rmc_mpi eo eoutils) +TARGET_LINK_LIBRARIES(ea ${XML2_LIBS} peo rmc_mpi eo eoutils) + +###################################################################################### + + +###################################################################################### +### 6) Windows advanced config - especially for Microsoft Visual Studio 8 +###################################################################################### + + IF(CMAKE_CXX_COMPILER MATCHES cl) + IF(NOT WITH_SHARED_LIBS) + IF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + SET(CMAKE_CXX_FLAGS "/nologo /W3 /Gy") + SET(CMAKE_CXX_FLAGS_DEBUG "/MTd /Z7 /Od") + SET(CMAKE_CXX_FLAGS_RELEASE "/MT /O2") + SET(CMAKE_CXX_FLAGS_MINSIZEREL "/MT /O2") + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MTd /Z7 /Od") + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:CONSOLE") + + ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + ENDIF(NOT WITH_SHARED_LIBS) + ENDIF(CMAKE_CXX_COMPILER MATCHES cl) +###################################################################################### + + + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson3/mainEA.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson3/mainEA.cpp new file mode 100644 index 000000000..d05964201 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson3/mainEA.cpp @@ -0,0 +1,143 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, INRIA, 2007 +* +* Clive Canape +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/syncor developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include +#include + +typedef eoReal Indi; + +double f (const Indi & _indi) +{ + double sum; + sum=_indi[1]-pow(_indi[0],2); + sum=100*pow(sum,2); + sum+=pow((1-_indi[0]),2); + return (-sum); +} + +int main (int __argc, char *__argv[]) +{ + + peo :: init( __argc, __argv ); + const unsigned int VEC_SIZE = 2; + const unsigned int POP_SIZE = 20; + const unsigned int MAX_GEN = 300; + const double INIT_POSITION_MIN = -2.0; + const double INIT_POSITION_MAX = 2.0; + const float CROSS_RATE = 0.8; + const double EPSILON = 0.01; + const float MUT_RATE = 0.3; +// MIG_FREQ define the frequency of the migration. + const unsigned int MIG_FREQ = 10; +// MIG_SIZE define the size of each migration. + const unsigned int MIG_SIZE = 5; + rng.reseed (time(0)); + +// Define the topology of your island model + RingTopology topology; + +// First algorithm + /*****************************************************************************************/ + + eoGenContinue < Indi > genContPara (MAX_GEN); + eoCombinedContinue continuatorPara (genContPara); + eoCheckPoint checkpoint(continuatorPara); + peoEvalFunc mainEval( f ); + peoPopEval eval(mainEval); + eoUniformGenerator < double >uGen (INIT_POSITION_MIN, INIT_POSITION_MAX); + eoInitFixedLength < Indi > random (VEC_SIZE, uGen); + eoRankingSelect selectionStrategy; + eoSelectNumber select(selectionStrategy,POP_SIZE); + eoSegmentCrossover crossover; + eoUniformMutation mutation(EPSILON); + peoTransform transform(crossover,CROSS_RATE,mutation,MUT_RATE); + peoPop < Indi > pop; + pop.append (POP_SIZE, random); + eoPlusReplacement replace; + eoRandomSelect mig_select_one; + eoSelector > mig_select (mig_select_one,MIG_SIZE,pop); + eoReplace > mig_replace (replace,pop); + peoSyncIslandMig > mig(MIG_FREQ,mig_select,mig_replace,topology,pop,pop); + checkpoint.add(mig); + eoEasyEA< Indi > eaAlg( checkpoint, eval, select, transform, replace ); + peoWrapper parallelEA( eaAlg, pop); + eval.setOwner(parallelEA); + transform.setOwner(parallelEA); + mig.setOwner(parallelEA); + + /*****************************************************************************************/ + +// Second algorithm (on the same model but with others names) + /*****************************************************************************************/ + + eoGenContinue < Indi > genContPara2 (MAX_GEN); + eoCombinedContinue continuatorPara2 (genContPara2); + eoCheckPoint checkpoint2(continuatorPara2); + peoEvalFunc mainEval2( f ); + peoPopEval eval2(mainEval2); + eoUniformGenerator < double >uGen2 (INIT_POSITION_MIN, INIT_POSITION_MAX); + eoInitFixedLength < Indi > random2 (VEC_SIZE, uGen2); + eoRankingSelect selectionStrategy2; + eoSelectNumber select2(selectionStrategy2,POP_SIZE); + eoSegmentCrossover crossover2; + eoUniformMutation mutation2(EPSILON); + peoTransform transform2(crossover2,CROSS_RATE,mutation2,MUT_RATE); + peoPop < Indi > pop2; + pop2.append (POP_SIZE, random2); + eoPlusReplacement replace2; + eoRandomSelect mig_select_one2; + eoSelector > mig_select2 (mig_select_one2,MIG_SIZE,pop2); + eoReplace > mig_replace2 (replace2,pop2); + peoSyncIslandMig > mig2(MIG_FREQ,mig_select2,mig_replace2,topology,pop2,pop2); + checkpoint2.add(mig2); + eoEasyEA< Indi > eaAlg2( checkpoint2, eval2, select2, transform2, replace2 ); + peoWrapper parallelEA2( eaAlg2, pop2); + eval2.setOwner(parallelEA2); + transform2.setOwner(parallelEA2); + mig2.setOwner(parallelEA2); + + /*****************************************************************************************/ + + peo :: run(); + peo :: finalize(); + if (getNodeRank()==1) + { + pop.sort(); + pop2.sort(); + std::cout << "Final population 1 :\n" << pop << std::endl; + std::cout << "Final population 2 :\n" << pop2 << std::endl; + } +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson3/mainPSO.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson3/mainPSO.cpp new file mode 100644 index 000000000..2e7b3a386 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson3/mainPSO.cpp @@ -0,0 +1,165 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, INRIA, 2007 +* +* Clive Canape +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include + +typedef eoRealParticle < double >Indi; + +double f (const Indi & _indi) +{ + double sum; + sum=_indi[1]-pow(_indi[0],2); + sum=100*pow(sum,2); + sum+=pow((1-_indi[0]),2); + return (-sum); +} + +int main (int __argc, char *__argv[]) +{ + peo :: init( __argc, __argv ); + const unsigned int VEC_SIZE = 2; + const unsigned int POP_SIZE = 20; + const unsigned int NEIGHBORHOOD_SIZE= 6; + const unsigned int MAX_GEN = 100; + const double INIT_POSITION_MIN = -2.0; + const double INIT_POSITION_MAX = 2.0; + const double INIT_VELOCITY_MIN = -1.; + const double INIT_VELOCITY_MAX = 1.; + const unsigned int MIG_FREQ = 10; + const double omega = 1; + const double C1 = 0.5; + const double C2 = 2.; + rng.reseed (time(0)); + +// Island model + + RingTopology topologyMig; + +// First + eoGenContinue < Indi > genContPara (MAX_GEN); + eoCombinedContinue continuatorPara (genContPara); + eoCheckPoint checkpoint(continuatorPara); + peoEvalFunc plainEval(f); + peoPopEval< Indi > eval(plainEval); + eoUniformGenerator < double >uGen (INIT_POSITION_MIN, INIT_POSITION_MAX); + eoInitFixedLength < Indi > random (VEC_SIZE, uGen); + eoUniformGenerator < double >sGen (INIT_VELOCITY_MIN, INIT_VELOCITY_MAX); + eoVelocityInitFixedLength < Indi > veloRandom (VEC_SIZE, sGen); + eoFirstIsBestInit < Indi > localInit; + eoRealVectorBounds bndsFlight(VEC_SIZE,INIT_POSITION_MIN,INIT_POSITION_MAX); + eoStandardFlight < Indi > flight(bndsFlight); + peoPop < Indi > pop; + pop.append (POP_SIZE, random); + eoLinearTopology topology(NEIGHBORHOOD_SIZE); + eoRealVectorBounds bnds(VEC_SIZE,INIT_VELOCITY_MIN,INIT_VELOCITY_MAX); + eoStandardVelocity < Indi > velocity (topology,omega,C1,C2,bnds); + eoInitializer init(eval,veloRandom,localInit,topology,pop); + +// Island model + + eoPeriodicContinue< Indi > mig_cont( MIG_FREQ ); + peoPSOSelect mig_selec(topology); + peoWorstPositionReplacement mig_replac; + +// Specific implementation (peoData.h) + + eoContinuator cont(mig_cont, pop); + eoSelector > mig_select (mig_selec,1,pop); + eoReplace > mig_replace (mig_replac,pop); + + +// Second + + eoGenContinue < Indi > genContPara2 (MAX_GEN); + eoCombinedContinue continuatorPara2 (genContPara2); + eoCheckPoint checkpoint2(continuatorPara2); + peoEvalFunc plainEval2(f); + peoPopEval< Indi > eval2(plainEval2); + eoUniformGenerator < double >uGen2 (INIT_POSITION_MIN, INIT_POSITION_MAX); + eoInitFixedLength < Indi > random2 (VEC_SIZE, uGen2); + eoUniformGenerator < double >sGen2 (INIT_VELOCITY_MIN, INIT_VELOCITY_MAX); + eoVelocityInitFixedLength < Indi > veloRandom2 (VEC_SIZE, sGen2); + eoFirstIsBestInit < Indi > localInit2; + eoRealVectorBounds bndsFlight2(VEC_SIZE,INIT_POSITION_MIN,INIT_POSITION_MAX); + eoStandardFlight < Indi > flight2(bndsFlight2); + peoPop < Indi > pop2; + pop2.append (POP_SIZE, random2); + eoLinearTopology topology2(NEIGHBORHOOD_SIZE); + eoRealVectorBounds bnds2(VEC_SIZE,INIT_VELOCITY_MIN,INIT_VELOCITY_MAX); + eoStandardVelocity < Indi > velocity2 (topology2,omega,C1,C2,bnds2); + eoInitializer init2(eval2,veloRandom2,localInit2,topology2,pop2); + +// Island model + + eoPeriodicContinue< Indi > mig_cont2( MIG_FREQ ); + peoPSOSelect mig_selec2(topology2); + peoWorstPositionReplacement mig_replac2; + +// Specific implementation (peoData.h) + + eoContinuator cont2(mig_cont2,pop2); + eoSelector > mig_select2 (mig_selec2,1,pop2); + eoReplace > mig_replace2 (mig_replac2,pop2); + + +// Island model + + peoAsyncIslandMig< Indi, peoPop > mig(cont,mig_select, mig_replace, topologyMig, pop, pop); + checkpoint.add( mig ); + peoAsyncIslandMig< Indi, peoPop > mig2(cont2,mig_select2, mig_replace2, topologyMig, pop2, pop2); + checkpoint2.add( mig2 ); + + +// Parallel algorithm + + eoSyncEasyPSO psa(init,checkpoint,eval, velocity, flight); + peoWrapper parallelPSO( psa, pop); + eval.setOwner(parallelPSO); + mig.setOwner(parallelPSO); + eoSyncEasyPSO psa2(init2,checkpoint2,eval2, velocity2, flight2); + peoWrapper parallelPSO2( psa2, pop2); + eval2.setOwner(parallelPSO2); + mig2.setOwner(parallelPSO2); + peo :: run(); + peo :: finalize(); + if (getNodeRank()==1) + { + pop.sort(); + pop2.sort(); + std::cout << "Final population :\n" << pop << std::endl; + std::cout << "Final population :\n" << pop2 << std::endl; + } +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson3/paradiseo-peo-lsn.doxyfile b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson3/paradiseo-peo-lsn.doxyfile new file mode 100644 index 000000000..646a2fb7d --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson3/paradiseo-peo-lsn.doxyfile @@ -0,0 +1,242 @@ +# Doxyfile 1.4.7 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +PROJECT_NAME = "ParadisEO-PEO Lesson3" +PROJECT_NUMBER = 0.1 +OUTPUT_DIRECTORY = ../../../doc/html/lesson3 +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +USE_WINDOWS_ENCODING = NO +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = NO +STRIP_FROM_PATH = +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = YES +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = NO +INHERIT_DOCS = YES +SEPARATE_MEMBER_PAGES = NO +TAB_SIZE = 8 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = NO +OPTIMIZE_OUTPUT_JAVA = NO +BUILTIN_STL_SUPPORT = NO +DISTRIBUTE_GROUP_DOC = NO +SUBGROUPING = YES +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = NO +EXTRACT_PRIVATE = YES +EXTRACT_STATIC = YES +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = NO +HIDE_UNDOC_MEMBERS = YES +HIDE_UNDOC_CLASSES = YES +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = YES +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = NO +SORT_BRIEF_DOCS = NO +SORT_BY_SCOPE_NAME = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_DIRECTORIES = NO +FILE_VERSION_FILTER = +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = YES +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = . +FILE_PATTERNS = *.cpp \ + *.h \ + NEWS \ + README +RECURSIVE = YES +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = * +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = ../../docs/images +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = YES +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = YES +REFERENCES_RELATION = YES +REFERENCES_LINK_SOURCE = YES +USE_HTAGS = NO +VERBATIM_HEADERS = YES +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = YES +COLS_IN_ALPHA_INDEX = 3 +IGNORE_PREFIX = peo +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +BINARY_TOC = NO +TOC_EXPAND = NO +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = YES +TREEVIEW_WIDTH = 250 +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = YES +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = YES +USE_PDFLATEX = YES +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = YES +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = ../../../paradiseo-mo/docs/eo.doxytag=../../../../../paradiseo-mo/docs/html \ + ../../../paradiseo-mo/docs/mo.doxytag=../../../../../paradiseo-mo/docs/html \ + ../../docs/paradiseo-peo.doxytag=../../ \ + ../shared/paradiseo-peo-lsn-shared.doxytag=../../lsnshared/html +GENERATE_TAGFILE = ../../docs/paradiseo-peo-lsn.doxytag +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = YES +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = NO +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = NO +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = NO +CALLER_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = png +DOT_PATH = +DOTFILE_DIRS = +MAX_DOT_GRAPH_WIDTH = 1024 +MAX_DOT_GRAPH_HEIGHT = 1024 +MAX_DOT_GRAPH_DEPTH = 0 +DOT_TRANSPARENT = NO +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = YES + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson3/param b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson3/param new file mode 100644 index 000000000..730f547e1 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson3/param @@ -0,0 +1,9 @@ +## miscallenous parameters + +--debug=false + +## deployment schema + +--schema=schema.xml + + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson3/schema.xml b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson3/schema.xml new file mode 100644 index 000000000..ba6389de9 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson3/schema.xml @@ -0,0 +1,20 @@ + + + + + + + + + 1 + 2 + + + + + + + + + + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson4/CMakeLists.txt b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson4/CMakeLists.txt new file mode 100644 index 000000000..ebcbb9b29 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson4/CMakeLists.txt @@ -0,0 +1,106 @@ + +###################################################################################### +### 0) Set the compiler and define targets to easily run the lessons +###################################################################################### + +SET (CMAKE_CXX_COMPILER mpicxx) + +ADD_CUSTOM_TARGET(install DEPENDS ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson4/param ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson4/schema.xml) + +ADD_CUSTOM_COMMAND( + TARGET install + POST_BUILD + COMMAND ${CMAKE_COMMAND} + ARGS -E copy_if_different + ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson4/param + ${ParadisEO-PEO_BINARY_DIR}/tutorial/Lesson4) +ADD_CUSTOM_COMMAND( + TARGET install + POST_BUILD + COMMAND ${CMAKE_COMMAND} + ARGS -E copy_if_different + ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson4/schema.xml + ${ParadisEO-PEO_BINARY_DIR}/tutorial/Lesson4) + +###################################################################################### + + +###################################################################################### +### 1) Include the sources +###################################################################################### + +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src ${MOEO_SRC_DIR}/src ${MO_SRC_DIR}/src ${ParadisEO-PEO_SOURCE_DIR}/src ${TSP_SRC_DIR}) + +###################################################################################### + + +###################################################################################### +### 2) Specify where CMake can find the libraries +###################################################################################### + +IF(NOT WIN32 OR CYGWIN) + LINK_DIRECTORIES(${EO_BIN_DIR}/lib ${MOEO_BIN_DIR}/lib ${ParadisEO-PEO_BINARY_DIR}/lib ${TSP_BINARY_DIR}/lib) +ENDIF(NOT WIN32 OR CYGWIN) + +# especially for Visual Studio +IF(WIN32 AND NOT CYGWIN) + LINK_DIRECTORIES(${EO_BIN_DIR}\\lib\\${CMAKE_BUILD_TYPE} ${ParadisEO-PEO_BINARY_DIR}\\lib\\${CMAKE_BUILD_TYPE} ${TSP_BINARY_DIR}\\lib\\${CMAKE_BUILD_TYPE}) +ENDIF(WIN32 AND NOT CYGWIN) + +###################################################################################### + + +###################################################################################### +### 3) Define your target(s): just an executable here +###################################################################################### + +ADD_EXECUTABLE(lsea mainLSEA.cpp) +ADD_DEPENDENCIES(lsea tsp peo rmc_mpi) +ADD_EXECUTABLE(eals mainEALS.cpp) +ADD_DEPENDENCIES(eals tsp peo rmc_mpi) + +###################################################################################### + + +###################################################################################### +### 4) Optionnal: define properties +###################################################################################### + +SET(LESSON4_VERSION ${GLOBAL_VERSION}) +SET_TARGET_PROPERTIES(lsea PROPERTIES VERSION "${LESSON4_VERSION}") +SET_TARGET_PROPERTIES(eals PROPERTIES VERSION "${LESSON4_VERSION}") + +###################################################################################### + + +###################################################################################### +### 5) Link the librairies +###################################################################################### + +TARGET_LINK_LIBRARIES(lsea ${XML2_LIBS} tsp peo rmc_mpi eo eoutils) +TARGET_LINK_LIBRARIES(eals ${XML2_LIBS} tsp peo rmc_mpi eo eoutils) + +###################################################################################### + + +###################################################################################### +### 6) Windows advanced config - especially for Microsoft Visual Studio 8 +###################################################################################### + + IF(CMAKE_CXX_COMPILER MATCHES cl) + IF(NOT WITH_SHARED_LIBS) + IF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + SET(CMAKE_CXX_FLAGS "/nologo /W3 /Gy") + SET(CMAKE_CXX_FLAGS_DEBUG "/MTd /Z7 /Od") + SET(CMAKE_CXX_FLAGS_RELEASE "/MT /O2") + SET(CMAKE_CXX_FLAGS_MINSIZEREL "/MT /O2") + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MTd /Z7 /Od") + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:CONSOLE") + + ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + ENDIF(NOT WITH_SHARED_LIBS) + ENDIF(CMAKE_CXX_COMPILER MATCHES cl) +###################################################################################### + + + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson4/mainEALS.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson4/mainEALS.cpp new file mode 100644 index 000000000..ed545e979 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson4/mainEALS.cpp @@ -0,0 +1,114 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, INRIA, 2007 +* +* Clive Canape +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include "param.h" +#include "route_init.h" +#include "route_eval.h" +#include "order_xover.h" +#include "edge_xover.h" +#include "partial_mapped_xover.h" +#include "city_swap.h" +#include "part_route_eval.h" +#include "merge_route_eval.h" +#include "two_opt_init.h" +#include "two_opt_next.h" +#include "two_opt_incr_eval.h" + +#include + +#define POP_SIZE 10 +#define NUM_GEN 100 +#define CROSS_RATE 1.0 +#define MUT_RATE 0.01 + + +int main (int __argc, char * * __argv) +{ + + peo :: init (__argc, __argv); + loadParameters (__argc, __argv); + RouteInit route_init; + RouteEval full_eval; + OrderXover order_cross; + PartialMappedXover pm_cross; + EdgeXover edge_cross; + CitySwap city_swap_mut; + +// Initialization of the local search + TwoOptInit pmx_two_opt_init; + TwoOptNext pmx_two_opt_next; + TwoOptIncrEval pmx_two_opt_incr_eval; + moBestImprSelect pmx_two_opt_move_select; + moHC hc (pmx_two_opt_init, pmx_two_opt_next, pmx_two_opt_incr_eval, pmx_two_opt_move_select, full_eval); + +// EA + eoPop pop (POP_SIZE, route_init); + eoGenContinue cont (NUM_GEN); + eoCheckPoint checkpoint (cont); + eoEvalFuncCounter< Route > eval(full_eval); + eoStochTournamentSelect select_one; + eoSelectNumber select (select_one, POP_SIZE); + eoSGATransform transform (order_cross, CROSS_RATE, city_swap_mut, MUT_RATE); + eoEPReplacement replace (2); + eoEasyEA< Route > eaAlg( checkpoint, eval, select, transform, replace ); + peoWrapper parallelEA( eaAlg, pop); + peo :: run (); + peo :: finalize (); + + if (getNodeRank()==1) + { + pop.sort(); + std :: cout << "\nResult before the local search\n"; + for (unsigned i=0;i initParallelHC (hc); + peoWrapper parallelHC (initParallelHC, pop); + initParallelHC.setOwner(parallelHC); + peo :: run( ); + peo :: finalize( ); + + if (getNodeRank()==1) + { + std :: cout << "\nResult after the local search\n"; + pop.sort(); + for (unsigned i=0;i +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, INRIA, 2007 +* +* Clive Canape +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include "param.h" +#include "route_init.h" +#include "route_eval.h" +#include "order_xover.h" +#include "edge_xover.h" +#include "partial_mapped_xover.h" +#include "city_swap.h" +#include "part_route_eval.h" +#include "merge_route_eval.h" +#include "two_opt_init.h" +#include "two_opt_next.h" +#include "two_opt_incr_eval.h" + +#include + +#define POP_SIZE 10 +#define NUM_GEN 200 +#define CROSS_RATE 1.0 +#define MUT_RATE 0.1 + + +int main (int __argc, char * * __argv) +{ + + peo :: init (__argc, __argv); + loadParameters (__argc, __argv); + RouteInit route_init; + RouteEval full_eval; + OrderXover order_cross; + PartialMappedXover pm_cross; + EdgeXover edge_cross; + CitySwap city_swap_mut; + +// Local search + TwoOptInit pmx_two_opt_init; + TwoOptNext pmx_two_opt_next; + TwoOptIncrEval pmx_two_opt_incr_eval; + moBestImprSelect pmx_two_opt_move_select; + moHC hc (pmx_two_opt_init, pmx_two_opt_next, pmx_two_opt_incr_eval, pmx_two_opt_move_select, full_eval); + eoPop pop (POP_SIZE, route_init); + peoMultiStart initParallelHC (hc); + peoWrapper parallelHC (initParallelHC, pop); + initParallelHC.setOwner(parallelHC); + peo :: run( ); + peo :: finalize( ); + + if (getNodeRank()==1) + { + std :: cout << "\nResult before the EA\n"; + pop.sort(); + for (unsigned i=0;i cont (NUM_GEN); + eoCheckPoint checkpoint (cont); + eoEvalFuncCounter< Route > eval(full_eval); + eoStochTournamentSelect select_one; + eoSelectNumber select (select_one, POP_SIZE); + eoSGATransform transform (order_cross, CROSS_RATE, city_swap_mut, MUT_RATE); + eoEPReplacement replace (2); + eoEasyEA< Route > eaAlg( checkpoint, eval, select, transform, replace ); + peoWrapper parallelEA( eaAlg, pop); + peo :: run (); + peo :: finalize (); + + if (getNodeRank()==1) + { + std :: cout << "\nResult after the EA\n"; + pop.sort(); + for (unsigned i=0;i + + + + + + + + 1 + + + + + + + + + + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson5/CMakeLists.txt b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson5/CMakeLists.txt new file mode 100644 index 000000000..b89275562 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson5/CMakeLists.txt @@ -0,0 +1,102 @@ + +###################################################################################### +### 0) Pre-config +###################################################################################### + +SET (CMAKE_CXX_COMPILER mpicxx) + +ADD_CUSTOM_TARGET(install DEPENDS ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson5/param ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson5/schema.xml) + +ADD_CUSTOM_COMMAND( + TARGET install + POST_BUILD + COMMAND ${CMAKE_COMMAND} + ARGS -E copy_if_different + ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson5/param + ${ParadisEO-PEO_BINARY_DIR}/tutorial/Lesson5) +ADD_CUSTOM_COMMAND( + TARGET install + POST_BUILD + COMMAND ${CMAKE_COMMAND} + ARGS -E copy_if_different + ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson5/schema.xml + ${ParadisEO-PEO_BINARY_DIR}/tutorial/Lesson5) + +###################################################################################### + + +###################################################################################### +### 1) Include the sources +###################################################################################### + +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src ${MOEO_SRC_DIR}/src ${MO_SRC_DIR}/src ${ParadisEO-PEO_SOURCE_DIR}/src) + +###################################################################################### + + +###################################################################################### +### 2) Specify where CMake can find the libraries (mandatory: before 3) ) +###################################################################################### + +IF(NOT WIN32 OR CYGWIN) + LINK_DIRECTORIES(${EO_BIN_DIR}/lib ${ParadisEO-PEO_BINARY_DIR}/lib) +ENDIF(NOT WIN32 OR CYGWIN) + +# especially for Visual Studio +IF(WIN32 AND NOT CYGWIN) + LINK_DIRECTORIES(${EO_BIN_DIR}\\lib\\${CMAKE_BUILD_TYPE} ${ParadisEO-PEO_BINARY_DIR}\\lib\\${CMAKE_BUILD_TYPE}) +ENDIF(WIN32 AND NOT CYGWIN) + +###################################################################################### + + +###################################################################################### +### 3) Define your target(s): just an executable here +###################################################################################### + +# no matter what is the OS, hopefully +ADD_EXECUTABLE(pso main.cpp) +ADD_DEPENDENCIES(pso peo rmc_mpi) + + +###################################################################################### + + +###################################################################################### +### 4) Optionnal: define your target's properties +###################################################################################### + +SET(WALKTHROUGH_VERSION ${GLOBAL_VERSION}) +SET_TARGET_PROPERTIES(pso PROPERTIES VERSION "${WALKTHROUGH_VERSION}") + +###################################################################################### + + +###################################################################################### +### 5) Link the librairies +###################################################################################### + +TARGET_LINK_LIBRARIES(pso ${XML2_LIBS} peo rmc_mpi eo eoutils) + +###################################################################################### + + +###################################################################################### +### 6) Windows advanced config - especially for Microsoft Visual Studio 8 +###################################################################################### + + IF(CMAKE_CXX_COMPILER MATCHES cl) + IF(NOT WITH_SHARED_LIBS) + IF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + SET(CMAKE_CXX_FLAGS "/nologo /W3 /Gy") + SET(CMAKE_CXX_FLAGS_DEBUG "/MTd /Z7 /Od") + SET(CMAKE_CXX_FLAGS_RELEASE "/MT /O2") + SET(CMAKE_CXX_FLAGS_MINSIZEREL "/MT /O2") + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MTd /Z7 /Od") + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:CONSOLE") + + ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + ENDIF(NOT WITH_SHARED_LIBS) + ENDIF(CMAKE_CXX_COMPILER MATCHES cl) +###################################################################################### + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson5/main.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson5/main.cpp new file mode 100644 index 000000000..6293de3ed --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson5/main.cpp @@ -0,0 +1,127 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, INRIA, 2007 +* +* Clive Canape +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include +#include + +typedef eoRealParticle < double >Indi; + +double f (const Indi & _indi) +{ + double sum; + sum=_indi[1]-pow(_indi[0],2); + sum=100*pow(sum,2); + sum+=pow((1-_indi[0]),2); + return (-sum); +} + +template +class eoResizerInit: public eoInit + { + public: + + typedef typename EOT::AtomType AtomType; + + eoResizerInit(unsigned _size) + : size(_size) + {} + + virtual void operator()(EOT& chrom) + { + chrom.resize(size); + chrom.invalidate(); + } + private : + unsigned size; + }; + + +int main( int __argc, char** __argv ) +{ + + peo :: init( __argc, __argv ); + const unsigned int VEC_SIZE = 2; + const unsigned int POP_SIZE = 20; + const unsigned int NEIGHBORHOOD_SIZE= 6; + const unsigned int MAX_GEN = 300; + const double INIT_POSITION_MIN = -2.0; + const double INIT_POSITION_MAX = 2.0; + const double INIT_VELOCITY_MIN = -1.; + const double INIT_VELOCITY_MAX = 1.; + const double omega = 1; + const double C1 = 0.5; + const double C2 = 2.; + rng.reseed (time(0)); + eoGenContinue < Indi > genContPara (MAX_GEN); + eoCombinedContinue continuatorPara (genContPara); + eoCheckPoint checkpoint(continuatorPara); + eoUniformGenerator < double >uGen (INIT_POSITION_MIN, INIT_POSITION_MAX); + eoUniformGenerator < double >sGen (INIT_VELOCITY_MIN, INIT_VELOCITY_MAX); + eoVelocityInitFixedLength < Indi > veloRandom (VEC_SIZE, sGen); + eoFirstIsBestInit < Indi > localInit; + eoRealVectorBounds bndsFlight(VEC_SIZE,INIT_POSITION_MIN,INIT_POSITION_MAX); + eoStandardFlight < Indi > flight(bndsFlight); + eoLinearTopology topology(NEIGHBORHOOD_SIZE); + eoRealVectorBounds bnds(VEC_SIZE,INIT_VELOCITY_MIN,INIT_VELOCITY_MAX); + eoStandardVelocity < Indi > velocity (topology,omega,C1,C2,bnds); + + eoResizerInit sizeInit(VEC_SIZE); + // need at least a size initialization + eoPop < Indi > pop(POP_SIZE,sizeInit); + eoInitFixedLength < Indi > randomSeq (VEC_SIZE, uGen); + peoMultiStart initRandom (randomSeq); + peoWrapper random (initRandom,pop); + initRandom.setOwner(random); + peo :: run( ); + peo :: finalize( ); + +// Parallel algorithm + + peo :: init (__argc, __argv); + peoEvalFunc plainEval(f); + peoPopEval< Indi > eval(plainEval); + eoInitializer init(eval,veloRandom,localInit,topology,pop); + eoSyncEasyPSO psa(init,checkpoint,eval, velocity, flight); + peoWrapper parallelPSO( psa, pop); + eval.setOwner(parallelPSO); + peo :: run(); + peo :: finalize(); + if (getNodeRank()==1) + { + pop.sort(); + std::cout << "Final population :\n" << pop << std::endl; + } +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson5/paradiseo-peo-lsn.doxyfile b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson5/paradiseo-peo-lsn.doxyfile new file mode 100644 index 000000000..c0f644a90 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson5/paradiseo-peo-lsn.doxyfile @@ -0,0 +1,242 @@ +# Doxyfile 1.4.7 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +PROJECT_NAME = "ParadisEO-PEO Lesson5" +PROJECT_NUMBER = 0.1 +OUTPUT_DIRECTORY = ../../../doc/html/lesson5 +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +USE_WINDOWS_ENCODING = NO +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = NO +STRIP_FROM_PATH = +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = YES +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = NO +INHERIT_DOCS = YES +SEPARATE_MEMBER_PAGES = NO +TAB_SIZE = 8 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = NO +OPTIMIZE_OUTPUT_JAVA = NO +BUILTIN_STL_SUPPORT = NO +DISTRIBUTE_GROUP_DOC = NO +SUBGROUPING = YES +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = NO +EXTRACT_PRIVATE = YES +EXTRACT_STATIC = YES +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = NO +HIDE_UNDOC_MEMBERS = YES +HIDE_UNDOC_CLASSES = YES +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = YES +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = NO +SORT_BRIEF_DOCS = NO +SORT_BY_SCOPE_NAME = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_DIRECTORIES = NO +FILE_VERSION_FILTER = +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = YES +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = . +FILE_PATTERNS = *.cpp \ + *.h \ + NEWS \ + README +RECURSIVE = YES +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = * +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = ../../docs/images +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = YES +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = YES +REFERENCES_RELATION = YES +REFERENCES_LINK_SOURCE = YES +USE_HTAGS = NO +VERBATIM_HEADERS = YES +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = YES +COLS_IN_ALPHA_INDEX = 3 +IGNORE_PREFIX = peo +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +BINARY_TOC = NO +TOC_EXPAND = NO +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = YES +TREEVIEW_WIDTH = 250 +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = YES +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = YES +USE_PDFLATEX = YES +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = YES +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = ../../../paradiseo-mo/docs/eo.doxytag=../../../../../paradiseo-mo/docs/html \ + ../../../paradiseo-mo/docs/mo.doxytag=../../../../../paradiseo-mo/docs/html \ + ../../docs/paradiseo-peo.doxytag=../../ \ + ../shared/paradiseo-peo-lsn-shared.doxytag=../../lsnshared/html +GENERATE_TAGFILE = ../../docs/paradiseo-peo-lsn.doxytag +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = YES +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = NO +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = NO +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = NO +CALLER_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = png +DOT_PATH = +DOTFILE_DIRS = +MAX_DOT_GRAPH_WIDTH = 1024 +MAX_DOT_GRAPH_HEIGHT = 1024 +MAX_DOT_GRAPH_DEPTH = 0 +DOT_TRANSPARENT = NO +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = YES + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson5/param b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson5/param new file mode 100644 index 000000000..86a19d5fd --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson5/param @@ -0,0 +1,7 @@ +## miscallenous parameters + +--debug=false + +## deployment schema + +--schema=schema.xml diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson5/schema.xml b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson5/schema.xml new file mode 100644 index 000000000..f34107574 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson5/schema.xml @@ -0,0 +1,19 @@ + + + + + + + + + 1 + + + + + + + + + + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson6/CMakeLists.txt b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson6/CMakeLists.txt new file mode 100644 index 000000000..43a86ba78 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson6/CMakeLists.txt @@ -0,0 +1,82 @@ + +###################################################################################### +### 0) Set the compiler and define targets to easily run the lessons +###################################################################################### + +SET (CMAKE_CXX_COMPILER mpicxx) +SET(MAKE_SRC_DIR "${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson6/make" CACHE PATH "Make source directory" FORCE) + +ADD_CUSTOM_TARGET(install DEPENDS ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson6/param ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson6/FlowShopEA.param ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson6/schema.xml) + +ADD_CUSTOM_COMMAND( + TARGET install + POST_BUILD + COMMAND ${CMAKE_COMMAND} + ARGS -E copy_if_different + ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson6/FlowShopEA.param + ${ParadisEO-PEO_BINARY_DIR}/tutorial/Lesson6) +ADD_CUSTOM_COMMAND( + TARGET install + POST_BUILD + COMMAND ${CMAKE_COMMAND} + ARGS -E copy_if_different + ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson6/param + ${ParadisEO-PEO_BINARY_DIR}/tutorial/Lesson6) +ADD_CUSTOM_COMMAND( + TARGET install + POST_BUILD + COMMAND ${CMAKE_COMMAND} + ARGS -E copy_if_different + ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson6/schema.xml + ${ParadisEO-PEO_BINARY_DIR}/tutorial/Lesson6) + +###################################################################################### + + +###################################################################################### +### 1) Include the sources +###################################################################################### + +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src ${MOEO_SRC_DIR}/src ${FLOWSHOP_SRC_DIR} ${MO_SRC_DIR}/src ${ParadisEO-PEO_SOURCE_DIR}/src ${TSP_SRC_DIR} ${MAKE_SRC_DIR}) + +###################################################################################### + + +###################################################################################### +### 2) Specify where CMake can find the libraries (mandatory: before 3) ) +###################################################################################### + +IF(NOT WIN32 OR CYGWIN) + LINK_DIRECTORIES(${EO_BIN_DIR}/lib ${MOEO_BIN_DIR}/lib ${FLOWSHOP_BIN_DIR}/lib ${ParadisEO-PEO_BINARY_DIR}/lib ${TSP_BINARY_DIR}/lib) +ENDIF(NOT WIN32 OR CYGWIN) + + + +###################################################################################### + + +###################################################################################### +### 3) Define your target(s): just an executable here +###################################################################################### + +ADD_EXECUTABLE(example main.cpp) +ADD_DEPENDENCIES(example flowshop moeo peo rmc_mpi) + + +###################################################################################### + + +###################################################################################### +### 4) Optionnal: define your target(s)'s version: no effect for windows +###################################################################################### + + +###################################################################################### + +###################################################################################### +### 5) Link the librairies +###################################################################################### + +TARGET_LINK_LIBRARIES(example ${XML2_LIBS} flowshop moeo peo rmc_mpi eo eoutils) + +###################################################################################### diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson6/FlowShopEA.param b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson6/FlowShopEA.param new file mode 100644 index 000000000..ac4abc1a8 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson6/FlowShopEA.param @@ -0,0 +1,49 @@ +###### General ###### +--help=0 # -h : Prints this message +--stopOnUnknownParam=1 # Stop if unkown param entered +# --seed=1183379758 # -S : Random number seed + +###### Evolution Engine ###### +--popSize=20 # -P : Population Size +--updateArch=1 # Update the archive at each gen. +--fitness=FastNonDominatedSorting # -F : Fitness assignment scheme: Dummy, FastNonDominatedSorting or IndicatorBased +--indicator=Epsilon # -i : Binary indicator for IndicatorBased: Epsilon, Hypervolume +--rho=1.1 # -r : reference point for the hypervolume indicator +--kappa=0.05 # -k : Scaling factor kappa for IndicatorBased +--diversity=Crowding # -D : Diversity assignment scheme: Dummy, Sharing(nicheSize) or Crowding +--comparator=FitnessThenDiversity # -C : Comparator scheme: FitnessThenDiversity, DiversityThenFitness or Aggregative +--selection=DetTour(2) # -S : Selection scheme: DetTour(T), StochTour(t) or Random +--replacement=Elitist # -R : Replacement scheme: Elitist, Environmental or Generational +--nbOffspring=100% # -O : Number of offspring (percentage or absolute) + +###### Output ###### +#--resDir=Res # Directory to store DISK outputs +--eraseDir=1 # erase files in dirName if any +--printPop=0 # Print sorted pop. every gen. +--storeArch=0 # Store the archive's objective vectors at each gen. +--contribution=0 # Store the contribution of the archive at each gen. +--entropy=0 # Store the entropy of the archive at each gen. + +###### Persistence ###### +--Load= # -L : A save file to restart from +--recomputeFitness=0 # -r : Recompute the fitness after re-loading the pop.? +--saveFrequency=0 # Save every F generation (0 = only final state, absent = never) +--saveTimeInterval=0 # Save every T seconds (0 or absent = never) +--status=./FlowShopEA.status # Status file + +###### Representation ###### +--BenchmarkFile=../../../../paradiseo-moeo/tutorial/examples/flowshop/benchs/020_10_01.txt # -B : Benchmark file name REQUIRED + +###### Stopping criterion ###### +--maxGen=100 # -G : Maximum number of generations (0 = none) +--maxEval=0 # -E : Maximum number of evaluations (0 = none) +--maxTime=0 # -T : Maximum running time in seconds (0 = none) +#--CtrlC=1 # -C : Terminate current generation upon Ctrl C (only available on Unix platforms) + +###### Variation Operators ###### +--crossRate=1 # Relative rate for the only crossover +--shiftMutRate=0.5 # Relative rate for shift mutation +--exchangeMutRate=0.5 # Relative rate for exchange mutation +--pCross=0.25 # -c : Probability of Crossover +--pMut=0.35 # -m : Probability of Mutation + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson6/main.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson6/main.cpp new file mode 100644 index 000000000..82f4c73fb --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson6/main.cpp @@ -0,0 +1,67 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, INRIA, 2007 +* +* Alexandru-Adrian Tantar, Clive Canape +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include +#include +#include +#include + + + +int main(int argc, char* argv[]) +{ + + peo :: init( argc,argv ); + eoParser parser(argc, argv); + eoState state; + peoMoeoPopEval& eval = do_make_para_eval(parser, state); + eoInit& init = do_make_genotype(parser, state); + eoGenOp& op = do_make_op(parser, state); + eoPop& pop = do_make_pop(parser, state, init); + moeoArchive arch; + eoContinue& term = do_make_continue_moeo(parser, state, eval); + eoCheckPoint& checkpoint = do_make_checkpoint_moeo(parser, state, eval, term, pop, arch); + eoAlgo& algo = do_make_ea_moeo(parser, state, eval, checkpoint, op, arch); + peoWrapper parallelMOEO( algo, pop); + eval.setOwner(parallelMOEO); + peo :: run(); + peo :: finalize(); + if (getNodeRank()==1) + { + pop.sort(); + std::cout << "Final population :\n" << pop << std::endl; + } +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson6/make/make_checkpoint_moeo.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson6/make/make_checkpoint_moeo.h new file mode 100755 index 000000000..02685e311 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson6/make/make_checkpoint_moeo.h @@ -0,0 +1,201 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MAKE_CHECKPOINT_MOEO_H_ +#define MAKE_CHECKPOINT_MOEO_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +bool testDirRes(std::string _dirName, bool _erase); + +/** + * This functions allows to build an eoCheckPoint for multi-objective optimization from the parser (partly taken from make_checkpoint_pareto.h) + * @param _parser the parser + * @param _state to store allocated objects + * @param _eval the funtions evaluator + * @param _continue the stopping crietria + * @param _pop the population + * @param _archive the archive of non-dominated solutions + */ +template < class MOEOT > +eoCheckPoint < MOEOT > & do_make_checkpoint_moeo (eoParser & _parser, eoState & _state, eoPopEvalFunc < MOEOT > & _eval, eoContinue < MOEOT > & _continue, eoPop < MOEOT > & _pop, moeoArchive < MOEOT > & _archive) +{ + eoCheckPoint < MOEOT > & checkpoint = _state.storeFunctor(new eoCheckPoint < MOEOT > (_continue)); + /* the objective vector type */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + /////////////////// + // Counters + ////////////////// + // is nb Eval to be used as counter? + //bool useEval = _parser.getORcreateParam(true, "useEval", "Use nb of eval. as counter (vs nb of gen.)", '\0', "Output").value(); + // Create anyway a generation-counter parameter + eoValueParam *generationCounter = new eoValueParam(0, "Gen."); + // Create an incrementor (sub-class of eoUpdater). + eoIncrementor & increment = _state.storeFunctor( new eoIncrementor(generationCounter->value()) ); + // Add it to the checkpoint + checkpoint.add(increment); + // dir for DISK output + std::string & dirName = _parser.getORcreateParam(std::string("Res"), "resDir", "Directory to store DISK outputs", '\0', "Output").value(); + // shoudl we empty it if exists + eoValueParam& eraseParam = _parser.getORcreateParam(true, "eraseDir", "erase files in dirName if any", '\0', "Output"); + bool dirOK = false; // not tested yet + + // Dump of the whole population + //----------------------------- + bool printPop = _parser.getORcreateParam(false, "printPop", "Print sorted pop. every gen.", '\0', "Output").value(); + eoSortedPopStat * popStat; + if ( printPop ) // we do want pop dump + { + popStat = & _state.storeFunctor(new eoSortedPopStat); + checkpoint.add(*popStat); + } + + ////////////////////////////////// + // State savers + ////////////////////////////// + // feed the state to state savers + // save state every N generation + eoValueParam& saveFrequencyParam = _parser.createParam((unsigned int)(0), "saveFrequency", "Save every F generation (0 = only final state, absent = never)", '\0', "Persistence" ); + if (_parser.isItThere(saveFrequencyParam)) + { + // first make sure dirName is OK + if (! dirOK ) + dirOK = testDirRes(dirName, eraseParam.value()); // TRUE + unsigned int freq = (saveFrequencyParam.value()>0 ? saveFrequencyParam.value() : UINT_MAX ); +#ifdef _MSVC + std::string stmp = dirName + "\generations"; +#else + std::string stmp = dirName + "/generations"; +#endif + eoCountedStateSaver *stateSaver1 = new eoCountedStateSaver(freq, _state, stmp); + _state.storeFunctor(stateSaver1); + checkpoint.add(*stateSaver1); + } + // save state every T seconds + eoValueParam& saveTimeIntervalParam = _parser.getORcreateParam((unsigned int)(0), "saveTimeInterval", "Save every T seconds (0 or absent = never)", '\0',"Persistence" ); + if (_parser.isItThere(saveTimeIntervalParam) && saveTimeIntervalParam.value()>0) + { + // first make sure dirName is OK + if (! dirOK ) + dirOK = testDirRes(dirName, eraseParam.value()); // TRUE +#ifdef _MSVC + std::string stmp = dirName + "\time"; +#else + std::string stmp = dirName + "/time"; +#endif + eoTimedStateSaver *stateSaver2 = new eoTimedStateSaver(saveTimeIntervalParam.value(), _state, stmp); + _state.storeFunctor(stateSaver2); + checkpoint.add(*stateSaver2); + } + + /////////////////// + // Archive + ////////////////// + // update the archive every generation + bool updateArch = _parser.getORcreateParam(true, "updateArch", "Update the archive at each gen.", '\0', "Evolution Engine").value(); + if (updateArch) + { + moeoArchiveUpdater < MOEOT > * updater = new moeoArchiveUpdater < MOEOT > (_archive, _pop); + _state.storeFunctor(updater); + checkpoint.add(*updater); + } + // store the objective vectors contained in the archive every generation + bool storeArch = _parser.getORcreateParam(false, "storeArch", "Store the archive's objective vectors at each gen.", '\0', "Output").value(); + if (storeArch) + { + if (! dirOK ) + dirOK = testDirRes(dirName, eraseParam.value()); // TRUE +#ifdef _MSVC + std::string stmp = dirName + "\arch"; +#else + std::string stmp = dirName + "/arch"; +#endif + moeoArchiveObjectiveVectorSavingUpdater < MOEOT > * save_updater = new moeoArchiveObjectiveVectorSavingUpdater < MOEOT > (_archive, stmp); + _state.storeFunctor(save_updater); + checkpoint.add(*save_updater); + } + // store the contribution of the non-dominated solutions + bool cont = _parser.getORcreateParam(false, "contribution", "Store the contribution of the archive at each gen.", '\0', "Output").value(); + if (cont) + { + if (! dirOK ) + dirOK = testDirRes(dirName, eraseParam.value()); // TRUE +#ifdef _MSVC + std::string stmp = dirName + "\contribution"; +#else + std::string stmp = dirName + "/contribution"; +#endif + moeoContributionMetric < ObjectiveVector > * contribution = new moeoContributionMetric < ObjectiveVector >; + moeoBinaryMetricSavingUpdater < MOEOT > * contribution_updater = new moeoBinaryMetricSavingUpdater < MOEOT > (*contribution, _archive, stmp); + _state.storeFunctor(contribution_updater); + checkpoint.add(*contribution_updater); + } + // store the entropy of the non-dominated solutions + bool ent = _parser.getORcreateParam(false, "entropy", "Store the entropy of the archive at each gen.", '\0', "Output").value(); + if (ent) + { + if (! dirOK ) + dirOK = testDirRes(dirName, eraseParam.value()); // TRUE +#ifdef _MSVC + std::string stmp = dirName + "\entropy"; +#else + std::string stmp = dirName + "/entropy"; +#endif + moeoEntropyMetric < ObjectiveVector > * entropy = new moeoEntropyMetric < ObjectiveVector >; + moeoBinaryMetricSavingUpdater < MOEOT > * entropy_updater = new moeoBinaryMetricSavingUpdater < MOEOT > (*entropy, _archive, stmp); + _state.storeFunctor(entropy_updater); + checkpoint.add(*entropy_updater); + } + + // and that's it for the (control and) output + return checkpoint; +} + +#endif /*MAKE_CHECKPOINT_MOEO_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson6/make/make_continue_moeo.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson6/make/make_continue_moeo.h new file mode 100755 index 000000000..00461e745 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson6/make/make_continue_moeo.h @@ -0,0 +1,130 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MAKE_CONTINUE_MOEO_H_ +#define MAKE_CONTINUE_MOEO_H_ +#include +#include +#include +#include +#include +#ifndef _MSC_VER +#include +#endif +#include +#include + + +/** + * Helper function + * @param _combined the eoCombinedContinue object + * @param _cont the eoContinue to add + */ +template +eoCombinedContinue * make_combinedContinue(eoCombinedContinue *_combined, eoContinue *_cont) +{ + if (_combined) // already exists + _combined->add(*_cont); + else + _combined = new eoCombinedContinue(*_cont); + return _combined; +} + + +/** + * This functions allows to build a eoContinue for multi-objective optimization from the parser (partly taken from make_continue_pareto.h) + * @param _parser the parser + * @param _state to store allocated objects + * @param _eval the funtions evaluator + */ +template +eoContinue & do_make_continue_moeo(eoParser& _parser, eoState& _state, eoPopEvalFunc & _eval) +{ + // the combined continue - to be filled + eoCombinedContinue *continuator = NULL; + // First the eoGenContinue - need a default value so you can run blind + // but we also need to be able to avoid it <--> 0 + eoValueParam& maxGenParam = _parser.createParam((unsigned int)(100), "maxGen", "Maximum number of generations (0 = none)",'G',"Stopping criterion"); + if (maxGenParam.value()) // positive: -> define and store + { + eoGenContinue *genCont = new eoGenContinue(maxGenParam.value()); + _state.storeFunctor(genCont); + // and "add" to combined + continuator = make_combinedContinue(continuator, genCont); + } + // maxEval + eoValueParam& maxEvalParam = _parser.getORcreateParam((unsigned long)(0), "maxEval", "Maximum number of evaluations (0 = none)", 'E', "Stopping criterion"); + /* if (maxEvalParam.value()) + { + eoEvalContinue *evalCont = new eoEvalContinue(_eval, maxEvalParam.value()); + _state.storeFunctor(evalCont); + // and "add" to combined + continuator = make_combinedContinue(continuator, evalCont); + }*/ + // maxTime + eoValueParam& maxTimeParam = _parser.getORcreateParam((unsigned long)(0), "maxTime", "Maximum running time in seconds (0 = none)", 'T', "Stopping criterion"); + if (maxTimeParam.value()) // positive: -> define and store + { + eoTimeContinue *timeCont = new eoTimeContinue(maxTimeParam.value()); + _state.storeFunctor(timeCont); + // and "add" to combined + continuator = make_combinedContinue(continuator, timeCont); + } + // CtrlC +#ifndef _MSC_VER + // the CtrlC interception (Linux only I'm afraid) + eoCtrlCContinue *ctrlCCont; + eoValueParam& ctrlCParam = _parser.createParam(true, "CtrlC", "Terminate current generation upon Ctrl C",'C', "Stopping criterion"); + if (_parser.isItThere(ctrlCParam)) + { + ctrlCCont = new eoCtrlCContinue; + // store + _state.storeFunctor(ctrlCCont); + // add to combinedContinue + continuator = make_combinedContinue(continuator, ctrlCCont); + } +#endif + // now check that there is at least one! + if (!continuator) + throw std::runtime_error("You MUST provide a stopping criterion"); + // OK, it's there: store in the eoState + _state.storeFunctor(continuator); + // and return + return *continuator; +} + +#endif /*MAKE_CONTINUE_MOEO_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson6/make/make_ea_moeo.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson6/make/make_ea_moeo.h new file mode 100755 index 000000000..f0eaa47bb --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson6/make/make_ea_moeo.h @@ -0,0 +1,297 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Arnaud Liefooghe +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ +//----------------------------------------------------------------------------- + +#ifndef MAKE_EA_MOEO_H_ +#define MAKE_EA_MOEO_H_ + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +/** + * This functions allows to build a moeoEA from the parser + * @param _parser the parser + * @param _state to store allocated objects + * @param _eval the funtions evaluator + * @param _continue the stopping crietria + * @param _op the variation operators + * @param _archive the archive of non-dominated solutions + */ +template < class MOEOT > +moeoEA < MOEOT > & do_make_ea_moeo(eoParser & _parser, eoState & _state, eoPopEvalFunc < MOEOT > & _eval, eoContinue < MOEOT > & _continue, eoGenOp < MOEOT > & _op, moeoArchive < MOEOT > & _archive) +{ + + /* the objective vector type */ + typedef typename MOEOT::ObjectiveVector ObjectiveVector; + + + /* the fitness assignment strategy */ + std::string & fitnessParam = _parser.createParam(std::string("FastNonDominatedSorting"), "fitness", + "Fitness assignment scheme: Dummy, FastNonDominatedSorting or IndicatorBased", 'F', + "Evolution Engine").value(); + std::string & indicatorParam = _parser.createParam(std::string("Epsilon"), "indicator", + "Binary indicator for IndicatorBased: Epsilon, Hypervolume", 'i', + "Evolution Engine").value(); + double rho = _parser.createParam(1.1, "rho", "reference point for the hypervolume indicator", 'r', + "Evolution Engine").value(); + double kappa = _parser.createParam(0.05, "kappa", "Scaling factor kappa for IndicatorBased", 'k', + "Evolution Engine").value(); + moeoFitnessAssignment < MOEOT > * fitnessAssignment; + if (fitnessParam == std::string("Dummy")) + { + fitnessAssignment = new moeoDummyFitnessAssignment < MOEOT> (); + } + else if (fitnessParam == std::string("FastNonDominatedSorting")) + { + fitnessAssignment = new moeoFastNonDominatedSortingFitnessAssignment < MOEOT> (); + } + else if (fitnessParam == std::string("IndicatorBased")) + { + // metric + moeoNormalizedSolutionVsSolutionBinaryMetric < ObjectiveVector, double > *metric; + if (indicatorParam == std::string("Epsilon")) + { + metric = new moeoAdditiveEpsilonBinaryMetric < ObjectiveVector >; + } + else if (indicatorParam == std::string("Hypervolume")) + { + metric = new moeoHypervolumeBinaryMetric < ObjectiveVector > (rho); + } + else + { + std::string stmp = std::string("Invalid binary quality indicator: ") + indicatorParam; + throw std::runtime_error(stmp.c_str()); + } + fitnessAssignment = new moeoExpBinaryIndicatorBasedFitnessAssignment < MOEOT > (*metric, kappa); + } + else + { + std::string stmp = std::string("Invalid fitness assignment strategy: ") + fitnessParam; + throw std::runtime_error(stmp.c_str()); + } + _state.storeFunctor(fitnessAssignment); + + + /* the diversity assignment strategy */ + eoValueParam & diversityParam = _parser.createParam(eoParamParamType("Dummy"), "diversity", + "Diversity assignment scheme: Dummy, Sharing(nicheSize) or Crowding", 'D', "Evolution Engine"); + eoParamParamType & diversityParamValue = diversityParam.value(); + moeoDiversityAssignment < MOEOT > * diversityAssignment; + if (diversityParamValue.first == std::string("Dummy")) + { + diversityAssignment = new moeoDummyDiversityAssignment < MOEOT> (); + } + else if (diversityParamValue.first == std::string("Sharing")) + { + double nicheSize; + if (!diversityParamValue.second.size()) // no parameter added + { + std::cerr << "WARNING, no niche size given for Sharing, using 0.5" << std::endl; + nicheSize = 0.5; + diversityParamValue.second.push_back(std::string("0.5")); + } + else + { + nicheSize = atoi(diversityParamValue.second[0].c_str()); + } + diversityAssignment = new moeoFrontByFrontSharingDiversityAssignment < MOEOT> (nicheSize); + } + else if (diversityParamValue.first == std::string("Crowding")) + { + diversityAssignment = new moeoFrontByFrontCrowdingDiversityAssignment < MOEOT> (); + } + else + { + std::string stmp = std::string("Invalid diversity assignment strategy: ") + diversityParamValue.first; + throw std::runtime_error(stmp.c_str()); + } + _state.storeFunctor(diversityAssignment); + + + /* the comparator strategy */ + std::string & comparatorParam = _parser.createParam(std::string("FitnessThenDiversity"), "comparator", + "Comparator scheme: FitnessThenDiversity, DiversityThenFitness or Aggregative", 'C', "Evolution Engine").value(); + moeoComparator < MOEOT > * comparator; + if (comparatorParam == std::string("FitnessThenDiversity")) + { + comparator = new moeoFitnessThenDiversityComparator < MOEOT> (); + } + else if (comparatorParam == std::string("DiversityThenFitness")) + { + comparator = new moeoDiversityThenFitnessComparator < MOEOT> (); + } + else if (comparatorParam == std::string("Aggregative")) + { + comparator = new moeoAggregativeComparator < MOEOT> (); + } + else + { + std::string stmp = std::string("Invalid comparator strategy: ") + comparatorParam; + throw std::runtime_error(stmp.c_str()); + } + _state.storeFunctor(comparator); + + + /* the selection strategy */ + eoValueParam < eoParamParamType > & selectionParam = _parser.createParam(eoParamParamType("DetTour(2)"), "selection", + "Selection scheme: DetTour(T), StochTour(t) or Random", 'S', "Evolution Engine"); + eoParamParamType & ppSelect = selectionParam.value(); + moeoSelectOne < MOEOT > * select; + if (ppSelect.first == std::string("DetTour")) + { + unsigned int tSize; + if (!ppSelect.second.size()) // no parameter added + { + std::cerr << "WARNING, no parameter passed to DetTour, using 2" << std::endl; + tSize = 2; + // put back 2 in parameter for consistency (and status file) + ppSelect.second.push_back(std::string("2")); + } + else // parameter passed by user as DetTour(T) + { + tSize = atoi(ppSelect.second[0].c_str()); + } + select = new moeoDetTournamentSelect < MOEOT > (*comparator, tSize); + } + else if (ppSelect.first == std::string("StochTour")) + { + double tRate; + if (!ppSelect.second.size()) // no parameter added + { + std::cerr << "WARNING, no parameter passed to StochTour, using 1" << std::endl; + tRate = 1; + // put back 1 in parameter for consistency (and status file) + ppSelect.second.push_back(std::string("1")); + } + else // parameter passed by user as StochTour(T) + { + tRate = atof(ppSelect.second[0].c_str()); + } + select = new moeoStochTournamentSelect < MOEOT > (*comparator, tRate); + } + /* + else if (ppSelect.first == string("Roulette")) + { + // TO DO ! + // ... + } + */ + else if (ppSelect.first == std::string("Random")) + { + select = new moeoRandomSelect (); + } + else + { + std::string stmp = std::string("Invalid selection strategy: ") + ppSelect.first; + throw std::runtime_error(stmp.c_str()); + } + _state.storeFunctor(select); + + + /* the replacement strategy */ + std::string & replacementParam = _parser.createParam(std::string("Elitist"), "replacement", + "Replacement scheme: Elitist, Environmental or Generational", 'R', "Evolution Engine").value(); + moeoReplacement < MOEOT > * replace; + if (replacementParam == std::string("Elitist")) + { + replace = new moeoElitistReplacement < MOEOT> (*fitnessAssignment, *diversityAssignment, *comparator); + } + else if (replacementParam == std::string("Environmental")) + { + replace = new moeoEnvironmentalReplacement < MOEOT> (*fitnessAssignment, *diversityAssignment, *comparator); + } + else if (replacementParam == std::string("Generational")) + { + replace = new moeoGenerationalReplacement < MOEOT> (); + } + else + { + std::string stmp = std::string("Invalid replacement strategy: ") + replacementParam; + throw std::runtime_error(stmp.c_str()); + } + _state.storeFunctor(replace); + + + /* the number of offspring */ + eoValueParam < eoHowMany > & offspringRateParam = _parser.createParam(eoHowMany(1.0), "nbOffspring", + "Number of offspring (percentage or absolute)", 'O', "Evolution Engine"); + + + // the general breeder + eoGeneralBreeder < MOEOT > * breed = new eoGeneralBreeder < MOEOT > (*select, _op, offspringRateParam.value()); + _state.storeFunctor(breed); + // the eoEasyEA + moeoEA < MOEOT > * algo = new moeoEasyEA < MOEOT > (_continue, _eval, *breed, *replace, *fitnessAssignment, *diversityAssignment); + _state.storeFunctor(algo); + return *algo; + +} + +#endif /*MAKE_EA_MOEO_H_*/ diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson6/make/make_library.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson6/make/make_library.h new file mode 100644 index 000000000..fd2eeb42c --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson6/make/make_library.h @@ -0,0 +1,8 @@ +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson6/make/make_para_eval.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson6/make/make_para_eval.h new file mode 100644 index 000000000..b243e8fdb --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson6/make/make_para_eval.h @@ -0,0 +1,25 @@ +#include +#include +#include + +peoMoeoPopEval & do_make_para_eval(eoParser& _parser, eoState& _state) +{ + std::string benchmarkFileName = _parser.getORcreateParam(std::string(), "BenchmarkFile", "Benchmark file name (benchmarks are available at www.lifl.fr/~liefooga/benchmarks)", 'B',"Representation", true).value(); + if (benchmarkFileName == "") + { + std::string stmp = "*** Missing name of the benchmark file\n"; + stmp += " Type '-B=the_benchmark_file_name' or '--BenchmarkFile=the_benchmark_file_name'\n"; + stmp += " Benchmarks files are available at www.lifl.fr/~liefooga/benchmarks"; + throw std::runtime_error(stmp.c_str()); + } + FlowShopBenchmarkParser fParser(benchmarkFileName); + unsigned int M = fParser.getM(); + unsigned int N = fParser.getN(); + std::vector< std::vector > p = fParser.getP(); + std::vector d = fParser.getD(); + + FlowShopEval* plainEval = new FlowShopEval(M, N, p, d); + peoMoeoPopEval* eval = new peoMoeoPopEval (* plainEval); + _state.storeFunctor(eval); + return *eval; +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson6/paradiseo-peo-lsn.doxyfile b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson6/paradiseo-peo-lsn.doxyfile new file mode 100644 index 000000000..c3dd5bbe6 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson6/paradiseo-peo-lsn.doxyfile @@ -0,0 +1,242 @@ +# Doxyfile 1.4.7 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +PROJECT_NAME = "ParadisEO-PEO Lesson6" +PROJECT_NUMBER = 0.1 +OUTPUT_DIRECTORY = ../../../doc/html/lesson6 +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +USE_WINDOWS_ENCODING = NO +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = NO +STRIP_FROM_PATH = +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = YES +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = NO +INHERIT_DOCS = YES +SEPARATE_MEMBER_PAGES = NO +TAB_SIZE = 8 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = NO +OPTIMIZE_OUTPUT_JAVA = NO +BUILTIN_STL_SUPPORT = NO +DISTRIBUTE_GROUP_DOC = NO +SUBGROUPING = YES +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = NO +EXTRACT_PRIVATE = YES +EXTRACT_STATIC = YES +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = NO +HIDE_UNDOC_MEMBERS = YES +HIDE_UNDOC_CLASSES = YES +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = YES +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = NO +SORT_BRIEF_DOCS = NO +SORT_BY_SCOPE_NAME = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_DIRECTORIES = NO +FILE_VERSION_FILTER = +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = YES +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = . +FILE_PATTERNS = *.cpp \ + *.h \ + NEWS \ + README +RECURSIVE = YES +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = * +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = ../../docs/images +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = YES +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = YES +REFERENCES_RELATION = YES +REFERENCES_LINK_SOURCE = YES +USE_HTAGS = NO +VERBATIM_HEADERS = YES +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = YES +COLS_IN_ALPHA_INDEX = 3 +IGNORE_PREFIX = peo +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +BINARY_TOC = NO +TOC_EXPAND = NO +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = YES +TREEVIEW_WIDTH = 250 +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = YES +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = YES +USE_PDFLATEX = YES +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = YES +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = ../../../paradiseo-mo/docs/eo.doxytag=../../../../../paradiseo-mo/docs/html \ + ../../../paradiseo-mo/docs/mo.doxytag=../../../../../paradiseo-mo/docs/html \ + ../../docs/paradiseo-peo.doxytag=../../ \ + ../shared/paradiseo-peo-lsn-shared.doxytag=../../lsnshared/html +GENERATE_TAGFILE = ../../docs/paradiseo-peo-lsn.doxytag +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = YES +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = NO +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = NO +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = NO +CALLER_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = png +DOT_PATH = +DOTFILE_DIRS = +MAX_DOT_GRAPH_WIDTH = 1024 +MAX_DOT_GRAPH_HEIGHT = 1024 +MAX_DOT_GRAPH_DEPTH = 0 +DOT_TRANSPARENT = NO +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = YES + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson6/param b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson6/param new file mode 100644 index 000000000..eb843c65f --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson6/param @@ -0,0 +1,12 @@ +## miscallenous parameters + +--debug=false + +## deployment schema + +--schema=schema.xml + +## parameters + +--inst=../examples/tsp/benchs/eil101.tsp + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson6/schema.xml b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson6/schema.xml new file mode 100644 index 000000000..262e2a9d7 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/Lesson6/schema.xml @@ -0,0 +1,15 @@ + + + + + + + + 1 + + + + + + + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/CMakeLists.txt b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/CMakeLists.txt new file mode 100644 index 000000000..c7dbb5197 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/CMakeLists.txt @@ -0,0 +1,11 @@ + + +####################################################################################### +### 1) Where must cmake go now ? +###################################################################################### + +SUBDIRS(tsp) + +###################################################################################### + + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/CMakeLists.txt b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/CMakeLists.txt new file mode 100644 index 000000000..b22a7fe63 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/CMakeLists.txt @@ -0,0 +1,110 @@ + +###################################################################################### +### 0) Copy the "benchs" directory in the build directory to easily run the lessons +###################################################################################### + +ADD_CUSTOM_TARGET(install DEPENDS ${ParadisEO-PEO_SOURCE_DIR}/tutorial/examples/tsp/benchs) +ADD_CUSTOM_COMMAND( + TARGET install + POST_BUILD + COMMAND ${CMAKE_COMMAND} + ARGS -E copy_directory + ${ParadisEO-PEO_SOURCE_DIR}/tutorial/examples/tsp/benchs + ${ParadisEO-PEO_BINARY_DIR}/tutorial/examples/tsp/benchs) + +###################################################################################### + + +###################################################################################### +### 1) Include the sources +###################################################################################### + +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src) +INCLUDE_DIRECTORIES(${MO_SRC_DIR}/src) +INCLUDE_DIRECTORIES(${ParadisEO-PEO_SOURCE_DIR}/src) + +###################################################################################### + + +###################################################################################### +### 2) Define your target(s): just the tsp lib here +###################################################################################### + +SET(TSP_LIB_OUTPUT_PATH ${TSP_BINARY_DIR}/lib) +SET(LIBRARY_OUTPUT_PATH ${TSP_LIB_OUTPUT_PATH}) + +SET (TSP_SOURCES data.h + data.cpp + opt_route.h + opt_route.cpp + param.h + param.cpp + node.h + node.cpp + route.h + route.cpp + route_init.h + route_init.cpp + route_eval.h + route_eval.cpp + two_opt.h + two_opt.cpp + two_opt_init.h + two_opt_init.cpp + two_opt_incr_eval.h + two_opt_incr_eval.cpp + two_opt_next.h + two_opt_next.cpp + order_xover.h + order_xover.cpp + partial_mapped_xover.h + partial_mapped_xover.cpp + edge_xover.h + edge_xover.cpp + city_swap.h + city_swap.cpp + part_route_eval.h + part_route_eval.cpp + merge_route_eval.h + merge_route_eval.cpp) + +ADD_LIBRARY(tsp STATIC ${TSP_SOURCES}) +###################################################################################### + + +###################################################################################### +### 3) Optionnal: define your lib's version +###################################################################################### + +SET(TSP_VERSION ${GLOBAL_VERSION}) +SET_TARGET_PROPERTIES(tsp PROPERTIES VERSION "${TSP_VERSION}") +###################################################################################### + + +###################################################################################### +### 4) Windows advanced config - especially for Microsoft Visual Studio 8 +###################################################################################### + + IF(CMAKE_CXX_COMPILER MATCHES cl) + IF(NOT WITH_SHARED_LIBS) + IF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + SET(CMAKE_CXX_FLAGS "/nologo /W3 /Gy") + SET(CMAKE_CXX_FLAGS_DEBUG "/MTd /Z7 /Od") + SET(CMAKE_CXX_FLAGS_RELEASE "/MT /O2") + SET(CMAKE_CXX_FLAGS_MINSIZEREL "/MT /O2") + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MTd /Z7 /Od") + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:CONSOLE") + + ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + ENDIF(NOT WITH_SHARED_LIBS) + ENDIF(CMAKE_CXX_COMPILER MATCHES cl) +###################################################################################### + + +###################################################################################### +### 5) Where must cmake go now ? +###################################################################################### + +# nothing to be compiled in the subdirs + +###################################################################################### diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/benchs/eil101.opt.tour b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/benchs/eil101.opt.tour new file mode 100644 index 000000000..1d3fece5a --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/benchs/eil101.opt.tour @@ -0,0 +1,108 @@ +NAME : eil101.opt.tour +COMMENT : Optimum tour for eil101.tsp (Length 629) +TYPE : TOUR +DIMENSION : 101 +TOUR_SECTION +1 +69 +27 +101 +53 +28 +26 +12 +80 +68 +29 +24 +54 +55 +25 +4 +39 +67 +23 +56 +75 +41 +22 +74 +72 +73 +21 +40 +58 +13 +94 +95 +97 +87 +2 +57 +15 +43 +42 +14 +44 +38 +86 +16 +61 +85 +91 +100 +98 +37 +92 +59 +93 +99 +96 +6 +89 +52 +18 +83 +60 +5 +84 +17 +45 +8 +46 +47 +36 +49 +64 +63 +90 +32 +10 +62 +11 +19 +48 +82 +7 +88 +31 +70 +30 +20 +66 +71 +65 +35 +34 +78 +81 +9 +51 +33 +79 +3 +77 +76 +50 +-1 +EOF diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/benchs/eil101.tsp b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/benchs/eil101.tsp new file mode 100644 index 000000000..9672f849e --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/benchs/eil101.tsp @@ -0,0 +1,108 @@ +NAME : eil101 +COMMENT : 101-city problem (Christofides/Eilon) +TYPE : TSP +DIMENSION : 101 +EDGE_WEIGHT_TYPE : EUC_2D +NODE_COORD_SECTION +1 41 49 +2 35 17 +3 55 45 +4 55 20 +5 15 30 +6 25 30 +7 20 50 +8 10 43 +9 55 60 +10 30 60 +11 20 65 +12 50 35 +13 30 25 +14 15 10 +15 30 5 +16 10 20 +17 5 30 +18 20 40 +19 15 60 +20 45 65 +21 45 20 +22 45 10 +23 55 5 +24 65 35 +25 65 20 +26 45 30 +27 35 40 +28 41 37 +29 64 42 +30 40 60 +31 31 52 +32 35 69 +33 53 52 +34 65 55 +35 63 65 +36 2 60 +37 20 20 +38 5 5 +39 60 12 +40 40 25 +41 42 7 +42 24 12 +43 23 3 +44 11 14 +45 6 38 +46 2 48 +47 8 56 +48 13 52 +49 6 68 +50 47 47 +51 49 58 +52 27 43 +53 37 31 +54 57 29 +55 63 23 +56 53 12 +57 32 12 +58 36 26 +59 21 24 +60 17 34 +61 12 24 +62 24 58 +63 27 69 +64 15 77 +65 62 77 +66 49 73 +67 67 5 +68 56 39 +69 37 47 +70 37 56 +71 57 68 +72 47 16 +73 44 17 +74 46 13 +75 49 11 +76 49 42 +77 53 43 +78 61 52 +79 57 48 +80 56 37 +81 55 54 +82 15 47 +83 14 37 +84 11 31 +85 16 22 +86 4 18 +87 28 18 +88 26 52 +89 26 35 +90 31 67 +91 15 19 +92 22 22 +93 18 24 +94 26 27 +95 25 24 +96 22 27 +97 25 21 +98 19 21 +99 20 26 +100 18 18 +101 35 35 +EOF diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/benchs/eil101.tsp.hc b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/benchs/eil101.tsp.hc new file mode 100644 index 000000000..f12903349 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/benchs/eil101.tsp.hc @@ -0,0 +1,102 @@ +101 +41 49 +35 17 +55 45 +55 20 +15 30 +25 30 +20 50 +10 43 +55 60 +30 60 +20 65 +50 35 +30 25 +15 10 +30 5 +10 20 +5 30 +20 40 +15 60 +45 65 +45 20 +45 10 +55 5 +65 35 +65 20 +45 30 +35 40 +41 37 +64 42 +40 60 +31 52 +35 69 +53 52 +65 55 +63 65 +2 60 +20 20 +5 5 +60 12 +40 25 +42 7 +24 12 +23 3 +11 14 +6 38 +2 48 +8 56 +13 52 +6 68 +47 47 +49 58 +27 43 +37 31 +57 29 +63 23 +53 12 +32 12 +36 26 +21 24 +17 34 +12 24 +24 58 +27 69 +15 77 +62 77 +49 73 +67 5 +56 39 +37 47 +37 56 +57 68 +47 16 +44 17 +46 13 +49 11 +49 42 +53 43 +61 52 +57 48 +56 37 +55 54 +15 47 +14 37 +11 31 +16 22 +4 18 +28 18 +26 52 +26 35 +31 67 +15 19 +22 22 +18 24 +26 27 +25 24 +22 27 +25 21 +19 21 +20 26 +18 18 +35 35 diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/city_swap.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/city_swap.cpp new file mode 100644 index 000000000..a9da49f6c --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/city_swap.cpp @@ -0,0 +1,50 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include + +#include "city_swap.h" + +bool CitySwap :: operator () (Route & __route) +{ + + std :: swap (__route [rng.random (__route.size ())], + __route [rng.random (__route.size ())]) ; + + __route.invalidate () ; + + return true ; +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/city_swap.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/city_swap.h new file mode 100644 index 000000000..91770db04 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/city_swap.h @@ -0,0 +1,55 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef city_swap_h +#define city_swap_h + +#include + +#include "route.h" + +/** Its swaps two vertices + randomly choosen */ +class CitySwap : public eoMonOp + { + + public : + + bool operator () (Route & __route) ; + + } ; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/data.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/data.cpp new file mode 100644 index 000000000..fc7223342 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/data.cpp @@ -0,0 +1,132 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include +#include +#include +#include + +#include + +#include "data.h" +#include "node.h" + +#define MAX_TRASH_LENGTH 1000 +#define MAX_FIELD_LENGTH 1000 +#define MAX_LINE_LENGTH 1000 + +static void getNextField (FILE * __f, char * __buff) +{ + + char trash [MAX_TRASH_LENGTH]; + + fscanf (__f, "%[ \t:\n]", trash); /* Discarding sep. */ + fscanf (__f, "%[^:\n]", __buff); /* Reading the field */ + fgetc (__f); +} + +static void getLine (FILE * __f, char * __buff) +{ + + char trash [MAX_TRASH_LENGTH]; + + fscanf (__f, "%[ \t:\n]", trash); /* Discarding sep. */ + fscanf (__f, "%[^\n]", __buff); /* Reading the line */ +} + +void loadData (const char * __filename) +{ + + FILE * f = fopen (__filename, "r"); + + if (f) + { + + printf ("Loading '%s'.\n", __filename); + + char field [MAX_FIELD_LENGTH]; + + getNextField (f, field); /* Name */ + assert (strstr (field, "NAME")); + getNextField (f, field); + printf ("NAME: %s.\n", field); + + getNextField (f, field); /* Comment */ + assert (strstr (field, "COMMENT")); + getLine (f, field); + printf ("COMMENT: %s.\n", field); + + getNextField (f, field); /* Type */ + assert (strstr (field, "TYPE")); + getNextField (f, field); + printf ("TYPE: %s.\n", field); + + getNextField (f, field); /* Dimension */ + assert (strstr (field, "DIMENSION")); + getNextField (f, field); + printf ("DIMENSION: %s.\n", field); + numNodes = atoi (field); + + getNextField (f, field); /* Edge weight type */ + assert (strstr (field, "EDGE_WEIGHT_TYPE")); + getNextField (f, field); + printf ("EDGE_WEIGHT_TYPE: %s.\n", field); + + getNextField (f, field); /* Node coord section */ + assert (strstr (field, "NODE_COORD_SECTION")); + loadNodes (f); + + getNextField (f, field); /* End of file */ + assert (strstr (field, "EOF")); + printf ("EOF.\n"); + } + else + { + + fprintf (stderr, "Can't open '%s'.\n", __filename); + exit (1); + } +} + +void loadData (eoParser & __parser) +{ + + /* Getting the path of the instance */ + + eoValueParam param ("", "inst", "Path of the instance") ; + __parser.processParam (param) ; + loadData (param.value ().c_str ()); +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/data.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/data.h new file mode 100644 index 000000000..4f501e463 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/data.h @@ -0,0 +1,46 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __data_h +#define __data_h + +#include + +extern void loadData (const char * __filename); + +extern void loadData (eoParser & __parser); + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/display.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/display.cpp new file mode 100644 index 000000000..905ccbbe0 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/display.cpp @@ -0,0 +1,149 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include +#include + +#include + +#include "display.h" +#include "node.h" +#include "opt_route.h" + +#define BORDER 20 +#define RATIO 0.5 + +#define screen_width 1024 +#define screen_height 768 + +static const char * filename; + +/* Computed coordinates */ +static unsigned * X_new_coord, * Y_new_coord ; + +/* this variable will contain the handle to the returned graphics context. */ +static GC gc; + +/* this variable will contain the pointer to the Display structure */ +static Display* disp; + +/* this variable will store the ID of the newly created window. */ +static Window win; + +static int screen; + +/* Create a new backing pixmap of the appropriate size */ + +/* Best tour */ +/* +gdk_gc_set_line_attributes (gc, 2, GDK_LINE_ON_OFF_DASH, GDK_CAP_NOT_LAST, GDK_JOIN_MITER) ; + +gdk_gc_set_foreground (gc, & color_green) ; + +for (int i = 0 ; i < (int) numNodes ; i ++) { + + gdk_draw_line (pixmap, gc, + X_new_coord [opt_route [i]], + Y_new_coord [opt_route [i]], + X_new_coord [opt_route [(i + 1) % numNodes]], + Y_new_coord [opt_route [(i + 1) % numNodes]]); + + }*/ + +void openMainWindow (const char * __filename) +{ + + filename = __filename; + + /* Map */ + int map_width = (int) (X_max - X_min); + int map_height = (int) (Y_max - Y_min); + int map_side = std :: max (map_width, map_height); + + /* Calculate the window's width and height. */ + int win_width = (int) (screen_width * RATIO * map_width / map_side); + int win_height = (int) (screen_height * RATIO * map_height / map_side); + + /* Computing the coordinates */ + X_new_coord = new unsigned [numNodes]; + Y_new_coord = new unsigned [numNodes]; + + for (unsigned i = 0; i < numNodes; i ++) + { + X_new_coord [i] = (unsigned) (win_width * (1.0 - (X_coord [i] - X_min) / map_width) + BORDER); + Y_new_coord [i] = (unsigned) (win_height * (1.0 - (Y_coord [i] - Y_min) / map_height) + BORDER); + } + + /* Initialisation */ + XGCValues val ; + + disp = XOpenDisplay (NULL) ; + screen = DefaultScreen (disp) ; + win = XCreateSimpleWindow (disp, RootWindow (disp, screen), 0, 0, win_width + 2 * BORDER, win_height + 2 * BORDER, 2, BlackPixel (disp, screen), WhitePixel (disp, screen)) ; + val.foreground = BlackPixel(disp, screen) ; + val.background = WhitePixel(disp, screen) ; + gc = XCreateGC (disp, win, GCForeground | GCBackground, & val) ; + + XMapWindow (disp, win) ; + XFlush (disp) ; + + while (true) + { + XClearWindow (disp, win) ; + + /* Vertices as circles */ + for (unsigned i = 1 ; i < numNodes ; i ++) + XDrawArc (disp, win, gc, X_new_coord [i] - 1, Y_new_coord [i] - 1, 3, 3, 0, 364 * 64) ; + + /* New tour */ + std :: ifstream f (filename); + if (f) + { + Route route; + f >> route; + f.close (); + + for (int i = 0; i < (int) numNodes; i ++) + XDrawLine (disp, win, gc, + X_new_coord [route [i]], + Y_new_coord [route [i]], + X_new_coord [route [(i + 1) % numNodes]], + Y_new_coord [route [(i + 1) % numNodes]]); + } + XFlush (disp) ; + sleep (1) ; + } +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/display.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/display.h new file mode 100644 index 000000000..6bc271746 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/display.h @@ -0,0 +1,44 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __display_h +#define __display_h + +#include "route.h" + +extern void openMainWindow (const char * __filename); + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/display_best_route.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/display_best_route.cpp new file mode 100644 index 000000000..cb2f0afdb --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/display_best_route.cpp @@ -0,0 +1,50 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include "display_best_route.h" +#include "display.h" + +DisplayBestRoute :: DisplayBestRoute (eoPop & __pop + ) : pop (__pop) +{ +} + +void DisplayBestRoute :: operator () () +{ + + displayRoute (pop.best_element ()); +} + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/display_best_route.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/display_best_route.h new file mode 100644 index 000000000..745a50222 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/display_best_route.h @@ -0,0 +1,61 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __display_best_route_h +#define __display_best_route_h + +#include + +#include + +#include "route.h" + +class DisplayBestRoute : public eoUpdater + { + + public : + + DisplayBestRoute (eoPop & __pop); + + void operator () (); + + private : + + eoPop & pop; + + }; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/edge_xover.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/edge_xover.cpp new file mode 100644 index 000000000..a4c46f617 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/edge_xover.cpp @@ -0,0 +1,156 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include +#include + +#include + +#include "edge_xover.h" + +void EdgeXover :: build_map (const Route & __par1, const Route & __par2) +{ + + unsigned len = __par1.size () ; + + /* Initialization */ + _map.clear () ; + _map.resize (len) ; + + for (unsigned i = 0 ; i < len ; i ++) + { + _map [__par1 [i]].insert (__par1 [(i + 1) % len]) ; + _map [__par2 [i]].insert (__par2 [(i + 1) % len]) ; + _map [__par1 [i]].insert (__par1 [(i - 1 + len) % len]) ; + _map [__par2 [i]].insert (__par2 [(i - 1 + len) % len]) ; + } + + visited.clear () ; + visited.resize (len, false) ; +} + +void EdgeXover :: remove_entry (unsigned __vertex, std :: vector > & __map) + { + + std :: set & neigh = __map [__vertex] ; + + for (std :: set :: iterator it = neigh.begin () ; + it != neigh.end () ; + it ++) + __map [* it].erase (__vertex) ; + + } + +void EdgeXover :: add_vertex (unsigned __vertex, Route & __child) +{ + + visited [__vertex] = true ; + __child.push_back (__vertex) ; + remove_entry (__vertex, _map) ; /* Removing entries */ +} + +void EdgeXover :: cross (const Route & __par1, const Route & __par2, Route & __child) +{ + + build_map (__par1, __par2) ; + + unsigned len = __par1.size () ; + + /* Go ! */ + __child.clear () ; + + unsigned cur_vertex = rng.random (len) ; + + add_vertex (cur_vertex, __child) ; + + for (unsigned i = 1 ; i < len ; i ++) + { + + unsigned len_min_entry = MAXINT ; + + std :: set & neigh = _map [cur_vertex] ; + + for (std :: set :: iterator it = neigh.begin () ; + it != neigh.end () ; + it ++) + { + unsigned l = _map [* it].size () ; + if (len_min_entry > l) + len_min_entry = l ; + } + + std :: vector cand ; /* Candidates */ + + for (std :: set :: iterator it = neigh.begin () ; + it != neigh.end () ; + it ++) + { + unsigned l = _map [* it].size () ; + if (len_min_entry == l) + cand.push_back (* it) ; + } + + if (! cand.size ()) + { + + /* Oh no ! Implicit mutation */ + for (unsigned j = 0 ; j < len ; j ++) + if (! visited [j]) + cand.push_back (j) ; + } + + cur_vertex = cand [rng.random (cand.size ())] ; + + add_vertex (cur_vertex, __child) ; + } +} + +bool EdgeXover :: operator () (Route & __route1, Route & __route2) +{ + + // Init. copy + Route par [2] ; + par [0] = __route1 ; + par [1] = __route2 ; + + cross (par [0], par [1], __route1) ; + cross (par [1], par [0], __route2) ; + + __route1.invalidate () ; + __route2.invalidate () ; + + return true ; +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/edge_xover.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/edge_xover.h new file mode 100644 index 000000000..c9249512c --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/edge_xover.h @@ -0,0 +1,72 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef edge_xover_h +#define edge_xover_h + +#include +#include + +#include + +#include "route.h" + +/** Edge Crossover */ +class EdgeXover : public eoQuadOp + { + + public : + + bool operator () (Route & __route1, Route & __route2) ; + + private : + + void cross (const Route & __par1, const Route & __par2, Route & __child) ; /* Binary */ + + void remove_entry (unsigned __vertex, std :: vector > & __map) ; + /* Updating the map of entries */ + + void build_map (const Route & __par1, const Route & __par2) ; + + void add_vertex (unsigned __vertex, Route & __child) ; + + std :: vector > _map ; /* The handled map */ + + std :: vector visited ; /* Vertices that are already visited */ + + } ; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/merge_route_eval.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/merge_route_eval.cpp new file mode 100644 index 000000000..5f67b5b3a --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/merge_route_eval.cpp @@ -0,0 +1,46 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include "merge_route_eval.h" + +void MergeRouteEval :: operator () (Route & __route, const int & __part_fit) +{ + + int len = __route.fitness (); + len += __part_fit; + __route.fitness (len); +} + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/merge_route_eval.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/merge_route_eval.h new file mode 100644 index 000000000..40dd1a5a7 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/merge_route_eval.h @@ -0,0 +1,53 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __merge_route_eval_h +#define __merge_route_eval_h + +#include + +#include "route.h" + +class MergeRouteEval : public peoAggEvalFunc + { + + public : + + void operator () (Route & __route, const int & __part_fit) ; + + }; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/mix.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/mix.h new file mode 100644 index 000000000..11942f5cc --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/mix.h @@ -0,0 +1,53 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __mix_h +#define __mix_h + +#include + +#include + +template void mix (std :: vector & __v) +{ + + unsigned len = __v.size () ; + + for (unsigned i = 0 ; i < len ; i ++) + std :: swap (__v [i], __v [rng.random (len)]) ; +} + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/node.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/node.cpp new file mode 100644 index 000000000..a3a668d70 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/node.cpp @@ -0,0 +1,108 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include +#include + +#include "node.h" + +unsigned numNodes; /* Number of nodes */ + +//static unsigned * * dist; /* Square matrix of distances */ + +double * X_coord, * Y_coord; + +double X_min = MAXDOUBLE, X_max = MINDOUBLE, Y_min = MAXDOUBLE, Y_max = MINDOUBLE; + +void loadNodes (FILE * __f) +{ + + /* Coord */ + + X_coord = new double [numNodes]; + + Y_coord = new double [numNodes]; + + unsigned num; + + for (unsigned i = 0; i < numNodes; i ++) + { + + fscanf (__f, "%u%lf%lf", & num, X_coord + i, Y_coord + i); + + if (X_coord [i] < X_min) + X_min = X_coord [i]; + if (X_coord [i] > X_max) + X_max = X_coord [i]; + if (Y_coord [i] < Y_min) + Y_min = Y_coord [i]; + if (Y_coord [i] > Y_max) + Y_max = Y_coord [i]; + } + + /* Allocation */ + /* + dist = new unsigned * [numNodes]; + + for (unsigned i = 0; i < numNodes; i ++) + dist [i] = new unsigned [numNodes]; + */ + /* Computation of the distances */ + + /* + for (unsigned i = 0; i < numNodes; i ++) { + + dist [i] [i] = 0; + + for (unsigned j = 0; j < numNodes; j ++) { + + double dx = X_coord [i] - X_coord [j], dy = Y_coord [i] - Y_coord [j]; + + dist [i] [j] = dist [j] [i] = (unsigned) (sqrt (dx * dx + dy * dy) + 0.5) ; + } + }*/ +} + +unsigned distance (Node __from, Node __to) +{ + + // return dist [__from] [__to]; + + double dx = X_coord [__from] - X_coord [__to], dy = Y_coord [__from] - Y_coord [__to]; + + return (unsigned) (sqrt (dx * dx + dy * dy) + 0.5) ; +} + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/node.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/node.h new file mode 100644 index 000000000..6200d1da8 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/node.h @@ -0,0 +1,54 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __node_h +#define __node_h + +#include + +typedef unsigned Node; + +extern double X_min, X_max, Y_min, Y_max; + +extern double * X_coord, * Y_coord; + +extern unsigned numNodes; /* Number of nodes */ + +extern void loadNodes (FILE * __f); + +extern unsigned distance (Node __from, Node __to); + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/opt_route.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/opt_route.cpp new file mode 100644 index 000000000..0867869b4 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/opt_route.cpp @@ -0,0 +1,143 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include "opt_route.h" + +#define MAX_TRASH_LENGTH 1000 +#define MAX_FIELD_LENGTH 1000 +#define MAX_LINE_LENGTH 1000 + +static void getNextField (FILE * __f, char * __buff) +{ + + char trash [MAX_TRASH_LENGTH]; + + fscanf (__f, "%[ \t:\n]", trash); /* Discarding sep. */ + fscanf (__f, "%[^:\n]", __buff); /* Reading the field */ + fgetc (__f); +} + +static void getLine (FILE * __f, char * __buff) +{ + + char trash [MAX_TRASH_LENGTH]; + + fscanf (__f, "%[ \t:\n]", trash); /* Discarding sep. */ + fscanf (__f, "%[^\n]", __buff); /* Reading the line */ +} + +static void loadBestRoute (FILE * __f) +{ + + opt_route.clear (); + + for (unsigned i = 0; i < numNodes; i ++) + { + Node node; + fscanf (__f, "%u", & node); + opt_route.push_back (node - 1); + } + int d; /* -1 ! */ + fscanf (__f, "%d", & d); +} + +void loadOptimumRoute (const char * __filename) +{ + + FILE * f = fopen (__filename, "r"); + + if (f) + { + + printf ("Loading '%s'.\n", __filename); + + char field [MAX_FIELD_LENGTH]; + + getNextField (f, field); /* Name */ + assert (strstr (field, "NAME")); + getNextField (f, field); + //printf ("NAME: %s.\n", field); + + getNextField (f, field); /* Comment */ + assert (strstr (field, "COMMENT")); + getLine (f, field); + // printf ("COMMENT: %s.\n", field); + + getNextField (f, field); /* Type */ + assert (strstr (field, "TYPE")); + getNextField (f, field); + //printf ("TYPE: %s.\n", field); + + getNextField (f, field); /* Dimension */ + assert (strstr (field, "DIMENSION")); + getNextField (f, field); + // printf ("DIMENSION: %s.\n", field); + numNodes = atoi (field); + + getNextField (f, field); /* Tour section */ + assert (strstr (field, "TOUR_SECTION")); + loadBestRoute (f); + + getNextField (f, field); /* End of file */ + assert (strstr (field, "EOF")); + //printf ("EOF.\n"); + + printf ("The length of the best route is %u.\n", length (opt_route)); + } + else + { + + fprintf (stderr, "Can't open '%s'.\n", __filename); + exit (1); + } +} + +void loadOptimumRoute (eoParser & __parser) +{ + + /* Getting the path of the instance */ + + eoValueParam param ("", "optimumTour", "Optimum tour") ; + __parser.processParam (param) ; + if (strlen (param.value ().c_str ())) + loadOptimumRoute (param.value ().c_str ()); + else + opt_route.fitness (0); +} + +Route opt_route; /* Optimum route */ + + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/opt_route.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/opt_route.h new file mode 100644 index 000000000..d454a7b82 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/opt_route.h @@ -0,0 +1,51 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __opt_route_h +#define __opt_route_h + +#include +#include + +#include "route.h" + +extern void loadOptimumRoute (const char * __filename); + +extern void loadOptimumRoute (eoParser & __parser); + +extern Route opt_route; /* Optimum route */ + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/order_xover.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/order_xover.cpp new file mode 100644 index 000000000..0602ccaf9 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/order_xover.cpp @@ -0,0 +1,98 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include + +#include + +#include "order_xover.h" + +void OrderXover :: cross (const Route & __par1, const Route & __par2, Route & __child) +{ + + unsigned cut2 = 1 + rng.random (numNodes) ; + unsigned cut1 = rng.random (cut2); + unsigned l = 0; + + /* To store vertices that have already been crossed */ + std :: vector v (numNodes, false); + + /* Copy of the left partial route of the first parent */ + for (unsigned i = cut1 ; i < cut2 ; i ++) + { + __child [l ++] = __par1 [i] ; + v [__par1 [i]] = true ; + } + + /* Searching the vertex of the second path, that ended the previous first one */ + unsigned from = 0 ; + for (unsigned i = 0; i < numNodes; i ++) + if (__par2 [i] == __child [cut2 - 1]) + { + from = i ; + break ; + } + + /* Selecting a direction (Left or Right) */ + char direct = rng.flip () ? 1 : -1 ; + + for (unsigned i = 0; i < numNodes + 1; i ++) + { + unsigned bidule = (direct * i + from + numNodes) % numNodes; + if (! v [__par2 [bidule]]) + { + __child [l ++] = __par2 [bidule] ; + v [__par2 [bidule]] = true ; + } + } +} + +bool OrderXover :: operator () (Route & __route1, Route & __route2) +{ + + // Init. copy + Route par [2] ; + par [0] = __route1 ; + par [1] = __route2 ; + + cross (par [0], par [1], __route1) ; + cross (par [1], par [0], __route2) ; + + __route1.invalidate () ; + __route2.invalidate () ; + + return true ; +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/order_xover.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/order_xover.h new file mode 100644 index 000000000..17f66eaf1 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/order_xover.h @@ -0,0 +1,57 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef order_xover_h +#define order_xover_h + +#include + +#include "route.h" + +/** Order Crossover */ +class OrderXover : public eoQuadOp + { + + public : + + bool operator () (Route & __route1, Route & __route2) ; + + private : + + void cross (const Route & __par1, const Route & __par2, Route & __child) ; + } ; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/paradiseo-peo-lsn-shared.doxyfile b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/paradiseo-peo-lsn-shared.doxyfile new file mode 100644 index 000000000..5acf7de0b --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/paradiseo-peo-lsn-shared.doxyfile @@ -0,0 +1,240 @@ +# Doxyfile 1.4.7 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +PROJECT_NAME = "@PACKAGE_NAME@ - Lessons" +PROJECT_NUMBER = @PACKAGE_VERSION@ +OUTPUT_DIRECTORY = @CMAKE_BINARY_DIR@/doc/html/lsnshared +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +USE_WINDOWS_ENCODING = NO +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = NO +STRIP_FROM_PATH = @CMAKE_SOURCE_DIR@ +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = YES +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = NO +INHERIT_DOCS = YES +SEPARATE_MEMBER_PAGES = NO +TAB_SIZE = 8 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = NO +OPTIMIZE_OUTPUT_JAVA = NO +BUILTIN_STL_SUPPORT = NO +DISTRIBUTE_GROUP_DOC = NO +SUBGROUPING = YES +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = NO +EXTRACT_PRIVATE = YES +EXTRACT_STATIC = YES +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = NO +HIDE_UNDOC_MEMBERS = YES +HIDE_UNDOC_CLASSES = YES +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = YES +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = NO +SORT_BRIEF_DOCS = NO +SORT_BY_SCOPE_NAME = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_DIRECTORIES = NO +FILE_VERSION_FILTER = +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = YES +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = YES +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = @CMAKE_CURRENT_SOURCE_DIR@ +FILE_PATTERNS = *.cpp \ + *.h \ + NEWS \ + README +RECURSIVE = YES +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = * +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = YES +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = YES +REFERENCES_RELATION = YES +REFERENCES_LINK_SOURCE = YES +USE_HTAGS = NO +VERBATIM_HEADERS = YES +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = YES +COLS_IN_ALPHA_INDEX = 3 +IGNORE_PREFIX = peo +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +BINARY_TOC = NO +TOC_EXPAND = NO +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = YES +TREEVIEW_WIDTH = 250 +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = YES +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = YES +USE_PDFLATEX = YES +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = YES +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = @EO_BIN_DIR@/doc/eo.doxytag=http://eodev.sourceforge.net/eo/doc/html \ + @MO_BIN_DIR@/doc/mo.doxytag=@MO_BIN_DIR@/doc/html \ + @ParadisEO-PEO_BINARY_DIR@/doc/peo.doxytag=@ParadisEO-PEO_BINARY_DIR@/doc/html +GENERATE_TAGFILE = @CMAKE_BINARY_DIR@/doc/paradiseo-peo-lsn-shared.doxytag +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = YES +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = NO +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = NO +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = NO +CALLER_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = png +DOT_PATH = +DOTFILE_DIRS = +MAX_DOT_GRAPH_WIDTH = 1024 +MAX_DOT_GRAPH_HEIGHT = 1024 +MAX_DOT_GRAPH_DEPTH = 0 +DOT_TRANSPARENT = NO +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = YES diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/param.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/param.cpp new file mode 100644 index 000000000..03c2c19ab --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/param.cpp @@ -0,0 +1,52 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include + +#include "data.h" +#include "opt_route.h" + +void loadParameters (int __argc, char * * __argv) +{ + + eoParser parser (__argc, __argv); + + loadData (parser); + + loadOptimumRoute (parser); +} + + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/param.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/param.h new file mode 100644 index 000000000..4b0485879 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/param.h @@ -0,0 +1,42 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __param_h +#define __param_h + +extern void loadParameters (int __argc, char * * __argv); + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/part_route_eval.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/part_route_eval.cpp new file mode 100644 index 000000000..0134f6065 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/part_route_eval.cpp @@ -0,0 +1,58 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include "part_route_eval.h" +#include "node.h" + +PartRouteEval :: PartRouteEval (float __from, + float __to + ) : from (__from), + to (__to) +{} + +void PartRouteEval :: operator () (Route & __route) +{ + + + unsigned len = 0 ; + + for (unsigned i = (unsigned) (__route.size () * from) ; + i < (unsigned) (__route.size () * to) ; + i ++) + len += distance (__route [i], __route [(i + 1) % numNodes]) ; + + __route.fitness (- (int) len) ; +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/part_route_eval.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/part_route_eval.h new file mode 100644 index 000000000..241a1aa08 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/part_route_eval.h @@ -0,0 +1,62 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __part_route_eval_h +#define __part_route_eval_h + +#include + +#include "route.h" + +/** Route Evaluator */ +class PartRouteEval : public eoEvalFunc + { + + public : + + /** Constructor */ + PartRouteEval (float __from, float __to) ; + + void operator () (Route & __route) ; + + private : + + float from, to ; + + } ; + + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/partial_mapped_xover.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/partial_mapped_xover.cpp new file mode 100644 index 000000000..a55689aa2 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/partial_mapped_xover.cpp @@ -0,0 +1,92 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include + +#include + +#include "partial_mapped_xover.h" +#include "mix.h" + +void PartialMappedXover :: repair (Route & __route, unsigned __cut1, unsigned __cut2) +{ + + unsigned v [__route.size ()] ; // Number of times a cities are visited ... + + for (unsigned i = 0 ; i < __route.size () ; i ++) + v [i] = 0 ; + + for (unsigned i = 0 ; i < __route.size () ; i ++) + v [__route [i]] ++ ; + + std :: vector vert ; + + for (unsigned i = 0 ; i < __route.size () ; i ++) + if (! v [i]) + vert.push_back (i) ; + + mix (vert) ; + + for (unsigned i = 0 ; i < __route.size () ; i ++) + if (i < __cut1 || i >= __cut2) + if (v [__route [i]] > 1) + { + __route [i] = vert.back () ; + vert.pop_back () ; + } +} + +bool PartialMappedXover :: operator () (Route & __route1, Route & __route2) +{ + + unsigned cut1 = rng.random (__route1.size ()), cut2 = rng.random (__route2.size ()) ; + + if (cut2 < cut1) + std :: swap (cut1, cut2) ; + + // Between the cuts + for (unsigned i = cut1 ; i < cut2 ; i ++) + std :: swap (__route1 [i], __route2 [i]) ; + + // Outside the cuts + repair (__route1, cut1, cut2) ; + repair (__route2, cut1, cut2) ; + + __route1.invalidate () ; + __route2.invalidate () ; + + return true ; +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/partial_mapped_xover.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/partial_mapped_xover.h new file mode 100644 index 000000000..23453bb9b --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/partial_mapped_xover.h @@ -0,0 +1,57 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef partial_mapped_xover_h +#define partial_mapped_xover_h + +#include + +#include "route.h" + +/** Partial Mapped Crossover */ +class PartialMappedXover : public eoQuadOp + { + + public : + + bool operator () (Route & __route1, Route & __route2) ; + + private : + + void repair (Route & __route, unsigned __cut1, unsigned __cut2) ; + } ; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/route.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/route.cpp new file mode 100644 index 000000000..249056f30 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/route.cpp @@ -0,0 +1,50 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include "route.h" + +unsigned length (const Route & __route) +{ + + unsigned len = 0 ; + + for (unsigned i = 0; i < numNodes; i ++) + len += distance (__route [i], __route [(i + 1) % numNodes]) ; + + return len; +} + + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/route.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/route.h new file mode 100644 index 000000000..30c8e16b5 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/route.h @@ -0,0 +1,48 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __route_h +#define __route_h + +#include + +#include "node.h" + +typedef eoVector Route; + +unsigned length (const Route & __route); + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/route_eval.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/route_eval.cpp new file mode 100644 index 000000000..97c87114c --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/route_eval.cpp @@ -0,0 +1,42 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include "route_eval.h" + +void RouteEval :: operator () (Route & __route) +{ + __route.fitness (- (int) length (__route)); +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/route_eval.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/route_eval.h new file mode 100644 index 000000000..55ceb9b48 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/route_eval.h @@ -0,0 +1,52 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __route_eval_h +#define __route_eval_h + +#include + +#include "route.h" + +class RouteEval : public eoEvalFunc + { + + public : + + void operator () (Route & __route) ; + } ; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/route_init.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/route_init.cpp new file mode 100644 index 000000000..c3301cd46 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/route_init.cpp @@ -0,0 +1,52 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include + +#include "route_init.h" +#include "node.h" + +void RouteInit :: operator () (Route & __route) +{ + + __route.clear (); + + for (unsigned i = 0 ; i < numNodes ; i ++) + __route.push_back (i); + + for (unsigned i = 0 ; i < numNodes ; i ++) + std :: swap (__route [i], __route [rng.random (numNodes)]); +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/route_init.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/route_init.h new file mode 100644 index 000000000..4f48fc26c --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/route_init.h @@ -0,0 +1,52 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __route_init_h +#define __route_init_h + +#include + +#include "route.h" + +class RouteInit : public eoInit + { + + public : + + void operator () (Route & __route); + } ; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/two_opt.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/two_opt.cpp new file mode 100644 index 000000000..577723730 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/two_opt.cpp @@ -0,0 +1,50 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include "two_opt.h" + +void TwoOpt :: operator () (Route & __route) +{ + + unsigned i = 0; + + while ((2 * i) < (second - first)) + { + + std :: swap (__route [first + i], __route [second - i]); + i ++; + } +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/two_opt.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/two_opt.h new file mode 100644 index 000000000..68d4d95cb --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/two_opt.h @@ -0,0 +1,54 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __two_opt_h +#define __two_opt_h + +#include +#include + +#include "route.h" + +class TwoOpt : public moMove , public std :: pair + { + + public : + + void operator () (Route & __route); + + } ; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/two_opt_incr_eval.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/two_opt_incr_eval.cpp new file mode 100644 index 000000000..ba5548789 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/two_opt_incr_eval.cpp @@ -0,0 +1,53 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include "two_opt_incr_eval.h" +#include "node.h" + +int TwoOptIncrEval :: operator () (const TwoOpt & __move, const Route & __route) +{ + + /* From */ + Node v1 = __route [__move.first], v1_left = __route [(__move.first - 1 + numNodes) % numNodes]; + + /* To */ + Node v2 = __route [__move.second], v2_right = __route [(__move.second + 1) % numNodes]; + + if (v1 == v2 || v2_right == v1) + return __route.fitness (); + else + return __route.fitness () - distance (v1_left, v2) - distance (v1, v2_right) + distance (v1_left, v1) + distance (v2, v2_right); +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/two_opt_incr_eval.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/two_opt_incr_eval.h new file mode 100644 index 000000000..9ee08fad4 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/two_opt_incr_eval.h @@ -0,0 +1,52 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __two_opt_incr_eval_h +#define __two_opt_incr_eval_h + +#include +#include "two_opt.h" + +class TwoOptIncrEval : public moMoveIncrEval + { + + public : + + int operator () (const TwoOpt & __move, const Route & __route) ; + + } ; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/two_opt_init.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/two_opt_init.cpp new file mode 100644 index 000000000..32487b5b4 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/two_opt_init.cpp @@ -0,0 +1,43 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include "two_opt_init.h" + +void TwoOptInit :: operator () (TwoOpt & __move, const Route & __route) +{ + + __move.first = __move.second = 0; +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/two_opt_init.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/two_opt_init.h new file mode 100644 index 000000000..bb4eb0dcc --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/two_opt_init.h @@ -0,0 +1,53 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __two_opt_init_h +#define __two_opt_init_h + +#include + +#include "two_opt.h" + +class TwoOptInit : public moMoveInit + { + + public : + + void operator () (TwoOpt & __move, const Route & __route) ; + + } ; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/two_opt_next.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/two_opt_next.cpp new file mode 100644 index 000000000..a2ec7face --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/two_opt_next.cpp @@ -0,0 +1,58 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include "two_opt_next.h" +#include "node.h" + +bool TwoOptNext :: operator () (TwoOpt & __move, const Route & __route) +{ + + if (__move.first == numNodes - 1 && __move.second == numNodes - 1) + return false; + + else + { + + __move.second ++; + if (__move.second == numNodes) + { + + __move.first ++; + __move.second = __move.first; + } + return true ; + } +} diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/two_opt_next.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/two_opt_next.h new file mode 100644 index 000000000..6c2f51442 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/two_opt_next.h @@ -0,0 +1,53 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __two_opt_next_h +#define __two_opt_next_h + +#include + +#include "two_opt.h" + +class TwoOptNext : public moNextMove + { + + public : + + bool operator () (TwoOpt & __move, const Route & __route); + + }; + +#endif diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/two_opt_rand.cpp b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/two_opt_rand.cpp new file mode 100644 index 000000000..f38fb80c8 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/two_opt_rand.cpp @@ -0,0 +1,50 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#include + +#include "two_opt_rand.h" +#include "node.h" + +void TwoOptRand :: operator () (TwoOpt & __move, const Route & __route) +{ + + __move.second = rng.random (numNodes); + + __move.first = rng.random (__move.second); +} + + diff --git a/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/two_opt_rand.h b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/two_opt_rand.h new file mode 100644 index 000000000..85868d236 --- /dev/null +++ b/branches/paradiseo-ix86-2.0/paradiseo-peo/tutorial/examples/tsp/two_opt_rand.h @@ -0,0 +1,53 @@ +/* +* +* Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 +* (C) OPAC Team, LIFL, 2002-2007 +* +* Sebastien Cahon, Alexandru-Adrian Tantar +* +* This software is governed by the CeCILL license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL +* license as circulated by CEA, CNRS and INRIA at the following URL +* "http://www.cecill.info". +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited liability. +* +* In this respect, the user's attention is drawn to the risks associated +* with loading, using, modifying and/or developing or reproducing the +* software by the user in light of its specific status of free software, +* that may mean that it is complicated to manipulate, and that also +* therefore means that it is reserved for developers and experienced +* professionals having in-depth computer knowledge. Users are therefore +* encouraged to load and test the software's suitability as regards their +* requirements in conditions enabling the security of their systems and/or +* data to be ensured and, more generally, to use and operate it in the +* same conditions as regards security. +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL license and that you accept its terms. +* +* ParadisEO WebSite : http://paradiseo.gforge.inria.fr +* Contact: paradiseo-help@lists.gforge.inria.fr +* +*/ + +#ifndef __two_opt_rand_h +#define __two_opt_rand_h + +#include + +#include "two_opt.h" + +class TwoOptRand : public eoMoveRand + { + + public : + + void operator () (TwoOpt & __move, const Route & __route) ; + + } ; + +#endif