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