GA/GPのクラスを開発するためにこのコードを使用しましたが、理解できず、したがってプログラムをデバッグできませんでした。上記遺伝的Algoのビット単位のメモリ値の割り当てと取得
typedef struct {
void *dataPointer;
int length;
} binary_data;
typedef struct {
organism *organisms; //This must be malloc'ed
int organismsCount;
int (*fitnessTest)(organism org);
int orgDnaLength;
unsigned int desiredFitness;
void (*progress)(unsigned int fitness);
} evolutionary_algorithm;
まっすぐです。その後、我々は彼らのfitnnessなどをテストする前に生物を開始しようと...私の知る限り理解し
int main(int argc, char *argv[])
{
srand(time(NULL));
int i;
evolutionary_algorithm ea;
ea.progress = progressDisplayer;
ea.organismsCount = 50;
ea.orgDnaLength = sizeof(unsigned int);
organism *orgs =(organism *) malloc(sizeof(organism) * ea.organismsCount);
for (i = 0; i < 50; i++)
{
organism newOrg;
binary_data newOrgDna;
newOrgDna.dataPointer = malloc(sizeof(unsigned int));
memset(newOrgDna.dataPointer, i, 1);
newOrgDna.length = sizeof(unsigned int);
newOrg.dna = newOrgDna;
orgs[i] = newOrg;
}
は(memsetのある)ので、メモリ位置のvoidポインタ(newOrgDna.dataPointer)にバイナリ値を書き込もうとすると、に。しかし、私は整数値をnewOrgの変数 "dna"に代入するためにこれらのバイナリ値を再アセンブルする方法を理解していないので、個々の生物に割り当てられた整数値をチェックし、 「orgs」に割り当てられています。
あなたが上から推測しているように、この深いレベルの詳細なメモリ管理はあまりよくありませんので、あなたの助けを非常に感謝します。
は、このコードは少し奇妙に見えるそんなに
9件、0件が受け入れられました。人々があなたの質問に答え続けるようにするには、いくつかの回答を受け入れてください。 –
プログラミングのスキルは限られていますが、最善を尽くすため、いくつかの質問にお答えします。おそらくフィルタ中間レベルの質問を見つける方法はありますか? –
Cicadaは、お客様の質問に対する回答が良好であることを(本ウェブサイトの受諾方法を介して)お客様に確認するよう依頼しました。 – mitch