Пример #1
0
    def setup(self, config):
        self.risk_threshold = self.config["tuning_config"]["risk_threshold"]
        self.max_concurrent_trials = self.config["tuning_config"][
            "max_concurrent_trials"]
        self.payoff_empirical_min = self.config["tuning_config"][
            "obj_fnc_params"]["payoff_empirical_min"]
        self.payoff_empirical_max = self.config["tuning_config"][
            "obj_fnc_params"]["payoff_empirical_max"]
        self.min_eval_eps = self.config["tuning_config"]["eval_eps_min"]
        self.max_eval_eps = self.config["tuning_config"]["eval_eps_max"]

        self.lock = threading.Lock()

        self.train_results = queue.Queue()
        self.eval_results = queue.Queue()
        self.java_gateway = None
        self.my_id = self.trial_id
        self.start_time = time.time()
        self.am_stopped = False
        self.cur_max_score = self.payoff_empirical_min
        self.cur_max_train_score = self.payoff_empirical_min

        default_gateway = JavaGateway()
        while self.java_gateway is None:
            for i in range(self.max_concurrent_trials):
                try:
                    self.my_port = 25334 + 2 * i
                    java_port = self.my_port - 1

                    # if addJavaPort fails, it means it is being used by some other trial running
                    # in a different process
                    if not default_gateway.addJavaPort(java_port):
                        if i == self.max_concurrent_trials - 1:
                            time.sleep(0.5)
                        continue

                    gateway_params = GatewayParameters(
                        port=java_port, enable_memory_management=False)
                    callback_params = CallbackServerParameters(
                        port=self.my_port)
                    self.java_gateway = JavaGateway(
                        gateway_parameters=gateway_params,
                        callback_server_parameters=callback_params)
                    break
                except:
                    default_gateway.removeJavaPort(self.my_port - 1)
                    continue

        default_gateway.close(keep_callback_server=True,
                              close_callback_server_connections=False)

        encoded_trial_params = TuningParser.encode_trial_params(self.config)
        self.results_receiver = _TrialResultsReceiver(self)
        self.java_gateway.entry_point.runTrial(self.trial_id,
                                               encoded_trial_params,
                                               self.results_receiver)

        self.additional_setup()