VEYA-Araçlar Sürüm Notları

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() ve IsDelivery() 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 ve lin_max için çözümü iyileştirin.
  • Panda desteğini iyileştirin
  • Birkaç hata düzeltmesi.

GitHub Değişiklik Günlüğü

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.
  • 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
  • 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)

GitHub Değişiklik Günlüğü

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ı ve LinearExpr += 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 ve ForbiddenAssignment 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 ve ForbiddenAssignment 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 ve division 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'daki knapsack_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 ve BooleanScalProd kullanımdan kaldırıldı. Sum ve ScalProd kullanmanız yeterlidir.
  • C++ AddLinMinEquality ve AddLinMaxEquality kaldırıldı. AddMinEquality ve AddMaxEquality 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çinde warning 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 ve SolveWithSolutionCallback öğelerini kullanımdan kaldırın.
  • Python API: model.Add() çağrısı dışında var == ... veya var != ... 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

Hata düzeltmeleri

  • CP-SAT çözücüyü kullanırken çoklu iş parçacığı işlemeyi iyileştirin (bkz. #1588).
  • std::vector&ltstd::string&gt 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() ve SolveWithSolutionCallback() yöntemleri kullanımdan kaldırılmıştır. Lütfen bunun yerine Solve() 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() ve RoutingModel.RegisterUnaryTransitVector() eklendi.
  • RoutingModel.AddVectorDimension() ve RoutingModel.AddMatrixDimension() dönüşlerini, int değeri geçiş değerlendirici kimliği olan std::pair&ltint, bool&gt 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ı: Kendi abseil-cpp sürümünüzü sağlıyorsanız lütfen bu sürümün C++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 ve
    • DOTNET.

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 yerine Optimal 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

  • protobuf 3.10.0 sürümü, 3.11.2 sürümüne güncellendi (#1829).

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() ve GetEndIndex() 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() ve LinearExpr.ScalProd() API'leri eklendi.
  • C# sürümünde IntVar[].Sum() ve IntVar[].ScalProd() API'leri kullanımdan kaldırıldı.
  • C++: SolveWithModel(), SolveCpModel() kopyası olduğu için kaldırıldı.
  • Java API'ye CpModel.addGreaterThan() ve CpModel.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 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:

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

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 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&nbsp;callback&nbsp;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.cc
Burada <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.cc
Programları 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'da SolveWithSolutionCallback olarak yeniden adlandırın.
  • NewSolution adını Python'da CpSolverSolutionCallback sınıfında OnSolutionCallback 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 ve CpSolverResponseStats 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 yerine python3 tercih edin.

.NET

  • .NET katmanının tamamen yeniden yazılması.
  • Çalışma Zamanı Tanımlayıcı win-x64, linux-x64 ve osx-x64 ile uyumlu bir Google.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

Ö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

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)

Uydu çözücü

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

FlatZinc

Kısıtlama Çözücü

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

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

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 ve examples/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.