package Ġorg . ev om aster . experiments . linear Ċ Ċ import Ġcom . google . inject . Injector Ċ import Ġcom . google . inject . Key Ċ import Ġcom . google . inject . Module Ċ import Ġcom . google . inject . Type Literal Ċ import Ġcom . netflix . g overn ator . gu ice . Lifecycle Injector Ċ import Ġcom . netflix . g overn ator . lifecycle . Lifecycle Manager Ċ import Ġorg . ev om aster . core . Base Module Ċ import Ġorg . ev om aster . core . EM Config Ċ import Ġorg . ev om aster . core . EM Config . Algorithm .* Ċ import Ġorg . ev om aster . core . search . algorithms .* Ċ import Ġorg . ev om aster . core . search . service . Search Algorithm Ċ import Ġjava . util .* ĊĊ Ċ class ĠMain Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġmain ( args : ĠArray < String >) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġin fe asible () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġprint Header () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" algorithm , coverage , n , range , budget , type , fs at , population Size , in fe asible , fds ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġfun Ġin fe asible () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGiven Ġx Ġ( eg Ġ 1 0 ) Ġfe asible Ġtargets , Ġstudy Ġimpact Ġof Ġadding Ġy Ġ( eg Ġ[ 1 , Ġ 1 0 0 ]) Ġin fe asible Ġtargets . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStudy ĠM IO Ġwith Ġand Ġwithout ĠF DS ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint Header () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbudget Ġ= Ġ 1 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrange Ġ= Ġ 1 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdis rupt ive P Ġ= Ġ 0 . 0 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġn Targets Ġ= Ġ 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproblem Type Ġ= ĠProblem Type . GRAD IENT ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrepet itions Ġ= Ġ 1 0 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( seed Ġin Ġ 0 Ġuntil Ġrepet itions ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoptim a Ġ= Ġcreate Opt ima ( n Targets , Ġrange , Ġseed . to Long ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( inf Ġin ĠlistOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 1 0 , Ġ 2 0 , Ġ 3 0 , Ġ 4 0 , Ġ 5 0 , Ġ 6 0 , Ġ 7 0 , Ġ 8 0 , Ġ 9 0 , Ġ 1 0 0 )) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( M IO , ĠR AN DOM , ĠM OS A , ĠW TS ). forEach Ġ{ Ġa Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun Alg ( a , Ġseed . to Long (), Ġbudget , Ġn Targets , Ġrange , Ġdis rupt ive P , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptim a , Ġproblem Type , Ġ 0 . 5 , Ġ 5 0 , Ġinf , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun Alg ( M IO , Ġseed . to Long (), Ġbudget , Ġn Targets , Ġrange , Ġdis rupt ive P , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptim a , Ġproblem Type , Ġ 0 . 5 , Ġ 5 0 , Ġinf , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġtuning M IO () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint Header () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbudget Ġ= Ġ 1 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrange Ġ= Ġ 1 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdis rupt ive P Ġ= Ġ 0 . 0 1 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproblems Ġ= ĠlistOf ( Problem Type . GRAD IENT , ĠProblem Type . PL ATE AU , ĠProblem Type . DE CEP TI VE ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrepet itions Ġ= Ġ 1 0 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( seed Ġin Ġ 0 Ġuntil Ġrepet itions ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( n Targets Ġin ĠlistOf ( 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 1 0 , Ġ 2 0 , Ġ 3 0 , Ġ 4 0 , Ġ 5 0 , Ġ 6 0 , Ġ 7 0 , Ġ 8 0 , Ġ 9 0 , Ġ 1 0 0 )) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoptim a Ġ= Ġcreate Opt ima ( n Targets , Ġrange , Ġseed . to Long ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( problem Type Ġin Ġproblems ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( fs at Ġin ĠlistOf ( 0 . 0 , Ġ 0 . 2 , Ġ 0 . 4 , Ġ 0 . 6 , Ġ 0 . 8 , Ġ 1 . 0 )) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun Alg ( M IO , Ġseed . to Long (), Ġbudget , Ġn Targets , Ġrange , Ġdis rupt ive P , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptim a , Ġproblem Type , Ġfs at , Ġ 5 0 , Ġ 0 , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġtuning MO SA () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint Header () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbudget Ġ= Ġ 1 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrange Ġ= Ġ 1 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdis rupt ive P Ġ= Ġ 0 . 0 1 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproblems Ġ= ĠlistOf ( Problem Type . GRAD IENT , ĠProblem Type . PL ATE AU , ĠProblem Type . DE CEP TI VE ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrepet itions Ġ= Ġ 1 0 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( seed Ġin Ġ 0 Ġuntil Ġrepet itions ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( n Targets Ġin ĠlistOf ( 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 1 0 , Ġ 2 0 , Ġ 3 0 , Ġ 4 0 , Ġ 5 0 , Ġ 6 0 , Ġ 7 0 , Ġ 8 0 , Ġ 9 0 , Ġ 1 0 0 )) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoptim a Ġ= Ġcreate Opt ima ( n Targets , Ġrange , Ġseed . to Long ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( problem Type Ġin Ġproblems ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( p Size Ġin ĠlistOf ( 4 , Ġ 8 , Ġ 1 6 , Ġ 3 2 , Ġ 6 4 , Ġ 1 2 8 )) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun Alg ( MO SA , Ġseed . to Long (), Ġbudget , Ġn Targets , Ġrange , Ġdis rupt ive P , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptim a , Ġproblem Type , Ġ 0 . 5 , Ġp Size , Ġ 0 , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġbase () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint Header () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbudget Ġ= Ġ 1 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrange Ġ= Ġ 1 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdis rupt ive P Ġ= Ġ 0 . 0 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproblem Type Ġ= ĠProblem Type . GRAD IENT Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproblem Type Ġ= ĠProblem Type . PL ATE AU Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproblem Type Ġ= ĠProblem Type . DE CEP TI VE ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrepet itions Ġ= Ġ 1 0 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( seed Ġin Ġ 0 Ġuntil Ġrepet itions ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( n Targets Ġin ĠlistOf ( 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 1 0 , Ġ 2 0 , Ġ 3 0 , Ġ 4 0 , Ġ 5 0 , Ġ 6 0 , Ġ 7 0 , Ġ 8 0 , Ġ 9 0 , Ġ 1 0 0 )) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoptim a Ġ= Ġcreate Opt ima ( n Targets , Ġrange , Ġseed . to Long ()) ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun Base ( seed . to Long (), Ġbudget , Ġn Targets , Ġrange , Ġdis rupt ive P , Ġoptim a , Ġproblem Type , Ġ 0 . 5 , Ġ 5 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġrun Alg ( alg : ĠEM Config . Algorithm , Ġseed : ĠLong , Ġbudget : ĠInt , Ġn Targets : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrange : ĠInt , Ġdis rupt ive P : ĠDouble , Ġoptim a : ĠList < Int >, Ġproblem Type : ĠProblem Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfs at : ĠDouble , Ġpopulation Size : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin fe asible : ĠInt , Ġf ds : ĠBoolean ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġget Alg ( alg , Ġseed , Ġbudget , Ġn Targets , Ġrange , Ġdis rupt ive P , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptim a , Ġproblem Type , Ġfs at , Ġpopulation Size , Ġin fe asible , Ġf ds ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmanager Ġ= Ġa . first . getInstance ( Lifecycle Manager :: class . java ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanager . start () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsol Ġ= Ġa . second . search () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanager . close () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcovered Ġ= Ġsol . overall . covered Targets () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcov Ġ= Ġ 1 0 0 . 0 Ġ* Ġ( covered . toDouble () Ġ/ Ġn Targets . toDouble ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("${ a . second . getType ()}, $ cov ,$ n Targets ,$ range ,$ budget ,$ problem Type ,$ fs at ,$ population Size " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ", $ in fe asible ,$ fds ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġrun Base ( seed : ĠLong , Ġbudget : ĠInt , Ġn Targets : ĠInt , Ġrange : ĠInt , Ġdis rupt ive P : ĠDouble , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptim a : ĠList < Int >, Ġproblem Type : ĠProblem Type , Ġfs at : ĠDouble , Ġpopulation Size : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( M IO , ĠR AN DOM , ĠM OS A , ĠW TS ). forEach Ġ{ Ġa Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun Alg ( a , Ġseed , Ġbudget , Ġn Targets , Ġrange , Ġdis rupt ive P , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptim a , Ġproblem Type , Ġfs at , Ġpopulation Size , Ġ 0 , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġfun Ġcreate Opt ima ( n : ĠInt , Ġrange : ĠInt , Ġseed : ĠLong ): ĠList < Int > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoptim a Ġ= Ġmutable ListOf < Int >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrand Ġ= ĠRandom ( seed ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( 1 .. n ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptim a . add ( rand . nextInt ( range Ġ+ Ġ 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġoptim a ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Alg ( alg Type : ĠEM Config . Algorithm , Ġseed : ĠLong , Ġbudget : ĠInt , Ġn Targets : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrange : ĠInt , Ġdis rupt ive P : ĠDouble , Ġoptim a : ĠList < Int >, Ġproblem Type : ĠProblem Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfs at : ĠDouble , Ġpopulation Size : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin fe asible : ĠInt , Ġf ds : ĠBoolean ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ: ĠPair < Injector , ĠSearch Algorithm < Linear Individual >> Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinjector Ġ= ĠLifecycle Injector . builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Modules (* ĠarrayOf < Module >( Linear Module (), ĠBase Module ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build (). create Injector () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= Ġinjector . getInstance ( EM Config :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . algorithm Ġ= Ġalg Type ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . seed Ġ= Ġseed ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . max Action Evalu ations Ġ= Ġbudget ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . stopping Criterion Ġ= ĠEM Config . Stopping Criterion . FITNESS _ EVAL U ATIONS ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . tournament Size Ġ= Ġ 1 0 Ġ// as Ġin ĠM OS A Ġpaper ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . focused Search Activation Time Ġ= Ġfs at ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . population Size Ġ= Ġpopulation Size ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . feedback Direct ed Sampling Ġ= Ġif Ġ( fds ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEM Config . Feedback Direct ed Sampling . LAST ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠEM Config . Feedback Direct ed Sampling . NONE ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġl pd Ġ= Ġinjector . getInstance ( Linear Problem Definition :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġl pd . n Targets Ġ= Ġn Targets ĊĠĠĠĠĠĠĠĠĠĠĠ Ġl pd . dis rupt ive P Ġ= Ġdis rupt ive P ĊĠĠĠĠĠĠĠĠĠĠĠ Ġl pd . range Ġ= Ġrange ĊĠĠĠĠĠĠĠĠĠĠĠ Ġl pd . problem Type Ġ= Ġproblem Type ĊĠĠĠĠĠĠĠĠĠĠĠ Ġl pd . in fe asible Ġ= Ġin fe asible ĊĠĠĠĠĠĠĠĠĠĠĠ Ġl pd . optim a . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġl pd . optim a . addAll ( optim a ) ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġalg Ġ= Ġwhen Ġ( alg Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠM IO Ġ-> Ġinjector . getInstance ( Key . get ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠType Literal < M io Algorithm < Linear Individual >>() Ġ{} )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR AN DOM Ġ-> Ġinjector . getInstance ( Key . get ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠType Literal < Random Algorithm < Linear Individual >>() Ġ{} )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠM OS A Ġ-> Ġinjector . getInstance ( Key . get ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠType Literal < M osa Algorithm < Linear Individual >>() Ġ{} )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMODEL MO SA Ġ-> Ġinjector . getInstance ( Key . get ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠType Literal < Model M osa Algorithm < Linear Individual >>() Ġ{} )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠW TS Ġ-> Ġinjector . getInstance ( Key . get ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠType Literal < W ts Algorithm < Linear Individual >>() Ġ{} )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠPair ( injector , Ġalg ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ} Ċ }