我正在迭代地解决R
中的约束优化问题,其中的问题如下:
min f(x)
s.t。 g(x)< 0
我正在迭代地进行优化,因此我有一个名为f
的变量,它保存函数f的当前值和1和0的向量g
,告诉我是否满足约束条件第i次迭代。为了帮助,这是一个例子
#Imagine there are 6 time points
f = c(7,10,6,3,-1,-9)
g = c(1,1,0,1,1,0)
所以我想跟踪在第i次迭代中找到的最佳最小值,以便满足约束。因此,我希望能够计算像
这样的矢量h = c(7,7,7,3,-1,-1)
h
记录及时发现的最小值,以满足约束条件。有没有一种简单的方法可以在R
循环中执行此操作?
答案 0 :(得分:3)
鉴于您的f
和g
,我会这样做:
cummin(zoo::na.locf(ifelse(g == 1, f, NA)))
# [1] 7 7 7 3 -1 -1
或者,或许更简单:
cummin((ifelse(g == 1, f, Inf)))
# [1] 7 7 7 3 -1 -1