NMinValue

NMinValue[f,x]

给出关于 xf 的全局最小值.

NMinValue[f,{x,y,}]

给出关于 xyf 的全局最小值.

NMinValue[{f,cons},{x,y,}]

给出在约束条件 consf 的全局最小值.

NMinValue[,xreg]

x 约束在区域 reg 内.

更多信息和选项

  • NMinValue 亦称为全局优化 (GO).
  • NMinValue 总是尝试求给定约束条件限制下 f 的全局最小值.
  • NMinValue 通常用于求给定约束条件下可能的最小值. 在不同的领域,这可能被称为最佳策略、最佳方案、最佳配置等.
  • 如果 fcons 是线性的或凸的,NMinValue 给出的结果将是实数和整数值上的全局最小值;否则,有时结果可能只是局部最小值.
  • 如果 NMinValue 发现无法满足约束条件,则会返回 Infinity.
  • NMinValue 支持一种建模语言,其中目标函数 f 和约束条件 cons 是用依赖于标量或向量变量的表达式给出的. fcons 通常被解析为非常有效的形式,但只要 fcons 中的项给出变量的数值结果,NMinValue 通常可以找到解.
  • 约束条件 cons 可以是以下表达式的任意逻辑组合:
  • lhs==rhs等式
    lhs>rhs, lhsrhs, lhs<rhs, lhsrhs不等式 (LessEqual)
    lhsrhs, lhsrhs, lhsrhs, lhsrhs向量不等式 (VectorLessEqual)
    {x,y,}rdom区域或域的指定
  • NMinValue[{f,cons},xrdom] 实际上等价于 NMinValue[{f,cons&&xrdom},x].
  • 对于 xrdom,可用 Indexed[x,i] 来指代不同的坐标.
  • 可能的域 rdom 包括:
  • Reals实标量变量
    Integers整数标量变量
    Vectors[n,dom] 中的向量变量
    Matrices[{m,n},dom] 中的矩阵变量
    限制在几何区域 中的向量变量
  • 默认情况下,假定所有变量为实数.
  • 可给出以下选项:
  • AccuracyGoalAutomatic追求多少位的准确度
    EvaluationMonitor None计算 f 时要计算的表达式
    MaxIterationsAutomatic使用的最大迭代次数
    Method Automatic使用的方法
    PrecisionGoalAutomatic追求多少位的精度
    StepMonitor None每次迭代时要计算的表达式
    WorkingPrecision MachinePrecision内部计算使用的精度
  • AccuracyGoalPrecisionGoal 的设置指定了搜索最小值所在位置(最小化点)和函数的最小值时应使用的位数.
  • NMinValue 会持续运行,直到 AccuracyGoalPrecisionGoal 指定的目标实现为止.
  • NMinValue 的方法分为两类. 第一类方法利用问题的属性,因此当方法收敛时,找到的最小值保证是全局的. 第二类启发式方法使用的方法可能包括多个局部搜索,通常通过一些随机性进行调整以锁定全局最小值. 这些方法通常能找到全局最小值,但无法保证.
  • 收敛到解时确保可以给出全局最小值的方法包括:
  • "Convex"只使用凸方法
    "MOSEK"对于凸问题,使用商用 MOSEK 库
    "Gurobi"对于凸问题,使用商用 Gurobi 库
    "Xpress"对于凸问题,使用商用 Xpress 库
  • 启发式方法包括:
  • "NelderMead"Nelder 和 Mead 的单纯形法
    "DifferentialEvolution"使用差分进化
    "SimulatedAnnealing"使用模拟退火
    "RandomSearch"使用从多个随机起始点中找到的最佳局部最小值
    "Couenne"使用 Couenne 库处理非凸混合整数非线性问题

范例

打开所有单元关闭所有单元

基本范例  (4)

求一元函数的全局最小值:

求多元函数的全局最小值:

求受约束条件限制的函数的全局最小值:

求函数在几何区域上的全局最小值:

范围  (40)

基本用法  (12)

在约束条件 下的最小值:

可用 VectorGreaterEqual 表示几个线性不等式约束条件:

v>=\[VectorGreaterEqual] 输入向量不等式符号

用标量不等式给出的等价形式:

使用向量变量

