小编mer*_*rch的帖子

Optim.jl:负逆Hessian

我正在使用Optim.jl库来使用BFGS算法最小化Julia中的函数.今天,我问了一个关于同一个图书馆的问题,但为了避免混淆,我决定把它分成两部分.

我想在优化后得到负逆Hessian的估计值,以便进一步计算.

在Optim库的GitHub网站上,我找到了以下工作示例:

using Optim
rosenbrock(x) = (1.0 - x[1])^2 + 100.0 * (x[2] - x[1]^2)^2
result        = optimize(rosenbrock, zeros(2), BFGS())
Run Code Online (Sandbox Code Playgroud)

结果优化后,如何得到负逆Hessian ?它中是否有任何字段可以识别Hessian,Inverse Hessian或负Hessian?

编辑

感谢您的评论.你认为编辑"optimize.jl"会更有效率,这样函数也会返回逆Hessian吗?请参阅下面的工作示例 - 编辑已在第226行引入:

 if state.method_string == "BFGS"
         return MultivariateOptimizationResults(state.method_string,
                                                initial_x,
                                                f_increased ? state.x_previous : state.x,
                                                f_increased ? state.f_x_previous : state.f_x,
                                                iteration,
                                                iteration == options.iterations,
                                                x_converged,
                                                options.x_tol,
                                                f_converged,
                                                options.f_tol,
                                                g_converged,
                                                options.g_tol,
                                                f_increased,
                                                tr,
                                                state.f_calls,
                                                state.g_calls,
                                                state.h_calls), state.invH
    else
         return MultivariateOptimizationResults(state.method_string,
                                                 initial_x,
                                                 f_increased ? state.x_previous : state.x,
                                                 f_increased ? state.f_x_previous : state.f_x,
                                                 iteration, …
Run Code Online (Sandbox Code Playgroud)

optimization julia

9
推荐指数
2
解决办法
504
查看次数

朱莉娅语言和哲学的精神是什么?

我最近开始在朱莉娅编程用于研究目的.通过它我开始喜欢语法,我在这里积极体验社区,现在我正在考虑从其他编程语言移植一些代码.

使用高度计算的昂贵的预测模型,将它们全部用强大的现代语言作为Julia将是很好的.

我想创建一个项目,我想知道我应该如何设计它.从性能和语言的角度来看,我都很关心(即:创建模块会更好 - 子模块 - 函数或其他东西会更受欢迎吗?使用字典或自定义类型会更好吗?).

我在我的领域中查看了不同的GitHub项目,但我还没有真正找到一个共同的标准.因此,我想知道:朱莉娅语言和哲学的精神是什么?


编辑:

有人指出,这个问题可能过于笼统.因此,我想集中讨论如何更好地构建模块(即主要功能和子程序与模块和子模块的单独模块等).我相信这对我来说已经足够了解朱莉娅语言和哲学的精神.当然,非常欢迎其他示例和参考.

julia

7
推荐指数
1
解决办法
454
查看次数

如何使用swift的root权限执行shell命令

我是Swift的新手,我正在尝试创建一个非常简单的应用程序,当你按下一个圆形按钮时执行root shell命令.

我在网上找到了以下链接,它解释了如何在swift上执行具有用户权限的shell命令,但它没有说明如何使用root权限执行此操作:http://practicalswift.com/2014/06/25/如何对执行壳的命令从-斯威夫特/

我该怎么做?

macos shell root nstask swift

5
推荐指数
1
解决办法
2725
查看次数

从SAFEARRAY获取元素(或将其转换为长数组)

我正在尝试从Visual C ++中的SAFEARRAY(作为函数的输出返回)获取元素。

我以前从未使用过SAFEARRAY,所以我不知道该如何处理。我应该将SAFEARRAY转换为长数组(如何?),还是可以简单地使用SAFEARRAY内部值的索引?

c++ safearray visual-c++

4
推荐指数
1
解决办法
4923
查看次数

Julia:在函数中更新 Float64

我正在尝试创建一个函数来更新 Float64 参数。下面的示例应该能够阐明我想要实现的目标。

a=1.2

function fun!(a)
   a=3.4;
end
Run Code Online (Sandbox Code Playgroud)

不幸的是,a仅在本地范围内更新。有没有办法做到这一点?我认为传递一个指向函数的指针会有所帮助,但我不知道如何在 Julia 中做到这一点。

julia

4
推荐指数
1
解决办法
449
查看次数

在Julia中使用eval来处理varargs

我刚开始使用Julia.我试图使用eval(在Julia中)来定义函数中的一组变量.假设我想将v1设置为2:

function fun_test(varargs...)
  v1 = 0;

  if length(varargs) > 0
    j = collect(linspace(1,length(varargs)-1,length(varargs)/2));

    for i in j
      expr_vargs = parse("$(varargs[i]) = $(varargs[i+1]);");
      eval(expr_vargs);
    end
  end

  println(v1)

end
Run Code Online (Sandbox Code Playgroud)

将该功能称为:

fun_test("v1", "2");
Run Code Online (Sandbox Code Playgroud)

它不起作用,因为println返回0(v1的初始值).但是,如果我在Julia的终端中运行类似的eval调用,那么它可以工作.

您能否澄清一下为什么它不起作用以及如何解决它?

eval julia

3
推荐指数
1
解决办法
141
查看次数

Julia:最小化具有多个参数的函数(BFGS)

我正在尝试使用BFGS算法最小化具有Optim.jl库的多个参数的函数.

在Optim库的GitHub网站上,我找到了以下工作示例:

using Optim
rosenbrock(x) = (1.0 - x[1])^2 + 100.0 * (x[2] - x[1]^2)^2
result        = optimize(rosenbrock, zeros(2), BFGS())
Run Code Online (Sandbox Code Playgroud)

让我们说我的目标函数是:

fmin(x, a) = (1.0 - x[1])^a + 100.0 * (x[2] - x[1]^2)^(1-a)
Run Code Online (Sandbox Code Playgroud)

我怎样才能通过额外的-常-参数一个采用优化

optimization julia

1
推荐指数
1
解决办法
893
查看次数

Julia:可变结构项的多重分派

我正在尝试拆分功能

function my_fun(A::MyStruct)
    if typeof(A.X) <: Nothing
        println("Case 1");
    else
        println("Case 2");
    end
end
Run Code Online (Sandbox Code Playgroud)

根据 的类型分为两种方法A.X,其中

mutable struct MyStruct
     t::Int64
     X::Union{Float64, Nothing}
end
Run Code Online (Sandbox Code Playgroud)

最有效的方法是什么?

julia

1
推荐指数
1
解决办法
202
查看次数

标签 统计

julia ×6

optimization ×2

c++ ×1

eval ×1

macos ×1

nstask ×1

root ×1

safearray ×1

shell ×1

swift ×1

visual-c++ ×1