當前位置: 首頁>>代碼示例>>Python>>正文


Python optimize.brute方法代碼示例

本文整理匯總了Python中scipy.optimize.brute方法的典型用法代碼示例。如果您正苦於以下問題:Python optimize.brute方法的具體用法?Python optimize.brute怎麽用?Python optimize.brute使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在scipy.optimize的用法示例。


在下文中一共展示了optimize.brute方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。

示例1: objective_function

# 需要導入模塊: from scipy import optimize [as 別名]
# 或者: from scipy.optimize import brute [as 別名]
def objective_function(self, parameter_vector, data):
        "The objective function for brute-force and gradient-based optimizer."
        if self.model.N_models > 1:
            nested_fractions = parameter_vector[-(self.model.N_models - 1):]
            normalized_fractions = nested_to_normalized_fractions(
                nested_fractions)
            parameter_vector_ = np.r_[
                parameter_vector[:-(self.model.N_models - 1)],
                normalized_fractions]
        else:
            parameter_vector_ = parameter_vector
        parameter_vector_ = (
            parameter_vector_ * self.model.scales_for_optimization)
        parameters = {}
        parameters.update(
            self.model.parameter_vector_to_parameters(parameter_vector_)
        )
        E_model = self.model(self.acquisition_scheme, **parameters)
        E_diff = E_model - data
        objective = np.dot(E_diff, E_diff) / len(data)
        return objective 
開發者ID:AthenaEPI,項目名稱:dmipy,代碼行數:23,代碼來源:brute2fine.py

示例2: _compute_mle_safe

# 需要導入模塊: from scipy import optimize [as 別名]
# 或者: from scipy.optimize import brute [as 別名]
def _compute_mle_safe(self):
        """Compute the MLE via a grid-search.

        This is a stable approach if sufficient gridpoints are used.
        """
        one_hits, all_hits = self._get_hits()

        # search range
        eps = 1e-15  # to avoid invalid value in log
        search_range = [0 + eps, np.pi / 2 - eps]

        def loglikelihood(theta):
            # logL contains the first `it` terms of the full loglikelihood
            logL = 0
            for i, k in enumerate(self._evaluation_schedule):
                logL += np.log(np.sin((2 * k + 1) * theta) ** 2) * one_hits[i]
                logL += np.log(np.cos((2 * k + 1) * theta) ** 2) * (all_hits[i] - one_hits[i])
            return -logL

        est_theta = brute(loglikelihood, [search_range], Ns=self._likelihood_evals)[0]
        return est_theta 
開發者ID:Qiskit,項目名稱:qiskit-aqua,代碼行數:23,代碼來源:mlae.py

示例3: _ls2ar

# 需要導入模塊: from scipy import optimize [as 別名]
# 或者: from scipy.optimize import brute [as 別名]
def _ls2ar(inp, strinp):
    r"""Convert float or linspace-input to arange/slice-input for brute."""

    # Check if input is 1 or 3 elements (float, list, tuple, array)
    if np.size(inp) == 1:
        start = np.squeeze(inp)
        stop = start+1
        num = 1
    elif np.size(inp) == 3:
        start = inp[0]
        stop = inp[1]
        num = inp[2]
    else:
        raise ValueError(f"<{strinp}> must be a float or a tuple of 3 elements"
                         f" (start, stop, num); <{strinp} provided: {inp}")

    # Re-arrange it to be compatible with np.arange/slice for brute
    if num < 2 or start == stop:
        stop = start
        step = 1
    else:
        step = (stop-start)/(num-1)
    return (start, stop+step/2, step) 
開發者ID:empymod,項目名稱:empymod,代碼行數:25,代碼來源:fdesign.py

示例4: min_func_improved

