在 Julia 中最小化具有多个参数的函数
Posted
技术标签:
【中文标题】在 Julia 中最小化具有多个参数的函数【英文标题】:minimize a function with multiple argument in Julia 【发布时间】:2021-07-16 21:10:58 【问题描述】:我有一个函数,它取决于假设 N 输入 x=(x1,x2,x3,x4,...,xN) 并且我有一组 M 个可能的向量 p = ( (p11,p12,p13 ,...,p1N),...,(pM1,pM2,...,pMN))
我想找到在 Julia 编程语言中实现 p[j] 中 j 的最小值。
我尝试使用最小函数(这里我设置 N=5)
minimum([x1,x2,x3,x4,x5] -> fmin(x1,x2,x3,x4,x5), p)
但它不起作用,也没有给出实现最小值的 j 值。有什么建议吗?
【问题讨论】:
请注意,如果您对函数和输入有更多了解,则搜索效率会更高——例如如果您可以将其编写为数学规划问题,例如 MIP、LP、QP,您可以使用诸如 JuMP 之类的工具 【参考方案1】:您可以使用 splat 运算符 ...
将向量扩展为函数参数,例如 N=3
:
function f(x,y,z)
return x+y+z
end
p = [[1,1,1], [2,2,2], [3,3,3]]
minimum(vector -> f(vector...), p)
【讨论】:
【参考方案2】:为了找到你可以做的最小值:
julia> fmin(x1, x2, x3) = x1+x2+x3
fmin (generic function with 1 method)
julia> p = [(1,1,1), (1,2,3), (-1,-2,10), (2,3,0)];
julia> minp = minimum(v -> fmin(v...), p)
3
可以找到一个最小化器,例如作者:
julia> findall(v -> fmin(v...) == minp, p)
1
(请注意,您会得到一个向量,因为可以有多个索引来最小化表达式)
【讨论】:
以上是关于在 Julia 中最小化具有多个参数的函数的主要内容,如果未能解决你的问题,请参考以下文章