【问题标题】:Optimazition MFs of Fuzzy inference by genetic algorithm模糊推理的遗传算法优化MF
【发布时间】:2014-01-23 20:37:18
【问题描述】:

我正在使用 GA 来优化我的模糊系统中隶属函数的参数。 我创建了一个健身功能:

function y = gafuzzy(x)
global FISsys
global allData
global realResult

FISsys = readfis('aCAess.fis'); 
allData = importdata('ab.mat');
realResult = importdata('ad.mat');

FISsys.input(1,1).mf(1,1).params = [x(1) x(2) x(3)];
FISsys.input(1,1).mf(1,2).params = [x(4) x(5) x(6)];

FISsys.input(1,2).mf(1,1).params = [x(7) x(8) x(9)];
FISsys.input(1,2).mf(1,2).params = [x(10) x(11) x(12)];

FISsys.output.mf(1,1).params = [x(13) x(14) x(15)];
FISsys.output.mf(1,2).params = [x(16) x(17) x(18)];

c = evalfis(allData,FISsys);
e=sum(abs(c-realResult)); 
y = e;

end

线性不等式的 A[15*18] 矩阵是:

A = [1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;
0,1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;
0,0,0,1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0;
0,0,0,0,1,-1,0,0,0,0,0,0,0,0,0,0,0,0;
0,0,0,0,0,0,1,-1,0,0,0,0,0,0,0,0,0,0;
0,0,0,0,0,0,0,1,-1,0,0,0,0,0,0,0,0,0;
0,0,0,0,0,0,0,0,0,1,-1,0,0,0,0,0,0,0;
0,0,0,0,0,0,0,0,0,0,1,-1,0,0,0,0,0,0;
0,0,0,0,0,0,0,0,0,0,0,0,1,-1,0,0,0,0;
0,0,0,0,0,0,0,0,0,0,0,0,0,1,-1,0,0,0;
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,-1,0;
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,-1;
0,1,0,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0;
0,0,0,0,0,0,0,1,0,0,-1,0,0,0,0,0,0,0;
0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,-1,0]

而b[15*1]向量为:

b = [0;0;0;0;0;0;0;0;0;0;0;0;0;0;0]

但是当我运行 GA 时,我得到了这个错误: fisTriangleMf() 中的非法参数 --> a > b

为什么?

【问题讨论】:

    标签: matlab optimization genetic-algorithm fuzzy-logic


    【解决方案1】:

    一般来说,在三角形MF中,第一个数字,这里的a(显示左顶点)应该小于第二个数字,这里的b(顶部顶点)。所以你可以有一个像 [-1 0 1] 这样的三角形 MF,但它不能像 [0 -1 1]。

    在您的代码中,我假设有时您不满足其中一个地方的不等式:

    [x(1) < x(2) < x(3)];
    [x(4) < x(5) < x(6)];
    [x(7) < x(8) < x(9)];
    [x(10) < x(11) < x(12)];
    ....
    

    如果程序随机化这些值,您可以通过检查和替换轻松地将它们绑定到代码中,例如:

    if x(1) >= x(2)
         tmp = x(1);
         x(1) = x(2);
         x(2) = tmp;
    end
    

    【讨论】:

    • 感谢 NKN,但我正确设置了线性不等式。为什么它不能正常工作?
    • @OmidOmidi 我不是指 GA 的线性不等式。查看您如何在代码中设置 x(i) 值。应该注意这些价值观。
    • (约束):A*x ≤ b 形式的线性不等式由矩阵 A 和向量 b 指定。 (在优化工具中)。通过为每次迭代添加代码需要 10 秒。
    • 如何为 MF 选择 x(i)?
    • 这样:FISsys.input(1,1).mf(1,2).params = [x(5) x(6) x(7)];
    猜你喜欢
    • 2015-02-18
    • 2013-07-02
    • 2011-06-07
    • 1970-01-01
    • 2021-03-03
    • 2011-05-24
    • 1970-01-01
    • 2020-07-08
    相关资源
    最近更新 更多