繁体   English   中英

梯度投影(GP)算法的初始起点

[英]Initial starting point for Gradient Projection(GP) Algorithm

我正在为GP实现代码,这是一个迭代算法,我有一些担忧。 我希望有人可以帮助我弄清楚逻辑:

1)我必须能够从满足约束条件的初始起点b开始,Ab = c

这是矩阵A和向量c

A <- rbind(c(1,1,1),c(-1,1,-1))
c <- c(0,5)

我尝试了以下2种方法来找到b0作为开始迭代的初始点

b0 <- solve(t(A)%*%A)%*%t(A)%*%c
b0 <- ginv(A)%*%c

但是当我检查下面的代码时,我并没有正确使用所有b0组件。

A %*% b0 == c

您能帮我找到一种更好的方法来获得满足条件Ab = c的初始点吗?

谢谢

我怀疑您的问题可能由以下答案回答: 为什么这些数字不相等? 要引用接受的答案,

由于并非所有数字都可以用IEEE浮点算术(几乎所有计算机都用来表示十进制数字并对其进行数学运算的标准)来精确表示,因此您将无法始终获得期望的结果。

在这种情况下, all.equal将返回TRUE

A <- rbind(c(1, 1, 1),c(-1, 1, -1))
C <- matrix(c(0,5), nc = 1)
b0 <- MASS::ginv(A) %*% C

A %*% b0 == C
#       [,1]
# [1,] FALSE
# [2,] FALSE
all.equal(A %*% b0, C)
# [1] TRUE

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM