2. dpsm_simu.hpp
int x, y; //Koordinaten
double p; //Preis
double earnings;
int sales, visits;
//Gewinn vor n runden
double earnings_at(int n);
//Preis vor n runden
double p_at(int n);
/* Strategien
0 : p=0.5 konst,
1 : Gradient
2 : Back-Forward
*/
int strategy;
int ipr; //Iterationen pro Runde
//Log
std::vector<double> log_earnings;
std::vector<double> log_p;
};
/*-------------------------------------------------*/
class Customer
{
public:
Customer();
~Customer();
//Parameter
static int sleep_time; //Iterationen, die zwischen zwei Kaeufern
min. vergehen müssen
static int walk_time; //Anzahl Random-Walks die der Kaeufer nach
dem Kaufen macht
static double parsimony;
static int memory; //Anzahl Random-Walks die der Kaeufer nach
dem Kaufen macht
static double mem_k; //Anzahl Random-Walks die der Kaeufer nach
dem Kaufen macht
//Log_verteilung
static bool log_norm;
static double log_norm_ev; //Erwartungswert
static double log_norm_var; //Varianz
void Init(int& grid_size);
Seite 2
3. dpsm_simu.hpp
inline void Walk(int& grid_size); //Ein Schritt des Random-Walks
void Buy(int& grid_size); //Käufer hat eingekauft
double BuyProbability(double p);
int x, y; //Koordinaten
int time_to_sleep; //Wie viele Iteration müssen bis zum nächsten
Kauf vergehen
double theta; //Nutzen
std::vector<int> log_smid;
};
/*-------------------------------------------------*/
class DPSM
{
public:
//Parameter
int grid_size; //Groesse des Gitters: grid_size X grid_size
int num_iterations; //Anzahl Iterations
int num_customers; //Anzahl Kunden
int num_salesman; //Anzahl Verkaeufer
int log_bin_size; //Die Anzahl der Iterationen
double unit_cost; //Stueckkosten
double storage_cost; //Lagerkosten pro Iteration
//Konstruktor und Destruktor
DPSM();
~DPSM();
//Simulation starten
void Start();
//Kaeufer und Verkaeufer initialisieren
void InitPeople();
void InitCustomer();
//Statistiken initialisieren
void InitStats();
/*
Prueft ob sich ein Verkaufer auf der Position (x, y)
befindet und gibt, wenn ja, seine ID zurueck,
ansonsten -1
*/
int CheckPosition(int x, int y, int self_id = -1);
/*
Prueft ob der Kaeufer beim Verkauefer kauft und fuehrt
die Transaktion durch
*/
Seite 3
4. dpsm_simu.hpp
void CheckDeal(int &customer_id, int &salesman_id);
//Gibt die Gesamtgewinne und Positionen der Verkaeufer aus
void ShowEarnings();
int it; //Momentane Iteration
std::string file_prefix; //Der Prefix fuer die Dateien der
Ausgabe
std::string file_path; //Der Pfad, in den die ausgabe Dateien
abgelegt werden (muss existieren)
std::vector<Customer> cust; //Kaeufer
std::vector<Salesman> salesm; //Verkaeufer
Statistics stat;
};
#endif // DPSM_SIMU_HPP_INCLUDED
Seite 4