C++ 线性方程组,带约束的最小二乘法
我试着先描述一下先决条件 我有许多图像/矩阵,可以想象成图像处理程序中的层。将添加这些层以形成最终输出。每个层都有一个从0到1的因子 x_1*M_1+x_2*M_2+…= M_i矩阵是固定不变的。 目标是确定最接近(不一定最好)给定S的x_i因子 矩阵的二维性与问题的解决无关。它们可以重新排列,形成矩阵形式的线性方程组 每个矩阵M_i是M的一列,它们一起构成一个方程 M·x=S M可以非常大(数个10.000行和100列) 你有没有建议最好基于库来解决这个问题?我知道有很多库可以解决最小二乘问题,但我找不到一个支持约束的库。首先,满足>=0条件对我来说就可以了 提前感谢您的帮助似乎有拉格朗日乘数,请参阅。 这些允许您求解带有约束的方程。您可以使用库进行优化,并将目标函数构造为压缩创新的计算(可能使用COBYLA算法) 您也可以使用QuantLib的类进行此操作,使用方法非常简单:C++ 线性方程组,带约束的最小二乘法,c++,c,equation,least-squares,equation-solving,C++,C,Equation,Least Squares,Equation Solving,我试着先描述一下先决条件 我有许多图像/矩阵,可以想象成图像处理程序中的层。将添加这些层以形成最终输出。每个层都有一个从0到1的因子 x_1*M_1+x_2*M_2+…= M_i矩阵是固定不变的。 目标是确定最接近(不一定最好)给定S的x_i因子 矩阵的二维性与问题的解决无关。它们可以重新排列,形成矩阵形式的线性方程组 每个矩阵M_i是M的一列,它们一起构成一个方程 M·x=S M可以非常大(数个10.000行和100列) 你有没有建议最好基于库来解决这个问题?我知道有很多库可以解决最小二乘问题
LinearRegression *lr = new LinearRegression( x, y, 1.0);
cout << lr->coefficients();
LinearRegression*lr=新的线性回归(x,y,1.0);
cout系数();
您没有指定约束的类型。具有仿射约束的最小二乘问题是一个二次规划问题。二次约束->QCQP。“你可能想考虑沿着这条线搜索”@ LaTal化化学家我指定了约束:“每一层都有一个从0到1的因素”,“最初实现>0的条件对我来说是这样”,我没有时间去看NLopt,但是我简短地看了一下QuantLib,我不理解你的例子。1.0意味着什么?我在类列表中找不到类
线性回归
,我估计你指的是一般的最小平方,但它没有很好的文档记录。1.0是什么意思?这是一个vContainer我以前使用过LinearRegression类,它似乎没有在Doxygen文档中详细记录,但是它仍然存在,正如我们在General Linear Leaast Squeres注释中可以找到的:由LinearLeastSquares继承