{*** ELM-MODEL ***} procedure ELM; var KPs: integer; Liste: integer; KPNr: integer; VAIntens: real; count: integer; PeriReizKomm: real; EinstKomm: real; ArguQualiKomm: real; derBeeinflusser: CIndividuum; lokWerBeeinflusst: integer; function FctVerarbMot: real; {* Box 1 *} begin FctVerarbMot := Betroff * (1 + (0.5 - ((abs(Betroff - 5) / 10)))); end; function FctVerarbFkt: real; {* Box 2 *} begin FctVerarbFkt := ArguQuali * (1 - (Ablenkung / 10)); end; function FctVAIntens: real; {* Box 3 *} var intrVAI, Hilfsvar: real; begin intrVAI := sqrt(VerarbMot * VerarbFkt); Hilfsvar := intrVAI + (((PeriReizKomm - 5) / 2) * (1 - (abs(intrVAI - 5) / 5))); PoolVAIntensELM := Hilfsvar + PoolVAIntensELM; FctVAIntens := Hilfsvar; end; function FctEinst: real; {* Box 7 *} var EinstFaktor: real; function Fctperi: real; {* Box 5 *} begin Fctperi := ((PeriReizKomm - 5) / 1.65); end; function Fctzent: real; {* Box 6 *} begin if ((Voreingenom > 5) and (EinstKomm < 5)) or ((Voreingenom < 5) and (EinstKomm > 5)) then Fctzent := ((ArguQualiKomm - 5) / 2.5) + ((((5 - ArguQualiKomm) / 5) - 2) * (sqr((abs(Voreingenom - 5)) / 5))) else Fctzent := ((ArguQualiKomm - 5) / 2.5) + ((((5 - ArguQualiKomm) / 5) + 2) * (sqr((abs(Voreingenom - 5)) / 5))); end; begin EinstFaktor := (Fctzent * (VAIntens / 10)) + (Fctperi * (1 - (VAIntens / 10))); FctEinst := VarCheck(Einst + (EinstFaktor * ((EinstKomm - Einst) / 3))); end; function FctArguQualiNeuELM: real; {* Box 8 *} var AQzent, AQperi, AQEinfluss: real; begin if (ArguQualiKomm > ArguQuali) then AQzent := ((ArguQualiKomm - ArguQuali) / 10) else AQzent := 0; AQperi := ((ArguQualiKomm - ArguQuali) / 10); AQEinfluss := (AQzent * (VAIntens / 10)) + (AQperi * (1 - (VAIntens / 10))); FctArguQualiNeuELM := VarCheck(ArguQuali + AQEinfluss); end; begin {** BEGIN ELM-Mainproc **} if ID <> 1 then begin PoolVAIntensELM := 0; count := 0; Voreingenom := (WertH + Einst) / 2; for Liste := Freunde to Nachbarn do begin KPs := (GetAnzKPs(Liste)); if not ListIsEmpty(Liste) then for KPNr := 1 to KPs do begin count := count + 1; theKP := GetKP(Liste, KPNr); PeriReizKomm := theKP.GiveOutValue(6); EinstKomm := theKP.GiveOutValue(1); ArguQualiKomm := theKP.GiveOutValue(2); VerarbFkt := FctVerarbFkt; VerarbMot := FctVerarbMot; VAIntens := FctVAIntens; Einst := FctEinst; ArguQuali := FctArguQualiNeuELM; end; {* for KPNr ... *} end; {* for Liste ... *} theKP := nil; if count <> 0 then PoolVAIntensELM := PoolVAIntensELM / count; end; {* if ID ... *) end; {END ELM-Mainproc}