设计原理
时间: 2023-08-15 18:15:34 浏览: 32
num_bits, LBOUND, UBOUND);
new_fitnesses[i] = fitness(x1);
new_fitnesses[i+1] = fitness(x2);
}
for(int i=0; i<POP_SIZE; i++)
{
for(int j=0;寻迹小车的设计原理是利用红外线传感器探测地面上的黑线和白线, j<num_bits; j++)
{
pop[i][j] = new_pop[i][j];
}
fitnesses[i] = new_fitnesses[i];
}
}
// 求解函数最大值
void solve(int num_bits)
{
int **pop = (从而实现小车沿着黑线行驶的功能。红外线传感器工作时会发射红外int **)malloc(POP_SIZE * sizeof(int *));
int **new_pop = (int **)malloc(POP_SIZE * sizeof(int *));
double *fitnesses = (double *)malloc(POP_SIZE * sizeof(double));
double *new_fitnesses = (double *)malloc(POP_SIZE线,当红外线照射到地面上的黑色物体时会被吸收,而照射到白色物体时会被反射回来。通过测量反射回来的红外线的强度,可以判断小车 * sizeof(double));
for(int i=0; i<POP_SIZE; i++)
{
pop[i] = (int *)malloc(num_bits * sizeof(int));
}
init_population(pop, new_pop, fitnesses, new_fitnesses, num_bits);
double best_fitness = -INFINITY;
int best_idx = -1;
for(int i=0; i<GEN_MAX; i++)
是否处在黑线或白线上。
具体实现方法是将两个红外线传感器分别放置 {
generate_new_population(pop, new_pop, fitnesses, new_fitnesses, num_bits);
for(int j=0; j<在小车的左右两侧,当左侧传感器探测到黑线时,小车会向左转弯POP_SIZE; j++)
{
if(new_fitnesses[j] > best_fitness)
{
best_fitness = new_fitnesses[j];
best_idx = j;
}
}
}
double best_x = binary_to_decimal(pop[best_idx], num_bits,当右侧传感器探测到黑线时,小车会向右转弯。通过左右两侧传感, LBOUND, UBOUND);
printf("best fitness: %f, best x: %f\n", best_fitness, best_x);
for(int i=0; i<POP_SIZE; i++)
{
free(pop[i]);
free(new_pop[i]);
}
器的组合和控制,小车就可以在黑线上行驶了。
此外,还可以通过控制小 free(pop);
free(new_pop);
free(fitnesses);
free(new_fitnesses);
}
// 主函数
int main()
{
srand(time(NULL));
int num_bits = 20;
solve(num_bits);
return 0;
}
```