julia如何使用Optim包求解多元函数最大值,比如我项要求函数f(x,y)= (1-x)^2 +(1-y)^2。在[ 2 ,4]上的最大值,代码应该怎么写?
抛砖引玉哈。
using Optim
f(x) = (1-x[1])^2+(1-x[2])^2
res = optimize(f, [2.0, 4.0])
# 查看最小值点坐标
Optim.minimizer(res)
# 查看函数最小值
res.minimum
谢谢你啊, 你给的代码Optim帮助文档上给出 ,我相求的是最大值,并且是二元函数的。您能不能做个示范?
很抱歉没仔细读题目。
以下是我的代码。
using Optim
f(x) = -((1-x[1])^2+(1-x[2])^2)
lower = [2.0, 2.0]
upper = [4.0, 4.0]
initial_x = [3.1, 3.1]
/# g!是f的导函数。
function g!(G, x)
G[1] = 2.0 * (1.0 - x[1])
G[2] = 2.0 * (1.0 - x[2])
end
inner_optimizer = GradientDescent()
res = optimize(f, g!, lower, upper, initial_x, Fminbox(inner_optimizer), Optim.Options(outer_iterations = 10000))
println(res.minimum)
println(Optim.minimizer(res))
恕我愚钝,您给的这个代码也是不是也是求最小值的?我如果想求最大值怎么办?
我想求最大值,怎么写代码?
你想求 f(x) 的最大值,就求 -f(x) 的最小值就是了。
哦哦,好的,谢谢你。我试一试哈
[quote="seinn, post:8, topic:5514, full:true"]
哦哦,好的,谢谢你。我试一试哈
[/quote]
f(x) = -((1-x[1])^2+(1-x[2])^2)
我定义的时候就是-1*f(x)哈 抱歉没有特殊指出。
好的,谢谢,谢谢