NArgMin

NArgMin[f,x]

给出一个坐标 xmin,使得 f 数值全局最小化.

NArgMin[f,{x,y,}]

给出一个坐标 {xmin,ymin,},使得 f 数值全局最小化.

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

给出一个坐标,使 f 在约束条件 cons 下数值全局最小化.

NArgMin[,xreg]

x 限制在区域 reg 内.

更多信息和选项

  • NArgMin 亦称为全局优化 (GO).
  • NArgMin 总是尝试求给定约束条件限制下 f 的全局最小值.
  • NArgMin 通常用于求给定约束条件下可能的最小值. 在不同的领域,这可能被称为最佳策略、最佳方案、最佳配置等.
  • NArgMin 返回形如 {xmin,ymin,} 的列表.
  • NArgMin[,{x,y,}] 实际上等价于 {x,y,}/.Last[NMinimize[,{x,y,},].
  • 如果 fcons 是线性的或凸的,NArgMin 给出的结果将是实数和整数值上的全局最小值;否则,有时结果可能只是局部最小值.
  • 如果 NArgMin 发现无法满足约束条件,则会返回 {Indeterminate,}.
  • NArgMin 支持一种建模语言,其中目标函数 f 和约束条件 cons 是用依赖于标量或向量变量的表达式给出的. fcons 通常被解析为非常有效的形式,但只要 fcons 中的项给出变量的数值结果,NArgMin 通常可以找到解.
  • 约束条件 cons 可以是以下表达式的任意逻辑组合:
  • lhs==rhs等式
    lhs>rhs, lhsrhs, lhs<rhs, lhsrhs不等式 (LessEqual)
    lhsrhs, lhsrhs, lhsrhs, lhsrhs向量不等式 (VectorLessEqual)
    {x,y,}rdom区域或域的指定
  • NArgMin[{f,cons},xrdom] 实际上等价于 NArgMin[{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 的设置指定了搜索最小值所在位置(最小化点)和函数的最小值时应使用的位数.
  • NArgMin 会持续运行,直到 AccuracyGoalPrecisionGoal 指定的目标实现为止.
  • NArgMin 的方法分为两类. 第一类方法利用问题的属性,因此当方法收敛时,找到的最小值保证是全局的. 第二类启发式方法使用的方法可能包括多个局部搜索,通常通过一些随机性进行调整以锁定全局最小值. 这些方法通常能找到全局最小值,但无法保证.
  • 在收敛到解时确保可以给出全局最小值的方法包括:
  • "Convex"只使用凸方法
    "MOSEK"对于凸问题,使用商用 MOSEK 库
    "Gurobi"对于凸问题,使用商用 Gurobi 库
    "Xpress"对于凸问题,使用商用 Xpress 库
  • 启发式方法包括:
  • "NelderMead"Nelder 和 Mead 的单纯形法
    "DifferentialEvolution"使用差分进化
    "SimulatedAnnealing"使用模拟退火
    "RandomSearch"使用从多个随机起始点中找到的最佳局部最小值
    "Couenne"使用 Couenne 库处理非凸混合整数非线性问题

范例

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

基本范例  (4)

求一元函数的全局最小化点:

求多元函数的全局最小化点:

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

求几何区域上的全局最小化点:

绘制这些值:

范围  (40)

基本用法  (12)

求能最小化受约束条件 限制的 值:

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

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

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

使用向量变量

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

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

用常参数方程来避免 中不想要的逐项运算:

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

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

求最小化点:

求能最小化受约束条件 限制的 的点:

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

求最小化点:

求能最小化受约束条件 限制的函数 的点:

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

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

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

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

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

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

可以指定 Or 约束条件:

域约束条件  (4)

Integers 指定整数域约束条件:

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)

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

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

为下面的非凸问题自动选择的方法为 "Couenne"

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

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

StepMonitor  (1)

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

WorkingPrecision  (1)

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

应用  (14)

几何问题  (4)

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

可视化两个点的位置:

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

最小化受约束条件 限制的半径

可视化最小包含球:

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

求使得参数化为 {x:TemplateBox[{{{a, ., x}, +, b}}, Norm]<=1} 且包围三维中的一组点的椭圆体的体积最小化的

对于每个点 ,必须满足约束条件 TemplateBox[{{{a, ., {p, _, i}}, +, b,  }}, Norm]<=1, i=1,2,...,n

最小化体积等价于最小化

将参数化的椭圆转换为显式形式

也可以使用 BoundingRegion 得到包围椭圆体(体积不一定是最小的):

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

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

圆不可重叠:

整合这些变量:

这些圆被包含在正方形 中. 计算边界和圆心:

绘制圆和边界:

计算被圆覆盖的方形面积比例:

数据拟合问题  (3)

对于给定矩阵 a 和向量 b,求可最小化受约束条件 限制的 的点:

将三次曲线拟合到离散数据,使数据的第一个和最后一个点位于曲线上:

DesignMatrix 构建矩阵:

定义约束条件,使第一个和最后一个点必须位于曲线上:

通过最小化 求系数

将拟合结果与数据相比较:

通过找出可最小化 ,求对非线性离散数据的异常值不太敏感的拟合:

使用基 拟合数据. 插值函数为

求解:

可视化拟合:

将插值函数和参考函数相比较:

分类问题  (3)

求分隔两组点 的直线

对于此分隔问题,第 1 组点必须满足 ,第 2 组点必须满足

目标是最小化 ,它给出的是 之间距离的两倍:

分隔线为:

求分隔两组 3D 点 的二次多项式:

DesignMatrix 构建两组点的二次多项式数据矩阵:

对于此分隔问题,第 1 组必须满足 ,第 2 组必须满足

通过最小化 找出分隔多项式:

分隔两组点的多项式为:

绘制分隔两个数据集的多项式:

将给定的点集 分成不同的组. 可通过最小化 找出每组的中心 来完成,其中 是给定的局部核, 是给定的惩罚参数:

为使得 ,否则 成立的 k-近邻 () 函数. 对于此问题,选择

目标函数 为:

求各个组的中心点:

对于每个数据点,都有一个对应的中心. 属于同一个组的数据将有相同的中心值:

提取并绘制各个组:

图像处理  (1)

通过求以全变差范数计算最接近的图像来恢复损坏的图像:

通过随机删除 40% 的数据点来创建损坏的图像.

目标是最小化 sum_(i=1)^(n-1)sum_(j=1)^(m-1)sqrt(TemplateBox[{{TemplateBox[{u, {i, +, 1}, j}, IndexedDefault], -, TemplateBox[{u, i, j}, IndexedDefault]}}, Abs]^2+TemplateBox[{{TemplateBox[{u, i, {j, +, 1}}, IndexedDefault], -, TemplateBox[{u, i, j}, IndexedDefault]}}, Abs]^2),其中 是图像数据:

假设任何非零数据点 TemplateBox[{u, i, j}, IndexedDefault] 均未损坏. 对于这些位置,令 TemplateBox[{u, i, j}, IndexedDefault]=u_(i j)^(orig)

求出解并显示恢复的图像:

设施选址问题  (1)

求服务位于 的客户所需的各种基站 的位置和范围

每个基站消耗的功率与其范围成正比,由 给出. 目的是最大程度地降低功耗:

为决策变量,如果客户 被基站 覆盖,则用 表示:

每个基站必须位于能覆盖一些客户的位置:

每个基站可覆盖多个客户:

每个基站都有最小和最大覆盖范围:

收集所有变量:

给出基站的位置及覆盖范围:

提取基站的位置和范围:

可视化基站相对于客户位置的位置和范围:

投资组合优化  (1)

求如何在六只股票之间分配资本 ,在最大程度地降低风险的同时最大化回报:

回报为 ,其中 是由每只股票的预期回报值组成的向量:

风险由 给出; 为规避风险的参数,且

目标是最大化收益,同时在指定的风险规避参数的情况下最大程度地降低风险:

可用 模拟买卖股票对股票市场价格的影响:

权重 必须大于 0,权重加上市场影响成本必须加起来为 1:

计算一系列风险规避参数的回报和相应的风险:

范围 内最佳的 给出在收益和风险之间折衷的上限:

计算指定数量的风险规避参数的权重:

通过考虑市场成本,可以获得低风险规避参数的多样化投资组合,但是当风险规避参数较高时,由于购买的是分散程度较低的股票,市场影响成本占主导地位:

轨迹优化  (1)

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

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

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

起点和终点的位置已知:

组合这些变量:

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

可视化结果:

属性和关系  (6)

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

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

NMinValue 只给出最小值:

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

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

获取对偶问题的解:

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

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

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

比较两种方法的速度:

也可以计算 ParametricFunction 的导数:

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

对于特定参数值,NArgMin 也许能找到给出更小的最小值的最小化点:

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

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

RegionNearest 算出给定区域内的最近点:

可以使用 NArgMin 进行计算:

可能存在的问题  (2)

目标函数可能是无界的:

可能没有满足约束条件的点:

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

文本

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

CMS

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

APA

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

BibTeX

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

BibLaTeX

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