public boolean remove(Harmony e) { for (int i = 0; i < e.getSize(); i++) { musicians[i].remove(e.getNote(i)); } super.remove(e); return true; }
public Harmony randomHarmony() { Harmony harmony = new Harmony(this); boolean[] pickEnabled = new boolean[musicians.length]; for (int i = 0; i < pickEnabled.length; i++) { pickEnabled[i] = true; } for (int i = 0; i < musicians.length; i++) { if (pickEnabled[i]) { Note randomNote = musicians[i].quickRandom(); // if ((randomNote.value != null) && (randomNote.lowerApproximation == // comparator.globalLowerApproximation[i])) { if (randomNote.value != null) { /*for (int j = 0; j < i; j++) { if (randomNote.equivalenceClasses[j] == 1) harmony.notes[j].value = null; }*/ for (int j = i + 1; j < randomNote.equivalenceClasses.length; j++) { if (randomNote.equivalenceClasses[j] == comparator.globalLowerApproximation[j]) pickEnabled[j] = false; } } harmony.setNote(i, randomNote); } else harmony.setNote(i, new Note(null, musicians[i])); } /*while (comparator.checkConstraint(harmony) != 0) { for (int i = 0; i < musicians.length; i++) { harmony.setNote(i, musicians[i].random()); } }*/ comparator.evaluate(harmony); return harmony; }
public boolean add(Harmony e) { if (contains(e)) { return false; } else if (size() < HMS) { for (int i = 0; i < e.getSize(); i++) musicians[i].add(e.getNote(i)); super.add(e); return true; } else if (comparator.compare(e, worst()) > 0) { for (int i = 0; i < e.getSize(); i++) musicians[i].replace(worst().getNote(i), e.getNote(i)); super.remove(worst()); super.add(e); return true; } return false; }
public Harmony newHarmony() { Harmony harmony = new Harmony(this); /*for (int i = 0; i < musicians.length; i++) { Note note = musicians[i].pick(); harmony.setNote(i, note); }*/ boolean[] pickEnabled = new boolean[musicians.length]; for (int i = 0; i < pickEnabled.length; i++) { pickEnabled[i] = true; } for (int i = 0; i < musicians.length; i++) { if (pickEnabled[i]) { Note note = musicians[i].pick(); // if ((randomNote.value != null) && (randomNote.lowerApproximation == // comparator.globalLowerApproximation[i])) { if (note.value != null) { /*for (int j = 0; j < i; j++) { if (randomNote.equivalenceClasses[j] == 1) harmony.notes[j].value = null; }*/ for (int j = i + 1; j < note.equivalenceClasses.length; j++) { if (note.equivalenceClasses[j] == comparator.globalLowerApproximation[j]) pickEnabled[j] = false; } } harmony.setNote(i, note); } else harmony.setNote(i, new Note(null, musicians[i])); } /*int start = random.nextInt(musicians.length); boolean forward = random.nextDouble() > 0.5; if (forward) { for (int i = start; i < musicians.length; i++) { Note note = musicians[i].pick(); if (note.value != null) { for (int j = 0; j < start; j++) { if (note.equivalenceClasses[j] == 1) pickEnabled[j] = false; } } harmony.setNote(i, note); } for (int i = 0; i < start; i++) { if (pickEnabled[i]) { Note note = musicians[i].pick(); harmony.setNote(i, note); } else { harmony.setNote(i, new Note(null, musicians[i])); } } } else { for (int i = 0; i < start; i++) { Note note = musicians[i].pick(); if (note.value != null) { for (int j = start; j < musicians.length; j++) { if (note.equivalenceClasses[j] == 1) pickEnabled[j] = false; } } harmony.setNote(i, note); } for (int i = start; i < musicians.length; i++) { if (pickEnabled[i]) { Note note = musicians[i].pick(); harmony.setNote(i, note); } else { harmony.setNote(i, new Note(null, musicians[i])); } } }*/ /*for (int i = start; i < musicians.length; i++) { if (pickEnabled[i]) { Note note = musicians[i].pick(); //if ((randomNote.value != null) && (randomNote.lowerApproximation == comparator.globalLowerApproximation[i])) { if (note.value != null) { */ /*for (int j = 0; j < i; j++) { if (randomNote.equivalenceClasses[j] == 1) harmony.notes[j].value = null; }*/ /* for (int j = i + 1; j < note.equivalenceClasses.length; j++) { if (note.equivalenceClasses[j] == 1) pickEnabled[j] = false; } } harmony.setNote(i, note); } else harmony.setNote(i, new Note(null, musicians[i])); }*/ comparator.evaluate(harmony); return harmony; }
public void reportFull() { for (Harmony harmony : this) System.out.println(harmony.toString() + " " + harmony.membership); System.out.println("Best Harmony: " + best().toString()); }