Hi, I need assistance please with my java code to implement the below problem. The Java program uses Genetic Algorithms to recognize a string. Below is the code. Im missing some functionalities that enables the program to work successfully. Thank you The program is intended to work as follows: The user can input the string to guess. The user can enter the number or organisms in the population. The user can enter the number of generations to create. The user can enter the mutation probability. The user can observe the progress of the GA, for example print the best answer in every 10th generation. After the prescribed number of generations, the program should print best/final answer. The program should “guesses” the string  “We the people of the United States in order to perform a perfect union” and print result    import java.util.Scanner; public class GATest {     public static void main(String[] arg) {         boolean repeat = true;         while(repeat) {             Scanner myScanner = new Scanner(System.in);             System.out.print("\nEnter string to guess--»");             String goal = myScanner.nextLine();             System.out.print("Enter number of organisms per generation--»");             int popSize = Integer.parseInt(myScanner.next());             System.out.print("Enter number of generations--»");             int generations = Integer.parseInt(myScanner.next());             System.out.print("Enter mutation probability--»");             double mutateProb = Double.parseDouble(myScanner.next());             System.out.println();             Population aPopulation = new Population(goal, popSize, generations, mutateProb);             aPopulation.iterate();             System.out.println("Repeat? y/n");             String answer = myScanner.next();             if (answer.toUpperCase().equals("Y"))                 repeat = true;             else                 repeat = false;         }     } } import java.util.Random; public class Organism implements Comparable {     String value, goalString;     double fitness;     int n;     Random myRandom = new Random();     public Organism(String goalString) {         value="";         this.goalString=goalString;         this.n= goalString.length();         for(int i=0; imutateProb)                 newString = newString+value.charAt(i);             else {                 int j = myRandom.nextInt(27);                 if (j==26)                     newString=newString+" ";                 else {                     int which = myRandom.nextInt(2);                     if (which ==0)                         j=j +65;                     else                         j=j+97;                     newString = newString+(char)j;                 }             }         }         this.setValue(newString);     } }

C++ Programming: From Problem Analysis to Program Design
8th Edition
ISBN:9781337102087
Author:D. S. Malik
Publisher:D. S. Malik
Chapter7: User-defined Simple Data Types, Namespaces, And The String Type
Section: Chapter Questions
Problem 3PE
icon
Related questions
Question
100%

Hi, I need assistance please with my java code to implement the below problem. The Java program uses Genetic Algorithms to recognize a string. Below is the code. Im missing some functionalities that enables the program to work successfully. Thank you

The program is intended to work as follows:

  • The user can input the string to guess.
  • The user can enter the number or organisms in the population.
  • The user can enter the number of generations to create.
  • The user can enter the mutation probability.
  • The user can observe the progress of the GA, for example print the best answer in every 10th generation.
  • After the prescribed number of generations, the program should print best/final answer.

The program should “guesses” the string  “We the people of the United States in order to perform a perfect union” and print result 

 

import java.util.Scanner;
public class GATest {
    public static void main(String[] arg) {
        boolean repeat = true;
        while(repeat) {
            Scanner myScanner = new Scanner(System.in);
            System.out.print("\nEnter string to guess--»");
            String goal = myScanner.nextLine();
            System.out.print("Enter number of organisms per generation--»");
            int popSize = Integer.parseInt(myScanner.next());
            System.out.print("Enter number of generations--»");
            int generations = Integer.parseInt(myScanner.next());
            System.out.print("Enter mutation probability--»");
            double mutateProb = Double.parseDouble(myScanner.next());
            System.out.println();
            Population aPopulation = new Population(goal, popSize, generations, mutateProb);
            aPopulation.iterate();
            System.out.println("Repeat? y/n");
            String answer = myScanner.next();
            if (answer.toUpperCase().equals("Y"))
                repeat = true;
            else
                repeat = false;
        }
    }
}

import java.util.Random;
public class Organism implements Comparable<Organism> {
    String value, goalString;
    double fitness;
    int n;
    Random myRandom = new Random();
    public Organism(String goalString) {
        value="";
        this.goalString=goalString;
        this.n= goalString.length();
        for(int i=0; i<n; i++) {
            int j = myRandom.nextInt(27);
            if(j==26)
                value=value+" ";
            int which = myRandom.nextInt(2);
            if(which==0)
                j=j+65;
            else
                j=j+97;
            value=value+ (char)j;
        }
    }

    public Organism(String goalString, String value, int n) {
        this.goalString=goalString;
        this.value = value;
        this.n=n;
    }

    public Organism() {
    }

    public String getValue() {
        return this.value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    public String toString() {
        return value +" "+ goalString+" "+getFitness(goalString);
    }

    public int getFitness(String aString) {
        int count =0;
        for(int i=0; i< this.n; i++)
            if(this.value.charAt(i)== aString.charAt(i))
                count++;
        return count;
    }

    public int compareTo(Organism other) {
        int thisCount, otherCount; thisCount=getFitness(goalString); otherCount=other.getFitness(goalString);
        if (thisCount == otherCount)
            return 0;
        else if (thisCount < otherCount)
            return 1;
        else
            return -1;
    }

    public Organism[] mate(Organism other) {
        Random aRandom = new Random();
        int crossOver = aRandom.nextInt(n);
        String child1="", child2="";
        for (int i=0; i< crossOver; i++) {
            child1=child1+this.value.charAt(i);
            child2 = child2+other.value.charAt(i);
        }
        for (int i= crossOver; i<n; i++) {
            child1=child1+other.value.charAt(i);
            child2=child2+this.value.charAt(i);
        }

        Organism[] children= new Organism[2];
        children[0] = new Organism(goalString, child1,n);
        children[1] = new Organism(goalString, child2, n);
        return children;
    }

    public void mutate(double mutateProb) {
        String newString="";
        for (int i=0; i< n; i++) {
            int k = myRandom.nextInt(100);
            if (k/100.0 >mutateProb)
                newString = newString+value.charAt(i);
            else {
                int j = myRandom.nextInt(27);
                if (j==26)
                    newString=newString+" ";
                else {
                    int which = myRandom.nextInt(2);
                    if (which ==0)
                        j=j +65;
                    else
                        j=j+97;
                    newString = newString+(char)j;
                }
            }
        }
        this.setValue(newString);
    }
}

 

 

 

Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 4 steps with 5 images

Blurred answer
Knowledge Booster
Program on Numbers
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
C++ Programming: From Problem Analysis to Program…
C++ Programming: From Problem Analysis to Program…
Computer Science
ISBN:
9781337102087
Author:
D. S. Malik
Publisher:
Cengage Learning