diff --git a/app/jobs/table_simulator_job.rb b/app/jobs/table_simulator_job.rb new file mode 100644 index 0000000..574c4a5 --- /dev/null +++ b/app/jobs/table_simulator_job.rb @@ -0,0 +1,20 @@ +class TableSimulatorJob < ApplicationJob + queue_as :default + + def perform(*_args) + engine = VNS::Engine.new + + engine.add_perturbation(Tables::Swap) + + initial_solution = Tables::Distribution.new(min_per_table: 8, max_per_table: 10) + initial_solution.random_distribution(Guest.all.shuffle) + + engine.initial_solution = initial_solution + + engine.target_function(&:discomfort) + + best_solution = engine.run + + best_solution.save! + end +end diff --git a/lib/tasks/vns.rake b/lib/tasks/vns.rake index c8e6b50..d3a31d0 100644 --- a/lib/tasks/vns.rake +++ b/lib/tasks/vns.rake @@ -1,18 +1,5 @@ namespace :vns do task distribute_tables: :environment do - engine = VNS::Engine.new - - engine.add_perturbation(Tables::Swap) - - initial_solution = Tables::Distribution.new(min_per_table: 8, max_per_table: 10) - initial_solution.random_distribution(Guest.all.shuffle) - - engine.initial_solution = initial_solution - - engine.target_function(&:discomfort) - - best_solution = engine.run - - best_solution.save! + end end