Database System Concepts
Database System Concepts
7th Edition
ISBN: 9780078022159
Author: Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher: McGraw-Hill Education
Bartleby Related Questions 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
Check Mark
Knowledge Booster
Background pattern image
Computer Science
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
Recommended textbooks for you
Text book image
Database System Concepts
Computer Science
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:McGraw-Hill Education
Text book image
Starting Out with Python (4th Edition)
Computer Science
ISBN:9780134444321
Author:Tony Gaddis
Publisher:PEARSON
Text book image
Digital Fundamentals (11th Edition)
Computer Science
ISBN:9780132737968
Author:Thomas L. Floyd
Publisher:PEARSON
Text book image
C How to Program (8th Edition)
Computer Science
ISBN:9780133976892
Author:Paul J. Deitel, Harvey Deitel
Publisher:PEARSON
Text book image
Database Systems: Design, Implementation, & Manag...
Computer Science
ISBN:9781337627900
Author:Carlos Coronel, Steven Morris
Publisher:Cengage Learning
Text book image
Programmable Logic Controllers
Computer Science
ISBN:9780073373843
Author:Frank D. Petruzella
Publisher:McGraw-Hill Education