with Tasks; use Tasks; with Task_Set; use Task_Set; with paes; use paes; with Scheduler; use Scheduler; with Scheduler_Interface; use Scheduler_Interface; with Ada.Strings.Unbounded; use Ada.Strings.Unbounded; with unbounded_strings; use unbounded_strings; with framework_config; use framework_config; package Task_Clustering_Rules is Initial_tasks_set : Tasks_Set; Hyperperiod_of_Initial_Taskset : integer; The_Scheduler : Schedulers_Type; Task_priority : Integer; Sched_policy : Policies; Second_fitness_function : unbounded_String; -------------------------------------------------------------------------- -- Declaration of the **Anti-Ideal point** (which represent the "worst" -- value of each objective, explored in the search space) In our case -- we deal with a minimization problem, so "worst" means the maximum value -- can be taken by each objective. -- these values shoult be determined among all iterations --------------------------------------------------------------------------- Z1_anti_ideal, Z2_anti_ideal: Float; --------------------------------------------------------------------------- -- and the **Ideal point** which is defined by -- the "better" value of each objective, -- explored in the search space (i.e. the min value of each objective) -- These values are determined from the final archive --------------------------------------------------------------------------- Z1_ideal, Z2_ideal : Float; -- Generate a schedulable task set -- using the UUnifast method to generate utilizations of tasks -- from a total utilization. procedure Generate_initial_schedulable_task_set (my_tasks : in out Tasks_Set; N : in Integer; U : in Float); -- Return the number of tasks from a given solution function Number_of_tasks (s : in solution) return integer; -- Applying clustering rules on a given solution -- and return the resulting task set function Appling_clustering_rules (s : in solution) return Tasks_Set; -- Build an xml file from a task set procedure Build_xml_model (my_tasks : in Tasks_Set; file_name : string); -- this function verify if a solution is consistent or not i.e verify if -- there are two non-harmonic functions which are grouped alone in the same task. function Is_sol_consistent (s : in solution) return boolean; end Task_Clustering_Rules;