[galib] Help- Showing the best individual with Borland C++ Builder 6.0
opb
brunstad at online.no
Sun Mar 13 16:22:32 EST 2005
Hi!
I am a novice trying to implement GAlib in Borland Builder6.0.
I have built the lib and all examples with the makefile.bcc.
It all works fine, out-of-the-box, in commandline-version.
Then I tried to make a winApp - with a memo, and a button to run the
algorithm in example 1. I had hoped for the memo to display the result as
it does in dos-window.
However, I allways get
"raised exception class std::bad_cast with message 'Exception Object Address
0x9BB956'"
when I run the program.
There seems to be a problem with the genome writing out to the ostingstream.
Does anybody have a clue to solve my problem?
Thanks in advance!
Ole Petter Brunstad
The code is (somewhat abbrevated) as follows:
///////////////////////////////////TestBCB6.cpp///////////////////////////////////
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "TestBCB6.h"
#include <sstream>
#include <ga/GASimpleGA.h> // we're going to use the simple GA
#include <ga/GA2DBinStrGenome.h> // and the 2D binary string genome
#include <ga/std_stream.h>
using namespace std;
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
// This is the objective function.
float Objective(GAGenome& g) {
GA2DBinaryStringGenome & genome = (GA2DBinaryStringGenome &)g;
// The code goes here
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ostringstream ostr;
ostr << "Example 1\n\n";
ostr << "This program tries to fill a 2DBinaryStringGenome with\n";
ostr << "alternating 1s and 0s using a SimpleGA\n\n";
// Inserted code from main() here:
// Declare variables for the GA parameters and set them to some default
values.
// ...
//
// Now the best genome that the GA found.
ostr << ga.statistics().bestIndividual();
AnsiString besttxt = ostr.str().c_str();
//then you can add received text to memo:
/* Solucao1->*/
Memo1->Lines->Add(AnsiString("best individual is: ") + besttxt);
}
//---------------------------------------------------------------------------
More information about the galib
mailing list