我正在使用MATLAB优化工具进行遗传算法优化。
我要打开一个名为“m_0a4”的新脚本
FitnessFunction = @m_0b4;
NumberOfVariables = 1;
[x,fval] = ga(FitnessFunction, numberOfVariables);%Here I minimize the difference y
我要打开第二个新脚本,命名为“m_0b4”
function y = m_0b4(x)
prompt = 'write it down';
i = input(prompt) %the input value
y = x - i; % the variable I want to minimize
函数m_0b4请求我输入一个值'i‘,我正在输入输入,
遗传算法的脚本m_0a4调用'y‘。
当我键入值时,MATLAB继续请求我提供一个值。当我输入'Enter‘时,MATLAB会给我带来一个错误。
赋值的非单例rhs维度比非单例rhs的下标要多。
原因:用户提供的健身功能评估失败。GA不能继续。
我想不出为什么MATLAB不明白我给出了一个输入(例如数字5)。有什么想法吗?
提前谢谢你!
发布于 2016-05-11 09:38:52
我认为您应该做的是在调用ga之前向用户询问一次输入。
为了使函数m_0b4考虑到此输入,可以将FitnessFunction声明为1参数的匿名函数:
您的新功能:
function y = m_0b4(x,i)
y = x - i;
end主脚本中的 :
prompt = 'write it down';
i = input(prompt)
% Declare your fitness function that will be executed with the input entered by the user
FitnessFunction=@(x) m_0b4(x,i);
% Minimize
NumberOfVariables = 1;
[x,fval] = ga(FitnessFunction, NumberOfVariables);次要注意事项(主要问题):
当x趋于-infinity时,你试图最小化的函数趋向于-infinity.
工作示例(允许最低限度的)
function y = m_0b4(x,i)
y = abs(x - i);
end结果:
将输入i设置为20 (最多为100代):
X= 20.012668610027522 fval = 0.012668610027522
发布于 2016-05-11 08:44:02
我不能解释为什么您的代码不能工作,但是这里有一个解决办法:
function y = m_0b4(x)
i = input('write it down \n')
y = x - i;https://stackoverflow.com/questions/37156988
复制相似问题