在R语言中,如何沉默solnp

时间:2018-01-21 00:04:03

标签: r

我正在使用R包Rsolnp来解决一些约束优化问题。解决优化问题后,它会自动显示通知和优化结果。有谁知道怎么沉默呢?我必须编写一个循环来在每次迭代中运行solnp。继续显示结果非常烦人。

提前致谢!

1 个答案:

答案 0 :(得分:2)

您没有给予太多帮助,但您可以通过this.responseText参数将trace控制参数设置为control。例如,使用solnp中的exmaple:

?solnp

然后我们

fn1 <- function(x) {
  exp(x[1]*x[2]*x[3]*x[4]*x[5])
}
eqn1 <- function(x) {
  z1 <- x[1]*x[1]+x[2]*x[2]+x[3]*x[3]+x[4]*x[4]+x[5]*x[5]
  z2 <- x[2]*x[3]-5*x[4]*x[5]
  z3 <- x[1]*x[1]*x[1]+x[2]*x[2]*x[2]
  return(c(z1,z2,z3))
}
x0 <- c(-2, 2, 2, -1, -1)

所以设置> powell <- solnp(x0, fun = fn1, eqfun = eqn1, eqB = c(10, 0, -1), + control = list(trace = 1)) # default Iter: 1 fn: 0.03526 Pars: -1.59385 1.51051 2.07795 -0.81769 -0.81769 Iter: 2 fn: 0.04847 Pars: -1.74461 1.62029 1.80509 -0.77020 -0.77020 Iter: 3 fn: 0.05384 Pars: -1.71648 1.59482 1.82900 -0.76390 -0.76390 Iter: 4 fn: 0.05395 Pars: -1.71713 1.59570 1.82727 -0.76364 -0.76364 Iter: 5 fn: 0.05395 Pars: -1.71714 1.59571 1.82725 -0.76364 -0.76364 Iter: 6 fn: 0.05395 Pars: -1.71714 1.59571 1.82725 -0.76364 -0.76364 solnp--> Completed in 6 iterations 来抑制这个:

trace = 0

包中的其他功能也有类似的参数。