Пример #1
0
void runExperiment22(int N, int M, int L, int L_user) {
    int count = 200;
    while (count--) {
        NetworkData data;
        data.init(N,M,L,L_user);
        vector<int> p(0);
        ProblemSolver ps(data);
        cout << ps.findOptimalUniformPrice().first << " ";
        pair<int, vector<int> > r1 = ps.findLocallyOptimalNonuiformPricing(0,0);
        pair<int, vector<int> > r2 = ps.findLocallyOptimalNonuiformPricing(1,0);
        cout << r1.first << " ";
        cout << ps._getRevenueForNonuniformPricing(r2.second) << endl;
    }
}
Пример #2
0
void runEvaluation(int N, int M, int L, int L_user) {
    int n_cases = 1;
    while (true) {
        cout << "case: " << n_cases++ << endl;
        NetworkData data;
        data.init(N,M,L,L_user);
        ProblemSolver ps(data);
        int nonuni_r = ps.findLocallyOptimalNonuiformPricing(1,1).first;
    }
    
    //    while (true) {
    //        NetworkData data;
    //        data.init(N,M,L,L_user);
    //        ProblemSolver ps(data);
    //        int uni_r = ps.findOptimalUniformPrice().first;
    //        int nonuni_r = ps.findLocallyOptimalNonuiformPricing(1, 0).first;
    //        int opt_r = ps.findOptimalPricingByDFS().first;
    //        cout << uni_r << " " << nonuni_r << " " << opt_r << endl;
    //    }
}
Пример #3
0
void runExperiment2(int N, int M, int L, int L_user) {
    int count = 1000;
    while (count--) {
        NetworkData data;
        data.init(N,M,L,L_user);
        vector<int> p(0);
        for (int i = 0; i < L; ++i) {
            p.push_back(rand()%(MAX_VALUATION+1));
        }
        ProblemSolver ps(data);
        cout << ps._getRevenueForNonuniformPricing(p);
        ApproximateAlgorithm aa = ApproximateAlgorithm(data, p);
        cout << " " << aa.computeRevenue() << endl;
//        int random_max = 0;
//        for (int i = 0; i < 20; ++i) {
//            int r = aa._computeRevenueWithRandomSelection();
//            random_max = r > random_max ? r : random_max;
//            cout << " " << random_max;
//        }
//        cout << endl;
    }
}