繁体   English   中英

使用MATLAB的lsqnonneg函数进行优化

[英]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.

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