Passenger Rebooking Decision Modeling Challenge

Similar documents
Passenger Rebooking - Decision Modeling Challenge

SWEN502 Foundations of Databases Session 2. Victoria University of Wellington, 2017, Term 2 Markus Luczak-Roesch

Part 1. Part 2. airports100.csv contains a list of 100 US airports.

LogTen Pro API. logten://method/{json_payload}

Simplification Using Map Method

Workbook Unit 11: Natural Deduction Proofs (II)

SH Push, version 2.2 Release 2012:12

Bank Holiday Calculator (Oracle Package)

Model Solutions. ENGR 110: Test 2. 2 Oct, 2014

Natural Language Processing. Dependency Parsing

myidtravel Functional Description

ADVANTAGES OF SIMULATION

Agenda. Introduction of BA/Expedia disruption PoC. Use cases / Flow diagram

Logic Control Summer Semester Assignment: Modeling and Logic Controller Design 1

An Analysis of Dynamic Actions on the Big Long River

Sorting Senators, Collecting Data

Supports full integration with Apollo, Galileo and Worldspan GDS.

Solutions to Examination in Databases (TDA357/DIT620)

ELOQUA INTEGRATION GUIDE

Decision aid methodologies in transportation

Query formalisms for relational model relational algebra

Management System for Flight Information

VAST Challenge 2017 Reviewer Guide: Mini-Challenge 1

Adaptive Noise Cancellation using the LMS Algorithm. December 7, 1999

SEWE FEBRUARY 14-18, 2018 VIP PROGRAM

Do Not Write Below Question Maximum Possible Points Score Total Points = 100

Project 2 Database Design and ETL

Airline Passenger Transportation System: Structure and Dynamics. Lance Sherry 04/2101

2019 Vacation Bidding

Analysis of Air Transportation Systems. Airport Capacity

TIMS to PowerSchool Transportation Data Import

Optimising throughput of rail dump stations, via simulation and control system changes. Rob Angus BMT WBM Pty Ltd Brisbane 5 June 2013

(12) Patent Application Publication (10) Pub. No.: US 2005/ A1

The four elements of nature: Fire, Water Earth & Air

Text Encryption Based on Glider in the Game of Life

OPPORTUNITY DISPLAYED GIFT MINIMUM. Select either the Great Room of the Adirondak Loj or ADK MSC in Lake George. Select either the Great Room of the

Table of Contents. Part I Introduction 3 Part II Installation 3. Part III How to Distribute It 3 Part IV Office 2007 &

Operators & Suppliers Conference

EE382V: Embedded System Design and Modeling

Project 2 Database Design and ETL

This protocol is designed for the isolation of 96 plasmid DNA samples from 1.3ml bacterial cultures. Yield is up to 6µg.

Help Document for utsonmobile - Windows Phone

TABLE 2-3. Basic Identities of Boolean Algebra T-6. Basic Identities of Boolean Algebra by Prentice-Hall, Inc.

Management System for Flight Information

Price-Setting Auctions for Airport Slot Allocation: a Multi-Airport Case Study

Mathcad Prime 3.0. Curriculum Guide

Table of Contents. Part I Introduction 3 Part II Installation 3. Part III How to Distribute It 3 Part IV Office 2007 &

Name Required Description Parameter Type Data Type. airportiata True path string. date True path string

Aircraft and Gate Scheduling Optimization at Airports

National Association of Rocketry Level 3 High Power Certification Requirements

Ranking Senators w/ Ted Kennedy s Votes

Transport Data Analysis and Modeling Methodologies

Introduction to Data Management CSE 344

AMXM Airport Mapping picking-up SWIM

Major Rights of an Air Passenger

IELTS General Reading Test 1. Section 3

Maggie s Activity Pack

Kristina Ricks ISYS 520 VBA Project Write-up Around the World

JAPAN AIRLINES AGENCY DEBIT MEMO POLICY AND PROCEDURE FOR TRAVEL AGENTS IN BSP MALAYSIA

Modelling Transportation Networks with Octave

OAG FV Flight Notifications for Business (FNB) Integration Guide

Copyright Thomson Financial Limited 2006

