我正在使用MATLAB optimtool进行遗传算法优化。
我正在打开一个名为'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
functionnn m_0b4请求我输入值'i',然后输入输入,
遗传算法的脚本m_0a4称为'y'。
当我输入值时,MATLAB继续请求我再输入一个值。 当我输入'Enter'时,MATLAB给我带来了一个错误。
分配的非单身rhs尺寸比
非单身人士下标
引起:
用户提供的健身功能评估失败。
GA无法继续。
我无法想象为什么MATLAB不理解我提供输入(例如数字5)。有什么想法吗?
提前谢谢!
答案 0 :(得分:2)
我认为你应该做的是在致电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倾向于无穷大时,你试图最小化的函数趋向于无穷大......
function y = m_0b4(x,i)
y = abs(x - i);
end
结果:
输入i
设置为20(最多100代):
x =
20.012668610027522
fval =
0.012668610027522
答案 1 :(得分:1)
我不能说为什么你的代码不起作用,但这里有一个解决方法:
function y = m_0b4(x)
i = input('write it down \n')
y = x - i;