我在https://www.lri.fr/~hansen/cmaes.m
上使用了CMA-ES优化程序如果我定义一个函数
function y = myfun(x)
y = (x(1)-1)^2+(x(2)-2)^2;
end
然后使用我可以使用的cmaes
function X = optimise(myfun)
X = cmaes(myfun,[0 0]',3.0);
end
optimies('myfun')
找到最佳解决方案。
然而,如果我有这样的情绪:
function y = myfun(x)
global a b;
y = (x(1)-a)^2+(x(2)-b)^2;
end
和
function X = optimise()
global a b;
a = 10;
b = 1;
X = cmaes(myfun,[0 0]',3.0);
end
会有错误。
我认为这是因为cmaes函数没有全局定义。 但只是添加 全球的b 到cmaes.m不起作用
任何人都可以帮我解决这个问题吗?