最优化函数optim
目标函数:
$$f(x_1,x_2)=(1-x_1)^2+100(x_2-x_1^2)^2$$
该函数全局最小值在($x_1=1,x_2=1$)时取到。
下面这种写法是因为有多个自变量函数,传入一个参数x,每个自变量用向量x的分量来表示,从而定义出目标函数。
obj
x1
x2
y
return(y)
}
x1梯度:$-400*x_1*(x_2-x_1^2)-2*(1-x_1)$
x2梯度:$200*(x_2-x_1^2)$
梯度:
gradient
x1
x2
c(x1_gradient = -400*x1*(x2-x1^2)-2*(1-x1),
x2_gradient =200*(x2-x1^2))
}
tip:对于多元函数,需要用向量的形式来输出各个变量上的梯度。
下面以$x_1=0,x_2=3$作为起始点,其他参数采用默认设置,梯度也不输入。(默认时优化算法为单纯型法)
optim(par = c(0,3),fn=obj)
par元素表示最优解取值
value值表示目标函数值
counts代表调用目标函数与梯度函数的数目,可认为是迭代数目
convergence是收敛的代码
0表示成功完成了优化任务
1表示达到了达到了迭代上限