シンボリック回帰と遺伝的プログラミングを実装するために、Xcodeでc++プログラムを作成しました。参照データ(2Dポイントの配列)と、プログラムが各世代で生成する最高の関数を視覚化するためのウィンドウを作成したいと思います。
簡単に言うと、ウィンドウに2つのグラフを表示し、forループで更新してもらいたいと思います。私が理解していることから、GLUTは優れたフレームワークのようであり、参照データを表示する関数を作成しました(std :: vectorは、「referenceDataSet」変数の格納方法です)。
void renderScene(){
// The min/max variables are just for scaling & centering the graph
double minX, maxX, minY, maxY;
minX = referenceDataSet[0].first;
maxX = referenceDataSet[0].first;
minY = referenceDataSet[0].second;
maxY = referenceDataSet[0].second;
for (int i = 0; i < referenceDataSet.size(); i++) {
minX = min(minX, referenceDataSet[i].first);
maxX = max(maxX, referenceDataSet[i].first);
minY = min(minY, referenceDataSet[i].second);
maxY = max(maxY, referenceDataSet[i].second);
}
glLoadIdentity ();
glClear(GL_COLOR_BUFFER_BIT);
glBegin( GL_LINE_STRIP );
glColor4f( 1.0, 0.0, 0.0, 1.0);
for (int i = 0; i < referenceDataSet.size(); i++) {
glVertex2f((referenceDataSet[i].first-minX)/(maxX-minX)-0.5, (referenceDataSet[i].second-minY)/(maxY-minY)-0.5);
}
glEnd();
glFlush();
}
void renderInit(int argc, char **argv){
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowSize(600, 600);
glutCreateWindow("");
glutDisplayFunc(renderScene);
glutCheckLoop();
}
これに伴う問題は、ウィンドウを更新する方法、または絶えず変化する2番目のグラフを描画する方法がわからないことです。
また、これはStack Overflowに関する私の最初の質問なので、ここで正しく何かを行っていない場合、またはこれらのいずれかを理解するのが難しい場合は、お詫び申し上げます。できる限り答えを探しましたが、実際には何も見つかりませんでした。