def upper_confidence_bound(mean: float, variance: float, curr_best: float=
    0.0, kappa: float=1.0) ->float:
    """
    upper confidence bound of improvement: used in the case of maximization problems

    :param mean: mean of surrogate
    :param variance: variance of surrogate
    :param curr_best: current best evaluated point
    :param kappa: exploration - exploitation tradeoff parameter
    :return: upper confidence bound
    """
    return mean + kappa * variance - curr_best
