Bu bölümde, yönlendirme çözümleyiciye yönelik bazı seçenekler açıklanmaktadır.
Arama sınırları
Arama sınırları, maksimum süre uzunluğu veya bulunan çözüm sayısı gibi belirli bir sınıra ulaştıktan sonra çözücüyü sonlandırır. Çözümleyicinin arama parametreleri aracılığıyla bir arama sınırı belirleyebilirsiniz. Örnek için Zaman sınırları bölümüne bakın.
Aşağıdaki tabloda en yaygın arama sınırları açıklanmaktadır.
Ad | Type | Varsayılan | Açıklama |
---|---|---|---|
solution_limit
|
int64 | kint64max | Arama sırasında oluşturulan çözüm sayısıyla sınırlandırın. |
time_limit.seconds
|
int64 | kint64max | Saniye cinsinden arama süresiyle sınırlayın: |
lns_time_limit.seconds
|
int64 | 100 | Saniye cinsinden harcanan zamanla sınırlandırın: her yerel arama komşusu için tamamlama araması. |
İlk çözüm stratejisi
İlk çözüm stratejisi, çözümleyicinin ilk çözümü bulmak için kullandığı yöntemdir. Aşağıdaki tabloda first_solution_strategy
için seçenekler listelenmiştir.
Option | Açıklama |
---|---|
AUTOMATIC
|
Çözücünün, çözümlenen modele göre hangi stratejiyi kullanacağını algılamasını sağlar. |
PATH_CHEAPEST_ARC
|
Bir rota "başlangıç" düğümünden başlayarak, en ucuz rota segmentini oluşturan düğüme bağlanın. Ardından, rotaya eklenen son düğümde iterasyon yaparak rotayı genişletin. |
PATH_MOST_CONSTRAINED_ARC
|
PATH_CHEAPEST_ARC özelliğine benzer ancak yaylar, önce en kısıtlanmış yayına öncelik verecek karşılaştırmaya dayalı bir seçici ile değerlendirilir. Yönlendirme modeline bir seçici atamak için ArcIsMoreConstrainedThanArc() yöntemini kullanın. |
EVALUATOR_STRATEGY
|
Yaklaşım maliyetlerinin SetFirstSolutionEvaluator() 'e iletilen işlev kullanılarak değerlendirilmesi dışında PATH_CHEAPEST_ARC özelliğine benzer. |
SAVINGS
|
Tasarruf algoritması (Clarke ve Wright). Clarke, G. & Wright, Japonya |
SWEEP
|
Süpürme algoritması (Wren & Holliday). Anthony Wren ve Alan Holliday Araçlarının Bir veya Daha Fazla Depodan Çalışacak Şekilde Gerçekleşebilecek Operasyonların Sayısına İlişkin Planlamaları Üç Aylık Operasyon Araştırması (1970-1977), 23. Cilt, 3 Sayı (Eylül, 1972), s. 333-344. |
CHRISTOFIDES
|
Christofides algoritması (maksimum olarak, maksimum eşleme yerine maksimum eşleme kullanan Christofides algoritmasının bir varyasyonudur). Rotalar, düğüm eklenebilene kadar uzatılarak genel araç yönlendirme modellerinde çalışır. Nicos Christofides'e başvurun, En kötü örnek, gezginler için satış problemi için yeni bir bulgudur, Rapor 388, Yüksek Lisans Endüstri Yönetimi, CMU, 1976. |
ALL_UNPERFORMED
|
Tüm düğümleri devre dışı bırak. Yalnızca düğümlerin isteğe bağlı olması durumunda bir çözüm bulur (sonlu ceza maliyeti olan bir ayrılma kısıtlamasının öğesi). |
BEST_INSERTION
|
En ucuz düğümü en ucuz konuma ekleyerek tekrarlı olarak çözüm oluşturun; ekleme maliyeti, yönlendirme modelinin küresel maliyet işlevine göre belirlenir. 2/2.2012 tarihinden itibaren yalnızca isteğe bağlı düğümleri (sonlu ceza maliyeti olan) modellerde çalışmaktadır. |
PARALLEL_CHEAPEST_INSERTION
|
En ucuz düğümü en ucuz konuma ekleyerek tekrarlı olarak çözüm geliştirin; ekleme maliyeti, yay maliyeti işlevine dayanır. BEST_INSERTION daha hızlı. |
LOCAL_CHEAPEST_INSERTION
|
Her düğümü en ucuz konuma ekleyerek tekrarlı olarak çözüm oluşturun; ekleme maliyeti, yay maliyeti işlevine bağlıdır. PARALLEL_CHEAPEST_INSERTION , ekleme için seçilen düğüme göre değişiklik gösterir. Burada düğümler oluşturulma sırasına göre değerlendirilir. PARALLEL_CHEAPEST_INSERTION daha hızlı. |
GLOBAL_CHEAPEST_ARC
|
En ucuz rota segmentini oluşturan iki düğümü yinelenen şekilde bağlayın. |
LOCAL_CHEAPEST_ARC
|
Bağlantısız bir takipçisi olan ilk düğümü seçin ve en ucuz rota segmentini oluşturan düğüme bağlayın. |
FIRST_UNBOUND_MIN_VALUE
|
Bağlantısız bir takipçisi olan ilk düğümü seçip kullanılabilir ilk düğüme bağlayın. Bu değer, ASSIGN_MIN_VALUE stratejisiyle birlikte CHOOSE_FIRST_UNBOUND stratejisine eşdeğerdir (cf. restrictedt_solver.h). |
Arama durumu
Yönlendirme modelinin status
yöntemini kullanarak bir aramanın durumunu döndürebilirsiniz.
Aramanın durumunu yazdıracak Python kodunu aşağıda görebilirsiniz:
print("Solver status: ", solver.status())
Bu, aşağıdaki anlamlara sahip bir tam sayı yazdırır:
Değer | Açıklama |
---|---|
0 |
ROUTING_NOT_SOLVED : Sorun henüz çözülmedi. |
1 |
ROUTING_SUCCESS : Sorun başarıyla çözüldü. |
2
|
ROUTING_PARTIAL_SUCCESS_LOCAL_OPTIMUM_NOT_REACHED : Yerel bir optimizasyona ulaşılamaması dışında, RoutingModel.Solve() çağrısı yapıldıktan sonra sorun başarıyla çözüldü. Daha fazla zaman bırakmak, çözümün iyileştirilmesine olanak tanır. |
3 |
ROUTING_FAIL : Sorunun çözümü bulunamadı. |
4 |
ROUTING_FAIL_TIMEOUT : Çözüm bulmadan önce ulaşılan süre sınırı. |
5 |
ROUTING_INVALID : Model, model parametreleri veya işaretler geçerli değildir. |
6 |
ROUTING_INFEASIBLE : Sorunun mümkün olmadığı kanıtlandı. |
Yerel arama seçenekleri
Aşağıdaki tabloda yerel arama stratejileri için seçenekler (metaforistik olarak da adlandırılır) listelenmektedir. Bu seçenekleri ayarlama örnekleri için Arama stratejisini değiştirme bölümüne bakın.
Option | Açıklama |
---|---|
AUTOMATIC |
Problem çözücünün metaforu seçmesine olanak sağlar. |
GREEDY_DESCENT |
Yerel bir minimum değere ulaşılana kadar, yerel arama komşularını iyileştirmeyi (maliyeti azaltma) kabul eder. |
GUIDED_LOCAL_SEARCH |
Yerel minimum içerikten kaçmak için rehberli yerel aramayı kullanır. (cf. Açıklamalı Yerel Arama) bu, araç yönlendirme için genellikle en verimli metalisttir. |
SIMULATED_ANNEALING |
Yerel minimumdan kaçmak için simüle doğal geçiş (ör. Simüle Edilmiş Dolaşım) kullanır. |
TABU_SEARCH |
Yerel minimumdan kaçmak için sekme araması kullanır (ör. Sekmeu Arama). |
GENERIC_TABU_SEARCH |
Yerel minimum değeri atlatmak için çözümün nesnel değerinde tabu aramasını kullanır. |
Yayılım denetimi
Ad | Type | Varsayılan | Açıklama |
---|---|---|---|
use_full_propagation
|
bool | true | Yönlendirme modelinde tam yayılımlı kısıtlamaları kullanın (yalnızca ışık yayılımı yerine). Tam yayılım, yalnızca derin öncelikli arama kullanılırken veya ikincil değişkenlerin değerini kesinleştirmek için güçlü bir yayılım gerektiren modeller için gereklidir. Bu ayarın doğru değerine ayarlanması, çoğu durumda aramayı yavaşlatır ve tüm durumlarda bellek tüketimini artırır. |