我想解决
SELECT * FROM information_schema.processlist;
CALL kill_other_processes();
SELECT * FROM information_schema.processlist;
,其中
1)min f(x) s.t. x in X
有多个本地最低
2)f(x)
是平滑的,我可以计算f(x)
3)f(x)
是X
我在R
中使用MultiStart
来查找MatLab
的所有本地最小值。根据比较f(x)
和GlobalSearch
的{{3}},在我看来,我们可以使用MultiStart
来查找所有本地最小值。但是,当我运行一个简单的测试函数时,MultiStart
只输出一个全局最小值,函数的值为全局最小值。我的问题是:使用MultiStart
,如何获得所有最小值?
我的示例是MultiStart
f(x) = x^4 - x^2 + 1
。在X=[-10,10]
上,X
有两个本地最小值:f(x)
和x* = 2^{-0.5}
。两者实际上都是全局最小值,x* = -2^{-0.5}
。我的示例代码如下。 f(x*) =0.75
仅输出Multistart
(初始值为x* = 2^{-0.5}
)且不输出x0 = 1
。有没有办法输出两种解决方案?
x* = -2^{-0.5}
答案 0 :(得分:0)
回答我自己的问题:通过MultiStart找到的局部最小值集合位于run(MultiStart,problem,50)
的第五个输出参数中。
run(MultiStart,problem,50)
有两个以上的输出变量。特别是,有五个输出:
[out1,out2,out3,out4,out5] = run(MultiStart,problem,50)
,其中
out1
是最好的本地最小值 - 它是从程序找到的本地最小值集合中最大化f(x)
的那个
out2
是out
的目标函数的值:out2 = f(out1)
out3
是一个退出标志,告诉我们为什么我们的程序收敛/未能收敛
out4
列出了有关迭代次数的信息等。
out5
是一个包含所有相关输出信息的结构,包括程序找到的本地最小值列表。