Matlab fmincon优化结果随显示样式的变化而变化

Matlab fmincon优化结果随显示样式的变化而变化,matlab,optimization,Matlab,Optimization,作为一个研究项目的一部分,我正在优化一个用户定义的函数,我知道(数值上和分析上)该函数表现良好(准凹),我试图使用fmincon来找到某些优化 如果我指定('Display','off')作为选项,fmincon将正常运行和退出,并给出错误的解决方案。如果我指定('Display','on')作为选项,fmincon将抛出异常并停止。使用相同的参数和相同的函数,可以手动检查最优解是否为~2.4 clear all %Model Parameters global r e nDay nNight

作为一个研究项目的一部分,我正在优化一个用户定义的函数,我知道(数值上和分析上)该函数表现良好(准凹),我试图使用fmincon来找到某些优化

如果我指定('Display','off')作为选项,fmincon将正常运行和退出,并给出错误的解决方案。如果我指定('Display','on')作为选项,fmincon将抛出异常并停止。使用相同的参数和相同的函数,可以手动检查最优解是否为~2.4

clear all
%Model Parameters
global r e nDay nNight muH muL sigH sigL DH DL pH pL g cS cG bH BH IntBH bL BL IntBL QLim batSeq genSeq 
r = 0.3;
nDay = 14;
nNight = 24- nDay;
muH = nDay * r;
muL = nNight * r;
sigH = sqrt(nDay * r * (1-r));
sigL = sqrt(nNight * r * (1-r));
QLim = fix(((DH+DL)/r - DH)/1000)*1000;
g = 50;
cG = 11.1;
pH = 37;
pL = 23;
DH = 65000;
DL = 35000;
genSeq = 80000 
e = 0.9; %0.9 for battery %0.45 for Kraftblock
cS = 30; %60 for Battery %9 for Kraftblock

%Create integrals of specific normal cdfs (helper functions)
bH = @(x) exp(-((x-muH).^2)/(2*sigH.^2)) / (sigH*sqrt(2*pi));
BH = @(y) integral(@(x) bH(x), 0, y);
IntBH = @(z) integral(@(y) BH(y), 0, z, 'ArrayValued',true);
bL = @(x) exp(-((x-muL).^2)/(2*sigL.^2)) / (sigL*sqrt(2*pi));
BL = @(y) integral(@(x) bL(x), 0, y);
IntBL = @(z) integral(@(y) BL(y), 0, z, 'ArrayValued',true);
优化从这里开始(基本上是求导数的平方,并找到其最小值(即0))


为什么显示功能对优化结果有任何影响?非常感谢您提供任何帮助,以找出如何正确解决此问题(对于大多数参数组合,它只是按预期运行和优化)。

您将收到一个错误,因为
上的
不是
显示
选项的有效输入。我找到的优化值是1.4190,这似乎是正确的值。

你是对的,但我不敢相信这是MATLAB的默认行为。谢谢你指出这一点。
counter = 0;
fval = [];
exitflag = [];
output = [];
for i = genSeq
    counter = counter + 1;
    fixed_Q = i
    jt3PartialKFixQ = @(K) jt3PartialK(fixed_Q, K)^2;
    try
        options = optimoptions('fmincon','Display','off');
        [x,fval,exitflag,output] = fmincon(jt3PartialKFixQ, 0, [], [], [], [] ,0, 14, [], options)
        jt3FixQRes(counter,:) = [x, i];
        disp(x)
    catch
        disp([i,"None Found"])
    end
end

%The function to be optimized
function profit = jt3PartialK(Q,K)
global r e nDay nNight muH muL sighH sigL DH DL pH pL g cS cG bH BH IntBH bL BL IntBL QLim
    V = min((Q-DL)/(Q-DH),100);
    profit = g*e*(1-BH(K*V)) - ...
        (g*e*sqrt(r))/((DL+DH)/r - DH) * (Q-DH)* (1-BH(K*V)) + ...
        g*e*(1-BL(K)) -...
        (g*e*sqrt(r))/((DL+DH)/r - DH) * (Q-DH)* (1-BL(K)) - ...
        cS;
end