INDUSTRY: [showtax taxonomy=”business_industry” lowercase=”0″]
REGION: [showtax taxonomy=”regions” lowercase=”0″]
The first step for millions of passengers that travel through Copenhagen Airport (CPH) every year is to visit a check-in counter. With only 100 check-in counters available, and over 150 airlines sharing these counters, the problem of deciding which counter to use for each outbound flight is both complex
and critical to the functioning of the airport. After the airport experienced a period of rapid growth, which strained the ability of the counters to meet the needs of the airlines, the CEO of the airport challenged the airport operations team to find a better way to utilize their existing counters.
The OR team identified the problem as an optimization problem and created an optimization model. Their next step was to find a solver that could solve this model quickly. After comparing alternatives, they chose Gurobi for their initial prototype, implementing the model using the Gurobi C++ API. Despite
some concerns about the difficulty of the model, they found that Gurobi was able to solve it quite quickly, which allowed them to add additional detail. For example, they introduced a goal of trying to keep each airline at the same set of nearby counters over time. This additional detail actually reduced the difficulty of solving the model, while at the same time making the resulting counter assignments better for the airlines, the staff that handles the check-ins, and the passengers.
Due to notably better utilization of the existing check-in counters, CPH was able to handle continued growth with the existing counters. This made it possible to postpone over 90 million DDK (>USD$16M) in investments in check-in facilities.
Over time, as people have seen the benefits of optimization, the team has been able to experiment with the trade-off between cost factors (e.g., building more counters) and convenience factors (e.g., keeping airlines at similar counters over time). This has further improved the optimization solutions being provided, allowing the airport to grow passenger volume significantly with only a modest investment in new counters.
Gurobi has played several key roles: Gurobi’s easy to use C++ API and interactive shell helps us quickly prototype ideas and see if our gut is right. We do it all ourselves and use Gurobi in the process. When ready, we send out the results, people see the work, and then we work to improve the model. With Gurobi we don’t have to worry about the algorithms. We get the data, build the model, give it to Gurobi, and get the results. As would be expected, we have run into a few challenges on our end with some of the modeling, but every time Gurobi was extremely helpful and very fast at answering our questions and helping out. With Gurobi we know we can scale when we need to. Over time we’ve enhanced the models by adding more complexity and expanding the solution space to continue to deliver improved results and meet changing business needs. We have yet to run into a model we wanted to build that Gurobi couldn’t solve.
The OR group started in 2009 when analysts from the operational departments were consolidated into a single team. In 2013 the team includes 7 people, of which 5 have a M.SC. in Operations Research. Outside of the purchase of Gurobi, everything else is done in-house. After we see good results, we start looking for providers that can deliver systems to replace our prototypes.
We make it easy for students, faculty, and researchers to work with mathematical optimization.
When you face complex optimization challenges, you can trust our Gurobi Alliance partners for expert services.
Our global team of helpful, PhD-level experts are here to support you—with responses in hours, not days.
GUROBI NEWSLETTER
Latest news and releases
Privacy Policy | © Gurobi Optimization, LLC. All Rights Reserved.
Cookie | Duration | Description |
---|---|---|
cookielawinfo-checkbox-advertisement | 1 year | Set by the GDPR Cookie Consent plugin, this cookie is used to record the user consent for the cookies in the "Advertisement" category . |
cookielawinfo-checkbox-analytics | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics". |
cookielawinfo-checkbox-functional | 11 months | The cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional". |
cookielawinfo-checkbox-necessary | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary". |
cookielawinfo-checkbox-others | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other. |
cookielawinfo-checkbox-performance | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Performance". |
CookieLawInfoConsent | 1 year | Records the default button state of the corresponding category & the status of CCPA. It works only in coordination with the primary cookie. |
elementor | never | This cookie is used by the website's WordPress theme. It allows the website owner to implement or change the website's content in real-time. |
viewed_cookie_policy | 11 months | The cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data. |
Cookie | Duration | Description |
---|---|---|
__cf_bm | 30 minutes | This cookie, set by Cloudflare, is used to support Cloudflare Bot Management. |
Cookie | Duration | Description |
---|---|---|
CONSENT | 2 years | YouTube sets this cookie via embedded youtube-videos and registers anonymous statistical data. |
Cookie | Duration | Description |
---|---|---|
VISITOR_INFO1_LIVE | 5 months 27 days | A cookie set by YouTube to measure bandwidth that determines whether the user gets the new or old player interface. |
YSC | session | YSC cookie is set by Youtube and is used to track the views of embedded videos on Youtube pages. |