   "Most important fn here.
   Tests given mutation"
   [{:keys [train-opts] :as solver} prev-net mutation]
-  (let [dataset (get-dataset solver)
-        entries [(:train dataset) (:test dataset)]
+  (let [[train-e validation-e] (get-train-validation-entries solver)
+        entries [validation-e (get-test-entries solver)]
         mutated-net (m/mutate prev-net mutation)
-        new-net (trainer/train mutated-net (:train dataset) train-opts)
+        new-net (trainer/train mutated-net train-e train-opts)
         [train-cost test-cost] (map #(trainer/calc-cost new-net %) entries)
         [train-metrics test-metrics] (map #(get-metrics solver new-net %) entries)]
     (commands/->SolvingCase


(defn- make-combined-cases
  [solver net cases]
  (let [select-count 5
        selected-cases (->> cases
                            (sort-cases)
                            (take-while #(not= ::m/identity (:operation (:mutation %))))

    ::commands/regression (->RegressionSolver t-opts m-opts)
    ::commands/classification (->ClassificationSolver t-opts m-opts)))

(defn get-train-validation-entries
  [solver]
  (let [dataset (data/datasets (:dataset (:mutation-opts solver)))
        [train _] (data/split-proportion (:train dataset) 3/4)]
    [train (:train dataset)]))

(defn get-test-entries
  [solver]
  (-> (:dataset (:mutation-opts solver))
      (data/datasets)
      (:test)))

(defn- make-solving
  [solver net best-case other-cases ms-took]