# 需要導入模塊: from scipy import optimize [as 別名]
# 或者: from scipy.optimize import brute [as 別名]
def min_func_improved(self, l_pmr):
        """
        包裝min_func具體現實函數,在brust_min函數中使用:
        sco.brute(self.min_func_improved, bnds, full_output=False, finish=None)
        計算最優參數組合,因為在self.min_func中計算的是提高improved值,要想得到最大
        提高參數組合,即self.min_func返回值最大的組合,使用最優sco.brute的目標是
        最小值,所以使用 -self.min_func(l_pmr)[0],找到最小值,結果的參數組合即為
        最大提高improved值的參數組合
        :param l_pmr: 可迭代序列,eg:(-0.45, -0.11, 0.77), 由三個float值組成的序列
                      l_pmr[0]: 切取self.cprs使用的分類簇交易獲利和值,即lps閥值:self.cprs['lps'] <= l_pmr[0]
                      l_pmr[1]: 切取self.cprs使用的分類簇交易獲利平均值,即lms閥值:self.cprs['lms'] <= l_pmr[1]
                      l_pmr[2]: 切取self.cprs使用的分類簇交易失敗比例,即lrs閥值:self.cprs['lrs'] >= l_pmr[2]
        :return: -self.min_func(l_pmr)[0],即[improved, effect_num][0], 即improved值,float
        """
        self.brust_progress.show()
        return -self.min_func(l_pmr)[0] 
開發者ID:bbfamily,項目名稱:abu,代碼行數:18,代碼來源:ABuUmpMainBase.py

示例5: sample_624

# 需要導入模塊: from scipy import optimize [as 別名]
# 或者: from scipy.optimize import brute [as 別名]
def sample_624():
    """
    6.2.4 全局最優求解怎樣度過一生最幸福
    :return:
    """
    import scipy.optimize as sco

    def minimize_happiness_global(weights):
        if np.sum(weights) != 1:
            # 過濾權重和不等於1的權重組合
            return 0
        # 最優都是尋找最小值,所以要得到幸福指數最大的權重,
        # 返回-my_life,這樣最小的結果其實是幸福指數最大的權重配比
        return -my_life(weights)[1]

    opt_global = sco.brute(minimize_happiness_global,
                           ((0, 1.1, 0.1), (0, 1.1, 0.1), (0, 1.1, 0.1)))
    print(opt_global)

    living_day, happiness, wealth, fame = my_life(opt_global)
    print('活了{}年,幸福指數{}, 積累財富{}, 名望權力{}'.format
          (living_day, happiness, wealth, fame))


# noinspection PyTypeChecker 
開發者ID:bbfamily,項目名稱:abu,代碼行數:27,代碼來源:c6.py

示例6: alg_decay_fit

# 需要導入模塊: from scipy import optimize [as 別名]
# 或者: from scipy.optimize import brute [as 別名]
def alg_decay_fit(x, y, npts=5, power_range=(0.01, 4.), power_mesh=[60, 10]):
    """Fit y to the form ``a*x**(-b) + c``.

    Returns a triplet [a, b, c].

    npts specifies the maximum number of points to fit.  If npts < len(x), then alg_decay_fit() will only fit to the last npts points.
    power_range is a tuple that gives that restricts the possible ranges for b.
    power_mesh is a list of numbers, which specifies how fine to search for the optimal b.
    E.g., if power_mesh = [60,10], then it'll first divide the power_range into 60 intervals, and then divide those intervals by 10.
    """
    x = np.array(x)
    y = np.array(y)
    assert x.ndim == 1 and y.ndim == 1
    assert len(x) == len(y)
    if npts < 3:
        raise ValueError
    if len(x) > npts:
        x = x[-npts:]
        y = y[-npts:]
    global_log_power_range = (np.log(power_range[0]), np.log(power_range[1]))
    log_power_range = global_log_power_range
    for i in range(len(power_mesh)):
        # number of points inclusive
        brute_Ns = (power_mesh[i] if i == 0 else 2 * power_mesh[i]) + 1
        log_power_step = (log_power_range[1] - log_power_range[0]) / float(brute_Ns - 1)
        brute_fit = optimize.brute(alg_decay_fit_res, [log_power_range], (x, y),
                                   Ns=brute_Ns,
                                   finish=None)
        if brute_fit <= global_log_power_range[0] + 1e-6:
            return [0., 0., y[-1]]  # shit happened
        log_power_range = (brute_fit - log_power_step, brute_fit + log_power_step)
    l_fit = linear_fit(x**(-np.exp(brute_fit)), y)
    return [l_fit[0], np.exp(brute_fit), l_fit[1]] 
開發者ID:tenpy,項目名稱:tenpy,代碼行數:35,代碼來源:fit.py

示例7: optimal_threshold

