[英]Optimization using lsqnonneg function of MATLAB
我必须找到x的值,它最小化C * exp(2x)的范数-d受x> = 0.我试图在MATLAB中解决这个问题。 C和d都被定义为维度1x180的向量。 有没有人对如何在MATLAB中使用lsqnonneg
函数(或其他一些技术)解决这个问题有任何暗示或建议? 如果它只是x而不是exp(2x),它很容易被lsqnonneg
解决! 但由于问题中的指数期限,我无法继续进行。 我会很感激的建议。
首先是一些数学:定义y = exp(2*x)
然后约束x >=0
等于y >= 1
。 那么等效的最小化问题是:
minimize(over y) norm(c.*y - d)
subject to y >= 1
在MATLAB中有很多方法可以做到这一点。 一个很酷的方法是使用CVX,如果你下载cvx凸优化包,代码将是:
n = 180;
cvx_begin
variable y(n)
minimize(norm(c .* y - d))
subject to:
1 <= y
cvx_end
然后你当然可以做x = log(y) / 2
来得到x
的最终值
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.