Example #1
0
int main(int argc, char **argv)
{
    int i;

    srand((unsigned)time(NULL));

    initialize();
    print_particles(0);

    for(i=0; i<ITERA_CNT; i++){
        selection();

        crossover();
        mutation();

        printf("\n(%3d itera) ", i);

        float mean = cal_mean();
        printf(" || mean: %10.10lf;\t", mean);

        float var = cal_var();
        printf(" || var: %10.10lf;", var);
        if ( var < 0.0000000001 ) {
          print_particles((POPULATION_CNT-1));
          break;
        }
    }
    printf("\n");
    return 0;
}
Example #2
0
void task_perform(int sock, std::vector<float> vec, int task,int id) {
    //perform task and send result back
    float min,max,result = 0;
    sleep(1);
    switch (task) {
        case MEAN: result = cal_mean(vec);
                   break;
        case RANGE: cal_range(vec,&min,&max);
                   break;
        default : std::cout<<"Unknown task\n";
    }

    //Now we have result 
    //send data back to server
    //format [ task_id opcode Number] [Number_mean Mean]
    int task_id = id;
    int send_ar[] = { task_id, task, 2 };
    //float send_ar2[] = { (float) vec.size(), result };
    float send_ar2[2]; 

    if(task == MEAN) {
        send_ar2[0] = (float) vec.size();
        send_ar2[1] = result;
    } else if (task == RANGE) {
        send_ar2[0] = min;
        send_ar2[1] = max;
    }
    std::cout<<"\nSending array " << send_ar[0] <<" "<<send_ar[1] <<" "
            <<send_ar[2] <<" size is "<<sizeof(send_ar)<<"\n";
    std::cout<<"Sending result "<<send_ar2[0]<<" "<<send_ar2[1]<<"\n";
    char buffer[1024];
    memcpy(buffer,send_ar,sizeof(send_ar));
    memcpy(buffer+sizeof(send_ar),send_ar2,sizeof(send_ar2));

    int wr = send(sock, (void *) buffer, sizeof(send_ar)+sizeof(send_ar2) , 0);
    std::cout<<"Bytes sent is "<<wr<< "\n";
}