crown  1.0.0
include/crown/annealing.h
Go to the documentation of this file.
00001 /*
00002  Copyright 2015 Nicolas Melot
00003 
00004  This file is part of Crown.
00005 
00006  Crown is free software: you can redistribute it and/or modify
00007  it under the terms of the GNU General Public License as published by
00008  the Free Software Foundation, either version 3 of the License, or
00009  (at your option) any later version.
00010 
00011  Crown is distributed in the hope that it will be useful,
00012  but WITHOUT ANY WARRANTY; without even the implied warranty of
00013  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
00014  GNU General Public License for more details.
00015 
00016  You should have received a copy of the GNU General Public License
00017  along with Crown. If not, see <http://www.gnu.org/licenses/>.
00018 
00019 */
00020 
00021 
00022 #include <pelib/Algebra.hpp>
00023 
00024 #ifndef ANNEALING_H
00025 #define ANNEALING_H
00026 
00027 using namespace pelib;
00028 
00029 namespace pelib
00030 {
00031         namespace crown
00032         {
00034                 float
00035                 quality_simple(const Algebra &schedule);
00037                 float
00038                 quality_idle(const Algebra &schedule);
00040                 float
00041                 quality_off(const Algebra &schedule);
00043                 float
00044                 energy_static_dynamic_busy_idle_active(const Algebra &rec);
00045                 float
00046                 quality_generic(const Algebra &schedule);
00047 
00052                 Algebra
00053                 neighbor_allocation(const Algebra &solution, float tasks, float cores);
00055                 Algebra
00056                 neighbor_allocation_full(const Algebra &solution, float distance);
00058                 Algebra
00059                 neighbor_allocation_tasks(const Algebra &solution, float distance);
00061                 Algebra
00062                 neighbor_allocation_cores(const Algebra &solution, float distance);
00064                 Algebra
00065                 neighbor_efficiency(const Algebra &solution, float distance);
00066 
00068                 Algebra
00069                 annealing(const Algebra &initial, const Algebra &initial_best, float (*quality)(const Algebra &solution), Algebra (*neighbor)(const Algebra &solution, float distance), float temperature, float cooling, float final, int max_transform, int max_new_state, float distance);
00070 
00072                 float
00073                 annealing_complexity(float temperature, float cooling, float final, int max_transform, int max_new_state, float distance);
00074         }
00075 }
00076 
00077 #endif