Мне нужно создать расписание для 6 классов в университете. Ниже приведены классы, которые я придумал.C++: программа расписания
class ClassRoom
{
private:
char id[5];
char type;
int cap;
public:
void setRoom();
void disp();
}c[15];
class StudentGroup
{
int sem;
char group[3];
int strength;
public:
void setGroup();
}stud[8];
class Course
{
char courseID[7];
int semNo;
char courseCode[5];
char courseName[50];
char type;
int lec;
int tut;
int prac;
public:
void setCourse();
}cour[75];
class CourseDetails
{
public:
char courseID[7];
char preference[3];
char resourceType;
char classPref[3];
};
class Faculty
{
char facID[6];
char name[50];
int noCourses;
public:
CourseDetails cD[6];
void setFaculty();
void disp();
}fac[50];
class ElecPair
{
int noPaired;
char courseId[10][7];
public:
void setElecPair();
}ePair[10];
class Period
{
int semNo;
char className[3];
char courseID;
char facID;
bool availability;
};
class TimeTable
{
Period prd[5][7];
}tt[6];
Я должен создать график с обычными ограничениями:
Ни один учитель не может быть в 2-х классах одновременно.
Студент не может иметь 2 класса одновременно и так далее.
Мне не нужен код, но я хотел бы получить предложения по наилучшему возможному способу создания этого расписания без использования генетического алгоритма.
PS: Можно ли использовать стек или рекурсию для создания этого расписания?
Просьба разъяснить "наилучший путь": короткий код? Самый быстрый алгоритм? Легче повторного использования? Данные ориентированы? Лучше всего для кэша данных? –
да, вы можете сделать это без использования общего алгоритма ........ – RajSharma
Планирование np-hard. GA, вероятно, подходит для использования. В противном случае будет выполняться обратное отслеживание грубой силы. Попробуйте каждое возможное размещение ученика/преподавателя и т. Д., Пока вы не сможете разместить кого-либо, или пока не найдете решение. – twentylemon