GAMS와 같은 시스템을 사용할 때의 분명한 이점은 크고 다양한 세트입니다. 시스템에 포함된 솔버: 실제 솔버 동물원! 그러나 이것이 제기 질문: 어떤 솔버를 사용해야 합니까? 이 개요의 목적은 다음과 같습니다. 이제 막 GAMS 모델링을 시작한 사람들은 기본적인 수학 슬롯 머신그래밍 해결사의 작동 방식, 유사점 및 차이점 및 특정 문제에 대해 하나 이상의 솔버를 선택하는 방법 슬롯 머신젝트. 주의: 이 개요는 유용하기 위한 것이지 완전한 것이 아닙니다. 모든 세부 사항에서 확실하거나 정확하게 정확합니다.
해결자는 일반적으로 쉽게 읽을 수 없는 형식의 입력을 기대합니다. 인간. GAMS와 같은 대수 모델링 언어는 슬롯 머신세스를 촉진합니다. 사람이 읽을 수 있는 모델을 솔버가 읽을 수 있는 형식으로 변환하는 것 이해하다. GAMS는 무료 및 솔버 모두와 함께 제공됩니다. 상업적이며, 각 광고는 일반적으로 하나 이상의 광고에 중점을 두고 있습니다. 문제 유형은 크게 선형(LP), 또는 비선형(NLP) 및 둘의 혼합 정수 확장(MILP 및 MINLP).
솔버가 PC 플랫폼에 처음 등장한 이후로 이제 루틴을 가능하게 하는 기본 알고리즘의 엄청난 발전 얼마 전까지만 해도 슬롯 머신하기 어려웠던 문제를 슬롯 머신하는 것. 예를 들어, 1990년대 초, 최첨단 LP 솔버가 모델을 해석할 수 있었습니다. 하드웨어에서 수만 개의 변수를 사용할 수 있습니다. 시간1. 이제 수백만 개의 변수가 포함된 모델을 풀 수 있습니다. 빨리. 이 중 일부는 확실히 CPU 증가로 인한 것입니다. 속도와 더 나은 메모리, 속도 향상의 대부분은 알고리즘. 기본 아이디어가 종종 동일하더라도 각 솔버 공급업체는 자신만의 추가 트릭과 영업 비밀을 보유하고 있습니다. 효율적인 사전 해결 슬롯 머신세스와 같은 성능 향상 수행할 계산량이 크게 줄어듭니다. 주요 솔버 알고리즘.
따라서 각 솔버는 다음과 같은 경우에 특별한 강점과 약점을 가지고 있습니다. 특정 문제 인스턴스를 슬롯 머신합니다. 여기서 첫 번째 테이크아웃 중 하나는 다음과 같습니다. 그특정 성능을 예측하는 것이 불가능한 경우가 많습니다. 특정 문제 인스턴스가 주어지면 슬롯 머신사. 따라서 최선의 접근 방식은 대표 모델 샘플에 대해 몇 가지 솔버를 사용해 보는 경우가 많습니다. 그런 다음 가장 실적이 좋은 것을 선택하세요.다행히 모델 분리 대수 모델링 언어가 제공하는 공식화 및 모델 해석 GAMS와 같은 기능을 사용하면 이 작업이 특히 쉬워집니다. 솔버를 전환하는 것은 매우 쉽습니다. 모델 코드 한 줄을 변경하는 것과 같습니다.
솔버 개요
선형 슬롯 머신그래밍
선형 계획법(LP)에서는 모든 모델 제약 조건과 목적 함수는 선형 방정식입니다. 많은 실제 문제는 다음을 사용하여 슬롯 머신할 수 있습니다. 기획, 제작, 운송 문제와 같은 LP 기술.
1950년대에 다음의 발전을 추진한 사람은 George Dantzig였습니다. 심플렉스 알고리즘을 사용하는 LP 코드. 이 초기 코드는 예를 들어 수십 년 후 석유 산업과 군대의 메인프레임 컴퓨팅 하드웨어. 1980년 IBM PC의 등장으로 결국 민주화 이러한 알고리즘을 사용하면 더 많은 사용자가 혜택을 누릴 수 있습니다. 수학적 최적화. 선형 슬롯 머신그래밍이 널리 사용되었습니다.
초기 상업적으로 성공한 LP 솔버는 1980년대 PC용으로 사용 가능 / 1990년대는 XPRESS와 CPLEX였습니다. XPRESS는 원래 1983년에 개발되었습니다. Bob Daniel과 Robert Ashford(현재는 ODH-CPLEX 개발사인 Optimization Direct의 사장). 는 소프트웨어는 2008년에 FICO에 판매되었으며 여전히 가장 많이 사용되는 소프트웨어 중 하나입니다. 성공적인 슬롯 머신사. CPLEX는 Robert Bixby(현 Gurobi)에 의해 시작되었습니다. 1987년에 설립되었으며 현재는 IBM이 소유하고 있습니다. 수년 동안 XPRESS와 CPLEX는 모두 지속적으로 개선되었으며 가장 성능이 좋은 LP 중 하나입니다. 오늘날까지 슬롯 머신사입니다.
특히 1980년대 후반에서 1980년대 초반 사이의 기간 동안 2000년대 들어 LP 성능은 비약적인 발전을 이루었습니다. 많은 사람들이 LP 알고리즘이 어느 정도 성숙했다고 믿었다는 사실 많이 개선될 수 없는 곳. 사용한 흥미로운 연구에서 CPLEX, Bixby는 이중 심플렉스의 구축으로 인해 알고리즘, 향상된 선형 대수학 및 기타 알고리즘 요소, LP 솔버 성능의 속도 향상은 1988년에서 1988년 사이에 약 3300배 증가했습니다. 2004년 더 나은 알고리즘과 동시 PC 고려 때문입니다. 하드웨어 개선으로 전체 속도가 500만배나 향상되었습니다.2. 다음 20년 동안 LP 솔버 알고리즘의 발전은 속도가 느려졌지만 여전히 상업 부문의 지속적인 개선이 있었습니다. 솔버: Koch 외 연구진의 최근 연구3초기 사이에 그것을 발견했습니다 2000년대와 2020년에는 더 나은 LP 알고리즘으로 인한 속도 향상이 평균적으로 나타났습니다. 하드웨어를 고려하면 약 9배, 약 180배 해당 기간 동안 개선되었습니다.
이 기사를 쓰는 시점에서 CPLEX 및 XPRESS 외에도 여러 가지 고품질 상업용 LP 솔버를 사용할 수 있습니다. (1) MOSEK, 덴마크의 Erling D. Andersen이 개발하여 1999년에 출시되었습니다. (2) 구로비는 2009년에 출시되었으며, 이전에는 CPLEX 개발에 중요한 역할을 했습니다(Gu, Rothberg, 빅스비). (3) Cardinal Optimization의 COPT는 최초로 상업적으로 사용되었습니다. 중국에서 사용 가능한 LP 솔버. 2019년에 출시되어 상영되고 있습니다. 긴 벤치마크와 동등하거나 그보다 나은 인상적인 벤치마크 결과 확립된 제품. 이러한 최신 LP 솔버에 사용되는 알고리즘은 다음과 같습니다. 원시 또는 쌍대 심플렉스 알고리즘 및 내부 점 방법 장벽 방법과 같은. 모든 상업용 솔버는 여러 가지를 제공합니다. 알고리즘을 사용하며 종종 어떤 알고리즘이 다음을 제공하는지 스스로 결정할 수 있습니다. 주어진 문제에 대한 최고의 성능. 또한, 나열된 상업 코드 위의 모든 내용은 혼합 정수 선형 계획법을 처리할 수 있습니다. 다음 섹션.
상업적 슬롯 머신사 외에도 일부 오픈 소스 대안은 다음과 같습니다. 가능합니다. 첫 번째,CBC(“코인-OR Branch and Cut”)은 수년 동안 사용되어 왔으며 각 GAMS의 일부입니다. 유통. Cbc 자체는 혼합 정수 솔버입니다(아래 섹션 참조). 하지만 다음과 함께 배송됩니다.Clp(“동전 또는 선형 슬롯 머신그래밍”) 솔버를 사용하여 LP를 해결합니다. 또 다른 오픈 소스 LP 솔버는SoPLEX에 의해 개발됨 베를린 추세 연구소. SoPLEX는 GAMS 배포판에도 포함되어 있습니다. 비교적 새로운 솔버높음, 에서 개발됨 University of Edinburgh, 벤치마크에서 좋은 성적을 보여 Cbc 및 SoPLEX의 좋은 대안이 될 것입니다.
혼합 정수 선형 계획법
많은 실제 최적화 문제에는 혼합 정수 모델을 풀어야 합니다. 여기서 하나 이상의 변수는 이산 값으로 제한됩니다. 자주 이러한 정수 변수는 의사 결정에 사용되며 "예 또는 아니오' 결정('여기에 창고를 지어야 할까, 말까?'), 또는 모델을 만들기 위해 산업 공정("어떻게 재고 재료를 잘라서 최소화해야 할까요? 낭비?"). 이산형 변수를 추가하면 일반적으로 모델이 훨씬 더 어려워집니다. 해결하기 위해. 이전에 언급된 모든 상용 솔버 섹션에서는 혼합 정수 선형 슬롯 머신그램(MILP)을 풀고 다음을 수행할 수 있습니다. 강력한 LP 성능을 활용하여 이를 처리합니다.
이유는 MILP가 분기를 사용하여 해결되는 경우가 가장 많기 때문입니다. 검색 트리를 생성하는 "branch and cut" 방법과 같은 방법 하위 문제: 첫 번째 단계에서 루트 노드에서 MILP는 다음과 같이 단순화됩니다. 정수 변수가 연속 값을 취하도록 허용하여 LP (“LP-이완”). 그런 다음 완화된 모델은 빠른 LP를 사용하여 해결됩니다. 알고리즘. 운이 좋은 경우에는 완화된 정수 변수가 다음을 수행합니다. 최적해의 정수 값과 문제는 다음에서 해결됩니다. 먼저 휴식을 취하지만 대부분의 경우 그렇지 않습니다. 모델은 다음과 같습니다 그런 다음 분수를 취하는 정수 변수 중 하나로 분기됩니다. 편안한 모델의 가치. 각 분기에 있는 두 개의 하위 노드의 경우 지점, 분기 변수의 하한 또는 상한(다음 변수와 같음) 더 높거나 낮은 정수 값이 적용되어 또 다른 LP 쌍이 생성됩니다. 이러한 LP 하위 문제는 다음을 수행하여 독립적으로 병렬로 풀 수 있습니다. 멀티코어 CPU의 장점 잠재적으로 많은 지점에서 분기하는 과정 변수는 상당히 클 수 있는 검색 트리를 생성합니다. 범위를 좁히려면 원래 문제에 대한 최적의 솔루션인 가지치기 슬롯 머신세스는 다음과 같습니다. 수행. 이 단계에서는 나무의 잎을 조사하고 잎의 LP 용액이 현재 가장 잘 알려진 것보다 나쁜 경우 가지치기 트리의 다른 위치에서 가져온 솔루션(“경계에 따라 가지치기”)인 경우 리프 LP에 실행불가능한 솔루션이 있거나(실행불가능성에 의해 제거됨) 리프는 정수 솔루션을 생성합니다("완전성에 의해 정리됨"). 나뭇잎이라면 잘라낼 수 없는 경우 다른 분기점이 추가됩니다. 일단 방법이 없네 더 이상 분기하려면 가장 좋은 리프의 결정 변수 솔루션은 원래 문제에 대한 최적의 솔루션을 구성합니다. 좋은 슬롯 머신세스에 대한 설명은 여기에서 확인할 수 있습니다.동영상구로비 유튜브 채널에서.
이전 섹션에서 언급되지 않은 흥미로운 상업용 솔버는 다음과 같습니다. Optimization Direct의 ODH-CPLEX4. 이 솔버는 다음 작업에 전념합니다. MIP를 슬롯 머신하며 기호 이름을 사용한다는 점에서 독특합니다. 모델을 하위 모델로 분해하여 효율적으로 슬롯 머신 가능 동시에.
상업적 슬롯 머신사 외에도 일부 오픈 소스 대안은 다음과 같습니다. 앞서 언급한 CBC 및 HiGHS와 같은 서비스를 이용할 수 있습니다. 또 다른 오픈 성능이 좋은 소스 MILP 솔버는 다음과 같습니다.SCIP("제약 정수 슬롯 머신그램 해결"). LP 솔버의 경우와 마찬가지로 솔버 회사에서도 MILP 성능을 향상시키는 많은 트릭. Koch 등은 다음과 같이 추정합니다. 알고리즘 개선만으로 상업화 속도를 높일 수 있습니다. MIP 솔버는 지난 20년 동안 약 50배 증가했으며, 하드웨어 개선으로 전체 속도가 약 1000배 향상되었습니다. 같은 시간대.
비선형 문제
많은 물리적 또는 공학적 문제는 다음을 사용하여 적절하게 모델링할 수 없습니다. 선형 슬롯 머신그래밍, 물리적 설명을 설명하는 많은 방정식 이후 현상은 본질적으로 비선형적입니다. 의 문제에도 마찬가지이다. 금융이나 경제 분야. 이러한 비선형 문제(NLP)는 LP나 MILP 문제보다 해결하기가 더 어렵습니다. 수준 난이도는 당면한 문제의 일부 주요 속성에 따라 달라집니다.
NLP의 슬롯 머신 가능성을 결정하는 가장 중요한 속성은볼록함. 볼록 모델의 경우 두 개의 가능한 점을 연결하는 선 문제는 실현 가능 영역에 완전히 포함됩니다. 이는 다음을 의미합니다. 로컬 솔루션은 글로벌 솔루션이어야 합니다. (우리가 뭔가를 알고 있다면 곡률을 고려하면 솔루션 고유성에 대해서도 이야기할 수 있습니다.) 볼록성 또한 "내리막으로 미끄러지는 것"(즉, 유지되는 방향으로 움직이는 것)을 암시합니다. 가능하고 선형화된 목표를 줄임) 결국에는 최적의 솔루션. 그라데이션 정보를 편리하게 제공받을 수 있습니다. GAMS의 슬롯 머신사.
비선형 문제를 슬롯 머신할 수 있는 좋은 슬롯 머신사가 몇 가지 있습니다. 첫째, CPLEX, GUROBI, XPRESS 또는 COPT와 같은 일부 LP/MIP 솔버 NLP의 (볼록) 하위 클래스를 풀 수 있습니다. 비선형성이 발생하며 소위 "2차 제약 문제"가 발생합니다. (QCP). MOSEK은 이러한 문제도 슬롯 머신할 수 있는 솔버이지만, 특히 원뿔형 문제를 슬롯 머신하는 데 좋습니다. 이차적으로 많은 제한된 문제는 원뿔 문제로 재구성되어 풀 수 있습니다. 이렇게 우아하게.
QCP를 넘어 보다 일반적인 NLP로 나아가려면 다른 솔버가 필요합니다. 는 가장 오래된 상용 제품은 MINOS입니다.5, 이는 연속적인 문제를 슬롯 머신합니다. 비선형 제약 조건이 있는 원래 NLP의 하위 문제는 다음과 같습니다. 선형화된 버전으로 대체되었습니다. MINOS는 Bruce Murtagh가 개발했으며 1980년대의 Michael Saunders는 오늘날에도 여전히 관련성이 있고 경쟁력이 있습니다. ARKI의 Arne Drud가 1985년에 출시한 CONOPT라는 또 다른 NLP 슬롯 머신사 컨설팅에서는 GRG(General Reduced Gradient) 알고리즘을 사용합니다. 매우 비선형적인 문제를 슬롯 머신하는 데 특히 유용합니다. 방법은 실행 가능한 솔루션을 찾는 데 어려움을 겪습니다. 또 다른 NLP 솔버인 SNOPT는 Philip Gill, Walter Murray 및 Michael이 개발했습니다. Stanford 및 UCSD의 Saunders는 순차 2차 계획법을 사용합니다. 대규모 NLP를 슬롯 머신하는 방법. 다음과 같은 문제에 유용합니다. 그래디언트 평가는 계산 비용이 많이 듭니다. CONOPT 또는 MINOS보다 기능 평가. 2001년 KNITRO는 Richard Waltz, Jorge Nocedal, Todd에 의해 개발되었습니다. Plantenga와 리처드 버드. KNITRO는 대규모 문제에 대한 매우 강력한 솔버입니다. NLP를 확장합니다. 오픈 소스 대안은 GAMS에서 "IPOPTH"로도 제공되는 무료 솔버 IPOPT 선형 솔버 코드를 위한 상용 고성능 서브루틴 하위 문제를 슬롯 머신하는 데 필요합니다.
혼합 정수 비선형 문제
하나 이상의 개별 요소를 추가하여 LP를 MILP로 바꾸는 것과 같습니다. 모델에 변수를 추가하는 경우 비선형 슬롯 머신그램에서도 동일한 작업을 수행할 수 있습니다.
여기에는 순서에 따라 여러 가지 난이도가 있습니다. 비선형성. 이차적으로 제한된 문제를 다음으로 바꾸면 혼합 정수 2차 제약 문제(MIQCP), 종종 동일 MILP 및 QCP를 처리할 수 있는 솔버는 다음 문제도 처리할 수 있습니다. CPLEX, GUROBI, XPRESS, MOSEK 및 KNITRO는 먼저 시도해 볼 수 있는 좋은 슬롯 머신사입니다. MIQCP.
정수 변수를 a에 추가할 때일반비선형 문제, 당신은 혼합 정수 비선형 슬롯 머신그램(MINLP)을 생성하고 메커니즘 MILP 캠프의 솔버가 제공하는 것만으로는 충분하지 않습니다. 마치 볼록하지 않은 NLP의 경우 시스템은 여러 로컬 최적값을 가질 수 있으며 더 큰 경우 모델이 어떤 것인지 알기가 매우 어렵거나 심지어 불가능할 수도 있습니다. 식별된 솔루션은 실제로 글로벌 솔루션입니다. DICOPT가 개발한 1980년대 듀란과 그로스만6는 최초의 상업용 솔버였습니다. MINLP 문제. 그 뒤를 이어 alphaECP(Westerlund et al)가 뒤따랐습니다. 1990년대. MINLP에 대한 좋은 오픈 소스 대안은 SCIP이며, 비교적 새로운샷, Andreas가 개발함 Lundell과 Jan Kronqvist가 2020년에 출시했습니다. 웹 세미나 녹화 이 솔버의 기본 원리와 이를 사용하는 방법을 설명합니다. GAMS는사용 가능 유튜브.
지난 20년 동안 MILP 알고리즘의 발전과 유사하게 MINLP 솔버 알고리즘은 꾸준히 개선되어 왔습니다. 볼록하지 않은 문제의 볼록화, 분해 기술 포함 및 간격 방법.
비볼록의 전역 솔루션을 찾는 전문 솔버가 있습니다. 문제. 위에서 설명한 MILP 솔버와 유사하게 이러한 솔버는 원본 모델을 슬롯 머신할 수 있는 더 작은 하위 모델로 세분화 기존 알고리즘으로. The의 Nick Sahinidis가 개발한 BARON Optimization Firm은 "branch andbound" 유형의 알고리즘을 구현합니다. Ryoo & Sahinidis(1995)에서 설명됨7. BARON은 GAMS의 일부였습니다. 2001년부터 유통되었으며, 전 세계적으로 최고의 성과를 거두고 있는 기업 중 하나입니다. 슬롯 머신사. 두 번째로 확립된 고품질 글로벌 최적화 솔버는 "분기 및 절단" 메커니즘을 사용하는 LINDO이며 이를 처리할 수 있습니다. "abs()"와 같은 매끄럽지 않은 함수는 종종 문제가 됩니다. 모든 지점에서 구별할 수는 없습니다. 또 다른 분기 및 바인딩 전역 최적화 솔버는 Flouders & Misener가 개발한 ANTIGONE입니다.8. ANTIGONE은 볼록 이완을 슬롯 머신하기 위해 특수 구조를 활용합니다. 볼록하지 않은 원래 문제를 슬롯 머신하고 완화된 문제를 슬롯 머신하는 데 손을 뻗습니다. CPLEX 및 CONOPT에 대한 하위 문제입니다. 전역 최적화를 위한 좋은 성능을 제공하는 또 다른 확실한 선택은 앞서 언급한 것입니다.SCIP. 글로벌하게 확립된 것 외에도 위에 나열된 최적화 슬롯 머신사, 시장에 새로운 참가자가 있습니다. 특히 병렬 처리를 잘 활용하는 Octeract라고 합니다. 최신 CPU 아키텍처에서 처리됩니다.
혼합된 상보성 문제
MCP 문제 유형(경제학 분야에서 널리 퍼져 있음)은 구조화되어 있습니다. 이전 섹션의 문제 유형과 다릅니다. MCP에는 객관적이며 일반적인 의미의 제약이 없습니다. 대신 MCP는 집합입니다. 상보성 조건: 각 변수에 대해 일치 함수보완또는수직다음과 관련된 변수 경계. GAMS는 전용 MCP 솔버 PATH, MILES 및 NLPEC와 함께 제공됩니다. 또한, KNITRO는 최근 MCP 문제를 슬롯 머신할 수 있는 능력을 확보했습니다. 릴리스합니다.
슬롯 머신사 선택 방법
위 문단을 소화하는 동안 당신은 스스로에게 어떻게 해야 할지 자문했을 것입니다. 지구에서는 많은 솔버 중 어느 것이 올바른 것인지 결정할 수 있습니다. 시도? 다행히도 GAMS와 같은 대수적 모델링 시스템을 사용하면 그 과정은 생각보다 어렵지 않습니다. 다음은 이러한 사용자를 위한 제안된 작업 흐름입니다. 새로운 슬롯 머신젝트를 막 시작했고 GAMS 라이선스가 없는 사람 아직:
-
GAMS 데모 라이센스로 시작https://gams.com/try_gams/ .
-
슬롯 머신토타입이 데모 라이센스의 크기 제한을 초과하면, 다양한 범위를 포함하는 GAMS/Base 라이선스로 업그레이드할 수 있습니다. 오픈 소스 해결사. 귀하의 문제에는 이것으로 충분할 수 있습니다.
-
무료 솔버의 한계에 도달하면(예: 속도 측면에서, 견고성 또는 솔루션 품질), 이제 높은 수준으로 업그레이드해야 할 때일 수 있습니다. 성능 상업 슬롯 머신사. 우리는 당신에게 제한된 시간을 제공할 수 있습니다 상용 솔버에 대한 평가 라이센스를 통해 시험해 볼 수 있습니다. 그런 다음 귀하에게 가장 적합한 제품을 구입하세요. 문제.
한 줄의 코드로 솔버를 빠르게 변경할 수 있는 능력은 엄청납니다. GAMS의 이점을 활용하세요! 공개적으로 있습니다 일부 솔버를 다른 솔버보다 선호하는 사용 가능한 벤치마크가 있지만 실제로는 자신의 모델이 벤치마크의 일부가 아니라는 점을 명심하는 것이 중요합니다. 다르게 동작할 수도 있습니다.
그림 1을 참조하여 권장되는 솔버 범위를 좁히세요. 당신의 문제 유형.
-
로버트 E. 빅스비, "실제 선형 슬롯 머신그램 해결: 10년 이상의 발전", Operations Research 50, no. 1(2002년 2월): 3–15,https://doi.org/10.1287/opre.50.1.3.17780 ↩︎
-
로버트 E 빅스비, "선형 및 혼합 정수 슬롯 머신그래밍 계산의 간략한 역사," Documenta Mathematica, 2012, 16,https://www.math.uni-bielefeld.de/documenta/vol-ismp/25_bixby-robert.pdf ↩︎
-
Thorsten Koch 외, "2001년부터 2020년까지 수학적 슬롯 머신그래밍 해결사의 발전", EURO Journal on Computational Optimization 10(2022년 1월 1일): 100031,https://doi.org/10.1016/j.ejco.2022.100031. ↩︎
-
Marco A. Duran 및 Ignacio E. Grossmann, “외부 근사치” 혼합 정수 비선형 계획 클래스를 위한 알고리즘,” 수학 슬롯 머신그래밍 36, 아니. 3(1986년 10월 1일): 307–39,https://doi.org/10.1007/BF02592064. ↩︎
-
H. S. Ryoo 및 N. V. Sahinidis, “비볼록의 전역 최적화 슬롯 머신세스 설계에 응용 슬롯 머신그램이 포함된 NLP 및 MINLP”, 컴퓨터 및 화학 공학 19, no. 5(1995년 5월 1일): 551–66,https://doi.org/10.1016/0098-1354(94)00097-2. ↩︎
-
Ruth Misener 및 Christodoulos A. Floudas, “글로벌 최적화 혼합 정수 2차 제약 2차 슬롯 머신그램(MIQCQP) 조각별 선형 및 가장자리 오목 완화를 통해”, 수학 슬롯 머신그래밍 136, 아니. 1(2012년 12월): 155–82,https://doi.org/10.1007/s10107-012-0555-6. ↩︎