由于 中可能存在的逐项运算,不等式 不一定和 一样:

如果想要避免 中不想要的逐项运算,可使用 Inactive[Plus]

如果想要避免 中不想要的逐项运算,可使用 Inactive[Plus]

VectorGreaterEqual 表示关于 "NonNegativeCone" 的锥不等式:

如果想明确指定锥体的尺寸,可使用 {"NonNegativeCone",n}

求最小值:

在约束条件 下的最小值:

用含有 "NormCone" 的锥不等式指定约束条件

求最小值:

求函数 在约束条件 下的最小值:

Indexed 访问向量变量的分量,如 TemplateBox[{x, 1}, IndexedDefault]

当向量变量不明确时,用 Vectors[n,dom] 指定维度和域:

NonNegativeReals (TemplateBox[{}, NonNegativeReals]) 指定非负约束条件:

用向量不等式 表示的等价格式:

NonPositiveReals (TemplateBox[{}, NonPositiveReals]) 指定非正约束条件:

用向量不等式表示的等价格式:

可以指定 Or 约束条件:

域约束条件  (4)

用向量不等式表示的等价格式:

Vectors[n,Integers] 指定向量变量的整数域约束条件:

NonNegativeIntegers (TemplateBox[{}, NonNegativeIntegers]) 指定非负整数域约束条件:

NonPositiveIntegers (TemplateBox[{}, NonPositiveIntegers]) 指定非正整数域约束条件:

区域约束条件  (5)

在区域内的最小值:

求两个区域间的最小距离:

求使得三角形和椭圆仍然相交的 的最小值:

求包含给定的三个点的圆盘的最小半径:

Circumsphere 直接给出同样的结果:

指定 中的一个向量,且 TemplateBox[{x}, Norm]=1

线性问题  (5)

如果目标函数和约束条件是线性的,最小值即是全局最小值:

约束条件可以是等式和不等式约束条件:

Equal 一次表示几个等式约束条件:

用几个标量等式表示的等价形式:

VectorLessEqual 一次表示几个 LessEqual 不等式约束条件:

v<= 以紧凑格式输入向量不等式:

用标量不等式表示的等价形式:

Interval 指定变量的范围:

凸问题  (7)

"NonNegativeCone" 指定形如 的线性函数:

v>= 以紧凑格式输入向量不等式:

求受线性约束条件限制的凸二次函数的最小值:

求受一组凸二次约束条件限制的凸二次函数的最小值:

求两个凸区域之间的最小距离:

求使得 为半正定的 的最小值:

最小化凸目标函数 ,使得 为半正定且

求凸目标函数在 4-norm 单位圆盘上的最小值:

可转化为凸问题的问题  (4)

求面积为 1 的矩形的最小周长,使得高度最多为宽度的一半:

这个问题是对数-凸 (log-convex) 的,可以通过做一个变换 {hExp[],wExp[ ]} 并取对数得到凸问题来解决:

求受不等式和范数约束条件限制的拟凸函数 的最小值. 目标函数是拟凸的,因为它是域上一个非负函数和一个非正函数的乘积:

可将拟凸问题作为参数 的参数凸优化问题求解:

绘制作为水平子集 的函数的目标函数:

对于水平子集在区间 内的值,找到最小的值:

当水平集值增加时,问题变得不可行:

根据约束条件 最小化 . 目标是非凸但可通过凸差函数 表示,其中 为凸函数:

绘制该区域和最小化点:

根据约束条件 最小化 . 约束条件 为非凸但可通过凸差约束条件 表示,其中 为凸函数:

绘制该区域和最小化点:

普通问题  (3)

求受非线性约束条件限制的线性目标函数的最小值:

求受线性约束条件限制的非线性目标函数的最小值:

求受非线性约束条件限制的非线性目标函数的最小值:

选项  (7)

AccuracyGoal & PrecisionGoal  (2)

强调收敛标准

强调收敛标准 ,这在默认的机器精度计算中是无法实现的:

设置一个较高的 WorkingPrecision ,使过程收敛:

EvaluationMonitor  (1)

记录所有在求解有极小值环的函数过程中计算过的点:

绘制目标函数值接近最终答案的所有访问过的点:

Method  (2)

