func start_worker(worker_id int) {
	logger := log.New(os.Stdout, fmt.Sprintf("WORKER(%d): ", worker_id), log.Ldate|log.Ltime)
	gl_min_cost := tsp_types.GlobalCostType{}
	gl_min_cost.Init(tsp_types.POSITIVE_INF)
	curr_task_id := -1
	runtime.GOMAXPROCS(runtime.NumCPU())
	destination := "127.0.0.1:5000"
	logger.Println("worker: connect to ", destination)
	conn, err := net.Dial("tcp", destination)
	if err != nil {
		logger.Printf("dial error: %v", err)
	}
	curr_task_info := CurrTaskInfo{curr_task_id, gl_min_cost}
	go listen_server(&conn, logger, &curr_task_info)
}