.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "auto_examples/swissmetro/plot_b22multiple_models_spec.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code. .. rst-class:: sphx-glr-example-title .. _sphx_glr_auto_examples_swissmetro_plot_b22multiple_models_spec.py: .. _plot_b22multiple_models_spec: Specification of a catalog of models ==================================== Specification of the Catalog of expressions for the assisted specification algorithm. Note that this script does not perform any estimation. It is imported by other scripts: :ref:`plot_b22multiple_models`, :ref:`plot_b22process_pareto`. Michel Bierlaire, EPFL Sat Jun 28 2025, 12:32:54 .. GENERATED FROM PYTHON SOURCE LINES 14-20 .. code-block:: Python from biogeme.biogeme import BIOGEME from biogeme.catalog import Catalog, segmentation_catalogs from biogeme.expressions import Beta, logzero from biogeme.models import boxcox, loglogit, piecewise_formula .. GENERATED FROM PYTHON SOURCE LINES 21-22 See the data processing script: :ref:`swissmetro_data`. .. GENERATED FROM PYTHON SOURCE LINES 22-41 .. code-block:: Python from swissmetro_data import ( CAR_AV_SP, CAR_CO_SCALED, CAR_TT_SCALED, CHOICE, GA, LUGGAGE, MALE, SM_AV, SM_COST_SCALED, SM_HE, SM_TT_SCALED, TRAIN_AV_SP, TRAIN_COST_SCALED, TRAIN_HE, TRAIN_TT_SCALED, database, ) .. GENERATED FROM PYTHON SOURCE LINES 42-43 Parameters to be estimated. .. GENERATED FROM PYTHON SOURCE LINES 43-49 .. code-block:: Python asc_car = Beta('asc_car', 0, None, None, 0) asc_train = Beta('asc_train', 0, None, None, 0) b_time = Beta('b_time', 0, None, None, 0) b_cost = Beta('b_cost', 0, None, None, 0) b_headway = Beta('b_headway', 0, None, None, 0) .. GENERATED FROM PYTHON SOURCE LINES 50-51 Define segmentations .. GENERATED FROM PYTHON SOURCE LINES 51-74 .. code-block:: Python gender_segmentation = database.generate_segmentation( variable=MALE, mapping={0: 'female', 1: 'male'} ) ga_segmentation = database.generate_segmentation( variable=GA, mapping={0: 'without_ga', 1: 'with_ga'} ) luggage_segmentation = database.generate_segmentation( variable=LUGGAGE, mapping={0: 'no_lugg', 1: 'one_lugg', 3: 'several_lugg'} ) asc_car_catalog, asc_train_catalog = segmentation_catalogs( generic_name='asc', beta_parameters=[asc_car, asc_train], potential_segmentations=( gender_segmentation, luggage_segmentation, ga_segmentation, ), maximum_number=2, ) .. GENERATED FROM PYTHON SOURCE LINES 75-76 We define a catalog with two different specifications for headway. .. GENERATED FROM PYTHON SOURCE LINES 76-88 .. code-block:: Python train_headway_catalog = Catalog.from_dict( catalog_name='train_headway_catalog', dict_of_expressions={'without_headway': 0, 'with_headway': b_headway * TRAIN_HE}, ) sm_headway_catalog = Catalog.from_dict( catalog_name='sm_headway_catalog', dict_of_expressions={'without_headway': 0, 'with_headway': b_headway * SM_HE}, controlled_by=train_headway_catalog.controlled_by, ) .. GENERATED FROM PYTHON SOURCE LINES 89-90 Parameter for Box-Cox transforms. .. GENERATED FROM PYTHON SOURCE LINES 90-92 .. code-block:: Python ell_tt = Beta('lambda_tt', 1, -10, 10, 0) .. GENERATED FROM PYTHON SOURCE LINES 93-94 Non-linear specification for travel time. .. GENERATED FROM PYTHON SOURCE LINES 94-132 .. code-block:: Python train_tt_catalog = Catalog.from_dict( catalog_name='train_tt_catalog', dict_of_expressions={ 'linear': TRAIN_TT_SCALED, 'log': logzero(TRAIN_TT_SCALED), 'sqrt': TRAIN_TT_SCALED**0.5, 'piecewise_1': piecewise_formula(TRAIN_TT_SCALED, [0, 0.1, None]), 'piecewise_2': piecewise_formula(TRAIN_TT_SCALED, [0, 0.25, None]), 'boxcox': boxcox(TRAIN_TT_SCALED, ell_tt), }, ) sm_tt_catalog = Catalog.from_dict( catalog_name='sm_tt_catalog', dict_of_expressions={ 'linear': SM_TT_SCALED, 'log': logzero(SM_TT_SCALED), 'sqrt': SM_TT_SCALED**0.5, 'piecewise_1': piecewise_formula(SM_TT_SCALED, [0, 0.1, None]), 'piecewise_2': piecewise_formula(SM_TT_SCALED, [0, 0.25, None]), 'boxcox': boxcox(SM_TT_SCALED, ell_tt), }, controlled_by=train_tt_catalog.controlled_by, ) car_tt_catalog = Catalog.from_dict( catalog_name='car_tt_catalog', dict_of_expressions={ 'linear': CAR_TT_SCALED, 'log': logzero(CAR_TT_SCALED), 'sqrt': CAR_TT_SCALED**0.5, 'piecewise_1': piecewise_formula(CAR_TT_SCALED, [0, 0.1, None]), 'piecewise_2': piecewise_formula(CAR_TT_SCALED, [0, 0.25, None]), 'boxcox': boxcox(CAR_TT_SCALED, ell_tt), }, controlled_by=train_tt_catalog.controlled_by, ) .. GENERATED FROM PYTHON SOURCE LINES 133-134 Parameter for Box-Cox transforms. .. GENERATED FROM PYTHON SOURCE LINES 134-136 .. code-block:: Python ell_cost = Beta('lambda_cost', 1, -10, 10, 0) .. GENERATED FROM PYTHON SOURCE LINES 137-138 Nonlinear transformations for travel cost. .. GENERATED FROM PYTHON SOURCE LINES 138-176 .. code-block:: Python train_cost_catalog = Catalog.from_dict( catalog_name='train_cost_catalog', dict_of_expressions={ 'linear': TRAIN_COST_SCALED, 'log': logzero(TRAIN_COST_SCALED), 'sqrt': TRAIN_COST_SCALED**0.5, 'piecewise_1': piecewise_formula(TRAIN_COST_SCALED, [0, 0.1, None]), 'piecewise_2': piecewise_formula(TRAIN_COST_SCALED, [0, 0.25, None]), 'boxcox': boxcox(TRAIN_COST_SCALED, ell_cost), }, ) sm_cost_catalog = Catalog.from_dict( catalog_name='sm_cost_catalog', dict_of_expressions={ 'linear': SM_COST_SCALED, 'log': logzero(SM_COST_SCALED), 'sqrt': SM_COST_SCALED**0.5, 'piecewise_1': piecewise_formula(SM_COST_SCALED, [0, 0.1, None]), 'piecewise_2': piecewise_formula(SM_COST_SCALED, [0, 0.25, None]), 'boxcox': boxcox(SM_COST_SCALED, ell_cost), }, controlled_by=train_cost_catalog.controlled_by, ) car_cost_catalog = Catalog.from_dict( catalog_name='car_cost_catalog', dict_of_expressions={ 'linear': CAR_CO_SCALED, 'log': logzero(CAR_CO_SCALED), 'sqrt': CAR_CO_SCALED**0.5, 'piecewise_1': piecewise_formula(CAR_CO_SCALED, [0, 0.1, None]), 'piecewise_2': piecewise_formula(CAR_CO_SCALED, [0, 0.25, None]), 'boxcox': boxcox(CAR_CO_SCALED, ell_cost), }, controlled_by=train_cost_catalog.controlled_by, ) .. GENERATED FROM PYTHON SOURCE LINES 177-178 Definition of the utility functions .. GENERATED FROM PYTHON SOURCE LINES 178-188 .. code-block:: Python v_train = ( asc_train_catalog + b_time * train_tt_catalog + b_cost * train_cost_catalog + train_headway_catalog ) v_swissmetro = b_time * sm_tt_catalog + b_cost * sm_cost_catalog + sm_headway_catalog v_car = asc_car_catalog + b_time * car_tt_catalog + b_cost * car_cost_catalog .. GENERATED FROM PYTHON SOURCE LINES 189-190 Associate utility functions with the numbering of alternatives .. GENERATED FROM PYTHON SOURCE LINES 190-192 .. code-block:: Python v = {1: v_train, 2: v_swissmetro, 3: v_car} .. GENERATED FROM PYTHON SOURCE LINES 193-194 Associate the availability conditions with the alternatives .. GENERATED FROM PYTHON SOURCE LINES 194-196 .. code-block:: Python av = {1: TRAIN_AV_SP, 2: SM_AV, 3: CAR_AV_SP} .. GENERATED FROM PYTHON SOURCE LINES 197-199 Definition of the model. This is the contribution of each observation to the log likelihood function. .. GENERATED FROM PYTHON SOURCE LINES 199-201 .. code-block:: Python log_probability = loglogit(v, av, CHOICE) .. GENERATED FROM PYTHON SOURCE LINES 202-205 .. code-block:: Python the_biogeme = BIOGEME(database, log_probability) the_biogeme.model_name = 'b22multiple_models' .. GENERATED FROM PYTHON SOURCE LINES 206-207 .. code-block:: Python PARETO_FILE_NAME = 'b22multiple_models.pareto' .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 0.058 seconds) .. _sphx_glr_download_auto_examples_swissmetro_plot_b22multiple_models_spec.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_b22multiple_models_spec.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_b22multiple_models_spec.py ` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: plot_b22multiple_models_spec.zip ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_