Bonjour,
je cherche à créer un algorithme génétique qui reçoit un ensemble d'individus candidats, calcule leurs fitness sur la base d'une fonction objectif floue, fait le processus génétique puis retourne la meilleure solution.
j'ai trouvé ce code java qui calcule le fitness des individus sur la base d'une comparaison de longueur avec un individu candidat.
Je veux modifier la condition de comparaison de telle sorte que ma fonction objectif soit une fonction floue: max μc(x) = max min i=1, …, m μci (x)

c'est à dire que la fonction getFitness va calculer les degrés de satisfaction des contraintes floues de chaque individu, et maximiser le minimum de ces degrés.
je suis débutante dans ce domaine et je ne sais pas par où commencer:
où et comment définir mes contraintes?
comment modifier la fonction objectif et la fonction getFitness?

voila le code:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package simpleGa;
 
public class FitnessCalc {
 
    static byte[] solution = new byte[64];
 
    /* Public methods */
    // Set a candidate solution as a byte array
    public static void setSolution(byte[] newSolution) {
        solution = newSolution;
    }
 
    // To make it easier we can use this method to set our candidate solution
    // with string of 0s and 1s
    static void setSolution(String newSolution) {
        solution = new byte[newSolution.length()];
        // Loop through each character of our string and save it in our byte
        // array
        for (int i = 0; i < newSolution.length(); i++) {
            String character = newSolution.substring(i, i + 1);
            if (character.contains("0") || character.contains("1")) {
                solution[i] = Byte.parseByte(character);
            } else {
                solution[i] = 0;
            }
        }
    }
 
    // Calculate inidividuals fittness by comparing it to our candidate solution
    static int getFitness(Individual individual) {
        int fitness = 0;
        // Loop through our individuals genes and compare them to our cadidates
        for (int i = 0; i < individual.size() && i < solution.length; i++) {
            if (individual.getGene(i) == solution[i]) {
                fitness++;
            }
        }
        return fitness;
    }
 
    // Get optimum fitness
    static int getMaxFitness() {
        int maxFitness = solution.length;
        return maxFitness;
    }
}
merci d'avance !