如何解决具有单个等约束的 Python 中的最小二乘优化
我希望在 python 中解决最小二乘问题,以便我最小化 0.5*||np.dot(A,x) - b||^2
受约束 np.dot(C,x) = d
,边界 0<x<np.inf
,其中
A : shape=[m,n]
C : shape=[m,n]
b : shape=[m]
d : shape=[m]
都是已知矩阵。
不幸的是,看起来 scipy.optimize.lsq_linear() 函数仅适用于上限/下限约束:
minimize 0.5 * ||A x - b||**2
subject to lb <= x <= ub
不是等式约束。此外,我想为解决方案添加边界,使其仅为正值。是否有使用 scipy
或 NumPy
内置函数来执行此操作的简单或干净的方法?
解决方法
如果你坚持@Entity()
class A {
int id;
@Backlink()
final bs = ToMany<B>();
}
@Entity()
class B {
int id;
final a = ToOne<A>;
@Backlink()
final cs = ToMany<C>;
}
@Entity()
class C {
int id;
final b = ToOne<B>;
}
,你可以在目标函数中添加一个惩罚项,即
scipy.optimize.lsq_linear
并选择足够大的标量 minimize 0.5 * ||A x - b||**2 + beta*||Cx-d||**2
subject to lb <= x <= ub
,以便将您的约束优化问题转换为具有简单框约束的问题。但是,对于有约束的优化问题,使用 scipy.optimize.minimize
更方便:
beta
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。