ࡱ>  vwxyz{|}~`!QECdl;9E8iP\5Px̼tUǻ;{HJGAA@)6"WA"JE齋I/!P)Ro$^nW7{7s*\kp?R)eoSͭR7t;[+pĿ?*u޹z⻥Rf<_Y󳐽_>P=j{D-ZTREU7UYzN1-T!uwJ5 ڨ'vj@(褾 jOK]*o@U9bj1\uD|6DG|D#W"g"vWu`2E5: _fm5cfh˼l:oFR3oEטV3e^.Iؿ` ۻ$#h[|׆?¶/.hK%aDV*hJ$%AD.i?h$dPE[>QyO!^G5~SvY cnDt7xBT}ȐT jk  1UԍX=1Z>ȬO(#6N?sԻ;O=U]{]>UtJ~[񳪗I.nh=m}6zCp@qETW4}ˮk Ϊn*]Ltԫn|Kc5=zS4aۏqINqJqMyHyKyNHQ8*To}ڎi6ϵ~J!0knw7&mS%|` Slebǝ$uknj^BJ+O1/%Uȼ TA* Aoû0D3}8ә:4ԩL}Sz:ӚZ:`TuLTLETЙLyŔYM͔9L)ӔԹM M1]E)KBSX 5C(mG*߾Rۡ*ʾ2۷TN;H巯v*m_WlURٞ}Z=dR. Iu31JjԘԕԒԏԌԉԆԃԀ^.MEפ]E9љhK!щhA4OɥQr(I$g/ɕIr$H^s"yK%W/iRpr#rMUG RQkQC]z0EtހTk*?^&r/^~ttD9:dzttFwy.ӕnEU"8U<taVjѕСGb@+p{hM3hBkf]>_CӐx_ͽtt{TSS7TA :hK:CЊڠGݶ=zyJ7\lsY5] 7w&hS[s~5;HM5t3^ͤgSg81Q;?P+Z4 4ʴPa)5ZXDM,Dlj>:͜ jh4:BM&'yxIM~'P8Ǜ8j}}eFt+/<VF5Ƙ=pN@\|n&D/MVX24 |EqΏ#vCzi O诉$NoLo=N8ż0ؾow`j<3̧ygfcƓm^`&E[L?zW9y^H%m\AB}04g PjC-JMv$t!y^ۇ3B!ỵ!>#tGS^B>gn(X0aPg ( 4.,6ֲ\C9|WY+e4w$q(ALC1SP1?#yJ .OM&pW]l6:,"S<1y ]Ck^tY1&cm~UVl5C}|y83o<56s;qsi%Ν_GՄUpOibk3TK=N|Wm6TU?_wvs.yr١Ox)~hs''{[#Y=ې o]ɝ-wzˉ}47g9Nn}v3im/3-ўv/bx+;~r+3/ְmuMePB=ǶG?}qv'~ ~0I.nНӐ 3dTf6NrsB.*YMe y<oɭQr%%jK6dTbN%9H.$8Kl+/Mb%U Oݫ#'Ɗ<P"P XZ J2P p7*D2TAUQQUTTUBau:Ѭn (FQyU2D(, H z*!7෬͈w#XMDMPe"+j:(s(i1HzatP *C jաFHg:eg:@etc O5nt4j@OxzsHHQ&dt7!ʣS֢SD5:ݲT*tP * 􀧉Gw gK YB)dk !FA:g'J }ySp7퍂{+N|~{[|  ։;[5nYIߕ{A9_^fĮ4R};J;lM wgdDW=2BuMfdNY;7x ;ӱz쑌HGŐj=SVIMU=䝗9TySGn C?E w_ܾ5ޞi5R'L]S5%TH=S: =8s1! $1Fkd;nOlkm=mK#6\I^_O/B]ӌpԇAhgBc M+4eהŦ&|=>.c:j366bF=D}JQCigBr-ɿFz/w&AOSE~ny&Jrl{}N캹ɦ1<`C=&j0:sN5֬ݟؐ҈&@b&4LWC.J](WUHSh͡EH~2$CVxk֣kX)6&w[IdЫ,a4kd35XzD7WB}b 8G*_(VOl;d%_ϫ*gmL< ϙb!Lq)z!ϘR!=Li(6eUwSʫnOwt5CJ!He #6]bCɏH0"eU=u 9l@# 9jj3ա:1*Nig,UI(e2jHY(P1w!m͐Jl@ݐ*^ȡ"aDӇ>#~'o)Mb_}{ԗ.]7QF=%=+!'paQcX)%GCkkFqD,V_QI޹Y50XDAcV:7YSed TuGy@F/¯ .零 W*us pn-P"Wʂ| R]@Ztm%2B& Y +dUv9!BΪ<(-/xT BP؊wz\WNE 3%uy]-ԃFИYc$zXٗtag?ֹ:3:i:}<*a^d׿yN3=YCSk:1_CGMKhF 2j#U;bSs9gq=No8&r돡}F1]}$||8{]:`:tAtU*U$)Ŀ&P&HL$%b)=ImH~ F7~m# ζ])v}6=lsha ii{ڇamh 888<\`EX{^eW \+w;ڌ` Қ6 6ۻB.T! E`}sA3p#ZÌZ24f+4e {6a&[cSclk緩wɃ^b[Ĭm1>#b[R[tP)E]Q#G5ZdNhNfdlBStLX2@ztD:2mA[CD[x跂b?uBSpΆ4qp·4Bڋ!!͡-%<Ç0>#O+|Z¿X[>c[[>Ǧ{.mx9o|jbA3=@l-i Avo4a&٘ЈNOH,7?I|?nWlےڒ| 'Y1È0"<qa8"a|X:X` Aa(pn26Cb/!=;3`'Dϼ~ f;lc6rn@Q(Bzvn!O#$A|^ K2f,gފPH ) E(܀p Ym+BYb2X?!Ya,0?Ěy0sXgka!7"zv967_χ!BX_äR@O ) ).(܀pe); qf| oq!|ck1fL6Cңk4{f0{FcטP@_bX _wraOHZt 1mCQ2!O88!99 YicHZ 1m(* Ni8g#1G8su5ϳy~аpGѰpCq,fv)x/=DA: ̋d~ZJ˚iX;ޯ 0I| Lf씐tP|NiO5 9zY< ^ϣ'Mz2aҷWĞT(?_%3v =!$3aKK}KMK-K '֮Ԭԩ;{BB KJ&֩ԧԥԣԠԞ[|}%VTXKR?Ik& mIuzԦ@rwmkjgjoz*8t֭NB7{ga^? krϚX_mzd]Z Cl5ԦU`8#C (| a 󾀱0D-|3f*Lct֚3m$DY6=dǠtNyۅufW^]ٷ 6tQHxC3o'q2`ۅgm>Tgd[Ķ)1nLCJ_PM9̡Mr%H$H嘄Mc#H-!Im]mϟ7<ЇةЗ +a0OM 06Uf UFE4^J/mGL"y/qOtұn:O>/5Q#%6CZlN҄} = oA0N^Wɚ=_Ǽj/r?_Zɷb l,w.g h]Ͷ5m]vmWԍl_׭@P~{Q\dԯz)c=yy?{\Upwy:2n1>pH7Egqtn7^v_s][۹;k{{@qt?WM]q\6nwũ]zP.mU:-SBVZT jFnㆨjnUUW *"]og-S]=T}Z䰻ͼ^K|}7/GӯAht0*]as:WI^5U#P5T}Nձ[UMKUTe*8U[ ȹ?j^эhF"ZFD хhB Z$ s.\K%ǒ_ɭUr*\J%I$_+ɓH#HN$ Ƀ >a%oYb,J\%OQb(Kf}lȫrK>ol_5[Wj XmwCzmGضz}LbП'%wɼ7Y?gmo7z l6>$yu릝#ܓ:{BGt&VgsuN1_u.j貮.*2"UWҕ]^]U]f몲*_UEZTqUV~UQE]4ܮ *۠r*[2*Ҹ*Jun>a=:hgPuI;MSA Ѱ 6>_θ%ϼv.Iv1GrNZrlI&e'~NÜ"{Zzʹ|:g&>N V}a#z.D ɹYr+J$WɉAb/K\%?Ib#'>ImO3Acy&g5KDgY"ys^.=D{'&W宰 nTM?p\}skEdG;O!sp*檣|˸3K̿:7XOsT*ԖƭGiTFMCp;U."@PlZ̝EP%U]C7U9gu9Λ. 223P)KrTP%*.j"BTV25ҹ%9ڑt*sv )}v3E Ga/D6k|~d"eLYOtq綕Զ7F}8.`[K [UNfKѽWlArr OI/sE/хhA/9y;\c=BF}ܬ2\}աy\U.Js&G;Qrn]eLD= @k ?C_TAwZw*;PY99峻drgs ̦#_vkUwzE7uJK8{PF4?&XKsXg]C'YGGIM@iccϜ8tcbPy8ǯtt?xڸE'94 ?0ԋhDt!ZK%ϒ[ɧP&HN${X*I$N@_?IHjsYs3U}GpOέgs*HC%w!^D# т_r.yJ>%7ɕGr"yK%WOb0[|'#ݵ|CB g6TVnb~vweEƜG Yi>2`zQtq]t_^-{neъ殢 7K ]z[Anpt{âGΟ::HjB$7(-驇 E.$M6W8P C!>.Ŏ4<<B#hLTN NYG.4\DP?2jz%z6V?ϣa'sv2w͠vDUt}N ÍP[E2`C#Ø;FBz!+\1/?"P}/F3 6Þ j'u*DSϰnmכ`cXżn.߬|%LNh~tшhd ?=-BlIi k8͟L}ͅ]#qXz.EI)Dox]IzDO!MH:^D# т_r~eDbQˈr*a9V [m`%; YM_Cu$/@ Dl-Q s SՅDa0Q*wn{ᷱx2r> GvǾ1}NK,>[,>k,ي夈%ztX@j 5Y 9fX3쫱Ac¦[J88^ahvOV¼Ͱu6^`-{ k5vƞUضW` l^a9,ǧe 2+yNiGH_\сZr*yH%OEWJwEXw7-"P ѱDATR]D& eH XV(bX+Q*AIkQ:<[6Mx%Qm߄62fc3o=ס5נ5챚Vj^ jlZmj\bZ?'m#>n *c['s%^#KT9]&bwPqk-uW*ʨ2NN1a=r;pqS=g<`=!'X6XH=r#!GCpτ9>ZXSŊQ<#,`5xpn n¼bB` `&̀1GSYk*kN =*\?Bq!0fl{\Xa>s5BwYHg/EֺȺY"\d_7츄Meo띞RRR{8UQ؄z:aIImޑJ֛ԘWZaHH}Y-~pX'RR5AjAEU=K$h_4/ZPץt,kuvOet+ FEG]JZfJTR-/Ps2G][rvW*^eU{5 6f~soe mmI-w_?6?-1?>gض_e!:2n1>p-H~aw_+~5Wٯ \I+py.e;4~g >^t[ p?z0&z _a^?d^7x\Kkv UJ^WΫJz\Q+vy.e"]/p[6w٦l:/@4lULw67f\6S7^%l9ս.6F^+knxlշ=[? y||#1y" ;[nD3ъD4"m.Dт@40sɷZ,9Jn%SɧR(9MțL%}>ݽO3ĽK^ k 4| !o#G_ :N eE4"-H%gɭSr(y\I~$'[b,qXJ$f'Cb ~$~$=|c=L 0{~N>^#8{&bP;{߾}H=~l{{gƗde}vNT26^8>-"?v Y dQ<|E m|˸3K̿:7XO<Bmiܳ(~Žp\D0/ -R "}b?A{XT<+&D|&CV:̸ɼ?:GX/uOY~e7Ga㧢:=ڥo xB/HU|F( hx-`܏_ļ̟iSSmO|Mg%5~F.$!OG$f{1Ho+z.D ɹYr+J$WɉAb/K\%?Ib#'>ImO7sYi7 ޛv+Awz{Dr(gp΀6hƒ8o.{cUo?D_FXE6ٻ]v=py N1>y;\c]^RHTU&wz9yPl>v[QFZ+έ[DL)0Ͽby! g!;d*g^;{Pݽk;B읢PGPѰ6:>_Ÿe_¼̟:3l:IOڋ!Ľ?< $ogyN>$o߿yH~0$wz.D ɹYr+J$WɉAb/K\%?Ib#'>Im!v!@*ou5nlen} 7gO+hK{3ú d+wKTkd𺷘^6ͰaCpq'yq̿:X GsD,wS]> Q?"#'kfuFy+D^s*,z? O`XƏag:#Yocg0ž5x{cKv>Ïg'~Ŀg𳇷@4lͼ /eb/`7uq~ &,13xD"{eAFQ37<%7[< fwHшB K%OɡMr%H$oUb)I$6-1᯴wvՍ#_0Fg/>|F> tn]Dwt· :wǫE'{[ܟn ryNXa ?<;s ޢ{x>83S,vt} 6];'|ن_[a3l!$[Ц2 ]q>\$TN 9gQsxG. `uuo%5Ra#lF[a3D3n'svІ>=Ï%_q0]OCmV?È0:P;X?RX+a5:Ywlf췙}0{g/x6ϰ6`5]+ ~Dϋ<̧yy>hRSķ?q@_{^E-67݉:}Lv uySMB6EAѝhv}tD=E{7јJ$]7)]?Qg/єH#zY#C)]?Q?C4!:KWSM<7BXy\?r), YIEXMgPk횐uD`=lR6XNj D~@l7Ppo7x`7a^~8Yf#+Ŏcs c1}O ůXX%cD0ΆY0f0~:L}q:qNct(OG&a; ƾ9{'b쟀g<~ǿ9xOe@&m"8~M<'odb=Ke*Lk̄Yq6́ y2d@r-9In$gKb"+v%;tO BDg+Cd&)D[";}Od0̄Y>|X a1,`)1w9kdUא쵎}׳:2j>[ +3g)sXg ,fͅ\a&̀avA|ķ _7~wM̕xI$.sOM }*nnMCSU)(S~>*QIQQQYTHÐ='X+'X} ;pwCQN8 xO8+grgC۫XF ܄[bfB u B`.́0f7#DrCnpSrv _E_v%Cp8gQ|>B8 8pNI;ɺ'~ސ< 1p9GCp`?u+wm~ fwL?̰!3ă90τyϼn Yszty0:l3a +Lc05/K _8ƌgxN `6́|&̃0wk,`-a!.l Fg2~z)+dLg0yT֙zi uAB>.&Τd~J}PoRg%ZP;R73jECBjBAt "u_GjDX7Aqѷz_S݋5>;ԵY,ޜx5*ܜŔEnEZS4)Z DwzKt5/0LAY l頂TޠmԴul۠4݂FW>vPaAaێ ^/v\0~|l'cD;5N ;3Xeg!:2n1>pHuō r/Tpܰ4pFn@=vv[u :A7P5z{>VU ^t] pW\j0p.Iew>n˭{%~777~;7oF-(oWs U{/s>~ˏt{ڿemW?vcGs3%|>>g'^>/vCwv~7Fv.ە~iٽ~e{دhOE旵Km+͈^D+шC!MD @|üK%ߒkɳX+JN%KɣP:!o3ɗJ$9Hn$/ɇB 9~UsZ,1Jl%SR(1%]ʿNMD}lfyP-`/ ˶r0^u~mmڦP2a[#m.>|a'IK}*f| U3Xn FxD^^c|~qqȼ̿:=8DҸvAkdrle5 FAא:A W#(*e]+C6J.oPAU *_Wrq~EZ˻C~Y/v%~QLn ~^VR?r 4n|fe~G}럴ScvB4lϗ3n 3oOo珳 /Pgv]Ᏼv?nߵv?_2jy/_e| ӿ\ыhDt!ZK%ϒ[ɧP&HN${X*I$N@_?IHj{ʿNW=OX"yoD],jv]N6$+v?.𧒱¹v,hg+f-lt< fQ>e_`%`=~=T qPZ?#&p\D0/ -R "_Ţ3(_]BWr&2@*#!GP偂TMѠ+I*\ՠ {0/9\k2&HEuz@ 뫶Spv.Pgl 5? `73m`},Bw.3ζ>m|j >twmM|-[Ec ^E^Wl?]?eVl\ыhDt!ZK%ϒ[ɧP&HN${X*I$N@_?IHj{ʿNJQ n_l6EoDQ,nɡ 7wm]K7?ͪI06 &Pd5k̰rʶ ǂeUds&Ѱ>a)1"gkwu5ùfMԨ/~U&Ws*AwgBaԛ %g s*KJP%M8'y1;}"G?t'Cet{n'~OOEn=5=%]_NHѿNQ1p5Ѱ6:XŸe_¼̟:3r:J:j΀u63~7ONnxQ: ={?[wMn oYKyE4"-H%gɭSr(y\I~$'[b,qXJ$f'Cb ~$~$N;tug0jO/)Głn-| 7gO+h_ںW ^7 &xhׄzmFj[UKQ nIk`j !>?ws}k@4sW]4 Q?"#'kfWj(ͨ0OK*#+;#TIO M}OF)~uNNԽh\2:5k3&jY+6EAZK=Ewx}m ut~R~Dc+ђG4#:mܮxl 5"-H%+?Srڿm}Xq/ce6=Ϩ #d YҬ_Av5<'Ž57U<ռd./GTG磊|Tq>"//kdCs> ǰǮ'vXşXſX2KbX2K%;Abx⍡CD/)^ qn\H:YAN`$v$;?NGVUTDZ}C8AĆd!8 G(380''Xk4O8aá1s?KoVxNC*a P@҄`XCR"JT/ D+M.38+TT{l+R):)z)))uF~)]EG5n-6A\ຊ\c^EX6x&l8'?4°6A7|]Xpa¢Q6YEx/L,<&6}4)Ș f܇/1^̡7szS5^( :*VЯPc+mڜvƠe 0=F 0JOL0N$$%NpNO'<ˉ V71cdCBj0Cdl*ZU3k %X0#P:8}'%&ѝ]M$~=cmBj0CU4he]Ag8eUT6K1=˞2)g_c*Y攷ՓIYR~,YVB;/ώedr</}Y|ݛ{Ӛs-_;so=n\wZY[5h|)?ʋ|ou|5;qߗ8Q6uojYcs~3/BKapG w%>_-LL|+hDuz[m4woJgΦp)<.Gܢ? 9O=V8U,fR>YlS)~Vp2ݝn;UhʝR~oj|.P%ܠ-~cp-*׭ :my{vl}6[R wPf ?`m uurXƽ5_~.5ؿE~>sh9J|"NӲҵzOF[`!DK |ZfsKLxT;xw|UŶW! M)H Ԉ5D )RsEbO%zQO`"E "MN~}l>gf>֬YkfFŢ -Gd[<-)%Lǻ?=q[y'>fhoǷf6qlHbrm+~rɝ%ncN(3'tϵHTr̼.M g0gY ]AAiC͵:p)N?P?>I]ΣGẲ-#8qV/ܶqAp6k ݯZlkN!Lg03SV:L2|AӖ0Mb^y8 T˙DAE\ˉ%N^$[ q[ǣ$;l0Quc4R6i%A\ך$YY 6 h3 h/I?+}%_zJkY>$Y4KS7 tQ^9D:@yJW:I1r1nxPpq9˝lDR\BV/Z;C L`8q-\g7Av5]F!G[\"5ܙRMPōEnMnIB.op;<)yPCq=Oڱ?hC(F'@Д Up]W!tְZ:):Yxݭgdf$'Ծ JEJb.(`ɖG(moh4TDȓnb|󩤛u3}=K#2FGhm}U<4 E4k2kԎ:Sh4宖nm [CnFǴ_ՎQvVNgZl}j3ҐWc]H'j(_^^[;)ƺیCf&Дy}vrjU_ۙH=QzJL9;y;l46d/Ri C$luA>TnugP[K[ZM+0,~}̅TsZvRIC&E}<-tXReneM? 5QJC5KJZBY*KtTWX}XzkLAH|Ε)4[mRnh^p)̻=nclSE8&?vr3NuX;r29&?WpX(ܷRT/@uھ_M3TWKTBھ_ge T1T@qؾ_cYb~>7Ol/fP b~Vjw(:~*-Kj}(^eKu=TCu۾_'U)O맱:@{) |OBm N8:,xap98!yHVK$K'e2'`5% ,[l1!nzO 4Y㥝h+8/bBE-%74 x(ΧP nZ1RXJK@ǿyݪZ@Ue'mn.k'Jgi) 7u- CH"՗i9hʓ7e5C*uqFZRy2rS} ) Dr+|,=a-ï[u B-Ras JhO.)\F{,Օ+RD/䂲zk=T}Vyn)9R> |({@yH{,]Z*,} _ZѳC]>rf2J;GymE%t;G w&.?47y/|Nϋ}󹕓 $$K;gر?ʭ})CR1j(ϐi2C2eMiر?p6Onйڱ?ʍH3qZ+tر?M6ǭՎC; hZčh7'O!&'lƍu3O,ou\]ƕE\} 3fD^+>I8VVx8<4姜pg;MA͜ȉFKMUp` GǼY*MF,JŤMzȔ$O"J<<<,v3̠Mf<-7?9´lӔ84XO M`x}P̡_u9f.U0KqhE7VhHS_e{׼geSZ;jS~Xc6ڌ!IZYA>ʒ{}OU>/)L?ʽ1.Ӆl(/_Ṛ 2#坴w>=3L xڱ?ʽ>w] ƍَQfrY'8= 0)tkYSqg>dkәqH@>q'u}Eñ~vų0r Ny  ^0  F`  Ɓ`;t&$0LSA"o7`ot4l屃fx9CI%O4c/籏%A38DxaЎ8N|> N 8 ΁\p\%p߹k  p-`)ᗥ~ށϿ_1olfy(3t;< ~$r1 `DwCq ; ʯAspQzT!e0z>yee0 j*5e@mY,yk*Z\Ep8 ΀)p8t-`(lZ#0: ,AAKs bnA11 D E1 "6A(X bĮaֹk^/@ n!/n!?'ȝ|w}|뀺QT Genȗ=`7vll[fh~F`{>Z>߀L's#WcΫ0UW`%Yq2o\#s:❆!i4E*j.ZKERQkZu@P[Tu@7obKŞ/{a*4( 5zHG #""!ߗ!ߗ#ߗ#Wx\_!Wy\<} 2L r r-rX|d6M#،zm`;;N 9'p A+#(l ? _N ;q\ps\ļ.a1+*p yu:v1XDLo"7|:1Goana=nam FXY֮Xug! Yȉ,Fr:o?8 0(8&)c8paR4:WkO.@0!?q1Q`CcgGzz䇪[~)T|Wwm&7 |_Wq-kT\:dNW0{5\F=\z'~ `P1QaF6idFVidLB &c bKkLkfN-Zd.t$9ـz毧85ƨڣ 0keV ԐE TO59UWB"y5D!{=!&>ط{:LU9~j_7*,**PuGT\nd7?F4ɟU3Z/N+ЎIu AIYdV+ٿJΞNb~ld?6:+;a&fa6|58YgMxN]`6c bZhcvbZ` jٍ}fsكj9?[ykϯ`qtIgtMgtjItKt XuX5xOI`!`Pӓkfsyg{gwfJr*N'O8eS!v^8/>΍3Wq$3yp 8F8Eb.a q˜2)WRJ' U9%R:P,D"C q;ҀF4-hEڝ@'Ѝ$D/Џ b<;QaH nxH dLQ22e:f娐T%d Zf",C qՀF4-hEu'n &c bcL3Oly&Ub>j!."@-P-2sM3.u;j)ó1 ZpEf\-6cjg}s?]CJ3}U$ӃntKM':ЎVzhB#P8bCy5FP -Wi&2+UZfJPzYWZl "S@p>=O_?ѿ>GO}ܫ>WCJ$xgp@Ӛ_Uk~FWkavAwzw>zw{^z7I&$wnMл=nCлn7Mn;_;a>n6MhD?G1>oe(cZ0W905%LMaj ScZ0k"'º"/:(kvÊ POT5Ո&4բ(#V#>B>F{G11Ʃ}ǩݚ ꟠ jAwQLyDX)dLTLty|&f٘geccyoқh*Jߦҿq*Joϣ{k.w\|kw k65w1jQ3k阆?LF &  +uonpmn.JvVq*r/w~>{}*Wx͑:+`5cyOI<k؈g,6sجrd bsnWy;k//|٭ dB٧ dʗ_^}Uk*G^:#om7[괼:%#AR'0>'G"Kc'>qK?8 |I*GUQyrV\֜T *B1Jħ(E? ~'yO=|WxO81x="e,s2gaOUJn 6@yC7Q){UƞYA*g? ֪d*5ZAu+8рF4-hEсNt1>?^2L&LdLdLޠbCQKX5F^+Yf{`^ ғAz3H =wUNOUAWV%Uŝ`#j aDK(~ hDтVDу/27fﱈ{Tj%&}sK|BFx6{qq\rOyu s6^'-$^/׏Đ| ވbLS򮚐w1oM7k^k3oy/y)ԕbc7 jy;۰[f36Yx˒xyGq<>':db#&<؂؆؁< f=؋}̽/c^W*5 dom~G>|@Nهd!~D=@ $C!{s=:QJT>AԑYфfkA+NV:ɳ djk\K}jm?Z;@;(bflVlvs;Ks?9[}dm$s+X@;Ob?'䴏>>2ܫgˇskQK]V5PYΰ3f]٬/ufl֝!<%|kY2-UKgsTYR9/W#OVV Qb R!rTU5EDCh@u/߿q `! yz)g؅Եxw /E$ xڽ]p~.E M@`A eu"(%5 +R,h'TF00 ЎvDVgX+3tD͙h Pݽ}woowa{ iőh<_,-6U -w=? a핑Yj5!S/x˽#D`JQ$kf"X4;YG[&ܸz֯jFӷ~5md3S.iYq|%ř(:|=8[{:^hȱ45 aK4ve]dMwo|;(_|}o[ |/` Ww| ~o["]ḿގVՎbWuI T%("&1\|IŗHߖkI~?3Ri:WnkERJ ;H$Qo57BHk!$VV-f^tJ_glRauϹa_/7f?ҽTMi7i7z׼C5(9_:BS_:BH__S__S__Sq36fJ]ұBba׉9V֓erb-D9@a-D{J*8RN`bL Oo#Qxzgޱ^TQ',:Xtkӻ-6I0F6wdCJ45Q4%5fR.T?\`|5O;4xL"wZ&++Ymk|M)0>KXe&z5+c?mMT|]]`|5쪁1mi`>+0>v5bt$x6:v6]î2ƚcޭ٣|ekXiXmg2`>}i0l|]u*Vs>ꔏ(SUZ (>N`^-9L|>C|}CuU>CM|5>|WM`&>?f>7-n"VsT7U]#`NX^s^V3~#b惍o%p|+Y"@yS}i|#:)9&i1=#d惍8[9\&>?y.3l|ہ[H䭢HdUQXGWL VE~aCӫGyӋ$8%z)>p&o# 蘭z)#PaՁ|iL|2KiUy_;^ȷS}i}ji5Jӫ㯒k࿡V(-|%[z[<|:oV(ޗB/ޑHHV&mL/m&m+L/*8 +>m|JBW=ںp?{֮Z'y[?,'hxSzG8gEfϜ={ V3cs';/Y>q mŗP9oc  |?ͯ08/XE+v+x1bEJ^R4eKͿ <܇sk^)4A5NOxA'ȡ9ϋf!2_q/zRq?'C;o6eP2SX#Ul|_fl/X_,d*s}+gTfȐڥ5^W[^[ LDmm?zMRqg]*t&G%VlǸ ?t]EP!-}qS/(ũިd}{Wݹnkmi"GOMFhdj+7|kȤ{8FdLj^Qd+ )9+z_kIS_Zܯ٫`VկEyTʵ6b\|[CzdIݛH]tM~VջNW-y;[/|+DÍOƷr{ϗ]s3O/eYz6lq#[YR{VTp;@|1u4wy0yoP1m`?͘rwm͘md\{\g>9>b8&wMeL>er_wzm⾏f8_<#߾}(?~ou֟wk_̮o^W XH ۸gYgy_3@(߹9@OZi"y5JӚWәS(1yn~09Hم341Zkr@ crs\2pe6-crL&]{crLE2yrL c1[cr4 e+&G]˱wx0&̽xSٳNnHfi X 1@ KKh` 䲰N^a%A$oJ?+W190FE7j(dɩ0&hA %d,d==n>e*c1&RwH zYHc9wD^n&ɚxt9iG՟ǏDr̚}ԱH ʼn19@Ha d.M:H֔vcrixkvcri̭[KhnL H5D2=F7Drjh`~rg7&ꌷur,D,3ݘ@crTkD2] @$uTkD2s"9xkYZ L %TkDb.Z`rxk]*wq9&Ⱥ L UqL nPPκBvcriD[CN7P @9xP5C7射j(oYv2 lo@6xP5C7P @9xP5C7p rj(oʙ cz<crqLw=&'c>>ȃH/#hLrr,t׻0L~qib)aމm0py=1Lf#i`rp)].3IaL.L۷y6=<=.鮢OdaK-?,7o|?Zu]5^x]v}kO_WAY`Ȇ;?L>05\Sla7 C^F k: ͕k|S@S(6TX@%jLe.T pDerV+$Pjc^c,Vy?v1q9 $Bw7ZxQ}<)c~ I]ho ]2Qm1)3?DwkɵG3^6i"󛲹^3%7ix'"uqL5nHަ>*w8C‹Z\?y(P9͟,u׳wNpJtWJ~ule xk<).d(Ob• %Lfs>g<-?^NN*ִL-J.OM~?y(B:*1'm/5eBâbݜsr8+4|lO=̛\K0IM9[f h/i ,ړ8Lnsq&ov7ZXy$6ߜ['w#+zYA2ڴһ:xOS7L~s.&ݲMȀ9r\[KPzG[SvVcY$몉-]PfjS?8[utozE:КL.;1,U:13<ϳG]IG0sqy߼j|C78A]d^oW~L>'uˇ ='MFkwl5%#tQT^'_>Ͳj#bq(7nR6z9])ʹyOkqiCpSmz>mvW"xR5fwyc*y6׵e9ad1yfgOSllh$Z{Wʖ[B=o\:tbu> aPNx9x6i[K\kpZ f1yJ8*&X ,K</ n$e~7&G9sUʓl$&_0*8ȴu>_{u''re5}-ޯޒDrck3y쎾17g4T R,ޖ&e]NJ|^e V5 |#/n Ma]iylq7*uacv6@iD_8Geo#^ck$@nکoSx>rz$wյϐ^3fl 6qn$.?$N>^~2w`@+z)N,}؏0͗-.vGON}O{2]1H{Fl.ũvh Bp*W= Hā*ϸ@ߑ}V '7_`[t'[M‘ n3Üm?kD򔸠ɉa ʹ:&Pu;wHL&C$P@9(:r(H"9rav@9tCw@9DrCerʡrC$Pcr`r]P@9(HL&C$P@9(:r(H"9rav@9tCw@9DrCerʡrY9@Ɓ19n09:6LcڜHrC2 r09r2ZAFm=N$PHDrԮmM:>xP(H"9rFT1y?uap%=]ͩwHג>'/Q<=xtp-sr$;#\JT ZK~s:Lɭ\1 M;&H]gcDrR2ywUuL""9cr$ 3 3@/ͮO.7D1{sjg%s_|ͩ4&miӘ4s>;g!9ß88 !0IENDB`nnBӿke=СʄPNG  IHDRM1PLTE!!!!1119BB!!BBBR11RRRcc!c!!s11sss{!!BB11RR!!!11bKGDH IDATx흋&kfqM[YGww4m;nKr-!DU a"P0"E֟ BƸ)D@H "Y SE%j_oۏOM0=|_nw?C "q{RzAbQ.;Q㏷ʏ~^ˇlLdb_i6fi IgAآ'f;׮]XVsse{J '1o]U\]A]V$G~cj,G~DWw)qD@DQ+u5Qӏ7}_0Ԭa̪G>|zv=5\s> 0 2hkyrZ}welG!#kb7:} OU-"0N"Q|v #"y*`YQF=\+oSRXWCD> Q+`4#`+`]*pxR//fƇ(z>E~fPN+5UH#ӇEd`{l* H &V`l }8̞sap(#꺊{OT7WP?RW9MǧH |#藟&ER+[Zw}v*P #5PL~0DƞQ5bnE,zZGzͳ_yD#3K`ɳ",yvR%NpI<;)¡o)GA6E}Tqrļ#R-_v603VWVR̳7ZA?"| yW>(Ti 25zMMEN_uCa֠5@)ώyƓ"ʳؠ6r~FOP|$lG֫#''&L>r|Qk C=Gޏjfߦ&81eRɗg_&R$|H)݁]`!4H캏Z4wEF~Z d]AOӴ!\+iZP}=gj# E8Hx1HŋAp(j|# Eem|x1H =;/0eHrK@+k]N}AڏMM:WdÃGhE@Z|^"yqᐏ|^ AQ #GhlX2V Q_ Z|<})TⷩIֵXȳC8Qt=i^ 6:i$EHH)) Z F>B+x2V <>Bl Zk^ D/ӽC;nS4Z{н"0UHj0{ E[:|TC:VM+|ħz>߭ZޗڌBjeܪ!;;oc:ZܭcĨO,G#zQҭ`}HIc0*~.jek%]~ic\-?95]ގsEzj vنP] Q`-k$%ꎼyH~5Z{Qd7H {CQc;EBHS$؏n{ a--Hٹ %՘{ɸaeV6绚"phY ) Ȕ#yrzhS̊YಎkQq~Ek`Q7j"|aJN(RGcUt<ʪtEjx޿"})$jEξ<"5V^qI^ REI(~lEȣڰ?^c^'8HrԲ/ȶN}@f\Q˶"[rr#ș=FF`9D">(;N+/(+ґ$A\k?baW`P娕EA}hOgr"7M ?$ yvM:䀉ﯥ_ѻ&#!wI`P䀽֤;EcMzZ-]K,%Gܧ&q>z^CMIO7M:ٓ-ۗ&}dw;eVb).O` in%ѳZRF|ebK)G2-':4ZbeCpaz~ǾߌEj\+SHF y,׉ pnh8j ,˨`6j&;WV'*"#;&WR/¨MۘkrM2ۘnK)R'>Y*vOH@#KZToJS)uQ#షK3vJuEmH[^MQ ܶu[hgy-wA#iuV#wA6# Iݚ$!EnG>X=8~j;uúĽI~GX G= DA>AbG#ȠV{fxbF E1je11|NԳ#`313?g=`r ~-#&uZTD4m4#zC,a'7ZH&l #E}crR$4e;"gQ|D5QHӨ>Cr#uX9K~Z=֒j%IENDB``! {\oB+OF8ZbB( 46 x͜O[W{~$QHqx*RJ FTy\QOOU*Ă%X,.Q+UQ"VhwUTy܋ixݿَ&B$kB)Acy&m suqm;3n^WM+1AWq/9MsybrſG|W]yKj)~ $bG6S a3 w#/toK_{k)*2-rl{۷#y[7eSu>{<5']wKjͳD1{g{Ս| ϊ"gh%݂37 =Eٍf _g8/߾y'ov;ϘL_X5go~Vܭh~^/f2;/$y$g^jAOO3*+A 9ݾ{qgN 5?W`s^Z^2wiyO癫iyno՗LX FڙR*EvXjMFjiǦz(^-FGNǵeLFnT>+StVUD7tI}>_6ux_ynA{fGwIw#lvtGyշկJoA+m+]U|ZONA*We~Gy;`aU0*fQ~wp,cfQbU0*Esb1 YT1bhǃ ձiE̢YT,`U̝Y4̢ fQ,:!J(* Ǣ>aհChvF܈Qp\Y1ʢ>+E#FYT+yUl=,jbEwRGt|^,wl܋JғӭiOG;:֠f]a#+iyXpQ)bi7㋗P?t{-)2ݨbŠ((2Pq3Q+[; THݨCVD)зeG>Et7xQ -ggw׈X*tPAZ},tH@rvvG|Qe"JNg{7 (2Hh$"c70fpθ6K3d\Y$L|V2> ^WU8B2>k)c LR!i0L._iwL)8vsQVňi(.vWQL,>28I)ևIP$(oTG>ևIP$(%L&A'}IP2 bӎ(͎}IP2 J%LO2 X&A dǎ-p7G>ևIP$(%L&A'}IP2 Nsc#A$؇nA7 {R=HÎ4L}nXv;[Av>TjO5짚SS~w#}OXv;[Av>Z[kح5֚Y[vknw}حXv;[Av>Y@3 h4}_3 f,pfXv;[QAvG>D(w! ],}BFX#Ign_ĖQX:9oʏPNG  IHDR:xsRGBPLTE """)))UUUMMMBBB999|PP֭3f333f3333f3ffffff3f̙3ff333f333333333f33333333f33f3ff3f3f3f3333f33̙33333f333333f3333f3ffffff3f33ff3f3f3f3fff3ffffffffff3ffff̙fff3fffff3fff333f3f3ff3ff33f̙̙3̙ff̙̙̙3f̙3f̙333f3̙333f3ffffff3f̙̙3f̙3f3f333f3333f3fff̙fff3f̙3f3f̙fffffffff!___www˲𠠤X"N pHYsB)7\tIDATx^}MoWwD/7~~a.7-A=*hB(`D4y~{5 B!W|DVeO}HĨSf=dĉ78,?o=%XOiNzm]N LKA`[}_SROJ#[58^r#yl=Hx[3lg/3N/z`c9#gϺJGzII% wM|D^nK챕۽RJױcxIVCǟӛRHxP4QV'r|Cױΰ$97w 鎤tK awܞ'ĻT:`Y!$# ۔92*[nHfgClO?$ȑrdnK/CiS~:4tV'ߥ"9EGI =MlCv/3/JSArJԱcxIjҸ%;ÑdG@n_SmHH4gM4_&>!lkXYn:uHBH6H8̼klO/D}.дK NZǪeB#}`dJBL"\Br閤~ $BBɼKJy§s':5vVN4μɡ7H?BȽ!!N Ds{n_A :cŇZ`ɠ#tCm嶙z%˪ t]fiaǐՍg@B9γ D%IeU?/$A a,ހBtP5aeX(cd(2,Ȍ۽?,CcIR fMǟ:V}/{|iXFȾ~JJ tdq1Kc/NFuUgS]j{ܰpgR"eH)%0Lyss8ChicYCgϛXiH7, 767!mXgV: 48)?;|8#MOZ)od,>Ȱ]gQ:T \$,m ;CdA DTvbr꨸2"Ŭn~vjO(黲 !덏(ٖXYc^=#Uב}N?SKI*NG#C.b;,SJpRr;'TX8pGu3pKG0} 3c wu^э:R`%)b 6|w!+1݅C$Z6Yuׁ@y/TFx<ΐ^jGXؚ .֥O(Ui$뻮cYCgϻ7$Zk>f% qs7jŐRn "vdz5.ٸX?8RH3\ /JE6HXX1P^9CP` ^Uΐ2oHR`@RcB nAqf瞫0mAMDH>$\BSǒΪaRd ft@5Yw4 NfzMXdЈG~<0K|UK$gH+DkA?1}gDC#X : 0V1bxpԩK-Z?[Bl1A ,D{K9+ڃHC)OKMYrTt r2~p{\k.ϔpn8O VbYӛ3h%e (^Wg1MHzW|Ge@f&Fg$eǙyEYe$08>`3SU D9pe9gU†_:OXO$JxYN 17"x'T"' `{*e ,^|Hܾx|l2}Rlj8NHW^5q-}A90͛^l%A-е<+]b9M!Kr ܞGeR(~OGg}絢t^LĒcd54Ћa6a?nû|dtK3<~~6L+(`W@)YLmcŇҺ^ cŌ2DZLYVEfXCY x0 D!ZV S0,R^ UQxq({*=c`jˤK<}x E0Gw-AS*`|, ƻ>~I I YT!vz-8R1ciTK9~cYL9bwfR? ?h8xwRdK H|mXӯ NL)F(; Xli,Cg#F;Ȣ0KM?rH^ 8 $D,OG3B/4al-8.4+0^SXQT Ί^>yk_9ʶ:amKKsEzIb/QZ,%!7[ ߟAQRaL8SKA+›5PE ܗE5:V|/20pZ!r) , 2 n P$|xב o+, \xpacy.q`zsz_7Ġ/:A>Xp >sa)%AC)2YUyA֟'$8׍c̶.az3: &B#\9^ ^JՐ0zD,$cBE=ք\o&su]nv-hHc ][T*KY0&SK#)(DËPY٣̳RPJÛ*T^^bL9?9%Y]^?18&ʕ@(g[I!庎原U>{q?dBp)5 k Sӥo,L29r;\j+O hGpDwkU+:ˤ|Gh_BZ ;oei4蝡NR^GjĂT@ 9òw}4~4AGc; t TrLo,x'dcKYq,D%ӵ)^CJjA|8UI$=\`.tьA*5I>5[)^r:i<0BX;3x͘1=r003yՄ&yq6af[ D$faJ?!8\б`(,k2OrxAj.``BaErk2'lrX&bbFЫv$G}gXY3` N`UXs@"}$HxT@.>f]ȁjr2a͕%aɜ !n喖N=.<;sI)8> >j? FwQX?Xx_ pA|cA,2MRtwcY͕uxi\hq5‡2p Qa..c DrbdgId"8NRLԀ| DIX04wy>쟄Iv;NI_#֙?/,Rt$AR(˿쐣ġ27?\= xcy4øBS*% P]:]Z4o"LZPMژ9@XBgW&SW01WYzk*H©S%xIU)P^HbTUkQuyaHcRȨ(ݽ- p|$ ՒCFgENًt!4T|bR ާ74SYD@^b!{3zA+S*%31`5"hC[8 T ^oi万 +) gldPA ~@r\AM" $=EAUKlQ`8CܴK| KޙOuH ,-~ (84%zN6}z;XJ/ i^.2o]@6])?xLi4s˂CD&R@ky#*^Ӆ QE.d”y::VB)-ůfNIWJsA)uMk1(T4Y9<mxRd:o5 Zvp~/B vH38/T%;V51t ۳ =HQWa=Js][*" >Yֶ@yh8l?:ktbWò'ϻq>C1dI)]7Y$,28;IlhCX<GxxWM3I'˷Yl'@D?ߟSGpM<ʕt(>?dH^&GAs.x//08I :8eׁ'BuS] $QJ!fׂCc.v!X^&SXܟl8?a\: m RVI.PP p5`͉'kr\^Jޥv>:r6ϋ1Ҹsnn Y\3,'ӧxxGH79z$ L߀xX;U1>aN*ȱH^N\6IJXɚa*y$ʋ폐*A]ד偠@ge܆-sG{K<}&-Z!ns}(! pRit0(+<&2CƈlYyV=C^Z ufxp5w+, Ϋπa* MLW`:V{/u7.a#pVŷuTaGu0T9Z5p+paq:T '2f(>)qjb+WjX۱HǛ?UyUd p:YF#1J%H < OD1CxE>qƸ'On{,dses=kިkTj)#W*5)^]5Cسy-p̀ y8Kvq8Hed/8cُl;u]fOz7iTW LÇnJgAݖ0{@jfyBAܪZmf"I-bBz 2*{;kY1^xeI69Xw6]wktJ#VaVS3$B2t%6lT+ oG7p4qZ%4xNN=6.mp RT5.EŘw,R~L2 L$KT7᳈V%)Y܂ T!k<~:FFz58 B (CpG9qA:Ϳ:a?00lQOހPWʷc S*W)q #4H&7X8x00YB _@CVL[a eRɜܒqz`*.fcgO^oذqet8JJSnxՄ#o&@RRCe^d$lWgK;.W1NQĂCNŭ:Y5&O2J%2B6H6 cG9A(^T<9dfy\Hse2^GL%Ls%qs6:WKb XE-90)A @2܆h7|A"Jd܄YK)}Ԁ!0 lqgwq<0QQq}4X՝az#.rݭͩugEIڠ3xPXYs??=PCi%oHj8(U6uuNc7cWwH:8NH}VړU#,S12y~ BI:kAY48:/Rj 'H:{(W!p&j$bd_ Q(#/Q%^ס{tЩႚ2Og|"oT@=Hc3sU՟CG٥Kpu 9`.'R26V;xH6~ i~* $@y}KpԕAWF23_duGx ϜaY(5sp׽" Ghw€c\ *>r0`5 A-D/8#STi 螠8 l7O;?sy$&e<>3@&yjH*JK=_rT-oT% 5AGq 3I@0;*Qy 2Gn#"2u} GnP…8!l@0tQQI`YHpS`#( tp@T1$kC Qq6n WgjD;$Q y *R}zkB-4>h$Q#L%cAUqAۨ כk5Fx i}i'P低1Հ豒N "Vb:  kib>NT1b}zXSO Gįpq glDLՎ2*e1G˜S-j-PAYW;>1xe)-(6A)›O!>=8Y˛ʸD_d89>Pvvٿ܍ǻwj܃or Ćx8 GMΒ۸3/)N ʝ^m?^ajf`:LK0dI(%VC_F%.7:l276PQȡ ẇXZG/iXsX^Зb@u !وG` Xb˨sj&C&uڧ4,v$qpA"|pAaq:XZ4/A3r H59[gE`=+rڑxj^,S59^ j7p(^ntgx3~y2d/#`XBg`F`ExC;'17o_yԁ/vӽ<M!9H@5cp隩cEL@2A0BhstURG8 7G׮ވ`Oo_izW<6G5xXkkdm+{= ʽZbk>cst{t굛n\=~#o+NpDE~s߻A$w 1ڜ ^||%w6?[ ^fXVv?E"x>Õ5"hY|x.2baNg:&rwlƿƄ; p_:u\ XF@Ah ~mθ~vv-ۣE߈o!r KS-#cJM5#ï7:.<â6F`8Gt 2W7"fF5A' "z`v&M<^ZG㤚Eqtzxs<Zw5@H 5+AE,r-:=YnG>8B! ; Biΰ/`qf7nFn%߈%,A%A}B)6ƛO~{sc$w@dtmGX.I@M"PgWFKPFGF*7Fz%Zn|Q,7K )x.\E%p%+ϲ#˗o8òꎿ6$y/wR4r-n<K+CHchw adXBXȯquJk ~pkYB%B`!ųgFh^/G0Ǎ Al/K/ehqe:>:NzkS%20_jW Of"ycBf/:9%2/Ycz.p]W`jy7cQrǐieOܱ"Jfx } # 뀰I.yWH8{v&{<ΰo7V@,Y;#6h_ֱ C9Y0svF59Ub|>\ lu"49 bX4dZFPGD@':lFR#s#UX,ӪT?dʭ Wc~dZd [8EHq.Zǥ8_|u0BŪ敮sQ,c2lW=:rn%uv8: Ks7.5JXuJ"Y!e_Tlr J1L, (S[imlRޠOvLz>2 V{Q((#B.:SG+oKK֙\tP2{Cd3':VbAy8bi3.U7V$'#߈yr,\8/!K峽o嘭 6R}+O2Nǚ@A#21$fA"kGG1^R?:.|0# !0Nh ⏓''oƷ7<}st]obF(_$~'3?2S Gk'FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHxhL:Xa$d!FF 2uXhbZ&aF@B@knd S&n :uHx8NPL:yF5A@k'X=~i,ZY{!89=9=9ш##ޑZkdFDt?ӛT g/Vl:uByxa~}e9>Z1[Sdr|6}&09ZDzl]yN{?>G7x#cr?8` 9'Ϟms t*{:~.h:+'d<@zkkֽTW,WvlϗvacE ~$u u~_9^HnNNO7?\wmAxxBtRʋ٣ш{:.:uj Vݏ=9[;ΪIajWx}g߷}~o*PɌag%Q:VԐW䈷_TӔ;fNO'gx[lߍy|6DU}I32+:uj V:_&yd;uu|u u|:n?z}g;!~>M+r8w{uֱnj~xB:n `D.wt>f`GP_uXx(U Fy:*_:>98 ^G:4)d+Hy<]$]R x:V.̼t4>b7YsUttZdGws7e;zߊ"?vdX"`RN;[q %aQxփ;Bxtg;W@G_i/p]NJQ#9{ Lc!g({|IUو;xbױ9y:yqK˰U[ϷDhuD:Ca ^GWvbwш0%S+ߟ<~qmCֱnA`^GMw{ Xr v,x9s31;1+qNe c`/jĆ (+g|Xta4ݑdXf1sHC5W_٢F-1{76ѓAxo<ޛx߹ːnFQ[A9:^o]rQ^.Tlm,؟o"oևt#޽ޞFLhdj<lm<䫇_jRki#JY|c/raBesX8R%ܸN_GSD5zJPդNi. :^$F *x[_mĔȱ,ב<0y<7IUu޿OɈX%w"^4MN'@vxm\j2`%>yE?xʏI=bo'潥֑ǝ;{sױy|tP˞S0yY2:.9/X@CBvxt듫ήN<2&blh:$Y"^s^[:uX^Lj؞R#դNR*?֧Q?~46}#k@t1-ǟ!ױ:2òSUfZGRGLIX_IY苿<cX>HtW DJ+&Mg/<*\'8xu\ b蝡ݕHIu&F`odƧǒ|B=}p|sa+-eBNWr;ONOvC5ME$2,YIVhoHM0k}L oF|jҜA/vb}3i#2ŤY377lRc] !Z<+ K|”r88ߎbݍud zOO,8-?Ŋ?MC\yIa苿<~sYt:^xds^5R;:O229鳓7kS߈u؞R#KYtGD)thsPM'ͧ2ցIoe;4'^Xǣx2˰JXf1B} Xu\js_Ӂ) \V?fW>{#2#ۃ|xdLđkҹj3əэX<+RTUZGdҬ6/"Kk*ng: Sߟ4F@w8L:_F\f:u\f|FS9ts#:VswWdż9U7+y#"`Ps;#:Vw獀CEJ#`Xߝ7*93+c?~w:T4y#"`Ps;# 3`дvIENDB`( 8  3x0* Image Word.Picture.60 Image0o Slide $PowerPoint.Slide.804Microsoft PowerPoint Slide0'Document Word.Document.80.Document Microsoft Word/ 0DTimes New RomanȷȷԳ0 0DArialNew RomanȷȷԳ0 0" DWingdingsRomanȷȷԳ0 00DCourier NewmanȷȷԳ0 01@DSymbol NewmanȷȷԳ0 0PDHelveticawmanȷȷԳ0 0`DLucida ConsoleȷȷԳ0 01   @n?" dd@  @@`` 80D v ?!UYaSThVrWZubc@ABCD$GHEFJKL"MNOPRsXefghitjnop5dm>q   % !="#$%?&'=()K*+A,-./0123456:  ;<=Yq9qYsYM 7=lk8!QI [\]^_` 42$ECdl;9EQ2$K |ZfsKLQ2$yz)g؅Ե dob$J RW-̅}X}b$Bӿke=СʄvՓ2${\oB+OF8Z Kb$ĖQX:9oʏ_Mc $@!fPPf@fPPg4KdKd 0ppp@ <4!d!dȷ <4BdBdȷȷ___PPT9|zhK(? =O =DIntegrating Operations Research Algorithms in Constraint Programming  9 Claude Le Pape ILOG S.A. vILOG Optimization Suite OutlineIntroduction Problem decomposition Constraint propagation Propagation of global constraints Objective functions What ifs Search Conclusion@:Z?ZZ:?H  a    =7Discrete Optimization (1) BA combination of choices to make (decision variables) Distribute objects into bins (tasks to people) Sequence and schedule tasks Design routes between given points Complex combination, e.g., assign deliveries of customers to trucks and drivers, schedule the deliveries for each driver, and design the routes to be followed*6Z Z6 >8Discrete Optimization (2) Constraints between these choices Capacity and geometry of bins Precedence, delays, incompatibilities between tasks Route network topology and capacity Complex constraints, e.g., big trucks are not allowed on Market Street from 9 to 11 a.m. on Wednesdays&""?9Discrete Optimization (3)One or more optimization criteria Don t spend too much (minimize cost) Earn as much as possible (maximize income) Don t be late (minimize tardiness) Don t be early (minimize earliness) Don t take risks (quality, security, robustness) Make sure everybody is happy (satisfaction and equilibrium between individual preferences)&"#"#@:Mathematical Model (1) Mathematical definition of variables Decision variables Intermediate variables Optimization variables Mathematical definition of constraints Mathematical definition of solutions: assignments of values to variables that satisfy the constraintsj%ZAZ'ZfZ%fAf'ff!A;Mathematical Model (2)  Mathematical definition of an ordering relation between solutions Often a partial definition: some elements of comparison often lie in the head of the user Mathematical definition of optimal solutions: solutions that are not dominated according to the ordering relationLBZrBfZfr!\JProblem SolvingvThree main classes of techniques Linear Programming and Mixed Integer Programming Constraint Programming Local Search &!V!V]KMixed Integer Programming (1) "Explicit problem definition Linear constraints Real (floating point) and integer variables One optimization criterion Separation between problem definition and problem solving The continuous relaxation (when fractional values are allowed for integer variables) is solvable in polynomial time Bound on optimization criterion Guidance for solving the MIP problem by branch-and-bound (rounding, cuts, & ) fZZZZnZZnr^Mixed Integer Programming (2) uaMixed Integer Programming (3)  vcMixed Integer Programming (4)  s_Mixed Integer Programming (5)  p\Mixed Integer Programming (6)  xdMixed Integer Programming (7)  wbMixed Integer Programming (8)  q]Mixed Integer Programming (9)  eSExample in OPL Studio (1) range Boolean 0..1; int fixed = ...; enum Warehouses ...; int nbStores = ...; range Stores 0..nbStores-1; int capacity[Warehouses] = ...; int supplyCost[Stores,Warehouses] = ...; var Boolean open[Warehouses]; var Boolean supply[Stores,Warehouses];Z!! $fTExample in OPL Studio (2) minimize sum(w in Warehouses) fixed * open[w] + sum(w in Warehouses, s in Stores) supplyCost[s,w] * supply[s,w] subject to { forall(s in Stores) sum(w in Warehouses) supply[s,w] = 1; forall(w in Warehouses, s in Stores) supply[s,w] <= open[w]; forall(w in Warehouses) sum(s in Stores) supply[s,w] <= capacity[w]; };Z,!G !F !: !!: !3 #    = ? 7   B<Constraint Programming Explicit problem definition Separation between problem definition and problem solving Systematic deduction of the consequences of made decisions (constraint propagation) Partial constraint propagation development of heuristic search algorithms to generate and optimize solutions Incremental constraint propagation (with global fix point semantics) Localized definition of the constraint propagation process (each constraint propagates independently of other constraints) many different types of constraints viewed as as many sub-problemsvVZZTZqZZDE ^LConstraint Programming ~jExample: Propagation kExample: Decision-Making zgExample in OPL Studio (1) Yint fixed = ...; int nbStores = ...; enum Warehouses ...; range Stores 0..nbStores-1; int capacity[Warehouses] = ...; int supplyCost[Stores,Warehouses] = ...; int maxCost = max(s in Stores, w in Warehouses) supplyCost[s,w]; var int open[Warehouses] in 0..1; var Warehouses supplier[Stores]; var int cost[Stores] in 0..maxCost;|ZZ!!  ! !     {hExample in OPL Studio (2) 5minimize sum(s in Stores) cost[s] + sum(w in Warehouses) fixed * open[w] subject to { forall(s in Stores) cost[s] = supplyCost[s,supplier[s]]; forall(s in Stores ) open[supplier[s]] = 1; forall(w in Warehouses) sum(s in Stores) (supplier[s] = w) <= capacity[w]; };6Z !%!*! !!!9 !' 3   + :  |iExample in OPL Studio (3) search { forall(s in Stores ordered by decreasing regretdmin(cost[s])) tryall(w in Warehouses ordered by increasing supplyCost[s,w]) supplier[s] = w; generateSeq(open); };zJ!] !!            C=Incrementality Principle (1) D>Incrementality Principle (2) E?Incrementality Principle (3)z"Plumber" = "Roofer" Solution: Order "Plumbing" and "Roofing" Heuristic choice For example, "Plumbing" before "Roofing"\)* pF@Incrementality Principle (4) GAIncrementality Principle (5) HBIncrementality Principle (6) ICIncrementality Principle (7) JDIncrementality Principle (8); Constraint propagation consists in incrementally updating characteristics of a partial problem solution when an additional constraint is added These characteristics may be: indicators of contradictions domains of variables (relational propagation) the overall set of constraints (logic/algebraic propagation)x  :(KEIncrementality Principle (9)4Particular case: arc-consistency A constraint propagation technique enforces arc-consistency if and only if when propagation stops the following statement holds: for every constraint c(v1 ... vn) for every variable vi for every value vali in the domain of vi there are values val1 ... vali-1 vali+1 ... valn in the domains of v1 ... vi-1 vi+1 ... vn such that val1 ... vali-1 vali vali+1 ... valn satisfy c Considering a constraint as a sub-problem, arc-consistency consists of removing all the values that do not belong to any solution of the sub-problemZ$0Z 0Z *0Z 0Z Z -F                                    !)/& - j LFIncrementality Principle (10) Non-monotonic constraint propagation consists in incrementally updating characteristics of a partial problem solution when a constraint is added or retracted Non-monotonic constraint propagation implies the cancellation (hence the identification) of the consequences of the retracted constraints Non-monotonic constraint propagation is not used as much as "monotonic" constraint propagation (for complexity reasons) \Z&  :*MGLocality Principle (1){Each constraint (or constraint type) "includes" all the information necessary to enable its propagation and, in particular, to determine whether it is satisfied or not as soon as all its variables are instantiated The constraint propagation methods associated with a constraint (or constraint type) are a priori independent of the methods associated with other constraints*|NHLocality Principle (2)Example: temporal constraints and resource constraints User: "Plumber" = "Roofer" User: "Moving" must end before 20 Temporal constraint: "Plumbing" must end before 17 Disjunctive resource constraint: "Plumbing" must precede "Roofing" Temporal constraint: "Moving" cannot end before 1977+2C!3}fLocality Principle (3)  nLocality Principle (4)  t`MIP/CP: Most Important Points MIP Linear constraints One relaxation of the global problem Guidance from the optimal solution of the relaxed problem Cuts Scheduling example: hard to deal with resource constraintsNZZ!w;fOI Local SearchOperators to move from solutions to other (neighbor) solutions (or from populations of solutions to populations of solutions) Search control strategy (meta-heuristic) Many different types: simulated annealing, tabu search, genetic algorithms, & _MMain Issues (1) &Mixed Integer Programming Is the continuous relaxation a good approximation of the convex envelope of the solutions? Can the formulation of the problem be iteratively modified to make the optimal solution of the continuous relaxation converge toward the optimal solution of the initial problem?*Z Z `NMain Issues (2) Constraint Programming Are the critical constraints propagating well? Is a tight bound on the optimization criterion efficiently translated (by propagation) into constraints that effectively guide the search toward a solution?&aOMain Issues (3) Local Search Is the neighborhood topology consistent with the optimization criterion? Are the operators connecting (in a few steps) good solutions with better solutions, without downgrading the solution too much in intermediate steps? :  :5OutlineIntroduction Problem decomposition Constraint propagation Propagation of global constraints Objective functions What ifs Search Conclusion@:Z?ZZ:?H  a    Problem Decomposition Sequential DecompositionSolve sub-problem 1 Impose the solution of sub-problem 1 and solve sub-problem 2 Infer characteristics of good solutions of sub-problem 1 IterateColumn GenerationPrinciple Generate candidate solution components Find the optimal combination of these components Infer characteristics of good solution components to add Iterate Examples Train scheduling Crew scheduling Routing\  )  )Example: Inventory Management$ ExamplevStock = 4 st(o1) = 0, et(o1) = 35, rq(o1) = 2 st(o2) = 5, et(o2) = 30, rq(o2) = 3 st(o3) = 32, et(o3) = 87, rq(o3) = 5w         L#  "  #     Demand Curve  Basic Model  alloc(o): set of resources assigned to the order o from existing stock rent(o): set of resources assigned to the order o from external rental Note: rq(o) = |alloc(o)| + |rent(o)| A solution is a valuation of the functions alloc and rent< ( ("  +p *  Costs Crent: cost for rental per item per time unit Cafix: fixed cost of allocation from existing stock Catd: time-dependent cost for each allocation Goal: Minimize the total cost SoO |rent(o)| * Crent(r) * duration(o) + |alloc(o)| * (Cafix(r) + Catd(r) * duration(o)) ^^(/)       (.*                   Example Maintenance ConstraintsNo resource is used more than Utime time units without maintenance No more than Mnumber resources are in maintenance at the same time Cost of each maintenance: CmaintVCe.J6-IpSubstitution of ResourcesUA resource can be replaced by a resource of another type Hierarchy of resource types(9V!Complexity ResultsCore problem Polynomial (maximum flow of minimum cost) Core problem with maintenance NP-hard (multiprocessor scheduling problem) Core problem with substitution NP-hard (list coloring on interval graphs) .0n"0n'0n'0n)0n&0n !!'!&X; M 9  "Problem Decomposition #Mixed Integer Programming (1) $ Mixed Integer Programming (2)  %!Hybrid Algorithms (1) &"Hybrid Algorithms (2)Tightness of the crane allocation problem: Extend the duration of all tasks (add the maintenance duration) Extend the duration of the conflict task Final result: 4.5% above the lower bound 87 927 919T+iZ;Z*p4'#Hybrid Algorithms (3) oHybrid Algorithms (4)  ($Hybrid Algorithms (5) Other hybrid algorithms, including column generation, provided good solutions Some instances remain hard Details available in [Caseau & Kkny 98, Baptiste et al. 98]>    OutlineIntroduction Problem decomposition Constraint propagation Propagation of global constraints Objective functions What ifs Search ConclusionB:Z?ZZ:?H  a     Global Constraints (1)  Global Constraints (2)  Adaptation and integration of an operations research algorithm in a global constraint Three types of inferences (as in standard constraint propagation): Conflict (the constraint cannot be satisfied) Reduction of the domains of the variables Inferred constraints (cuts)&tt  Global Constraints: Examples (1)Collection of linear constraints (general or particular form) Detect conflicts Find variables with fixed values Find bounds of variables Infer additional constraints (cuts).> o >o Global Constraints: Examples (2) *All-different [Rgin 94, & ] Disjunctive resource constraint: edge-finding [Nuijten94, Caseau & Laburthe 94, Baptiste & Le Pape 95, & ] Preemptive resource constraint: mixed edge-finding [LePape & Baptiste 98] Cumulative resource constraint: edge-finding and energetic reasoning [Nuijten 94, Caseau & Laburthe 96, Baptiste,LePape & Nuijten 99, & ] Hamiltonian circuit constraint [Caseau & Laburthe 97] & b6"j""A: 1  > K  ( +& Global Constraints: Examples (3) 6Preemptive job-shop scheduling [Le Pape & Baptiste 99]77  Objective Functions Minimize COST = F(V1, V2, & , Vn) Apply an operations research algorithm to a relaxation of the problem Global lower bound at the root of the search tree Lower bound LB at each node of the search tree Characteristics of solutions with COST < LB + D inferred from the optimal solution of the relaxed problem and reduced costsgHP)Objective Functions: ExamplesMinimize the number of late activities on one machine [Baptiste, Le Pape & Pridy 98] Lower bound Minimize the sum of transition times on parallel machines [Focacci, Laborie & Nuijten 00] Lower bound Exploit reduced costs to reduce the domains of variablesTV ZEV ZEn7   K    ItILOG HYBRID (1) All linear constraints of a model are captured. At each node of search: All linear constraints added (decisions, deductions) and all domain reductions inferred are captured and passed to the LP solver which solves the new linear program. A relaxed optimal solution as well as optimality information such as reduced cost and dual values is provided. Variable bounds are tightened using reduced cost. Pseudo costs are available for branching.FI q HpuILOG HYBRID (2)  wExample in OPL Studio (1)range Boolean 0..1; int fixed = ...; int nbStores = ...; enum Warehouses ...; range Stores 0..nbStores-1; int capacity[Warehouses] = ...; int supplyCost[Stores,Warehouses] = ...; int maxCost = max(s in Stores, w in Warehouses) supplyCost[s,w]; var Boolean open[Warehouses]; var Boolean supply[Stores,Warehouses]; var Warehouses supplier[Stores]; var int cost[Stores] in 0..maxCost;Z !!!  ! ! $   #xExample in OPL Studio (2)pminimize with linear relaxation sum(w in Warehouses) fixed * open[w] + sum(w in Warehouses, s in Stores) supplyCost[s,w] * supply[s,w] subject to { forall(s in Stores) sum(w in Warehouses) supply[s,w] = 1; & forall(s in Stores) supply[s,supplier[s]] = 1; forall(s in Stores) cost[s] = sum(w in Warehouses) supplyCost[s,w] * supply[s,w]; };ZC!H !F !2!*!A !J  !    = 2 6   yExample in OPL Studio (3)search { forall(s in Stores ordered by decreasing regretdmin(cost[s])) tryall(w in Warehouses ordered by increasing supplyCost[s,w]) supplier[s] = w; };fJ!] !x       $z    What Ifs (1) LGeneral scheme Try to impose a constraint C If a conflict is detected, impose its negation C Constructive disjunction: Try alternatives C1 & Cn Impose the consequences common to all alternatives (x 3 or x 4 implies that x 4) Example Shave the bounds of variables Time consumingVZZ30Z3Z[0Z0Z"0Z0ZM.  8"  2      : What Ifs (2)jApply a cheap operations research algorithm to a relaxation of the problem with the constraint C addedWhat Ifs: Examples (1) PGlobal update of time bounds in preemptive scheduling [Le Pape & Baptiste 98] Network flow model to test the existence of solutions (activities on one side, time intervals on the other) To test whether a given activity can end before a given time, one just has to set the capacities of some arcs to 0 and update the flow (incrementally)*NN67   93What Ifs: Examples (2) Minimize the number of late activities on one machine [Baptiste, Le Pape & Pridy 98] Compute a lower bound LBi late of the number of late activities when activity Ai is late and force Ai to be on time if LBi late exceeds the current upper bound UB Compute a lower bound LBi on time of the number of late activities when activity Ai is on time and force Ai to be late if LBi on time exceeds the current upper bound UB Relation to the reduced costs idea (suggests that the implementation of [Baptiste, Le Pape & Pridy 98] is not optimal) VZZV 1   <  1    7]>`x      ,'OutlineIntroduction Problem decomposition Constraint propagation Propagation of global constraints Objective functions What ifs Search ConclusionH:Z?ZZ:?H  a    -(Search Local search around a given solution Use the solution of a relaxed problem as a heuristic guide for the resolution of the complete problem Solution of a continuous relaxation Solution of a sub-problem Lower bounds and reduced costs as guides toward good solutions& K.)Examples: Vehicle Routing (1),  Set of customer locations and demands Set of depots Set of vehicles with given capacities Transportation time and cost matrices Specific constraints Legislation Special vehicles for special goods Roads available only to some vehicles Optimization criterion: minimize total costBZUZ,ZU,/*Examples: Vehicle Routing (2),  XEfficient local search algorithms No specific constraint Incremental computation of tour length and cost from a solution to its neighbors Constraint programming for the specific constraints Use constraints to test and reject bad neighbors Enlarge the neighborhood if there is no valid neighbor Find the valid neighbor with the smallest costT"h4"h40+Examples: Vehicle Routing (3) [Pesant & Gendreau 96] Exploitation of the power of constraint programming to search small search spaces (neighborhoods) as part of a tabu search algorithm Number of backtracks / |neighborhood| 0.29 [Shaw 98] Large neighborhood search Limited discrepancy search to explore the neighborhood Active area of research See [Kilby, Prosser & Shaw 00, Caseau & Laburthe 99, Caseau et al. 01]ZZ ZQZZGZ QG   s  3.Examples: Scheduling (1),   I[Caseau & Laburthe 95, Caseau et al. 01] Find an approximate solution Make local changes and repairs to decrease the makespan Repair: swap two activities to shrink or reduce the number of critical paths Shuffle: keep part of the solution and search the solution space to complete it with a limited number of backtracks (10 to 100 or 1000), under the constraint that the makespan must be improved (step of 1%, decreased to one time unit) Perform an exhaustive search for decreasing makespans [Baptiste, Le Pape & Nuijten 95, Nuijten & Le Pape 98] Forget and extendwith random fragments)ZUZ7Z6Z7Z(Z)U767( W  f -mExamples: Scheduling (2),   w[Le Pape & Baptiste 99] Strong constraint propagation algorithm Local optimization operator (Jackson derivation) Limited discrepancy search around the best schedule found so far [Portmann et al., 98] Branch and bound At each node, precedence constraints are imposed At each node, a genetic algorithm is applied to find good solutions satisfying the precedence constraints\ZZZZ> lExamples: Scheduling (3),   >Minimal perturbation scheduling [El Sakkout & Wallace 00] Temporal constraints Resource constraints Minimize S | xi  refi | The problem without the resource constraints is solved by linear programming As long as resource constraints are violated, add temporal constraints and iteratex;;4  >#G;4OutlineIntroduction Problem decomposition Constraint propagation Propagation of global constraints Objective functions What ifs Search ConclusionH:Z?ZZ:?H  a    50Conclusion (1) Already a significant number of applications Credo: hybrid problem-solving techniques will enable the resolution of problems that are still open today More efficient exact resolution Better lower and upper bounds in given CPU time More robust algorithms*gg61Conclusion (2) Main difficulties Identification of promising combinations of techniques Implementation and test of several of these combinations 2pq72Conclusion (3) Guidelines and tools are needed Modeling Combination of sub-models Testing and interpretation of test results Several research paths Neutral models with solver-dependent instantiation Predefined solver-dependent models (ontologies) Automatic transformation of models between two given solvers [Rodosek, Wallace & Hajian 99] & \ ZNZZZ N\ @  <6Training for OptimizationmBasic knowledge: operations research classical problems and algorithms Feeling: vision of the solution space (polyhedric view, global view on domain reduction or local search space) Background: constraint programming Implementation method: software engineering Rationality: probabilities, statistics, game theory Special skill: formal and informal communicationnZ7k  (#r  References (1)  Ph. Baptiste and C. Le Pape. A Theoretical and Experimental Comparison of Constraint Propagation Techniques for Disjunctive Scheduling. 14th International Joint Conference on Artificial Intelligence, 1995. Ph. Baptiste, C. Le Pape and W. Nuijten. Constraint-Based Optimization and Approximation for Job Shop Scheduling. IJCAI'95 Workshop on Intelligent Manufacturing Systems, 1995. Ph. Baptiste, C. Le Pape and L. Pridy. Global Constraints for Partial CSPs: A Case Study of Resource and Due-Date Constraints. 4th International Conference on Principles and Practice of Constraint Programming, 1998. Ph. Baptiste, Y. Caseau, T. Kkny, C. Le Pape and R. Rodosek. Creating and Evaluating Hybrid Algorithms for Inventory Management Problems. 4th National Meeting on Practical Approaches to NP Complete Problems, 1998. Ph. Baptiste, C. Le Pape and W. Nuijten. Satisfiability Tests and Time Bound Adjustments for Cumulative Scheduling Problems. Annals of Operations Research, 92:305-333, 1999.VZ0Z)Z0Z(Z0Z?Z0Z)Z0Zl kJgZ O"*I")T4               $    !    y)%References (2)Y. Caseau and F. Laburthe. Improved CLP Scheduling with Task Intervals. 11th International Conference on Logic Programming, 1994. Y. Caseau and F. Laburthe. Disjunctive Scheduling with Task Intervals. Technical Report, Ecole Normale Suprieure, 1995. Y. Caseau and F. Laburthe. Cumulative Scheduling with Task Intervals. Joint International Conference and Symposium on Logic Programming, 1996. Y. Caseau and F. Laburthe. Solving Small TSPs with Constraints. 14th International Conference on Logic Programming, 1997. Y. Caseau and T. Kkny. An Inventory Management Problem. Constraints, 3(4):363-373, 1998. Y. Caseau and F. Laburthe. Heuristics for Large Constrained Vehicle Routing Problems. Journal of Heuristics, 5:281-303, 1999. Zi0ZZ`0ZZv0ZZa0ZZD0ZZf0Z- 6"+"5"+g%;" "$";(" j   +   w  M E   ; ' 1-References (3)  3Y. Caseau, F. Laburthe, C. Le Pape and B. Rottembourg. Combining Local and Global Search in a Constraint Programming Environment. Knowledge Engineering Review, to appear. H. El Sakkout and M. Wallace. Probe Backtrack Search for Minimal Perturbation in Dynamic Scheduling. Constraints, 5(4):359-388, 2000. F. Focacci, Ph. Laborie and W. Nuijten. Solving Scheduling Problems with Setup Times and Alternative Resources. 5th International Conference on Artificial Intelligence Planning and Scheduling, 2000. P. Kilby, P. Prosser and P. Shaw. A Comparison of Traditional and Constraint-based Heuristic Methods on Vehicle Routing Problems with Side Constraints. Constraints, 5(4):389-414, 2000. C. Le Pape and Ph. Baptiste. Resource Constraints for Preemptive Job-Shop Scheduling. Constraints, 3(4):263-287, 1998.*7Zv0ZZj0Z(Z0Z"Z0ZZ\0Z8KIGJH ww""8"$"    1       A #  C /    \ References (4)  !C. Le Pape and Ph. Baptiste. Heuristic Control of a Constraint-Based Algorithm for the Preemptive Job-Shop Scheduling Problem. Journal of Heuristics, 5:305-332, 1999. W. Nuijten. Time and Resource Constrained Scheduling: A Constraint Satisfaction Approach. PhD Thesis, Eindhoven University of Technology, 1994. W. P. M. Nuijten and C. Le Pape. Constraint-Based Job Shop Scheduling with ILOG Scheduler. Journal of Heuristics, 3:271-286, 1998. G. Pesant and M. Gendreau. A View of Local Search in Constraint Programming. 2nd International Conference on Principles and Practice of Constraint Programming, 1996. M.-C. Portmann, A. Vignier, D. Dardilhac and D. Dezalay. Branch and Bound crossed with GA to solve Hybrid Flowshops. European Journal of Operational Research, 107(2):389-400, 1998. Z0Z Z0Z!Zd0ZZ0Z9Z0Zb5NZ9G2 <Bt    C     ^ ) h   3 C 4/References (5)  J.-C. Rgin. A filtering algorithm for constraints of difference in CSPs. 12th National Conference on Artificial Intelligence, 1994. R. Rodosek, M. Wallace and M. Hajian. A New Approach to Integrating Mixed Integer Programming and Constraint Logic Programming. Annals of Operations Research, 86:63-87, 1999. P. Shaw. Using Constraint Programming and Local Search Methods to Solve Vehicle Routing Problems. 4th International Conference on Principles and Practice of Constraint Programming, 1998. Zz0Z&Z0Z Z0Z= ][:Y W:@  F   /PPQRSTUVWXY Z [   ` ` ̙33` 333MMM` ff3333f` f` f` 3>?" dd@,?" dd@   " @ ` n?" dd@   @@``PR    @ ` ` p>>  ^(     6A ?f "  6Rf  b T Click to edit Master title style! !  0Of  b RClick to edit Master text styles Second level Third level Fourth level Fifth level!     S  0Qf ` b x@CPAIOR 02 School on Optimization!!  0Sf `  b s *C. Le Pape       0dQf ` b C*H  0޽h ? ̙33 Default Design 0 @.(    0TI P   f Y*   0I    f [* d  c $ ?  f  0J  @ f RClick to edit Master text styles Second level Third level Fourth level Fifth level!     S  6Dgf `P  f Y*   6gf `  f [* H  0޽h ? ̙33 04(    0G P    =*   04H    f ?*   6H `P  f =*   6H `  f ?* H  0޽h ? ̙33  $(  r  S Gp  r  S tG `    H  0޽h ? ̙33  P 0F(  0r 0 S hf  x  0  $if?y @? <PP `P H    0 c if?y @? <PP  H    - 0  Djf?y @? <P `P  a ILOG CPLEX       0 c kf?y @? <P   Y ILOG Solver      0 Tkf?? ` ,$D 0 aILOG Concert Technology     0 T$lf??@   >Hybrid   0  ~0e0e     ?B CfDEF& y @ 5% 8c8c     ?1  d0u0@Ty2 N<'pP'pA)BCD|E|| U Uff@`aa <   0 Zlf11ȜȜ? CF  OILOG OPL Studio$8 U0  0  mf?y @? <P? <  dILOG Scheduler   1  0  dnf?y @? <P <  eILOG Dispatcher   ? 0  $of?y @? <P<  sILOG Configurator     H 0 0޽h ? ̙33~  .&`(    s *0,$D 0x  c $of  x x  c $of x H  0޽h ? ̙33  p*(  r  S Dpf `  x x  c $pf x H  0޽h ? ̙33  *(  r  S dqf  x x  c $qf x H  0޽h ? ̙33  *(  r  S $rf   x x  c $rf x H  0޽h ? ̙33  0(  x  c $ԃf  x x  c $4f x H  0޽h ? ̙33  0(  x  c $f  x x  c $f x H  0޽h ? ̙33  p0(  px p c $f  x x p c $Tf x H p 0޽h ? ̙33  t0(  tx t c $f  x x t c $f x H t 0޽h ? ̙33D*  ))k)(  LB  c $DP r  S ԉf  x XB  0Do  XB  0Do LB  c $D@@LB  c $D``LB  c $DLB   c $DLB   c $D LB   c $D LB   c $D LB   c $D LB  c $D@@LB  c $D``LB  c $DLB  c $D P LB  c $D P LB  c $Dp Pp LB  c $DP PP LB  c $D0 P0 LB  c $DPLB  c $DPLB G c $D` LB H@ c $DpLB I c $DLB J c $DLB K c $DPLB L c $Dp@B T s *Df)  ,$D  0zl  ,$D 0   ,$D 0 N p   p `2  0p  `2  0 `2  0  `2   0 0 `2 ! 0 P `2 " 0 p `2 # 00  `2 $ 0 ` `2 % 0 `  `2 & 0 ` 0 `2 ' 0 ` P `2 ( 0` p `2 ) 00`  `2 * 0 @ `2 + 0 @  `2 , 0 @ 0 `2 - 0 @ P `2 . 0@ p `2 / 0  ` `2 0 0 0 `2 1 0 P `2 2 0 0 ` `2 3 0  `2 4 0p`2 5 0  `2 6 0  `2 7 0 0 `2 8 0 P `2 9 0p6N   :  `2 ; 0@ P `2 < 0 P `2 = 0 P` `2 > 0P@`2 ? 0P `2 @ 0` P `2 A 0 p `2 B 0 p` `2 C 0p@`2 D 0p `2 E 00@`2 F 00  @    `2 U 0` p `2 V 00`  `2 W 0P`  `2 X 0p`  `2 Y 0p@  `2 Z 0p  `2 [ 0p ` `2 \ 0p@`2 ] 0 `2 ^ 0 ` `2 _ 0  @`2 ` 0@ p `2 a 00@  `2 b 00  `2 c 00 ` `2 d 0P@  `2 e 0P  `2 f 0P ` `2 g 0P@`2 h 0P `2  0P  `2  00  `2  0 p `2  0  @z  ` M ` ,$D 0ZB N s *D!) P ZB O s *D!)ZB P s *D!) ZB Q s *D!) ` PZB R s *D!) ` P ZB S s *D!) P H  0޽h ? ̙33+  X+P+np*(  r  S 4f  x LB  c $DP XB  0Do  XB  0Do LB  c $D@@LB  c $D``LB   c $DLB   c $DLB   c $D LB   c $D LB   c $D LB  c $D LB  c $D@@LB  c $D``LB  c $DLB  c $D P LB  c $D P LB  c $Dp Pp LB  c $DP PP LB  c $D0 P0 LB  c $DPLB  c $DPLB  c $D` LB @ c $DpLB  c $DLB  c $DLB  c $DPLB  c $Dp@B  s *Df)  ,$D  0z    ,$D 0  ! ,$D 0 N p  " p `2 # 0p  `2 $ 0 `2 % 0  `2 & 0 0 `2 ' 0 P `2 ( 0 p `2 ) 00  `2 * 0 ` `2 + 0 `  `2 , 0 ` 0 `2 - 0 ` P `2 . 0` p `2 / 00`  `2 0 0 @ `2 1 0 @  `2 2 0 @ 0 `2 3 0 @ P `2 4 0@ p `2 5 0  ` `2 6 0 0 `2 7 0 P `2 8 0 0 ` `2 9 0  `2 : 0p`2 ; 0  `2 < 0  `2 = 0 0 `2 > 0 P `2 ? 0p6N   @  `2 A 0@ P `2 B 0 P `2 C 0 P` `2 D 0P@`2 E 0P `2 F 0` P `2 G 0 p `2 H 0 p` `2 I 0p@`2 J 0p `2 K 00@`2 L 00  N   M  `2 N 0` p `2 O 00`  `2 P 0P`  `2 Q 0p`  `2 R 0p@  `2 S 0p  `2 T 0p ` `2 U 0p@`2 V 0 `2 W 0 ` `2 X 0  @`2 Y 0@ p `2 Z 00@  `2 [ 00  `2 \ 00 ` `2 ] 0P@  `2 ^ 0P  `2 _ 0P ` `2 ` 0P@`2 a 0P `2 b 0P  `2 c 00  `2 d 0 p `2 e 0  @ l  ` p` ,$D 0`B g 0D!) P `B h 0D!) `B i 0D!) `B j 0D!) ` P`B k 0D!) ` P `B l 0D!)  ZB m s *D!) P ZB n s *D!)  ZB oB s *D!) H  0޽h ? ̙33,  ++pr8+(  r  S f  x LB  c $DP XB  0Do  XB  0Do LB  c $D@@LB  c $D``LB   c $DLB   c $DLB   c $D LB   c $D LB   c $D LB  c $D LB  c $D@@LB  c $D``LB  c $DLB  c $D P LB  c $D P LB  c $Dp Pp LB  c $DP PP LB  c $D0 P0 LB  c $DPLB  c $DPLB  c $D` LB @ c $DpLB  c $DLB  c $DLB  c $DPLB  c $Dp@B  s *Df)  ,$D  0z    ,$D 0  ! ,$D 0 N p  " p `2 # 0p  `2 $ 0 `2 % 0  `2 & 0 0 `2 ' 0 P `2 ( 0 p `2 ) 00  `2 * 0 ` `2 + 0 `  `2 , 0 ` 0 `2 - 0 ` P `2 . 0` p `2 / 00`  `2 0 0 @ `2 1 0 @  `2 2 0 @ 0 `2 3 0 @ P `2 4 0@ p `2 5 0  ` `2 6 0 0 `2 7 0 P `2 8 0 0 ` `2 9 0  `2 : 0p`2 ; 0  `2 < 0  `2 = 0 0 `2 > 0 P `2 ? 0p6N   @  `2 A 0@ P `2 B 0 P `2 C 0 P` `2 D 0P@`2 E 0P `2 F 0` P `2 G 0 p `2 H 0 p` `2 I 0p@`2 J 0p `2 K 00@`2 L 00  N   M  `2 N 0` p `2 O 00`  `2 P 0P`  `2 Q 0p`  `2 R 0p@  `2 S 0p  `2 T 0p ` `2 U 0p@`2 V 0 `2 W 0 ` `2 X 0  @`2 Y 0@ p `2 Z 00@  `2 [ 00  `2 \ 00 ` `2 ] 0P@  `2 ^ 0P  `2 _ 0P ` `2 ` 0P@`2 a 0P `2 b 0P  `2 c 00  `2 d 0 p `2 e 0  @XB g 0D!)P XB h 0D!) XB i 0D!) XB j 0D!)` XB k 0D!)  P XB l 0D!)  XB m 0D!) XB n 0D!) XB o@ 0D!) RB p s *D!)  RB q s *D!)`  RB r s *D!) H  0޽h ? ̙33*  **lp*(  r  S f  f LB  c $DP XB  0Do  XB  0Do LB  c $D@@LB   c $D``LB   c $DLB   c $DLB   c $D LB   c $D LB  c $D LB  c $D LB  c $D@@LB  c $D``LB  c $DLB  c $D P LB  c $D P LB  c $Dp Pp LB  c $DP PP LB  c $D0 P0 LB  c $DPLB  c $DPLB  c $D` LB @ c $DpLB  c $DLB  c $DLB  c $DPLB  c $Dp@z  ! ,$D 0  " ,$D 0 N p  # p `2 $ 0p  `2 % 0 `2 & 0  `2 ' 0 0 `2 ( 0 P `2 ) 0 p `2 * 00  `2 + 0 ` `2 , 0 `  `2 - 0 ` 0 `2 . 0 ` P `2 / 0` p `2 0 00`  `2 1 0 @ `2 2 0 @  `2 3 0 @ 0 `2 4 0 @ P `2 5 0@ p `2 6 0  ` `2 7 0 0 `2 8 0 P `2 9 0 0 ` `2 : 0  `2 ; 0p`2 < 0  `2 = 0  `2 > 0 0 `2 ? 0 P `2 @ 0p6N   A  `2 B 0@ P `2 C 0 P `2 D 0 P` `2 E 0P@`2 F 0P `2 G 0` P `2 H 0 p `2 I 0 p` `2 J 0p@`2 K 0p `2 L 00@`2 M 00  N   N  `2 O 0` p `2 P 00`  `2 Q 0P`  `2 R 0p`  `2 S 0p@  `2 T 0p  `2 U 0p ` `2 V 0p@`2 W 0 `2 X 0 ` `2 Y 0  @`2 Z 0@ p `2 [ 00@  `2 \ 00  `2 ] 00 ` `2 ^ 0P@  `2 _ 0P  `2 ` 0P ` `2 a 0P@`2 b 0P `2 c 0P  `2 d 00  `2 e 0 p `2 f 0  @Fl  ` o` ,$D 0`B h 0D!) P `B i 0D!)`B j 0D!) `B k 0D!) ``B l 0D!) ` P `B m 0D!)  ZB n s *D!) B p s *Df)  ,$D  0H  0޽h ? ̙33"  8"0" T0 !(  LB  c $DP r  S Tf   ^B  6Do  ^B  6Do RB  s *D@@RB  s *D``RB   s *DRB   s *DRB   s *D RB   s *D RB   s *D RB  s *D RB  s *D@@RB  s *D``RB  s *DRB  s *D P RB  s *D P RB  s *Dp Pp RB  s *DP PP RB   s *D0 P0 RB ! s *DPRB " s *DPDl  p  p  ,$D  0`B n 0DԔp `B y 0DԔ pP l  ,$D 0 @ p  p f2 $ 6p  f2 % 6 f2 & 6  f2 ' 6 0 f2 ( 6 P f2 ) 6 p f2 * 60  f2 / 6 ` f2 0 6 `  f2 1 6 ` 0 f2 2 6 ` P f2 3 6` p f2 4 60`  f2 9 6 @ f2 : 6 @  f2 ; 6 @ 0 f2 < 6 @ P f2 = 6@ p f2 D 6  ` f2 E 6 0 f2 F 6 P f2 O 6 0 ` f2 j 6  f2 o 6pf2 p 6  f2 q 6  f2 r 6 0 f2 s 6 P f2 t 6pp@    f2  6@ P f2  6 P f2  6 P` f2  6P@f2  6P f2  6` P f2  6 p f2  6 p` f2  6p@f2  6p f2  60@f2  60 RB  s *D` RB @ s *DpRB  s *DRB  s *DRB  s *DPLB  c $Dp@l  ` ` ,$D 0`B  0D!) P `B  0D!)`B  0D!) `B  0D!) ` P`B  0D!) ` P `B  0D!) P B  s *Df)  ,$D  0H  0޽h ? ̙33!  2!*!0VX (  r  S f  f LB  c $DP XB  0Do  XB  0Do LB  c $D@@LB  c $D``LB   c $DLB   c $DLB   c $D LB   c $D LB   c $D LB  c $D LB  c $D@@LB  c $D``LB  c $DLB  c $D P LB  c $D P LB  c $Dp Pp LB  c $DP PP LB  c $D0 P0 LB  c $DPLB  c $DPFz  p   p  ,$D  0ZB  s *DԔp ZB  s *DԔ pP z   ,$D 0 N p   p `2  0p  `2  0 `2   0  `2 ! 0 0 `2 " 0 P `2 # 0 p `2 $ 00  `2 % 0 ` `2 & 0 `  `2 ' 0 ` 0 `2 ( 0 ` P `2 ) 0` p `2 * 00`  `2 + 0 @ `2 , 0 @  `2 - 0 @ 0 `2 . 0 @ P `2 / 0@ p `2 0 0  ` `2 1 0 0 `2 2 0 P `2 3 0 0 ` `2 4 0  `2 5 0p`2 6 0  `2 7 0  `2 8 0 0 `2 9 0 P `2 : 0p6N   ;  `2 < 0@ P `2 = 0 P `2 > 0 P` `2 ? 0P@`2 @ 0P `2 A 0` P `2 B 0 p `2 C 0 p` `2 D 0p@`2 E 0p `2 F 00@`2 G 00 LB H c $D` LB I@ c $DpLB J c $DLB K c $DLB L c $DPLB M c $Dp@XB O 0D!)P XB P 0D!) XB Q 0D!) XB R 0D!)`  PXB S 0D!)`  P XB T 0D!)  B U s *Df)  ,$D  0RB V s *D!) RB W s *D!) RB X s *D!)P H  0޽h ? ̙33|!  ,!$!@UX (  r  S f  f LB  c $DP XB  0Do  XB  0Do LB  c $D@@LB  c $D``LB   c $DLB   c $DLB   c $D LB   c $D LB   c $D LB  c $D LB  c $D@@LB  c $D``LB  c $DLB  c $D P LB  c $D P LB  c $Dp Pp LB  c $DP PP LB  c $D0 P0 LB  c $DPLB  c $DPFz  p   p  ,$D  0ZB  s *DԔp ZB  s *DԔ pP z   ,$D 0 N p   p `2  0p  `2  0 `2   0  `2 ! 0 0 `2 " 0 P `2 # 0 p `2 $ 00  `2 % 0 ` `2 & 0 `  `2 ' 0 ` 0 `2 ( 0 ` P `2 ) 0` p `2 * 00`  `2 + 0 @ `2 , 0 @  `2 - 0 @ 0 `2 . 0 @ P `2 / 0@ p `2 0 0  ` `2 1 0 0 `2 2 0 P `2 3 0 0 ` `2 4 0  `2 5 0p`2 6 0  `2 7 0  `2 8 0 0 `2 9 0 P `2 : 0p6N   ;  `2 < 0@ P `2 = 0 P `2 > 0 P` `2 ? 0P@`2 @ 0P `2 A 0` P `2 B 0 p `2 C 0 p` `2 D 0p@`2 E 0p `2 F 00@`2 G 00 LB H c $D` LB I@ c $DpLB J c $DLB K c $DLB L c $DPLB M c $Dp@B U s *Df)  ,$D  0@l  ` X` ,$D 0`B P 0D!)`B Q 0D!) `B R 0D!) `P`B S 0D!) ` P `B T 0D!)@ p ZB VB s *D!) PP ZB WB s *D!)p@ H  0޽h ? ̙33Z   PQX(  LB W c $DP r  S tf  f XB  0Do  XB  0Do LB  c $D@@LB  c $D``LB  c $DLB   c $DLB   c $D LB   c $D LB   c $D LB   c $D LB  c $D@@LB  c $D``LB  c $DLB  c $D P LB  c $D P LB  c $Dp Pp LB  c $DP PP LB  c $D0 P0 LB  c $DPLB  c $DPX2  0 p X2  0 X2  0  X2  0 0 X2  0 P X2  0 p X2  0 0 X2  0` X2   0`  X2 ! 0` 0 X2 " 0` P X2 # 0` p X2 $ 0` 0 X2 % 0@ X2 & 0@  X2 ' 0@ 0 X2 ( 0@ P X2 ) 0@ p X2 * 0  ` X2 + 0 0 X2 , 0 P X2 - 0 0 ` X2 . 0  RB / s *DԔp X2 0 0pX2 1 0 X2 2 0  X2 3 0 0 X2 4 0 P X2 5 0pRB 6 s *DԔp P X2 7 0@ P X2 8 0 P X2 9 0 P` X2 : 0P@X2 ; 0P X2 < 0` P X2 = 0 p X2 > 0 p` X2 ? 0p@X2 @ 0p X2 A 00@X2 B 00 LB D@ c $DpLB E c $DLB F c $DLB G c $DPLB H c $Dp@Fl   U ,$D 0`B J 0D!) P `B K 0D!)`B L 0D!) `B M 0D!) ``B N 0D!)  P `B O 0D!) 0  ZB T s *D!)` 0 LB V c $D` B X s *Df)  ,$D  0H  0޽h ? ̙33  `0(  x  c $Ԍf  e x  c $4f e H  0޽h ? ̙33  p0(  x  c $Tf  e x  c $f e H  0޽h ? ̙33  0(  x  c $!c  e x  c $$"c e H  0޽h ? ̙33o  x(  xx x c $"c  e jB x B1? , d x <1?jB x B1?, , jB x B1?, , , d  x <1? (jB  x BPP1?L L jB  x BPP1?L , L   x H"cPPPP1? ( <   x  `#cgֳgֳ1? fProblem definition hh88 x  `d$cgֳgֳ1?)  t Decision-making (and retracting)! !hh88 x  `$%cgֳgֳPPPP1?  jConstraint propagation hh88L  |  x# @0 8 l x <1? | ' x Z%cgֳgֳ?  $  AProblem specification or partial solution in terms of constraintsB Bhh88jB x B1?, jB x B1?,jB x BPP1?P  jB x BPP1? , jB x B1?  jB x BPP1?  jB x B1? , jB x BPP1?P jB x B1?  x  `D&cgֳgֳ? zA  s#Initial constraints Dynamic changes$ $hh88 x  `'cgֳgֳ?  1 r"Deduced constraints Contradictions# #hh88 x  `'cgֳgֳ?=bz  kNew constraints (decisions) hh88H x 0޽h ? ̙33  R(  r  S $(c  e z %   ~ ,$D  0k   (cgֳgֳ 32 @f11?-   x - y = 1b       hh88  Z 3G/*f11? ] Q   )cgֳgֳ 32 @f11?; %  #x in [2..3] y in [1..2] z in [1..3].$  hh88z      ~ ,$D  0#    *cgֳgֳ 32 @f11?  [y < z  hh88   Z 3G/*f11? } [    *cgֳgֳ 32 @f11?;   #x in [2..3] y in [1..2] z in [2..3]8$  hh88z = }    ~`,$D  0>    $+cgֳgֳ 32 @f11?m M vx != z   hh88  Z 3G/*f11? [   +cgֳgֳ 32 @f11?; = } #x in [2..3] y in [1..2] z in [2..3]8$  hh882  Nbgֳgֳ? @ $Constraints: x - y = 1 y < z x != zX%  hh88  TTbgֳgֳ?p /Variables: x in [1..3] y in [1..3] z in [1..3]$0  $hh88H  0޽h ? ̙33  91(  r  S b   z = }   ,$D  0E   bgֳgֳ 32 @f11?m M }y = 1   hh88  Z 3G/*f11?    bgֳgֳ 32 @f11?; = } x = 2 y = 1 z = 3V >   hh88z  `    ,$D 0#    4bgֳgֳ 32 @f11?P 0  [y = 2  hh88   Z 3G/*f11?$ .     bgֳgֳ 32 @f11? `  x = 3 y = 2 z = 3V   hh88[z 0 `    0 ,$D 0   Z 3G/*f11?0: ?   Tbgֳgֳ 32 @f11? `  wFAILURE  hh88mz ` M    0E ,$D 0ZB  s *DԔ`  ZB B s *DԔ  `B  0DԔ 0   Bb|ԔP M  = Backtrack  2  Nbgֳgֳ?Pp  $Constraints: x - y = 1 y < z x != zX% hh88  T4bgֳgֳ?P /Variables: x in [2..3] y in [1..2] z in [2..3]$0  $hh88H  0޽h ? ̙33  <(  ~  s *b  c ~  s *b c H  0޽h ? ̙33  <(  ~  s *b  c ~  s *b c H  0޽h ? ̙33  <(  ~  s *b  c ~  s *b c H  0޽h ? ̙33"  $$ J(       `bgֳgֳ ?  c ^   68c?]` m^   68c?(` 8^   68c?  ^   68c? [ ^   68c? 4 ^   68c?   ^   68c?H [ X ^   68c?[ ^   68c?H 4X ^   68c?H  X    Zbgֳgֳ?` g _ Masonry (7)   hh88   ZD5bgֳgֳ?  a Carpentry (3) hh88   Z6bgֳgֳ?a ; H  _ Roofing (1)   hh88   Z6bgֳgֳ?   _ Windows (1)   hh88   Z7bgֳgֳ? ,$  ^ Facade (2)   hh88   ZD8bgֳgֳ?   ^ Garden (1)   hh88   Z9bgֳgֳ?   ` Painting (2)   hh88   Z9bgֳgֳ?A ( ^ Moving (1)   hh88   Z:bgֳgֳ?a LH  ` Plumbing (8)   hh88   ZD;bgֳgֳ?a H  ` Ceilings (3)   hh88dB  @ <1? dB   <1? @ dB   <1? Y@ dB   <1?@ dB  @ <1?`  dB   <1?`  dB   <1?`  dB   <1?` dB  @ <1?`  dB   <1?` YY dB !  <1?  dB "  <1?  dB # @ <1?  dB $ @ <1?  Y H   0޽h ? a(!  J!B!:< (     `bgֳgֳ?H 8  TR. hh88   `?bgֳgֳ?  a  ZCeilings  hh88   `d?bgֳgֳ?p D  XFacade hh88   `?bgֳgֳ?  $ q  TW. hh88L  Y  # m A f  61? B   Z$@bgֳgֳ? Y  TG. hh88   `@bgֳgֳ?] H 1 XPaint. hh88jB  B1?Q|nQjB @ B1?8Z8jB  B1? Z jB  B1?(Z(jB  B1?  jB   B1? L  jB ! B1?X jB " B1? Q jB # B1?ZZ jB $ B1? jB % B1?  jB & B1?  jB ' B1?` p p jB (@ B1? p  jB ) B1? q  jB * B1? q 4  jB + B1?h jB , B1?D OjB - B1?4 //{L aWE+ .# ?[if / 61?_> 0 Z@bgֳgֳ?aWE+ TM. hh88jB 1 B1?UXjB 2 B1?)jB 3 B1?)9 9 jB 4 B1?4 jB 5 B1? 6  `Dgֳgֳ?P$ S0 hh88 7  `gֳgֳ?PI$ S5 hh88 8  `gֳgֳ?P $ T10 hh88 9  `dgֳgֳ?P $ T15 hh88 :  `gֳgֳ?Prf$ T20 hh88H  0޽h ? a(  4,0(     ` gֳgֳ ?      ` gֳgֳ ?  H  0޽h ? a($  ##P<>$6#(  $ $  `d"gֳgֳ ?   4"8 nC >$PnrB $ B1?~N~rB $ B1?NrB $ B1?S NS rB $ B1?NrB $ B1?*N*l $ <1?l  $ <1?l  $ <1?O l  $ <1?X 1 l  $ <1?:  l  $ <1? O z l $ <1? j l $ <1?X  J $  `"gֳgֳ?r  YMasonry hh88 $  `#gֳgֳ?,  ZPlumbing  hh88 $  `D$gֳgֳ?T  [ Carpentry  hh88 $  `$gֳgֳ?H 8  TR. hh88 $  `d%gֳgֳ?  ZCeilings  hh88 $  `%gֳgֳ? t  XFacade hh88 $  `$&gֳgֳ? $  TW. hh88T  Y  $#  q f $ 61? B  $ Z&gֳgֳ? Y  TG. hh88 $  `&gֳgֳ?H a XPaint. hh88rB $ B1?|nrB $B B1?ZhhrB $ B1?Z( ( rB $ B1?ZXXrB $ B1?  H rB  $ B1? M L M rB !$ B1? rB "$ B1? Q rB #$ B1?ZZ( rB $$ B1? rB %$ B1?  rB &$ B1?  rB '$ B1? 8 rB ($B B1? 8 8 rB )$ B1? H H rB *$ B1? 8 4 8 rB +$ B1? rB ,$ B1?n rB -$ B1?/d / .$  `D'gֳgֳ?T S0 hh88 /$  `'gֳgֳ?IT S5 hh88 0$  `(gֳgֳ?  T T10 hh88 1$  `d(gֳgֳ? T T15 hh88 2$  `(gֳgֳ?rfT T20 hh88xB 3$B HԔ?Q hH T aWE+ 4$# [oiCf 5$ 61?_> 6$ Z$)gֳgֳ?aWE+ TM. hh88rB 7$ B1?rB 8$ B1?)rB 9$ B1?4 N4 rB :$ B1?+ rB ;$ B1?H $ 0޽h ? a(!  \!T!p:<, (  , ,  `)gֳgֳ ?   jB , B1?~~~jB , B1?~jB , B1?S S ~jB , B1?~jB , B1?**~d , <1?d  , <1?d  , <1?O zd  , <1?j d  , <1? :  Z d  , <1? O J d , <1? : d , <1?b X   ,  `t;gֳgֳ?r YMasonry hh88 ,  `4<gֳgֳ?,  ZPlumbing  hh88 ,  `<gֳgֳ?T  [ Carpentry  hh88 ,  `T=gֳgֳ?  TR. hh88 ,  `>gֳgֳ?  a  ZCeilings  hh88 ,  `t>gֳgֳ?p D  XFacade hh88 ,  `>gֳgֳ?  $ q  TW. hh88L  Y  ,# m A f , 61? B  , Z4?gֳgֳ? Y  TG. hh88 ,  `?gֳgֳ?] H 1 XPaint. hh88jB , B1?Q|nQjB ,@ B1?8Z8jB , B1? Z jB , B1?(Z(jB , B1? H jB  , B1?M M jB !, B1?X jB ", B1? Q jB #, B1?ZZ jB $, B1? jB %, B1?  jB &, B1?  jB ', B1?h jB (, B1?> OjB ), B1?4 // *,  `?gֳgֳ?P$ S0 hh88 +,  `T@gֳgֳ?PI$ S5 hh88 ,,  `@gֳgֳ?P $ T10 hh88 -,  `Agֳgֳ?P $ T15 hh88 .,  `tAgֳgֳ?Prf$ T20 hh88jB /, B1?pB 0,@ HԔ? 4  pB 1,@ HԔ?  pB 2,@ HԔ?  L fXJ, 3,# @bof 4, 61?`C 5, ZAgֳgֳ?fXJ, TM. hh88jB 6, B1?VYjB 7, B1?/jB 8, B1?%: : jB 9, B1?4 jB :, B1?H , 0޽h ? a(!  !!;J40 !(  4 4  `Bgֳgֳ ?   d 4 <1?d  4 <1?d  4 <1?W d  4 <1?t d  4 <1? W T d  4 <1?l `  $d 4 <1?\o 4  `Bgֳgֳ?p YMasonry hh88 4  `Cgֳgֳ?/  ZPlumbing  hh88 4  `tDgֳgֳ?Z  [ Carpentry  hh88 4  `Dgֳgֳ?  TR. hh88 4  `Egֳgֳ?  k  ZCeilings  hh88d 4 <1? D  4  `Egֳgֳ? \  XFacade hh88L    4#  { f 4 61? ~r  4 ZTFgֳgֳ?   TW. hh88L  Y  4# w K f 4 61? ~B  4 ZFgֳgֳ? Y  TG. hh88 4  `Ggֳgֳ?g O  ; XPaint. hh88 4  `gֳgֳ?Tjw( TM. hh88jB  4@ B1?B[BjB !4 B1? [ jB "4 B1?2[2jB #4 B1?  R jB $4 B1?R  R jB %4 B1?b   jB &4 B1?  X jB '4 B1?[[ jB (4 B1? jB )4 B1?  jB *4 B1?  jB +4 B1?jB ,4 B1?< jB -4 B1?> jB 34 B1?jB 44 B1? 9 jB 54 B1? ??jB 64@ B1?r9jB 74 B1?  jB 84 B1?  jB 94 B1?" " jB :4 B1?  pB ;4@ HԔ? jB <4 B1?33 3 dB @4 <1?~~~dB A4 <1?~dB B4 <1?S S ~dB C4 <1?~dB D4 <1?**~dB E4 <1?Q|nQ F4 Zgֳgֳ?P$ S0 hh88 G4 ZTgֳgֳ?PI$ S5 hh88 H4 Zgֳgֳ?P $ T10 hh88 I4 Zgֳgֳ?P $ T15 hh88 J4 Ztgֳgֳ?Prf$ T20 hh88H 4 0޽h ? a("  ""=@< "(  < <  `4gֳgֳ ?   jB < B1?~~~jB < B1?~jB < B1?S S ~jB < B1?~jB < B1?**~d < <1?d  < <1?d  < <1?O zd  < <1?j d  < <1? O J d  < <1?b X   <  `gֳgֳ?r YMasonry hh88 <  `Tgֳgֳ?,  ZPlumbing  hh88 <  `gֳgֳ?T  [ Carpentry  hh88 <  `tgֳgֳ?  TR. hh88 <  `4gֳgֳ?  a  ZCeilings  hh88d < <1? :  <  `gֳgֳ?p D  XFacade hh88L    <#  {q f < 61? ~r  < Zgֳgֳ?   TW. hh88L  Y  <# m A f < 61? ~B  < ZTgֳgֳ? Y  TG. hh88 <  `gֳgֳ?] H 1 XPaint. hh88jB < B1?Q|nQjB <@ B1?8Z8jB < B1? Z jB  < B1?(Z(jB !< B1? H jB "< B1?H H jB #< B1?X jB $< B1? Q jB %< B1?ZZ jB &< B1? jB '< B1?  jB (< B1?  jB )< B1?bjB *< B1?(4 4 jB +< B1?+ bjB ,< B1?8  -<  `gֳgֳ?P$ S0 hh88 .<  `tgֳgֳ?PI$ S5 hh88 /<  `gֳgֳ?P $ T10 hh88 0<  `4gֳgֳ?P $ T15 hh88 1<  `gֳgֳ?Prf$ T20 hh88jB 2< B1?jB 3< B1? ' jB 4< B1? ..$L !a5 5<# I?'f 6< 61?Fj 7< Zgֳgֳ?!a5 TM. hh88lB 8<B <1?jB 9< B1?x  jB :< B1?  jB ;< B1?  jB << B1?  jB =< B1?H jB >< B1?bH < 0޽h ? a(  4,D(  D D  `gֳgֳ ?    D  `gֳgֳ ?  H D 0޽h ? a(  4,L(  L L  `4gֳgֳ ?    L  `vgֳgֳ ?0  H L 0޽h ? a(   4,T(  T T  `Txgֳgֳ ?    T  `xgֳgֳ ?  H T 0޽h ? a(   4,0\(  \ \  `ygֳgֳ ?    \  `4zgֳgֳ ?  H \ 0޽h ? a(   4,Pd(  d d  `T{gֳgֳ ?    d  `{gֳgֳ ?  H d 0޽h ? a(D!    p:<x (  r  S |   jB  B1?~~~jB  B1?~jB  B1?S S ~jB  B1?~jB   B1?**~d   <1?d   <1?d   <1?O zd   <1?X 1 j d  <1? :  Z d  <1? O J d  <1? : d  <1?b X     `4}gֳgֳ?r YMasonry hh88   `}gֳgֳ?,  ZPlumbing  hh88   `~gֳgֳ?T  [ Carpentry  hh88   `gֳgֳ?H 8  TR. hh88   `gֳgֳ?  a  ZCeilings  hh88  Z4gֳgֳ?p ,D  XFacade hh88   `gֳgֳ?  $ q  TW. hh88L  Y  # m A f  61? B   Zgֳgֳ? Y  TG. hh88   `Tgֳgֳ?] H 1 XPaint. hh88jB  B1?Q|nQjB @ B1?8Z8jB  B1? Z jB   B1?(Z(jB ! B1?  jB " B1? L  jB # B1?X jB $ B1? Q jB % B1?ZZ jB & B1? jB ' B1?  jB ( B1?  jB ) B1?` p p jB *@ B1? p  jB + B1? q  jB , B1? q 4  jB - B1?h jB . B1?D OjB / B1?4 //{L aWE+ 0# ?[if 1 61?_> 2 Zgֳgֳ?aWE+ TM. hh88jB 3 B1?UXjB 4 B1?)jB 5 B1?)9 9 jB 6 B1?4 jB 7 B1? 8  `gֳgֳ?P$ S0 hh88 9  `tgֳgֳ?PI$ S5 hh88 :  `Tgֳgֳ?P $ T10 hh88 ;  `gֳgֳ?P $ T15 hh88 <  `gֳgֳ?Prf$ T20 hh88H  0޽h ? ̙33z  *" (  x  c $t   z  p   p  ,$D 0zN ) p   pZ  s *PP) p  <4 c FResource sub-problemzN ) p   X Z  s *PP) p   < c FResource sub-problemzN ) p    P  Z   s *PP) p   < c FResource sub-problemR   s *p   <tP0i  HTemporal sub-problemz 0    0  ,$D 0fB  6Do0 0fB  6Do fB  6Do   z P   P ,$D 0Z  s *fP   <40  KCost function sub-problemRz P     P,$D 0`B  0DoP P `B  0DoP  :z   ,$D 0fB B 6Do fB B 6DofB B 6Do ` fB  6Doz 0@  0@,$D 0`2  00@   < @  SResource allocation sub-problem  H  0޽h ? ̙33  OG(  r  S T   r  S      0 0  SCP Any constraints Linked relaxations of multiple sub-problems Guidance from the possible solutions of the relaxed sub-problems Redundant constraints Scheduling example: hard to deal with sum cost functionsN0Z0Z!=fH  0޽h ? ̙33  l0(  lx l c $t   x l c $  H l 0޽h ? ̙33  |0(  |x | c $   x | c $t  H | 0޽h ? ̙33  0(  x  c $ԟ   x  c $4  H  0޽h ? ̙33  0(  x  c $   x  c $T  H  0޽h ? ̙33  :2(    s *P,$D 0~  s *   ~  s *t  H  0޽h ? ̙33       (   x  c $Ԣ     <@  bComplete model  Pl       ,$D 0fB   6DԔ  pfB   6DԔ P l  @   @`  ,$D 0   6T0@  :Solver 1  `B   0DԔ 000l  P    ` P ,$D 0   60pP  :Solver 2  `B   0DԔ@ @p`B   0DԔ ` 0` l  P    P `  ,$D 0   6ԥ0   :Solver 3  `B   0DԔ@P @ `B   0DԔ 0 l @   @` ,$D 0   <@  _ Sub-model 1      <Tp P  _ Sub-model 2      <  = Sub-model 3  `B   0DԔ00`B   0DԔ` ` `B   0DԔ  b  s *p0 ,$D 0H  0޽h ? ̙33  X0(  Xx X c $t   x X c $Ԩ  H X 0޽h ? ̙33  \<(  \~ \ s *   ~ \ s *  H \ 0޽h ? ̙33    dD(  `x ` c $   F  b r b BA?(JN    b   r b BA? ? r b BA?!(  N Jh b Jhr b BA?Jr b BA?H(r b BA? hN 1  b 1 r b BA?1 r b BA?8 r b BA?o Xr b BA?Q  r b BA? X/  r b BA?  x r b BA?q  r b BA? x O 8 r  b BA?1   !b Ngֳgֳ?i p +How to satisfy orders with a MINIMAL COST ? ,( 2,3hh88 "b Nfgֳgֳ?y  ] Warehouse ( 2 hh882 #b C ENGHZJQ1? `T`T`T`T`T`T`T`T`T`T xB $b H1?9  xB %b H1? X fN ;:9 &b ;:9P 'b B+CDEF?77y *!Df,zPzvG +YepglFl/{ g ;M^ _U7UIUX\zg{yop@;:9 (b pBCDEF ?AAzy +:Voxpjjvx)zjb8]Y.:llliSl@l)yI  ):>;"<F:T;s;zx{z@L %h )b 8BCDEF?::+/29>Pd{[lN7&M&:&%&8Nv*rUE:3  Gicux@4 *b PBMCDEtF|?J@J1J=JKK[KbKrJ@3#ugWO=>0LK4K7J@;<@ +b BECDEF?AD=A @u ,b B-CDEF?,, @An -b BGCADEF?9F@9 @q  .b BCDE F(? L E  @ /b BCDE$F,? V I@ 0b BC*DE$F,? [ N%)@ 1b BCDEF$?NH@ 2b BC%DEF?$ $ @ 3b BSCDEF?RJF R @P 4b BRCDEF?QIF Q @K 5b BSCDEF?RI E R @< 6b BC?DEF?*>( @ P# 7b BuCDEF?tUPt @v 8b B)CDEF?( ( @ 9b BCSDEF?R @$%5x :b B/CDEF?. @'V ;b B7C'DEF?6& @   L ,5Vef-0@} >b B<C'DE$F,? ;;;&&&@F ?b B<C'DE$F,? ;;;&&&@VF @b B<C)DE$F,? ;;;(((@MVv Ab B<C*DE$F,? ;:;)((@Lv Bb B=C9DE@FH?(!/;:<!:*:1<8%777(!$@p Y Cb BJC7DEF ?H'I6  @ Db BC"DEF?! @- Eb BCDEF ?VMW @v Fb BCDEF? @. Gb BGC:DEF?2F92 @k  Hb BGC2DEF?*F1* @e  Ib BGC*DEF?"F)" @^  Jb BGC!DEF?F  @X y Kb BGCDEF?F @Q j Lb BGCDEF? F @K \ Mb BGCDEF?F @F W Nb BGCDEF?F @7 H Ob BGCDEF?F @( ; Pb BGCDEF?F @ 3 Qb BGCDEF?F @ ) Rb BGCDEF?F @   Sb BGCDEF?F @  Tb BGC!DEF?F  @  Ub B=C6DE@FH?(45!5/5;4:,;!::<%!$@p` Vb B>C8DE@FH?=(=<+ (.66+6=7=(!$@) gX Wb B>C5DE@FH?==(<4+43 33)+==!$@)`g Xb B=C)DE$F,? <<<( ((@_F Yb B=C)DE$F,? <<<( ((@_MvH Zb BCbDEXF`?^3]f^`aT9*}I% (1N]^-0@Jz [b B7C&DE$F,? 55$$6%5@ F \b B7C'DE$F,? 66%%6&6@F ]b B7C(DE$F,? 66%&6'6@Jr ^b B6C'DE$F,? 55%&5&5@Mt _b B7C'DE$F,? 66%&6&6@RE `b B7C'DE$F,? 66%&6&6@RKr ab BCDEF? @Y*n? bb BCDEF? @XXml cb BCDEF? @*? db BCDEF? @Xl eb BCDEF? @,A fb BCDEF? @Zn gb BCDEF? @.B hb BCDEF? @]q ib BCDEF? @ .6B jb BCDEF? @ ]6q kb BCDEF? @e.{B lb BCDEF? @e]{q mb BCDEF? @1=GR nb BCDEF? @0{F ob BCDEF? @{=R pb BCDEF? @z{ qb xBCDEF?""^I7 \3  `E%  *:IZi~=|}|x,wosrq^EH@UQp rb @BC)DElFt?l?'(1'&&+%W${"!!  r*x $ l78@# sb B%C#DEF?$""$ @] tb BC#DEF?""" @_p ub B7C(DE$F,? 2'0. !"362'@0Agi vb BCDEF?; @Rc wb B*CDEF$?) )@`  xb BGCRDEF?ii#""!!     !""$$&''()+ , -!/!1!2"4#5$6$7$9%;&;'<'='?(?(@*A*A*B,B,C-D-D.D/E0E0E2E2E3F4F5F6F7F8F:F;F<F=E>E?E@EADBDCCDBEBFAG@H?I?J=J<L;L9M7M6N5O3O1O/P-P+P(P&Q$Q!Q QQQQQPPPOOOO N M MLLKJIHGGFEDCBA@?76==>>??@@AAAABBBBBBCC C C!C"C"C#C$C%C&C'C'C(C(B)B)B*B+A+A,@,@,?-?->->-=-=-=-<-<-;-;-:-:-9-9-8,8,7,7+6+6*5)5(5(4'3&3&3$3$2"2"1!1 0000///.----,,+***) ( ( ' ' ' %%$$#""!!          "&'),-0135679;<=??@A B B D DDEEEFFFFF-------,,,,,,,+++*))((''&%$#@w yb BICQDE$F,? HH12OPH@t9 zb BJCUDE F?%T"T TSSSSRRRQQ P O O NMLKJIHGFEDBA@?><:          "%'*+.024679:<=>@ABBD D E F F GGHHIIIIII9I:I<I=I?I@HAHBGDGEFFFGEIDJCKBKAL@M?N>O<O;P9P8Q6Q4R2R0S.S,S*S'S%T@CoX {b (BC7DEF?xx ,,-..//001122333445555666666 6 6 6 6 6 6 5 5554443332211100//..-,,,    @_~r |b `BOCSDE|F?!"$&(*,-0135689;<>?@BCDEEG G H HHIIIIHHHHHHGGGG F E!E"E"D#D#C$C$B$B%B%B%A%@&@&?&?&>'>'='<'<(;(;(;(<(<(=(>(>)?)?)@)@)A)A*B*B*C*C+C+D+D,E,E,E-F-G.G.G/G/G0H0H1H1H1H2H2H3H3H4H5I5I6I6I7I7I8I8I9I9I:I:I;I;I<I=I=I>I>I?I@I@IAIBIBIBICICIDIEIEIEIFIFIGIHIHIHJIJIJJJKJKJKJKJLJMKMKMKNLNLNLNLNMNMOMOMPNP1Q1P0P0P/O/N/N.N.N.M.M.L.K.K.K.=.=.<.<.;.;.:.:.9-9-8-8-7-7-6-6,5,5,4,4,4+3+3*2)2)2)2(2(2(1'1&1&1%1%1$1#1#1"11QR@l }b `BCDEF???                     @{ ~b B@CWDE4F<? <<!< <13D>C?TV@f8 b BCDEF?  @ b BCDEF?   @ b BCDEF?  @y b BCDEF?  @  b BCDEF? @$7 b BCDEF?   @iz b BCDEF?  @@Q b BCDEF?  @- b BCDEF?   @@ b BCDETF\?    +,@x b BCDEF ?   @ b BCDEF$?  @ b BCDEF?  @ b BCDEF?   @p b BCDEF? @bs b BCDEF? @~ b BCDEF?  @ b BCDEF$?    @ b BCDEF? @ b BCDEF?  @ b BCDEF?   @ b BCDEF? @* b BCDEF? @{' b BCDEF? @d u b BCDEF?  @2C b BCDEF?  @DrU b BCDEF?  @'j8{ b BCDEF?  @(9 b BCDEF? @l  b BCDEF? @p b BCDEF?   @q b BCDEF ? @ b BCDEF$?   @y b BCDEF ?   @GxX b BCDEF? @y b BCDEF? @  b BCDEF? @+x< b BCDEF ?  @ b BCDEF?  @ b BCDEF? @ b BCDEF? @ b BCDEF?  @ b B(CDE F(?%"''%@%ZMw b BCDEF?  @-K b BC%DE,F4? $  @txB b H1?yh b NTfgֳgֳ? [Buy  2hh88xB b Hf1?)  b Nfgֳgֳ?  \Rent  2fhh88#_N }  b } tN }h b }hsN y b y b BCDEF? @E b BCCDEF?BBB @@]\ b BCDEF?2 @]E b C BCDEF1?2 @`F b BC!DEF nnn?    @L7]X( b BOC)DEF?rr+ 07>DINLIGG G GFHKLIIKLKHGHKLGDA><9;?=;7 6!8 ; = <!;!9!8!7#7$5&3(0(,('&$$"#         !##$''%%'(+,+**,./146765443 3 0 / - + @c_ b B-CDE F(nnn?, (), @HNu_ b BCDEF nnn? @CT@ b B3CBDEFnnn?uu @AAA>;86988:<>< ;!9 86541.,)'$ "' * - - / 2 2 2/. , ) $ "           # $ ) , . 1 6 9 ;;;<>? @@ FK b BBChDEF?g<A fg @ b C BDCkDEF1?j>C ij @! b BCDEF ?*+ @X  b BCDEF ?,+ @sU b B)CDEF?(( @- b BCDE0F8nnn?     @!2 b BCDE(F0nnn?      @0 b BCDE(F0nnn? @"3 b BCDEF nnn? @$5 b BCDE$F,nnn?     @&7 b BCDEF nnn?    @(9 b BC1DEF ?0/00 @=n@ b BC&DETF\?    "%"     +,@c}t b hBxCDEF? !#")11 * & % # & * / 4 6886:==@@B CBEE F FHFHI K L"I"F"I#J#O%Q%S%R&R(T(T*T-S/R0R2O2L2M4O4Q4T4V2Y2Y5Y8Z9\<\?[CZDYCX?VAS>R<Q>Q?QCQDODMCLAL>K<J>I?HCIFJHLHLIMIQKRISFUDVFXHYK[I]H`D`CaKaPcTcWd\caab`f^n^u^z^}[[]^\\^^`accdddghilmnmnnooruvwsold]ZZTLIIMQTXVUSRQPPLJHFHHFFDDDCAAAA@x@nAhAa?]@X?W<U<P:K4H3F1C1;.4*.*+)&'#'"$#%#" " "@ e b BChDEF nnn? gg g g @GX b BCDE$F,nnn?     @IZ, b BCDE$F,nnn?   @I"Z3 b BCDE(F0nnn?     @I&Z7 b BCDE(F0nnn?    @L']8 b BCDE$F,nnn? @O$`5 b BCDEF nnn?  @M^/ b BCDE(F0?   @M)^* b BCDE$F,? @N(_9 b BCDE(F0? @M'^8 b BCDE(F0? @L'M8 b BCDE(F0?  @J'[8 b BCDE$F,? @J([9 b BCDE(F0? @J)[* b BCDE(F0? @J+[< b BCDE$F,? @J+[< b BCDE(F0?  @J+[< b BCDE(F0? @L+M< b BCDE(F0? @M+^< b BCDE(F0? @M+^< b BCDE$F,? @M+^< b BCDE$F,? @N*_+ b BCDE(F0?   @O2`3 b BCDE$F,? @O0`A b BCDE$F,?  @O.`? b BCDE$F,?  @O-P> b BCDE F(?@N,O= b BCDE(F0? @L,M= b BCDE(F0?    @J-[> b BCDE(F0?  @I.Z? b BCDE$F,? @H0YA b BCDE$F,? @H2Y3 b BCDE$F,? @H2Y3 b BCDE(F0? @H4YE b BCDEF ?  @I4ZE b BCDE(F0?  @J5[F b BCDE(F0? @L5MF b BCDEF ? @L5]F b BCDE(F0? @O5PF b BCDE(F0?    @O5`F b BCDE$F,? @O5`F b BCDE(F0? @O4`E b BCDE$F,? @O2`3 b BCDE$F,? @M,^= b BCDE(F0?    @L)]: b BCDE(F0?   @L)]: b BCDE(F0? @L)M: b BCDE(F0? @K)\: b BCDE(F0? @J)[: b BCDE(F0?    @I)Z: b BCDE$F,? @H,Y= b BCDE(F0? @G-X. b BCDE(F0? @G.X? b BCDE(F0?   @H.Y? c BCDE$F,?  @I/Z@ c BCDE(F0? @J/[@ c BCDE(F0? @L/M@ c BCDE$F,?    @L/]@ c BCDE(F0? @L/]@ c BCDE$F,? @M.^? c BCDE(F0? @M.^/ c BdCDEF?c @W  c BZCDEF?,Y, @AJ  c B+CDEF?** @n  c BbCDEF?a @nT  c BC4DE$F,? 3+33@ Ey  c hBCDEF?              AD@AUXh  c BC1DEF nnn?-+0- @Du c BC*DEF?)$) @I c BC)DEF?($( @(Q c BC)DEF?($( @1Z c BC(DEF?'#' @:-b c BC(DEF?'#' @<CMk c BC(DEF?'$' @k c BC)DEF?(%( @p c BC)DEF?($( @u  c BC(DEF?'$' @{, c BC(DEF?'$' @;L c BC(DEF?'#' @ c BC)DEF?($( @  c BC*DEF?)%) @ c BC(DEF?'$' @- c BC(DEF?'#' @<M' c BC)DEF?(%( @ c BC(DEF?'$' @ c BC'DEF?&#& @   c BC'DEF?&#& @, !c BC(DEF?'$' @;L "c BC(DEF?'$' @$ #c BC'DEF?&#& @) $c BC)DEF?($( @ / %c BC(DEF?'$' @ ,3 &c BC)DEF?($( @;L; 'c Nfgֳgֳ?}h aorder 1"( 23hh88tN }  (c } sN   )c   *c BCDEF? @  +c BCCDEF?BBB @ ]  ,c BCDEF?2 @]  -c C BCDEF1?2 @`  .c BC!DEF nnn?    @L]( /c BOC)DEF?rr+ 07>DINLIGG G GFHKLIIKLKHGHKLGDA><9;?=;7 6!8 ; = <!;!9!8!7#7$5&3(0(,('&$$"#         !##$''%%'(+,+**,./146765443 3 0 / - + @_ 0c B-CDE F(nnn?, (), @H u  1c BCDEF nnn? @  @ 2c B3CBDEFnnn?uu @AAA>;86988:<>< ;!9 86541.,)'$ "' * - - / 2 2 2/. , ) $ "           # $ ) , . 1 6 9 ;;;<>? @@i F  3c BBChDEF?g<A fg @z 4c C BDCkDEF1?j>C ij @!} 5c BCDEF ?*+ @Xl  6c BCDEF ?,+ @Uy  7c B)CDEF?(( @| 8c BCDE0F8nnn?     @!b 2s  9c BCDE(F0nnn?      @g 0x  :c BCDE(F0nnn? @"h 3y  ;c BCDEF nnn? @$h 5y  c BC1DEF ?0/00 @@ ?c BC&DETF\?    "%"     +,@ct  @c hBxCDEF? !#")11 * & % # & * / 4 6886:==@@B CBEE F FHFHI K L"I"F"I#J#O%Q%S%R&R(T(T*T-S/R0R2O2L2M4O4Q4T4V2Y2Y5Y8Z9\<\?[CZDYCX?VAS>R<Q>Q?QCQDODMCLAL>K<J>I?HCIFJHLHLIMIQKRISFUDVFXHYK[I]H`D`CaKaPcTcWd\caab`f^n^u^z^}[[]^\\^^`accdddghilmnmnnooruvwsold]ZZTLIIMQTXVUSRQPPLJHFHHFFDDDCAAAA@x@nAhAa?]@X?W<U<P:K4H3F1C1;.4*.*+)&'#'"$#%#" " "@   Ac BChDEF nnn? gg g g @GXz Bc BCDE$F,nnn?     @I{Z Cc BCDE$F,nnn?   @IZ Dc BCDE(F0nnn?     @IZ Ec BCDE(F0nnn?    @L] Fc BCDE$F,nnn? @O` Gc BCDEF nnn?  @M~^ Hc BCDE(F0?   @M^ Ic BCDE$F,? @N_ Jc BCDE(F0? @M^ Kc BCDE(F0? @LM Lc BCDE(F0?  @J[ Mc BCDE$F,? @J[ Nc BCDE(F0? @J[ Oc BCDE(F0? @J[ Pc BCDE$F,? @J[ Qc BCDE(F0?  @J[ Rc BCDE(F0? @LM Sc BCDE(F0? @M^ Tc BCDE(F0? @M^ Uc BCDE$F,? @M^ Vc BCDE$F,? @N_ Wc BCDE(F0?   @O` Xc BCDE$F,? @O` Yc BCDE$F,?  @O` Zc BCDE$F,?  @OP [c BCDE F(?@NO \c BCDE(F0? @LM ]c BCDE(F0?    @J[ ^c BCDE(F0?  @IZ _c BCDE$F,? @HY `c BCDE$F,? @HY ac BCDE$F,? @HY bc BCDE(F0? @HY cc BCDEF ?  @IZ dc BCDE(F0?  @J[ ec BCDE(F0? @LM fc BCDEF ? @L] gc BCDE(F0? @OP hc BCDE(F0?    @O` ic BCDE$F,? @O` jc BCDE(F0? @O` kc BCDE$F,? @O` lc BCDE$F,? @M^ mc BCDE(F0?    @L] nc BCDE(F0?   @L] oc BCDE(F0? @LM pc BCDE(F0? @K\ qc BCDE(F0? @J[ rc BCDE(F0?    @IZ sc BCDE$F,? @HY tc BCDE(F0? @GX uc BCDE(F0? @GX vc BCDE(F0?   @HY wc BCDE$F,?  @IZ xc BCDE(F0? @J[ yc BCDE(F0? @LM zc BCDE$F,?    @L] {c BCDE(F0? @L] |c BCDE$F,? @M^ }c BCDE(F0? @M^ ~c BdCDEF?c @|Wl  c BZCDEF?,Y, @Je  c B+CDEF?** @ c BbCDEF?a @Tx  c BC4DE$F,? 3+33@    c hBCDEF?              AD@AX c BC1DEF nnn?-+0- @   c BC*DEF?)$) @ c BC)DEF?($( @ c BC)DEF?($( @ c BC(DEF?'#' @- c BC(DEF?'#' @<M c BC(DEF?'$' @ c BC)DEF?(%( @ c BC)DEF?($( @  c BC(DEF?'$' @,  c BC(DEF?'$' @;L  c BC(DEF?'#' @<d c BC)DEF?($( @Dm c BC*DEF?)%) @Lv c BC(DEF?'$' @V-~ c BC(DEF?'#' @<_M c BC)DEF?(%( @ 7  c BC(DEF?'$' @ <  c BC'DEF?&#& @ @  c BC'DEF?&#& @ ,F  c BC(DEF?'$' @;$ LL  c BC(DEF?'$' @\   c BC'DEF?&#& @b   c BC)DEF?($( @f   c BC(DEF?'$' @k ,  c BC)DEF?($( @;r L  c Ntfgֳgֳ?}   aorder 2"( 23hh88tN }   c }  sN    c    c BCDEF? @ u  c BCCDEF?BBB @p ]  c BCDEF?2 @ ]u  c C BCDEF1?2 @ `v  c BC!DEF nnn?    @Lg ] ( c BOC)DEF?rr+ 07>DINLIGG G GFHKLIIKLKHGHKLGDA><9;?=;7 6!8 ; = <!;!9!8!7#7$5&3(0(,('&$$"#         !##$''%%'(+,+**,./146765443 3 0 / - + @ _  c B-CDE F(nnn?, (), @H~ u  c BCDEF nnn? @s  @ c B3CBDEFnnn?uu @AAA>;86988:<>< ;!9 86541.,)'$ "' * - - / 2 2 2/. , ) $ "           # $ ) , . 1 6 9 ;;;<>? @@9 F{  c BBChDEF?g<A fg @ J  c C BDCkDEF1?j>C ij @ !M  c BCDEF ?*+ @O X<  c BCDEF ?,+ @ UI  c B)CDEF?(( @L ]  c BCDE0F8nnn?     @!2 2C  c BCDE(F0nnn?      @7 0H  c BCDE(F0nnn? @"8 3I  c BCDEF nnn? @$8 5I  c BCDE$F,nnn?     @&7 7H  c BCDEF nnn?    @(6 9G  c BC1DEF ?0/00 @m  @ c BC&DETF\?    "%"     +,@c t  c hBxCDEF? !#")11 * & % # & * / 4 6886:==@@B CBEE F FHFHI K L"I"F"I#J#O%Q%S%R&R(T(T*T-S/R0R2O2L2M4O4Q4T4V2Y2Y5Y8Z9\<\?[CZDYCX?VAS>R<Q>Q?QCQDODMCLAL>K<J>I?HCIFJHLHLIMIQKRISFUDVFXHYK[I]H`D`CaKaPcTcWd\caab`f^n^u^z^}[[]^\\^^`accdddghilmnmnnooruvwsold]ZZTLIIMQTXVUSRQPPLJHFHHFFDDDCAAAA@x@nAhAa?]@X?W<U<P:K4H3F1C1;.4*.*+)&'#'"$#%#" " "@    c BChDEF nnn? gg g g @G XJ  c BCDE$F,nnn?     @IK Z\  c BCDE$F,nnn?   @IR Zc  c BCDE(F0nnn?     @IV Zg  c BCDE(F0nnn?    @LW ]h  c BCDE$F,nnn? @OT `e  c BCDEF nnn?  @MN ^_  c BCDE(F0?   @MY ^Z  c BCDE$F,? @NX _i  c BCDE(F0? @MW ^h  c BCDE(F0? @LW Mh  c BCDE(F0?  @JW [h  c BCDE$F,? @JX [i  c BCDE(F0? @JY [Z  c BCDE(F0? @J[ [l  c BCDE$F,? @J[ [l  c BCDE(F0?  @J[ [l  c BCDE(F0? @L[ Ml  c BCDE(F0? @M[ ^l  c BCDE(F0? @M[ ^l  c BCDE$F,? @M[ ^l  c BCDE$F,? @NZ _[  c BCDE(F0?   @Ob `c  c BCDE$F,? @O` `q  c BCDE$F,?  @O^ `o  c BCDE$F,?  @O] Pn  c BCDE F(?@N\ Om  c BCDE(F0? @L\ Mm  c BCDE(F0?    @J] [n  c BCDE(F0?  @I^ Zo  c BCDE$F,? @H` Yq  c BCDE$F,? @Hb Yc  c BCDE$F,? @Hb Yc  c BCDE(F0? @Hd Yu  c BCDEF ?  @Id Zu  c BCDE(F0?  @Je [v  c BCDE(F0? @Le Mv  c BCDEF ? @Le ]v  c BCDE(F0? @Oe Pv  c BCDE(F0?    @Oe `v  c BCDE$F,? @Oe `v  c BCDE(F0? @Od `u  c BCDE$F,? @Ob `c  c BCDE$F,? @M\ ^m  c BCDE(F0?    @LY ]j  c BCDE(F0?   @LY ]j  c BCDE(F0? @LY Mj  c BCDE(F0? @KY \j  c BCDE(F0? @JY [j  c BCDE(F0?    @IY Zj  c BCDE$F,? @H\ Ym  c BCDE(F0? @G] X^  c BCDE(F0? @G^ Xo  c BCDE(F0?   @H^ Yo  c BCDE$F,?  @I_ Zp  c BCDE(F0? @J_ [p  c BCDE(F0? @L_ Mp  c BCDE$F,?    @L_ ]p  c BCDE(F0? @L_ ]p  c BCDE$F,? @M^ ^o  c BCDE(F0? @M^ ^_  c BdCDEF?c @L W<  c BZCDEF?,Y, @q J5  c B+CDEF?** @   c BbCDEF?a @ TH  c BC4DE$F,? 3+33@ u   c hBCDEF?              AD@A X  c BC1DEF nnn?-+0- @t   c BC*DEF?)$) @O y  c BC)DEF?($( @X   c BC)DEF?($( @a   c BC(DEF?'#' @j -  d BC(DEF?'#' @<s M  d BC(DEF?'$' @   d BC)DEF?(%( @   d BC)DEF?($( @   d BC(DEF?'$' @ ,  d BC(DEF?'$' @; L  d BC(DEF?'#' @ 4  d BC)DEF?($( @ =  d BC*DEF?)%) @ F   d BC(DEF?'$' @& -N   d BC(DEF?'#' @</ MW   d BC)DEF?(%( @    d BC(DEF?'$' @    d BC'DEF?&#& @   d BC'DEF?&#& @ ,  d BC(DEF?'$' @; L  d BC(DEF?'$' @, T  d BC'DEF?&#& @2 Y  d BC)DEF?($( @6 _  d BC(DEF?'$' @; ,c  d BC)DEF?($( @;B Lk  d Nfgֳgֳ?}   aorder 3"( 23hh88r d BA?'  H ` 0޽h ?#b ̙33  |t0h (  hx h c $4f   * h s fgֳgֳ ?.0N\$ 00  "F r y h  px` h 01? = ` h 01?r l ` `  h 01?* jB  h TTfgֳgֳ?y V  s     hh88  h Tfgֳgֳ?9y 5V  nrq   hh88  h Tfgֳgֳ?y V  n(o1)=2   hh88  h Ttfgֳgֳ?n j  nrq   hh88 h Tfgֳgֳ?  n(o2)=3   hh88 h T4fgֳgֳ? h  p    hh88 h Tfgֳgֳ? h  nrq   hh88 h Tfgֳgֳ? h  n(o3)=5   hh88 h Tfgֳgֳ? y r 0 5    hh88 h Ttfgֳgֳ?[ y t 32    hh88 h Tfgֳgֳ?miy j87   hh88 h T4fgֳgֳ?y k100   hh88rB h B1? H h 0޽h ? ̙333  @"#ls(  lx l c $f   F   l   l Tfgֳgֳ?v i7   hh88 l TTfgֳgֳ? i6   hh88 l Tfgֳgֳ?  i5   hh88 l Tfgֳgֳ?   i4   hh88  l Ttfgֳgֳ?   i3   hh88  l Tfgֳgֳ?,   i2   hh88  l T4fgֳgֳ?   i1   hh88  l Tfgֳgֳ?%q  \Demand hh88  l T gֳgֳ?K 2  [Stock hh88- l Tt gֳgֳ?   90 5 30 32 35 87 100: : : hh88rB l B8c?  rB l B1?j   l C BBCZDEF1?YA- @  rB l B1?  l C BZCBDEF1?AYA,A @N ,  l , rB lB B8c?  rB lB B8c?  rB lB B8c?rB lB B8c?rB lB B8c?# # rB lB B8c?  rB lB B8c?, , rB l B1?r r rB l B1? rB l B1? rB l B1?  rB  l B1?G G rB !l B1?  rB "l B1?  2 #l  BCDE,F48c?     @ H l 0޽h ? ̙33  Px0(  xx x c $    x x c $4   H x 0޽h ? ̙33  `<(  ~  s *    ~  s *   H  0޽h ? ̙33A  pp(  px p c $    F ' p ? ` p 01?V ` p 01?D   p Tt gֳgֳ?WB Solution 1 (cost = 4840)8 hh88  p N gֳgֳ? g Xrent hh88  p N4 gֳgֳ? @ ' Ystock hh88`  p 01?d  `  p 01?d$  `  p 01?D  ` p 01? <` p 01? t ` p 01?  ` p 01??$  ` p 01?h  p T gֳgֳ?j  Optimal solution (cost = 3820)8 hh88rB p B1? P  p T gֳgֳ?i )  n 0 5    hh88 p Tt gֳgֳ?i )  q 32    hh88 p T gֳgֳ?Zi > )  h87   hh88 p T4 gֳgֳ? i  )  i100   hh88 p T gֳgֳ?2 i )  n 0 5    hh88 p T gֳgֳ?i )  q 32    hh88 p T gֳgֳ?mi Q)  h87   hh88 p Tt gֳgֳ?i )  i100   hh88rB p B1? ` ` p 01??  H p 0޽h ? ̙33  t0(  tx t c $    x t c $4    H t 0޽h ? ̙33  % zr  (    C xT gֳgֳ ?     C x gֳgֳ ?   *L    #     N8 gֳgֳ?<   dR1 2  hh88xB B H1? P xB  H1? P   N49 gֳgֳ? P  dR2 2  hh88   N9 gֳgֳ? P   dR3 2  hh88H  0޽h ? a(  0(  x  c $T:    x  c $:    H  0޽h ? ̙33  wo(  x  c $4<      C BCZDEF1?YY @  T< gֳgֳ?!  bOriginal problem hh88jB  B1? 6F H{  FrB  B1?{rB   B1?HH{rB   B1? rB   B1? H*F  HQ    v  rB  B1? Q rB  B1? Q rB  B1?H HQ rB  B1?H HQ rB  B1?Q  Q rB  B1? Q HQ jB  B1? _   C BACZDEF1?@@YY @_ S    T= gֳgֳ?{   ] Cooperation  hh88FF  u3   @ q   C B C1DEF1? 00 @u   T> gֳgֳ?   9Resource allocation problem (problem without maintenance): :hh88  C B C1DEF1? 00 @d u3   Tt> gֳgֳ?5 `  {+Scheduling problem (maintenance scheduling), ,hh88B  ZD1? q B  ZD1? 0    `4? 1? 6V  lLinear programming  hh88   `? 1?    rConstraint programming" hh88H  0޽h ? ̙33   !(  x  c $T@    dB  <1?    TA gֳgֳ? M  z99% cost     hh88  C B+CDEF1?t** @ 0  TA gֳgֳ?`   80 vars 40 constrs    hh88vB  N1?) pvB  N1? vB  N1?p    TB gֳgֳ?` _o  1000 vars 630 constrs   hh88   TTC gֳgֳ?`   6000 vars 4000 constrs   hh88   TD gֳgֳ?` 0  45000 vars 32000 constrs   hh88^2  61? 9 ^2  61? 9    TĎgֳgֳ?0  maintenance problem    hh88   Ngֳgֳ?P crane allocation problem   hh88^2  61? I  TDgֳgֳ?&= t core problem     hh88^2  6f1?$I   Tgֳgֳ?&L maintenance schedule     hh88  Tđgֳgֳ?&  tselect cranes   hh88  Tgֳgֳ? % select maintenance intervals    hh88dB  <1?   dB  <1?    TDgֳgֳ? b  q Polynomial      hh88  Tgֳgֳ? k  mNP-hard   hh88dB  <1?    Tgֳgֳ? $d  y1% cost   hh88vB  N1?   vB  N1?  2  c ENGZHI`TJQp? `T`T`T`T`T`T`T`T`T`TP y 2 ! C ENGHZJQp? `T`T`T`T`T`T`T`T`T`TP yH  0޽h ?/  ! ̙33Y   (  x  c $d     C BnC1DEF1?_m0m_ @P   T$gֳgֳ? J  80 vars 40 constrs    hh88vB  N1?P vB  N1?@ @ vB  N1?``8    T䕊gֳgֳ? J  1000 vars 630 constrs   hh88   Tgֳgֳ? J  6000 vars 4000 constrs   hh88   Tdgֳgֳ?\J  45000 vars 32000 constrs   hh88dB  <1?&A dB  <1?@   T$gֳgֳ?G  vcrane allocation   hh88   T䘊gֳgֳ?l T maintenance scheduling     hh88dB  <1? & dB  <1? -- dB  <1? 3 pB  H1?@0@pB  H1?``  TDgֳgֳ?   x1 node   hh88  Tgֳgֳ?   z30 nodes     hh88  Tdgֳgֳ?+ &  | 1200 nodes     hh88  T$gֳgֳ?^ E > 20 000 nodes    hh88  Tgֳgֳ?~e > 20 000 nodes    hh88H  0޽h ? ̙33      (  x  c $D   ^  61?^  61? ^  61?  jB  BԔ? jB  BԔ?   Tgֳgֳ? ?LINEAR PROGRAMMING Solve the (core) resource allocation problem@ @hh88  Tgֳgֳ?  8HEURISTIC ALGORITHM Select resource items for each order9( 9hh88#  Tdgֳgֳ?   ICONSTRAINT PROGRAMMING Solve the resulting maintenance scheduling problemJ( Jhh88  Tgֳgֳ?K$  ?On failure, tighten the resource allocation problem and iterate@ @hh88pB  HԔ? pB @ HԔ? ` pB  HԔ?`` jB @ BԔ?`H  0޽h ? ̙33T  (  x  c $$      gֳgֳ ?  F ?   ? B  Tgֳgֳ? p?  dur(o) 87 927 919 - dur(o) + 1*dur(m) 88 022 342 - dur(o) + 2*dur(m) 89 123 491 - dur(o) + 3*dur(m) 90 211 387 - dur(o) + 4*dur(m) 91 910 152 2501 !  hh88B  TDgֳgֳ?  >Tightness: Resource allocation cost: Maint. scheduling cost:? ?&hh88H  0޽h ? ̙33'     g (  x  c $d   jB  BԔ? H^  61?LX  Ngֳgֳ?Hy >LINEAR PROGRAMMING Solve tightened resource allocation problem? ?hh88^  61?\p    N$gֳgֳ?@?  8HEURISTIC ALGORITHM Select resource items for each order9( 9hh88^  61?| X !  Tgֳgֳ?d   ICONSTRAINT PROGRAMMING Solve the resulting maintenance scheduling problemJ Jhh88L 2|  # Xf   61?2|   Tgֳgֳ?ULU =PRE-PROCESSING Tighten core problem to anticipate maintenance> >hh88jB  BԔ? XjB  BԔ? h ^  61?l X   NDgֳgֳ?h T  ELINEAR PROGRAMMING Solve resource allocation + pre-scheduling problemF Fhh88jB  BԔ? x jB  BԔ? ^  61?X  Ngֳgֳ?x,  BCONSTRAINT PROGRAMMING Heuristically improve (repair) the solutionC Chh88H  0޽h ? ̙33   T(   ~   s *      ZA '?1?k  'H   0޽h ? a(   0(  x  c $d   x  c $  H  0޽h ? ̙33\   00(  0X 0 0P0 ~ 0 s *D   ~ 0 s *  H 0 0޽h ? ̙33(  <(4(@Wg40 '(  4x 4 c $   8 0  f40 ZB 4 s *D ZB 4 s *D0 ZB 4B s *D0 ZB 4B s *D ZB 4 s *D0  ZB 4 s *D ZB 4B s *D0 ZB 4B s *DP ZB !4B s *D`ZB "4B s *D`ZB #4B s *D P ZB $4 s *D  ZB %4 s *D0  ZB &4 s *D  ZB '4 s *D  ZB (4 s *D`P ZB )4 s *DP  ZB *4 s *D`ZB +4B s *DZB ,4 s *D ZB -4 s *D  ZB .4 s *D P ZB /4 s *DP P ZB 04 s *DP ZB 14B s *D0` ZB 24 s *D0  ZB 34 s *D  ZB 44 s *D ZB 54 s *D` ZB 64B s *D``ZB 74 s *DZB 84B s *D` ZB 94 s *D  ZB :4 s *DP ZB ;4 s *D`P ZB <4 s *D ZB =4 s *D P ZB >4 s *D`P ZB ?4B s *D`ZB @4B s *D ZB F4 s *D P ZB G4 s *DP ZB H4 s *D` ZB I4 s *D ZB J4 s *D` ZB K4 s *D ZB L4 s *DP ZB M4B s *DP ZB N4 s *D0  ZB O4 s *D` ZB P4B s *D0` ZB Q4B s *D ZB R4 s *DP ZB S4B s *D0P ZB T4 s *D0 P ZB U4 s *D`P ZB V4 s *D` ZB W4 s *D` ZB X4B s *D` ZB Y4 s *D ZB Z4 s *D ZB [4 s *D ZB \4 s *D ZB ]4 s *D` ZB ^4 s *DP ZB _4 s *DP ZB `4 s *D`  b4 B0 K v4O(n2) binary constraints Weak constraint propagation&51/l @ g4@,$D 0 c4 BD0  c3One global constraint Strong constraint propagation44fB d4 6D) `2  4 0@ p2 4 B  [V12" 2  4 B ` ZV6" 2  4 Bd  ZV3" 2 4 BĮP0  ZV9" 2  4 B$` @ ZV2" 2 4 B@  ZV4" 2 4 B`@ [V10" 2 4 BD@   ZV8" 2 4 Bp [V11" 2 4 B pP  ZV5" 2 4 BdpP  ZV1" 2 4 Bı p ZV7" H 4 0޽h ? ̙33  P0(  x  c $$   x  c $  H  0޽h ? ̙33C     `8 (  8x 8 c $d   x 8 c $ĴP    8 6$f RV >  8 0f2 u  BLinear Programming 8 <f \ gInteger Programming  X 8 0f p 8 <f @t  4CP  8 <ķf 6n  BSearch Programming  8 0f   FConstraint Propagation2  8 </o x  B RB  8 s *Do `   8 BT0fo@   B XB 8 0Do` `  8 00f  THYBRID  8 <1f \  8LP/MIP 8 Ht1fo p B XB 8 0Do  H 8 0޽h ? ̙33  pD0(  Dx D c $1   x D c $42  H D 0޽h ? ̙33(  h(  x  c $2     3 rT3xaxa1 ?   !L  HA ?1?X $ 00H  0޽h ? ̙33   0(   x  c $3   x  c $4  H  0޽h ? ̙33  H0(  Hx H c $4   x H c $45  H H 0޽h ? ̙33&  (f(  (r ( S T6    ( B6   * `H ( 0޽h ? ̙33I   ,(  ,r , S t7   X , 0f\X , 0f  , <7f~ 4LP , <48f 4CP2 , <8o`z  B   , <8fp D  8HybridXB  , 0DoCXB  ,@ 0Do ]   , <T9f0 Cq  |:Domain reductions Linear constraints added during search &;9  , <:fPp ['Lower bound Relaxed optimal solution (( , 0t:   ` ZDomain reductions and linear constraints from the CP engine tighten the linear relaxation.[Z[ , 0:f t  XThe relaxed optimal solution can be used in the CP search heuristic to guide the search.YZXH , 0޽h ? ̙33  4<(  4~ 4 s *4;   ~ 4 s *;  H 4 0޽h ? ̙33  8<(  8~ 8 s *D   ~ 8 s *  H 8 0޽h ? ̙33  <<(  <~ < s *   ~ < s *  H < 0޽h ? ̙33   @(  @ @ 0 p @ 1CP search tree with and without linear relaxation2_2, @ C pAXO:\doc\renoir\warebothnorelaxglobaltree.gif  @ HĒ?@` :  VOptimal at 383 is here$ pB @@ H D?` @p @ C lATO:\doc\renoir\warebothrelaxglobaltree.gif  pB @ H D?p `  @ <?P J &(the tree is 100 times bigger without)$' &$ #   @ H?^  |(These nodes and sub-trees are not pruned) ) v  @ N O Hn(? U v  @ N O Hn(? H @ 0޽h ? ̙33  (0(  (x ( c $D   x ( c $  H ( 0޽h ? ̙33   P0(  Px P c $d   x P c $ĕ  H P 0޽h ? ̙33  0T<(  T~ T s *   ~ T s *D  H T 0޽h ? ̙33  @0(  x  c $   x  c $d  H  0޽h ? ̙33P  P(  X  00  x  c $$   x  c $  H  0޽h ? ̙33  `0(  x  c $t   x  c $  H  0޽h ? ̙33  p0(  x  c $T   x  c $  H  0޽h ? ̙33  0(  x  c $   x  c $T  H  0޽h ? ̙33  0(  x  c $   x  c $t0  H  0޽h ? ̙33  0(  x  c $4   x  c $`  H  0޽h ? ̙33  $(  r  S     r  S t   H  0޽h ? ̙33  $(  r  S 4    r  S  0  H  0޽h ? ̙33\   (  X  0 ~  s *    ~  s *T   H  0޽h ? ̙33  0(  x  c $    x  c $u  H  0޽h ? ̙33  0(  x  c $u   x  c $4v  H  0޽h ? ̙33  0(  x  c $Tw   x  c $w  H  0޽h ? ̙33  0(  x  c $x   x  c $4y  H  0޽h ? ̙33   <0(  <x < c $z   x < c ${  H < 0޽h ? ̙33  00(  x  c $|   x  c $|  H  0޽h ? ̙33  @0(  x  c $~   x  c $4  H  0޽h ? ̙33  PL0(  Lx L c $   x L c $0  H L 0޽h ? ̙33  `0(  x  c $   x  c $D0  H  0޽h ? ̙33j= 0 *"(    T1 ?i     `;byy ?U Z   > II##H  0޽h ? a(j> 0 *" (    T1 ?i     `$ yy ?U Z   > II##H  0޽h ? a(j? 0 *"@ (      T1 ?i      `"yy ?U Z   > II##H   0޽h ? a(j@ 0 *"`((  ( ( T1 ?i    ( `)yy ?U Z   > II##H ( 0޽h ? a(jA 0 *"0(  0 0 T1 ?i    0 `4Byy ?U Z   > II##H 0 0޽h ? a(jB 0 *"8(  8 8 T1 ?i    8 `yy ?U Z   > II##H 8 0޽h ? a(jC 0 *"@(  @ @ T1 ?i    @ `Tyy ?U Z   > II##H @ 0޽h ? a(