对于某些问题,某些方法可能会给出次优结果:

自动选择的方法给出了该问题的最优解:

绘制目标函数和全局最小值:

当速度至关重要时,请使用方法 "NelderMead" 来求解有多个变量的问题:

StepMonitor  (1)

在求经典的 Rosenbrock 函数最小值的过程中 NMinValue 采取的步骤:

WorkingPrecision  (1)

工作精度设为 时,AccuracyGoalPrecisionGoal 默认值为

应用  (6)

几何问题  (3)

求半径为 1、圆心为 的两个圆盘间的最小距离. 令 为圆盘 1 上的一个点. 令 为圆盘 2 上的一个点. 目标是最小化受约束条件 限制的

求包围给定区域的最小包含球的半径

求受约束条件 限制的半径 的最小值:

可通过 BoundingRegion 高效地找到最小包含球:

可视化最小包含球:

求可包含 个给定半径为 的不重叠圆的最小正方形,其中 . 指定圆的数量和每个圆的半径:

为圆 的中心,则目标为最小化 . 可将目标转换为最小化

圆不可重叠:

整合这些变量:

这些圆被包含在正方形 中,求边界:

数据拟合问题  (1)

求最小化非线性离散数据的 拟合的残差的高斯宽度参数

用基 拟合数据:

将用 来近似函数:

构造一个给出残差的参数化函数:

显示作为 的函数的残差:

求产生最小残差的尺度参数:

迭代优化  (1)

求使得从椭圆 到点 (1,2) 的距离尽可能小的参数

显示作为 的函数的距离:

求最大化距离的倒数的最佳参数

可视化点相对于椭圆的位置:

轨迹优化  (1)

找到一条可以绕过圆形障碍物并使得从起点到终点距离最小化的路径:

路径可分解为 个不同的点. 这些点之间的距离必须小于 ,其中 是要最小化的长度:

这些点不能在圆形物体的内部:

起点和终点的位置已知:

整合这些变量:

最小化受约束条件限制的长度

属性和关系  (8)

NMinimize 给出最小值,并以规则形式给出使结果最小化的变量值:

NArgMin 给出使结果最小化的值的列表:

NMinValue 只给出最小值:

最大化函数 f 相当于最小化 -f

对于凸问题,可用 ConvexOptimization 获取解的其他属性:

获取对偶解:

对于含有参数的凸问题,用 ParametricConvexOptimization 给出 ParametricFunction

可通过计算 ParametricFunction 求得参数的值:

NMinValue 定义参数化问题的函数:

比较两种方法的速度:

也可以计算 ParametricFunction 的导数:

对于含有参数化约束条件的凸问题,RobustConvexOptimization 将找到适用于所有可能参数值的最优值:

对于特定参数值,NMinValue 可能会找到给出更小的最小值:

对于 允许的所有值,该最小化点不满足约束条件:

为特定参数值找到的最小值小于或等于稳健最小值:

NMinValue 可以求解线性规划问题:

可用 LinearProgramming 求解用矩阵表示的相同问题:

RegionDistance 计算从一个点到一个区域的最小距离:

NMinValue 计算距离:

RegionBounds 计算边界框:

NMaxValueNMinValue 计算相同的边界:

Wolfram Research (2008),NMinValue,Wolfram 语言函数,https://reference.wolfram.com/language/ref/NMinValue.html (更新于 2024 年).

文本

Wolfram Research (2008),NMinValue,Wolfram 语言函数,https://reference.wolfram.com/language/ref/NMinValue.html (更新于 2024 年).

CMS

Wolfram 语言. 2008. "NMinValue." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2024. https://reference.wolfram.com/language/ref/NMinValue.html.

APA

Wolfram 语言. (2008). NMinValue. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/NMinValue.html 年

BibTeX

@misc{reference.wolfram_2024_nminvalue, author="Wolfram Research", title="{NMinValue}", year="2024", howpublished="\url{https://reference.wolfram.com/language/ref/NMinValue.html}", note=[Accessed: 22-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_nminvalue, organization={Wolfram Research}, title={NMinValue}, year={2024}, url={https://reference.wolfram.com/language/ref/NMinValue.html}, note=[Accessed: 22-November-2024 ]}