具有单位向量约束的非线性优化

Posted

技术标签:

【中文标题】具有单位向量约束的非线性优化【英文标题】:Non-linear optimization with unit vector constraint 【发布时间】:2012-10-03 17:06:45 【问题描述】:

我有一个 3x3 矩阵 E,我正在尝试解决这个优化问题:

|| E * t || = minimum

其中 t 是我正在寻找的解决方案,它必须是单位向量(表示为 3x1 矩阵)。 || x ||表示 x 的欧几里得距离。

有没有图书馆可以帮助我解决这个问题?我在各种库中找到了几个求解函数,但我似乎找不到一个可以让我施加额外约束的函数,即 t 必须是单位向量。那么我可以在没有库的情况下以编程方式解决这个问题吗?

【问题讨论】:

对于单位向量,您的意思是单位长度的向量(||t||==1 或集合中的一个(1,0,0),(0,1,0),(0,0,1) 我的意思是前者,||t|| == 1. 如果不清楚,请见谅。 【参考方案1】:

在我看来像是一个特征向量类型的问题——你的minimum 应该是E 的特征值中最小的绝对值。

对矩阵 E 执行singular value decomposition (SVD)(此操作应作为任何好的线性代数库的一部分提供)。这将为您提供 E 的因式分解:

E =  U diag V*

其中diag 是具有非负对角值的对角矩阵,UV 是正交矩阵。

找到diag的最小对角元素; V* 的对应行(或V 的列)是t 的解决方案。

t 的这个值将是一个单位向量,因为 V 是正交的,而结果向量 E t 将是最小的,因为 UV 保留了向量长度。

【讨论】:

以上是关于具有单位向量约束的非线性优化的主要内容,如果未能解决你的问题,请参考以下文章

Matlab随笔之线性规划

如何基于无约束方法建立约束优化方法

python非线性规划用啥模块

线性规划问题中的差分约束与最短路径

优化工具包—无约束非线性优化求解器(fminsearch)

数值优化中 最优化线性规划问题中的常见概念辨析