---
source_url: https://docs.dolphindb.cn/zh/funcs/b/brute.html
fetched_at: 2026-05-19T09:14:09Z
category: funcs
title: brute
sha1: e83834ca2ed68bbb41ec2ebd729b8bd6c2bed26c
---

# brute

## 语法

`brute(func, ranges, [ns=20], [finish=fmin])`

## 详情

通过穷举法在给定范围内最小化一个函数。穷举法使用网格搜索，即计算多维网格点上每个点处的函数值，以找到函数的全局最小值。

注意：穷举法效率低下，其原因是网格点的数量呈指数级增加。因此，即使网格间距较粗、或者问题仅为中等大小等情况，也可能需要很长的运行时间，还可能遇到内存限制。

## 参数

**func** 函数名，表示需要最小化的目标函数。注意：其返回值须是数值标量类型。

**ranges** 元组类型，表示每个参数分量的数值范围。*ranges* 中每个元素为形如`(low,
high)`或`(low, high, num)`的元组。其中 `low` 和
`high` 都是数值类型，`low`
表示该参数分量的最低取值，`high` 表示该参数分量的最高取值；`num`
为正整数，表示沿轴线的网格点数量，即该参数分量在范围内的取值个数。

**ns** 可选参数，正整数标量，表示沿轴线的网格点数量。优先取 *ranges* 元素`(low, high,
num)`中的 `num` 值；若 *ranges* 中未设置*，*则
`num` 为 *ns*。该参数默认值为 20。

**finish** 可选参数，函数名，表示一个优化函数。其输入需满足 `finish(func,
X)`；输出应返回一个字典，包含键`"xopt"`和`"fopt"`，且值为数值类型。默认值为函数
`fmin`。将穷举法网格搜索的结果作为初始猜测，使用该函数对目标函数进行优化。注意：也可传入“NULL”，表示直接返回穷举法网格搜索的结果，不进行优化。

## 返回值

返回一个字典，字典有以下成员：

- xopt：浮点数向量，使目标函数最小化的参数值。
- fopt：浮点数标量，目标函数最小值。fopt=func(xopt)。

## 例子

以下自定义一个函数 `f`，传入指定 *ranges* 和 *ns* 值，计算 `f`
函数在 *ranges* 内最小化的参数值和对应的最小值。

```dolphindb
def f(z) {
	a = 2
	b = 3
	c = 7
	d = 8
	ee = 9
	f = 10
	g = 44
	h = -1
	i = 2
	j = 26
	k = 1
	l = -2
	scale = 0.5
	x = z[0]
	y = z[1]
	f1 = a * square(x) + b * x * y + c * square(y) + d * x + ee* y + f
	f2 = -g * exp(-(square(x-h)+square(y-i)) / scale)
	f3 =  -j * exp(-(square(x-k)+square(y-l)) / scale)
	return f1+f2+f3
}
ranges=((-4, 3.75),(-4, 3.75))
brute(f, ranges, 32)

/* Ouput:

fopt->-3.408581876799
xopt->[-1.056651921797,1.808348429512]

*/
```
