Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update on User Preferences #221

Closed
wants to merge 4 commits into from
Closed

Conversation

ue71603
Copy link
Contributor

@ue71603 ue71603 commented Jul 25, 2022

USER PREFERENCE added with a lot of possible content. The attached paper is an introduction (not 100% aligned between PR and documentation yet. As I think this needs discussion, We will adapt pull request and specification at the same time.
Includes work done by @markus-meier-sbb and @herlitze
2144934064_4af1fe6093104c4fbe434b74bba5cfb0-250722-1701-3540.pdf

@ue71603
Copy link
Contributor Author

ue71603 commented Aug 2, 2022

Do we need some hasHeavyLuggage boolean or something like that?

@ue71603 ue71603 requested a review from Aurige August 2, 2022 13:43
@JonaVBB
Copy link

JonaVBB commented Aug 3, 2022

Do we need some hasHeavyLuggage boolean or something like that?

Not sure. Would only make sense - from my point of view - if mist of ther requested systems would support such a request. Which then, refers to adequate time table data (vehicles and stations) to support specific searches.
Currently we only sipport wheelchairs, rollators etc. But maybe HeavyLuggage has the same implications than a rollator?

@@ -147,6 +148,11 @@
<xs:documentation>Whether the result should include intermediate stops (between the passenger's board and alight stops).</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="IncludeSecondBestOptions" type="xs:boolean" default="false" minOccurs="0">
<xs:annotation>
<xs:documentation>Whether second best options should be presented as well. Mainly important for dominated journeys or in the case of ContinuousLegs the second best route.</xs:documentation>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Second best is a vague term. If you want pluriformity in the search results, I would rather go for something specific like IncludeAlternativeOptions.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Malte: How far dominated?
Markus: Not only time. Price etc., but playing with strategy.
Stefan: So give me two is not good.
Malte: Even one that is worse in everything. Current algorithm throw out options. Truly dominated options, not throwing it out, would be a problem.
Alexandre (Cityways): I worked on a PhD thesis. Distance defined, the results are interesting. Matchin user expectence. (chapter 5, https://tel.archives-ouvertes.fr/tel-01848737 ). A random display of trips that maximize diversity.
Malte: Not losing to much quality is important.
Matthias: More diversity is the idea
Malte: Clearer annotation needed.
==> Annotation needs be better.
==> IncludeAlternativeOptions will be renamed.

@@ -878,6 +895,172 @@
<xs:element name="TripFare" type="TripFareResultStructure" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="UserPreferencesStructure">
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I miss a safety related parameter here. OpenTripPlanner for example has bicycle safety.

Copy link
Contributor Author

@ue71603 ue71603 Oct 4, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Stefan: safe vs fast. safety was more of not getting robbed below.
Markus: Extrasafe is not really only about that.
Stefan: What do you meand for safe? In OTP it is traffic safety.
Markus: I meant accidents and crime.
Stefan: I suggest to split it into
Safety:

  • traffic safety. TrafficSafe
  • feeling safe WellLitAndFrequented xx

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OJP/OJP_Trips.xsd Outdated Show resolved Hide resolved
OJP/OJP_Trips.xsd Outdated Show resolved Hide resolved
@skinkie
Copy link
Contributor

skinkie commented Aug 18, 2022

As from the meeting I think I would like to see an addition in OptimisationMethodEnumeration stating userPreferences.

@ue71603
Copy link
Contributor Author

ue71603 commented Aug 18, 2022

User Preference discussion 18.8.2022

• Malte
• Markus
• André
• David
• Thomas
• Stefan
• Gisela
• Matthias

Introduction by Markus
Update on User Preferences by ue71603 · Pull Request #221 · VDVde/OJP (github.com)
• Malte: Metacriteria are ok. scoring of trip options is depending of the exceptation the hard part to discuss.
• Malte: Rating on the client side may be too late.
• Easy options in the back end
• User preferences needed for scoring

• Stefan: How to deal with users
• Malte: User profiles would be on the cllient side. We do the mapping on the client side. Multi-tab-approach used often (one for PT, one for sharing).
• Malte: We have abortion criteria for performance reasons
• Stefan: How much do I have to relax the algorithm to meet the options. Some are defined as negative and some as positive. Different implementations give different results
• Markus: that ist he case today, too. Wit
• Stefan: Where would the preferences influence the score? Backend or client?
• Markus: That is implementation stuff.
• Stefan: OptimisationMethod userPreferences. Abortion criteria is more criteria and not time as usual
• Malte: PT and IV are often separated. Currently only time is exchanged. For Stefan's approach need to be widened.
• Malte: Reculaculation with relaxation is possible, but need to be strictly defined. It needs to be said, what is relaxed.
• André fastest, most scienic, most accessible. Two searches done.

Decisions: All user preferences need to be mappable to low – level functions, if needed add additonal low-level criteria.
Decision: We add the User Preferences and it works
Decision: The explicitely set low level options superseed the user preferences.

AccessFeature
Essential, Prefered to be discussed.
Malte and Stefan did not like this.
Stefan, if this results in a score, what happens. Did I meet the criteria?

Decision: Multiple searches for accessibility.
AccessFacilities
Discuss the influence AccessFacilities (from SIRI) in the OJP query and reply · Issue #194 · VDVde/OJP (github.com)

Decision: Combined request and the several requests with single optimisation.

<xs:documentation>User's preference for an extra high reliability (low probabilty of delays, cancellations, etc.).</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ExtraAccessible" type="xs:boolean" default="false" minOccurs="0" maxOccurs="1">
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

May need to be specialised depending on the disabilities (visual, hearing, wheelchair, pushchair or heavy luggages...)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Stefan: I don't think we need to have it more than the other accessibility description.
Markus: More emphasis.
Malte: All bases are already covered (like NoStairs).
Stefan: Probably another OptimisationMethod "Accessible"
Markus: Not changing too much, extra time for changes
Malte: One request with multiple optimisation methods. This makes things more vague and will add more problems on this. We should try to minimize there.
Markus: I think next step would be to write the chapter. It should be more hints as the trip planner knowing more.

OJP/OJP_Trips.xsd Show resolved Hide resolved
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="CyclingProfile" default="normalfast" minOccurs="0" maxOccurs="1">
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why having a "normal" prefix, and not just Fast/Green/Comfortable ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will adapt

@ue71603
Copy link
Contributor Author

ue71603 commented Oct 4, 2022

Malte: How do we get to a similar understanding to these user preferences? Same interpretations from distributed systems.?
Markus: Simply adding this to trip request. All should get the user preferences and try to do the best job. It works that way today. Also currently they work differently.
Malte: It should be a meta parameter set. Would it still send the meta set.
Markus: It should do both.
Matthias: We could and perhaps should a chapter on user preferences and interpretations to the standard.
André: There will also be a translation from high-level and low-level preferences. Will we need to implement the higher level, when it can be expressed the other way.
Malte: More vague terms should be avoided. The goal was to have simple way for a client to transmit some user settings.
==> chapter to be written once it is clear, what is defined.

<xs:sequence>
<xs:element name="LowPrice" default="average" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>User's preference that the trip has a low price.</xs:documentation>
Copy link

@markus-meier-sbb markus-meier-sbb Oct 8, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[This extra text could be added to give more hints about the meaning and how it should be implemented]
If important, the trip planner should prioritize options (modes, lines, operators) known for low price, such as bus or coach.
If unimportant, also consider options which are usually more epensive, such as taxi or ridehailing, and also for longer distances.
E.g., take a taxi to the central station instead of a PT ride with transfers.

<xs:element name="Speed" default="average" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>User's preference about the speed/short duration of the trip.</xs:documentation>
</xs:annotation>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[This extra text could be added to give more hints about the meaning and how it should be implemented]
If important, duration should be the top criterion and only the fastest connections should be considered.
If unimportant, duration should have little or no influence on the trip planning.

</xs:simpleType>
</xs:element>
<xs:element name="Comfort" default="average" minOccurs="0" maxOccurs="1">
<xs:annotation>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[This extra text could be added to give more hints about the meaning and how it should be implemented]
If premium, prioritize few and short changes, and modes known for convenience, especially taxi.
Avoid self-powered modes and urban transit.
If basic, allow for more transfers and allow all modes.

<xs:element name="Sportiness" default="average" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>User's endurance and fitness for sportive, self-powered trip legs (walk, cycle, etc.).</xs:documentation>
</xs:annotation>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[This extra text could be added to give more hints about the meaning and how it should be implemented]
If high, allow for 200 % longer legs with self-powered modes and assume 50 % faster speed on those modes.
If low, restrict to 50 % shorter walking legs, assume 50 % lower walking speed and exclude
other self-powered/micromobility modes.

</xs:simpleType>
</xs:element>
<xs:element name="EnvironmentalSafety" default="average" minOccurs="0" maxOccurs="1">
<xs:annotation>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[This extra text could be added to give more hints about the meaning and how it should be implemented]
If high, favour "green" modes/lines such as bike sharing and (electric) trains, avoid or restrict modes/lines
known for higher CO2 emissions such as (conventional) taxi, ridehailing or coach.
If low, basically ignore (same as average).
(Probably better to turn it into a true/false option)

</xs:simpleType>
</xs:element>
<xs:element name="WeatherProtection" type="xs:boolean" default="false" minOccurs="0" maxOccurs="1">
<xs:annotation>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[This extra text could be added to give more hints about the meaning and how it should be implemented]
If true, micromobility should be excluded and walks for the first/last leg avoided,
e.g. use a bus or taxi even for a short distance.

<xs:element name="ExtraSafe" type="xs:boolean" default="false" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>User's preference for an extra high level of safety.</xs:documentation>
</xs:annotation>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[This extra text could be added to give more hints about the meaning and how it should be implemented]
If true, certain modes, lines or zones/districts known for lower safety, i.e. higher risk of accidents and crime,
may be avoided, others may be preferred. This may depend on the actual, local or time of day situation.
E.g. bike or scooter may be considered unsafe in some cities/districts while safe in others.

<xs:element name="ExtraReliable" type="xs:boolean" default="false" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>User's preference for an extra high reliability (low probabilty of delays, cancellations, etc.).</xs:documentation>
</xs:annotation>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[This extra text could be added to give more hints about the meaning and how it should be implemented]
If true, modes known for their (un)reliability may be avoided/preferred, and extra time added for transfers.
This may depend on the actual, local or time of day situation,
based on punctuality statics, traffic jam statistics or rush hours.
E.g. taxis in a given city might be known to be unreliable during at 8-10 and 16-19 hours, otherwise reliable.

<xs:element name="ExtraAccessible" type="xs:boolean" default="false" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>User's preference for perfect accessibility (lifts, ramps, no stairs, etc.), including extra transfer time, short transfer distances, etc.. May be superseeded by EPIAP updates. TODO</xs:documentation>
</xs:annotation>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[This extra text could be added to give more hints about the meaning and how it should be implemented]
If true, few and short transfers are preferred, stations/hubs with insufficient accessibility avoided.
(Based on the assumption that these same measures help in most cases,
regardless of the details of the actual impairment.
E.g. a station well equiped for wheelchairs will typically also be well equiped for visually impaired.)

<xs:annotation>
<xs:documentation>User's preference for scenic, touristic impressions on some parts of the trip.</xs:documentation>
</xs:annotation>
</xs:element>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[This extra text could be added to give more hints about the meaning and how it should be implemented]
If true, certain lines or routes known for their scenicness may be prioritized.

<xs:element name="Peaceful" type="xs:boolean" default="false" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>User's preference for peacful transport (quiet travel compartements or low occupation).</xs:documentation>
</xs:annotation>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[This extra text could be added to give more hints about the meaning and how it should be implemented]
If true, modes/lines offering extra privacy should be preferred.

<xs:element name="WalkingProfile" default="normal" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>Users walking profile (especially for hiking)</xs:documentation>
</xs:annotation>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

May be somewhat exotic or rarely used preference. Is it useful in the context of the other user preferences? Are these colour codes standardized in Europe? Most countries will have none of these.

<xs:annotation>
<xs:documentation>A classification of a passenger's reason for undertaking a TRIP PATTERN (TRIP REASON from Transmodel).</xs:documentation>
</xs:annotation>
</xs:element>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This classification may have overlaps with the ones above. Needs to be discussed whether this is useful in combination with the above preferences, or as an alternative, or even a complete, sufficient replacement of the above criterions?

<xs:documentation>User's preference about climate/environmental-friendliness of the trip (option 'low' might have no effect).</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

May be define common types for enumeration to avoid multiple definition of the same values (here high/average/low, but this happens several times)

@ue71603
Copy link
Contributor Author

ue71603 commented Dec 7, 2022

is now implemented in #271

@trurlurl
Copy link
Contributor

trurlurl commented Jan 8, 2023

Removed documentation label, documentation will be done for the follow-up PR.

@sgrossberndt sgrossberndt deleted the User_Preferences branch January 9, 2023 08:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request to be disussed
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants