<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def run_models(self):
 """ Run all models. Returns ------- model Best model dict Metrics of the models """


        self.linear_regression()
        self.lasso_regression()
        self.ridge_regression()
        self.elastic_net_regression()
        self.random_forest()
        self.ann()

        # Index of the model with max score
        best_model_index = self.max_scores.index(max(self.max_scores))

        # Store name of the optimal model
        self.best_model_name = self.model_names[best_model_index]

        # Store optimal model
        self.best_model = self.models[best_model_index]

        return self.metrics