package Ġnz . co . j ed sim son . lg p . core . e volution . fitness Ċ Ċ import Ġnz . co . j ed sim son . lg p . core . environment . Environment Facade Ċ import Ġnz . co . j ed sim son . lg p . core . environment . dataset . Target Ċ import Ġnz . co . j ed sim son . lg p . core . environment . dataset . Sample Ċ import Ġnz . co . j ed sim son . lg p . core . program . Program Ċ import Ġnz . co . j ed sim son . lg p . core . modules . Module Ċ import Ġnz . co . j ed sim son . lg p . core . program . Output Ċ Ċ /** Ċ Ġ* ĠA Ġcase Ġto Ġevaluate Ġa Ġprograms Ġfitness Ġon . Ċ Ġ* Ċ Ġ* Ġ@ param ĠT Data ĠThe Ġtype Ġof Ġdata Ġthe Ġfeatures Ġrepresent . Ċ Ġ* Ġ@ param ĠT Target ĠThe Ġtype Ġof Ġtarget . Ċ Ġ* Ġ@ property Ġfeatures ĠA Ġsampling Ġof Ġfeatures Ġfrom Ġa Ġdata Ġset . Ċ Ġ* Ġ@ property Ġtarget ĠThe Ġtarget Ġfor Ġthis Ġcases Ġset Ġof Ġfeatures . Ċ Ġ*/ Ċ data Ġclass ĠF itness Case < T Data , ĠT Target Ġ: ĠTarget < T Data >>( val Ġfeatures : ĠSample < T Data >, Ġval Ġtarget : ĠT Target ) Ċ Ċ /** Ċ Ġ* ĠProvides Ġa Ġway Ġto Ġmap Ġa Ġprogram Ġto Ġfitness Ġcases Ġusing Ġa Ġgiven Ġfitness Ġfunction . Ċ Ġ* Ċ Ġ* ĠA Ġcontext Ġwill Ġgenerally Ġexecute Ġthe Ġgiven Ġprogram Ġfor Ġeach Ġof Ġthe Ġfitness Ġcases Ċ Ġ* Ġgiven Ġto Ġit Ġthrough Ġthe Ġ[ fitness ] Ġmethod . ĠHow Ġthe Ġoutputs Ġare Ġaggregated Ġis Ġup Ġto Ċ Ġ* Ġthe Ġindividual Ġimplementation , Ġallowing Ġfor Ġthe Ġpossibility Ġof Ġmultiple Ġprogram Ġoutputs , Ċ Ġ* Ġweighted Ġprogram Ġoutputs , Ġetc . Ċ Ġ** Ċ Ġ* Ġ@ property Ġenvironment ĠProvides Ġaccess Ġto Ġthe Ġcurrent Ġenvironment Ċ Ġ*/ Ċ abstract Ġclass ĠF itness Context < T Data , ĠT Output Ġ: ĠOutput < T Data >, ĠT Target Ġ: ĠTarget < T Data >>( ĊĠĠĠ Ġprotected Ġval Ġenvironment : ĠEnvironment Facade < T Data , ĠT Output , ĠT Target > Ċ ) Ġ: ĠModule Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġfitness Ġas Ġdetermined Ġby Ġthis Ġcontext . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġprogram ĠA Ġprogram Ġto Ġevaluate . ĊĠĠĠĠ Ġ* Ġ@ param Ġfitness Cases ĠA Ġcollection Ġof Ġfitness Ġcases Ġto Ġevaluate Ġthe Ġprogram Ġon . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ returns ĠA Ġdouble Ġvalue Ġrepresenting Ġthe Ġfitness Ġof Ġthe Ġgiven Ġprogram Ġfor Ġthe Ġgiven Ġfitness Ġcases . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġabstract Ġfun Ġfitness ( program : ĠProgram < T Data , ĠT Output >, Ġfitness Cases : ĠList < Fitness Case < T Data , ĠT Target >> ): ĠDouble Ċ } Ċ Ċ /** Ċ Ġ* ĠA Ġbase Ġimplementation Ġof Ġ[ Fitness Context ]. Ċ Ġ*/ Ċ abstract Ġclass ĠBase Fitness Context < T Data , ĠT Output Ġ: ĠOutput < T Data >, ĠT Target Ġ: ĠTarget < T Data >>( ĊĠĠĠ Ġenvironment : ĠEnvironment Facade < T Data , ĠT Output , ĠT Target > Ċ ) Ġ: ĠF itness Context < T Data , ĠT Output , ĠT Target >( environment ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġfitness Function Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . environment . fitness Function Provider () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠEvalu ates Ġthe Ġfitness Ġby Ġperforming Ġthe Ġfollowing Ġsteps : ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ 1 . ĠFinds Ġthe Ġeffective Ġprogram ĊĠĠĠĠ Ġ* Ġ 2 . ĠWrites Ġeach Ġfitness Ġcase Ġto Ġthe Ġprograms Ġregister Ġset ĊĠĠĠĠ Ġ* Ġ 3 . ĠExec utes Ġthe Ġprogram Ġand Ġcollect s Ġthe Ġoutput Ġfrom Ġeach Ġfitness Ġcase ĊĠĠĠĠ Ġ* Ġ 4 . ĠExec utes Ġthe Ġfitness Ġfunction Ġfrom Ġthe Ġgiven Ġenvironment ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġfitness ( program : ĠProgram < T Data , ĠT Output >, Ġfitness Cases : ĠList < Fitness Case < T Data , ĠT Target >> ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠMake Ġsure Ġthe Ġprograms Ġeffective Ġinstructions Ġhave Ġbeen Ġfound ĊĠĠĠĠĠĠĠ Ġprogram . find Effective Program () ĊĊĠĠĠĠĠĠĠ Ġ// ĠCollect Ġthe Ġresults Ġof Ġthe Ġprogram Ġfor Ġeach Ġfitness Ġcase . ĊĠĠĠĠĠĠĠ Ġval Ġoutputs Ġ= Ġfitness Cases . map Ġ{ Ġcase Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠMake Ġsure Ġthe Ġregisters Ġare Ġin Ġa Ġdefault Ġstate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogram . registers . reset () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLoad Ġthe Ġcase ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogram . registers . write Instance ( case . features ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRun Ġthe Ġprogram ... ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogram . execute () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ... Ġand Ġgather Ġa Ġresult Ġfrom Ġthe Ġprogram . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogram . output () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠCopy Ġthe Ġfitness Ġto Ġthe Ġprogram Ġfor Ġlater Ġaccesses ĊĠĠĠĠĠĠĠ Ġprogram . fitness Ġ= Ġfitness Function ( outputs , Ġfitness Cases ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġprogram . fitness ĊĠĠĠ Ġ} Ċ }