Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
matlab中遗传算法的优化_Matlab_Mathematical Optimization_Genetic Algorithm - Fatal编程技术网

matlab中遗传算法的优化

matlab中遗传算法的优化,matlab,mathematical-optimization,genetic-algorithm,Matlab,Mathematical Optimization,Genetic Algorithm,我使用遗传算法编写了一个简单的优化代码。我不知道为什么在运行代码时出错。以下是我的代码: f = @(x1,x2) 1-x1.^2+(x1-x2).^2; A = [1 1;-1 2;2 1]; b =[2 2 3]' ; Aeq = []; beq = []; Lb = [0 0]'; Ub = []; [Xopt,Fval] = ga(f,2,A,b,Aeq,beq,Lb,Ub) 我不知道为什么matlab会给我错误。我根据“遗传算法文档”编写了这个程序,但仍然给我错误: Error

我使用遗传算法编写了一个简单的优化代码。我不知道为什么在运行代码时出错。以下是我的代码:

f = @(x1,x2) 1-x1.^2+(x1-x2).^2;

A = [1 1;-1 2;2 1];
b =[2 2 3]' ;
Aeq = [];
beq = [];
Lb = [0 0]';
Ub = [];

[Xopt,Fval] = ga(f,2,A,b,Aeq,beq,Lb,Ub)
我不知道为什么matlab会给我错误。我根据“遗传算法文档”编写了这个程序,但仍然给我错误:

Error using @(x1,x2)1-x1.^2+(x1-x2).^2
Not enough input arguments.
Error in createAnonymousFcn>@(x)fcn(x,FcnArgs{:}) (line 11)
fcn_handle = @(x) fcn(x,FcnArgs{:});

Error in makeState (line 48)
            firstMemberScore = FitnessFcn(state.Population(initScoreProvided+1,:));

Error in galincon (line 18)
state = makeState(GenomeLength,FitnessFcn,Iterate,output.problemtype,options);

Error in ga (line 351)
            [x,fval,exitFlag,output,population,scores] = galincon(FitnessFcn,nvars, ...

Caused by:
    Failure in initial user-supplied fitness function evaluation. GA cannot continue

MATLAB中所有优化方法的目标函数只接受1个参数。根据:

乐趣-目标函数

客观的 函数,指定为函数句柄或函数名写入 接受长度为nvars的行向量并返回 标量值

当“UseVectorized”选项为true时,编写fun以接受 按nvars排列的pop矩阵,其中pop是当前人口规模。在这个 在case中,fun返回一个与包含 适应度函数值。确保乐趣不会带来任何负面影响 pop的特定大小,因为ga可以通过 即使在矢量化计算中,人口也是如此

改变你的目标函数,它应该起作用:

f = @(x) 1-x(1).^2+(x(1)-x(2)).^2;

在SO中,[optimization]标记用于完全不同的主题。请在使用标签之前阅读标签的说明。这是什么意思?我刚刚给优化和matlab添加了标签,它们与遗传算法相关。我做了,但问题是答案不正确。每次我运行代码,它给了我不同的优化变量值和相应的目标函数的不正确值。我该怎么办?@MMd.NrC这是一般的超启发式的本质,1-它们是随机的,2-它们不能保证找到最优解。阅读不同的答案。增加popsize和代数以减少错误。但是如果你得到的是完全随机的结果总是偏离全局最优值,那么请提出一个新问题并插入你的完整代码。非常感谢。我确实知道算法和数值错误。但正如你所说的,我也想问,我完全得到了随机数。我不仅在多目标函数优化中得到了随机数,但即使是对一个目标函数的简单优化,我也会得到完全不正确和不理想的结果。