# 需要導入模塊: from scipy import optimize [as 別名]
# 或者: from scipy.optimize import brute [as 別名]
def optimal_threshold(data):
    """Optimal image threshold based on pearson correlation [1]_. The idea is
    that an 'optimal' mask of some arbitrary image data should be found by
    thresholding at a value that maximizes the pearson correlation between the
    original image and the mask, i.e:

    T* = argmax_T (\rho(data, data>T))
       = argmin_T -(\rho(data, data>T))

    This function estimates T* based on the second equation on arbitrary input
    arrays.

    Parameters
    ----------
    scalar_data: 1D array,
        scalar array to estimate an 'optimal' threshold on.

    Returns
    -------
    optimal_threshold: float,
        optimal threshold value that maximizes correlation between the original
        and masked data.

    References
    ----------
    .. [1] Ridgway, Gerard R., et al. "Issues with threshold masking in
        voxel-based morphometry of atrophied brains." Neuroimage 44.1 (2009):
        99-111.
    """
    min_bound = data.min()
    max_bound = data.max()
    eps = 1e-10
    optimal_threshold = brute(
        func=_cost_function,
        Ns=100,
        args=(data,),
        ranges=([min_bound + eps, max_bound - eps],))[0]
    return optimal_threshold 
開發者ID:AthenaEPI,項目名稱:dmipy,代碼行數:40,代碼來源:three_tissue_response.py

示例8: test_brute

# 需要導入模塊: from scipy import optimize [as 別名]
# 或者: from scipy.optimize import brute [as 別名]
def test_brute(self):
        # test fmin
        resbrute = optimize.brute(self.func, self.rranges, args=self.params,
                                  full_output=True, finish=optimize.fmin)
        assert_allclose(resbrute[0], self.solution, atol=1e-3)
        assert_allclose(resbrute[1], self.func(self.solution, *self.params),
                        atol=1e-3)

        # test minimize
        resbrute = optimize.brute(self.func, self.rranges, args=self.params,
                                  full_output=True,
                                  finish=optimize.minimize)
        assert_allclose(resbrute[0], self.solution, atol=1e-3)
        assert_allclose(resbrute[1], self.func(self.solution, *self.params),
                        atol=1e-3) 
開發者ID:Relph1119,項目名稱:GraphicDesignPatternByPython,代碼行數:17,代碼來源:test_optimize.py

示例9: test_1D

# 需要導入模塊: from scipy import optimize [as 別名]
# 或者: from scipy.optimize import brute [as 別名]
def test_1D(self):
        # test that for a 1D problem the test function is passed an array,
        # not a scalar.
        def f(x):
            assert_(len(x.shape) == 1)
            assert_(x.shape[0] == 1)
            return x ** 2

        optimize.brute(f, [(-1, 1)], Ns=3, finish=None) 
開發者ID:Relph1119,項目名稱:GraphicDesignPatternByPython,代碼行數:11,代碼來源:test_optimize.py

示例10: minimize

# 需要導入模塊: from scipy import optimize [as 別名]
# 或者: from scipy.optimize import brute [as 別名]
def minimize(func, dim):
  if dim == 2:
    r = ((0, np.pi), (0, np.pi))
    n = 25
  elif dim == 3:
    r = ((0, np.pi), (0, np.pi), (0, np.pi))
    n = 10

  # TODO -- try basin hopping or annealing
  return optimize.brute(func, r, Ns = n, full_output = True, finish = optimize.fmin)[0:2] 
開發者ID:fxcoudert,項目名稱:elate,代碼行數:12,代碼來源:elastic.py

示例11: _print_count

# 需要導入模塊: from scipy import optimize [as 別名]
# 或者: from scipy.optimize import brute [as 別名]
def _print_count(log):
    r"""Print run-count information."""
    log['cnt2'] += 1                   # Current number
    cp = log['cnt2']/log['totnr']*100  # Percentage

    if log['cnt2'] == 0:  # Not sure about this; brute seems to call the
        pass              # function with the first arguments twice...

    elif log['cnt2'] > log['totnr']:  # fmin-status
        print(f"   fmin  fct calls : {log['cnt2']-log['totnr']}", end='\r')

    elif int(cp) > log['cnt1'] or cp < 1 or log['cnt2'] == log['totnr']:
        # Get seconds since start
        sec = int(default_timer() - log['time'])

        # Get estimate of remaining time, as string
        tleft = str(timedelta(seconds=int(100*sec/cp - sec)))

        # Print progress
        pstr = f"   brute fct calls : {log['cnt2']}/{log['totnr']}"
        if log['totnr'] > 100:
            pstr += f" ({int(cp)} %); est: {tleft}        "
        print(pstr, end='\r')

        if log['cnt2'] == log['totnr']:
            # Empty previous line
            print(" "*len(pstr), end='\r')

            # Print final brute-message
            print(f"   brute fct calls : {log['totnr']}")

        # Update percentage cnt1
        log['cnt1'] = cp

    return log 
