aboutsummaryrefslogtreecommitdiffstats
path: root/src/engine/Problem.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/Problem.cpp')
-rw-r--r--src/engine/Problem.cpp23
1 files changed, 12 insertions, 11 deletions
diff --git a/src/engine/Problem.cpp b/src/engine/Problem.cpp
index 2db4f45..3540b2b 100644
--- a/src/engine/Problem.cpp
+++ b/src/engine/Problem.cpp
@@ -38,8 +38,9 @@ using namespace std;
namespace Machina {
-Problem::Problem(TimeUnit unit, const std::string& target_midi,
- SharedPtr<Machine> seed)
+Problem::Problem(TimeUnit unit,
+ const std::string& target_midi,
+ SPtr<Machine> seed)
: _unit(unit)
, _target(*this)
, _seed(new Machine(*seed.get()))
@@ -86,7 +87,7 @@ Problem::fitness(const Machine& const_machine) const
return cached->second;
}
- SharedPtr<Evaluator> eval(new Evaluator(*this));
+ SPtr<Evaluator> eval(new Evaluator(*this));
//machine.reset();
machine.deactivate();
@@ -230,11 +231,11 @@ Problem::initial_population(size_t gene_size, size_t pop_size) const
// FIXME: ignores _seed and builds based on MIDI
// evolution of the visible machine would be nice..
- SharedPtr<Machine> base = SharedPtr<Machine>(new Machine(_unit));
+ SPtr<Machine> base = SPtr<Machine>(new Machine(_unit));
for (uint8_t i = 0; i < 128; ++i) {
if (_target._counts[i] > 0) {
//cout << "Initial note: " << (int)i << endl;
- SharedPtr<Node> node(new Node(TimeDuration(_unit, 1 / 2.0)));
+ SPtr<Node> node(new Node(TimeDuration(_unit, 1 / 2.0)));
node->set_enter_action(ActionFactory::note_on(i));
node->set_exit_action(ActionFactory::note_off(i));
node->set_selector(true);
@@ -246,12 +247,12 @@ Problem::initial_population(size_t gene_size, size_t pop_size) const
// FIXME: double copy
Machine m(*base.get());
- set< SharedPtr<Node> > unreachable;
- SharedPtr<Node> initial;
+ set< SPtr<Node> > unreachable;
+ SPtr<Node> initial;
for (Machine::Nodes::iterator i = m.nodes().begin(); i != m.nodes().end();
++i) {
- if (PtrCast<MidiAction>((*i)->enter_action())->event()[1] ==
+ if (dynamic_ptr_cast<MidiAction>((*i)->enter_action())->event()[1] ==
_target.first_note()) {
(*i)->set_initial(true);
initial = *i;
@@ -260,9 +261,9 @@ Problem::initial_population(size_t gene_size, size_t pop_size) const
}
}
- SharedPtr<Node> cur = initial;
+ SPtr<Node> cur = initial;
unreachable.erase(cur);
- SharedPtr<Node> head;
+ SPtr<Node> head;
while (!unreachable.empty()) {
if (rand() % 2) {
@@ -272,7 +273,7 @@ Problem::initial_population(size_t gene_size, size_t pop_size) const
}
if (!head->connected_to(head) ) {
- cur->add_edge(SharedPtr<Edge>(new Edge(cur, head)));
+ cur->add_edge(SPtr<Edge>(new Edge(cur, head)));
unreachable.erase(head);
cur = head;
}