## 2 Methods and Materials
### Artificial Neural Network  
In this work, the Multi-Layer Perceptron Regressor (MLPRegressor) was used to create an artificial neural network model. MLPRegressor is an example of a deep learning algorithm. It learns non-linear functions and creates a map of the input data (geometric: dimensions of concrete slab, position of steel reinforcement, and physical: the area of the steel reinforcement, see Section 2.1) to the output data (_ABDR_ matrix, see Section 2.3)of the RVE models. In this study, MLPRegressor was used from scikit-learn [30]. Scikit-learn is a free, open-source machine learning library in Python. It features various machine learning algorithms, for instance, classification, regression, dimensionality reduction, model selection, pre-processing and clustering.  
If there is a vector of the input data \(\mathbf{X}=x_{1},x_{2},\ldots,x_{M}\) and vector of the output data \(y=y_{1},y_{2},\ldots,y_{S}\), where \(M\) is the number of the input data, and \(S\) is the number of the output data, MLPRegressor creates an estimation for the function \(f(\cdot):\mathbf{X}\to y\) for a regression problem. To create a model, it is required to define the number of the hidden neuron layers, the number of nodes in each of them, an activation function, and a solver for weight optimization. Multilayer perceptron may contain one or more hidden layers. Each node calculates the value from the previous node with the weight and deviation of that node. Nodes are connected with nodes in the next layer from input layer to the output. Data in the \(j_{n}\) node is calculated by the following:  
\[j_{n}=g\left(\sum_{i=1}^{M}w_{ij}x_{i}+b_{j}\right) \tag{15}\]  
in which \(g(\cdot)\) is a nonlinear activation function, \(w_{ij}\) is a weight and \(b_{j}\) is a deviation. MLPRegressor learns based on the expected results in the learning dataset by forward and backward propagation due to adjusting the weight of the connection \(w_{ij}\) and values of deviation in the layer output \(b_{j}\).  
The activation function chosen for this research is Rectified Linear Unit (ReLU), which suits a lot of ANN models. The way the function ReLU is activated has a biological basis, namely, it is based on the behavior of the neurons in the brain. The activation function takes the following:  
\[g(X)=max(0,\mathbf{X}). \tag{16}\]  
The solver chosen for this research study is Adam [31]; it is easy to implement and efficient for the calculations for tasks characterized by a large amount of data and parameters. After [31], the pseudo code of the Adam algorithm was shown in Algorithm 1.  
The Adam method, used for computing ANN weights, utilizes first and second moment vectors, which represents the estimation of the mean gradients and gradients variance, respectively. Beta parameters, \(\beta_{1}\) and \(\beta_{2}\), correct the first and second moments. Learning rates are adjusted adaptively for each parameter by dividing the current gradient by the square root of the current estimation of the second moment. With adaptive learning rate adjustment and the ability to use different coefficients for different parameters, Adam is more stable and efficient than traditional gradient-based optimization methods.