【问题标题】:Syntax error when using imported Scipy functions in Julia在 Julia 中使用导入的 Scipy 函数时出现语法错误
【发布时间】:2018-11-09 02:29:54
【问题描述】:

我已成功将 Scipy Optimize 的函数最小化导入 Julia,但是当我尝试使用它以便对其指定约束时:

julia> @pyimport scipy.optimize.minimize as so

julia> so.minimize(f, x0,
                   constraints={"type": "ineq", "fun": g},
                   options={"maxiter": 1000})

Julia 抛出关于花括号的错误:

ERROR: LoadError: syntax: { } vector syntax is discontinued

有人知道如何在 Julia 中正确使用最小化函数吗?

【问题讨论】:

    标签: optimization scipy syntax-error julia minimize


    【解决方案1】:

    我现在意识到大括号在 Python 中表示字典,因此 Julia 版本应该如下所示:

    julia> so.minimize(objective_function, coords,
                       constraints = Dict("type" => "ineq", "fun" => g),
                       options =  Dict("maxiter" => 1000))
    

    所以我现在的猜测是,即使函数来自 Scipy,输入参数也需要是 Julia 语法。

    【讨论】:

    • 另一个常见的陷阱是这个:github.com/JuliaPy/PyCall.jl#troubleshooting。就我个人而言,我更喜欢完全避免使用 @pyimport 宏,而只使用 pyimport 函数,这会导致在 julia 中始终使用一致的 PyCall 接口。 (即 pythonmodule[:object] 然后看起来与 pythonobject[:attribute] 一致)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-18
    • 1970-01-01
    • 1970-01-01
    • 2015-08-22
    • 2013-10-28
    • 2018-08-13
    • 1970-01-01
    相关资源
    最近更新 更多