SlideShare ist ein Scribd-Unternehmen logo
1 von 4
Downloaden Sie, um offline zu lesen
dpsm_simu.hpp
#ifndef DPSM_SIMU_HPP_INCLUDED
#define DPSM_SIMU_HPP_INCLUDED
#include "statistics.hpp"
#include <vector>
#include <string>
/*-------------------------------------------------*/
class Salesman
{
public:
Salesman();
~Salesman();
void Init(int&);
void Sell(); //Eine Einheit wurde verkauft
void pAdjust(int); //Den Preis anpassen
void SetStrategy(int t_ipr, int t_strategy, ...);
//--------------------------------------------//
//Anpassung-Algorithmen und zugehoerige Variablen
int adj_count;
//Nr. 0
void adjConst(); //Preis bleibt bei 0.5
//Nr. 1
void adjPara(); //Gradientenverfahren
double adjParaM, adjParaP;
int adjParaN;
//Nr. 2
void adjI();
int adjI_N;
double adjI_size;
//Nr. 3
void adjClimb(); //Bergsteiger
double adjClimbSW; //Schrittweite
//Nr. 4
void adjSimAnn(); //Simuliertes abkuehlen
double adjSimAnn_T; //Temperatur
double adjSimAnn_dT; //Abkuehlung
double adjSimAnn_sw; //Schrittweite
//--------------------------------------------//
Seite 1
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
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
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

Weitere ähnliche Inhalte

Mehr von Vorname Nachname

Mehr von Vorname Nachname (17)

Leni souza
Leni souzaLeni souza
Leni souza
 
Alien life forms
Alien life formsAlien life forms
Alien life forms
 
Spaceengine2
Spaceengine2Spaceengine2
Spaceengine2
 
Structural Language
Structural LanguageStructural Language
Structural Language
 
Language
LanguageLanguage
Language
 
Spaceengine2
Spaceengine2Spaceengine2
Spaceengine2
 
Spaceengine
SpaceengineSpaceengine
Spaceengine
 
Topology and Electrostatics
Topology and Electrostatics Topology and Electrostatics
Topology and Electrostatics
 
Electron transport in one dimensional nanosystems
Electron transport in one dimensional nanosystemsElectron transport in one dimensional nanosystems
Electron transport in one dimensional nanosystems
 
Smell in real noses: how the environment changes vibrations
Smell in real noses: how the environment changes vibrationsSmell in real noses: how the environment changes vibrations
Smell in real noses: how the environment changes vibrations
 
Econophysics
EconophysicsEconophysics
Econophysics
 
Could humans recognize odor by phonon assisted tunneling
Could humans recognize odor by phonon assisted tunnelingCould humans recognize odor by phonon assisted tunneling
Could humans recognize odor by phonon assisted tunneling
 
Statistics.hpp
Statistics.hppStatistics.hpp
Statistics.hpp
 
calculation of currents in nanowires
calculation of currents in nanowirescalculation of currents in nanowires
calculation of currents in nanowires
 
Summerpoject 2005
Summerpoject 2005Summerpoject 2005
Summerpoject 2005
 
Aspelmeyer
AspelmeyerAspelmeyer
Aspelmeyer
 
Arndt matter wave interferometry
Arndt matter wave interferometry Arndt matter wave interferometry
Arndt matter wave interferometry
 

Dpsm simu.hpp

  • 1. dpsm_simu.hpp #ifndef DPSM_SIMU_HPP_INCLUDED #define DPSM_SIMU_HPP_INCLUDED #include "statistics.hpp" #include <vector> #include <string> /*-------------------------------------------------*/ class Salesman { public: Salesman(); ~Salesman(); void Init(int&); void Sell(); //Eine Einheit wurde verkauft void pAdjust(int); //Den Preis anpassen void SetStrategy(int t_ipr, int t_strategy, ...); //--------------------------------------------// //Anpassung-Algorithmen und zugehoerige Variablen int adj_count; //Nr. 0 void adjConst(); //Preis bleibt bei 0.5 //Nr. 1 void adjPara(); //Gradientenverfahren double adjParaM, adjParaP; int adjParaN; //Nr. 2 void adjI(); int adjI_N; double adjI_size; //Nr. 3 void adjClimb(); //Bergsteiger double adjClimbSW; //Schrittweite //Nr. 4 void adjSimAnn(); //Simuliertes abkuehlen double adjSimAnn_T; //Temperatur double adjSimAnn_dT; //Abkuehlung double adjSimAnn_sw; //Schrittweite //--------------------------------------------// Seite 1
  • 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