在Julia中最小化具有多个参数的函数

在Julia中最小化具有多个参数的函数,julia,minimum,multiple-arguments,Julia,Minimum,Multiple Arguments,我有一个函数,它依赖于一个N输入x=(x1,x2,x3,x4,…,xN),我有一组M个可能的向量p=((p11,p12,p13,…,p1N),…,(pM1,pM2,…,pMN)) 我想找出最小值的值,其中j在p[j]中,最小值是在Julia编程语言中实现的 我尝试使用最小值函数(这里我设置N=5) 但它不起作用,也没有给出实现最小值的j值。有什么建议吗?您可以使用splat操作符..将向量展开为函数参数,例如,对于N=3: function f(x,y,z) return x+y+z e

我有一个函数,它依赖于一个N输入x=(x1,x2,x3,x4,…,xN),我有一组M个可能的向量p=((p11,p12,p13,…,p1N),…,(pM1,pM2,…,pMN))

我想找出最小值的值,其中j在p[j]中,最小值是在Julia编程语言中实现的

我尝试使用最小值函数(这里我设置N=5)


但它不起作用,也没有给出实现最小值的j值。有什么建议吗?

您可以使用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)

为了找到最小值,您可以执行以下操作:

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

(请注意,您得到的是一个向量,因为表达式可以最小化多个索引)

请注意,如果您对函数和输入有更多了解,搜索可能会更有效-例如,如果您可以将其作为数学规划问题(如MIP、LP、QP)编写,则可以使用跳跃等工具
julia> findall(v -> fmin(v...) == minp, p)
1