本文介绍了为什么我的程序打印相同的值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 我编写了一个程序,用于在5维中打印De Jong 1函数的不同值,但是当我编译它时,程序返回相同的值。首先,我生成一个二元向量,然后将其分为5个代表xi的向量。我使用函数BinToDec计算每个二进制向量的十进制值,然后我用函数nr_interval表示区间[-5.12,5.12]中的值。 我尝试过:I wrote a program to print diffrent values for De Jong 1 function in 5 dimension but when I compile it the program return the same value. First I generate a binary vector then I devide it in 5 vectors which represents xi. I calculate the decimal value for each binary vector with the function BinToDec then I represent the value in the interval [-5.12,5.12] with the funct nr_interval.What I have tried:#include <bits/stdc++.h>using namespace std;#define CROSSOVER_RATE 0.3#define MUTATION_RATE 0.01#define POP_SIZE 50#define CHROMO_LENGTH 150#define GENE_LENGTH 30int random_num(int start, int end){ int range = (end-start)+1; int random_int = start+(rand()%range); return random_int;}string GetRandomBits(int length){ srand(time(NULL)); string bits; for (int i=0; i<length; i++) { if (random_num(0,1) == 1) bits += "1"; else bits += "0"; } return bits;}int BinToDec(string bits){ int val = 0; int p=1; for (int i = bits.length(); i > 0; i--) { if (bits.at(i-1) == '1') {val += p;} p *= 2; } return val;}double nr_interval(int valoare, double a, double b){ double result; result=0.0; result=a+valoare*((b-a)/(pow(2,30)-1)); return result;}double De_Jong(string bits){ double x=0.0; for(size_t i=0; i<sizeof(bits); i=i+GENE_LENGTH) { x = x + nr_interval(BinToDec(bits.substr(0,i+GENE_LENGTH)),-5.12,5.12)* nr_interval(BinToDec(bits.substr(0,i+GENE_LENGTH)),-5.12,5.12); } return x;}int main(){ for(int x=1; x<=POP_SIZE;x++) { cout<<De_Jong(GetRandomBits(CHROMO_LENGTH)); cout<<endl; } //valoare=BinToDec(GetRandomBits(l)); //cout<<valoare; return 0;}推荐答案{val += p;}因为pp没有改变。 提示:输出每个函数的结果。 为什么不这样; because pp isnt changed.Tip: make some output of the result of every function.why not this way;for(size_t i=0; i<sizeof(bits); i=i+GENE_LENGTH){ double nr = nr_interval(BinToDec(bits.substr(0,i+GENE_LENGTH)),-5.12,5.12); x = x + nr*nr;} 这篇关于为什么我的程序打印相同的值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!
09-14 09:51