Bu sayfada yeni özellikler, hata düzeltmeleri, kod iyileştirmeleri ve yükleme prosedürleri de dahil olmak üzere VEYA Araçları'ndaki değişiklikler listelenmektedir.
VEYA Araçları'nı yüklerken sorun yaşıyorsanız VEYA Araçları yükleme talimatlarındaki Sorun giderme bölümünü kontrol edin. Sorununuz bu listede yoksa GitHub'daki sorunları kontrol edin veya yeni bir sorun açmaktan çekinmeyin. Size yardımcı olmaktan memnuniyet duyarız.
Aşağıda, en son sürümden başlayarak OR araçları için sürüm notları verilmiştir.
Mayıs 2024
OR-Tools v9.10 kullanıma sunuldu
OR-Tools v9.10 yayınlandı. Sürümünüzü güncellemek için VEYA-Araçları Yükleme'nin ilgili bölümüne bakın.
Sürüm notunu github'da bulabilirsiniz.
Mart 2024
OR-Tools v9.9 kullanıma sunuldu
OR-Tools v9.9 yayınlandı. Sürümünüzü güncellemek için VEYA-Araçları Yükleme'nin ilgili bölümüne bakın.
Sürüm notunu github'da bulabilirsiniz.
Kasım 2023
OR-Tools v9.8 kullanıma sunuldu
OR-Tools v9.8 yayınlandı. Sürümünüzü güncellemek için VEYA-Araçları Yükleme'nin ilgili bölümüne bakın.
Platform değişiklikleri
- Python 3.12'yi ekleyin.
- Ubuntu 23.10 için destek ekleme
Doğrusal Çözücü
ModelBuilder
numaralı bağlantı noktasını .Net'e bağlayın.- SAT LogCallback ile çakışmayı önlemek için
LogCallback
adınıMbLogCallback
olarak değiştirin. - ModelBuilder API'yi genişletin:
- Gösterge kısıtlamaları ekleyin.
- İpucu desteği ekleyin.
- Model klonlama ekleyin.
Matematik Seçeneği
- Kapsamlı yeniden çalışma.
Yönlendirme
ROUTING_OPTIMAL
durumunu ekle.RoutingModel
içeriğini kopyalanamaz veya taşınamaz hâle getirin.- Yerel arama operatörlerindeki bazı sonsuz döngü hataları düzeltildi.
PickupDeliveryPosition
dahili yapısı ekleyin.IsPickup()
veIsDelivery()
yöntemlerini ekleyin.
SAT
- Büyük modellerde bellek ayak izini azaltın.
- Gelişmiş planlama araması.
- packing_precedences_lns parametresini ekleyin.
- fizibilite atlayışını optimize etme ve düzeltme.
- doğrusal çözümü optimize etme ve daha iyi çözümleme günlük kaydı tutma.
int_abs
,int_mod
,int_prod
velin_max
için çözümü iyileştirin.- Panda desteğini iyileştirin
- Birkaç hata düzeltmesi.
Ağustos 2023
OR-Tools v9.7 kullanıma sunuldu
OR-Tools v9.7 yayınlandı. Sürümünüzü güncellemek için VEYA-Araçları Yükleme'nin ilgili bölümüne bakın.
Platform değişiklikleri
- Centos-8'i (EOL) bırakın.
- Debian 10'u bırakın.
- Fedora
[33, 36]
(EOL) açılır. - Ubuntu 18.04 LTS (EOL) sürümünü bırakın.
- Drop Python 3.7 (EOL).
- CMake'de (EOL)
netcore3.1
desteğini devre dışı bırak.
Model Oluşturucu pitonu
- Değişkenler oluşturmak için Pandas veri çerçevelerinin ve serilerinin kullanılmasına izin ver.
- ödev adlı makaleyi inceleyin
- bkz. bin_packing
- Yazma bilgilerini tamamlayın
PDLP
- çeşitli güncellemeler.
CP-SAT
- Performans iyileştirmeleri. (fasibility_jump, lin_max)
- Kesim yönetimini iyileştirin
- Hedefin alt sınırını iyileştirmeye adanmış yeni destination_shaving_search çalışanı (küçültme sırasında)
- cp_model.py pythonu için ek açıklamalar yazma
- cp_model.py'de pandalar için deneysel kısmi destek
- ödev adlı makaleyi inceleyin
- bkz. bin_packing
- Deneysel yerel arama ihlali tabanlı çalışanlar:
- şu parametrelerle etkinleştirildi: num_violation_ls:xxx
- doğrusal model için optimize edildi (
linear
,bool_or
,bool_and
,at_most_one
,exactly_one
) - lin_max, ürün, bölüm ile doğru şekilde çalışır
- no_overlap, kümülatif, devre, rotaları destekler
- no_overlap_2d ile devre dışı bırakıldı
- önerilen ls çalışan sayısı:
num_workers
->num_violation_ls
:(8, 1), (16, 2) (24, 3), (32, 4)
Mart 2023
OR-Tools v9.6 kullanıma sunuldu
OR-Tools v9.6 yayınlandı. Sürümünüzü güncellemek için VEYA-Araçları Yükleme'nin ilgili bölümüne bakın.
Platform değişiklikleri
- Fedora 37, 38 desteğini ekleyin.
- Drop Python 3.6 (
protobuf
tarafından desteklenmez). - macOS'te Python 3.7'yi bırakın (
scipy
tarafından desteklenmez). - CMake'de
net7.0
desteği ekleyin (-DUSE_DOTNET_7=ON
kullanın) - nuget .org paketlerinde
netcore3.1
öğesini bırakın
Bağımlılıklar
- SCIP
v801
->v803
(not: artık SCIP, OSI uyumlu bir lisans kullanmaktadır) - abseil
20220623.1
->20230105.0
- Protokol
v21.5
->v21.12
4.1.1
DÖNÜŞTÜR- Java JNA
5.11.0
->5.12.1
Bazel
- pybind11 desteğini ekleyin.
- Java sarmalayıcı desteği ekleyin.
Çözücüler
- PDLP: dd python sarmalayıcısı.
- CP-SAT: Performans iyileştirmeleri.
- GLOP: Çözümle ilgili ince ayar.
- ModelBuilder: Python: Numpy desteğini iyileştirin.
- Yönlendirme: Performans iyileştirmeleri (yerel arama)
Bilinen Sorunlar:
- CP-SAT:
pseudo_costs
alt çözücü, Geçersiz parametreler döndürür (#3706'ya bakın).
Kasım 2022
OR-Tools v9.5 kullanıma sunuldu
OR-Tools v9.5 yayınlandı. Sürümünüzü güncellemek için VEYA-Araçları Yükleme'nin ilgili bölümüne bakın.
Platform değişiklikleri
- Debian Sid desteğini ekleyin.
- Fedora 35, 36 desteğini ekleyin.
- Ubuntu 22.10 desteğini ekleyin.
- macOS'te Python 3.6'yı bırakın.
- Python 3.11 desteğini ekleyin.
Bağımlılıkları Güncelleme
- Protokol
v19.4
->v21.5
. - SCIP Çözücü
v800
->v801
.
CP-SAT
- İyileştirmeleri giderme: maksimum(dizi), Boole kısıtlamaları, doğrusal kısıtlamalar.
- Boşluk eklenen arama, paralel olarak deterministik olmalıdır.
- Doğrusal kesmeler: kare ve int_prod kesimlerini temizleyin; kesme ardışık düzenini yeniden yazın.
- Parmak izi giriş modeli ve çözümü (günlükte görünür).
- Planlama iyileştirmeleri.
- Olağan bir grup hata düzeltmesi (çözümleme sırasındaki kilitlenme, geçişlerde çökme, uygulanabilir olmayan çözümler, LNS'de model uygulanabilir değil).
GLOP
- Doğrusal cebiri ve pivot seçim kuralını yeniden yazarak hızınızı artırın.
Doğrusal Çözücü
knapsack_interface.cc
ekleyin.- model_builder API'sini linear_solver dizininin altına taşıyın (başlıklar ve örnekler).
- Gurobi 10 için destek ekleyin.
Yönlendirme
- Çeşitli yönlendirme sorgulamaları için birkaç ayrıştırıcıyı serbest bırakın.
Ağustos 2022
OR-Tools v9.4 kullanıma sunuldu
OR-Tools v9.4 yayınlandı. Sürümünüzü güncellemek için VEYA-Araçları Yükleme'nin ilgili bölümüne bakın.
Platformlar
- Debian-10 desteğini ekleyin (bkz. #3029).
- Ubuntu 22.04 LTS desteğini ekleyin (#3276'ya bakın). Not: .Net 3.1 desteği sunulmaz (bkz. dotnet/core#7038).
- Ubuntu 21.10 desteğini kaldırın.
Çeşitli
- Arşivi dillere göre bölün ve CMake yapılandırmasını C++1'e (3.200) ekleyin.
Grafik
ortools.graph.pywrapgraph
şu şekilde böl:
ortools.graph.python.linear_sum_assignment
.ortools.graph.python.max_flow
.ortools.graph.python.min_cost_flow
.
Bu, problemlerin kurulumunu hızlandırmak için numpy'nin kullanılmasını sağlar.
CP-SAT
Şu konularda bazı iyileştirmeler yapıldı:
- zaman çizelgesi (yayılma, geçişler, alt sınırlar).
- MaxSAT (presolve, temel tabanlı buluşsal yöntemler).
- MIP performansı (presolve, kesimler).
Mart 2022
OR-Tools v9.3 kullanıma sunuldu
OR-Tools v9.3 yayınlandı. Sürümünüzü güncellemek için VEYA-Araçları Yükleme'nin ilgili bölümüne bakın.
Platform değişiklikleri
- Debian-10 desteğini bırakın.
- Ubuntu-16.04 desteğini bırakın.
- .NET Framework 4.5.2'yi bırakın.
Bağımlılıkları Güncelleme
- Eigen
3.4.0
değerini ekleyin. - Google re2
2021-11-01
'yi ekleyin. - Protokol
3.19.1
->3.19.4
. - SCIP
7.0.1
->v800
.
Python
- pybind11 kodunu ekleyin.
Özellikler
- PDLP'yi deneysel olarak ekleyin.
- MathOpt'i deneysel olarak ekleyin.
CP-SAT
- Tutarlılık için birkaç API yeniden adlandırıldı (ör.
LinearExpr.ScalProd.
->LinearExpr.WeightedSum.
). AddAtLeastOne
/AddAtMostOne
/AddExactlyOne
yöntemleri ekleyin.AddMultiplicationConstraint(z, x, y)
dilini tüm dillerde ekleyin.AddMultipleCircuit()
dilini tüm dillerde ekleyin.
C++
- Uygunsuz aktör
IntVar(BoolVar)
. LinearExpr::Add*
etiketi kaldırıldı veLinearExpr +=
operatörle değiştirildi.- Doğrusal ifadelere aritmetik operatörler ekleme.
LinearExpr::BooleanSum/BooleanScalProd
kaldırıldı,Sum/WeightedSum
kullanın.- Değişkenin alanının üzerine yazan
CpModelBuilder::FixVariable()
özelliğini tek bir değere ekleyin.
Java
LinearExpr
ifadesini yeniden yazın ve bir artımlı derleyici sınıfı ekleyin:LinearExpr.newBuilder().add(x).addSum(<array of variables>).build()
.- C++ API'sini takip edin:
Circuit
,MultipleCircuit
,Cumulative
,Reservoir
,AllowedAssignment
veForbiddenAssignment
artık yeni değişkenler, terimler, talepler eklemek için artımlı API'ye sahip özel bir sınıf döndürüyor.
C
- Tüm yöntemleri belgeleyin.
- C++ API'sini takip edin:
Circuit
,MultipleCircuit
,Cumulative
,Reservoir
,AllowedAssignment
veForbiddenAssignment
artık yeni değişkenler, terimler, talepler eklemek için artımlı API'ye sahip özel bir sınıf döndürüyor. - İfadeleri aşamalı olarak oluşturmak için
LinearExprBuilder
sınıfı ekleyin.
Derleme Sistemi
CMake
- En az CMake >= 3,18 kullanılmasını gerektirir.
Marka
- Şimdi CMake tabanlı derlemeyi dahili olarak kullanın.
Aralık 2021
OR-Tools v9.2 kullanıma sunuldu
OR-Tools v9.2 yayınlandı. Sürümünüzü güncellemek için VEYA-Araçları Yükleme'nin ilgili bölümüne bakın.
Platform değişiklikleri
- Ubuntu 21:10 (son yayınlanan sürüm) için destek ekleyin.
Bağımlılıkları Güncelleme
- .Net TFM güncellemesi net5.0 -> net6.0 (.Net SDK 6.0 LTS ve .Net SDK 3.1 LTS gerekir).
- abseil-cpp 20210324.2 -> 20211102.0.
- Protobuf 3.18.0 -> 3.19.1.
- Googletest 1.10.0 -> 1.11.0.
- Python: numpy >= 1.13.3 ifadesini ekleyin.
- MacOS'te, koşucuların kilitlenmesini önlemek için
-O1
içinde Coin-OR derleyin.
Yönlendirme
- Filtrelerde iyileştirme yapıldı.
- İlk çözüm bulgularını geliştirin.
- Zaman arası yerleşimlerini iyileştirin.
CP-SAT
Zarar veren değişiklikler
- Temel protokol arabelleği önceki sürümlerle uyumlu değil. Depolanan protokol arabelleklerinin güncellenmiş derleyici API'leriyle (C++, Python, Java ve .NET'te) yeniden oluşturulması gerekir
- Özellikle, aralıklı protokol arabelleği sadeydi. Bunun nedeni, eski alanları (başlangıç, boyut ve bitiş) kaldırıp yenilerini, kaldırılan alanların adlarını kullanacak şekilde yeniden adlandırdığımız (
_view
ile) oldu.
Yeni özellikler
all_different
,reservoir
,modulo
,multiplication
vedivision
kısıtlamaları, tam sayı değişkenlerinin gerektiği her yerde afin ifadeleri (a * var + b
) kabul eder.- Hedef, kayan nokta katsayılarını kabul etmektedir (C++/Java/.NET'teki
DoubleLinearExpr
sınıfını inceleyin. Python'dakiknapsack_2d_sat.py
örneğine bakın). no_overlap_2d
kısıtlaması, isteğe bağlı aralıkları destekler.- C++ API, ifadeler oluşturmak için
+
ve*
operatörlerini uygular.
İyileştirmeler
- İyileştirilmiş presolve kodu.
- Daha sıkı model kontrol aracı.
- Rezervuar kısıtlaması.
- no_overlap_2d kısıtlaması için enerjik kesimler ekleyin.
- Kodlama kısıtlamalarının doğrusal gevşetilmesi iyileştirildi
(
literal implies var == value
).
Kullanımdan kaldırılan ve kaldırılan yöntemler
- C++
BooleanSum
veBooleanScalProd
kullanımdan kaldırıldı.Sum
veScalProd
kullanmanız yeterlidir. - C++
AddLinMinEquality
veAddLinMaxEquality
kaldırıldı.AddMinEquality
veAddMaxEquality
kullanmanız yeterlidir.
Gelecekteki uyumsuzluklar
- Gelecekte bir noktada, Java modelleme katmanını C++ katmanına daha yakın olacak şekilde yeniden yazacağız.
- C++ modelleme katmanında, IntVar(BoolVar) kaktörünü açık hale getireceğiz.
- python API PEP 8'i (snake_case adları kullanarak) uyumlu hale getirmeyi düşünüyoruz. Böyle bir durumda, kodu taşımak için bir sed dosyası sağlarız.
Derleme Sistemi
Bazel
- Windows derlemesini düzeltin.
CMake
FETCH_PYTHON_DEPS
seçeneği ekle (varsayılan ayar:ON
).- GPLK çözücü için isteğe bağlı destek ekleyin (varsayılan
-DUSE_GLPK=OFF
).
Python
- CP-SAT API'nin çoğunda
numpy
tam sayısını destekler. - Eksik
__version__
düzeltmesi.
Eylül 2021
OR-Tools v9.1 kullanıma sunuldu
OR-Tools v9.1 yayınlandı. Sürümünüzü güncellemek için VEYA-Araçları Yükleme'nin ilgili bölümüne bakın.
Platform değişiklikleri
- Python:
manylinux2014
görüntüsü kullanın (bkz. PEP 599). - Python:
manylinux2014_aarch64
görüntüsünü kullanarak aarch64 linux desteği ekleyin. - .Net: .Net 5.0 desteğini ekleyin.
Bağımlılıkları Güncelleme
- abseil-cpp 20210324.1 -> 20210324.2.
- Protobuf 3.15.8 -> 3.18.0.
- SCIP 7.0.1 -> ana.
- Googletest 1.8.0 -> 1.10.0.
- python:
cp_model.py
içindewarning
kullanımı (bkz. #2530). - python: absl-py 0.11 -> 0.13.
CMake
- Bump minimum sürüm 3.14 -> 3.15 gerekir (bkz. #2528).
- Python: Bump minimum gerekli sürüm 3.14 -> 3.18 (bkz. #2774).
Marka
Make tabanlı derleme kullanımdan kaldırıldı. Kaynaktan derlemek için lütfen CMake veya Bazel'e geçiş yapın.
Java
- Yerel kitaplık yükleyicisinin dayanıklılığını artırın (bkz. #2742).
- Yönlendirme modeli veya kısıtlama çözücü atılırken JVM Çöp Toplayıcı kilitlenmesi düzeltildi (bkz. #2091) (bkz. #2466).
- Birden çok çalışan kullanılırken CP-SAT günlük geri çağırma kilitlenmesi düzeltildi (bkz. #2775).
CP-SAT
- LNS kodunun sağlamlığını iyileştirin (bkz. #2525).
- Planlama kodunu iyileştirin: Sabit boyut aralıkları oluşturmak için yeni fabrika yöntemleri, yeni arama bulguları, iyileştirilmiş çözümleme ve yeni doğrusal kesmeler.
- Yönlendirme kodunu iyileştirin: yeni ve özel LNS.
- Model denetleyicisini iyileştirin. Şu anda, özellikle de potansiyel taşmalar konusunda daha bilgili.
- MIP kodunu iyileştirin: MIP ve CP modellerinin doğrusal gevşetmesinde daha iyi çözüm ve birden fazla iyileştirme.
- Arama çeşitliliğini artırın. 12'den fazla çalışan kullanırken hedefin alt sınırını iyileştirmeye ayrılmış çalışanlar ekleyin.
- Paralellik koduna geçiş yapın: Problem çözme aracı artık varsayılan olarak mevcut tüm çekirdekleri kullanacaktır. Paralellik düzeyini belirtmek için
num_search_parameters
kullanın. SearchAllSolutions
veSolveWithSolutionCallback
öğelerini kullanımdan kaldırın.- Python API:
model.Add()
çağrısı dışındavar == ...
veyavar != ...
kullanırken daha ayrıntılı kontroller.
Nisan 2021
OR-Tools v9.0 kullanıma sunuldu
OR-Tools v9.0 yayınlandı. Sürümünüzü güncellemek için VEYA-Araçları Yükleme'nin ilgili bölümüne bakın.
Bağımlılık güncellemeleri
- Abseil-cpp 20200923.3, 20210324.1 LTS olarak güncellendi.
- Protobuf'un 3.15.3 sürümü, 3.15.8 sürümüne güncellendi.
- Java: jna-platform 5.5.0, 5.8.0 olarak güncellendi
Java
- OR-Araçlar artık Maven Central'da kullanılabilir (bkz. com.google.ortools:ortools-java).
Hata düzeltmeleri
- CP-SAT çözücüyü kullanırken çoklu iş parçacığı işlemeyi iyileştirin (bkz. #1588).
std::vector<std::string>
için Python sarmalayıcı desteğini düzeltin (#2453'e bakın).- CPLEX desteğini yeniden çalışın (bkz. #2470).
Bilinen zarar veren değişiklik
- Python, Java ve .Net'te günlük kaydı erişimi ekleyin (bkz. #2245).
- Tüm özel Google türlerinin
cstdint
içinde sağlananlarla değiştirilmesi.
CP-SAT
SearchForAllSolutions()
,SearchAllSolutions()
veSolveWithSolutionCallback()
yöntemleri kullanımdan kaldırılmıştır. Lütfen bunun yerineSolve()
politikasını kullanın.- Python standart operatör desteğini iyileştirin. Bu, mevcut yanlış kodu bozabilir.
Mart 2021
OR-Tools v8.2 kullanıma sunuldu
OR-Tools v8.2 yayınlandı. Sürümünüzü güncellemek için VEYA-Araçları Yükleme'nin ilgili bölümüne bakın.
Bağımlılık güncellemeleri
- Abseil-cpp 20200923.2, 20200923.3 LTS olarak güncellendi.
- Protobuf'un 3.14.0 sürümü, 3.15.3 sürümüne güncellendi.
Yönlendirme
RoutingModel.RegisterTransitMatrix()
veRoutingModel.RegisterUnaryTransitVector()
eklendi.RoutingModel.AddVectorDimension()
veRoutingModel.AddMatrixDimension()
dönüşlerini,int
değeri geçiş değerlendirici kimliği olanstd::pair<int, bool>
olarak değiştirin.
Aralık 2020
OR-Tools v8.1 kullanıma sunuldu
OR-Tools 8.1 sürümü yayınlandı. Sürümünüzü güncellemek için VEYA-Araçları Yükleme'nin ilgili bölümüne bakın.
Bağımlılık güncellemeleri
- Abseil-cpp 20200923, 20200923.2 LTS olarak güncellendi.
- Protobuf'un 3.13.0 sürümü, 3.14 sürümüne güncellendi.
- Gurobi 9.1.0 için destek ekleme
- GLog bağımlılığını bırakma (abseil-cpp işaretlerine bağlı özel bir uygulama ile değiştirilir)
- GFlag bağımlılığını bırakma (abseil-cpp flags bileşeni ile değiştirilir)
Hata düzeltmeleri
- Gurobi kayan lisansının çift sayımını düzeltin (bkz. #2227).
- Windows derlemesini düzeltme (#2200 bölümüne bakın).
Ekim 2020
OR-Tools v8.0 kullanıma sunuldu
OR-Tools 8.0 sürümü yayınlandı. Sürümünüzü güncellemek için VEYA-Araçları Yükleme'nin ilgili bölümüne bakın.
Platform değişiklikleri
- Python 3.9 desteği eklendi (#2187)
- Python 3.5 desteği kaldırıldı (#2186)
<!-- Microsoft noktanet-sdk desteği bekleniyor, sürüm yayınlandıktan sonra oluşturulabilir...
- Ubuntu 20.10 (#2188) için destek eklendi -->
- Ubuntu 16.04 LTS desteği kesildi (#2188)
- Ubuntu 19.10 desteği kesildi (#2188)
Bağımlılık güncellemeleri
- Abseil-cpp 20200225.2, 20200923 LTS olarak güncellendi.
- Protobuf'un 3.12.2 sürümü, 3.13.0 olarak güncellendi.
Bilinen zarar veren değişiklik
- Artık Yönlendirme ve CP-SAT kaynak kodunda bazı
C++17
özellikleri kullanılıyor. Uyarı: Kendiabseil-cpp
sürümünüzü sağlıyorsanız lütfen bu sürümünC++17
ile derlendiğini de doğrulayın. MPSolver::CreateSolver
imzası değiştirildi. Model adı bağımsız değişkeni atlandı.
CMake
-DUSE_SCIP=OFF
kullanılırken SCIP desteğini devre dışı bırakma sorununu düzeltme (bkz. #2129).- Örnekleri ve örnekleri CMake derleme sistemine entegre edin.
not:
-DBUILD_SAMPLES=OFF
ve-DBUILD_EXAMPLES=OFF
kullanılarak devre dışı bırakılabilir. Not:-DBUILD_<LANG>_SAMPLES=OFF
veya-DBUILD_<LANG>_EXAMPLES=OFF
kullanılarak belirli bir dil için devre dışı bırakılabilir.- Şu hedefler arasında
<LANG>
olanlar: CXX
,PYTHON
,JAVA
veDOTNET
.
- Şu hedefler arasında
Marka
Make >= 4.3
öğesini gerektirir (Make eval işlevinin kullanılması).CMake >= 3.14
(CMake --ayrıntılı seçeneği kullanımı) gerektirir.-DUSE_SCIP=OFF
kullanarak SCIP desteğini devre dışı bırakma seçeneği ekleyin (#2134'e bakın).-DUSE_COINOR=OFF
kullanarak CLP ve CBC desteğini devre dışı bırakma seçeneği ekleyin.
Java
- VEYA araçları artık maven paketleri oluşturmaktadır (bkz. #202).
Hata düzeltmeleri
- FreeBSD'deki C++ ve Python derlemesini düzeltin (bkz. #2126).
- Pencerelerde derlemedeki hata ayıklama sorunlarını düzeltin (bkz. #2077).
- Windows'da CP-SAT'de uzun süre devam eden kilitlenme sorunu düzeltildi (bkz. #2001, #2019).
Temmuz 2020
OR-Tools v7.8 kullanıma sunuldu
OR-Tools 7.8 sürümü yayınlandı. Sürümünüzü güncellemek için VEYA-Araçları Yükleme'nin ilgili bölümüne bakın.
Bağımlılık güncellemeleri
- Gurobi 9.0.2 artık önceden oluşturulmuş ikili programlara önceden entegre edilmiştir. MAC OS X ve Windows'daki Gurobi yükleyicilerinin varsayılan yükleme yolunda veya GUROBI_HOME dizininde gurobi 90 paylaşılan kitaplığını arar.
- SCIP 7.0.1 artık önceden oluşturulmuş ikili programlara entegre edilmiştir. Lütfen SCIP lisansını kullanmadan önce uygunluğundan emin olun.
- İsteğe bağlı Xpress Solver 8.9.0 desteği eklendi.
Doğrusal Çözücü
- Entegre doğrusal çözücü arka uçlarıyla ilgili desteğin kontrol edilmesini kolaylaştırmak için statik
LinearSolver::CreateSolver()
yöntemi eklendi. Tüm dillerde çalışır.
Hata düzeltmeleri
- FreeBSD'deki CMake tabanlı derleme düzeltildi.
- Kümülatif kesim oluşturmada CP-SAT sıralaması düzeltildi.
- .Net sarmalayıcıdaki doğrusal çözücü bellek sızıntısı düzeltildi.
Haziran 2020
OR-Tools v7.7 kullanıma sunuldu
OR-Tools 7.7 sürümü yayınlandı. Sürümünüzü güncellemek için VEYA-Araçları Yükleme'nin ilgili bölümüne bakın.
Bağımlılık güncellemeleri
- Abseil-cpp b832dce, c51510d (LTS 20200225.2) olarak güncellendi.
- Protobuf'un 3.11.4 sürümü, 3.12.2 sürümüne güncellendi.
Yeni özellikler ve iyileştirmeler
- CP-SAT çözücü, artık bir memnuniyet modelinde (yani hedefsiz)
Feasible
yerineOptimal
değerini döndürüyor. - MIP topluluğundan fizibilite pompası buluşsal yöntemi eklendi.
Hata düzeltmeleri
CP-SAT Çok iş parçacığı işleme kilitlenmesi düzeltildi (bkz. #2005).
Nisan 2020
OR-Tools v7.6 kullanıma sunuldu
OR-Tools 7.6 sürümünü yayınladık. Sürümünüzü güncellemek için VEYA-Araçları Yükleme'nin ilgili bölümüne bakın.
CP-SAT'nin yeni özellikleri
CP-SAT çözücüye aşağıdaki yeni özellikleri ekledik:
- LP'ler için kesme uçaklarına yönelik iyileştirilmiş yönetim.
- Hata ayıklama araçları.
Bağımlılık güncellemeleri
Abseil-cpp 8ba96a8, b832dce olarak güncellendi (LTS 20200225).
Hata düzeltmeleri
- presolve'daki CP-SAT UNSAT hatası düzeltildi (bkz. #1908).
- swigwin.exe url'si düzeltildi.
- Java ve .Net için SWIG tür haritası yönetimi düzeltildi.
Ocak 2020
OR-Tools v7.5 kullanıma sunuldu
OR-Tools 7.5 sürümü yayınlandı. Sürümünüzü güncellemek için VEYA-Araçları Yükleme'nin ilgili bölümüne bakın.
Platform değişiklikleri
- Python 3.8 desteği eklendi (#1719)
- Visual Studio 2017'deki kaynaklardan destek derlemesi kaldırıldı (#1852).
- Centos 7 desteği, Centos 8 olarak güncellendi (#1827).
Bağımlılık güncellemesi
Hata düzeltmeleri
OR-Tools 7.5 sürümünde aşağıdaki sorunlar düzeltildi (Tam liste için Milestone v7.5'e bakın).
Özellikle:
- Assembly yüklemesi düzeltildi. #1421 bölümüne bakın.
- RouteIndexManager'ın
GetStartIndex()
veGetEndIndex()
yöntemleri kullanıma sunuldu (#1843). - Bozuk yöntemleri kaldırmak için SWIG düzeltildi (#1838, #1276).
Ekim 2019
OR-Tools v7.4 kullanıma sunuldu
OR-Tools 7.4 sürümü yayınlandı. Sürümünüzü güncellemek için VEYA-Araçları Yükleme'nin ilgili bölümüne bakın.
Yeni özellikler ve iyileştirmeler
- CP-SAT çözücü, artık yaptırım değişmez değerlerini desteklemeyen kısıtlamaları kontrol eder. Böyle bir kısıtlamanın yaptırım değişmez değeri varsa model denetleyici, çözmeden önce bir hata döndürür.
- Yönlendirme kitaplığı için daha iyi ve daha hızlı yerel arama.
- Doğrusal çözücü artık Xpress-MP üçüncü taraf yazılımını desteklemektedir. VEYA araçlarını kullanmak için kaynaktan yeniden oluşturmanız gerekir.
- NuGet paketinin mimarisi tamamen yeniden yazıldı. Özellikle artık Windows platformlarında 4 .5.2 veya üstü.NET çerçevesini destekliyor.
Desteği sonlandırılan platform
Temmuz 2019 sürüm notlarında duyurulduğu gibi, OR araçları artık Python 2.7'yi desteklememektedir.
Bağımlılık güncellemesi
Protobuf 3.9.0, 3.10.0 olarak güncellendi.
Ağustos 2019
OR-Tools v7.3 kullanıma sunuldu
OR-Tools 7.3 sürümünü yayınladık. Sürümünüzü güncellemek için VEYA-Araçları Yükleme'nin ilgili bölümüne bakın.
Desteği sonlandırılan platform
Google'ın Python 3'e geçişiyle uyumlu olması için Python 2.7 desteğimizi sonlandırıyoruz. Bu, Python 2.7'yi destekleyen son OR araçları sürümü olacaktır.
Bağımlılık güncellemesi
Protobuf 3.8.0, 3.9.0 olarak güncellendi.
Hata düzeltmeleri
OR-Tools 7.3 sürümünde aşağıdaki sorunlar düzeltilmiştir. (Tam liste için Kanban v7.3'e bakın).
Özellikle:
- Java'da init/int64 yayınlama sorunu düzeltildi (#1448),
- Boş kümülatif kısıtlamalar işlenirken çözümleme kontrolü düzeltildi.
Temmuz 2019
OR-Tools v7.2 kullanıma sunuldu
OR-Tools 7.2 sürümü yayınlandı. Sürümünüzü güncellemek için VEYA-Araçları Yükleme'nin ilgili bölümüne bakın.
Platform değişiklikleri
- Google'ın Python 3'e geçişiyle uyumlu olması için Python 2.7 desteğimizi sonlandırıyoruz. Python 2.7'yi destekleyen en fazla bir adet daha OR Araçları sürümü yayınlanacaktır.
- Ubuntu 18.10, Ubuntu 19.04'e güncellendi.
- Visual Studio 2019'daki kaynaklardan derleme desteği eklendi.
- Python 3.5 artık Windows'da desteklenmiyor. Lütfen Python 3.6 veya sonraki bir sürümü kullanın.
Bağımlılıklarla ilgili güncellemeler
- Artık CBC 2.10.3'ü hedefliyoruz.
- Artık Protobuf 3.8.0'ı hedefliyoruz.
CP-SAT
- Arama, paralellik ve doğrusal gevşetmeyle ilgili birçok iyileştirme yaptık.
- Python'a
LinearExpr.Sum()
veLinearExpr.ScalProd()
API'leri eklendi. - C# sürümünde
IntVar[].Sum()
veIntVar[].ScalProd()
API'leri kullanımdan kaldırıldı. - C++:
SolveWithModel()
,SolveCpModel()
kopyası olduğu için kaldırıldı. - Java API'ye
CpModel.addGreaterThan()
veCpModel.addLessThan()
yöntemleri eklendi.
Doğrusal çözücü
- Python, Java ve C# için
MPSolver.SetHint()
eklendi (SCIP ve Gurobi tarafından desteklenir). - Python, Java ve C# için
MPSolver.SetNumThreads()
eklendi (CBC, Gurobi ve SCIP tarafından desteklenir). - SCIP 6.0.1 desteği yeniden yazıldı.
Referans belgeleri
- Tüm diller ve tüm araçlar (algoritmalar, yönlendirme, grafik, linear_solver ve CP-SAT) için doxsigen ve pdoc3 tabanlı referans kılavuzları ekledik. VEYA-Araçlar Referans Kılavuzları'na göz atın.
- C++ (tüm ürünler) ve CP-SAT (C++, Python, Java) için referans belgeler eksiksizdir.
- Tüm C++ belgelerini Python ve Java'ya aktarma sürecindeyiz.
- .NET belgeleri eksiktir ve bu durumu iyileştirecek öngörülebilir bir çözümümüz yoktur. Hâlâ kullanılabilir API'yi gösterdiği için bunu sakladık.
Mayıs 2019
OR-Tools v7.1 kullanıma sunuldu
OR-Tools 7.1 sürümü yayınlandı. Sürümünüzü güncellemek için VEYA-Araçları Yükleme'nin ilgili bölümüne bakın.
Gerekli bağımlılıklarda yapılan değişiklikler
OR-Tools sürüm 7.1'de aşağıdaki yeni ve güncellenmiş bağımlılıklar mevcuttur:
- glog v0.3.5, v0.4.0 olarak güncellendi
- protobuf 3.6.1 sürümü, 3.7.1 sürümüne güncellendi
- Cbc'nin 2.9.9 sürümü, 2.10.1 olarak güncellendi
- Cgl'nin 0.59.10 sürümü, 0.60.1 olarak güncellendi
- Clp'nin 1.16.11 sürümü, 1.77.1 olarak güncellendi
- Osi 0.107.9, 0.108.1 olarak güncellendi
- CoinUtils'in 2.10.14 sürümü, 2.11.1 sürümüne güncellendi
CP-SAT API değişiklikleri
Aşağıdaki bölümlerde, OR-Tools 7.1'de CP-SAT API'de yapılan değişiklikler açıklanmaktadır.
- Değişken oluşturmak için Alanı kullanma.
- Doğrusal ifadede Alan adı kullanılıyor.
- Doğrusal ifade yardımcıları kullanma.
Değişken oluşturmak için Alan adını kullanma
Aşağıdaki örneklerde, bitişik olmayan alanlara sahip bir tam sayı değişkeninin nasıl oluşturulacağı gösterilmektedir.
Bu, kaldırılan NewEnumeratedIntVar()
yöntemini değiştirir.
Burada, x değişkeni 1, 3, 4 ya da 6'dan herhangi biri olabilir:
Python
model.NewIntVarFromDomain(cp_model.Domain.FromValues([1, 3, 4, 6]), 'x')
C++
model.NewIntVar(Domain::FromValues({1, 3, 4, 6}));
Java
model.newIntVarFromDomain(Domain.fromValues(new long[] {1, 3, 4, 6}), "x");
C#
model.NewIntVarFromDomain(Domain.FromValues(new long[] {1, 3, 4, 6}), "x");
Değişkenler, bir aralık listesi kullanılarak da oluşturulabilir. Aşağıda, x değişkeni 1, 2, 4, 5 veya 6 olacak şekilde sınırlanmıştır:
Python
model.NewIntVarFromDomain(cp_model.Domain.FromIntervals([[1, 2], [4, 6]]), 'x')
C++
model.NewIntVar(Domain::FromIntervals({ {1, 2}, {4, 6} }));
Java
model.newIntVarFromDomain(Domain.fromIntervals(new long[][] { {1, 2}, {4, 6} }), "x");
C#
model.NewIntVarFromDomain(Domain.FromIntervals(new long[][] { new long[] {1, 2}, new long[] {4, 6} }), "x");
Doğrusal ifadede Alan adı kullanımı
Aşağıdaki örneklerde, bitişik olmayan bir alanda doğrusal bir ifadenin nasıl sınırlanacağı gösterilmektedir. Burada, linear_expr doğrusal ifadesi 5, 6, 8, 9 ve 10'da tanımlanmıştır:
Python
model.AddLinearExpressionInDomain(linear_expr, cp_model.Domain.FromIntervals([(5, 6), (8, 10)]))
C++
model.AddLinearConstraint(linear_expr, Domain::FromIntervals({ {5, 6}, {8, 10} }))
Java
model.addLinearExpressionInDomain(linear_expr, Domain.fromIntervals(new long[][] { {5, 6}, {8, 10} }))
.Net
model.AddLinearExpressionInDomain(linear_expr, Domain.FromIntervals(new long[][] {new long[] {5, 6}, new long[] {8, 10} }));
Doğrusal ifade yardımcılarını kullanma
Aşağıdaki örnekler, toplamlar ve skaler çarpımlar oluşturmak için yardımcı yöntemlerin nasıl kullanılacağını gösterir.
Burada, x + y == 20
ve 4 * x + 2 * y = 56
dosyalarını istediğimiz yerlere bir örnek verilmiştir:\
Python
model.Add(x + y == 20) model.Add(4 * x + 2 * y == 56)
C++
cp_model.AddEquality(LinearExpr::Sum({x, y}), 20); cp_model.AddEquality(LinearExpr::ScalProd({x, y}, {4, 2}), 56);
Java
model.addEquality(LinearExpr.sum(new IntVar[] {x, y}), 20); model.addEquality(LinearExpr.scalProd(new IntVar[] {x, y}, new long[] {4, 2}), 56);
.Net
model.Add(x + y == 20); model.Add(4 * x + 2 * y == 56);
Mart 2019
OR-Tools 7.0 sürümü kullanıma sunuldu
OR-Tools 7.0 sürümü yayınlandı. Sürümünüzü güncellemek için VEYA-Araçları Yükleme'nin ilgili bölümüne bakın.
Desteklenen platformlarda yapılan değişiklikler
OR-Tools 7.0 sürümü artık aşağıdaki platformları desteklememektedir:
- Visual C++ 2015
- Ubuntu 14.04
- Linux'ta Python 3.4
Bu platformlardan birini kullanıyorsanız OR-Tools v6.10'u yükleyebilirsiniz.
Gerekli bağımlılıklarda yapılan değişiklikler
OR-Tools sürüm 7.0'da aşağıdaki yeni ve güncellenmiş bağımlılıklar mevcuttur:
- Yeni: Abseil-cpp
- gflags 2.2.1, 2.2.2 olarak güncellendi
Aşağıdaki bölümlerde VEYA Araçları 7.0'daki yeni özellikler ve geliştirmeler açıklanmaktadır.
- Yönlendirme programları için yeni dizin yöneticisi
- Teslim alma ve teslimat özellikli VRP'ler için destek
- Java ve C#için lambda işlevleri desteği
Yönlendirme programları için yeni dizin yöneticisi
OR-Tools v7.0'da, araç rota bulma programlarının yeni RoutingIndexManager
kullanması gerekir.
Bu, konumlara ait standart dizinlerin çözücü tarafından kullanılan dahili dizinlerle tutarlı olmasını sağlar ve kodunuzdaki hataları önlemeye yardımcı olur.
Yeni RoutingIndexManager
, yönlendirme programlarında bazı küçük değişiklikler gerektirir. Söz konusu değişiklikler aşağıdaki bölümlerde açıklanmıştır:
RoutingIndexManager
öğesini C++ ve Java'ya dahil edin veya içe aktarın.RoutingIndexManager
bildirinRoutingIndexManager
özelliğini boyut geri çağırmalarına ekleyin.- Çözümleri yazdırmak için
RoutingIndexManager
kullanın.
RoutingIndexManager
öğesini dahil et/içe aktar
OR-Tools 7.0'da, C++ ve Java'daki yönlendirme programlarının RoutingIndexManager
öğesini aşağıdaki örneklerde gösterildiği gibi içermesi veya içe aktarması gerekir:
C++
#include "ortools/constraint_solver/routing_index_manager.h"
Java
import com.google.ortools.constraintsolver.RoutingIndexManager;
Python ve C# içe aktarma işlemleri değişmez.
RoutingIndexManager
beyan et
OR-Tools v7.0'da yönlendirme programlarının RoutingIndexManager
özelliğini bildirmesi ve aşağıdaki örneklerde gösterildiği gibi yönlendirme modelini oluşturması gerekir:
Python
manager = pywrapcp.RoutingIndexManager(num_locations, num_vehicles, depot) routing = pywrapcp.RoutingModel(manager)
C++
RoutingIndexManager manager(num_locations, num_vehicles, depot); RoutingModel routing(manager);
Java
RoutingIndexManager manager = new RoutingIndexManager(numLocations, numVehicles, depot); RoutingModel routing = new RoutingModel(manager);
.Net
RoutingIndexManager manager = new RoutingIndexManager(numLocations, numVehicles, depot); RoutingModel routing = new RoutingModel(manager);
RoutingIndexManager
için kullanılan bağımsız değişkenler:
- Konum sayısı
- Araç sayısı
- Deponun dizini (tüm araçlar için başlangıç ve bitiş konumu)
Geri çağırma işlevleri
OR-Tools v7.0'da, geri çağırma (mesafe geri çağırması) gibi
daha sonra çözücüye ilettiğiniz geri çağırmalar oluşturmak için RoutingIndexManager
öğesini kullanmanız gerekir.
Aşağıdaki örneklerde, mesafe geri çağırmasının nasıl oluşturulacağı gösterilmektedir.
Python
def distance_callback(from_index, to_index): """Returns the distance between the two nodes.""" # Convert from routing variable Index to distance matrix NodeIndex. from_node = manager.IndexToNode(from_index) to_node = manager.IndexToNode(to_index) return data["distance_matrix"][from_node][to_node] transit_callback_index = routing.RegisterTransitCallback(distance_callback) routing.SetArcCostEvaluatorOfAllVehicles(transit_callback_index)
C++
const int transit_callback_index = routing.RegisterTransitCallback( [&data, &manager](const int64_t from_index, const int64_t to_index) -> int64_t { // Convert from routing variable Index to distance matrix NodeIndex. const int from_node = manager.IndexToNode(from_index).value(); const int to_node = manager.IndexToNode(to_index).value(); return data.distance_matrix[from_node][to_node]; }); routing.SetArcCostEvaluatorOfAllVehicles(transit_callback_index);
Java
final int transitCallbackIndex = routing.registerTransitCallback((long fromIndex, long toIndex) -> { // Convert from routing variable Index to user NodeIndex. int fromNode = manager.indexToNode(fromIndex); int toNode = manager.indexToNode(toIndex); return data.distanceMatrix[fromNode][toNode]; }); routing.setArcCostEvaluatorOfAllVehicles(transitCallbackIndex);
.Net
int transitCallbackIndex = routing.RegisterTransitCallback((long fromIndex, long toIndex) => { // Convert from routing variable Index to // distance matrix NodeIndex. var fromNode = manager.IndexToNode(fromIndex); var toNode = manager.IndexToNode(toIndex); return data.DistanceMatrix[fromNode, toNode]; }); routing.SetArcCostEvaluatorOfAllVehicles(transitCallbackIndex);
IndexToNode
yöntemi, çözücü tarafından kullanılan dahili konum dizinlerini mesafe matrisinin standart dizinlerine dönüştürür.
Geri çağırmayı önceki sürümlerde olduğu gibi doğrudan çözücüye iletmek yerine, v7.0'da ilk olarak transit callback index
, geri çağırma referansı oluşturur ve bunu çözücüye (bu örnekte SetArcCostEvaluatorOfAllVehicles
) iletirsiniz.
Boyutlar
Aşağıdaki örneklerde, kapasiteli araç rota bulma sorununu çözmek için kullanılan, talepler ve kapasiteler için nasıl bir boyut oluşturulacağı gösterilmektedir.
Python
def demand_callback(from_index): """Returns the demand of the node.""" # Convert from routing variable Index to demands NodeIndex. from_node = manager.IndexToNode(from_index) return data["demands"][from_node] demand_callback_index = routing.RegisterUnaryTransitCallback(demand_callback) routing.AddDimensionWithVehicleCapacity( demand_callback_index, 0, # null capacity slack data["vehicle_capacities"], # vehicle maximum capacities True, # start cumul to zero "Capacity", )
C++
const int demand_callback_index = routing.RegisterUnaryTransitCallback( [&data, &manager](const int64_t from_index) -> int64_t { // Convert from routing variable Index to demand NodeIndex. const int from_node = manager.IndexToNode(from_index).value(); return data.demands[from_node]; }); routing.AddDimensionWithVehicleCapacity( demand_callback_index, // transit callback index int64_t{0}, // null capacity slack data.vehicle_capacities, // vehicle maximum capacities true, // start cumul to zero "Capacity");
Java
final int demandCallbackIndex = routing.registerUnaryTransitCallback((long fromIndex) -> { // Convert from routing variable Index to user NodeIndex. int fromNode = manager.indexToNode(fromIndex); return data.demands[fromNode]; }); routing.addDimensionWithVehicleCapacity(demandCallbackIndex, 0, // null capacity slack data.vehicleCapacities, // vehicle maximum capacities true, // start cumul to zero "Capacity");
.Net
int demandCallbackIndex = routing.RegisterUnaryTransitCallback((long fromIndex) => { // Convert from routing variable Index to // demand NodeIndex. var fromNode = manager.IndexToNode(fromIndex); return data.Demands[fromNode]; }); routing.AddDimensionWithVehicleCapacity(demandCallbackIndex, 0, // null capacity slack data.VehicleCapacities, // vehicle maximum capacities true, // start cumul to zero "Capacity");
Yazdırma çözümleri
OR-Tools v7.0'da, araç rotalarını bir çözüm içinde göstermek için RoutingIndexManager
öğesini kullanmanız gerekir. Aşağıdaki örneklerde, çözümlerin desteklenen tüm dillerde nasıl yazdırılacağı gösterilmektedir.
Python
def print_solution(manager, routing, solution): """Prints solution on console.""" print(f"Objective: {solution.ObjectiveValue()}") index = routing.Start(0) plan_output = "Route for vehicle 0:\n" route_distance = 0 while not routing.IsEnd(index): plan_output += f" {manager.IndexToNode(index)} ->" previous_index = index index = solution.Value(routing.NextVar(index)) route_distance += routing.GetArcCostForVehicle(previous_index, index, 0) plan_output += f" {manager.IndexToNode(index)}\n" plan_output += f"Distance of the route: {route_distance}m\n" print(plan_output)
C++
//! @brief Print the solution //! @param[in] manager Index manager used. //! @param[in] routing Routing solver used. //! @param[in] solution Solution found by the solver. void PrintSolution(const RoutingIndexManager& manager, const RoutingModel& routing, const Assignment& solution) { LOG(INFO) << "Objective: " << solution.ObjectiveValue(); // Inspect solution. int64_t index = routing.Start(0); LOG(INFO) << "Route for Vehicle 0:"; int64_t distance{0}; std::stringstream route; while (!routing.IsEnd(index)) { route << manager.IndexToNode(index).value() << " -> "; const int64_t previous_index = index; index = solution.Value(routing.NextVar(index)); distance += routing.GetArcCostForVehicle(previous_index, index, int64_t{0}); } LOG(INFO) << route.str() << manager.IndexToNode(index).value(); LOG(INFO) << "Distance of the route: " << distance << "m"; LOG(INFO) << ""; LOG(INFO) << "Advanced usage:"; LOG(INFO) << "Problem solved in " << routing.solver()->wall_time() << "ms"; }
Java
/// @brief Print the solution. static void printSolution( DataModel data, RoutingModel routing, RoutingIndexManager manager, Assignment solution) { // Solution cost. logger.info("Objective : " + solution.objectiveValue()); // Inspect solution. logger.info("Route for Vehicle 0:"); long routeDistance = 0; String route = ""; long index = routing.start(0); while (!routing.isEnd(index)) { route += manager.indexToNode(index) + " -> "; long previousIndex = index; index = solution.value(routing.nextVar(index)); routeDistance += routing.getArcCostForVehicle(previousIndex, index, 0); } route += manager.indexToNode(routing.end(0)); logger.info(route); logger.info("Distance of the route: " + routeDistance + "m"); }
.Net
/// <summary> /// Print the solution. /// </summary> static void PrintSolution(in RoutingModel routing, in RoutingIndexManager manager, in Assignment solution) { Console.WriteLine("Objective: {0}", solution.ObjectiveValue()); // Inspect solution. Console.WriteLine("Route for Vehicle 0:"); long routeDistance = 0; var index = routing.Start(0); while (routing.IsEnd(index) == false) { Console.Write("{0} -> ", manager.IndexToNode((int)index)); var previousIndex = index; index = solution.Value(routing.NextVar(index)); routeDistance += routing.GetArcCostForVehicle(previousIndex, index, 0); } Console.WriteLine("{0}", manager.IndexToNode((int)index)); Console.WriteLine("Distance of the route: {0}m", routeDistance); }
Teslim alma ve teslimat özellikli VRP'ler için destek
OR-Tools v7.0, çeşitli konumlardan öğeleri alıp teslim eden bir araç filosu için en kısa rotaları bulmak olan araç yönlendirme
ve teslimatlar ile araç rota sorunlarını (VRP) çözmeye destek sağlıyor. Problemi standart bir VRP'ye benzer şekilde oluşturursunuz, ancak ek olarak her öğe için bir (i, j)
konum belirtirsiniz. Burada i, teslim alma konumu, j ise teslim etme konumudur. Rota çözücü, her çift için (i, j)
, i
ve j
aynı rotada olacak şekilde araç rotalarını döndürür ve araç j
tarihinden önce i
adresini ziyaret eder.
Bu tür sorunların çözümüne yönelik bir örnek için Teslim Alma ve Teslimat Özellikli Araç Rotası bölümüne bakın.
Lambda işlevleri için destek
OR-Tools v7.0 artık C# ve Java'da lambda işlevlerini destekliyor (zaten desteklenen C++ ve Python'a ek olarak). Lambda işlevleri, yönlendirme programlarında geri çağırmaları tanımlamak için kullanışlı bir yol sunar. Ancak kodunuzu daha okunabilir hale getirdiğini düşünüyorsanız standart işlevleri kullanarak geri çağırmalar tanımlayabilirsiniz.
Yukarıdaki C# ve Java geri çağırma örnekleri, lambda işlevleri kullanılarak geri çağırmaların nasıl tanımlanacağını gösterir.
Kasım 2018
6.10 sürümü kullanıma sunuldu
OR-Tools sürüm 6.10'u yayınladık. Sürümünüzü güncellemek için VEYA Araçları Yükleme'nin ilgili bölümüne bakın.
Aşağıdaki bölümlerde, 6.10 sürümündeki yeni özellikler ve iyileştirmeler açıklanmaktadır.
Program oluşturmak ve çalıştırmak için basitleştirilmiş komutlar
6.10 sürümünde aşağıdaki gibi komutlar girerek program oluşturup çalıştırabilirsiniz:
make run SOURCE=relative/path/to/program.ccBurada
<var>relative/path/to</var>
, programı içeren dizine giden yoldur.
Bir programı çalıştırmadan oluşturmak için aşağıdakileri girin:
make build SOURCE=relative/path/to/program.ccProgramları dile göre çalıştırmayla ilgili özel talimatlar için VEYA Araçları'nı Kullanmaya Başlama bölümüne bakın.
SCIP 6.0.0 için destek
VEYA-Araçlar artık SCIP 6.0.0 için destek sağlamaktadır.
İkili programlar
İkili dağıtımlar, Java JDK 8 (Ubuntu 14.04 için JDK 7) kullanılarak oluşturulmuştur.
CP-SAT Çözücü
API'yi güncelleme
- C++ CP-SAT CpModelBuilder API'yi ekleyin.
Örnekler
Bazı örnekler taşındı.
- Topluluk örneklerini
examples/contrib
grubuna taşıyın. - Bazı örnekleri
ortools/<var>component</var>/samples
öğesine taşıyın (ör.ortools/linear_solver/samples/simple_program.java
)
Eylül 2018
6.9 sürümü kullanıma sunuldu
OR-Tools sürüm 6.9'u yayınladık. Sürümünüzü güncellemek için VEYA Araçları Yükleme'nin ilgili bölümüne bakın.
Güncellenen bağımlılıklar
- Protobuf 3.5.1 -> 3.6.1.
- SCIP 4.0 -> 6.0.
CP-SAT Çözücü
- API'de yapılan önemli değişiklikler. Tüm ayrıntıları burada bulabilirsiniz:
SolveWithSolutionObserver
klasörünü Python'daSolveWithSolutionCallback
olarak yeniden adlandırın.NewSolution
adını Python'daCpSolverSolutionCallback
sınıfındaOnSolutionCallback
olarak değiştirin. Aşağıdaki örnekte, Python'da çözüm geri çağırma oluşturmanın yeni yolu gösterilmektedir.class MySolutionCallback(cp_model.CpSolverSolutionCallback): def init(self): cpmodel.CpSolverSolutionCallback.init(self) self._solution_count = 0
def OnSolutionCallback(self): print('Solution {}, time = {}s, objective = {}, makespan = {}'.format( self.solution_count, self.WallTime(), self.ObjectiveValue(), self.Value(makespan))) self.solution_count += 1
Python, Java ve C#'da çözüm geri çağırmasında
StopSearch
kullanın. Belgeleri burada bulabilirsiniz.Python, Java ve C#'da
ModelStats
veCpSolverResponseStats
komutlarını kullanıma sunun.Python docstring belgelerini iyileştirin. Belgeleri burada bulabilirsiniz.
Çözücü arayüzü ve çözüm kitabının Java uygulamasında yapılan güncellemeler.
Modül uygulayın.
Depo uygulamasını değiştirme: İsteğe bağlı boşaltma/doldurma etkinliklerini belirtmek için boole ile API ekleyin.
Doğrusal Çözücü
- Java ve C#'da
InterruptSolve
kullanıma sunun.
CP Çözücü
- C# dilinde
SolutionCollector
direktörü kullanıma sunun.
Python
Python 3.7
için destek ekleyin.- Kaynaktan derleme yaparken: Python algılamak için
python2
yerinepython3
tercih edin.
.NET
- .NET katmanının tamamen yeniden yazılması.
- Çalışma Zamanı Tanımlayıcı
win-x64
,linux-x64
veosx-x64
ile uyumlu birGoogle.OrTools
NetStandard 2.0 Nuget paketi sağlayın. - Bir
Google.OrTools.FSharp
Nuget paketi sağlayın. - Tüm .NET örnekleri için proje dosyası ekleyin.
- Tüm F# komut dosyası örneklerini (.fsx) normal F# projesine (.fs) güncelleyin.
- .NET paketi derlemesi oluşturma ile ilgili belgeleri buradan ekleyebilirsiniz.
Yassı Çinko
- Flatzinc kümeler için destek ekleyin (nosets.mzn kullanarak).
Katkılar
- Bağlayıcı için destek ekleyin. Kevin Mader'a teşekkürler.
- Java bağlamalarında
DecisionVisitor
öğesini yönetme türü yapın. Jeremy Apthorp'a teşekkürler.
Temmuz 2018
6.8 sürümü kullanıma sunuldu
OR-Tools sürüm 6.8'i yayınladık. Sürümünüzü güncellemek için VEYA Araçları Yükleme'nin ilgili bölümüne bakın.
CP-SAT çözücüyü kullanıma sunuyoruz
CP-SAT çözücü, kısıt programlama için yeni bir çözümdür. CP-SAT çözücü, orijinal CP çözücüden daha hızlıdır ve CP sorunları için tercih edilmelidir.
CP-SAT çözücüyü kullanan örnekler için GitHub'daki examples dizinine bakarak adlarında _sat
bulunan dosyaları bulun.
Orijinal CP çözücü, mevcut kodu desteklemek için bir süre daha kullanımda kalacak olsa da kullanımdan kaldırılmıştır.
CP-SAT çözücü için yeni seçenekler
CP-SAT çözücü için aşağıdaki seçenekler bu sürümde yenidir:
- Yerel mahalle arama (LNS): LNS'yi etkinleştirmek için
SatParameters.use_lns
seçeneğini kullanın. - Paralel arama: Arama sırasında birden fazla iş parçacığını etkinleştirmek için
SatParameters.num_search_workers
seçeneğini kullanın. Her iş parçacığının farklı parametreleri ve farklı rastgele tohumları olabilir. Bu, çeşitliliği ve en az bir iş parçacığının çözüm bulma olasılığını en üst düzeye çıkarır.
Çözücülere yönelik performans iyileştirmeleri
CP-SAT ve Glop çözücülerinde performans iyileştirmeleri yaptık.
Mart 2018
6.7 sürümü duyurusu
OR-Tools sürüm 6.7'yi yayınladık. Sürümünüzü güncellemek için VEYA-Araçları Yükleme aracındaki ilgili bölüme bakın.
Gerekli bağımlılıklarda güncelleme
- Protobuf 3.5.0 -> 3.5.1.
Çeşitli
- abseil-cpp entegrasyonunu hazırlamak için tabanı yeniden düzenleyin.
- Travis CI ve Appveyor sürekli entegrasyon (CI) hizmetlerinin kullanımı.
SAT
- Performans iyileştirme.
- Python API'yi iyileştirir.
- C# API (CpSolver.cs (DENEYSEL)) ekleyin.
Yerküre
- Kodu yeniden düzenleme.
- Performans iyileştirme.
CMake Desteği (DENEYSEL)
- C++ VEYA Araçlar-CMake desteği ekleyin.
- VEYA-Araçları bağımsız bir CMake projesi olarak derleyebilme.
- VEYA aracını mevcut bir CMake projesine ekleyebilme.
- Python VEYA CMake araçları için CMake tabanlı derleme ekleyin.
- CMake'i kullanarak Python paketi (tekerle) oluşturun.
Katkılar
- Pencerelerde winsock2.h yeniden tanımını düzeltin. Florent Tollin de Rivarol'a teşekkür ederiz.
- Fa# Desteği ekleyin (DENEYSEL). Matthew Moore sayesinde. Not: Yalnızca Makefile Builder ile kullanılabilir.
- .NET Standart Desteği ekleyin (DENEYSEL). Ziad El Malki'ye teşekkür ederiz. Not: Yalnızca Makefile Builder ile kullanılabilir.
Kasım 2017
6.6 sürümü kullanıma sunuldu
OR-Tools sürüm 6.6'yı yayınladık. Sürümünüzü güncellemek için VEYA Araçları Yükleme'nin ilgili bölümüne bakın.
Gerekli bağımlılıklarda güncellemeler
- Protobuf'tan 3.3.0 -> 3.5.0 değerine.
- gflags'i 2.2.0 -> 2.2.1 olarak değiştirin.
- CBC 2.9.8 -> 2.9.9.
- Python için gerekli bağımlılık olarak Python 6. modülü (1.10) ekleyin.
Hata Düzeltmeleri
- Pull isteği #494 Ad yeniden düzenleme. Bazı düzenleyicilerde IntelliSense için yorum eklemek. Matthew Moore sayesinde.
- #516 pull isteği F# bağımsız ikili programı için talimat. Matthew Moore sayesinde.
- Glop'ta kesinliği iyileştirin.
SAT Çözücü
- Dahili SAT çözücüyü iyileştirin, çeşitli hataları düzeltin.
- SAT çözücüye, LP çözücüye bağlı bir VRP kısıtlaması ekleyin.
- SAT çözücüdeki çözüm gözlemleyicisini parametre olarak
CpSolverResponse
alacak şekilde değiştirin. - SAT Çözücü'de Glop kullanımını iyileştirin.
- SAT-LP bağlantısını hızlandırın.
- SAT cp_model protobuf biçimine Rezervuar kısıtlaması ekleyin.
SAT/Python
- Python'da SAT API'ye giriş.
ortools/sat/python/cp_model.py
adresindeki kod.- examples/python/ hedefine örnekler ekleyin:
- assignment_sat.py
- assignment_with_constraints_sat.py
- code_samples_sat.py
- cp_is_fun_sat.py
- gate_scheduling_sat.py
- hidato_sat.py
- jobshop_ft06_sat.py
- nqueens_sat.py
- nurses_sat.py
- rcpsp_sat.py
- steel_mill_slab_sat.py
- worker_schedule_sat.py
- IPython not defteri için destek ekleyin.
- Python örnekleri not defterlerine aktarılır ve examples/notebook olarak bulunur.
Örnekler
- Sorunu depolamak için ProtoBuf biçimini kullanmak üzere rcpsp_parser öğesini yeniden yazın.
- RCPSP ayrıştırıcıyı iyileştirin.
Ekim 2017
6.5 sürümü kullanıma sunuldu
OR-Tools sürüm 6.5'i yayınladık. Sürümünüzü güncellemek için VEYA Araçları Yükleme'nin ilgili bölümüne bakın.
Platformlardaki değişim
- pypi modülü py3-ortools, ortools modülüyle birleştirildi. Artık yalnızca bir modül var: "ortools".
- Bu Python modüllerinin ana biçimi artık tekerlekli dosyalardır.
pypi'den python için VEYA Araçları'nı yüklemek üzere
pip install ortools
komutunu çalıştırmanız yeterlidir. pip'in yeni bir sürümünün yüklü olması gerekir (>= 9.0.1). Bunu yaptığınızda en yeni sürüm (v6.5) çekilecektir.
Bug fixed
protobuf jar dosyası artık derlenmiş sınıflarla doğru şekilde derleniyor.
Yeni Örnekler
- Örnekler/fsharp dizinine daha fazla F# örnek eklenmiştir. (Matthew Moore'a tekrar teşekkür ederiz).
- Ayrıca Java MIP örnekleri de sağlanmıştır (Teşekkürler Darian).
Eylül 2017
6.4 sürümü duyurusu
OR-Tools sürüm 6.4'ü yayınladık. Sürümünüzü güncellemek için VEYA Araçları Yükleme'nin ilgili bölümüne bakın.
Platformlardaki değişim
- Linux platformlarında Pypi modülleri artık manylinux1 etiketi kullanılarak tekerlek dosyaları olarak sunulmaktadır. Federico Ficarelli'ye teşekkür ederiz. Bu değişiklikle birlikte, Temmuz 2017 sürümünde kullanıma sunulan Linux başına modülleri geri aldık.
Yeni özellikler
- GLOP içinde kullanılan iyileştirilmiş ölçeklendirme yöntemi.
- C# yönlendirme kitaplığındaki değerlendiricilerin sarmalanması düzeltildi. DevNamedZed sayesinde teşekkürler.
- Büyük modeller için Flatzinc presolve'nın performansını iyileştirin.
- Varsayılan olarak düz çinko için desteklenen SAT'yi kullanın.
- Sat çözücü için Çekirdek tabanlı yaklaşımın performansını iyileştirin.
- Doğrusal atama algoritmasındaki hatalı olarak başarısız olan hatayı düzeltin.
- ortools/examples/fsharp konumuna F# örnekleri eklendi.
- Yönlendirme kitaplığındaki olumlu cezaların kontrolünü kaldırın.
Ağustos 2017
6.3 sürümü kullanıma sunuldu
OR-Tools sürüm 6.3'ü yayınladık. Sürümünüzü güncellemek için VEYA Araçları Yükleme'nin ilgili bölümüne bakın.
İndirilen yeni dosyalar
Linux için Python tekerlek dosyaları, artık tüm indirmelerin en son sürümleriyle birlikte VEYA-Araçları sürüm sayfasından indirilebilir.
Mikrofon çözücü
Bu sürüm, Minizc 2017 yarışması için gönderilen son sat ve Flatzinc kodunu içerir.
Temmuz 2017
6.2 sürümü kullanıma sunuldu
OR-Tools sürüm 6.2'yi yayınladık. Sürümünüzü güncellemek için VEYA Araçları Yükleme'nin ilgili bölümüne bakın.
Platformlardaki değişim
- Artık birden fazla Linux ikili dağıtımı (Ubuntu 14.04, 16.04, 17.04, CentOS 7, Debian 9) desteklenmektedir.
- Linux platformlarındaki Pypi modülleri, artık dağıtımı tanımlayan bir etiket içermektedir (ubuntu-14.04, ubuntu-16.04, ubuntu-17.04, centos-7, debian-9).
Yeni özellikler
Linux yapıları derlemek için Docker desteği ekledik. Olası hedefleri (make archive
, make pypi
ve make pypi3
) görmek için or-tools/tools/docker
sayfasına gidin ve Makefile
sütununu inceleyin.
Bu komutlar bir export
alt dizini oluşturur ve bu alt dizine ikili yapılar ekler.
Haziran 2017
6.1 sürümü kullanıma sunuldu
OR-Tools sürüm 6.1'i yayınladık. Sürümünüzü güncellemek için VEYA Araçları Yükleme'nin ilgili bölümüne bakın.
Platformlardaki değişim
- Visual Studio 2017 desteklenir; Visual Studio 2013 artık desteklenmemektedir.
- macOS 10.9 ve sonraki sürümler desteklenir.
Yeni Özellikler
CP-SAT çözücüümüz için yeni bir protobuf biçimi ekledik.
Modelinizi tanımlamak için ortools/sat/cp_model.proto
, sorununuzu çözmek için ortools/sat/cp_model_solver.h
bakın.
Hata Düzeltmeleri
Sorun 420: Tüm platformlardaki Python pypi modüllerinde eksik __version__
özelliğini düzelttik.
Mayıs 2017
6.0 sürümü kullanıma sunuldu
OR-Tools sürüm 6.0'ı yayınladık. Sürümünüzü güncellemek için VEYA Araçları Yükleme'nin ilgili bölümüne bakın.
C++ için yeni dizin yapısı
C++ kullanırken VEYA araçlarının kaynak/dahil etme yapısını değiştirdik. Hedef, C++ dahil edilecek dosyaların daha iyi bir şekilde kapsamasını sağlamak. Ayrıca C++ ile Python dizin yapılarını uyumlu hale getirme avantajı da sunar.
src/
,ortools/
olarak yeniden adlandırıldı.- C++ dosyalarındaki tüm #include komutlarına artık
ortools
öneki eklenmiştir.#include "constraint/constraint_solver.h"
artık#include "ortools/constraint/constraint_solver.h"
oldu.
Yeni özellikler
- Bazel desteği.
Artık VEYA Araçları'nı Google'ın derleme aracı olan bazel ile oluşturabilirsiniz. Linux ve Mac OS X'te çalışır. Bazel'ın 0.4.5 veya sonraki bir sürümünü indirdikten sonra dizini or-tools olarak değiştirin ve örnekleri derleyin:
bazel build examples/cpp/...
.
Yönlendirme
Yönlendirme kitaplığına, molalar için destek (ör. sürücülerin öğle yemeği yediği için kapalı kalma süresi) ekledik. Bu özellik cvrptw_with_breaks.cc
örneğinde gösterilmektedir.
SCIP desteği
Doğrusal çözücü sarmalayıcı artık SCIP 4.0'ı destekliyor. Şimdi önce SCIP'yi derleyip araçlara bu SCIP'yi kullanacağınızı söylemeniz gerekiyor. İlgili talimatlara buradan ulaşabilirsiniz.
GLPK desteği
Ayrıca, GLPK ile derleme yöntemini de değiştirdik. Buraya bakın.
Temizlik
- Kullanımdan kaldırıldığı için C++ kod tabanındaki hash_map ve hash_set kullanımlarını kaldırdık. Bunların yerini, STL'den unordered_map ve unordered_set değerleri almıştır.
- Michael Powell'ın izniyle C# dosyalarını temizleme.
Ocak 2017
5.1 sürümü kullanıma sunuldu
OR-Tools sürüm 5.1'i yayınladık. Sürümünüzü güncellemek için VEYA Araçları Yükleme'nin ilgili bölümüne bakın.
Yeni Özellikler
Yükleniyor
- VEYA Araçları'nın ikili dağıtımlardan ya da kaynak kodundan yüklenmesi için daha basit prosedürler uygulanmaya başladı. Daha fazla bilgi için İkili programdan VEYA aracını yükleme veya Kaynaktan VEYA Araçları'nı yükleme konularına bakın.
Yönlendirme
Simetrik Satış Görevlisi Sorunları için Held-Karp alt sınırını hesaplamak üzere bir algoritma uyguladı. Bu sayede, optimum olmayan bir çözümün maliyeti ile optimum çözümün maliyeti arasındaki boşluğun bir üst sınırı hesaplanabilir.
- Araç yönlendirme kitaplığına
RoutingModel::SetBreakIntervalsOfVehicle
adlı yeni yöntem eklendi. Bu yöntem sayesinde break aralıkları (bir aracın herhangi bir görevi gerçekleştiremediği dönemler (ör. seyahat etme veya bir düğümü ziyaret etme)) ekleyebilirsiniz. Bu seçeneğin kullanıldığı bir örnek için bkz. cvrptw_with_breaks.cc
Scheduling (Zaman planlama)
- Proje Planlama Kitaplığı için ayrıştırıcıda daha fazla veri biçimi desteği eklendi.
Uydu çözücü
- SAT çözücünün kümülatif kısıtlaması, artık
NewOptionalInterval
yöntemiyle oluşturulan isteğe bağlı aralıkları kabul etmektedir. Örnek için bkz. https://github.com/google/or-tools/blob/master/examples/cpp/rcpsp_sat.cc. - Artık bir Max-SAT (maksimum satisfiability_ problemi) ve hedefi, değişmez değerlerin ağırlıklı toplamı olarak belirterek çözebilirsiniz. Artık bir ara tam sayı değişkeni oluşturmak gerekmiyor.
Performans iyileştirmeleri
- SAT çözücü: Özellikle kümülatif kısıtlama için SAT çözücüsünün performansı iyileştirildi.
- Glop çözücü — Artık katı sayısal problemler için daha da doğru çözümler döndüren Glop çözücünün sayısal sağlamlığı iyileştirildi.
- Flatzinc çözücü
- Flatzinc çevirmen için Sat arka ucunun performansı büyük ölçüde iyileştirildi.
- C# Flatzinc arayüzü sadeleştirildi. Yeni arayüzle ilgili bir örnek için https://github.com/google/or-tools/blob/master/examples/csharp/csfz.cs adresine bakın.
Hata Düzeltmeleri
- Tek bir araç ve yan kısıtlamaları olan rota modellerinde
PathCheapestArc
bulgusal kullanımın kullanılması, bazen çözücünün aşırı uzun süre çalışmasına neden olabilir. Bu durum, yan kısıtlamalar doğru şekilde dikkate alınarak düzeltildi. - Java'da, rota çözme aracı bazen araç rota bulma sorunlarını çözerken çöküyordu. Bu sorun son sürümde düzeltilmiştir.
Kasım 2016
v5.0 sürümünün yayınlanmasıyla ilgili duyuru
OR-Tools sürüm 5.0'ı yayınladık. Sürümünüzü güncellemek için VEYA Araçları Yükleme'nin ilgili bölümüne bakın.
Çalışan örnekler
- Programlarınızı derlemeyi ve çalıştırmayı kolaylaştıran dile özgü hedefleri ve OR-Araçlar ile sağlanan örnekleri kullanıma sunduk.
Cts
- Kısıt programlaması için destek eklendi.
- diffn, kümülatif , devre ve alt devre kısıtlamaları uygulandı.
- Ayrık Kümülatif Kısıtlama için Maksimum Enerji Filtreleme Algoritması temel alınarak aşırı yük denetleyicisi uygulanmıştır.
- AllFarklı sınırlama için daha iyi yayılım uygulayan tüm farklı sınırlı tutarlı yayıcıları uyguladılar.
FlatZinc
- FlatZinc problemleri için bir SAT çözücü uyguladı.
Kısıtlama Çözücü
- Aşağıdaki kısıtlamalar uygulandı :
- atMost: Belirli bir değere eşit değişken sayısı için bir üst sınır belirler.
- MakePathPrecedenceConstraint ve MakePathTransitPrecedenceConstraint: Bir çift grubu için öncelik kısıtlamasını uygulayın.
Yönlendirme
- Arama sırasında her çözüm bulunduğunda çağrılan bir geri çağırma olan AddAtSolutionCallback uygulandı.
- redirectModel deposuz kurucuları kaldırıldı. Yönlendirme modelinde en az bir depo belirtmek artık zorunludur.
Eylül 2016
4.4 sürümünün yayınlanmasıyla ilgili duyuru
OR-Tools sürüm 4.4'ü yayınladık. Sürümünüzü güncellemek için VEYA Araçları Yükleme'nin ilgili bölümüne bakın.
Cts
- Kullanılacak genişletilmiş planlama API'si ve değiştirilmiş örnekler (weight_tardiness_sat vejobshop_sat).
Grafik
- Grafik sınıflarına yineleyici özellikleri eklendi.
VEYA-Araçlar dağıtımı
- Nuget paketi tekrar desteklenir.
Ağustos 2016
4.3 sürümü kullanıma sunuldu
OR-Tools sürüm 4.3'ü yayınladık. Sürümünüzü güncellemek için VEYA Araçları Yükleme'nin ilgili bölümüne bakın.
Sınır çözücü
- Bir değişkeni belirli bir aralığın dışında olacak şekilde sınırlamak için
NotBetween
yöntemi uygulandı.
yönlendirme
- Bu örnekte gösterildiği gibi mevcut
NotMember
kısıtlamalarını kontrol etmek ve yerel arama filtrelerinde kullanmak için modelin bir ayrıştırması eklendi. - Yerel arama profili oluşturma eklendi.
- Yerel nakliyat için sorunları giderin.
Doğrusal çözücü
- SCIP durumu raporlaması düzeltildi.
Cts
- SAT çözümleyicisinin kullanımını basitleştirmek için SolveWithPresolve yöntemi uygulandı.
- src/sat/util.h|cc içindeki yeniden gruplandırılmış arama yardımcıları.
- Uygulanan SMT (Geç Madde Oluşturma) zamanlama kısıtlamaları: jobshop_sat.cc ve weighted_tardiness_sat.cc alanlarını inceleyin.
Yerküre
- Daha fazla hesaplama aşamasında azlıktan yararlanılarak performans artırıldı.
Yassı Çinko
- minizinc meydan okumasının bulduğu hatalar düzeltildi.
Lp_data
- Yinelemeler halinde şablonları basitleştirmeye devam edin.
VEYA-Araçlar dağıtımı
- C# derlemeleri artık varsayılan olarak güçlü bir şekilde adlandırıldı.
- Protobuf3.0.0 sürümüne geçirildi.
- OR-Tools arşiv bağımlılıklarını kontrol etmek için bir Python komut dosyası eklendi.
Temmuz 2016
v4.2 sürümü duyurusu
OR-Tools sürüm 4.2'yi yayınladık. Sürümünüzü güncellemek için VEYA Araçları Yükleme'nin ilgili bölümüne bakın.
Kısıtlama çözücü (yönlendirme)
- Ayrıklık artık kardinalite ile tanımlanabilir. Kardinalite, bu ayrılma içinde etkin olabilecek maksimum düğüm sayısı anlamına gelir. Örneğin, n düğümlü bir ayırma ve k kardinalitesi eklerseniz n düğümleri arasındaki k düğümün aktif olmasına izin verilir. Bunun için AddDisjunction'ın yeni tanımını kullanabilirsiniz.
- Düğüm başına birden fazla ayrılma desteği eklendi. Örneğin, şimdi birçok ayrılma noktasına (D1..Dm) N1 adlı bir düğüm ekleyebilirsiniz. Bu, içlerinden herhangi birinde aktif olma şansını artırır. Ayrı zaman aralıklarıyla ilgili sorunlar için daha hızlı bir yönlendirme arama algoritması kullanıma sunuldu.
- Model parametrelerini yönlendirmeye ve arama parametrelerini yönlendirmeye log_search özelliğine sınırlama çözücü parametreleri eklendi.
- Ayrı zaman aralıklarına sahip sorunların çözümünde yerel arama algoritması daha hızlıdır. Daha fazla ayrıntı için cvrp_disjoint_tw.cc örneğini inceleyin.
Glop (doğrusal optimizasyon)
- Daha hızlı bir Simplex Algoritması kullanıma sunuldu.
VEYA-Araçlar dağıtımı
- Her C++, Java ve .Net arşivi yerine platform başına bir arşiv yerine. Python arşivleri pypi üzerinde barındırılmaya devam eder.
- pypi'de, Mac OS X ve Windows'da tekerlek (.whl) modüllerine geçtik. MAJOR.MINOR numaralandırma şeması sunuldu. Bu numaralar arşiv adları, Mac OS X paylaşılan kitaplıklarında, Python modüllerinde ve .NET derlemelerinde depolanan sürüm için kullanılır. Kullanıma sunduğumuz ilk sürüm, bu şema 4.2'dir.
Haziran 2016
2016-06 sürümü kullanıma sunuldu
OR-Tools sürüm 2016-06'yı yayınladık. Sürümünüzü güncellemek için VEYA Araçları Yükleme'nin ilgili bölümüne bakın.
Kısıtlama Çözücü
- Geri çağırma örneklerinin çoğu (src/base/callback.h) CP kitaplığından kaldırıldı.
- NotMemberCt eklendi (değişken, bir aralık grubuna ait olamaz).
Yönlendirme kitaplığı
- Uyumsuz DEĞİŞİKLİK:
AddDimensionWithVehicleCapacity
içinde araçların kapasitesini belirtmek için artık geri çağırma yerine bir dizi (c++ cinsinden bir vektör) iletmeniz gerekir.
GLOP
- Seyrek matrisin dahili gösterimini değiştirin.
- Performans iyileştirmeleri.
Grafik
- Geri çağırmaları
std::function
(C++) ile değiştirmek için Dijkstra ve Bellman-Ford algoritmalarını yeniden yazın. - Yaylar ve düğümler üzerinde yineleme yaparken farklı grafik uygulamasındaki API'leri değiştirin.
Cts
- Kullanılmayan temel yöntemi kaldırın (Çözüm düğümleri).
- Memnun kalmamayla ilgili kanıtları kontrol etmek için drat yazıcı eklendi.
- Ön işlemci ekleyin.
Bop
- Yeni mahalleler ekle'ye dokunun.
Örnekler
- c++: örneklerde dosya satırı okuyucudan kurtulma.
- data: Tek makineli zamanlama problemleri ekleme.
Belgeler
- Lütfen yeni belgeleri inceleyin.
Nisan 2016
2016-04 sürümü kullanıma sunuldu
VEYA Araçları v2016-04 sürümünü yayınladık. Sürümünüzü güncellemek için VEYA Araçları Yükleme'nin ilgili bölümüne bakın.
Güncellenen bağımlılıklar
- Kısıtlı Programlama ve yönlendirme kitaplıklarında işaretler yerine protobuf'lar kullanın. Ayrıntılar için http://or-tools.blogspot.fr/2016/02/heads-up-upcoming-incompatibility-in.html adresine göz atın.
Aralık 2015
2015-12 sürümü kullanıma sunuldu
OR-Tools sürüm 2015-12'yi yayınladık. Sürümünüzü güncellemek için VEYA Araçları Yükleme'nin ilgili bölümüne bakın.
Kısıtlama Çözücü
- CP çözücüdeki Büyük Mahalle Arama özelliğinde uyumluluk bozuldu (yeni API'yi görmek için
examples/cpp/ls_api.cc
,examples/python/pyls_api.py
,examples/csharp/csls_api.cs
veexamples/com/google/ortools/sample/LsApi.java
sayfalarını inceleyin). - Python sarmalaması temizlendi. CP çözücüde özel kararı destekleyin
(API'yi çalışırken görmek için
examples/test/test_cp_api.py
sayfasına bakın). - Çeşitli geliştirmeler ve hata düzeltmeleri.
Eylül 2015
GitHub'daki ilk sürüm duyuruluyor.
Dosyalar artık orada depolanacak.
Yassı Çinko
- Flatzinc yorumlayıcı için ikili program arşivleri eklendi (bkz. www.minizinc.org).
- Yarışmada kullanılan sürümde birkaç düzeltme içerir.