public boolean isFitter(Chromosome chrom1, Chromosome chrom2) {
        objectives1 = chrom1.getObjectives();
        objectives2 = chrom2.getObjectives();

        if(objectives1 == null) {
            chrom1.setObjectives(getFitness(chrom1));
            objectives1 = chrom1.getObjectives();
        }

        if(objectives2 == null) {
            chrom2.setObjectives(getFitness(chrom2));
            objectives2 = chrom2.getObjectives();
        }

        if(objectives1.length != objectives2.length) {
            throw new RuntimeException
                    ("Inconsistent objective lengths encountered.");
        }

        boolean[] optimal = getOptimal();

        if(optimal.length != objectives1.length) {
            throw new RuntimeException
                    ("Optimal array is not the same length as objectives.");
        }

        for(int i = 0; i < objectives1.length; i++) {
            if(optimal[i]) {
                if(objectives1[i] < objectives2[i]) {
                    return false;
                }
            } else {
                if(objectives1[i] > objectives2[i]) {
                    return false;
                }
            }
        }

        return true;
    }