Skip to content
Snippets Groups Projects
Commit 414fefd6 authored by Alexander Heidelbach's avatar Alexander Heidelbach
Browse files

Add global minimizing strategy

parent c578c8bd
Branches
No related tags found
No related merge requests found
from abc import ABC, abstractmethod
import numpy as np
from typing import Any, Mapping, Type, Union, List, TypeVar
from typing import Any, Dict, Mapping, Optional, Type, Union, List, TypeVar
import zfit
import zfit.core
......@@ -17,9 +17,13 @@ class BaseFitter(ABC):
self,
model: Model,
retry: int = 10,
global_optimizer: str = "",
global_optimizer_args: Dict[Any, Any] = {},
) -> None:
self.model = model
self.retry = retry
self.global_optimizer = global_optimizer
self.global_optimizer_args = global_optimizer_args
self.result_text = [] # type: List[str]
......@@ -126,8 +130,20 @@ class BaseFitter(ABC):
nll = self.lossfunction(model=self.eval_model, data=self.data)
# minimize
minimizer = zfit.minimize.Minuit(gradient=True)
result = minimizer.minimize(nll).update_params()
if self.global_optimizer:
minimizer_global = getattr(zfit.minimize, self.global_optimizer)(
**self.global_optimizer_args
)
minimizer_global = zfit.minimize.NLoptStoGOV1()
result_global = minimizer_global.minimize(nll).update_params()
result_global.errors()
result_global.hesse()
print("Done with global minimization")
print(result_global.params)
nll = result_global.loss
minimizer_local = zfit.minimize.Minuit(gradient=True)
result = minimizer_local.minimize(nll).update_params()
# calculate errors
result.errors()
......@@ -138,6 +154,8 @@ class BaseFitter(ABC):
covariance = result.covariance(as_dict=True)
assert isinstance(covariance, dict)
self.model.covariance = covariance
self.model.gof = self.gof
print("Done with local minimization")
print(params)
self._save_result(params=params)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment