function fit = myact( params ) % Split vector of parameters into different components dc = params(1); di = params(2); d = params(3); nr = params(4); t = params(5); threshold = params(6); beta = params(7); rehearsals = params(8); interval = params(9); rehearsals = round(rehearsals); % Prevent division by zero if (d == 1.0) d = 0.99999; end if (dc == 0) dc = 0.001; end % INITIALIZE fit = 0; predict=zeros(1,11); timeInSecPerPresentation = interval; % DATA global VERBOSE; global OBS; global DIFF; global OUTFILE; obs = OBS; diff = DIFF; lvec = length(diff); saliency = (diff / dc) - di; global EXTBL; %if (length(EXTBL) == 1) EXTBL = normalBaseLevel((1:nr)*(t/nr),d,((1:lvec)-1)*timeInSecPerPresentation); EXTBL = EXTBL + beta; %end externalBaseLevels = EXTBL; % GO THROUGH ALL OF THE 10 CONDITIONS if (VERBOSE) fprintf(OUTFILE,'Dis Salience ( priorOdd + expOdd )= combAct Total Retr? Obs MisScore\n\n'); end %priorBaselevel = optimizedBaseLevel(nr,t,d) + beta; timeSinceStart = 0; for i = 1:lvec prevRetrievals = sum(predict(1:i)); if (prevRetrievals > 0) prevRef = repmat(setdiff(((i-(1:(i-1)))*timeInSecPerPresentation) .* (predict(1:(i-1))),0),1,rehearsals); expBaselevel = normalBaseLevel(prevRef, d, 0) + beta; total = log(exp(externalBaseLevels(i)) + exp(expBaselevel)) + saliency(i); else total = externalBaseLevels(i) + saliency(i); expBaselevel = -9; end retrieved = (total >= threshold); if (retrieved | (timeSinceStart > 0)) timeSinceStart = timeSinceStart + timeInSecPerPresentation; end if (retrieved ~= obs(i)) % functie straft fouten aan het einde zwaarder dan aan het begin, % en gebruikt daarnaast een (expected-observed)^2 maat voor % mismatch berekening. mismatch = (0.5*(lvec-i)) + ((threshold - total))^2; else mismatch = 0; end predict(i) = retrieved; fit = fit + mismatch; if (VERBOSE) if (expBaselevel ~= -9) eBL = exp(expBaselevel); else eBL = 0; end fprintf(OUTFILE,'%3d %8.5f ( %8.5f + %8.4f )= %8.5f %7.4f %5d %3d %8.5f\n', ... diff(i), saliency(i), exp(externalBaseLevels(i)), eBL, ... log(exp(externalBaseLevels(i))+eBL), total, retrieved, obs(i), mismatch); end end if (VERBOSE) fprintf(OUTFILE,'\n\nTotal mismatch: %f\n\n',fit); fprintf(OUTFILE,'Parameters:\n\n'); fprintf(OUTFILE,'dc: %12.6f\n',dc); fprintf(OUTFILE,'di: %12.6f\n',di); fprintf(OUTFILE,'d: %12.6f\n',d); fprintf(OUTFILE,'nr: %12.6f\n',nr); fprintf(OUTFILE,'t: %12.6f\n',t); fprintf(OUTFILE,'threshold: %12.6f\n',threshold); fprintf(OUTFILE,'beta: %12.6f\n',beta); fprintf(OUTFILE,'rehearsals: %12.6f\n',rehearsals); fprintf(OUTFILE,'interval: %12.6f\n',interval); end