首页 > 解决方案 > 使用 fmincon 在 Matlab 中操作矩阵

问题描述

我目前正在尝试在 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

如您所见,这只是我最初的猜测被反馈给我。

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

标签: matlaboptimization

解决方案


解决方案是使用具有适用间隔的 fminbid

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


推荐阅读