std::vector<Conflict> ConflictPredictor::getConflicts(double threshold)
{
    std::vector<Conflict> conflicts;
    for (size_t i = 0; i != m_routes.size(); ++i)
    {
        for (size_t j = i + 1; j != m_routes.size(); ++j)
        {
            std::vector<Conflict> current_conflicts = getConflicts(i, j, threshold);
            // Append vector
            conflicts.insert(conflicts.end(), current_conflicts.begin(), current_conflicts.end());
        }
    }
    return conflicts;
}
Exemplo n.º 2
0
void KeyboardConfig::callbackNewKey()
{
    mSetupKey->newKeyCallback(mNewKeyIndex);

    KeyPair conflicts = getConflicts();
    if (conflicts.first != keyboard.KEY_NO_VALUE)
    {
        const std::string firstConflict = getKeyCaption(conflicts.first);
        const std::string secondConflict = getKeyCaption(conflicts.second);
        new OkDialog(_("Key Conflict(s) Detected."),
                     strprintf(_("%s and %s keys overlap. "
                                 "Resolve them, or gameplay may result "
                                 "in strange behaviour."), firstConflict.c_str(),
                                 secondConflict.c_str()), setupWindow);
    }
}
Exemplo n.º 3
0
void worker(void * Arg) {

    unsigned int minConflicts = INF;
    unsigned int temp;
    Group tempGroup,minGroup;
    unsigned int cycles = 20;
    for(int i = 0; i < cycles; i++) {
    //while(true) {
        tempGroup = scheduleClasses(randomizeGroup(*(Group*)Arg));
        temp = getConflicts(tempGroup);
        if (temp < minConflicts) {
            minConflicts = temp;
            minGroup = tempGroup;
            cout << "\t" << minConflicts << endl;
        }
    }
}
Exemplo n.º 4
0
int main() {

    chrono::steady_clock::time_point t1 = chrono::steady_clock::now();
    gen.seed(t1.time_since_epoch().count());

    Group Academy = readGroupFromFile("pseudo.txt");


    for(int i = 1; i <= 27; i++) {
        Academy.createClass(i);
    }

    //Academy = assignClasses(Academy);

    //_beginthread(worker,0,&Academy);

    unsigned int minConflicts = INF;
    //ofstream w("dump.txt",ios_base::out);
    unsigned int temp;
    Group tempGroup,minGroup;
    unsigned int cycles = 5;
    for(int i = 0; i < cycles; i++) {
        //tempGroup = scheduleClasses(randomizeGroup(Academy));
        tempGroup = scheduleClassesAlt(randomizeGroup(Academy));
        //tempGroup = randomScheduleClasses(Academy);
        temp = getConflicts(tempGroup);

        /*
        for(int i = 0; i < tempGroup.Students.size()-290; i++) {
            w << tempGroup.Students[i].getID() << "\t";
        }
        w << endl;
        */


        //w << temp << endl;
        if (temp < minConflicts) {
            minConflicts = temp;
            minGroup = tempGroup;
            cout << minConflicts << endl;
        }
        //cout << "\r" << i;
    }
    cout << endl;
    cout << minConflicts << endl << endl;

    /*
    for(int i = 0; i < minGroup.Classes.size(); i++) {
        cout << "C" << minGroup.Classes[i].getID() << "\t";
        for(int j = 0; j < minGroup.Classes[i].Sections.size(); j++) {
            cout << minGroup.Classes[i].Sections[j].period << "\t";
        }
        cout << endl;
    }
    */

    chrono::steady_clock::time_point t2 = chrono::steady_clock::now();
    chrono::duration<double> time_span = chrono::duration_cast<chrono::duration<double>>(t2 - t1);
    cout << endl << "OPS = " << (float)cycles/time_span.count() << endl;


    for(int i = 0; i < minGroup.Classes.size(); i++) {
        for(int j = 0; j < minGroup.Classes[i].Sections.size(); j++) {
            cout << minGroup.Classes[i].getID()
                 << "."
                 << minGroup.Classes[i].Sections[j].period
                 << "\t"
                 << minGroup.Classes[i].Sections[j].Roster.size()
                 << endl;
        }
    }

    getchar();

    return 0;
}