開發者ID:empymod,項目名稱:empymod,代碼行數:37,代碼來源:fdesign.py

示例12: modelNFR

# 需要導入模塊: from scipy import optimize [as 別名]
# 或者: from scipy.optimize import brute [as 別名]
def modelNFR(self, boundaries = (35,115)):
        """Model NFR distribution with gamma distribution"""
        b = np.where(self.fragmentsizes.get(self.lower,boundaries[1]) == max(self.fragmentsizes.get(self.lower,boundaries[1])))[0][0] + self.lower
        boundaries = (min(boundaries[0],b), boundaries[1])
        x = np.arange(boundaries[0],boundaries[1])        
        y = self.fragmentsizes.get(boundaries[0],boundaries[1]) 
        def gamma_fit(X,o,p):
            k = p[0]
            theta = p[1]
            a = p[2]
            x_mod = X-o
            res = np.zeros(len(x_mod))
            if k>=1:
                nz = x_mod >= 0
            else:
                nz = x_mod > 0
            res[nz] = a * x_mod[nz]**(k-1) * np.exp(-x_mod[nz]/theta) / (theta **k * gamma(k))
            return res 
        res_score = np.ones(boundaries[0]+1)*np.float('inf')
        res_param = [0 for i in range(boundaries[0]+1)]
        pranges = ((0.01,10),(0.01,150),(0.01,1))
        for i in range(15,boundaries[0]+1):
            f = lambda p: np.sum((gamma_fit(x,i,p) - y)**2)
            tmpres = optimize.brute(f, pranges,  full_output=True,
                              finish=optimize.fmin)
            res_score[i] = tmpres[1]
            res_param[i] = tmpres[0]
        whichres = np.argmin(res_score)
        res = res_param[whichres]
        self.nfr_fit0 = FragmentSizes(self.lower,self.upper, vals = gamma_fit(np.arange(self.lower,self.upper),whichres,res_param[whichres]))
        nfr = np.concatenate((self.fragmentsizes.get(self.lower,boundaries[1]), self.nfr_fit0.get(boundaries[1],self.upper))) 
        nfr[nfr==0] = min(nfr[nfr!=0])*0.01
        self.nfr_fit = FragmentSizes(self.lower,self.upper, vals = nfr)
        nuc = np.concatenate((np.zeros(boundaries[1]-self.lower),
                            self.fragmentsizes.get(boundaries[1],self.upper) -
                            self.nfr_fit.get(boundaries[1],self.upper)))
        nuc[nuc<=0]=min(min(nfr)*0.1,min(nuc[nuc>0])*0.001)
        self.nuc_fit = FragmentSizes(self.lower, self.upper, vals = nuc) 
開發者ID:GreenleafLab,項目名稱:NucleoATAC,代碼行數:40,代碼來源:Occupancy.py

示例13: sample_625

# 需要導入模塊: from scipy import optimize [as 別名]
# 或者: from scipy.optimize import brute [as 別名]
def sample_625():
    """
    6.2.5 非凸函數計算怎樣度過一生最幸福
    :return:
    """
    import scipy.optimize as sco

    method = 'SLSQP'
    # 提供一個函數來規範參數,np.sum(weights) = 1 -> np.sum(weights) - 1 = 0
    constraints = ({'type': 'eq', 'fun': lambda p_x: np.sum(p_x) - 1})
    # 參數的範圍選定
    bounds = tuple((0, 0.9) for _ in xrange(3))
    print('bounds:', bounds)

    def minimize_happiness_local(weights):
        # print(weights)
        return -my_life(weights)[1]

    # 初始化猜測最優參數,這裏使用brute計算出的全局最優參數作為guess
    guess = [0.5, 0.2, 0.3]
    opt_local = sco.minimize(minimize_happiness_local, guess,
                             method=method, bounds=bounds,
                             constraints=constraints)
    print('opt_local:', opt_local)


