Optimization fmincon:施加大于零的矢量约束
如何使用fmincon()施加一个约束,使要优化的向量中的所有值都大于零 根据文档,我需要一些参数A和b,其中A*x≤ b、 但是我认为如果我把A向量设为-1和b0,那么我将优化x>0的和,而不是x大于0的每个值 以防万一,这是我的密码。我试图在向量(x)上进行优化,这样x和矩阵(称为乘数矩阵)的(成分)乘积就形成了一个列和为x的矩阵Optimization fmincon:施加大于零的矢量约束,optimization,matlab,Optimization,Matlab,如何使用fmincon()施加一个约束,使要优化的向量中的所有值都大于零 根据文档,我需要一些参数A和b,其中A*x≤ b、 但是我认为如果我把A向量设为-1和b0,那么我将优化x>0的和,而不是x大于0的每个值 以防万一,这是我的密码。我试图在向量(x)上进行优化,这样x和矩阵(称为乘数矩阵)的(成分)乘积就形成了一个列和为x的矩阵 function [sse] = myfun(x) % this is a nested function bigMatrix = repm
function [sse] = myfun(x) % this is a nested function
bigMatrix = repmat(x,1,120) .* multiplierMatrix;
answer = sum(bigMatrix,1)';
sse = sum((expectedAnswer - answer).^2);
end
xGuess = ones(1:120,1);
[sse xVals] = fmincon(@myfun,xGuess,???);
如果我需要更好地解释我的问题,请告诉我。提前谢谢你的帮助 您可以使用下限:
xGuess = ones(120,1);
lb = zeros(120,1);
[sse xVals] = fmincon(@myfun,xGuess, [],[],[],[], lb);
请注意,xVAL
和sse
可能应该互换(如果它们的名称有任何含义的话)
下限lb
意味着决策变量x
中的元素永远不会低于lb
中相应的元素,这就是您在这里所追求的
空([]
)表示您没有使用线性约束(例如,A
,b
,Aeq
,beq
),只有下限lb
一些建议:
fmincon
是一个非常高级的函数。你最好记住上面的文档,并使用许多不同的示例问题玩几个小时 fmincon有一个下限参数。阅读帮助。