Airspace Management Decision Tool

1 Go to 2 Please sign in with your account details. 1Click on Menu g Commission Statements or Report

PSS MVS 7.15 announcement

Annotating, Extracting, and Linking Legal Information

2017 PROCEDURES HAVE CHANGED READ CAREFULLY

Global formulas. Page1. Video filmed with GeneXus X Evolution 2

All rights reserved.

Genetic Algorithm in Python. Data mining lab 6

Saighton Camp, Chester. Technical Note: Impact of Boughton Heath S278 Works upon the operation of the Local Highway Network

helicopter? Fixed wing 4p58 HINDSIGHT SITUATIONAL EXAMPLE

CITY OF NEWPORT AND PORT OF ASTORIA REQUEST FOR PROPOSALS -- SCHEDULED AIRLINE SERVICE BASIC INFORMATION

Draft Concept Alternatives Analysis for the Inaugural Airport Program September 2005

T ourism. KS3 Geography. B B C Northern Ireland Education Online. Introduction. What is Education for Sustainable Development?

One Heartland, Inc. Travel Guide 2018

Big Data: Architectures and Data Analytics

myldtravel USER GUIDE

Scalable Runtime Support for Data-Intensive Applications on the Single-Chip Cloud Computer

British Airways strike almost over

CALIFORNIA CONTRACT CITIES ASSOCIATION

Cascade Flue System Guide

Conference Introduction

Title ID Number Sequence and Duration. Age Level Essential Question Learning Objectives

PASSUR Aerospace. Departure Metering Program at Toronto Pearson International Airport. Training Manual

Please DO NOT start here without completing the other four stations...

USER GUIDE Cruises Section

Aviation Maintenance Technology

Curriculum Guide. Mathcad Prime 4.0

Operational Interruption Cost Assessment Methodology

NAIPS Internet Service Authorised NOTAM Originator User Guide Version 3.0. (To be read in addition to NIS User Guide 3.0)

Quick Tips. ARC Agency Webinar - Tips to Avoid Delta Debit Memos. Inventory and Booking Violations

1 - Plan a donation run

Concur Travel - Frequently Asked Questions

Bundled Sell Utility for Application Developers MODULE 202 REVISION

NZQA Assessment Support Material

A New Way to Work in the ERCOT Market

Booking flights At the restaurant Wiki. Triggers. February 24, Grégoire Détrez Tutorial 4

2/11/2010 7:08 AM. Concur Travel Service Guide Southwest Direct Connect

Click the Profile link to review and update your profile. You must save your profile before you first attempt to book a trip. TOP

Transcription:

Passenger Rebooking Decision Modeling Challenge Method and Style Solution, Bruce Silver My solution to the challenge uses DMN 1.1. I suspect this may be the first publication demonstrating a complete DMN tool, including DRDs, full use of boxed expressions, and FEEL. The diagrams and tables were created using the Trisotech DMN Modeler, and the DMN execution is from Method and Style. The solution provides a good illustration of the power of DMN, including its ability to manipulate lists and tables. It also exploits a previously unremarked (you might call it hidden ) feature of DMN, which is recursion. The DRD describes the end-to-end solution. The input data elements plist and flist are the passenger list and flight list tables provided. For some reason they were already presorted by priority, but the solution does not depend on that. cancelledflights cancelledflights is a simple filter expression.

cancelledflights (Decision) Decision Logic (Boxed FEEL Expression) tflist cancelledflights flist[status="cancelled"] cancelledpassengers cancelledpassengers is a relational join between two tables, plist and cancelledflights. If such a join selects a single item, it can be done with nested filters, but here that is not the case, so we use an iteration. cancelledpassengers (Decision) Decision Logic (Boxed FEEL Expression) tplist cancelledpassengers for i in plist return (if cancelledflights[fnum = i.flight] then i else null) FEEL s for..in..return syntax is basically the same as XPath, if you are familiar with that. sortedplist Passengers are sorted for rebooking in priority order, priority determined by combination of status and miles. Presumably miles serve as a tiebreaker for passengers with same status. Since FEEL sort function has only a single sort key, I used a C+ decision table to compute a numerical score combining status and miles, and sorted on that. The decision scoredplist iterates the BKM scoredp, and then the decision sortedplist sorts scoredplist on the score component. scoredplist (Decision) tplist

