package Ġit . uni bo . al che mist . model . implement ations . actions Ċ Ċ import Ġit . uni bo . al che mist . model . implement ations . positions . E uclidean 2 D Position Ċ import Ġit . uni bo . al che mist . model . interfaces . M olecule Ċ import Ġit . uni bo . al che mist . model . interfaces . Pe de stri an 2 D Ċ import Ġit . uni bo . al che mist . model . interfaces . Reaction Ċ import Ġit . uni bo . al che mist . model . interfaces . environments . E uclidean 2 D Environment Ċ Ċ /** Ċ Ġ* ĠMove Ġthe Ġpe de stri an Ġtowards Ġpositions Ġof Ġthe Ġenvironment Ġwith Ġa Ġhigh Ġconcent ration Ġof Ġthe Ġtarget Ġmolecule . Ċ Ġ* Ċ Ġ* Ġ@ param Ġenv Ċ Ġ* ĠĠĠĠĠĠĠĠĠ Ġthe Ġenvironment Ġinside Ġwhich Ġthe Ġpe de stri an Ġmoves . Ċ Ġ* Ġ@ param Ġreaction Ċ Ġ* ĠĠĠĠĠĠĠĠĠ Ġthe Ġreaction Ġwhich Ġexecutes Ġthis Ġaction . Ċ Ġ* Ġ@ param Ġpe de stri an Ċ Ġ* ĠĠĠĠĠĠĠĠĠ Ġthe Ġowner Ġof Ġthis Ġaction . Ċ Ġ* Ġ@ param Ġtarget M olecule Ċ Ġ* ĠĠĠĠĠĠĠĠĠ Ġthe Ġ{@ link ĠM olecule } Ġyou Ġwant Ġto Ġknow Ġthe Ġconcent ration Ġin Ġthe Ġdifferent Ġpositions Ġof Ġthe Ġenvironment . Ċ Ġ*/ Ċ open Ġclass ĠC ognitive Agent Follow Layer ( ĊĠĠĠ Ġenv : ĠE uclidean 2 D Environment < Number >, ĊĠĠĠ Ġreaction : ĠRe action < Number >, ĊĠĠĠ Ġpe de stri an : ĠPe de stri an 2 D < Number >, ĊĠĠĠ Ġtarget M olecule : ĠM olecule Ċ ) Ġ: ĠAbstract Layer Action ( env , Ġreaction , Ġpe de stri an , Ġtarget M olecule ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġfollow Scalar Field Ġ= Ġget Layer OrFail (). let Ġ{ Ġlayer Ġ-> ĊĠĠĠĠĠĠĠ ĠC ognitive Agent Follow Scalar Field ( environment , Ġreaction , Ġpe de stri an , Ġlayer . center ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayer . con cent ration In ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġnext Position (): ĠE uclidean 2 D Position Ġ= Ġfollow Scalar Field . next Position () ĊĊĠĠĠ Ġoverride Ġfun Ġclone Action ( n : ĠPe de stri an 2 D < Number >, Ġr : ĠRe action < Number >): ĠC ognitive Agent Follow Layer Ġ= ĊĠĠĠĠĠĠĠ ĠC ognitive Agent Follow Layer ( environment , Ġr , Ġn , Ġtarget M olecule ) Ċ } Ċ