使用fmincon在Matlab中处理矩阵

时间:2019-02-27 17:36:06

标签: matlab optimization

我目前正在尝试在Matlab中使用fmincon。

我可以使它正常运行,但是当我处理不满足条件的矩阵元素时,这就会失败。

如下

ub = 1.1;
lb = -1.2; 
aut = -0.25;

h = @(aut)eQ_Optim(aut);

  u = fmincon(h,aut, [], [], [], [], lb, ub)

我正在使用的功能如下

                function [Maxim]   = eQ_Optim(aut); 

                 Data = [-0.23183483,-0.003274012;
                         -0.289945477,0.000282334;
                         -0.483591973,0.006588649;
                         -0.257735378,0.000887691;
                         -0.286463622,-0.003235662;
                         -0.453939127,0.004358216;
                         -0.196363243,0.004186609;
                         -0.209783591,0.001715187];


   Data(Data(:,1)<aut,2)=0

                     MDOnx=Data(:,2)+1;
                     MD_Cumx=cumprod(MDOnx,1);
                     Maxim = MD_Cumx(end)*-1


 end

我正在尝试让fmincon优化变量'aut',以使其最大化右列(Data(:,2))的累加总和。

供参考,我收到的输出是

起始点是满足约束的局部最小值。

完成优化是因为在开始时目标函数不变 在可行的方向上达到最佳公差的默认值,并且 约束满足约束公差的默认值之内。

u =   -0.250000000000000

正如您所看到的,这只是我最初的猜测而已。

我希望一切都清楚。我已经尽可能简化了一切。这可能吗?

1 个答案:

答案 0 :(得分:0)

解决方案是在适当的间隔内使用fminbid

%%%https://uk.mathworks.com/help/matlab/ref/fminbnd.html