Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Optimization fmincon:施加大于零的矢量约束_Optimization_Matlab - Fatal编程技术网

Optimization fmincon:施加大于零的矢量约束

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

如何使用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 = 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有一个下限参数。阅读帮助。