इस पेज पर OR-टूल में हुए बदलावों की जानकारी दी गई है. इसमें नई सुविधाओं, गड़बड़ी ठीक करना, और कोड और इंस्टॉल करने के तरीकों में किए गए सुधार शामिल हैं.
अगर आपको OR-टूल इंस्टॉल करने में समस्या आती है, तो OR-टूल इंस्टॉल करने के निर्देशों में समस्या का हल सेक्शन देखें. अगर आपकी समस्या इस सूची में नहीं है, तो GitHub पर समस्याएं देखें या बेझिझक एक नई शिकायत करें. हमें आपकी मदद करके खुशी होगी.
हाल ही में शुरू हुए OR-टूल के लिए रिलीज़ नोट यहां दिए गए हैं.
मई 2024
OR-टूल v9.10 रिलीज़ होने का एलान
हमने OR-टूल v9.10 रिलीज़ किया है. अपना वर्शन अपडेट करने के लिए, OR-टूल इंस्टॉलेशन का सही सेक्शन देखें.
आपको GitHub पर रिलीज़ नोट मिल सकता है
मार्च 2024
OR-टूल v9.9 रिलीज़ होने का एलान
हमने OR-टूल v9.9 रिलीज़ किया है. अपना वर्शन अपडेट करने के लिए, OR-टूल इंस्टॉलेशन का सही सेक्शन देखें.
आपको GitHub पर रिलीज़ नोट मिल सकता है
नवंबर 2023
OR-टूल v9.8 रिलीज़ होने का एलान
हमने OR-टूल v9.8 रिलीज़ किया है. अपना वर्शन अपडेट करने के लिए, OR-टूल इंस्टॉलेशन का सही सेक्शन देखें.
प्लैटफ़ॉर्म में किए गए बदलाव
- Python 3.12 जोड़ें.
- Ubuntu 23.10 के लिए समर्थन जोड़ें
लीनियर सॉल्वर
ModelBuilder
को .Net पर पोर्ट करें.- SAT लॉग कॉलबैक के साथ टकराव से बचने के लिए,
LogCallback
का नाम बदलकरMbLogCallback
करें. - ModelBuilder API को बढ़ाएं:
- इंडिकेटर कंस्ट्रेंट जोड़ें.
- संकेत देने में मदद करें.
- मॉडल क्लोनिंग जोड़ें.
गणित ऑप्टिमाइज
- डीप रीवर्क.
रूटिंग
ROUTING_OPTIMAL
स्टेटस जोड़ें.RoutingModel
को न तो कॉपी किया जा सकता है और न ही एक जगह से दूसरी जगह ले जाया जा सकता है.- लोकल सर्च ऑपरेटर में कुछ इनफ़ाइनाइट लूप ठीक करें.
PickupDeliveryPosition
इंटरनल स्ट्रक्चर जोड़ें.IsPickup()
औरIsDelivery()
तरीके जोड़ें.
SAT
- बड़े मॉडल के लिए, मेमोरी फ़ुटप्रिंट कम करें.
- खोज शेड्यूल करने की बेहतर सुविधा.
- पैकिंग_precedences_lns जोड़ें.
- संभावना बढ़ाने के तरीके को ऑप्टिमाइज़ और ठीक करना.
- लीनियर प्रीसॉल्व और बेहतर प्रीसॉल्व लॉगिंग को ऑप्टिमाइज़ करता है.
int_abs
,int_mod
,int_prod
, औरlin_max
के लिए प्रीसॉल्व को बेहतर बनाएं.- Panda से जुड़ी सुविधाओं को बेहतर बनाएं
- कुछ गड़बड़ियां ठीक की गईं.
अगस्त 2023
OR-टूल v9.7 रिलीज़ होने का एलान
हमने OR-टूल v9.7 रिलीज़ किया है. अपना वर्शन अपडेट करने के लिए, OR-टूल इंस्टॉलेशन का सही सेक्शन देखें.
प्लैटफ़ॉर्म में किए गए बदलाव
- Centos-8 (ईओएल) छोड़ें.
- Debian 10 लॉन्च करें.
- Fedora
[33, 36]
(EOL) छोड़ें. - Ubuntu 18.04 एलटीएस (EOL) को छोड़ें.
- Python 3.7 (EOL) छोड़ें.
- सीमेकर (ईओएल) में
netcore3.1
के लिए सहायता पाने की सुविधा बंद करें.
Model Builder Python
- वैरिएबल बनाने के लिए, Pandas डेटाफ़्रेम और सीरीज़ को इस्तेमाल करने की अनुमति दें.
- असाइनमेंट देखें
- bin_packing देखें
- टाइपिंग की पूरी जानकारी दें
पीडीएल
- अलग-अलग अपडेट.
CP-SAT
- परफ़ॉर्मेंस में सुधार किए गए. (feasability_jump, lin_max)
- कट मैनेजमेंट को बेहतर बनाएं
- मकसद की निचली सीमा को कम करने के लिए (को छोटा करने पर) नया मकसद_shaving_search वर्कर
- Python cp_model.py के लिए टाइपिंग एनोटेशन
- cp_model.py में पांडा के लिए प्रयोग के तौर पर कुछ हद तक काम करने की सुविधा
- असाइनमेंट देखें
- bin_packing देखें
- एक्सपेरिमेंटल लोकल सर्च उल्लंघन के तहत काम करने वाले ऐसे लोग जो काम के हैं:
- इन पैरामीटर के साथ चालू किया गया: num_violation_ls:xxx
- लीनियर मॉडल के लिए ऑप्टिमाइज़ किया गया (
linear
,bool_or
,bool_and
,at_most_one
,exactly_one
) - lin_max, प्रॉडक्ट, डिवीज़न के साथ ठीक से काम करता है
- no_overलैप, क्यूमुलेटिव, सर्किट, रूट का इस्तेमाल करता है
- no_overलैप_2d के साथ बंद किया गया
- एलएस वर्कर की सुझाई गई संख्या:
num_workers
->num_violation_ls
:(8, 1), (16, 2) (24, 3), (32, 4)
मार्च 2023
OR-टूल v9.6 रिलीज़ होने का एलान
हमने OR-टूल v9.6 रिलीज़ किया है. अपना वर्शन अपडेट करने के लिए, OR-टूल इंस्टॉलेशन का सही सेक्शन देखें.
प्लैटफ़ॉर्म में किए गए बदलाव
- Fedora 37, 38 सहायता जोड़ें.
- Python 3.6 छोड़ें (
protobuf
पर काम नहीं करता). - macOS पर Python 3.7 छोड़ें (
scipy
पर काम नहीं करता). - C Make में
net7.0
सहायता जोड़ें (-DUSE_DOTNET_7=ON
का इस्तेमाल करें) - nuget .org पैकेज में
netcore3.1
की कमी करें
डिपेंडेंसी
- SCIP
v801
->v803
(ध्यान दें: अब SCIP, ओएसआई के साथ काम करने वाले लाइसेंस का इस्तेमाल करता है) - abseil
20220623.1
->20230105.0
- प्रोटोबफ़
v21.5
->v21.12
4.1.1
स्वाइप करें- Java JNA
5.11.0
->5.12.1
Bazel
- pybind11 सहायता जोड़ें.
- Java रैपर सहायता जोड़ें.
सॉल्वर
- पीडीपी: dd Python रैपर.
- सीपी-एसएटी: परफ़ॉर्मेंस में सुधार.
- जीएलओपी: प्रीसॉल्व को ट्वीक करें.
- ModelBuilder: Python: संख्या के साथ काम करने की सुविधा को बेहतर बनाएं.
- रूटिंग: प्रदर्शन में सुधार (स्थानीय खोज)
ऐसी समस्याएं जिनके बारे में हमें पता है:
- CP-SAT:
pseudo_costs
सबसॉल्वर को अनदेखा करने से अमान्य पैरामीटर मिलता है (#3706 देखें).
नवंबर 2022
OR-टूल v9.5 रिलीज़ होने का एलान
हमने OR-टूल v9.5 रिलीज़ किया है. अपना वर्शन अपडेट करने के लिए, OR-टूल इंस्टॉलेशन का सही सेक्शन देखें.
प्लैटफ़ॉर्म में किए गए बदलाव
- Debian साइड सहायता जोड़ें.
- Fedora 35, 36 सहायता जोड़ें.
- Ubuntu 22.10 का इस्तेमाल करें.
- macOS पर Python 3.6 लॉन्च करें.
- Python 3.11 सहायता जोड़ें.
डिपेंडेंसी अपडेट
- प्रोटोबफ़
v19.4
->v21.5
. - SCIP सॉल्वर
v800
->v801
.
CP-SAT
- सुधारे गए सुधार: सबसे ज़्यादा(array), बूलियन कंस्ट्रेंट, लीनियर कंस्ट्रेंट.
- इंटरलीव की गई खोज की वैल्यू, डिटर्मिनिस्टिक होनी चाहिए.
- लीनियर कट: क्लीनअप स्क्वेयर और int_prod कट, रीराइट कट पाइपलाइन.
- फ़िंगरप्रिंट इनपुट मॉडल और सलूशन (लॉग में दिखता है).
- शेड्यूल करने से जुड़े सुधार.
- गड़बड़ियों को ठीक करने के आम तरीके (प्रीसॉल्यूशन के दौरान क्रैश होना, कट जाने में क्रैश होना, नामुमकिन समाधान, एलएनएस में मॉडल काम नहीं करना).
जीएलओपी
- लीनियर बीजगणित के साथ-साथ पिवट चुनने के नियम को फिर से लिखकर तेज़ी से काम करें.
लीनियर सॉल्वर
knapsack_interface.cc
जोड़ें.- मॉडल_बिल्डर एपीआई को Linear_solver डायरेक्ट्री (हेडर और सैंपल) में ले जाएं.
- Gurobi 10 के लिए समर्थन जोड़ें.
रूटिंग
- अलग-अलग रूटिंग चुनौतियों के लिए कुछ पार्सर को मुक्त करें.
अगस्त 2022
OR-टूल v9.4 के रिलीज़ होने का एलान
हमने OR-टूल v9.4 रिलीज़ किया है. अपना वर्शन अपडेट करने के लिए, OR-टूल इंस्टॉलेशन का सही सेक्शन देखें.
प्लैटफ़ॉर्म
- Debian-10 सहायता जोड़ें (#3029 देखें).
- Ubuntu 22.04 एलटीएस सहायता जोड़ें (#3276 देखें). ध्यान दें: इसमें .Net 3.1 की सुविधा नहीं होगी (dotnet/core#7038 देखें).
- Ubuntu 21.10 का इस्तेमाल करें
अन्य सुविधाएं
- संग्रह को भाषाओं के हिसाब से अलग-अलग करें और C++ वन में CMake कॉन्फ़िगरेशन जोड़ें (#3200).
ग्राफ़
ortools.graph.pywrapgraph
को इसमें बांटें:
ortools.graph.python.linear_sum_assignment
.ortools.graph.python.max_flow
.ortools.graph.python.min_cost_flow
.
इससे समस्याओं को तेज़ी से सेटअप करने में मदद मिलती है.
CP-SAT
इनमें कुछ सुधार किया गया है:
- शेड्यूल करना (प्रोपेगेशन, कट, लोअर बाउंड).
- MaxSAT (प्रीसॉल्व, कोर आधारित अनुभव).
- MIP परफ़ॉर्मेंस (प्रीसॉल्व, कट).
मार्च 2022
OR-टूल v9.3 रिलीज़ होने का एलान
हमने OR-टूल v9.3 रिलीज़ किया है. अपना वर्शन अपडेट करने के लिए, OR-टूल इंस्टॉलेशन का सही सेक्शन देखें.
प्लैटफ़ॉर्म में किए गए बदलाव
- Debian-10 सहायता बंद करें.
- Ubuntu-16.04 की सुविधा बंद करें.
- .NET फ़्रेमवर्क 4.5.2 छोड़ें.
डिपेंडेंसी अपडेट
- Eigen
3.4.0
को जोड़ें. - Google re2
2021-11-01
जोड़ें. - प्रोटोबफ़
3.19.1
->3.19.4
. 7.0.1
->v800
को कॉपी करें.
Python
- pybind11 जोड़ें.
सुविधाएं
- पीडीएल को प्रयोग के तौर पर जोड़ें.
- MathOpt को प्रयोग के तौर पर जोड़ें.
CP-SAT
- एकता के लिए कुछ एपीआई के नाम बदले गए,
जैसे कि
LinearExpr.ScalProd.
->LinearExpr.WeightedSum.
. AddAtLeastOne
/AddAtMostOne
/AddExactlyOne
तरीके जोड़ें.- सभी भाषाओं में
AddMultiplicationConstraint(z, x, y)
जोड़ें. - सभी भाषाओं में
AddMultipleCircuit()
जोड़ें.
C++
- अश्लील ctor
IntVar(BoolVar)
. LinearExpr::Add*
को हटाया गया और उन्हें ऑपरेटर, जैसेLinearExpr +=
से बदला गया.- रैखिक व्यंजक पर अंकगणितीय ऑपरेटर जोड़ें.
LinearExpr::BooleanSum/BooleanScalProd
को हटाया गया,Sum/WeightedSum
का इस्तेमाल करें.CpModelBuilder::FixVariable()
जोड़ें, जो वैरिएबल के डोमेन को एक वैल्यू में ओवरराइट कर देता है.
Java
LinearExpr
को फिर से लिखें, इंक्रीमेंटल बिल्डर क्लास जोड़ें:LinearExpr.newBuilder().add(x).addSum(<array of variables>).build()
.- C++ API को फ़ॉलो करें:
Circuit
,MultipleCircuit
,Cumulative
,Reservoir
,AllowedAssignment
औरForbiddenAssignment
अब इंक्रीमेंटल एपीआई के साथ एक खास क्लास दिखाते हैं, ताकि नए वैरिएबल, शर्तें, और मांग जोड़ी जा सकें...
C
- सभी तरीकों के बारे में जानकारी दें.
- C++ API को फ़ॉलो करें:
Circuit
,MultipleCircuit
,Cumulative
,Reservoir
,AllowedAssignment
औरForbiddenAssignment
अब इंक्रीमेंटल एपीआई के साथ एक खास क्लास दिखाते हैं, ताकि नए वैरिएबल, शर्तें, और मांग जोड़ी जा सकें... - बढ़ते हुए एक्सप्रेशन बनाने के लिए,
LinearExprBuilder
क्लास जोड़ें.
बिल्ड सिस्टम
CMake
- कम से कम C Make >= 3.18 होना चाहिए.
कंपनी/ब्रैंड
- अब अंदरूनी तौर पर C Maker आधारित बिल्ड का इस्तेमाल करें.
दिसंबर 2021
OR-टूल v9.2 रिलीज़ होने का एलान
हमने OR-टूल v9.2 रिलीज़ किया है. अपना वर्शन अपडेट करने के लिए, OR-टूल इंस्टॉलेशन का सही सेक्शन देखें.
प्लैटफ़ॉर्म में किए गए बदलाव
- Ubuntu 21:10 (पिछली रोलिंग रिलीज़) के लिए समर्थन जोड़ें.
डिपेंडेंसी अपडेट
- .Net TFM अपडेट net5.0 -> net6.0 (इसके लिए, .Net SDK 6.0 एलटीएस और .Net SDK 3.1 एलटीएस होना ज़रूरी है).
- abseil-cpp 20210324.2 -> 20211102.0.
- प्रोटोबफ़ 3.18.0 -> 3.19.1.
- Googletest 1.10.0 -> 1.11.0.
- Python: numpy >= 1.13.3 जोड़ें.
- MacOS में Coin-OR को
-O1
में कंपाइल करें, ताकि रनर क्रैश से बचा जा सके.
रूटिंग
- फ़िल्टर में सुधार.
- पहले सलूशन के अनुभव को बेहतर बनाएं.
- ब्रेक प्लेसमेंट को बेहतर बनाएं.
CP-SAT
नुकसान पहुंचा सकने वाले बदलाव
- मौजूदा प्रोटोकॉल बफ़र, पिछले वर्शन के साथ काम नहीं करता. किसी भी स्टोर किए गए प्रोटोकॉल बफ़र को अपडेट किए गए बिल्डर एपीआई की मदद से (C++, Python, Java, और .NET में) फिर से जनरेट करना होगा.
- खास तौर पर, इंटरवल प्रोटोबफ़ में कोई समस्या नहीं थी, क्योंकि हमने पुराने फ़ील्ड (शुरुआत, साइज़, और आखिरी) को हटा दिया था. साथ ही,
_view
का इस्तेमाल करके, हटाए गए फ़ील्ड के नाम का इस्तेमाल करने के लिए नए फ़ील्ड का नाम बदला.
नई सुविधाएं
all_different
,reservoir
,modulo
,multiplication
, औरdivision
सीमाएं उन सभी जगहों पर अफ़िलिएट एक्सप्रेशन (a * var + b
) स्वीकार करती हैं जहां इसके लिए पूर्णांक वैरिएबल ज़रूरी हैं.- मकसद फ़्लोटिंग पॉइंट गुणांक स्वीकार करता है (C++/Java/.NET में
DoubleLinearExpr
क्लास देखें. Python मेंknapsack_2d_sat.py
उदाहरण देखें). no_overlap_2d
कंस्ट्रेंट, वैकल्पिक इंटरवल के साथ काम करता है.- C++ API, एक्सप्रेशन बनाने के लिए
+
और*
ऑपरेटर को लागू करता है.
प्रॉडक्ट को बेहतर बनाने के सुझाव
- बेहतर प्रीसॉल्व कोड.
- बेहतर मॉडल चेकर.
- रीवर्क रीवर्क्स रीक्रिएशनल कंस्ट्रेंट.
- no_overलैप_2d कंस्ट्रेंट के लिए, जोश से भरे कट जोड़ें.
- कोड में बदलने के पाबंदियों में बेहतर लीनियर रीलैक्सेशन
(
literal implies var == value
).
अब काम नहीं करने वाले और हटाए गए तरीके
- C++
BooleanSum
औरBooleanScalProd
अब काम नहीं करते. इसके लिए,Sum
औरScalProd
का इस्तेमाल करें. - C++
AddLinMinEquality
औरAddLinMaxEquality
को हटाया गया. इसके लिए,AddMinEquality
औरAddMaxEquality
का इस्तेमाल करें.
आने वाले समय में होने वाली समस्याएं
- आने वाले समय में, हम Java मॉडलिंग लेयर को फिर से तैयार करेंगे, ताकि उसे C++ लेयर के करीब रखा जा सके.
- C++ मॉडलिंग लेयर में, हम IntVar(BoolVar var) ctor को एक्सप्लिसिट करेंगे.
- हम Python API PEP 8 को इसके मुताबिक बनाने पर काम कर रहे हैं. इसमें snake_cases नाम का इस्तेमाल किया गया है. अगर ऐसा होता है, तो हम कोड को पोर्ट करने के लिए एक sed फ़ाइल उपलब्ध कराएंगे.
बिल्ड सिस्टम
Bazel
- Windows के बिल्ड को ठीक करें.
CMake
FETCH_PYTHON_DEPS
विकल्प जोड़ें (डिफ़ॉल्टON
).- GPLK सॉल्वर के लिए, वैकल्पिक सहायता जोड़ें (डिफ़ॉल्ट
-DUSE_GLPK=OFF
).
Python
- ज़्यादातर CP-SAT API के
numpy
पूर्णांक इस्तेमाल किए जा सकते हैं. __version__
मौजूद न होने की समस्या को ठीक करें.
सितंबर 2021
OR-टूल v9.1 रिलीज़ होने का एलान
हमने OR-टूल v9.1 रिलीज़ किया है. अपना वर्शन अपडेट करने के लिए, OR-टूल इंस्टॉलेशन का सही सेक्शन देखें.
प्लैटफ़ॉर्म में किए गए बदलाव
- Python:
manylinux2014
इमेज का इस्तेमाल करें (PEP 599 देखें). - Python:
manylinux2014_aarch64
इमेज का इस्तेमाल करके, arch64 linux के लिए सहायता जोड़ें. - .Net: .Net 5.0 की सुविधा जोड़ें.
डिपेंडेंसी अपडेट
- abseil-cpp 20210324.1 -> 20210324.2.
- प्रोटोबफ़ 3.15.8 -> 3.18.0.
- SCIP 7.0.1 -> मास्टर.
- Googletest 1.8.0 -> 1.10.0.
- Python:
cp_model.py
मेंwarning
का इस्तेमाल करता है (#2530 देखें). - Python: absl-py 0.11 -> 0.13.
CMake
- कम से कम वर्शन 3.14 -> 3.15 होना चाहिए (#2528 देखें).
- Python: कम से कम ज़रूरी वर्शन 3.14 -> 3.18 बंप करें (#2774 देखें).
कंपनी/ब्रैंड
बनाएं आधारित बिल्ड अब काम नहीं करता है. सोर्स से बिल्ड करने के लिए, कृपया C Maker या Bazel पर माइग्रेट करें.
Java
- नेटिव लाइब्रेरी लोडर की क्षमता को बेहतर बनाएं (#2742 देखें).
- रूटिंग मॉडल या कंस्ट्रेंट सॉल्वर को हटाए जाने के दौरान, JVM Garbage Collector क्रैश की समस्या को ठीक करें (#2091 देखें) (#2466 देखें).
- एक से ज़्यादा वर्कर का इस्तेमाल करते समय CP-SAT लॉगिंग कॉलबैक क्रैश को ठीक करें (#2775 देखें).
CP-SAT
- एलएनएस कोड की क्षमता में सुधार करना (#2525 देखें).
- शेड्यूलिंग कोड बेहतर बनाएं: तय साइज़ वाले इंटरवल बनाने के नए फ़ैक्ट्री तरीके, खोज के नए तरीके, बेहतर प्रीसॉल्व, और नए लीनियर कट.
- रूटिंग कोड में सुधार करें: नया और खास तौर पर बनाए गए एलएनएस.
- मॉडल चेकर को बेहतर बनाएं. यह अब और ज़्यादा भविष्य की उम्मीद है, खास तौर पर संभावित ओवरफ़्लो के बजाय.
- MIP कोड में सुधार करें: MIP और CP मॉडल के लीनियर रिलैक्सेशन को बेहतर तरीके से हल करना और कई सुधार करना.
- खोज विविधता को बेहतर बनाएं. अगर 12 से ज़्यादा वर्कर इस्तेमाल किए जाते हैं, तो ऐसे वर्कर जोड़ें जो मकसद की निचली सीमा को सुधारने के लिए काम करते हों.
- पैरललिज़्म कोड पर जाएं: डिफ़ॉल्ट रूप से, सॉल्वर अब सभी उपलब्ध कोर का इस्तेमाल करेगा. समानता का लेवल बताने के लिए,
num_search_parameters
का इस्तेमाल करें. SearchAllSolutions
औरSolveWithSolutionCallback
का बहिष्कार करें.- Python API:
model.Add()
कॉल के बाहर,var == ...
याvar != ...
का इस्तेमाल करते समय, ज़्यादा पेडेंटिक जांच.
अप्रैल 2021
OR-टूल v9.0 रिलीज़ होने का एलान
हमने OR-टूल v9.0 रिलीज़ किया है. अपना वर्शन अपडेट करने के लिए, OR-टूल इंस्टॉलेशन का सही सेक्शन देखें.
डिपेंडेंसी के बारे में अपडेट
- Abseil-cpp 20200923.3 को 20210324.1 एलटीएस में अपडेट किया गया.
- प्रोटोबफ़ 3.15.3 को 3.15.8 से अपडेट किया गया.
- Java: JSON-platform 5.5.0 को 5.8.0 में अपडेट किया गया
Java
- OR-टूल अब Maven Central पर उपलब्ध है (com.google.ortools:ortools-java देखें).
गड़बड़ी ठीक की गई
- CP-SAT सॉल्वर का इस्तेमाल करते समय मल्टी-थ्रिंग को बेहतर बनाएं (#1588 देखें).
std::vector<std::string>
के लिए Python रैपर सहायता ठीक करें (#2453 देखें).- CPLEX सहायता को फिर से बनाएं (#2470 देखें).
नुकसान पहुंचा सकने वाला ऐसा बदलाव जिसके बारे में पहले से जानकारी है
- Python, Java, और .Net में लॉगर ऐक्सेस जोड़ें (#2245 देखें).
- सभी कस्टम Google टाइप को,
cstdint
में दिए गए टाइप से बदलना.
CP-SAT
- तरीके
SearchForAllSolutions()
,SearchAllSolutions()
, औरSolveWithSolutionCallback()
अब काम नहीं करते. इसके बजाय, कृपयाSolve()
का इस्तेमाल करें. - Python के स्टैंडर्ड ऑपरेटर के साथ काम करने की सुविधा को बेहतर बनाएं. इससे गलत मौजूदा कोड टूट सकता है.
मार्च 2021
OR-टूल v8.2 रिलीज़ होने का एलान
हमने OR-टूल v8.2 रिलीज़ किया है. अपना वर्शन अपडेट करने के लिए, OR-टूल इंस्टॉलेशन का सही सेक्शन देखें.
डिपेंडेंसी के बारे में अपडेट
- Abseil-cpp 20200923.2 को 20200923.3 एलटीएस में अपडेट किया गया.
- प्रोटोबफ़ 3.14.0 को 3.15.3 में अपडेट किया गया.
रूटिंग
RoutingModel.RegisterTransitMatrix()
औरRoutingModel.RegisterUnaryTransitVector()
को जोड़ा गया.RoutingModel.AddVectorDimension()
औरRoutingModel.AddMatrixDimension()
के रिटर्न कोstd::pair<int, bool>
में बदलें, जिसकाint
ट्रांज़िट समीक्षक है.
दिसंबर, 2020
OR-टूल v8.1 रिलीज़ होने का एलान
हमने OR-टूल v8.1 रिलीज़ किया है. अपना वर्शन अपडेट करने के लिए, OR-टूल इंस्टॉलेशन का सही सेक्शन देखें.
डिपेंडेंसी के बारे में अपडेट
- Abseil-cpp 20200923 को 20200923.2 एलटीएस में अपडेट किया गया.
- प्रोटोबफ़ 3.13.0 3.14 में अपडेट किया गया.
- Gurobi 9.1.0 के लिए समर्थन जोड़ें
- GLog डिपेंडेंसी, abseil-cpp फ़्लैग के आधार पर पसंद के मुताबिक लागू किए गए तरीके से बदली गई
- GFlag डिपेंडेंसी को छोड़ें (इसे abseil-cpp फ़्लैग कॉम्पोनेंट से बदला गया है)
गड़बड़ी ठीक की गई
- Gurobi फ़्लोटिंग लाइसेंस की दोहरी गणना को ठीक करें (#2227 देखें).
- विंडो बिल्ड ठीक करें (#2200 देखें).
अक्टूबर 2020
OR-टूल v8.0 रिलीज़ होने का एलान
हमने OR-टूल v8.0 रिलीज़ किया है. अपना वर्शन अपडेट करने के लिए, OR-टूल इंस्टॉलेशन का सही सेक्शन देखें.
प्लैटफ़ॉर्म में किए गए बदलाव
- Python 3.9 के लिए सहायता जोड़ी गई (#2187)
- Python 3.5 (#2186) के लिए काम नहीं किया गया
<!-- Microsoft dotnet-sdk सहायता का इंतज़ार किया जा रहा है. यह रिलीज़ के खत्म होने के बाद जनरेट किया जा सकता है...
- Ubuntu 20.10 (#2188) के लिए जोड़ा गया -->
- Ubuntu 16.04 एलटीएस (#2188) के लिए काम नहीं करता
- Ubuntu 19.10 (#2188) के लिए काम नहीं करता
डिपेंडेंसी के बारे में अपडेट
- Abseil-cpp 20200225.2 को 20200923 एलटीएस में अपडेट किया गया.
- प्रोटोबफ़ 3.12.2 को 3.13.0 पर अपडेट किया गया.
नुकसान पहुंचा सकने वाला ऐसा बदलाव जिसके बारे में पहले से जानकारी है
- अब रूटिंग और CP-SAT सोर्स कोड में,
C++17
की कुछ सुविधाओं का इस्तेमाल किया जाता है. चेतावनी: अगर आपकोabseil-cpp
का अपना वर्शन देना है, तो कृपया पक्का करें कि इसेC++17
पर भी बनाया गया हो. MPSolver::CreateSolver
हस्ताक्षर बदल दिया गया है. मॉडल नाम तर्क को छोड़ दिया गया है.
CMake
-DUSE_SCIP=OFF
का इस्तेमाल करते समय, एससीआईपी से जुड़ी सहायता को बंद करने की समस्या को ठीक करें (#2129 देखें).- सैंपल और उदाहरणों को CMake बिल्ड सिस्टम में इंटिग्रेट करें.
ध्यान दें:
-DBUILD_SAMPLES=OFF
और-DBUILD_EXAMPLES=OFF
का इस्तेमाल करके, इसे बंद किया जा सकता है. नोट: इसे-DBUILD_<LANG>_SAMPLES=OFF
या-DBUILD_<LANG>_EXAMPLES=OFF
का इस्तेमाल करके किसी खास भाषा के लिए बंद किया जा सकता है.<LANG>
के बीच:CXX
,PYTHON
,JAVA
औरDOTNET
.
कंपनी/ब्रैंड
Make >= 4.3
की ज़रूरत होती है (बनाएं eval फ़ंक्शन का इस्तेमाल करके).CMake >= 3.14
की ज़रूरत होती है (Cmake --verbose विकल्प का इस्तेमाल करें).-DUSE_SCIP=OFF
का इस्तेमाल करके, एससीआईपी की सहायता बंद करने का विकल्प जोड़ें (#2134 देखें).-DUSE_COINOR=OFF
का इस्तेमाल करके, सीएलपी और सीबीसी के लिए सहायता बंद करने का विकल्प जोड़ें.
Java
- OR-टूल अब मेवन पैकेज जनरेट करते हैं (#202 देखें).
गड़बड़ी ठीक की गई
- FreeBSD पर C++ और Python के बिल्ड ठीक करें (#2126 देखें).
- Windows पर डीबग में बिल्ड ठीक करें (#2077 देखें).
- Windows पर CP-SAT के साथ-साथ लंबे समय से चल रहे क्रैश की समस्या को ठीक करें (#2001, #2019 देखें).
जुलाई 2020
OR-टूल v7.8 रिलीज़ होने का एलान
हमने OR-टूल v7.8 रिलीज़ किया है. अपना वर्शन अपडेट करने के लिए, OR-टूल इंस्टॉलेशन का सही सेक्शन देखें.
डिपेंडेंसी के बारे में अपडेट
- Gurobi 9.0.2 अब पहले से बनी बाइनरी में, पहले से इंटिग्रेट किया हुआ है. यह MAC OS X और Windows पर Gurobi इंस्टॉलर के डिफ़ॉल्ट इंस्टॉल पाथ में या GUROBI_HOME की डायरेक्ट्री में, gurobi 90 शेयर की गई लाइब्रेरी को खोजेगा.
- SCIP 7.0.1 को अब पहले से बनी बाइनरी में इंटिग्रेट कर दिया गया है. एससीआईपी के लाइसेंस का इस्तेमाल करने से पहले, कृपया पक्का करें कि उसका पालन किया गया हो.
- वैकल्पिक Xpress Salver 8.9.0 के लिए सहायता.
लीनियर सॉल्वर
- इंटिग्रेट किए गए लीनियर सॉल्वर बैकएंड की जांच को आसान बनाने के लिए,
LinearSolver::CreateSolver()
का स्टैटिक तरीका जोड़ा गया. यह सभी भाषाओं में काम करती है.
गड़बड़ी ठीक की गई
- FreeBSD पर आधारित C Maker तय किया गया.
- क्यूमुलेटिव कट जनरेशन में, CP-SAT सॉर्टिंग को तय किया गया.
- .Net रैपर में लीनियर सॉल्वर मेमोरी लीक को ठीक किया गया.
जून 2020
OR-टूल v7.7 रिलीज़ होने का एलान
हमने OR-टूल v7.7 रिलीज़ किया है. अपना वर्शन अपडेट करने के लिए, OR-टूल इंस्टॉलेशन का सही सेक्शन देखें.
डिपेंडेंसी के बारे में अपडेट
- Abseil-cpp b832dce को c51510d (एलटीएस 20200225.2) में अपडेट किया गया.
- प्रोटोबफ़ 3.11.4 को 3.12.2 में अपडेट किया गया.
नई सुविधाएं और सुधार
- CP-SAT सॉल्वर अब संतुष्टि की क्षमता वाले मॉडल में,
Feasible
के बजायOptimal
दिखाता है. - MIP कम्यूनिटी से फ़िज़िबिलिटी पंप अनुभवों को शामिल किया गया.
गड़बड़ी ठीक की गई
CP-SAT मल्टी-थ्रेडिंग क्रैश ठीक किया गया (#2005 देखें).
अप्रैल 2020
OR-टूल v7.6 रिलीज़ होने का एलान
हमने OR-टूल v7.6 रिलीज़ किया है. अपना वर्शन अपडेट करने के लिए, OR-टूल इंस्टॉलेशन का सही सेक्शन देखें.
CP-SAT की नई सुविधाएं
हमने CP-SAT सॉल्वर में ये नई सुविधाएं जोड़ी हैं:
- एलपी के लिए, कटिंग प्लेन को बेहतर तरीके से मैनेज किया गया.
- डीबग करने वाले टूल.
डिपेंडेंसी के बारे में अपडेट
Abseil-cpp 8ba96a8 को b832dce (एलटीएस 20200225) पर अपडेट किया गया.
गड़बड़ी ठीक की गई
- प्रीसॉल्व में CP-SAT UNSAT बग को ठीक किया गया (#1908 देखें).
- swigwin.exe यूआरएल ठीक किया गया.
- Java और .Net के लिए, तय किया गया SWIG टाइपमैप मैनेजमेंट.
जनवरी 2020
OR-टूल v7.5 रिलीज़ होने का एलान
हमने OR-टूल v7.5 रिलीज़ किया है. अपना वर्शन अपडेट करने के लिए, OR-टूल इंस्टॉलेशन का सही सेक्शन देखें.
प्लैटफ़ॉर्म में किए गए बदलाव
- Python 3.8 के लिए सहायता जोड़ी गई (#1719)
- Visual Studio 2017 के स्रोतों से इकट्ठा की गई सहायता (#1852).
- Centos 7 से Centos 8 पर सहायता (#1827).
डिपेंडेंसी अपडेट
गड़बड़ी ठीक की गई
OR-टूल v7.5 में इन समस्याओं को ठीक किया गया है. पूरी सूची के लिए Milestone v7.5 देखें.
खास तौर पर:
- असेंबली को ठीक से लोड किया जा रहा है. #1421 देखें.
- RouteIndexManager के
GetStartIndex()
औरGetEndIndex()
तरीकों को दिखाया गया है (#1843). - काम न करने वाले तरीकों को हटाने के लिए, SWIG को ठीक किया गया (#1838, #1276).
अक्टूबर 2019
OR-टूल v7.4 रिलीज़ होने का एलान
हमने OR-टूल v7.4 रिलीज़ किया है. अपना वर्शन अपडेट करने के लिए, OR-टूल इंस्टॉलेशन का सही सेक्शन देखें.
नई सुविधाएं और सुधार
- CP-SAT सॉल्वर अब ऐसी पाबंदियों की जांच करता है जो नीति उल्लंघन ठीक करने के तरीके (एनफ़ोर्समेंट) से जुड़ी लिटरल वैल्यू के साथ काम नहीं करतीं. ऐसे कंस्ट्रेंट में एनफ़ोर्समेंट लिटरल है या नहीं, यह हल करने से पहले मॉडल चेकर गड़बड़ी दिखाएगा.
- रूटिंग लाइब्रेरी के लिए बेहतर और तेज़ स्थानीय खोज.
- लीनियर सॉल्वर अब तीसरे पक्ष के सॉफ़्टवेयर Xpress-MP के साथ काम करता है. इसका इस्तेमाल करने के लिए, आपको सोर्स से OR-टूल को फिर से बनाना होगा.
- NuGet पैकेज के आर्किटेक्चर को पूरी तरह से बदल दिया गया है. खास तौर से, अब यह Windows प्लैटफ़ॉर्म पर .NET फ़्रेमवर्क >= 4.5.2 के साथ काम करता है.
ऐसा प्लैटफ़ॉर्म जो अब सेवा में नहीं है
जैसा कि जुलाई 2019 के रिलीज़ नोट में बताया गया था, OR-टूल अब Python 2.7 के साथ काम नहीं करता.
डिपेंडेंसी अपडेट
Protobuf 3.9.0 को 3.10.0 में अपडेट कर दिया गया है.
अगस्त 2019
OR-टूल v7.3 रिलीज़ होने का एलान
हमने OR-टूल v7.3 रिलीज़ किया है. अपना वर्शन अपडेट करने के लिए, OR-टूल इंस्टॉलेशन का सही सेक्शन देखें.
ऐसा प्लैटफ़ॉर्म जो अब सेवा में नहीं है
Google की Python 3 सेवा के मुताबिक, हम Python 2.7 के साथ काम करने की सुविधा बंद कर रहे हैं. Python 2.7 के साथ काम करने वाले OR-टूल की यह आखिरी रिलीज़ होगी.
डिपेंडेंसी अपडेट
Protobuf 3.8.0 को 3.9.0 में अपडेट कर दिया गया है.
गड़बड़ी ठीक की गई
OR-टूल v7.3 में इन समस्याओं को ठीक किया गया है. पूरी सूची देखने के लिए, Kanban v7.3 देखें.
खास तौर पर:
- Java पर init/int64 Cast की समस्या को ठीक किया गया (#1448),
- खाली कुल सीमाओं को प्रोसेस करते समय, प्रीसॉल्व जांच को ठीक किया गया.
जुलाई 2019
OR-टूल v7.2 रिलीज़ होने का एलान
हमने OR-टूल v7.2 रिलीज़ किया है. अपना वर्शन अपडेट करने के लिए, OR-टूल इंस्टॉलेशन का सही सेक्शन देखें.
प्लैटफ़ॉर्म में किए गए बदलाव
- Google की Python 3 सेवा के मुताबिक, हम Python 2.7 के साथ काम करने की सुविधा बंद कर रहे हैं. Python 2.7 के साथ काम करने वाले OR-टूल की ज़्यादा से ज़्यादा एक और रिलीज़ उपलब्ध होगी.
- Ubuntu 18.10 को Ubuntu 19.04 से अपडेट किया गया.
- Visual Studio 2019 पर, अलग-अलग स्रोतों से कॉन्टेंट इकट्ठा करने की सुविधा जोड़ी गई.
- Python 3.5 अब Windows पर काम नहीं करता; कृपया Python 3.6 या इसके बाद वाले वर्शन का इस्तेमाल करें.
डिपेंडेंसी के लिए अपडेट
- अब हमने CBC 2.10.3 को टारगेट किया है.
- अब हमने Protobuf 3.8.0 को टारगेट किया है.
CP-SAT
- हमने खोज, साथ-साथ चलने, और लीनियर रिलैक्सेशन में कई सुधार किए हैं.
- Python में
LinearExpr.Sum()
औरLinearExpr.ScalProd()
एपीआई जोड़े गए. - C# में,
IntVar[].Sum()
औरIntVar[].ScalProd()
API के इस्तेमाल पर रोक लगा दी गई है. - C++:
SolveWithModel()
को हटाया गया, क्योंकि यहSolveCpModel()
का डुप्लीकेट था. - Java API में
CpModel.addGreaterThan()
औरCpModel.addLessThan()
तरीके जोड़े गए.
लीनियर सॉल्वर
- Python, Java, और C# के लिए
MPSolver.SetHint()
को जोड़ा गया है. यह SCIP और Gurobi के साथ काम करता है. - Python, Java, और C# के लिए
MPSolver.SetNumThreads()
जोड़ा गया है (CBC, Gurobi, और SCIP के साथ काम करता है). - एससीआईपी 6.0.1 के लिए फिर से सहायता तैयार की गई.
रेफ़रंस के लिए दस्तावेज़
- हमने सभी भाषाओं और सभी टूल (एल्गोरिदम, रूटिंग, ग्राफ़, Linear_solver, और CP-SAT) के लिए doxygen और pdoc3 आधारित रेफ़रंस मैन्युअल जोड़े हैं. OR-टूल रेफ़रंस के लिए गाइड देखें.
- C++ (सभी प्रॉडक्ट) और CP-SAT (C++, Python, Java) के लिए रेफ़रंस दस्तावेज़ पूरा है.
- हम सभी C++ दस्तावेज़ों को Python और Java में एक्सपोर्ट कर रहे हैं.
- .NET दस्तावेज़ की कमी है और हमारे पास इस सुधार को सुधारने का कोई अनुमानित समाधान नहीं है. हमने इसे इसलिए रखा है, क्योंकि यह अब भी उपलब्ध एपीआई दिखाता है.
मई 2019
OR-टूल v7.1 रिलीज़ होने का एलान
हमने OR-टूल v7.1 रिलीज़ किया है. अपना वर्शन अपडेट करने के लिए, OR-टूल इंस्टॉलेशन का सही सेक्शन देखें.
ज़रूरी डिपेंडेंसी में बदलाव
OR-टूल v7.1 में, नीचे दी गई नई और अपडेट की गई डिपेंडेंसी हैं:
- glog v0.3.5 को v0.4.0 में अपडेट किया गया
- protobuf v3.6.1 को v3.7.1 में अपडेट किया गया
- Cbc 2.9.9 को 2.10.1 में अपडेट किया गया
- Cgl 0.59.10 को 0.60.1 पर अपडेट किया गया
- Clp 1.16.11 को 1.77.1 में अपडेट किया गया
- Osi 0.107.9 को 0.108.1 पर अपडेट किया गया
- CoinUtils 2.10.14 को 2.11.1 में अपडेट किया गया
CP-SAT एपीआई में किए गए बदलाव
नीचे दिए गए सेक्शन, OR-टूल 7.1 में CP-SAT API में हुए बदलावों के बारे में बताते हैं.
- वैरिएबल बनाने के लिए डोमेन का इस्तेमाल करना.
- लीनियर एक्सप्रेशन में डोमेन का इस्तेमाल करना.
- लीनियर एक्सप्रेशन हेल्पर का इस्तेमाल करना.
वैरिएबल बनाने के लिए डोमेन का इस्तेमाल करना
नीचे दिए गए उदाहरणों में, नॉन-संतत डोमेन वाले पूर्णांक वैरिएबल बनाने का तरीका बताया गया है.
यह हटाए गए तरीके NewEnumeratedIntVar()
की जगह लेगा.
यहां वैरिएबल x, 1, 3, 4 या 6 में से कोई भी हो सकता है:
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");
इंटरवल की सूची का इस्तेमाल करके भी वैरिएबल बनाए जा सकते हैं. नीचे, वैरिएबल x को 1, 2, 4, 5 या 6 तक सीमित किया गया है:
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");
लीनियर एक्सप्रेशन में डोमेन का इस्तेमाल करना
नीचे दिए गए उदाहरण, नॉन-कंटिन्यूअस डोमेन पर लीनियर एक्सप्रेशन को सीमित करने का तरीका बताते हैं. यहां, लीनियर एक्सप्रेशन Linear_expr को 5, 6, 8, 9, और 10 पर तय किया गया है:
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} }))
.नेट
model.AddLinearExpressionInDomain(linear_expr, Domain.FromIntervals(new long[][] {new long[] {5, 6}, new long[] {8, 10} }));
लीनियर एक्सप्रेशन हेल्पर का इस्तेमाल करना
नीचे दिए गए उदाहरणों में, योग और अदिश गुणनफल बनाने के लिए सहायक विधियों का इस्तेमाल करने का तरीका बताया गया है.
यहां एक उदाहरण दिया गया है, जिसमें हम x + y == 20
और 4 * x + 2 * y = 56
की अनुमति देना चाहते हैं:\
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);
.नेट
model.Add(x + y == 20); model.Add(4 * x + 2 * y == 56);
मार्च 2019
OR-टूल v7.0 रिलीज़ होने का एलान
हमने OR-टूल v7.0 रिलीज़ किया है. अपना वर्शन अपडेट करने के लिए, OR-टूल इंस्टॉलेशन का सही सेक्शन देखें.
इस्तेमाल किए जा सकने वाले प्लैटफ़ॉर्म में बदलाव
OR-टूल v7.0 अब इन प्लैटफ़ॉर्म के साथ काम नहीं करता:
- विज़ुअल C++ 2015
- Ubuntu 14.04
- Linux पर Python 3.4
अगर इनमें से किसी प्लैटफ़ॉर्म का इस्तेमाल किया जा रहा है, तो अब भी OR-टूल v6.10 इंस्टॉल किया जा सकता है.
ज़रूरी डिपेंडेंसी में बदलाव
OR-टूल v7.0 में, नीचे दी गई नई और अपडेट की गई डिपेंडेंसी हैं:
- नया: Abseil-cpp
- gflags 2.2.1 को 2.2.2 में अपडेट किया गया
यहां दिए गए सेक्शन में, OR-टूल 7.0 की नई सुविधाओं और सुधारों के बारे में बताया गया है.
- प्रोग्राम को रूट करने के लिए नया इंडेक्स मैनेजर
- पिकअप और डिलीवरी के साथ वीआरपी के लिए सहायता
- Java और C#में Lambda फ़ंक्शन के साथ काम करता है
प्रोग्राम को रूट करने के लिए नया इंडेक्स मैनेजर
OR-टूल v7.0 में, वाहन रूटिंग प्रोग्राम के लिए नए RoutingIndexManager
का इस्तेमाल करना ज़रूरी है.
इससे यह पक्का होता है कि जगहों के स्टैंडर्ड इंडेक्स, सॉल्वर के इस्तेमाल किए जाने वाले अंदरूनी इंडेक्स से मेल खाते हैं. साथ ही, इससे आपके कोड में गड़बड़ियों को रोकने में मदद मिलती है.
नए RoutingIndexManager
में, रूटिंग प्रोग्राम में कुछ मामूली बदलावों की ज़रूरत होती है, जिनके बारे में नीचे दिए गए सेक्शन में बताया गया है:
RoutingIndexManager
को C++ और Java में शामिल या इंपोर्ट करें.RoutingIndexManager
की घोषणा- डाइमेंशन कॉलबैक में
RoutingIndexManager
जोड़ें. - समाधान प्रिंट करने के लिए
RoutingIndexManager
का इस्तेमाल करें.
RoutingIndexManager
को शामिल करें/इंपोर्ट करें
OR-टूल 7.0 में, C++ और Java में रूटिंग प्रोग्राम के लिए RoutingIndexManager
को शामिल या इंपोर्ट करना ज़रूरी है, जैसा कि नीचे दिए गए उदाहरणों में दिखाया गया है:
C++
#include "ortools/constraint_solver/routing_index_manager.h"
Java
import com.google.ortools.constraintsolver.RoutingIndexManager;
Python और C# इंपोर्ट में कोई बदलाव नहीं किया गया है.
RoutingIndexManager
बताएं
OR-टूल v7.0 में, रूटिंग प्रोग्राम को RoutingIndexManager
के बारे में बताना होगा और रूटिंग मॉडल बनाना होगा, जैसा कि यहां दिए गए उदाहरणों में दिखाया गया है:
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);
.नेट
RoutingIndexManager manager = new RoutingIndexManager(numLocations, numVehicles, depot); RoutingModel routing = new RoutingModel(manager);
RoutingIndexManager
के लिए तर्क ये हैं:
- जगहों की संख्या
- वाहनों की संख्या
- डिपो का इंडेक्स (सभी वाहनों के लिए, शुरू और खत्म होने की जगह)
कॉलबैक
OR-टूल के v7.0 वर्शन में, आपको कॉलबैक बनाने के लिए RoutingIndexManager
का इस्तेमाल करना होगा.
जैसे, डिस्टेंस कॉलबैक, जिसे सॉल्वर को पास किया जाता है.
इन उदाहरणों में डिस्टेंस कॉलबैक बनाने का तरीका बताया गया है.
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);
.नेट
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
वाला तरीका, सॉल्वर के इस्तेमाल किए गए अंदरूनी जगह के इंडेक्स को, दूरी के मैट्रिक्स के स्टैंडर्ड इंडेक्स में बदल देता है.
पिछले वर्शन की तरह, कॉलबैक को सीधे सॉल्वर में पास करने के बजाय, v7.0 में सबसे पहले transit callback index
बनाया जाता है. यह कॉलबैक का रेफ़रंस होता है. इसके बाद, इसे सॉल्वर को पास किया जाता है (इस मामले में, SetArcCostEvaluatorOfAllVehicles
की ओर से).
डाइमेंशन
यहां दिए गए उदाहरणों में, मांग और क्षमता के लिए डाइमेंशन बनाने का तरीका बताया गया है. इसका इस्तेमाल, कैपेसिटेड वाहन रूटिंग की समस्या को हल करने के लिए किया जाता है.
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");
.नेट
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");
प्रिंटिंग के समाधान
OR-टूल v7.0 में, आपको किसी सलूशन में वाहन के रूट दिखाने के लिए RoutingIndexManager
का इस्तेमाल करना होगा. नीचे दिए गए उदाहरणों में बताया गया है कि इस्तेमाल की जा सकने वाली सभी भाषाओं में समाधान
को कैसे प्रिंट किया जा सकता है.
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"); }
.नेट
/// <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); }
पिकअप और डिलीवरी के साथ वीआरपी के लिए सहायता
OR-टूल v7.0 में, पिक अप और डिलीवरी के दौरान वाहन के रूट में आने वाली समस्याओं (वीआरपी) को हल करने की सुविधा दी जाती है. इन समस्याओं में, उन वाहनों के लिए सबसे छोटे रास्ते ढूंढने का मकसद होता है जिन्हें ज़्यादा से ज़्यादा वाहन अलग-अलग जगहों पर ले जाते और डिलीवर करते हों. आपने सामान्य वीआरपी की तरह ही समस्या सेट अप की है, लेकिन इसके अलावा हर आइटम के लिए (i, j)
जगहों की एक जोड़ी तय की है, जहां i पिकअप की जगह है और j ड्रॉप ऑफ़ लोकेशन है. रूटिंग सॉल्वर, वाहन के रास्तों को इस तरह दिखाता है कि हर जोड़े (i, j)
, i
, और j
एक ही रास्ते पर हैं और वाहन j
से पहले i
पर जाता है.
इस तरह की समस्या को हल करने के उदाहरण के लिए, पिकअप और डिलीवरी के साथ वाहन रूटिंग देखें.
Lambda फ़ंक्शन के लिए सहायता
OR-टूल v7.0 में अब C# और Java (C++ और Python के साथ, जो पहले से काम कर रहे थे) में लैम्डा फ़ंक्शन के लिए काम करता है. Lambda फ़ंक्शन, रूटिंग प्रोग्राम में कॉलबैक तय करने का आसान तरीका देते हैं. हालांकि, अगर आपको लगता है कि कोड को पढ़ने में आसान बनाने के लिए, स्टैंडर्ड फ़ंक्शन का इस्तेमाल करके कॉलबैक तय किए जा सकते हैं.
ऊपर दिए गए C# और Java कॉलबैक के उदाहरणों में, लैम्डा फ़ंक्शन का इस्तेमाल करके कॉलबैक तय करने का तरीका बताया गया है.
नवंबर 2018
वर्शन v6.10 रिलीज़ होने का एलान
हमने OR-टूल वर्शन 6.10 रिलीज़ किया है. अपना वर्शन अपडेट करने के लिए, OR-टूल इंस्टॉलेशन का सही सेक्शन देखें.
नीचे दिए सेक्शन में, वर्शन 6.10 की नई सुविधाओं और सुधारों के बारे में बताया गया है.
प्रोग्राम बनाने और चलाने के लिए आसान निर्देश
वर्शन 6.10 में, ये निर्देश डालकर प्रोग्राम बनाए और चलाए जा सकते हैं:
make run SOURCE=relative/path/to/program.ccजहां
<var>relative/path/to</var>
, प्रोग्राम वाली डायरेक्ट्री का पाथ है.
कोई प्रोग्राम चलाए बिना उसे बनाने के लिए, यह जानकारी डालें:
make build SOURCE=relative/path/to/program.ccOR-टूल का इस्तेमाल शुरू करना देखें. इससे आपको भाषा के हिसाब से प्रोग्राम चलाने के बारे में खास निर्देश मिलेंगे.
SCIP 6.0.0 के लिए सहायता
OR-टूल अब SCIP 6.0.0 के लिए काम करता है.
बाइनरी
बाइनरी डिस्ट्रिब्यूशन को Java JDK 8 (Ubuntu 14.04 के लिए JDK 7) का इस्तेमाल करके बनाया गया है.
CP-SAT सॉल्वर
एपीआई अपडेट करना
- C++ CP-SAT CpModelBuilder API जोड़ें.
उदाहरण
कुछ उदाहरण हटा दिए गए हैं.
- समुदाय के उदाहरणों को
examples/contrib
में ले जाएं. - कुछ उदाहरणों को
ortools/<var>component</var>/samples
में ले जाएं (जैसे,ortools/linear_solver/samples/simple_program.java
)
सितंबर 2018
वर्शन 6.9 रिलीज़ होने का एलान
हमने OR-टूल वर्शन 6.9 रिलीज़ कर दिया है. अपना वर्शन अपडेट करने के लिए, OR-टूल इंस्टॉलेशन का सही सेक्शन देखें.
अपडेट की गई डिपेंडेंसी
- प्रोटोबफ़ 3.5.1 -> 3.6.1.
- एससीआईपी 4.0 -> 6.0.
CP-SAT सॉल्वर
- एपीआई में हुए अहम बदलाव - पूरी जानकारी यहां दी गई है:
- Python में,
SolveWithSolutionObserver
का नाम बदलकरSolveWithSolutionCallback
कर दें. Python में क्लास
CpSolverSolutionCallback
मेंNewSolution
का नाम बदलकरOnSolutionCallback
कर दें. नीचे दिए गए उदाहरण में, Python में समाधान कॉलबैक बनाने का नया तरीका बताया गया है.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, और C# में समाधान कॉलबैक पर
StopSearch
को सार्वजनिक करें. दस्तावेज़ यहां दिए गए हैं.Python, Java, और C# में
ModelStats
औरCpSolverResponseStats
को एक्सपोज़ करें.Python docstring के दस्तावेज़ को बेहतर बनाएं. दस्तावेज़ यहां दिए गए हैं.
सॉल्वर इंटरफ़ेस और कुकबुक को लागू करने के Java से जुड़े अपडेट.
मॉड्यूलो लागू करें.
रिसोर्स को लागू करने में बदलाव करें: एपीआई को बूलियन के साथ जोड़ें, ताकि ग़ैर-ज़रूरी तौर पर भरे/भरे हुए इवेंट के बारे में बताया जा सके.
लीनियर सॉल्वर
- Java और C# में
InterruptSolve
को सार्वजनिक करें.
सीपी सॉल्वर
- C# में
SolutionCollector
डायरेक्टर को सार्वजनिक करें.
Python
Python 3.7
के लिए सहायता जोड़ें.- सोर्स से कंपाइल करते समय: Python का पता लगाते समय,
python2
की जगहpython3
को प्राथमिकता दें.
.NET
- .NET लेयर को पूरा फिर से लिखें.
- रनटाइम आईडीटीफ़ायर
win-x64
,linux-x64
, औरosx-x64
के साथ काम करने वालाGoogle.OrTools
NetStandard 2.0 Nuget पैकेज उपलब्ध कराएं. Google.OrTools.FSharp
Nuget पैकेज उपलब्ध कराएं.- .NET के सभी उदाहरणों के लिए प्रोजेक्ट फ़ाइल जोड़ें.
- सभी F# स्क्रिप्ट उदाहरणों (.fsx) को सामान्य F# प्रोजेक्ट (.fs) में अपडेट करें.
- .NET पैकेज बिल्ड जनरेट करने से जुड़ा दस्तावेज़ यहां जोड़ें.
फ़्लैटज़िंक
- फ़्लैटज़िंक में सेट के लिए सहायता जोड़ें (nots.mzn का इस्तेमाल करके).
योगदान
- बाइंडर के लिए सहायता जोड़ें. केविन मेडर को धन्यवाद.
- Java बाइंडिंग में,
DecisionVisitor
को डायरेक्टर टाइप बनाएं. जेरेमी ऐपथॉर्प का धन्यवाद.
जुलाई 2018
वर्शन v6.8 के रिलीज़ होने का एलान
हमने OR-टूल वर्शन 6.8 रिलीज़ कर दिया है. अपना वर्शन अपडेट करने के लिए, OR-टूल इंस्टॉलेशन का सही सेक्शन देखें.
CP-SAT सॉल्वर की घोषणा
CP-SAT सॉल्वर कंस्ट्रेंट प्रोग्रामिंग के लिए एक नया सॉल्वर है. CP-SAT सॉल्वर, ओरिजनल सीपी सॉल्वर से तेज़ होता है. इसे सीपी से जुड़े सवालों के लिए इस्तेमाल करना चाहिए.
CP-SAT सॉल्वर का इस्तेमाल करने वाले उदाहरण के लिए, GitHub पर उन फ़ाइलों के लिए उदाहरण डायरेक्ट्री देखें जिनके नाम में _sat
हैं.
मौजूदा कोड पर काम करने के लिए, ओरिजनल सीपी सॉल्वर को कुछ समय तक बनाए रखा जाएगा. हालांकि, यह अब काम नहीं करता.
CP-SAT सॉल्वर के लिए नए विकल्प
इस रिलीज़ में, CP-SAT सॉल्वर के लिए ये विकल्प नए हैं:
- आस-पास के इलाके की खोज (एलएनएस): एलएनएस को चालू करने के लिए
SatParameters.use_lns
विकल्प का इस्तेमाल करें. - पैरलल सर्च: खोज के दौरान एक से ज़्यादा थ्रेड चालू करने के लिए,
SatParameters.num_search_workers
विकल्प का इस्तेमाल करें. हर थ्रेड में अलग-अलग पैरामीटर हो सकते हैं. साथ ही, इनमें अलग-अलग रैंडम सीड भी हो सकते हैं. इससे विविधता बढ़ती है. साथ ही, इस बात की संभावना हो जाती है कि कम से कम एक थ्रेड को समाधान मिल जाएगा.
सॉल्वर की परफ़ॉर्मेंस में सुधार किए गए
हमने CP-SAT और Glop सॉल्वर की परफ़ॉर्मेंस में सुधार किए हैं.
मार्च 2018
वर्शन v6.7 रिलीज़ होने का एलान
हमने OR-टूल वर्शन 6.7 रिलीज़ किया है. अपना वर्शन अपडेट करने के लिए, OR-टूल इंस्टॉलेशन का सही सेक्शन देखें.
ज़रूरी डिपेंडेंसी के लिए अपडेट
- प्रोटोबफ़ 3.5.0 -> 3.5.1.
अन्य सुविधाएं
- abseil-cpp इंटिग्रेशन तैयार करने के लिए, बेस को रीफ़ैक्टर करें.
- Travis CI और Appveyor कंटिन्यूअस इंटिग्रेशन (सीआई) सेवाओं का इस्तेमाल करना.
SAT
- परफ़ॉर्मेंस में सुधार.
- Python API को बेहतर बनाता है.
- C# API यानी CpSolver.cs (राशि) जोड़ें.
ग्लोप
- कोड रीफ़ैक्टरिंग.
- परफ़ॉर्मेंस में सुधार.
C Maker सहायता (एक्सपेरिमेंटल)
- C++ OR-टूल CMake सहायता जोड़ें.
- स्टैंडअलोन Cmake प्रोजेक्ट के तौर पर OR-टूल बनाने में सक्षम होना.
- किसी मौजूदा Cmake प्रोजेक्ट में OR-टूल को शामिल करना ज़रूरी है.
- Python OR-Tool CMake पर आधारित बिल्ड जोड़ें.
- C Make का इस्तेमाल करके Python पैकेज (व्हील) जनरेट करें.
योगदान
- विंडो पर windowsock2.h redefinition को ठीक करें. फ़्लोरेंट टोलिन डी रिवारोल का धन्यवाद.
- F# सहायता (एक्सपेरिमेंटल) जोड़ें. मैथ्यू मोर को धन्यवाद. ध्यान दें: यह सिर्फ़ Makefile बिल्डर के साथ उपलब्ध है.
- .NET स्टैंडर्ड सपोर्ट (एक्सपेरिमेंटल) जोड़ें. ज़ाद अल मल्की का धन्यवाद. ध्यान दें: यह सिर्फ़ Makefile बिल्डर के साथ उपलब्ध है.
नवंबर 2017
वर्शन v6.6 के रिलीज़ होने का एलान
हमने OR-टूल वर्शन 6.6 रिलीज़ कर दिया है. अपना वर्शन अपडेट करने के लिए, OR-टूल इंस्टॉलेशन का सही सेक्शन देखें.
ज़रूरी डिपेंडेंसी में अपडेट
- प्रोटोबफ़ में 3.3.0 -> 3.5.0 तक.
- 2.2.0 -> 2.2.1 के लिए gflags.
- सीबीसी 2.9.8 -> 2.9.9.
- Python के लिए, ज़रूरी डिपेंडेंसी के तौर पर Python मॉड्यूल छह (1.10) जोड़ें.
गड़बड़ी ठीक करना
- पुल का अनुरोध #494 नाम रीफ़ैक्टरिंग. कुछ एडिटर में IntelliSense के लिए टिप्पणियां जोड़ना. मैथ्यू मोर को धन्यवाद.
- F #स्टैंडअलोन बाइनरी के लिए, पुल का अनुरोध# 516 निर्देश. मैथ्यू मोर को धन्यवाद.
- Glop में सटीक सुधार करें.
एसएटी सॉल्वर
- इंटरनल एसएटी सॉल्वर को बेहतर बनाएं और अलग-अलग गड़बड़ियां ठीक करें.
- एलपी सॉल्वर से जुड़े एसएटी सॉल्वर में वीआरपी कंस्ट्रेंट जोड़ें.
CpSolverResponse
को पैरामीटर के तौर पर लेने के लिए, एसएटी सॉल्वर में सॉल्यूशन ऑब्ज़र्वर को बदलें.- SAT सॉल्वर में Glop के इस्तेमाल को बेहतर बनाएं.
- SAT-LP कनेक्शन की स्पीड बढ़ाएं.
- SAT cp_model प्रोटोबफ़ फ़ॉर्मैट में, रेज़रवॉयर कंस्ट्रेंट जोड़ें.
एसएटी/Python
- Python में SAT API के बारे में शुरुआती जानकारी.
ortools/sat/python/cp_model.py
में कोड करें.- examples/python/ में उदाहरण जोड़ें:
- 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 notebook के लिए सहायता जोड़ें.
- Python के उदाहरण, notebook में एक्सपोर्ट किए जाते हैं और ये examples/notebook में उपलब्ध होते हैं.
उदाहरण
- समस्या को सेव करने के लिए, ProtoBuf फ़ॉर्मैट का इस्तेमाल करने के लिए rcpsp_parser को फिर से लिखें.
- आरसीपीएसपी पार्सर को बेहतर बनाएं.
अक्टूबर 2017
वर्शन v6.5 रिलीज़ होने का एलान
हमने OR-टूल वर्शन 6.5 रिलीज़ कर दिया है. अपना वर्शन अपडेट करने के लिए, OR-टूल इंस्टॉलेशन का सही सेक्शन देखें.
प्लैटफ़ॉर्म में बदलाव
- pypi मॉड्यूल py3-ortools को ortools मॉड्यूल में मर्ज कर दिया गया है. यहां अब सिर्फ़ एक मॉड्यूल है: 'ortools'.
- इन Python मॉड्यूल का मुख्य फ़ॉर्मैट अब व्हील फ़ाइलें है.
python के OR-टूल को pypi से इंस्टॉल करने के लिए, बस
pip install ortools
चलाएं. आपके पास पीआईपी (पिक्चर में पिक्चर) का सबसे नया वर्शन (>= 9.0.1) इंस्टॉल होना चाहिए. इससे नई रिलीज़ (v6.5) को हटा लिया जाना चाहिए.
बग ठीक किया गया
प्रोटोबफ़ जार फ़ाइल अब कंपाइल की गई क्लास के साथ सही तरीके से बनती है.
नए उदाहरण
- उदाहरण/fsharp डायरेक्ट्री में और F# उदाहरण जोड़े गए हैं (मैथ्यू मूर के लिए फिर से धन्यवाद).
- Java MIP के उदाहरणों का भी योगदान दिया गया है (धन्यवाद डेरियन).
सितंबर 2017
वर्शन v6.4 के रिलीज़ होने का एलान
हमने OR-टूल वर्शन 6.4 रिलीज़ कर दिया है. अपना वर्शन अपडेट करने के लिए, OR-टूल इंस्टॉलेशन का सही सेक्शन देखें.
प्लैटफ़ॉर्म में बदलाव
- Linux प्लैटफ़ॉर्म पर Pypi मॉड्यूल अब कई Linux1 टैग का इस्तेमाल करके, व्हील फ़ाइलों के तौर पर डिलीवर किए जाते हैं. फ़ेदेरिको फ़िसारेली को धन्यवाद. इस बदलाव के साथ, हमने जुलाई 2017 की रिलीज़ में पेश किए गए हर-Linux मॉड्यूल को ट्रैक करना शुरू कर दिया है.
नई सुविधाएं
- जीएलओपी में इस्तेमाल किया जाने वाला स्केलिंग का बेहतर तरीका.
- C# रूटिंग लाइब्रेरी में, आकलन करने वालों की रैपिंग ठीक करें. DevNamedZed का धन्यवाद.
- बड़े मॉडल के लिए, फ़्लैटज़िंक प्रीसॉल्व की परफ़ॉर्मेंस को बेहतर बनाएं.
- फ़्लैटज़िंक के लिए, डिफ़ॉल्ट रूप से एसएटी का इस्तेमाल करें.
- सैट सॉल्वर के लिए, कोर पर आधारित अप्रोच की परफ़ॉर्मेंस को बेहतर बनाएं.
- लीनियर असाइनमेंट एल्गोरिदम में गड़बड़ी को ठीक किया गया. यह गड़बड़ी गलत तरीके से काम कर रही थी.
- ortools/examples/fsharp में F# उदाहरण जोड़े गए.
- रूटिंग लाइब्रेरी में जाकर, लगाए गए जुर्माने का सही का निशान हटाएं.
अगस्त 2017
वर्शन 6.3 रिलीज़ होने का एलान
हमने OR-टूल वर्शन 6.3 रिलीज़ कर दिया है. अपना वर्शन अपडेट करने के लिए, OR-टूल इंस्टॉलेशन का सही सेक्शन देखें.
डाउनलोड की गई नई फ़ाइलें
Linux के लिए Python व्हील फ़ाइलें अब सभी डाउनलोड के सबसे नए वर्शन के साथ-साथ, OR-टूल रिलीज़ पेज पर डाउनलोड करने के लिए उपलब्ध हैं.
मिनीज़िंक सॉल्वर
इस वर्शन में Minizinc 2017 चैलेंज के लिए भेजा गया फ़ाइनल सैट और फ़्लैटज़िंक कोड शामिल है.
जुलाई 2017
वर्शन v6.2 के रिलीज़ होने का एलान
हमने OR-टूल वर्शन 6.2 रिलीज़ किया है. अपना वर्शन अपडेट करने के लिए, OR-टूल इंस्टॉलेशन का सही सेक्शन देखें.
प्लैटफ़ॉर्म में बदलाव
- अब हम कई Linux बाइनरी डिस्ट्रिब्यूशन (Ubuntu 14.04, 16.04, 17.04, CentOS 7, Debian 9) की सुविधा देते हैं.
- Linux प्लैटफ़ॉर्म पर मौजूद Pypi मॉड्यूल में अब एक टैग शामिल होता है, जो डिस्ट्रिब्यूशन की जानकारी देता है. जैसे, ubuntu-14.04, ubuntu-16.04, ubuntu-17.04, centos-7, debian-9.
नई सुविधाएं
हमने Linux आर्टफ़ैक्ट बनाने के लिए, Docker में काम करने की सुविधा जोड़ी है. or-tools/tools/docker
पर जाएं और संभावित टारगेट (make archive
, make pypi
, और make pypi3
) को देखने के लिए, Makefile
देखें.
ये निर्देश एक export
सबडायरेक्ट्री बनाएंगे और उसमें बाइनरी आर्टफ़ैक्ट जोड़ देंगे.
जून 2017
वर्शन 6.1 रिलीज़ होने का एलान
हमने OR-टूल वर्शन 6.1 रिलीज़ कर दिया है. अपना वर्शन अपडेट करने के लिए, OR-टूल इंस्टॉलेशन का सही सेक्शन देखें.
प्लैटफ़ॉर्म में बदलाव
- Visual Studio 2017 काम करता है. Visual Studio 2013 अब काम नहीं करता.
- यह सुविधा macOS के 10.9 और इसके बाद के वर्शन पर काम करती है.
नई सुविधाएं
हमने अपने CP-SAT सॉल्वर के लिए एक नया प्रोटोबफ़ फ़ॉर्मैट जोड़ा है.
अपना मॉडल तय करने के लिए ortools/sat/cp_model.proto
देखें और अपनी समस्या हल करने के लिए, ortools/sat/cp_model_solver.h
देखें.
गड़बड़ी ठीक करना
समस्या #420: हमने सभी प्लैटफ़ॉर्म पर Python pypi मॉड्यूल पर __version__
एट्रिब्यूट मौजूद न होने की समस्या को ठीक कर दिया है.
मई 2017
वर्शन v6.0 रिलीज़ होने का एलान
हमने OR-टूल वर्शन 6.0 रिलीज़ किया है. अपना वर्शन अपडेट करने के लिए, OR-टूल इंस्टॉलेशन का सही सेक्शन देखें.
C++ में नई डायरेक्ट्री का स्ट्रक्चर
हमने C++ इस्तेमाल करते समय OR-टूल के सोर्स/इनक्लूसिव स्ट्रक्चर को बदल दिया है. इसका मकसद C++ में शामिल फ़ाइलों को बेहतर तरीके से एनकैप्सुल करना है. इसमें C++ और Python डायरेक्ट्री के स्ट्रक्चर को अलाइन करने का भी फ़ायदा होता है.
src/
का नाम बदलकरortools/
कर दिया गया है.- C++ फ़ाइलों में सभी #include कमांड के साथ अब
ortools
प्रीफ़िक्स जोड़ा गया है.#include "constraint/constraint_solver.h"
अब#include "ortools/constraint/constraint_solver.h"
है.
नई सुविधाएं
- Bazel support.
अब आप bazel, Google के बिल्ड टूल की मदद से OR-टूल बना सकते हैं. यह Linux और Mac OS X पर काम करता है. Bazel के 0.4.5 या इसके बाद के वर्शन को डाउनलोड करने के बाद, डायरेक्ट्री को or-tools में बदलें और उदाहरण बनाएं:
bazel build examples/cpp/...
.
रूटिंग
हमने रूटिंग लाइब्रेरी में ब्रेक (जैसे, ड्राइवर का खाना खाने की वजह से वाहन बंद होने) की सुविधा दी है. इस सुविधा को cvrptw_with_breaks.cc
उदाहरण में दिखाया गया है.
SCIP सहायता
लीनियर सॉल्वर रैपर, अब एससीआईपी 4.0 के साथ काम करता है. अब आपको सबसे पहले एससीआईपी बनाना होगा. इसके बाद, आपको यह बताना होगा कि या किन टूल का इस्तेमाल करना है. निर्देश यहां उपलब्ध हैं.
GLPK सहायता
हमने GLPK के साथ बिल्ड करने का तरीका भी बदला है. यहां देखें.
क्लीनअप करें
- हमने C++ कोडबेस में hash_map और hash_set के सभी तरह के इस्तेमाल को हटा दिया है, क्योंकि ये अब काम नहीं करते हैं. उन्हें STL से,unorder_map और Unorder_set से बदल दिया गया.
- C# मेकफ़ाइल की क्लीनअप, माइकल पॉवेल के सौजन्य से.
जनवरी 2017
वर्शन v5.1 के रिलीज़ होने का एलान
हमने OR-टूल वर्शन 5.1 रिलीज़ किया है. अपना वर्शन अपडेट करने के लिए, OR-टूल इंस्टॉलेशन का सही सेक्शन देखें.
नई सुविधाएं
सॉफ़्टवेयर इंस्टॉल हो रहा है
- बाइनरी डिस्ट्रिब्यूशन या सोर्स कोड से OR-टूल इंस्टॉल करने के आसान तरीकों के बारे में बताया गया. ज़्यादा जानकारी के लिए, यह देखें बाइनरी से OR-टूल इंस्टॉल करना या सोर्स से OR-टूल इंस्टॉल करना.
रूटिंग
सिमेट्रिक यात्रा करने वाले सेल्सपर्सन की समस्याओं के लिए, होल्ड-कार्प की निचली सीमा का हिसाब लगाने के लिए एल्गोरिदम लागू किया गया. इससे किसी ऐसे समाधान की लागत और सबसे बेहतर समाधान की लागत के बीच के अंतर का ज़्यादा हिसाब लगाया जा सकता है जो शायद सबसे बेहतर न हो.
- वाहन की रूटिंग लाइब्रेरी
RoutingModel::SetBreakIntervalsOfVehicle
में एक नया तरीका जोड़ा गया. इसकी मदद से break इंटरवल जोड़े जा सकते हैं — वह समयावधि जब कोई वाहन कोई काम नहीं कर सकता (जैसे, यात्रा करना या किसी नोड पर जाना). इस विकल्प का इस्तेमाल करने वाले उदाहरण के लिए, cvrptw_with_breaks.cc देखें
शेड्यूल करें
- प्रोजेक्ट शेड्यूलिंग लाइब्रेरी के लिए पार्सर में ज़्यादा डेटा फ़ॉर्मैट के लिए सहायता जोड़ी गई.
शनि सॉल्वर
- SAT सॉल्वर का क्यूमुलेटिव कंस्ट्रेंट अब
NewOptionalInterval
तरीके से बनाए गए, वैकल्पिक इंटरवल को स्वीकार करता है. उदाहरण के लिए, https://github.com/google/or-tools/blob/master/examples/cpp/rcpsp_sat.cc देखें. - अब अपने मकसद को लिटरल वैल्यू के भारित योग के रूप में बताकर, Max-SAT (ज़्यादा से ज़्यादा संतुष्टि_की_ समस्या) को हल किया जा सकता है. अब इंटरमीडिएट पूर्णांक वैरिएबल बनाना ज़रूरी नहीं है.
परफ़ॉर्मेंस में सुधार करना
- SAT सॉल्वर — सैट सॉल्वर की परफ़ॉर्मेंस में सुधार, खास तौर पर क्यूमुलेटिव कंस्ट्रेंट के लिए.
- ग्लोप सॉल्वर — ग्लोप सॉल्वर को अंकों में बेहतर और मज़बूत बनाया गया है. अब यह संख्या मुश्किल सवालों का ज़्यादा सटीक हल देता है.
- फ़्लैटज़िंक सॉल्वर
- फ़्लैटज़िंक अनुवादक के लिए, सैट बैकएंड की परफ़ॉर्मेंस बहुत अच्छी है.
- C# फ़्लैटज़िंक इंटरफ़ेस को आसान बनाया गया. नए इंटरफ़ेस के उदाहरण के लिए, https://github.com/google/or-tools/blob/master/examples/csharp/csfz.cs देखें.
गड़बड़ी ठीक करना
- एक वाहन और साइड कंस्ट्रेंट वाले रूटिंग मॉडल में
PathCheapestArc
का इस्तेमाल करने से, कभी-कभी सॉल्वर ज़्यादा समय तक चल सकता है. समस्याओं को ध्यान में रखकर, इस समस्या को ठीक किया गया. - Java में, रूटिंग सॉल्वर कभी-कभी वाहन की रूटिंग से जुड़ी समस्याएं हल करते समय क्रैश हो जाता है. नई रिलीज़ में यह समस्या ठीक कर दी गई है.
नवंबर 2016
वर्शन v5.0 के रिलीज़ होने का एलान
हमने OR-टूल वर्शन 5.0 रिलीज़ किया है. अपना वर्शन अपडेट करने के लिए, OR-टूल इंस्टॉलेशन का सही सेक्शन देखें.
चल रहे उदाहरण
- भाषा के हिसाब से टारगेट किए गए, जो आपके प्रोग्राम को कंपाइल करना और चलाना आसान बनाते हैं. साथ ही, OR-टूल से जुड़े उदाहरणों के बारे में भी बताया.
शनिवार
- कंस्ट्रेंट प्रोग्रामिंग के लिए अतिरिक्त सहायता.
- diff, कुल , सर्किट और सब-सर्किट की सीमाओं को लागू किया गया.
- अलग-अलग कंस्ट्रेंट के लिए, मैक्स एनर्जी फ़िल्टर करने के एल्गोरिदम के आधार पर ओवरलोड चेकर लागू किया गया.
- सभी अलग-अलग बाउंड एक जैसे प्रोपेगेटर को लागू किया गया, जो सभी कंस्ट्रेंट के लिए बेहतर तरीके से लागू होता है.
FlatZinc
- फ़्लैटZinc से जुड़े सवालों के लिए, SAT सॉल्वर लागू किया गया है.
कंस्ट्रेंट सॉल्वर
- नीचे दी गई सीमाएं लागू की हैं :
- atMost: यह फ़ंक्शन, किसी दी गई वैल्यू के बराबर वैरिएबल की संख्या के लिए ऊपरी सीमा सेट करता है.
- MakePathPrecedenceConstraint और MakePathTransitPrecedenceConstraint: जोड़ियों के सेट के लिए प्राथमिकता कंस्ट्रेंट को लागू करें.
रूटिंग
- AddAtSolutionCallback लागू किया गया. खोज के दौरान हर बार समाधान मिलने पर, इसे कॉलबैक कहा जाता है.
- रूटिंग मॉडल डिपो-लेस कंस्ट्रक्टर हटाए गए. रूटिंग मॉडल में कम से कम एक डिपो तय करना अब ज़रूरी है.
सितंबर 2016
वर्शन v4.4 के रिलीज़ होने का एलान
हमने OR-टूल वर्शन 4.4 रिलीज़ कर दिया है. अपना वर्शन अपडेट करने के लिए, OR-टूल इंस्टॉलेशन का सही सेक्शन देखें.
शनिवार
- इसका इस्तेमाल करने के लिए, शेड्यूल करने वाले एपीआई को बड़ा किया गया है और उदाहरण के तौर पर बदलाव किए गए हैं (weight_tardness_sat, और jobshop_sat).
ग्राफ़
- ग्राफ़ क्लास में इटरेटर trait जोड़ा गया.
OR-टूल डिस्ट्रिब्यूशन
- Nuget पैकेज फिर से इस्तेमाल किया जा सकता है.
अगस्त 2016
वर्शन v4.3 के रिलीज़ होने का एलान
हमने OR-टूल वर्शन 4.3 रिलीज़ किया है. अपना वर्शन अपडेट करने के लिए, OR-टूल इंस्टॉलेशन का सही सेक्शन देखें.
कंस्ट्रेंट सॉल्वर
- किसी वैरिएबल को किसी दिए गए इंटरवल से बाहर रखने के लिए,
NotBetween
तरीका लागू किया गया.
रूटिंग
NotMember
की मौजूदा सीमाओं की जांच करने के लिए, मॉडल का एक पार्स जोड़ा गया है, जैसा कि इस उदाहरण में दिखाया गया है. साथ ही, लोकल सर्च फ़िल्टर में उनका इस्तेमाल करें.- लोकल सर्च प्रोफ़ाइल जोड़ी गई.
- लोकल मूव से जुड़ी समस्या को ठीक करें.
लीनियर सॉल्वर
- SCIP स्थिति की रिपोर्टिंग ठीक की गई.
शनिवार
- SAT प्रीसॉल्वर के इस्तेमाल को आसान बनाने के लिए, SolveWithPresolve तरीके को लागू किया गया.
- src/sat/util.h|cc में फिर से समूह में किए गए खोज के इस्तेमाल.
- SMT (लेज़ी क्लॉज़ जेनरेशन) का शेड्यूल लागू करने की सीमाएं: jobshop_sat.cc और weighted_tardiness_sat.cc देखें.
ग्लोप
- कंप्यूटेशन के ज़्यादा चरणों में कम सुविधाओं का इस्तेमाल करके, परफ़ॉर्मेंस को बेहतर किया गया है.
फ़्लैटज़िंक
- मिनीज़िंक चैलेंज की मदद से मिली गड़बड़ियां ठीक की गईं.
Lp_data
- इटरेटर में टेंप्लेट को आसान बनाने की प्रोसेस.
OR-टूल डिस्ट्रिब्यूशन
- अब डिफ़ॉल्ट रूप से, C# असेंबली का नाम सबसे मज़बूत होता है.
- Protobuf3.0.0 में अपग्रेड किया गया.
- OR-टूल संग्रह डिपेंडेंसी जांचने के लिए, एक Python script जोड़ा गया.
जुलाई 2016
वर्शन v4.2 के रिलीज़ होने का एलान
हमने OR-टूल वर्शन 4.2 रिलीज़ किया है. अपना वर्शन अपडेट करने के लिए, OR-टूल इंस्टॉलेशन का सही सेक्शन देखें.
कंस्ट्रेंट सॉल्वर (रूटिंग)
- डिसजंक्शन को अब एलिमेंट की संख्या के साथ तय किया जा सकता है. यह एलिमेंट की वह ज़्यादा से ज़्यादा संख्या है जो इस डिसजंक्शन में चालू हो सकते हैं. उदाहरण के लिए, अगर n नोड और k के एलिमेंट की संख्या के साथ डिसजंक्शन जोड़ा जाता है, तो n नोड में से k नोड को चालू रखा जा सकता है. ऐसा करने के लिए, AddDisjunction की नई परिभाषा का इस्तेमाल किया जा सकता है.
- हर नोड में एक से ज़्यादा अंतरों के लिए सहायता जोड़ी गई. उदाहरण के लिए, अब कई कॉन्फ़िगरेशन (D1..Dm) में नोड, N1 जोड़ा जा सकता है. इससे, इनमें से किसी भी एक डिवाइस के ऐक्टिव रहने की संभावना बढ़ जाती है. अलग-अलग टाइम विंडो से जुड़ी समस्याओं के लिए, ज़्यादा तेज़ रूटिंग सर्च एल्गोरिदम पेश किया गया.
- मॉडल पैरामीटर को रूट करने में कंस्ट्रेंट सॉल्वर पैरामीटर और सर्च पैरामीटर को रूट करने के लिए Log_search जोड़े गए.
- अलग-अलग टाइम विंडो से जुड़ी समस्याओं को हल करने में, लोकल सर्च एल्गोरिदम ज़्यादा तेज़ी से काम करता है. ज़्यादा जानकारी के लिए cvrp_disjoint_tw.cc उदाहरण देखें.
ग्लोप (लीनियर ऑप्टिमाइज़ेशन)
- ज़्यादा तेज़ सिंप्लेक्स एल्गोरिदम की जानकारी दी गई है.
OR-टूल डिस्ट्रिब्यूशन
- हर प्लैटफ़ॉर्म के लिए एक संग्रह, हर C++, Java, और .Net के लिए अलग-अलग संग्रह के बजाय. Python संग्रह अब भी pypi पर होस्ट किए जाते हैं.
- pypi पर, हमने Mac OS X और Windows पर व्हील (.whl) मॉड्यूल का इस्तेमाल शुरू कर दिया है. MAJOR.MINOR नंबरिंग स्कीमा शामिल किया गया. इन संख्याओं का इस्तेमाल संग्रह के नाम, Mac OS X शेयर की गई लाइब्रेरी में स्टोर किए गए वर्शन, Python मॉड्यूल, .NET असेंबली में किया जाता है. हम जो पहला वर्शन रिलीज़ कर रहे हैं वह इस स्कीमा के साथ v4.2 वर्शन है
जून 2016
वर्शन v2016-06 की रिलीज़ की घोषणा
हमने OR-टूल वर्शन v2016-06 रिलीज़ किया है. अपना वर्शन अपडेट करने के लिए, OR-टूल इंस्टॉलेशन का सही सेक्शन देखें.
कंस्ट्रेंट सॉल्वर
- सीपी लाइब्रेरी से, कॉलबैक (src/base/callback.h) के ज़्यादातर इंस्टेंस हटा दिए गए हैं.
- NotmemberCt जोड़ा गया (वैरिएबल, इंटरवल के सेट से नहीं जुड़ा हो सकता).
रूटिंग लाइब्रेरी
- असंगत बदलाव:
AddDimensionWithVehicleCapacity
में वाहनों की कपैसिटी की जानकारी देने के लिए, अब आपको कॉलबैक के बजाय, एक अरे (c++ में वेक्टर) पास करना होगा.
जीएलओपी
- स्पार्स मैट्रिक्स का इंटरनल प्रज़ेंटेशन बदलें.
- परफ़ॉर्मेंस में सुधार किए गए.
ग्राफ़
- कॉलबैक को
std::function
(C++) से बदलने के लिए, Dijkstra और Bellman-Ford के एल्गोरिदम फिर से लिखें. - आर्क और नोड पर कार्रवाई करते समय अलग-अलग ग्राफ़ लागू करने के एपीआई को बदलें.
शनिवार
- इस्तेमाल नहीं किया गया मुख्य तरीका (रिज़ॉल्यूशन नोड) हटाएं.
- ग्राहकों के असंतुष्ट होने की वजहों की जांच करने के लिए, ड्रॉट राइटर जोड़ा गया.
- प्रीप्रोसेसर जोड़ें.
बॉप
- नए आस-पास की जगहें जोड़ें.
उदाहरण
- c++: उदाहरणों में filelinereader से छुटकारा पाना.
- डेटा: सिंगल-मशीन शेड्यूलिंग से जुड़ी समस्याएं जोड़ें.
दस्तावेज़
- कृपया नया दस्तावेज़ देखें.
अप्रैल 2016
वर्शन v2016-04 की रिलीज़ की घोषणा
हमने OR-टूल वर्शन v2016-04 रिलीज़ किया है. अपना वर्शन अपडेट करने के लिए, OR-टूल इंस्टॉलेशन का सही सेक्शन देखें.
अपडेट की गई डिपेंडेंसी
- Constraint प्रोग्रामिंग और रूटिंग लाइब्रेरी में फ़्लैग के बजाय प्रोटोबफ़ का इस्तेमाल करें. ज़्यादा जानकारी के लिए, http://or-tools.blogspot.fr/2016/02/heads-up-upcoming-incompatibility-in.html देखें.
दिसंबर 2015
वर्शन v2015-12 की रिलीज़ की घोषणा
हमने OR-टूल वर्शन v2015-12 रिलीज़ किया है. अपना वर्शन अपडेट करने के लिए, OR-टूल इंस्टॉलेशन का सही सेक्शन देखें.
कंस्ट्रेंट सॉल्वर
- सीपी सॉल्वर में, लार्ज नेबरशिप सर्च के साथ काम करने की क्षमता में गड़बड़ी (एपीआई का नया वर्शन देखने के लिए,
examples/cpp/ls_api.cc
,examples/python/pyls_api.py
,examples/csharp/csls_api.cs
, औरexamples/com/google/ortools/sample/LsApi.java
देखें). - Python पर रैपिंग को ठीक किया गया. सीपी सॉल्वर में अपने हिसाब से फ़ैसले लेने में मदद करें
(एपीआई को काम करने का तरीका देखने के लिए,
examples/test/test_cp_api.py
देखें). - कई सुधार किए गए और गड़बड़ियां ठीक की गईं.
सितंबर 2015
GitHub पर पहली रिलीज़ का एलान.
अब से फ़ाइलें यहां सेव की जाएंगी.
फ़्लैटज़िंक
- फ़्लैटज़िंक अनुवादक के लिए बाइनरी संग्रह जोड़े गए (www.minizinc.org देखें).
- इसमें चैलेंज में इस्तेमाल किए गए वर्शन में कुछ सुधार शामिल हैं.