int main() { srand(time(NULL)); data dat; readfile(dat, "../../data/ks_19_0"); int items = dat[0].value; population *pop, popalpha; initialize_population(popalpha, items); pop = &popalpha; //print(*pop); bat best = get_best(*pop); int iterations = 200; while(iterations > 0){ new_solutions(*pop,dat); calc_fitness(*pop, dat); if(getrand()> 0.5){ best = get_best(*pop); move_bat(best, rand()%5, dat); // amplitude is 2 } if(fitness(best, dat) > fitness((*pop).best, dat)) (*pop).best = best; iterations--; } print(*pop); }
void play(void) { /*points[CAPTURE] = 100; points[DUMP] = 40; points[EXPLORE] = 30; points[MINE] = 40;*/ act = ACT_EXPLORE; //main game loop while(true) { switch(act) { case ACT_EXPLORE: mined_balls = 0; explore(); act = 1; break; case ACT_PLAY: //circle finished to 20s left, dump balls if too many. vps_update(); if(vps_get_owner(bot.territory)!=team) { //if not ours yet capture(bot.territory); //capture it } else if(vps_get_balls(bot.territory)>0) { //if it is ours and there are balls mine(bot.territory); //get the balls } else if(mined_balls>=15){ act = 2; } else { //move to different territory NOT containg opponent go_territory(get_best(), MOVE_SPEED); } break; case ACT_DUMP: if(team==TEAM_BLUE) { if(bot.territory>=3) score(bot.territory); else if(bot.territory==2) score(3); else score(5); } else { if(bot.territory<3) score(bot.territory); else if(bot.territory==3) score(2); else score(0); } //TODO emergency ball dump before end //dump balls anyway even if we think we don't have any? act = 1; break; } } }
void basic_optimizer::optimize( query_graph& qgraph) { LOG_METHOD_TRACE; rule_based_optimizer::optimize(qgraph); // m_tm->print(); enumerator *e = new enumerator( m_dd, m_tm ); std::vector<op_node_ptr> plans = e->enumerate(qgraph); qgraph.set_root(get_best(plans)); if (plans.size() > 1 ) qgraph.set_swapable(); }
void Tree::print() const { int threshold = root[active]->get_visits()/30; std::string sp = " "; std::cerr << "Active tree: " << active << " " << get_size() <<" nodes.\n"; print(root[active], threshold, 0); Node *best = get_best(); std::cerr << "#Expected: " << best->get_value(1) << ", visits " << best->get_visits() << " PV:\n"; bool side = !goban->get_side(); for (Node *n = root[active]->get_best_child(); n; n = n->get_best_child()) { side ? std::cerr << "B" : std::cerr << "W"; n->print(goban->get_size()); side = !side; } std::cerr << "\n"; }
int memcache_get (struct connection *c, const char *old_key, int old_key_len) { INIT; if (verbosity > 1) { fprintf (stderr, "memcache_get: key='%s', key_len=%d\n", old_key, old_key_len); } char *key; int key_len; eat_at (old_key, old_key_len, &key, &key_len); int mode = 0, st = 0; if (key_len >= 5 && !strncmp (key, "hints", 5)) { mode = 1; st = 5; } #ifdef TYPES if (key_len >= 5 && !strncmp (key, "types", 5)) { mode = 2; st = 5; } if (key_len >= 11 && !strncmp (key, "hints_debug", 11)) { mode = 3; st = 11; } #endif if (mode) { if (key[st] != '(' || key[key_len - 1] != ')') { RETURN(get, 0); } int len = key_len - st - 2; memcpy (buf, key + st + 1, sizeof (char) * len); buf[len] = 0; if (verbosity >= 2) { fprintf (stderr, "run get_hints (%s, %d)\n", buf, mode); } get_hints (buf, mode, MAX_VALUE_LEN); return_one_key (c, old_key, buf, strlen (buf)); if (verbosity > 0) { if (mytime() + cmd_time > 0.005) { fprintf (stderr, "Warning!!! Search query (%s) was %lf seconds.\n", key, mytime() + cmd_time); } } RETURN(get, 0); } if (key_len >= 10 && !strncmp (key, "suggestion", 10)) { if (key[10] != '(' || key[key_len - 1] != ')') { RETURN(get, 0); } int len = key_len - 12; memcpy (buf, key + 11, sizeof (char) * len); buf[len] = 0; if (verbosity >= 2) { fprintf (stderr, "run get_suggestion (%s)\n", buf); } get_suggestion (buf, MAX_VALUE_LEN); return_one_key (c, old_key, buf, strlen (buf)); if (verbosity > 0) { if (mytime() + cmd_time > 0.005) { fprintf (stderr, "Warning!!! Search query (%s) was %lf seconds.\n", key, mytime() + cmd_time); } } RETURN(get, 0); } if (key_len >= 5 && !strncmp (key, "stats", 5)) { int len = isearch_prepare_stats (); int len2 = prepare_stats (c, stats_buff + len, STATS_BUFF_SIZE - len); return_one_key (c, old_key, stats_buff, len + len2 - 1); return 0; } if (key_len >= 3 && !strncmp (key, "top", 3)) { int cnt; if (sscanf (key, "top%d", &cnt) == 1) { get_top (buf, cnt, MAX_VALUE_LEN); return_one_key (c, old_key, buf, strlen (buf)); } RETURN(get, 0); } if (key_len >= 4 && !strncmp (key, "best", 4)) { int cnt; if (sscanf (key, "best%d", &cnt) == 1) { get_best (buf, cnt, MAX_VALUE_LEN); return_one_key (c, old_key, buf, strlen (buf)); } RETURN(get, 0); } if (key_len >= 10 && !strncmp (key, "black_list", 10)) { if (key_len >= 16 && !strncmp (key, "black_list_force", 16)) { black_list_force(); } else { char *s = black_list_get(); int len = strlen (s); return_one_key (c, old_key, s, len); } RETURN(get, 0); } RETURN(get, 0); }
int main(int argc, const char **argv) { /* Check uid */ if (getuid() != 0) { fprintf(stderr,"Swifer must be run as root.\n"); return 1; } /* Check config file for interface and dhcp */ FILE *cfg; if ( (cfg=fopen(config,"r")) ) { char *line = calloc(MAX_LINE+1,sizeof(char)); char *val = calloc(MAX_LINE+1,sizeof(char)); while (fgets(line,MAX_LINE,cfg) != NULL) { if (line[0] == '#') continue; if (sscanf(line,"INTERFACE = %s",val)) strncpy(ifname,val,IFNAMSIZ); else if (sscanf(line,"DHCP = %s",val)) strncpy(dhcp,val,DHCPLEN); else if (sscanf(line,"PRE_UP = %s",val)) hook_preup = strdup(val); else if (sscanf(line,"POST_UP = %s",val)) hook_postup = strdup(val); else if (strncmp(line,"[NETWORKS]",10)==0) break; } free(line); free(val); fclose(cfg); } /* Get basic wifi info */ we_ver = iw_get_kernel_we_version(); skfd = iw_sockets_open(); iw_get_basic_config(skfd,ifname,&cur); /* Bring up interface (eg "ip link set IFACE up") */ struct ifreq req; int err; strncpy(req.ifr_name,ifname,IFNAMSIZ); if ( (err=ioctl(skfd,SIOCGIFFLAGS,&req)) ){ int loop = 0; while ( (err=ioctl(skfd,SIOCGIFFLAGS,&req)) ) { usleep(100000); if (loop++ > 50) break; } if (err) { close(skfd); return 2; } } req.ifr_flags |= IFF_UP; if (ioctl(skfd,SIOCSIFFLAGS,&req)) { close(skfd); return 3; } /* Processes command line arguments */ int i; for (i = 1; i < argc; i++) { if (strncmp(argv[i],"ad",2)==0) mode |= MODE_ADD; else if (strncmp(argv[i],"au",2)==0) mode |= MODE_AUTO; else if (strncmp(argv[i],"hi",2)==0) mode |= MODE_HIDDEN; else if (strncmp(argv[i],"an",2)==0) mode |= (MODE_ANY | MODE_AUTO); else if (strncmp(argv[i],"re",2)==0) mode |= (MODE_RECONNECT | MODE_AUTO); else if (strncmp(argv[i],"ve",2)==0) mode |= MODE_VERBOSE; else if (strncmp(argv[i],"wa",2)==0) mode |= MODE_WAIT; else if (strncmp(argv[i],"de",2)==0) { if (argc > i+1) remove_network(argv[i+1]); } else fprintf(stderr,"[%s] Ignoring unknown parameter: %s\n", argv[0],argv[i]); } if ( (mode & MODE_VERBOSE) && (mode & MODE_AUTO) ) mode &= ~MODE_VERBOSE; /* Scan and select network */ iw_scan(skfd,ifname,we_ver,&context); wireless_scan *ws; if (mode & MODE_AUTO) { if (mode && MODE_WAIT) { int loops; /* keep trying for up to 5 minutes */ for (loops = 0; loops < 30 && !(ws=get_best()); ++loops) sleep(TIMEOUT); } else ws = get_best(); } else ws = show_menu(); const char *arg[4]; if (ws) { /* Stop any current processes then connect to "ws" */ arg[0] = killall; arg[1] = dhcp; arg[2] = NULL; if (fork()==0) { fclose(stdout); fclose(stderr); execvp(arg[0],(char * const *) arg); } arg[1] = wpa_sup; if (fork()==0) { fclose(stdout); fclose(stderr); execvp(arg[0],(char * const *) arg); } sleep(1); if ( (mode & MODE_ADD) && is_known(ws) ) mode &= ~MODE_ADD; if (ws->b.key_flags == 2048) mode |= MODE_SECURE; mode_t pre = umask(S_IWGRP|S_IWOTH|S_IRGRP|S_IROTH); ws_connect(ws); umask(pre); } else if ( !(mode & MODE_RECONNECT) ) { fprintf(stderr,"[swifer] no suitable networks found.\n"); return 5; } /* Keep alive to reconnect? */ iw_sockets_close(skfd); if (mode & MODE_RECONNECT) { if (fork() == 0) { setsid(); int level = THRESHOLD + 1, ret; char scanline[256]; snprintf(scanline,255,"%%*[^\n]\n%%*[^\n]\n%s: %%*d %%d.",ifname); FILE *procw; while (level > THRESHOLD) { sleep(TIMEOUT); procw = fopen(PROC_NET_WIRELESS,"r"); ret = fscanf(procw,scanline,&level); fclose(procw); if (ret != 1) level = 0; } arg[0] = argv[0]; arg[1] = re; arg[2] = an; arg[3] = NULL; if ( !(mode & MODE_ANY)) arg[2] = NULL; execvp(arg[0],(char * const *) arg); } } if (hook_preup) free(hook_preup); if (hook_postup) free(hook_postup); return 0; }