2015-08-25 4 views
-1

J'essaie d'optimiser mon FIS à l'aide d'un GA, avec la boîte à outils d'optimisation matlab. Le code ressemble à ceci:Optimisation des fonctions d'appartenance FIS, via GA

function errorr=fun3_2(x) 

Name='eleni'; 
Type='mamdani'; 
NumInputs='8'; 
NumOutputs='1'; 
% NumRules='80'; 
AndMethod='min'; 
OrMethod='max'; 
ImpMethod='min'; 
AggMethod='max'; 
DefuzzMethod='centroid'; 

a=newfis('eleni'); 

%INPUTS_______________input 1____________ 

a.input(1).name='ARIAS'; 
a.input(1).range=[0 1]; 

a.input(1).mf(1).name='1'; 
a.input(1).mf(1).type='trimf'; 
a.input(1).mf(1).params=[x(1) x(2) x(3)]; 

a.input(1).mf(2).name='2'; 
a.input(1).mf(2).type='trimf'; 
a.input(1).mf(2).params=[x(4) x(5) x(6)]; 

a.input(1).mf(3).name='3'; 
a.input(1).mf(3).type='trimf'; 
a.input(1).mf(3).params=[x(7) x(8) x(9)]; 

.... ... et ainsi de suite, pour 8 totalement entrées et 1 sortie de 10 MFS chacun.

I insérer correctement les inégalités linéaires, de sorte que

0<x(1)<x(2)<x(3)<1 
0<x(4)<x(5)<x(6)<1 

..etc ..

mais au bout de 10 ou moins itérations du processus arrête et le message d'erreur suivant appers:

erreur courante optimisation. Condition de paramètre non valide: b> c

Des idées sur ce que je devrais faire pour le faire tourner?

Répondre

0

les tableaux A et B pour les inégalités linéaires, sont (en supposant que 2 mfs, puis généraliser)

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

B=[0;0;0;1;0;0;0;1] 

B est le problème, car ΑΧ < = Β, de sorte que de cette façon il suggère que peut-être x1 = x2..etc. L'égalité doit être éliminée! En supposant qu'il existe une légère différence entre les paramètres, résout le problème, ainsi la table B doit être définie comme suit, et le ga s'exécute:

B=[-0.01;-0.01;-0.01;0.99;-0.01;-0.01;-0.01;0.99]