コード例 #1
0
ファイル: analyze.py プロジェクト: Jackustc/probcoll
 def _itr_load_testing_samples(self, itr):
     fname = os.path.join(self._itr_dir(itr),
                          'testing_samples_itr_{0}.npz'.format(itr))
     if os.path.exists(fname):
         return Sample.load(fname)
     elif not os.path.exists(self._itr_dir(itr)):
         raise Exception()
     else:
         return None
コード例 #2
0
ファイル: analyze.py プロジェクト: Jackustc/probcoll
    def _load_samples(self):
        samples_itrs = []

        itr = 0
        while True:
            try:
                samples_itrs.append(self._itr_load_samples(itr))
                itr += 1
            except:
                break

        self._logger.info('Loaded {0} iterations of samples'.format(
            len(samples_itrs)))

        ### load initial dataset
        init_data_folder = params['probcoll'].get('init_data', None)
        if init_data_folder is not None:
            if itr == 0:
                samples_itrs.append([])
            num_init_samples = 0

            fnames = [
                os.path.join(init_data_folder, fname)
                for fname in os.listdir(init_data_folder)
            ]
            for fname in fnames:
                try:
                    samples = Sample.load(fname)
                except:
                    continue

                self._logger.debug('Loaded samples from {0}'.format(fname))
                samples_itrs[0] += samples
                num_init_samples += len(samples)

            self._logger.info('Loaded initial dataset of {0} samples'.format(
                num_init_samples))

        return samples_itrs
コード例 #3
0
def plot_final_policy_combined(exp_groups,
                               des_mps,
                               des_speed,
                               min_speed,
                               ax=None,
                               fs=20.,
                               save_path=None):
    dt = 0.5

    if ax is None:
        f, ax = plt.subplots(1, 1, figsize=(5, 3.5))
    else:
        f = ax.get_figure()

    exp_groups.insert(0, [{
        'folder': os.path.join(EXP_FOLDER, 'random'),
        'label': 'Random policy',
        'color': cm.Greys(1.0)
    }])

    for exp_group_num, exp_group in enumerate(exp_groups):
        distance_travelled = []
        for exp in exp_group:
            samples_folder = os.path.join(exp['folder'],
                                          'prediction/final_policy/')
            samples_fnames = [
                os.path.join(samples_folder, fname)
                for fname in os.listdir(samples_folder) if fname[-4:] == '.npz'
            ]
            assert (len(samples_fnames) == 1)
            samples_fname = samples_fnames[0]

            samples = Sample.load(samples_fname)
            for sample in samples:
                distance = dt * (des_mps / des_speed) * (sample.get_U()[:, 1] -
                                                         min_speed).sum()
                distance_travelled.append(distance)

        width = 0.8 / len(exp_groups)
        ax.bar([exp_group_num * width], [np.mean(distance_travelled)],
               yerr=[np.std(distance_travelled)],
               width=width * 0.8,
               error_kw=dict(lw=4, capsize=5, capthick=2),
               color=exp_group[0]['color'],
               ecolor=cm.Greys(0.5),
               label=exp_group[0]['label'])

    # for exp_group in exp_groups:
    #     ax.plot([], [], lw=5., label=exp_group[0]['label'], color=exp_group[0]['color'])
    lgd = ax.legend(loc='upper center',
                    fontsize=fs * 0.8,
                    bbox_to_anchor=(1.35, 0.7))

    ax.set_xlim((-0.05, width * len(exp_groups)))
    ax.set_ylim((-0.3, ax.get_ylim()[1]))
    ax.set_ylabel(r'Distance travelled (m)', fontsize=fs)

    for tick in ax.xaxis.get_major_ticks() + ax.xaxis.get_minor_ticks():
        tick.label1.set_visible(False)
    for tick in ax.yaxis.get_major_ticks():
        tick.label.set_fontsize(fs)

    if save_path is not None:
        f.savefig(save_path, bbox_extra_artists=(lgd, ), bbox_inches='tight')
コード例 #4
0
def plot_final_policy(exp_groups,
                      des_mps,
                      des_speed,
                      min_speed,
                      ax=None,
                      fs=20.,
                      save_path=None):
    dt = 0.5

    if ax is None:
        f, ax = plt.subplots(1, 1, figsize=(10, 3.5))
    else:
        f = ax.get_figure()

    exp_groups.insert(0, [{
        'folder': os.path.join(EXP_FOLDER, 'random'),
        'label': 'Random policy',
        'color': cm.Greys(0.5)
    }])

    for exp_num, exp in enumerate(flatten_list(exp_groups)):
        samples_folder = os.path.join(exp['folder'],
                                      'prediction/final_policy/')
        samples_fnames = [
            os.path.join(samples_folder, fname)
            for fname in os.listdir(samples_folder) if fname[-4:] == '.npz'
        ]
        assert (len(samples_fnames) == 1)
        samples_fname = samples_fnames[0]

        samples = Sample.load(samples_fname)
        distance_travelled = []
        for sample in samples:
            distance = dt * (des_mps / des_speed) * (sample.get_U()[:, 1] -
                                                     min_speed).sum()
            distance_travelled.append(distance)

        # ax.plot(range(len(distance_travelled)), distance_travelled,
        #         linestyle='',
        #         marker=exp['marker'],
        #         color=exp['color'],
        #         mew=exp['mew'])

        ax.bar(np.arange(len(distance_travelled)) + 0.15 * exp_num + 0.1,
               distance_travelled,
               width=0.15,
               color=exp['color'])

    for exp_group in exp_groups:
        ax.plot([], [],
                lw=5.,
                label=exp_group[0]['label'],
                color=exp_group[0]['color'])
    lgd = ax.legend(loc='upper right', fontsize=fs * 0.8)

    ax.set_xlabel(r'Starting position', fontsize=fs)
    ax.set_ylabel(r'Distance travelled (m)', fontsize=fs)

    N = len(distance_travelled)
    ax.set_xticks(np.arange(N) + 0.5)
    ax.set_xticklabels([str(x) for x in range(N)])
    # Hide major tick labels and customize minor tick labels
    ax.xaxis.set_minor_formatter(ticker.NullFormatter())
    ax.xaxis.set_major_locator(ticker.FixedLocator(np.arange(N) + 0.5))
    ax.xaxis.set_major_formatter(
        ticker.FixedFormatter([r'{0}'.format(str(x)) for x in range(N)]))
    for tick in ax.xaxis.get_major_ticks() + ax.yaxis.get_major_ticks():
        tick.label.set_fontsize(fs)

    if save_path is not None:
        f.savefig(save_path, bbox_extra_artists=(lgd, ), bbox_inches='tight')
コード例 #5
0
ファイル: analyze.py プロジェクト: Jackustc/probcoll
 def _itr_load_samples(self, itr):
     fname = os.path.join(self._itr_dir(itr),
                          'samples_itr_{0}.npz'.format(itr))
     return Sample.load(fname)