crown
1.0.0
|
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