Decision Logic (Boxed FEEL Expression) scoredplist for i in cancelledpassengers return scoredp(i) scoredp (Business Knowledge Model) Decision Logic (Boxed Function Context) tpassenger scoredp (passenger(tpassenger)) C+ passenger.status passenger.miles score Text Number Number score 1 "Gold" - 100000 2 "Silver" - 25000 3 "Bronze" - 10000 4 - - passenger.miles scoredpassenger (tpassenger) name flight score passenger.name passenger.flight score scoredpassenger sortedplist (Decision) tplist

Decision Logic (Boxed FEEL Expression) sortedplist sort(scoredplist, function(x,y) x.score>y.score) bookinglist The bookinglist decision invokes the BKM rebooking. rebooking is not a normal iteration but a recursion, meaning the BKM rebooks one passenger and then if there are remaining unbooked passengers it calls itself to book the next one. The reason I did it this way is that the available flights change with each booked passenger. rebooking has four parameters: unbooked, a list of unbooked passengers; rebooked, a list of rebookings; flist, the list of available flights; and originalflist, the original flight list. When it is invoked the first time, unbooked is the sorted list of passengers and rebooked is an empty list. bookinglist (Decision) Decision Logic (Boxed FEEL Expression) tbookinglist bookinglist rebooking(sortedplist,[],flist,flist) rebooking (Business Knowledge Model) tbooking rebooking is a context. thepassenger is the first one in the unbooked list. Other context entries gather that passenger s originalflight, its departure time (since the rebooking must depart after that time), and its destination (since the rebooking must have the same destination). availableflights is a filter selecting from the parameter flist the flights not cancelled that have the same destination and remaining seats available. firstarrival selects from availableflights the earliest arrival time, and bookedflight selects the flight matching that time. Note the odd syntax of firstarrival, since the min semantics depends on the datatype (number, string, datetime, etc.), so we need to convert arrive, a string, to a datetime element. newbooking is a nested context, containing the passenger name, rebooked flight, and arrival time. newrebooked appends the new booking to the rebooked list, and newunbooked removes the first item from the old unbooked list. newflightlist iterates through availableflights and deducts one available seat from the flight just rebooked. bookings then either recurses or if no remaining unbooked exits. bookings is the final result box of the BKM, the value reported back to bookinglist.

rebooking (unbooked(tbookinglist), rebooked(tbookinglist), flist(tflist), originalflist(tflist) ) thepassenger (tpassenger) originalflight (Text) originaldepart (Date and time) thedestination (Text) availableflights (tflist) isflightavailable (Boolean) firstarrival (Date and time) bookedflight (tflight) unbooked[1] originalflist[fnum=thepassenger.flight] originalflight.depart originalflight.to flist[status="scheduled" and to=thedestination and seatsavailable!=0] if count(availableflights)>0 then true else false min(availableflights.date and time(arrive)) availableflights[arrive=firstarrival] newbooking (tbooking) name (Text) flight (Text) arrive (Date and time) thepassenger.name if isflightavailable=true then bookedflight.fnum else "none" if isflightavailable=true then firstarrival else "-" newrebooked (tbookinglist) newunbooked (tbookinglist) newflightlist (tflist) bookings (tbookinglist) append(rebooked,newbooking) remove(unbooked,1) for i in availableflights return newflight(i,bookedflight) if count(newunbooked)>0 then rebooking(newunbooked,newrebooked,newflightlist) else newrebooked bookings

newflight (Business Knowledge Model) Decision Logic (Boxed Function Context) tflight newflight (flight(tflight), bookedflight(tflight) ) newseatsavailable (Number) if flight=bookedflight then flight.seatsavailable -1 else flight.seatsavailable fnum flight.fnum from flight.from updatedflight (tflight) to depart arrive flight.to flight.depart flight.arrive seatsavailable newseatsavailable status flight.status updatedflight The datatypes (itemdefinitions) are shown below, followed by execution results. The execution result tables are generated directly via xslt from the XML output of DMN execution.