NArgMax
NArgMax[f,x]
给出一个坐标 xmax,使 f 数值全局最大化.
NArgMax[f,{x,y,…}]
给出一个坐标 {xmax,ymax,…},使得 f 数值全局最大化.
NArgMax[{f,cons},{x,y,…}]
给出一个坐标,使得 f 在约束条件 cons 下数值全局最大化.
NArgMax[…,x∈reg]
把 x 限制在区域 reg 内.
更多信息和选项
- NArgMax 亦称为全局优化 (GO).
- NArgMax 总是尝试求给定约束条件限制下 f 的全局最大值.
- NArgMax 通常用于求给定约束条件下可能的最大值. 在不同的领域,这可能被称为最佳策略、最佳方案、最佳配置等.
- NArgMax 返回形式为 {xmin,ymin,…} 的列表.
- NArgMax[…,{x,y,…}] 实际上等价于 {x,y,…}/.Last[NMaximize[…,{x,y,…},…].
- 如果 f 是线性的或凹的,cons 是线性的或凸的,NArgMax 给出的结果将是实数和整数值上的全局最大值;否则,有时结果可能只是局部最大值.
- 如果 NArgMax 发现无法满足约束条件,则会返回 {Indeterminate,…}.
- NArgMax 支持一种建模语言,其中目标函数 f 和约束条件 cons 是用依赖于标量或向量变量的表达式给出的. f 和 cons 通常被解析为非常有效的形式,但只要 f 和 cons 中的项给出变量的数值结果,NArgMax 通常可以找到解.
- 约束条件 cons 可以是以下表达式的任意逻辑组合:
-
lhs==rhs 等式 lhs>rhs, lhs≥rhs, lhs<rhs, lhs≤rhs 不等式 (LessEqual、…) lhsrhs, lhsrhs, lhsrhs, lhsrhs 向量不等式 (VectorLessEqual、…) {x,y,…}∈rdom 区域或域的指定 - NArgMax[{f,cons},x∈rdom] 实际上等价于 NArgMax[{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 的设置指定了搜索最大值所在位置(最大化点)和函数的最大值时应使用的位数.
- NArgMax 持续运行,直到 AccuracyGoal 或 PrecisionGoal 指定的目标实现为止.
- NArgMax 的方法分为两类. 第一类方法利用问题的属性,因此当方法收敛时,找到的最大值保证是全局的. 第二类启发式方法使用的方法可能包括多个局部搜索,通常通过一些随机性进行调整以锁定全局最大值. 这些方法通常能找到全局最大值,但无法保证.
- 在收敛到解时确保可以给出全局最大值的方法包括:
-
"Convex" 只使用凸方法 "MOSEK" 对于凸问题,使用商用 MOSEK 库 "Gurobi" 对于凸问题,使用商用 Gurobi 库 "Xpress" 对于凸问题,使用商用 Xpress 库 - 启发式方法包括:
-
"NelderMead" Nelder 和 Mead 的单纯形法 "DifferentialEvolution" 使用差分进化 "SimulatedAnnealing" 使用模拟退火 "RandomSearch" 使用从多个随机起始点中找到的最佳局部最大值 "Couenne" 使用 Couenne 库处理非凸混合整数非线性问题
范例
打开所有单元关闭所有单元范围 (35)
基本用法 (12)
可用 VectorGreaterEqual 表示几个线性不等式约束条件:
用 v>= 或 \[VectorGreaterEqual] 输入向量不等式符号 :
如果想要避免 中不想要的逐项运算,可使用 Inactive[Plus]:
VectorGreaterEqual 表示关于 "NonNegativeCone" 的锥不等式:
如果想明确指定锥体的尺寸,可使用 {"NonNegativeCone",n}:
用 Indexed 访问向量变量的分量,如 :
当向量变量不明确时,用 Vectors[n,dom] 指定维度和域:
用 NonNegativeReals () 指定非负约束条件:
用 NonPositiveReals () 指定非正约束条件:
可以指定 Or 约束条件:
域约束条件 (4)
用 Integers 指定整数域约束条件:
用 Vectors[n,Integers] 指定向量变量的整数域约束条件:
用 NonNegativeIntegers () 指定非负整数域约束条件:
用 NonPositiveIntegers () 指定非正整数域约束条件:
区域约束条件 (5)
用 Circumsphere 直接给出同样的结果:
线性问题 (5)
如果目标函数和约束条件是线性的,找到的最大值即是全局最大值:
用 Equal 一次表示几个等式约束条件:
用 VectorLessEqual 一次表示几个 LessEqual 不等式约束条件:
用 Interval 指定变量的范围:
凸问题 (3)
可转化为凸问题的问题 (3)
选项 (7)
AccuracyGoal 和 PrecisionGoal (2)
Method (2)
StepMonitor (1)
NArgMax 在求函数最大值的过程中采取的步骤:
WorkingPrecision (1)
如果把工作精度设为 ,默认情况下将 AccuracyGoal 和 PrecisionGoal 设为工作精度的一半:
应用 (8)
几何问题 (4)
投资组合优化 (1)
投资问题 (2)
属性和关系 (5)
NMaximize 给出最大值,并以规则形式给出使结果最大化的变量值:
NArgMax 给出使结果最大化的值的列表:
NMaxValue 只给出最大值:
对于凸问题,可用 ConvexOptimization 获取解的其他属性:
对于含有参数的凸问题,用 ParametricConvexOptimization 给出 ParametricFunction:
可通过计算 ParametricFunction 求得参数的值:
用 NArgMax 定义参数化问题的函数:
也可以计算 ParametricFunction 的导数:
对于含有参数化约束条件的凸问题,RobustConvexOptimization 将找到适用于所有可能参数值的最优值:
对于特定的参数值,NArgMax 找到的最大化点可能会给出更小的最大值:
文本
Wolfram Research (2008),NArgMax,Wolfram 语言函数,https://reference.wolfram.com/language/ref/NArgMax.html (更新于 2024 年).
CMS
Wolfram 语言. 2008. "NArgMax." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2024. https://reference.wolfram.com/language/ref/NArgMax.html.
APA
Wolfram 语言. (2008). NArgMax. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/NArgMax.html 年