00001 /****************************************************************** 00002 * 00003 * Filename : BAPSolver.h 00004 * Author : David Ong Tat-Wee 00005 * 00006 * Version : 1.01b 00007 * Date : 29 May 98 00008 * 00009 * Description : Interface file for problem solver class. 00010 * 00011 * Reference : nil 00012 * 00013 * Notes : This class calls the BAP partitioning and packing 00014 * algorithms. It serves as an interface between the 00015 * BAP Package class and the BAP algorithms. 00016 * 00017 * Changes : nil 00018 * 00019 * Copyright : Copyright (c) 1998 00020 * All rights reserved by 00021 * Resource Allocation and Scheduling Group 00022 * Department of Information Systems and Computer Science 00023 * National University of Singapore 00024 * 00025 ******************************************************************/ 00026 00027 00028 #ifndef __BAP_SOLVER__ 00029 #define __BAP_SOLVER__ 00030 00031 #include "def.h" 00032 #include "BAPBase.h" 00033 #include "BAPPackage.h" 00034 #include "../partitioning/TV/BAPTVPartitioner.h" 00035 /******************************** 00036 #include "your partitioner path" 00037 */ 00038 #include "../packing/BP/BAPBPPacker.h" 00039 00040 class BAPSolver : public BAPBase 00041 { 00042 public: 00043 BAPSolver(BAPPackage& aPackage, string aJob = "all"); 00044 ~BAPSolver(); 00045 00046 // 00047 // Debugging facility 00048 // 00049 // prints information on the current solver with the given 00050 // indentation width and at the given detail level 00051 void Print(int aWidth = 1, int aDetail = 0) const; 00052 00053 // 00054 // Accessor member functions 00055 // 00056 // returns the BAP package associated with this solver 00057 BAPPackage& Package() const; 00058 00059 // 00060 // Modifier member functions 00061 // 00062 // activates the solution to the BAP problem 00063 void Solve(); 00064 void DoPartitioning(); 00065 void DoPacking(); 00066 void ReadParameterFile(); 00067 00068 private: 00069 BAPPackage& mPackage; 00070 // Possible values: 00071 // All = run partitioning and packing 00072 // Part = run partitioning only and stop 00073 // Pack = read partitioning solution and run packing only 00074 string mJob; 00075 string mPartitioner; 00076 string mPacker; 00077 }; 00078 00079 00080 #endif 00081