From 01da681c6a1d7c78f0ca8ff85fdfe50a51a5fa95 Mon Sep 17 00:00:00 2001 From: jboisson Date: Fri, 15 Feb 2008 13:03:11 +0000 Subject: [PATCH] Lesson sources have updated to use configuration files git-svn-id: svn://scm.gforge.inria.fr/svnroot/paradiseo@958 331e1502-861f-0410-8da2-ba01fb791d7f --- .../src/moSimpleSolutionTabuList.h | 2 +- .../tutorial/Lesson1/hill_climbing.cpp | 42 +++++++-- .../tutorial/Lesson1/lesson_1.pdf | Bin 43296 -> 0 bytes trunk/paradiseo-mo/tutorial/Lesson1/param | 8 ++ .../tutorial/Lesson2/lesson_2.pdf | Bin 45327 -> 0 bytes trunk/paradiseo-mo/tutorial/Lesson2/param | 11 +++ .../tutorial/Lesson2/tabu_search.cpp | 80 +++++++++++++--- .../tutorial/Lesson3/lesson_3.pdf | Bin 45643 -> 0 bytes trunk/paradiseo-mo/tutorial/Lesson3/param | 14 +++ .../tutorial/Lesson3/simulated_annealing.cpp | 87 +++++++++++++++--- .../Lesson4/iterated_local_search.cpp | 48 ++++++++-- .../tutorial/Lesson4/lesson_4.pdf | Bin 41262 -> 0 bytes trunk/paradiseo-mo/tutorial/Lesson4/param | 9 ++ .../tutorial/examples/tsp/graph.cpp | 73 +++++++-------- .../tutorial/examples/tsp/graph.h | 10 +- 15 files changed, 305 insertions(+), 79 deletions(-) delete mode 100644 trunk/paradiseo-mo/tutorial/Lesson1/lesson_1.pdf create mode 100644 trunk/paradiseo-mo/tutorial/Lesson1/param delete mode 100644 trunk/paradiseo-mo/tutorial/Lesson2/lesson_2.pdf create mode 100644 trunk/paradiseo-mo/tutorial/Lesson2/param delete mode 100644 trunk/paradiseo-mo/tutorial/Lesson3/lesson_3.pdf create mode 100644 trunk/paradiseo-mo/tutorial/Lesson3/param delete mode 100644 trunk/paradiseo-mo/tutorial/Lesson4/lesson_4.pdf create mode 100644 trunk/paradiseo-mo/tutorial/Lesson4/param diff --git a/trunk/paradiseo-mo/src/moSimpleSolutionTabuList.h b/trunk/paradiseo-mo/src/moSimpleSolutionTabuList.h index 9b5a7797f..6cc1459e1 100755 --- a/trunk/paradiseo-mo/src/moSimpleSolutionTabuList.h +++ b/trunk/paradiseo-mo/src/moSimpleSolutionTabuList.h @@ -91,7 +91,7 @@ class moSimpleSolutionTabuList: public moTabuList < M > M move=(M)_move; EOT solution=(EOT) _solution; - _move(_solution); + move(solution); if (memory_size!=0) { diff --git a/trunk/paradiseo-mo/tutorial/Lesson1/hill_climbing.cpp b/trunk/paradiseo-mo/tutorial/Lesson1/hill_climbing.cpp index 2b3833b7b..c34cecc51 100644 --- a/trunk/paradiseo-mo/tutorial/Lesson1/hill_climbing.cpp +++ b/trunk/paradiseo-mo/tutorial/Lesson1/hill_climbing.cpp @@ -33,22 +33,27 @@ Contact: paradiseo-help@lists.gforge.inria.fr */ +#include #include #include +void manage_configuration_file(eoParser & _parser); + int main (int _argc, char* _argv []) { - if (_argc != 2) - { + std::string instancePath; + unsigned int seed; - std :: cerr << "Usage : ./hill_climbing [instance]" << std :: endl; - return EXIT_FAILURE; - } + eoParser parser(_argc, _argv); - srand (1000); + manage_configuration_file(parser); - Graph::load(_argv [1]); + seed=atoi( (parser.getParamWithLongName("seed")->getValue()).c_str() ); + instancePath=parser.getParamWithLongName("instancePath")->getValue(); + + srand (seed); + Graph::load(instancePath.c_str()); Route solution; @@ -82,3 +87,26 @@ main (int _argc, char* _argv []) return EXIT_SUCCESS; } +void +manage_configuration_file(eoParser & _parser) +{ + std::ofstream os; + + _parser.getORcreateParam(std::string("../examples/tsp/benchs/berlin52.tsp"), "instancePath", "Path to the instance.", + 0, "Configuration", false); + _parser.getORcreateParam((unsigned int)time(0), "seed", "Seed for rand.", 0, "Configuration", false); + + if (_parser.userNeedsHelp()) + { + _parser.printHelp(std::cout); + exit(EXIT_FAILURE); + } + + os.open("current_param"); + if(!os.is_open()) + { + throw std::runtime_error("[hill_climbing.cpp]: the file current_param cannot be created."); + } + os <<_parser; + os.close(); +} diff --git a/trunk/paradiseo-mo/tutorial/Lesson1/lesson_1.pdf b/trunk/paradiseo-mo/tutorial/Lesson1/lesson_1.pdf deleted file mode 100644 index 7b9e4d80bf82784bba61a1e0ceb17f28901814a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43296 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 TC+)_L`ONRw

