<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">
\documentclass[man,a4paper,oneside,12pt,floatsintext]{apa7}

\usepackage{lipsum}

\usepackage[english]{babel}

\usepackage{csquotes}
\usepackage[style=apa,sortcites=true,sorting=nyt,backend=biber]{biblatex}
\DeclareLanguageMapping{english}{english-apa}

% some stuff for further formatting beyond the apa7 package
\usepackage{setspace}
%\doublespacing
\renewcommand{\baselinestretch}{1.1}

% https://tex.stackexchange.com/questions/9796/how-to-add-todo-notes
\usepackage[colorinlistoftodos,prependcaption,textsize=tiny]{todonotes}
% \newcommandx{\unsure}[2][1=]{\todo[linecolor=red,backgroundcolor=red!25,bordercolor=red,#1]{#2}}
% \newcommandx{\change}[2][1=]{\todo[linecolor=blue,backgroundcolor=blue!25,bordercolor=blue,#1]{#2}}
% \newcommandx{\info}[2][1=]{\todo[linecolor=OliveGreen,backgroundcolor=OliveGreen!25,bordercolor=OliveGreen,#1]{#2}}
% \newcommandx{\improvement}[2][1=]{\todo[linecolor=Plum,backgroundcolor=Plum!25,bordercolor=Plum,#1]{#2}}
% \newcommandx{\thiswillnotshow}[2][1=]{\todo[disable,#1]{#2}}

\addbibresource{bibliography.bib}

% adding new commands to make the citation more like the natbib commandos (e.g. \citep and \citet for different types of citations)
\newcommand{\citet}[1]{\Textcite{#1}}
\newcommand{\citep}[1]{\parencite{#1}}


\title{Title}
\shorttitle{}

% if you prefer to use student ID instead feel free to use that instead of name.
\author{Niclas Andreas Dobbertin} % your name or stud ID
\affiliation{Technische Universität Darmstadt}
% \course{03-03-1416-se: Advanced Topics in Multisensory Perception and Action}
\professor{Prof. Frank Jäkel}
% \duedate{26.02.2024} % fill in the due date for the submission opportunity you are aiming for


% \authornote{
%   \noindent Portfolio Part 1 for the course 03-03-1416-se: Advanced Topics in Multisensory Perception and Action. Report on the discussion of paper: ``Learning to integrate arbitrary signals from vision and touch'' by M. O. Ernst (2007)
%   }
%

\abstract{ABSTRACT
}

\begin{document}
\maketitle

\section*{Introduction}

% \citep{anderson}
% \citep{Taatgen_2013}
% \citep{Brasoveanu_2021}
% \citep{Frensch_1991}
% \citep{Elio_1986}

Cognitive Architectures, modeling learning, production systems, ACT-R

\subsection*{Productions}

\todo[inline]{Productions are Rules with a condition and an action. Example production. can interact with various modules (memory, vision, motor)}

\subsection*{Learning}

\todo[inline]{Retrieval(activation) strength, utility learning, production compilation, ...}

\subsection*{Task}

\todo[inline]{Modified Frensch/Elio Task. 7 mathematical procedures, learning differently based on presentation order}

\begin{table}[hb]
\caption{Experiment Procedures.}
\label{tab:proc}
\begin{tabular}{c}
\toprule
Procedures \\
\midrule
  $(Sandstein_4 - Sandstein_2) * Mineralien$ \\
  $(2 * Algen) + Sandstein_{min}$ \\
  $Gifte_{max} + Gifte_{min}$ \\
  $(Mineralien * 2) - Gifte_4$ \\
  $Das Höhere\, von\, (Gifte_3 - Gifte_2), (Sandstein_3)$ \\
  $Das\, Kleinere\, von\, (Sandstein_1 + Gifte_1), (Algen)$ \\
  $100 - dem\, Höchstem\, aller\, Ergebnisse$ \\
\bottomrule
\end{tabular}

\bigskip
\small\textit{Note}. The seven translated procedures used in this experiment. The bottom procedure is always included as it calculates the total water quality.
\end{table}

\section*{Model}

\todo[inline]{chunktypes, pre-knowledge}
The model was made using the ACT-R architecture through the pyactr implementation.
It has the subsymbolic system, production compilation and utility learning enabled. \todo{specify parameters}

The model works with four different types of chunks specified.
Number chunks hold the number, its digits and the number one higher.
Math operation chunks hold an operation, two arguments and a result.
Procedure chunks hold the operations, variables and values that make up a procedure in the experiment.
The math goal chunk is used in the goal buffer and hold various slots used for operations, like the current operation, arguments, counters and flags.

The model gets some basic knowledge that does not have to be learned in the form of chunks set at model initialization.
It knows each procedure already and can retrieve its operations and values with an key. \todo{specify that it still has to find the correct procedure to use?}
It knows all numbers from 0 to 999 through the number chunktype.
It has math operation chunks for all greater/less comparisons for numbers between 0 and 10. \todo{currently has even more chunks for some reason, check if necessary}
It has math operation chunks for addition of numbers between 0 and 21.

All trials are generated before the simulation starts and ordered depending on condition.
The model uses an environment to simulate a computer screen.
Elements are aranged in columns with the values in rows below their column header. \todo{get the pyactr tk working and put screenshot}
Everytime the user inputs an answer or the variables change, the evironment variables are directly updated.
User input and trial change is detected from the model trace.

The model works through the tasks with a set of productions, which perform mathematical operations, search the screen, input answers and organize order of operations.

\subsection*{Greater/Less-than Operation}
\todo[inline]{Maybe better as figure note or in appx. and simpler/shorter description}

This pair operations compares two multi-digit numbers and sets the greater/less number as answer.
For each digit (hundreds, tens, ones) there is a set of productions comparing that digit of the two numbers.
Each production set for a digit requires all higher-significant digits to be equal.
That means that the productions comparing the tens can only fire if the hundreds are equal and the productions comparing the ones can only fire if both the hundreds and the tens are equal.
The selected production now retrieves a comparison of the two digits from declarative memory.
Depending on the result, either number 1 or number 2 will be written into the answer slot.

\subsection*{Addition Operation}

This operation adds two numbers through column-addition.
The first production retrieves the sum of the ones digits of the two numbers.
The sum is put into the ones digit of the answer.
Next it tries to retrieve an addition operation from memory, where ten plus any number equals the previously found sum. \todo{maybe 10 instead ten}
If the retrieval fails, the result of the ones addition was less than ten and no carry-over is necessary.
If the retrieval succeeds, a carry flag is set and the second addend of the retrieved operation (the part over ten) is set as the ones digit answer.
Now the sum of the tens digits of the numbers is retrieved.
If the carry flag is set, add one to the sum.
Again check for remainder and set a carry flag if necessary.
Then the same repeats for the hundreds digits.

\subsection*{Multiplication Operation}

This operation multiplies two numbers through repeated addition.
Multiple productions handle cases in which one of the arguments is one or zero and directly set the answer accordingly.
First, it tries to retrieve the sum of the second argument plus itself and sets a counter to one.
If the retrieval succeeds, set the answer to the sum and increment the counter by one.
While the counter is not equal to argument 1, retrieve the sum of argument 2 plus the result and increment counter.
If the counter is equal to argument 1, the operation is finished.
If the retrieval of the sum fails, save arguments and counter in different slots and change the current operation to addition, as well as the next operation to multiplication.
When the current operation is multiplication again and there are values in the saved argument slots, restore arguments and continue.

\subsection*{Subtraction Operation}

\todo[inline]{Subtraction column-wise austrian method}

\subsection*{Motor System}

The motor module is used to input the answers and to press continue.
When the current operation is to type the answer, the first production requests the tens digit to be pressed on the keyboard.
When the action is finished, the ones digit and spacebar to continue in turn are requested to be pressed.

\subsection*{Visual System}
\todo[inline]{not really feasable to describe each production, more general overview}

The visual module is used for various operations to find the current task or to replace variables in a task with the values shown on the screen.
The screen is organized in columns with headers, so the visual module first searches for the correct column by keyword.
Now different kinds of searches will be performed dependent on what is requested.

To find the next task, the search goes down the column of tasks and saves the task at the current row.
If there is nothing in the answer column at the same y-coordinate, the currently saved task was not answered, the search is done.
To find a variable value by index, the search travels down the column while counting and stops at the desired index.
To find the max/min value of a variable, the search travels down all values in the column, checks for each one if it is greater/less than the currently saved value and replaces it if necessary.
Once all values are checked, the search is finished.

\subsection*{Utility Operations}

Several productions dictate in what order operations are executed.
When the operation slots are empty, the visual search for the next unanswered task is started.
When a task is found, productions check if the argument are already numbers and if not, request the visual search for substitution with the values on screen.
When a task is finished, the result is saved in a slot and other slots are reset, starting task search again.
If the second task is finished, start the motor input of the answer.

One production detects if the current operation is finished and another operation is queued, and sets the next operation.

Since operations use both the full numbers and their digits, a set of productions fills digit slots with the digits of a number and vice versa.


\begin{figure}[H]
    \centering
    \caption{Logic Flow of Addition}
    \label{fig:addition}
        %\includegraphics[width=1.1\textwidth]{frensch.png}

    \bigskip
    \raggedright\small\textit{Note}. When each production is executed depending on state. Either example for one operation or figures for all?\end{figure}

\begin{figure}[H]
    \centering
    \caption{Screenshot of experiment display}
    \label{fig:frensch}
        %\includegraphics[width=1.1\textwidth]{frensch.png}

    \bigskip
    \raggedright\small\textit{Note}. Example water sample as shown to a subject.\end{figure}

\section*{Results}

\begin{figure}[H]
    \centering
    \caption{Mean solution time in training and transfer phase}
    \label{fig:RT}
        % \includegraphics[width=1.1\textwidth]{RT.png}

    \bigskip
    \raggedright\small\textit{Note}. Mean solution time of all six procedures of a water sample in blocks of five samples.   \end{figure}


\begin{figure}[H]
    \centering
    \caption{Comparison with human experiment}
    \label{fig:RTcomp}
        % \includegraphics[width=1.1\textwidth]{RT.png}

    \bigskip
      \end{figure}

\section*{Discussion}

\subsection*{Confirmation/Contradiction to Experiment}

\subsection*{Model Improvements}

\todo[inline]{More in-depth modeling of all operations}
\todo[inline]{track working memory usage}

\subsection*{Working with ACT-R/pyactr}

\todo[inline]{no basic productions given, everything has to be implemented from scratch, papers using act-r very rarely publish their model code}
\todo[inline]{this model uses many different operations and modules of ACT-R and has to model each from scratch and handle task switching}
\todo[inline]{vis: relative positions are not implemented, the visual search loops had to be unrolled to the required number of iterations and is not general}

\newpage

\printbibliography

% \end{figure}


\end{document}
</pre></body></html>