首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的代码(基于遗传算法优化工具)不能读取一个值作为输入?

为什么我的代码(基于遗传算法优化工具)不能读取一个值作为输入?
EN

Stack Overflow用户
提问于 2016-05-11 08:26:41
回答 2查看 355关注 0票数 0

我正在使用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)。有什么想法吗?

提前谢谢你!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-11 09:38:52

我认为您应该做的是在调用ga之前向用户询问一次输入。

为了使函数m_0b4考虑到此输入,可以将FitnessFunction声明为1参数的匿名函数:

您的新功能:

代码语言:javascript
复制
function y = m_0b4(x,i)
y = x - i;
end

主脚本中的 :

代码语言:javascript
复制
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.

工作示例(允许最低限度的)

代码语言:javascript
复制
function y = m_0b4(x,i)
y = abs(x - i);
end

结果:

将输入i设置为20 (最多为100代):

X= 20.012668610027522 fval = 0.012668610027522

票数 2
EN

Stack Overflow用户

发布于 2016-05-11 08:44:02

我不能解释为什么您的代码不能工作,但是这里有一个解决办法:

代码语言:javascript
复制
function y = m_0b4(x)
i = input('write it down \n')
y = x - i;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37156988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档