ich bin durch Zufall auf den Poker Predictor von Luigi Giaccari (http://blogs.mathworks.com/pick/2009/12/11/the-finest-poker-brains-on-your-side/) gestoßen.
Leider ist die Webseite zur Installationsanleitung nicht mehr aktiv :/ (http://www.advancedmcode.org/poker-predictor.html) und ich bekomme das leider nicht zum laufen.
Ich hoffe ihr könnt mir hierbei helfen
Ich öffne die "PokerPredictor.m" Datei, und starte diese.
Programm startet, sobald ich auf "Continue" klicken tauchen ein Reihe von Fehlern auf, und es werden auch keine Wahrscheinlichkeiten berechnet.
Die Fehlermeldung an sich ist ja klar. TablePtr ist nicht bekannt
Es ist gibt 2 Möglichkeiten warum: Entweder gibt es TablePtr nicht, oder es wird nicht gefunden. Daher Schritt 1: Rechner auf Vorhandensein von TablePtr.* durchsuchen. Falls nicht vorhanden -> Problem klar. Falls vorhanden das Verzeichnis mittels ADDPATH oder per MATLAB Menü so hinzufügen, dass MATLAB es finden kann.
Vielen Dank, hat erstmal geholfen!
Die "BuildTable.cpp" lag im flaschen Ordner.
Die nächsten Fehlermeldugen waren:
Zitat:
" Error: Could not detect a compiler on local system
which can compile the specified input file(s)
Before Compiling Files you need to download the HandRanks table,
Follow the Installation instructions on:
http://www.advancedmcode.org/poker-predictor.html "
Da es die angegebene Seite leider nicht mehr gibt, habe ich folgendes gemacht:
------------------------------------------------------------------------
Segmentation violation detected at Mon Feb 10 17:35:14 2014
------------------------------------------------------------------------
Configuration:
Crash Decoding : Disabled
Default Encoding : windows-1252
MATLAB Architecture: win64
MATLAB Root : D:\Sonstiges\MatLab
MATLAB Version : 8.1.0.604 (R2013a)
Operating System : Microsoft Windows 7
Processor ID : x86 Family 6 Model 58 Stepping 9, GenuineIntel
Virtual Machine : Java 1.6.0_17-b04 with Sun Microsystems Inc. Java HotSpot(TM) 64-Bit Server VM mixed mode
Window System : Version 6.1 (Build 7601: Service Pack 1)
This error was detected while a MEX-file was running. If the MEX-file
is not an official MathWorks function, please examine its source code
for errors. Please consult the External Interfaces Guide for information
on debugging MEX-files.
This error was detected while a MEX-file was running. If the MEX-file
is not an official MathWorks function, please examine its source code
for errors. Please consult the External Interfaces Guide for information
on debugging MEX-files.
Es liegt also an GameSimulation.mexw64 - nicht direkt an MATLAB. Vermutlich ein Kompatibilitätsproblem. Der Autor dürfte mit einer früheren Version als R2013a gearbeitet haben. Solle der Source Code für GameSimulation.mexw64 vorliegen, also GameSimulation.c oder GameSimulation.cpp, dann ist es möglich (durch Ausführen der MEX Befehls) die MEXW64 Datei neu zu erstellen.
void GetDeck(int* Deck,bool* Picked) { //This funtion generates a deck of cards. Cards are inticated as integer numbers from 1 to 52
//Note Deck is an array of (52-knowncards) elements
//Picked is a 52 elements boolean array, trueif the card is known (or picked)
int i;
int c=0;
for(i=0;i<52;i++) { if(! Picked[i])//only take unpicked
{
Deck[c]=i+1;//plus one per avere le carte da 1 a 52;
c++;
}
}
}
void RandGame(int* Deck,int N,int Nump) {
//Permutes deck = generate a random game
//N is the deck size, only unknown cards
//Nump is the maximum number of permutation, only first nump card will be permuted=faster!!!
int i;
int j;
int temp;
//generetes random numbers
int* r=new int[Nump];
RandNumbers(r,Nump,N-1,0) ;
//generates the permutation
for(i=0;i<Nump;i++) {
j=r[i];
void GameSimulation(int* KnownCard,int NumPlayers,int NumSimulation,Statistic* Stat) {
//Known card is an integer array of numpalyers*2 + 5 elemnts, it indicats all possible known
//known card in texas holdem game. unknown card are flagged as -1.
//NumPlayers and NumSimulation is obvious, Stat is the store for statistics
bool Picked[52]={false};//detecs known/picked cards
int numKnownCards=0;//NUmber of known cards
int i,c,j,n;//counters
float numTie;//number of ties
int HighestRank;
int Rank,myRank;
int idwin,idwinmax;
int rank5;//rank after 5cards evaluation
srand((unsigned)time(NULL));//seed the random generator
bool* Known=new bool[(NumPlayers*2+5)];//detecs from the possible known cards those that truly are known
for(i=0;i<(NumPlayers*2+5);i++) Known[i]=false;//set to false;
//Reset Statistics, make sure all values are zeros
ResetStat(Stat);
//counts known cards and generates the deck
for(i=0;i<(NumPlayers*2+5);i++) { if(KnownCard[i]>0)//check if card is actually known
{
Picked[KnownCard[i]-1]=true;//yes it is
numKnownCards++;
Known[i]=true;//it is known
}
//Now we use the Odd value to compute the maximumBet/pot ratio
Stat->Odd/=Ns;
//Stat->Odd=Stat->Odd/(100-Stat->Odd); //La lasciamo calcolare al matlab
//mexPrintf("Stat->Odd: %4.1f \n",Stat->Odd);
for(i=1;i<10;i++)//Slatala prima che sono errori
{
Stat->OpponentHigherHand[i]/=Ns;
Stat->PlayerHigherHand[i]/=Ns;
} }
/* the gateway function */
//la chiamata deve essere :
//[PlayerStat,OpponenentStat,WinTieOdd]=GameSimulation(KnownCards,NumPlayers,NumSimulations,TablePtr)
//Errors flag:
// -2 Can not loadtable
// -1 Not enoguh memory
void mexFunction( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) {
//Copy in the Output array
for(i=0;i<10;i++){PlayerStat[i]=Stat.PlayerHigherHand[i];} for(i=0;i<10;i++){OpponentStat[i]=Stat.OpponentHigherHand[i];}
WinTieOdd[0]=Stat.wins;
WinTieOdd[1]=Stat.draws;
WinTieOdd[2]=Stat.Odd;
Ich bin nicht so erfahren mir C Code debuggen / S Functions, sorry. Ich weiss nur, dass die meisten S Function Crashes mit Speicherüberschreibungen zu tun haben.
Ich bin nicht so erfahren mir C Code debuggen / S Functions, sorry. Ich weiss nur, dass die meisten S Function Crashes mit Speicherüberschreibungen zu tun haben.
Normalerweise würde man den Autor kontaktieren...
Andreas
Mist...gibt es kein Allerheilmittel für S- Functions und Crashes
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.