1. A method comprising: storing an artificial neural network model that is configured to predict one or more outputs based at least in part on one or more inputs, wherein the artificial neural network model comprises an input layer, one or more intermediate layers, and an output layer; and minimizing a global error in the artificial neural network model at least in part by solving a mixed integer linear program that directly determines, without performing a gradient descent, one or more weights between two or more artificial neurons in the artificial neural network model, wherein: the mixed integer linear program comprises one or more piecewise linear activation functions for one or more artificial neurons in the artificial neural network model, and said directly determines said one or more weights comprises branching a candidate set of weights into candidate sub-sets of weights and determining upper and lower bounds for said global error based on the candidate sub-sets of weights; configuring the artificial neural network model based on the one or more weights; wherein the method is performed by one or more computing devices.