NMinValue
NMinValue[f,x]
给出关于 x 的 f 的全局最小值.
NMinValue[f,{x,y,…}]
给出关于 x,y, … 的 f 的全局最小值.
NMinValue[{f,cons},{x,y,…}]
给出在约束条件 cons 下 f 的全局最小值.
NMinValue[…,x∈reg]
把 x 约束在区域 reg 内.
更多信息和选项
- NMinValue 亦称为全局优化 (GO).
- NMinValue 总是尝试求给定约束条件限制下 f 的全局最小值.
- NMinValue 通常用于求给定约束条件下可能的最小值. 在不同的领域,这可能被称为最佳策略、最佳方案、最佳配置等.
- 如果 f 和 cons 是线性的或凸的,NMinValue 给出的结果将是实数和整数值上的全局最小值;否则,有时结果可能只是局部最小值.
- 如果 NMinValue 发现无法满足约束条件,则会返回 Infinity.
- NMinValue 支持一种建模语言,其中目标函数 f 和约束条件 cons 是用依赖于标量或向量变量的表达式给出的. f 和 cons 通常被解析为非常有效的形式,但只要 f 和 cons 中的项给出变量的数值结果,NMinValue 通常可以找到解.
- 约束条件 cons 可以是以下表达式的任意逻辑组合:
-
lhs==rhs 等式 lhs>rhs, lhs≥rhs, lhs<rhs, lhs≤rhs 不等式 (LessEqual、…) lhsrhs, lhsrhs, lhsrhs, lhsrhs 向量不等式 (VectorLessEqual、…) {x,y,…}∈rdom 区域或域的指定 - NMinValue[{f,cons},x∈rdom] 实际上等价于 NMinValue[{f,cons&&x∈rdom},x].
- 对于 x∈rdom,可用 Indexed[x,i] 来指代不同的坐标.
- 可能的域 rdom 包括:
-
Reals 实标量变量 Integers 整数标量变量 Vectors[n,dom] 中的向量变量 Matrices[{m,n},dom] 中的矩阵变量 ℛ 限制在几何区域 中的向量变量 - 默认情况下,假定所有变量为实数.
- 可给出以下选项:
-
AccuracyGoal Automatic 追求多少位的准确度 EvaluationMonitor None 计算 f 时要计算的表达式 MaxIterations Automatic 使用的最大迭代次数 Method Automatic 使用的方法 PrecisionGoal Automatic 追求多少位的精度 StepMonitor None 每次迭代时要计算的表达式 WorkingPrecision MachinePrecision 内部计算使用的精度 - AccuracyGoal 和 PrecisionGoal 的设置指定了搜索最小值所在位置(最小化点)和函数的最小值时应使用的位数.
- NMinValue 会持续运行,直到 AccuracyGoal 或 PrecisionGoal 指定的目标实现为止.
- NMinValue 的方法分为两类. 第一类方法利用问题的属性,因此当方法收敛时,找到的最小值保证是全局的. 第二类启发式方法使用的方法可能包括多个局部搜索,通常通过一些随机性进行调整以锁定全局最小值. 这些方法通常能找到全局最小值,但无法保证.
- 收敛到解时确保可以给出全局最小值的方法包括:
-
"Convex" 只使用凸方法 "MOSEK" 对于凸问题,使用商用 MOSEK 库 "Gurobi" 对于凸问题,使用商用 Gurobi 库 "Xpress" 对于凸问题,使用商用 Xpress 库 - 启发式方法包括:
-
"NelderMead" Nelder 和 Mead 的单纯形法 "DifferentialEvolution" 使用差分进化 "SimulatedAnnealing" 使用模拟退火 "RandomSearch" 使用从多个随机起始点中找到的最佳局部最小值 "Couenne" 使用 Couenne 库处理非凸混合整数非线性问题
范例
打开所有单元关闭所有单元范围 (40)
基本用法 (12)
可用 VectorGreaterEqual 表示几个线性不等式约束条件:
用 v>= 或 \[VectorGreaterEqual] 输入向量不等式符号 :
如果想要避免 中不想要的逐项运算,可使用 Inactive[Plus]:
如果想要避免 中不想要的逐项运算,可使用 Inactive[Plus]:
VectorGreaterEqual 表示关于 "NonNegativeCone" 的锥不等式:
如果想明确指定锥体的尺寸,可使用 {"NonNegativeCone",n}:
用 Indexed 访问向量变量的分量,如 :
当向量变量不明确时,用 Vectors[n,dom] 指定维度和域:
用 NonNegativeReals () 指定非负约束条件:
用 NonPositiveReals () 指定非正约束条件:
可以指定 Or 约束条件:
域约束条件 (4)
用 Vectors[n,Integers] 指定向量变量的整数域约束条件:
用 NonNegativeIntegers () 指定非负整数域约束条件:
用 NonPositiveIntegers () 指定非正整数域约束条件:
区域约束条件 (5)
用 Circumsphere 直接给出同样的结果:
线性问题 (5)
凸问题 (7)
选项 (7)
AccuracyGoal & PrecisionGoal (2)
Method (2)
StepMonitor (1)
在求经典的 Rosenbrock 函数最小值的过程中 NMinValue 采取的步骤:
WorkingPrecision (1)
工作精度设为 时,AccuracyGoal 和 PrecisionGoal 默认值为 :
应用 (6)
几何问题 (3)
求半径为 1、圆心为 和 的两个圆盘间的最小距离. 令 为圆盘 1 上的一个点. 令 为圆盘 2 上的一个点. 目标是最小化受约束条件 限制的 :
可通过 BoundingRegion 高效地找到最小包含球:
求可包含 个给定半径为 的不重叠圆的最小正方形,其中 . 指定圆的数量和每个圆的半径:
数据拟合问题 (1)
属性和关系 (8)
NMinimize 给出最小值,并以规则形式给出使结果最小化的变量值:
NArgMin 给出使结果最小化的值的列表:
NMinValue 只给出最小值:
对于凸问题,可用 ConvexOptimization 获取解的其他属性:
对于含有参数的凸问题,用 ParametricConvexOptimization 给出 ParametricFunction:
可通过计算 ParametricFunction 求得参数的值:
用 NMinValue 定义参数化问题的函数:
也可以计算 ParametricFunction 的导数:
对于含有参数化约束条件的凸问题,RobustConvexOptimization 将找到适用于所有可能参数值的最优值:
对于特定参数值,NMinValue 可能会找到给出更小的最小值:
NMinValue 可以求解线性规划问题:
可用 LinearProgramming 求解用矩阵表示的相同问题:
用 RegionDistance 计算从一个点到一个区域的最小距离:
用 NMinValue 计算距离:
用 RegionBounds 计算边界框:
文本
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 年