【发布时间】:2022-02-04 18:30:09
【问题描述】:
我编写了一个函数来求解穿孔管道中的流量 - “solver_fun”。 我优化此功能以获得针对特定条件的最佳解决方案。 我的问题是我对优化的 Q_out_vec 感兴趣,所以我可以在不同的函数中使用它。但是,当我在solver_fun 中包含return() 函数时,优化函数不起作用并给出错误消息。
solver_fun <- function (h_ini) {
h_vec [length (submain_length)] <- h_ini
for (i in lateral_number:1) {
v_out_vec [i] <- v_out (h_vec [i + 1], connector_k, is_open_vec [i])
Q_out_vec [i] <- Q_out (v_out_vec [i], connector_A)
if (i == lateral_number) {
Q_total_vec [i] = Q_out_vec [i]
} else {
Q_total_vec [i] = Q_total (Q_out_vec [i], Q_total_vec [i + 1])
}
hf_vec [i] <-
hf (lateral_spacing, submain_D, submain_C, Q_total_vec [i])
h_vec [i] <-
h (h_vec [i + 1], hf_vec [i], submain_slope, lateral_spacing)
}
output<-list(Q_out_vec);
#return (output);
h_diff <- abs(h_vec [1] - hin)
}
sol <- optimize(solver_fun, lower=0, upper=2);
在这种形式下优化是有效的,但是当我在 return() 函数之前删除 # 时,我得到: 优化错误(solver_fun,lower = 0,upper = 2): “优化”中的无效函数值
任何帮助将不胜感激。 谢谢
【问题讨论】:
标签: r optimization