kOQ=Oi2-&HKyb`$TS9UsBu5!uCp7Z3xz zX^u6!a}efY+T4aU(%eHzD3Cwb_XSwPPSwkG3IjpsaV7nOgV&AM$e`wFFSdvKL|s35 zJaeW6t3i6dFM6ewn1tow+RJEJ=1M$?qyXj0mknKCZ&-O zliG7q&ow7sn$&AbBWplF1XxD0faBQU0E`=|S@Bq`+V+>~YQ(?~mo~r&OupblWk5c@ zFrEM)+**3hUv?Hv?&pS0YImnQ?AsyyL+R_T)CI-7DvZsN=?${jF>I;tUo3)2C@Hti zdmBAi@)aYBHUUlW#|}zwlvKH$y*hxO<`ESY=-P)e_=fvI+bWoq2Rhf^)-G_8;OVv= z$?~6%c&qa~M>7WKu}+<58zNT=cD1}EX8c-NpQ2uqN?{iHoBLKJ!Ne;R8N7{A$hh0B z+zH)k)@rYd+Zy5Udy6?#jQ09O0T}%rrOefdX>UTKrlK3+uB& z+$&i`8*^j~T~S0Cj})BOv7J2)BrBO;A5idvtt=%C=@AKa*`Zels8LR{K)xU;!R)S~ zm1Mz~)lvCWZxLRgq-k^UrTMlYX+;8SZf1_1lU*o{f(;edOR_RHDZZZ#A-;^d;wSB~ z1e9EL;LXE0?s9MsK_un}vQ~6vx3CiLZ}*D3^Isbv-(=HLL)id#?sy=p67)sF}7jQ3gB5H_m-;0+d!dcs-KwUVO5*7>Y!FWL8SrBva z7v?4Tvt;vVv(KPwVme<_T4-F&tN)`J?- zg9LefL2E<>rsM6L3>BmimqIKsKC9^U$>p~r{RoZ9H2Op=y4pm_Ua{8+T$h@z)~Ndy z4}PgKn>zZED1|_9l35X1re3>}JUn~;) z;|SMD^U<&BT0a3Ph5Sfm3DVRi!brr2qB9etvaT*T*eFlJ5pK$R$>MG6m&1TT)TJT^ zY-*LV9G=V0@UJ->4TOD?{LdEBrjhsuCT_)jSB}z zyomB(11|2D5SAQ$-ps7yYHoy$e3hzVy4$U2c5x>AZ9qu4q+qis9WSxf?A;Xst5$dK z)cM2G8*Z1c2f!wf@5(hoR%EgDYBOyUPh<7c((0O;M)?iIgL6M5cK4ZMcIUjkmA6u? zRF`TABATfXD0BDhsFPh9?fPg~{C5hEf+I0c578;{*M2XGVNpxdRvfI9;fZJS4*jJv zZz`c0zjL4P8N`NX&NSS~?c}T;L`?DN6o6>y)If|W)1mi6vq|oSu+8^hqY*ZsVI*;T zVpDNX507zQ9^xkyr@sJp-aE7Zci`aofoNl!ZRV4`o7W*HdiE-{e!4Q2vDAia5nvnFQrKnSCh^!$LqA_i(&7IYdS zqwoT(=3}$n@bvOcg4U8Hz=AMgEblqehRMqs8lJcrvG?a2gC z82adgd(#YaolnDLI#(YW`J6Jz2JH;GNU-LzZG*=$~}uP^9xVO}_;SmrZf)&m6v z<#$;8l|K87R}$D`$_KmDM@zMggC`_1xlY=$A#9-py!+OOGK3*`42W=ulCUvy4k7eL zL@R>x3buLpm&9?%NK^=^Zij?Sz1%S(V|7N+`#ui7?u8xhjano?36&`z%-l?&rUH?^ zVX|r`x0*AQ%au6+pqG!4XRf5}b$QG!!~>St6>GlWt0bLC3{L#cQHh(Aj?M0 z6g}NP@K+ODu+UYc%nq-O-+rph^kCgzo%qc_RF9 zJn|Va^tpvklzVY42zogbqub=q#?F`Jy;>;(qnVVTVV6=geO|O%6;ESYm5H^dA1U%S zCAeX5wT*mH$YV_74l|HEjyCH)ZlX-Z)%^_ysK2Jh{X}&c_SG-=xNyJ|79qzUv=Qi* ze~72S1T46~^l~Oo266Bs=p1-`cYAv`F`Dl^M;*A@VS&Z;SRGR&a->M^vsB1Qyq_=y zVY_O7MH?cJMQ-gZD`2Vy_Q#P(svYbyo9T^n=)$5l0{K+QlsT(qx@1~e7kL1Wy-g=d z5|l^AlmrcLOsu9Q#X`bTb`{?Sg>gMz?i}0PAn#jmA>*c48`nyiQ_n(hPs;=!Ae0=OG!4|{3cWyRfwhZZDVKq)df`~FA(WY&-Ma?276viCqWn)E% zq|YhN=VfFVeWG1%#qI}qH7RNUzQA&39C}jB8iQSD<$-0mNz0^$=ZV*z@e{L5<0<#c zmSxr@Rtom%xa@4s$5(BO{~MPDl(>;sE`$2r=W=`In;Ek-1KHp$Q^^5w6fCK84ys*7 z=jztt?UJ|MOR4RT&%r*GE4&#b9+%hr9p=ia(&_F)mq*XDi8aL!aeV<$j^l6#m?}6a zJ~t?~o4geQXlenX#sps&+l--)LK0CF{ya zTCFvkj7KPGTefYq=$mR8I>{111f?0pP2y5xt`!a^(ut1Puim0EuF`!;uT~aiU)7%) z8lQA5FZKpoqV?C;*HN!{Q1P;|Fb~twec1`DY_0)Lqq26;h{f=A5+kAv_(t9H5 zqB_Tz%0<>ulQT(oq^rYg$*AYlnQ61@*OofF&17DqB3X#36%Jh* zvv0j!zR`zewe9l#U=sz`rb$ZBI5la?i{DBwwSfr}K?GZUqIAEu+sktO@Sk)Va~7@umS#iuSm}p|uHKeY$$jxalL4&bX%(etqytKL~?o>O=$? zQxwKj3j-1coC!5ksC#Pact@`=Q*J~`YVY@y(($uzQ&NVD^m7;l^-%~6)r?pv7~@ih zEQ8^@gDrC;m>ZjRW3Ha8CLbwqLo(>?p64h}1DD&p)FJR%259vM=e|U?^J6so-}YRh zEU~{1pX(rzNRegT9%nm}JxC`rQW$PhgZulY@-1h7ic8Z~dvF-vE|0uacie^9j6PGe z7wyYZWH{K5Zj>SwO=h)Ol-ZvSDf(u;V(~>r@58)*rJ}M;aC)!bzs!XfKgs%1uTz{O z>cDrwSHgq7mtET#9Fe&p(M8J@QS8r%eHdqTU+A%wN^lWRx`8}hJerbdv7E%@1%ss{ zHaQS&LNrmLq&u*e)&pk_q=QgY4B72pcUgSq$XkZ`d=JZL4oaow;LO{U-c<+7B;a zZ@~;QT1~4E^$e9}^c#Y#3E=7MPBW4KD}+$kZ}SGtKu%W9M?jf8WayPnA(94)8}MMi z%LtwH=1$GkTcfP2cYyxp?lIyuD+N!>vg~LrNBe^^xU@RNF~*L>Vz_cXVT3^vDo`|& zsEeY65DJ-4uE2d{FLC5Vfdn1D{ktY1%SiY^ccHOK(O^U2{U(nm=u|6lPk6@F^6Dtf zgJ>-9Od(Z9{j)-TVGVW*X+5EuAQZy0MS_2829Ow+oL+4&R3ApZ!a1^JUUFa&55Oz}Tk-jSH&%qH_TQokQ*F3!yhDhI}?=nj_E|a~I&oPzq zrCr@LD<2r5zQ4S_?qt$QX9+2!=_D)S7W_(bo7yf%7kd(W{8Qz3;&N*GFKT`g&1KQ_ z8cy9SHMoRfot0y0R#8m|M(fU8drrze$Kr!zSu9{;QmyMmvL=#W*kwD;LTom#;3mzs z{KSvrRuHbs5CKA@HvTnSTdI%5#)#L0T{u6-KU7*i(`Mj~^FGdTM4-jZNM2LFeEu%H z&A`3I$(@~?N9S09xy+u1j-^aF#m#v~tVa{xMij-H1=4X$O$x~Zku5axWaw~|DTG-;?TmW}*<2Dez5(N2JKGJ_b0Xd+bokBv zz*c-IqB7yv!2{?%3n6=pci+tLYt}dM-Jl9t^0Y0u%{DrhNZ;Ipn-1t7P{dTj!Q9(< zP6xn8#HLfxpln?TQ> z;v+Un8Dzr)m)yq>7L}q&sd>@>lXG88+>p>eae2Ggo%FH;r^j=Hj>H1^5ev_Qen{XH z{9qN!ti-Pu{~6N}q{xi&b94r%HhnEDtOw{Ii23wF!HIRN>OHi>zZl7vU?otmRi&Lc zS@hC_MMI^aq1O=hO6Zv;!~TvArtv6TWTC1tLk8xmLddRfR@u5<^L$`qz=^dH+4*S2 z5ocv6@sNDEFZMT)`c(qdum{B&xQq4_ppDTK9_hT){<0O#5Ez^Fig-_!G1wBt$&7z|TCt z2(!drR5fm0Y+DY6j@vua9=)-(Jy@)G*B4d@dp~AYeZW0$3C`e1&cSrq=QHe-7b|V2 zevRy;S6ntVaTL;YF*TU*f%E{X_tygNh->PhOss=b(Z7DqIFH|l)k^_6Ku;ZvWoMnY zL9*rY&NO8Z1#2~g`(i!rhvKD*AI3}vSxeHse6Mo%cD$!^8WM0L^}z}LOu0_{f(cz3 zqT)iE&Tzu>15`IXFWg=X;wSZMw$MEMJV$ny(9m$Y7g*ti2ntZ1seA)B@F}|Pp_8Wb z0B=?F7HUlPze9)pf^5I3QLogvB21tS!HBdf4kYrNVE0%R8+YanKWqW*D^gW%e#&=mI3S+!eYK`Ub zNGp*Vg<|dMugvTvbQG88guZt8uH#KJMwVTSX4vu6D;#0DqPiM#=?Lp#lI5uz4c=H7 z!tq=sMywWMR&?0pV`+}TcZZUF`fZV8XuA@tEG-tsv3TII>gN=>@bM$2ex~@|S+)*fL_)-ba{{6CA4!_Ca;)dcaki@+zUG;*7RYt=BvH%NcfMB7`a9M_@P@Aj_nN1HYBO zIvpl`h%>;CTzFzWe&iR!bfWcdR3=(a!!*O*+b|<`DYaCS4}3$h>*&m{9oN#Mq!)DV zs?0%d%Nd$kUEbV3_H&%hP%O6E`|OV!BC5WbBLbh`;af$n*>v%0a*g zz&f^wxRbgwg|Kmu&8}W|Ew);ac*%g1kxG$31{pOS-Hm!ug$l(qW4KCD`=D+Z5zDd; z8BLwyWaaMcoAl4Yb;|85FQrP;r#9}`#S3-;OKoFwkD&-e+A6EfDR3Qwn@g4a4=)UC5C*F)#ff96G5spE_Q{+tD zByw@GVZnhQQF6elYAM(6jEItRV=))``FnfV!^KLL&XH_#k*R##xtZ2~#rV|M> zq-~(C!z^5g``wdmDe2C7;;V5q&=c(0B`9H~qgbhjkF=nB|o9L#}Ocyxn zByy96YuE5pLlIwEx%$~e2-Q3cv^sjW)=N)ZS-u;O zew!9dk~iTzhM?j4{^af#cEjy(d@%^4+Ck#l`~mMj)V<_K=6dgB$NsIyx%@%{QdI=9 z6eU?+&?Ejfwy@g_{;VEm#lt%AD>tS>D{?a@7<-s%obAvNZG^sZY5RT+|e#$yu(b{Dtb>I^S)EQ@yP%{@p_#t1poWDlBeC5!9z7qI?dPZGK zPd~vD8N0jGOF=`!z`$BV(NWvlQBgztM}OjmkCHLt@;Y;*sEn*wq@#KPPaQQXtUwAk zDFLU93;JWs|NeJEQEu9IiNJi4WKU(SWHrMA)1Moeq+LU+6DzMW^Nl`pZamWbJLM-zGJ9xv49BqlF3xe=s^AL!R2@=u@9vPgtE%~)%o+Qs0?uwz4hbt)X zqp^q$hgRFg+QpQZSOebPK(b01zL##MFYfKbyqM_#rsUa%_cGyf?qlTONywaG*g>f9 z3#kVU?4$&0zc+6q%w~z4B;@>-aZAIe35V3HmBafdwLIp@*C}VwH`Jj_$e_Csd{7vJ zMfyMSMue`jME6cOA5$$F%GAvBUw5h71L>g~>o^&ImYc%3W$NvdTH>F9JXrC#l$Q@) zc555(T%#>dkUV24ohH&M`bJIajXO{zK)1+VG|_2aUS%MAKU9NtgKE}EDv>m(k2#tN zK&^UNS3S}gpiB;!1n^A3nw*M`N#lsFR)JE=xps+j(S!dI_6QUK%ik=aN=!VJ$VHZ7 z6+_Dk!-Gn{N=(x@o~s&>?lW{x8%3t7+Q@^7jWCj1OG<8DArYViAEo}i$t7tJ3hadU z$@J12rx~RhWjYKUZ4d?Cw_8~OYg8-ihJ5EG(yKgUKu} z+=pC3wN%D|s~4A6P*_JoEc}exbfj@hqlX|6*?4Zm;B65Mv~ZAYZV7zz?e}|=F?EZm z3)i(w>RILD%h5g)&CX*7ek#DH=JadL2({4_F>uF%5 z+h?Xao#TR2_5^OWGptcvy%}$NP1|c603`t>74K@z`6i`hsA)YVXDI0BMn@R_IP4ru zILnkcg#YvI6s~>6x9zZ3+J5A-EMm?s4!1r(-ICwvMj3b4p^j<3bhQ8c+jbt3?4x)X z#a`BBKhj&NXmr}dqB;9~&!B*bh!$UJ7;unpFWn4pTVAEyKK>YT3CWg0PH2uwadH0v z`aGj@(QONTt*Q&6m0okI1{4LU7_!Mc5K7r1@YD!4f&NI@vt1=Gscb>FBM!N|wgDB( z?>B#vOkEfJidzbY5dotQ;V+ts963T}?p;`zRPUHjJ8UyGqc;uu{=F1hI!G5#glWM4 z5rtxO2RWDv9yw86stC#1I}xY*VM$bxA*$F%E&s+D!6Oa$1(lL=2Q^qyPEyx%0l-eR zJdT@$7|Op|<|w}yj)YUrLEbC23`!={j=gs;dQg>`KqgvNmZl{4@N&#X`6FHh7eSHc{j>8}byn3Ui`r<`ROu`~ zq7iyrW2h11OL`2%&E0$4`6^I8dHbN8G)sQhq{GOhKa7bKnxP_Yw+&{Co@tWu` zZCN%fPQ2`B+6BK4xyDz%_tn$DXahfet=}MR+xr!ZcDX$zU)PT`zOBux_fBef$E=yD?ER--d zSC49@N)EGBt8-cXddAVlmHiBjmKBeZWRIO)U$x6?WoaeQ*+neJg&K!V8unQuZ5c8+ zxo(NM#VrIv{6jdfv&%qaneRp(+Z!zULt{6sVQXRhQjJiK&{Evp-d;Yjv@S)#J5n8i z%6`Lm;CQyK4rOJuqpzyX%q52Cm;({oI?Z$=j7I zA0kB*Pfa++|viLCTE|DCUu1NBYC2~c&w8p0TkAojv zX8jLM7#uvITM*te(fL6^U;VnlZSSw=nkU6x`dH1gu1kXjQi|RM>|GKz4jT%T2^cfp zC)wQYi*_DzjBaf^nCn4z>H(0Isf`MjY7avJWNjsuuU=1y0|NTD%jEW6afBQnz+zR` z_r<2Gd?1&Psr1$4B1#fr#Js%nwLFQ6t;6U?`m$Z`Hpa3`+ubMtp3-YEl}Iu|&1FoL zv~7Luv;Zvwnon-HrBb$))fE-ZSQTLsp{rSjKN+j6bBvD%SG>6dl|M^Acl$SH^{nj# zQcB_$u6Fn46bz9p<}_DNEi^S0WLmJrvzVfqzB^{}>QlFJ?Gi0V%Em3oUZ3jn3K|VD z=b6^xe&OTuMG)4_yCb^MPAHaT~R4k z%}Fyze!Gk77Oq+2+P5mzTFR<}t(k0+n~|NPR4n|hi1+nYVDH5-&Yy`zb%%jF1{Nd} z`s}HaXwTB)mqQ|57k|+m)pAP3DD23!!@Na(W9Tm)fjpn~sC=1-!@#R+u&f#lyptmS z-ikX?>KIjh_q}#+ferm+1zUNvx7(#H#lnoX6UQIDjQ0pSaiSf5rxXFntoy1EBLohq zU$5&X64r)Mmm9A(-Hsj4Ug~r9!39Nm3sNKNjo$$ddJ&QyNbe|}y`Rdgk_7_y)DgLF zGq+j8^Mg$xDYcB8<7`+##b9*F$ zg-mRkNVynT6i`6dUt`4FdKbd5SYYBt_sB-m{on3VQH&z@k4sv|iQ-=ziQEMyJLHLY z<}ehZ8fo{WHfXB+4D3M@lpz91AooplZ5`^!tRN-j9`SRK^5Wxm6Z(PVHGD?9emqck8Xz&%5xbj+^5DHqIUASuJ&$qa2~X()6qrlQl~fg zWyy99?oImedTdhBO{m`hwQ@fWVAw)D_mY6rMz|#|%UTibhFPXa=g_{#XRbWG_}8VOHQLWUpUOY}Pq1(Jh=70a9aSQ&=c~&N z{U>L4jpTi;`0D=U`r8qPOhT<@j#ki$Vcn+#4x~pN54s(a9rniLaTq;M_3*38tx0a} z8#+_#gJcqlEsMh*+Ql0!E-s*d=+#g)Ih6YnJC)<4&ZS@Q73h!5%gQ;* zFS(vR?$c?s4FJV?~gsjY0VZ4D5&k_j|(_kIN$L0zH%WW`R+wz@C}lz zRRwwKqu8fTeLCXTKI>~04PLiO30D^iw@9q{AoS(n_;O#q>qEp3$6p5q(9>6(*c*F! ztGjYqMWShCfH^Kj&{{)__`)kgcJzbDM(|}MMG29h&ryoYVil+}N=sr2ciZ{w#gDCS zs()#^oBxE{blxiikYu&C^tx?vTl1PaMY~#b;Tcae(>B)`0lEI;=bO~ zUu_z}D!pG(yjymx-9B3)%?2Oyp{exZtzL5X$$S;Nkcv_@DVrd@tI;NVI?(Y9k{9ZRw!ZVbrJ`CDMoGYwX}U$*0R!=9$9Z;y_&4AU7?@a z>J%sTp=YzorLi? z+R8LFr9eI_cZ>WY`}S9y63Gf8nT`iS$AgWlUydpZWv#|$^`39;A34-5y3S_N*hl_R>q&DTraP^L69@t?8I=2Ogs7V!*Jpw zeDUY@jB4xjp=wsnhVWzBRebtVRd)tNi|a5eF9n}7vR?h6$a2TH;fKG_K3A?mLW`qU zw=J{Ibz8p2v;FmlzF?c(V{5jI`7bEkJB(Esdvv@!=;(4(gHrMERaRcgx|cd#7gf&+ z3Az?MdXr9-P^f=GOG{pGf;MZrlA2{G4F+`G$}RQ6h1_69u}-7_o23N#enh_f@wzv0S@ znK77ePr6Ff9iEb+RI;f439kpAcE#M;J}CciH`A9!OWt}yw)t9LeJf5`nm-2XH0xX8<$>q>BU+8$7-{)C4VICzo2BRcWgK!=d&?$h0K9uw=(vC6B<^r>e@ zUW&6k5z8y-luyBctYu-AVt}{~fDw(6QYTh1fK+56^-ciJfu$5zB^xt&OaT33hLpdjn0cCYR(I92j2^XCje#{&~EWbE{hF+pGO3pKSZE z!YzC6entftA7ReTsqM~;UU5e{N8CBM-i*0m9RH!stNU$wOdTI9wzg%)%D6`3&R&T_ z%g6Gim+hBix3uwznIBqZ)W0)oonWb2!I=#I_x+B9u&P%v4?fshJ-qjqxS^!oM%kDl z`@CBVW@W4Qo$#A4Y*Mf;Ly8{1zkAuD0cMk`XJp~2v1_APzZw0tD(~{=jtmPFhm_?T z;DURW?MS*=)+V@;sXnJHxWo!wx1p}Ar^YpO?WR35nvc}ugx=gg`^58;*zxW#ft>T& zMYe+>xqW_dm1}&Gb_(au72%{0wR8?j_vAE2+c7^KIXzoBwb;=yEg%u2;y=)8V|()T z&Jv1M$b*Nc92(QEK1j&QOf`sG{5C7(Ql#LyF1?lV&CR08%G#eWa|Hwy6LWAlulZkQ zkDVVr(u-2rZM3k%cFQYBw zl)r?mF+YfoYV=0ap4?U$**jQ&hjiSCQK9jGVyEo1zN|N6$5@wilazl}#>%iWBcs@k zM)|z-A*Fy$-`lR9=k7G^re){bnoBGpE%E2P^BSKU<|!Usl%KyucLV?aI@?yExPH~I zGbP%XUD64iLS3WLU-gc!ZMQP%E&FP)^HKL6;qePM*Cl7p4HXJG(+TW{+0Ex`IZB&Ex0f~`LoWB^Oxeiq#KLA%uvqLr;+!W&c7*=-FhJH!^QpHuS&*) zcdMCs^W{fs8q`{SX|+~PH2la(7tIZoJhtMB*TsV8Vn>&#?(Lg*{GR~oW!as6P4KZh)kc%wCHzi~1?D%)tzWZ#UvYnxL^%>?=a;d}p z6i>vnxyk-M+?Xn(_lT`vU$cNpz>-AK!#+8T%j&c42fFIL#Ml%%u&>N0@@_FDlI zO}+IYX@&{sRHaQeN$lH2JDS%r{ZviXBKu8w<$Du8=XWg*>56`kB4qXKl@zhde%R&o za%Xv0JwfTz3X^4<-V*#w-&~GbU*>5}@L#VSp=+t)&Us}+QVLu%))Lfe%-U&{a22^IMa=M_Z@7lmYmPnC)c48wV z=byRrzo`m5agFH7AKrg0H{iYThWcX`?rK3pob>I`X%3{Uk} za(*UUW~^VZY}Q(|c8=j??C`~-!>X}O!h*+&(o$YGAGIIttui~e#o{vmj5U>t*&b2a z?Ue$VX7MMMzQnutMHLBx8G~E;A15kR{tc21^u|TJ+u-uF zE@$PVx9rw=XYbXETutioLGiyRbxX#{5TxWXE19<)RZ`5QPA{y#{>e9Xh4{Cgu0g8J zC1pjeGhvK(8tWAo-H_`MzR{SktoW)KRf>wWaLBx>Pxqd2su%Yx$#34;WX5@+FG>%u zqiiKLJF_&O{QW+!`miW@&RX?H$;TFj-Lp?Wzd=Yfz~%mZ?69un(L=2(JOvt2mV4Qb zgBSY-E^R)2YxcP4!xF{RC%D4IN1Zb-uUS`98~DY@X6Vjnfj2`dd5LeGvgU(x7u?l8 zMpS(jfi4B9JzsJ6P)e1>`d+A~p+%eTO3wY6XIeTc#o|Nq6W6P)f~+q~JxY28H73^0 zc`bDJMq_n)qGC;K?NZC$uJ*9)RZ2@@W{1l8D%`&seX^`!=UkiGX5-h9$JgIB2;An{ z7TeI$%qPlEP!cZi@!RoD!MMJ#$sDDu{{zaQ^OI1AN6*}6)jFk{6e$P@fO-Q(ZXY64@w9$*Y zTc7SrFI-vGKC8cean<e^n`KvIz8 z?pb8M+~5N#Z9!Il5tbO$)<=ws7Wkpk3ey)aF;jOEbM_4YR~nUKqNObwqAM zFu^>~Dp~iwtyI;6gTn7gOAY4D+qdxE@rH*Mj!w?YPh#@aV@}^CI=A>X_qi3!F5O-G zx=DeqcWnJ_%G;7lxqUK=qXs({3<<5a>%Z6O+P6l2=`Ibb(*g2ADzo!oZM?u@zeiUV zj(WFVSrW;qXlzHX@>MN+Bjcy0qf~ACIsSeN&GX1+;}tvXWaWp2h7W4`phQINGGb)Q z`%i`!eKg{;3r=B0+34>%UjFVWih1?!V8^ywSXS+BO-?f(*FpfYAV>ahMs zu8gJktz7wPzgzNV)n~P}jsDTnYkH%fx?lLd-`F$@~x_D@Ka9qBZH@h$xbdW6*q{rNj!a^*_9&&}~ zkOSlmxkDZh2XcX!kPqYt(ZF|jc0oFj0ptguQ|02A&-2Nsj%0kGi?(7*)9aRS(|2dFUxIC2Jf zGJrM$q%Z(xynI;RbPhl>lMeZKIMUf12Ns(SdD7V~EJw&6Ak2Z~?oNYzArpWrKY%k! zFow?Yb^!~pJm`?OGn-C_7$BkRWTZ_>mhqh}Osouy4Yy7p&6MWB;SmJ_GAxCJp)24p zMC>m?#+5E2y8neEu%sy%Lu?!9nZo0P34DClJ>rCo0qjgxEkFdwW%@hS zBCY?~&b5GISwLT0tA!Okp=Pcw^?_|8x}7BDNx2}u3)x_+nXdN62_a9WWD~lR50l2` zSv1{&pkPm=0y_SMMI)Q;e>7+^@w>2zL>yvlc-Wv}gPLa0uu%-BtQ%R zBoqDNG8rTmM#=yn@F%=B+y^EVq>KUWz;A(h5JH-KPjEYy!o3F=aPaz6Fdmr?gP8&> zE_42dGl+2Oe+Jfc&fo&fp2mhaOd7`-kjDgRI0K^a$ z(ivbq_=@e~l4g~=EGKIEr$;#2532lMw*)#_?x;HWj z@0vRe%tR0!nUPCP2EXIDP2is0UAX3D328%KlS~WAQ#;*NT3Kz<(bD~2Y->uyLm<)^ z3OGFOCwGbbH1ChrMWB4Qt_kaaQ8p3Uz}Ij+(#CUjaNA@gf@>t)f$Jtv3|k_M=E*J( zZYPn6$XxIz2?Tpw3!!q|EliCVo&|!nU{u5Nk%(k2Wr8v?4vgiYeBwS(V4W$5=cWh# z9pWeb)bZbYNpFBn7NAoXK%z_@%C`c4$>9Hj6_-Uu?aZ&GzJBkdehx4&{#ZZ(Rbm%@dOg9BT*BW354>%&&VM0sRt0g zK2VS&kkBSTICNm{Y!IPviAf8n2__;JASxfg9AgoiBeUz<(L?a)k#l4~K?M2a1zqNBW)Y2>%D!O^(+5d2oiM zx$(O^xts?})es5Fevmf%2*Fz|^G@auaWmWqK-!7EHV44hnJ+I(2t^mT#!$kW%wQgC1sYU)@Fjsl(wr`3^g;JI^Z9hQm% zRyM7U0ybNx)nQ0D%Je$;_xeB8QStCu8}RFgE-6IHPwQfEKgk{oWc7>re)0E`!BfDr zHNY`}(`A4KqW|e$z+T=@{U{X5blHQkAgG$Q1_cWr@&mtq{B2YMbvh=oR3iMmJf$BF zNBs#KI6MIF^nPS4b-F%qWY}L$n~#ErkFc4#1_cjq^iHY66NsegG6i)%;RR2{f*^d_ zSRkwEdc#wx#OZ%80rPV|0v7WVHV9ZUi1xp);mxLj*qIG>@zIc}O8_141{xgG!~(}H z!ND{d((z!h&@hFW0GGcRy>z`XAJ5Ua$ZF diff --git a/trunk/paradiseo-mo/tutorial/Lesson2/param b/trunk/paradiseo-mo/tutorial/Lesson2/param new file mode 100644 index 000000000..53d46bed9 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/Lesson2/param @@ -0,0 +1,11 @@ + +###### General ###### +# --help=0 # -h : Prints this message +# --stopOnUnknownParam=1 # Stop if unkown param entered + +###### Configuration ###### +# --instancePath=../examples/tsp/benchs/berlin52.tsp # Path to the instance +# --seed=1202917905 # Seed for rand +# --tabuListSize=10 # Size of the tabu list +# --maxIter=1000 # Maximum number of iterations +# --tabuListType=TwoOpt # Type of the tabu list: 'TwoOpt', 'SimpleMove' or 'SimpleSolution' diff --git a/trunk/paradiseo-mo/tutorial/Lesson2/tabu_search.cpp b/trunk/paradiseo-mo/tutorial/Lesson2/tabu_search.cpp index 6cc7e1a5c..df8e6af24 100644 --- a/trunk/paradiseo-mo/tutorial/Lesson2/tabu_search.cpp +++ b/trunk/paradiseo-mo/tutorial/Lesson2/tabu_search.cpp @@ -34,19 +34,30 @@ */ +#include #include #include +void manage_configuration_file(eoParser & _parser); + int main (int _argc, char* _argv []) { - if (_argc != 2) - { - std :: cerr << "Usage : ./tabu_search [instance]" << std :: endl ; - return 1 ; - } + std::string instancePath, value; + unsigned int seed, maxIterations, tabuListSize; - Graph::load (_argv [1]); + eoParser parser(_argc, _argv); + + manage_configuration_file(parser); + + seed=atoi( (parser.getParamWithLongName("seed")->getValue()).c_str() ); + maxIterations=atoi( (parser.getParamWithLongName("maxIter")->getValue()).c_str() ); + tabuListSize=atoi( (parser.getParamWithLongName("tabuListSize")->getValue()).c_str() ); + instancePath=parser.getParamWithLongName("instancePath")->getValue(); + value=parser.getParamWithLongName("tabuListType")->getValue(); + + srand (seed); + Graph::load(instancePath.c_str()); Route solution; @@ -67,20 +78,67 @@ main (int _argc, char* _argv []) TwoOptIncrEval two_opt_incremental_evaluation; - TwoOptTabuList tabu_list; - //moSimpleMoveTabuList tabu_list(10); - //moSimpleSolutionTabuList tabu_list(10); + moTabuList *tabuList; + + if(value.compare("TwoOpt")==0) + { + tabuList=new TwoOptTabuList(); + } + else if (value.compare("SimpleMove")==0) + { + tabuList=new moSimpleMoveTabuList(tabuListSize); + } + else if (value.compare("SimpleSolution")==0) + { + tabuList=new moSimpleSolutionTabuList(tabuListSize); + } + else + { + throw std::runtime_error("[tabu_search.cpp]: the type of tabu list '"+value+"' is not correct."); + } moNoAspirCrit aspiration_criterion; - moGenSolContinue continu (10000); + moGenSolContinue continu (maxIterations); moTS tabu_search (two_opt_initializer, two_opt_next_move_generator, - two_opt_incremental_evaluation, tabu_list, aspiration_criterion, continu, full_evaluation); + two_opt_incremental_evaluation, *tabuList, aspiration_criterion, continu, full_evaluation); tabu_search(solution); std :: cout << "[To] " << solution << std :: endl; + delete(tabuList); + return EXIT_SUCCESS; } +void +manage_configuration_file(eoParser & _parser) +{ + std::ofstream os; + + _parser.getORcreateParam(std::string("../examples/tsp/benchs/berlin52.tsp"), "instancePath", "Path to the instance.", + 0, "Configuration", false); + _parser.getORcreateParam((unsigned int)time(0), "seed", "Seed for rand.", 0, "Configuration", false); + + _parser.getORcreateParam((unsigned int)10, "tabuListSize", "Size of the tabu list.", 0, "Configuration", false); + + _parser.getORcreateParam((unsigned int)1000, "maxIter", "Maximum number of iterations.", 0, "Configuration", false); + + _parser.getORcreateParam(std::string("TwoOpt"), "tabuListType", "Type of the tabu list: 'TwoOpt', 'SimpleMove' or 'SimpleSolution'.", + 0, "Configuration", false); + + if (_parser.userNeedsHelp()) + { + _parser.printHelp(std::cout); + exit(EXIT_FAILURE); + } + + os.open("current_param"); + if(!os.is_open()) + { + throw std::runtime_error("[tabu_search.cpp]: the file current_param cannot be created."); + } + os <<_parser; + os.close(); +} diff --git a/trunk/paradiseo-mo/tutorial/Lesson3/lesson_3.pdf b/trunk/paradiseo-mo/tutorial/Lesson3/lesson_3.pdf deleted file mode 100644 index e9f5bd0a15cf75e0f9499f1b80ea37ab654dcd76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45643 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 diff --git a/trunk/paradiseo-mo/tutorial/Lesson3/param b/trunk/paradiseo-mo/tutorial/Lesson3/param new file mode 100644 index 000000000..d80626b17 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/Lesson3/param @@ -0,0 +1,14 @@ + +###### General ###### +# --help=0 # -h : Prints this message +# --stopOnUnknownParam=1 # Stop if unkown param entered + +###### Configuration ###### +# --instancePath=../examples/tsp/benchs/berlin52.tsp # Path to the instance. +# --seed=1202919978 # Seed for rand. +# --maxIter=1000 # Maximum number of iterations. +# --initialTemp=1000 # Initial temperature. +# --threshold=0.1 # Minimum temperature allowed. +# --expoRatio=0.98 # Ratio used if exponential cooling schedule is chosen. +# --lineaRatio=0.5 # Ratio used if linear cooling schedule is chosen. +# --coolSchedType=Expo # Type the cooling schedule: 'Expo' or 'Linear'. diff --git a/trunk/paradiseo-mo/tutorial/Lesson3/simulated_annealing.cpp b/trunk/paradiseo-mo/tutorial/Lesson3/simulated_annealing.cpp index 3a32ff509..93d393047 100644 --- a/trunk/paradiseo-mo/tutorial/Lesson3/simulated_annealing.cpp +++ b/trunk/paradiseo-mo/tutorial/Lesson3/simulated_annealing.cpp @@ -33,19 +33,34 @@ Contact: paradiseo-help@lists.gforge.inria.fr */ +#include #include #include +void manage_configuration_file(eoParser & _parser); + int main (int _argc, char* _argv []) { - if (_argc != 2) - { - std :: cerr << "Usage : ./simulated_annealing [instance]" << std :: endl; - return EXIT_FAILURE; - } + std::string instancePath, value; + unsigned int seed, maxIterations; + double threshold, exponentialRatio, linearRatio, initialTemperature; - Graph::load (_argv [1]); + eoParser parser(_argc, _argv); + + manage_configuration_file(parser); + + seed=atoi( (parser.getParamWithLongName("seed")->getValue()).c_str() ); + instancePath=parser.getParamWithLongName("instancePath")->getValue(); + maxIterations=atoi( (parser.getParamWithLongName("maxIter")->getValue()).c_str() ); + initialTemperature=atof( (parser.getParamWithLongName("initialTemp")->getValue()).c_str() ); + threshold=atof( (parser.getParamWithLongName("threshold")->getValue()).c_str() ); + exponentialRatio=atof( (parser.getParamWithLongName("expoRatio")->getValue()).c_str() ); + linearRatio=atof( (parser.getParamWithLongName("lineaRatio")->getValue()).c_str() ); + value=parser.getParamWithLongName("coolSchedType")->getValue(); + + srand (seed); + Graph::load(instancePath.c_str()); Route solution; @@ -66,19 +81,67 @@ main (int _argc, char* _argv []) TwoOpt move; - moExponentialCoolingSchedule cooling_schedule (0.1, 0.98); - //moLinearCoolingSchedule cooling_schedule (0.1, 0.5); + moCoolingSchedule* coolingSchedule; - moGenSolContinue continu (1000); /* Temperature Descreasing - will occur each 1000 - iterations */ + if(value.compare("Expo")==0) + { + coolingSchedule=new moExponentialCoolingSchedule(threshold, exponentialRatio); + } + else if (value.compare("Linear")==0) + { + coolingSchedule=new moLinearCoolingSchedule(threshold, linearRatio); + } + else + { + throw std::runtime_error("[simulated_annealing.cpp]: the type of cooling schedule '"+value+"' is not correct."); + } + + moGenSolContinue continu (maxIterations); moSA simulated_annealing (two_opt_random_move_generator, two_opt_incremental_evaluation, - continu, 1000, cooling_schedule, full_evaluation); + continu, initialTemperature, *coolingSchedule, full_evaluation); simulated_annealing (solution); std :: cout << "[To] " << solution << std :: endl; + delete(coolingSchedule); + return EXIT_SUCCESS ; } +void +manage_configuration_file(eoParser & _parser) +{ + std::ofstream os; + + _parser.getORcreateParam(std::string("../examples/tsp/benchs/berlin52.tsp"), "instancePath", "Path to the instance.", + 0, "Configuration", false); + _parser.getORcreateParam((unsigned int)time(0), "seed", "Seed for rand.", 0, "Configuration", false); + + _parser.getORcreateParam((unsigned int)1000, "maxIter", "Maximum number of iterations.", 0, "Configuration", false); + + _parser.getORcreateParam((double)1000, "initialTemp", "Initial temperature.", 0, "Configuration", false); + + _parser.getORcreateParam((double)0.1, "threshold", "Minimum temperature allowed.", 0, "Configuration", false); + + _parser.getORcreateParam((double)0.98, "expoRatio", "Ratio used if exponential cooling schedule is chosen.", 0, "Configuration", false); + + _parser.getORcreateParam((double)0.5, "lineaRatio", "Ratio used if linear cooling schedule is chosen.", 0, "Configuration", false); + + _parser.getORcreateParam(std::string("Expo"), "coolSchedType", "Type the cooling schedule: 'Expo' or 'Linear'.", + 0, "Configuration", false); + + if (_parser.userNeedsHelp()) + { + _parser.printHelp(std::cout); + exit(EXIT_FAILURE); + } + + os.open("current_param"); + if(!os.is_open()) + { + throw std::runtime_error("[simulated_annealing.cpp]: the file current_param cannot be created."); + } + os <<_parser; + os.close(); +} diff --git a/trunk/paradiseo-mo/tutorial/Lesson4/iterated_local_search.cpp b/trunk/paradiseo-mo/tutorial/Lesson4/iterated_local_search.cpp index 0ff328049..fbf6073bf 100644 --- a/trunk/paradiseo-mo/tutorial/Lesson4/iterated_local_search.cpp +++ b/trunk/paradiseo-mo/tutorial/Lesson4/iterated_local_search.cpp @@ -33,19 +33,28 @@ Contact: paradiseo-help@lists.gforge.inria.fr */ +#include #include #include +void manage_configuration_file(eoParser & _parser); + int main (int _argc, char* _argv []) { - if (_argc != 2) - { - std :: cerr << "Usage : ./iterated_local_search [instance]" << std :: endl ; - return EXIT_FAILURE; - } + std::string instancePath; + unsigned int seed, maxIterations; - Graph::load (_argv [1]); + eoParser parser(_argc, _argv); + + manage_configuration_file(parser); + + seed=atoi( (parser.getParamWithLongName("seed")->getValue()).c_str() ); + instancePath=parser.getParamWithLongName("instancePath")->getValue(); + maxIterations=atoi( (parser.getParamWithLongName("maxIter")->getValue()).c_str() ); + + srand(seed); + Graph::load (instancePath.c_str()); Route solution; @@ -65,7 +74,7 @@ main (int _argc, char* _argv []) moBestImprSelect two_opt_selection; - moGenSolContinue continu(1000); + moGenSolContinue continu(maxIterations); moFitComparator comparator; @@ -80,3 +89,28 @@ main (int _argc, char* _argv []) return EXIT_SUCCESS; } +void +manage_configuration_file(eoParser & _parser) +{ + std::ofstream os; + + _parser.getORcreateParam(std::string("../examples/tsp/benchs/berlin52.tsp"), "instancePath", "Path to the instance.", + 0, "Configuration", false); + _parser.getORcreateParam((unsigned int)time(0), "seed", "Seed for rand.", 0, "Configuration", false); + + _parser.getORcreateParam((unsigned int)1000, "maxIter", "Maximum number of iterations.", 0, "Configuration", false); + + if (_parser.userNeedsHelp()) + { + _parser.printHelp(std::cout); + exit(EXIT_FAILURE); + } + + os.open("current_param"); + if(!os.is_open()) + { + throw std::runtime_error("[iterated_local_search.cpp]: the file current_param cannot be created."); + } + os <<_parser; + os.close(); +} diff --git a/trunk/paradiseo-mo/tutorial/Lesson4/lesson_4.pdf b/trunk/paradiseo-mo/tutorial/Lesson4/lesson_4.pdf deleted file mode 100644 index 2e5e51c5596bf9b0034ebbe7e334e07274f6c5e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41262 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 GLjMQtAaa!e diff --git a/trunk/paradiseo-mo/tutorial/Lesson4/param b/trunk/paradiseo-mo/tutorial/Lesson4/param new file mode 100644 index 000000000..91a5284c8 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/Lesson4/param @@ -0,0 +1,9 @@ + +###### General ###### +# --help=0 # -h : Prints this message +# --stopOnUnknownParam=1 # Stop if unkown param entered + +###### Configuration ###### +# --instancePath=../examples/tsp/benchs/berlin52.tsp # Path to the instance. +# --seed=1203080388 # Seed for rand. +# --maxIter=1000 # Maximum number of iterations. diff --git a/trunk/paradiseo-mo/tutorial/examples/tsp/graph.cpp b/trunk/paradiseo-mo/tutorial/examples/tsp/graph.cpp index 92e185704..fee995d12 100644 --- a/trunk/paradiseo-mo/tutorial/examples/tsp/graph.cpp +++ b/trunk/paradiseo-mo/tutorial/examples/tsp/graph.cpp @@ -40,6 +40,9 @@ #include "graph.h" +using std::cout; +using std::endl; + namespace Graph { @@ -70,103 +73,103 @@ namespace Graph { 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) ; + dist [i] [j] = dist [j] [i] = (unsigned int) (sqrt ((float) (distX * distX + distY * distY)) + 0.5) ; } } } - void load (const char * __fileName) + void load (const char * _fileName) { unsigned int i, dimension; std::string string_read, buffer; - std :: ifstream file (__fileName) ; + std :: ifstream file (_fileName) ; - std :: cout << ">> Loading [" << __fileName << "]" << std :: endl ; + cout << endl << "\tLoading [" << _fileName << "]" << endl << endl; - if (file) + if( file.is_open() ) { // Read NAME: file >> string_read; if (string_read.compare("NAME:")!=0) { - std::cout << "ERROR: \'NAME:\' espected, \'" << string_read << "\' found" << std::endl; - exit(1); + cout << "ERROR: \'NAME:\' espected, \'" << string_read << "\' found" << endl; + exit(EXIT_FAILURE); } // Read instance name file >> string_read; - std::cout << "\t Instance Name = " << string_read << std::endl; + cout << "\t\tInstance Name = " << string_read << endl; // Read TYPE: file >> string_read; if (string_read.compare("TYPE:")!=0) { - std::cout << "ERROR: \'TYPE:\' espected, \'" << string_read << "\' found" << std::endl; - exit(1); + cout << "ERROR: \'TYPE:\' espected, \'" << string_read << "\' found" << endl; + exit(EXIT_FAILURE); } // Read instance type; file >> string_read; - std::cout << "\t Instance type = " << string_read << std::endl; + cout << "\t\tInstance type = " << string_read << endl; if (string_read.compare("TSP")!=0) { - std::cout << "ERROR: only TSP type instance can be loaded" << std::endl; - exit(1); + cout << "ERROR: only TSP type instance can be loaded" << endl; + exit(EXIT_FAILURE); } // Read COMMENT: file >> string_read; if (string_read.compare("COMMENT:")!=0) { - std::cout << "ERROR: \'COMMENT:\' espected, \'" << string_read << "\' found" << std::endl; - exit(1); + cout << "ERROR: \'COMMENT:\' espected, \'" << string_read << "\' found" << endl; + exit(EXIT_FAILURE); } // Read comments - std::cout << "\t Instance comments = "; + cout << "\t\tInstance 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 << " "; + cout << string_read << " "; } else { - std::cout << std::endl << "\t "; + cout << endl << "\t "; } buffer = string_read; file >> string_read; } - std::cout << std::endl; + cout << endl; // Read dimension; file >> dimension ; - std::cout << "\t Instance dimension = " << dimension << std::endl; + cout << "\t\tInstance dimension = " << dimension << 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); + cout << "ERROR: \'EDGE_WEIGHT_TYPE:\' espected, \'" << string_read << "\' found" << endl; + exit(EXIT_FAILURE); } // Read edge weight type file >> string_read; - std::cout << "\t Instance edge weight type = " << string_read << std::endl; + cout << "\t\tInstance edge weight type = " << string_read << 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); + cout << "ERROR: only EUC_2D edge weight type instance can be loaded" << endl; + exit(EXIT_FAILURE); } // 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); + cout << "ERROR: \'NODE_COORD_SECTION\' espected, \'" << string_read << "\' found" << endl; + exit(EXIT_FAILURE); } // Read coordonates. @@ -182,11 +185,11 @@ namespace Graph file >> string_read; if(string_read.compare("EOF")!=0) { - std::cout << "ERROR: \'EOF\' espected, \'" << string_read << "\' found" << std::endl; - exit(1); + cout << "ERROR: \'EOF\' espected, \'" << string_read << "\' found" << endl; + exit(EXIT_FAILURE); } - std::cout << std::endl; + cout << endl; file.close () ; @@ -194,16 +197,14 @@ namespace Graph } else { - - std :: cout << __fileName << " does not exist !!!" << std :: endl ; - // Bye !!! - exit (1) ; + cout << _fileName << " does not exist !!!" << endl ; + exit(EXIT_FAILURE) ; } } - float distance (unsigned int __from, unsigned int __to) + float distance (unsigned int _from, unsigned int _to) { - return (float)(dist [__from] [__to]) ; + return (float)(dist [_from] [_to]) ; } } diff --git a/trunk/paradiseo-mo/tutorial/examples/tsp/graph.h b/trunk/paradiseo-mo/tutorial/examples/tsp/graph.h index bea04b225..2fff03688 100644 --- a/trunk/paradiseo-mo/tutorial/examples/tsp/graph.h +++ b/trunk/paradiseo-mo/tutorial/examples/tsp/graph.h @@ -41,14 +41,14 @@ #include namespace Graph - { - void load (const char * __file_name) ; +{ + 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) ; - + + float distance (unsigned int _from, unsigned int _to) ; + unsigned int size () ; // How many cities ? }