# noinspection PyShadowingNames 
開發者ID:bbfamily,項目名稱:abu,代碼行數:29,代碼來源:c6.py

示例14: _correct_gear_shifts

# 需要導入模塊: from scipy import optimize [as 別名]
# 或者: from scipy.optimize import brute [as 別名]
def _correct_gear_shifts(
        times, ratios, gears, velocity_speed_ratios, shift_window=4.0):
    import scipy.optimize as sci_opt
    from . import calculate_gear_shifts
    shifts = calculate_gear_shifts(gears)
    vsr = np.vectorize(lambda v: velocity_speed_ratios.get(v, 0))
    s = len(gears)

    def _err(v, r):
        v = int(v) or 1
        return np.float32(co2_utl.mae(ratios[slice(v - 1, v + 1, 1)], r))

    k = 0
    new_gears = np.zeros_like(gears)
    dt = shift_window / 2
    for i in np.arange(s)[shifts]:
        g = gears[slice(i - 1, i + 1, 1)]
        j = int(i)
        if g[0] != 0 and g[-1] != 0:
            t = times[i]
            n = max(i - (((t - dt) <= times) & (times <= t)).sum(), min(i, k))
            m = min(i + ((t <= times) & (times <= (t + dt))).sum(), s)
            if n + 1 > m:
                # noinspection PyTypeChecker
                j = int(sci_opt.brute(
                    _err, (slice(n, m, 1),), args=(vsr(g),), finish=None)
                )
        x = slice(j - 1, j + 1, 1)
        new_gears[x] = g
        new_gears[k:x.start] = g[0]
        k = x.stop

    new_gears[k:] = new_gears[k - 1]

    return new_gears 
開發者ID:JRCSTU,項目名稱:CO2MPAS-TA,代碼行數:37,代碼來源:mechanical.py

示例15: brute_search

# 需要導入模塊: from scipy import optimize [as 別名]
# 或者: from scipy.optimize import brute [as 別名]
def brute_search(self, weights, metaParamNames=list(),
                     objective=lambda x: x.loss,
                     negative_objective=False,
                     stochastic_objective=True,
                     stochastic_samples=25,
                     stochastic_precision=0.01,
                     ):
        """
        Uses BFS to find optimal simulation hyperparameters
        Note:
            You want runs passed in the solver to have __no randomness__
            Solving a stochastic simulation will cause problems with solver

        Arguments
        ---------
        Weights: list<floats>
                 weights to be optimized on
        metaParamName: list<string>
                 list of names of arguments to be optimized on
                 the index respects the weights argument above
                 the strings should be the same as in a simulation run input
                 Weights and metaparamNames together would form the
                 algoParams dict in a normal simulation
        objective: function(Market) -> float
            objective function
            by default number of matches
            can be changed to loss, for example, by
                "objective=lambda x: x.loss"
        returns
        -------
        np.array of weights where function is minimized
                if negative_objective=True, where maximized
        """
        def this_run(w):
            # note - sign here
            # TODO fix negative sign
            sign = 1 if negative_objective else -1
            if stochastic_objective:
                result = 0
                # If objective stochastic, make montecarlo draws & average
                for i in range(stochastic_samples):
                    result += sign * \
                            self.single_run(w,
                                            metaParamNames=metaParamNames,
                                            objective=objective)
                # Average montecarlo draws
                result = result/stochastic_samples
                # Tune precision for convergence
                result = int(result/stochastic_precision)*stochastic_precision
                return result
            else:
                return sign*self.single_run(w,
                                            metaParamNames=metaParamNames,
                                            objective=objective)
        # res = []
        # for i in range(10):
        #    res.append(this_run(weights))
        res = optimize.brute(this_run, weights, full_output=True, disp=True,
                             finish=optimize.fmin
                             )
        return res[0] 
開發者ID:QuantEcon,項目名稱:MatchingMarkets.py,代碼行數:63,代碼來源:simulations.py


注:本文中的scipy.optimize.brute方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。