หน้านี้แสดงการเปลี่ยนแปลงใน "หรือ" ของเครื่องมือ ซึ่งรวมถึงฟีเจอร์ใหม่ การแก้ไขข้อบกพร่อง และการปรับปรุงโค้ดและขั้นตอนการติดตั้ง
หากพบปัญหาในการติดตั้ง OR-เครื่องมือ ให้ตรวจสอบส่วน การแก้ปัญหา ในคำแนะนำในการติดตั้ง "หรือ" หากปัญหาของคุณไม่อยู่ในรายการนี้ โปรดตรวจสอบปัญหาใน GitHub หรือเปิดปัญหาใหม่ เรายินดีให้ความช่วยเหลือคุณ
ต่อไปนี้คือบันทึกประจำรุ่นสำหรับ "หรือ" "เครื่องมือ" ซึ่งเริ่มต้นด้วยรุ่นล่าสุด
พฤษภาคม 2024
ประกาศการเปิดตัว OR-Tools v9.10
เราได้เปิดตัว OR-Tools v9.10 แล้ว หากต้องการอัปเดตเวอร์ชัน โปรดดูที่ส่วนการติดตั้ง OR-เครื่องมือ
March 2024
ประกาศการเปิดตัว OR-Tools v9.9
เราได้เปิดตัว OR-Tools v9.9 แล้ว หากต้องการอัปเดตเวอร์ชัน โปรดดูที่ส่วนการติดตั้ง OR-เครื่องมือ
พฤศจิกายน 2023
ประกาศการเปิดตัว OR-Tools v9.8
เราได้เปิดตัว OR-Tools v9.8 แล้ว หากต้องการอัปเดตเวอร์ชัน โปรดดูที่ส่วนการติดตั้ง OR-เครื่องมือ
การเปลี่ยนแปลงของแพลตฟอร์ม
- เพิ่ม Python 3.12
- เพิ่มการสนับสนุนสำหรับ Ubuntu 23.10
ตัวช่วยโปรแกรมเชิงเส้น
- พอร์ต
ModelBuilder
ไปยัง .Net - เปลี่ยนชื่อ
LogCallback
เป็นMbLogCallback
เพื่อไม่ให้เกิดการทับซ้อนกับ SAT LogCallback - ขยาย ModelBuilder API:
- เพิ่มข้อจำกัดของตัวบ่งชี้
- เพิ่มการสนับสนุนการแนะนำ
- เพิ่มการโคลนโมเดล
ตัวเลือกทางคณิตศาสตร์
- ปรับปรุงให้ดีขึ้น
การกำหนดเส้นทาง
- เพิ่มสถานะ
ROUTING_OPTIMAL
- ทำให้
RoutingModel
คัดลอกหรือย้ายไม่ได้ - แก้ไขการวนซ้ำที่ไม่สิ้นสุดในโอเปอเรเตอร์การค้นหาในเครื่อง
- เพิ่มโครงสร้างภายใน
PickupDeliveryPosition
- เพิ่มเมธอด
IsPickup()
และIsDelivery()
SAT
- ลดการใช้หน่วยความจำสำหรับโมเดลขนาดใหญ่
- ปรับปรุงการค้นหาตามกำหนดการ
- เพิ่ม packing_precedences_lns
- เพิ่มประสิทธิภาพและแก้ไขการเพิ่มขึ้นของความเป็นไปได้
- เพิ่มประสิทธิภาพตัวปรับแต่งเชิงเส้นและการกำหนดค่าการบันทึกล่วงหน้าได้ดีขึ้น
- ปรับปรุงคำนำหน้าสำหรับ
int_abs
,int_mod
,int_prod
และlin_max
- ปรับปรุงการรองรับ Panda
- แก้ไขข้อบกพร่องเล็กน้อย
บันทึกการเปลี่ยนแปลงของ GitHub
สิงหาคม 2023
ประกาศการเปิดตัว OR-Tools v9.7
เราได้เปิดตัว OR-Tools v9.7 แล้ว หากต้องการอัปเดตเวอร์ชัน โปรดดูที่ส่วนการติดตั้ง OR-เครื่องมือ
การเปลี่ยนแปลงของแพลตฟอร์ม
- Drop Centos-8 (EOL)
- วาง Debian 10
- วาง Fedora
[33, 36]
(EOL) - วาง Ubuntu 18.04 LTS (EOL)
- Drop Python 3.7 (EOL)
- ปิดใช้การรองรับ
netcore3.1
ใน CMake (EOL)
งูหลามสร้างโมเดล
- อนุญาตให้ใช้ DataFrames และ Series ของ Pandas สร้างตัวแปร
- ดูงาน
- โปรดดูที่ bin_packing
- กรอกข้อมูลการพิมพ์
PDLP
- อัปเดตต่างๆ
CP-SAT
- การปรับปรุงประสิทธิภาพ (feasibility_jump, lin_max)
- ปรับปรุงการจัดการการตัด
- ผู้ปฏิบัติงาน Context_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, product, division
- สนับสนุนข้อมูลไม่ซ้อนทับ, ข้อมูลสะสม, วงจร, เส้นทาง
- ถูกปิดใช้โดยไม่มี_overlap_2d
- จำนวนผู้ปฏิบัติงาน ls ที่แนะนำ:
num_workers
->num_violation_ls
:(8, 1), (16, 2) (24, 3), (32, 4)
บันทึกการเปลี่ยนแปลงของ GitHub
มีนาคม 2023
ประกาศการเปิดตัว OR-Tools v9.6
เราได้เปิดตัว OR-Tools v9.6 แล้ว หากต้องการอัปเดตเวอร์ชัน โปรดดูที่ส่วนการติดตั้ง OR-เครื่องมือ
การเปลี่ยนแปลงของแพลตฟอร์ม
- เพิ่มการรองรับ Fedora 37, 38
- วาง Python 3.6 (
protobuf
ไม่รองรับ) - วาง Python 3.7 ใน macOS (
scipy
ไม่รองรับ) - เพิ่มการรองรับ
net7.0
ใน CMake (ใช้-DUSE_DOTNET_7=ON
) - เพิ่ม
netcore3.1
ในแพ็กเกจ nuget .org
การอ้างอิง
- SCIP
v801
->v803
(หมายเหตุ: ตอนนี้ SCIP ใช้ใบอนุญาตที่เข้ากันได้กับ OSI) - แอบซีล
20220623.1
->20230105.0
- โปรโตคอล
v21.5
->v21.12
- สวิก
4.1.1
- Java JNA
5.11.0
->5.12.1
Bazel
- เพิ่มการสนับสนุน pybind11
- เพิ่มการรองรับ Java Wrapper
เครื่องมือแก้โจทย์
- PDLP: dd Wrapper ของ Python
- CP-SAT: ปรับปรุงประสิทธิภาพ
- GLOP: ปรับแต่งล่วงหน้า
- ModelBuilder: Python: ปรับปรุงการรองรับตัวเลข
- การกำหนดเส้นทาง: การปรับปรุงประสิทธิภาพ (การค้นหาในท้องถิ่น)
ปัญหาที่ทราบแล้ว
- CP-SAT: การละเว้นตัวละลายย่อย
pseudo_costs
จะแสดงผลพารามิเตอร์ที่ไม่ถูกต้อง (ดู #3706)
พฤศจิกายน 2022
ประกาศการเปิดตัว OR-Tools v9.5
เราได้เปิดตัว OR-Tools v9.5 แล้ว หากต้องการอัปเดตเวอร์ชัน โปรดดูที่ส่วนการติดตั้ง OR-เครื่องมือ
การเปลี่ยนแปลงของแพลตฟอร์ม
- เพิ่มการสนับสนุน Debian Sid
- เพิ่มการรองรับ Fedora 35, 36
- เพิ่มการรองรับ Ubuntu 22.10
- วาง Python 3.6 ใน macOS
- เพิ่มการรองรับ Python 3.11
การอัปเดตการขึ้นต่อกัน
- โปรโตคอล
v19.4
->v21.5
- เครื่องมือแก้ปัญหา SCIP
v800
->v801
CP-SAT
- การปรับปรุงที่กำหนดล่วงหน้า: สูงสุด(อาร์เรย์) ข้อจำกัดบูลีน ข้อจำกัดเชิงเส้น
- การค้นหาแบบแทรกสลับควรเป็นการค้นหาเชิงกำหนดแบบคู่ขนาน
- การตัดแบบเชิงเส้น: การทำความสะอาดแบบสี่เหลี่ยมจัตุรัสและการตัดแบบ int_prod เขียนไปป์ไลน์ที่ตัดใหม่
- โมเดลและโซลูชันการป้อนข้อมูลด้วยลายนิ้วมือ (แสดงในบันทึก)
- การปรับปรุงการกำหนดเวลา
- การแก้ไขข้อบกพร่องทั่วไป (เกิดข้อขัดข้องระหว่างการแก้ไขล่วงหน้า การขัดข้องในการตัด โซลูชันที่ทําไม่ได้ โมเดลที่ทําไม่ได้ใน LNS)
กลอป
- เร่งความเร็วโดยการเขียนพีชคณิตเชิงเส้นใหม่ รวมถึงกฎการเลือก Pivot
ตัวช่วยโปรแกรมเชิงเส้น
- เพิ่ม
knapsack_interface.cc
- ย้าย model_builder API ภายใต้ไดเรกทอรี linear_solver (ส่วนหัวและตัวอย่าง)
- เพิ่มการรองรับ Gurobi 10
การกำหนดเส้นทาง
- ปลดปล่อยโปรแกรมแยกวิเคราะห์บางรายการสำหรับความท้าทายในการกำหนดเส้นทางที่หลากหลาย
สิงหาคม 2022
ประกาศการเปิดตัว OR-Tools v9.4
เราได้เปิดตัว OR-Tools v9.4 แล้ว หากต้องการอัปเดตเวอร์ชัน โปรดดูที่ส่วนการติดตั้ง OR-เครื่องมือ
แพลตฟอร์ม
- เพิ่มการรองรับ Debian-10 (ดู #3029)
- เพิ่มการสนับสนุน Ubuntu 22.04 LTS (ดู #3276) หมายเหตุ: ไม่สนับสนุน .Net 3.1 (ดูที่ dotnet/core#7038)
- นำการรองรับ Ubuntu 21.10 ออก
อื่นๆ
- แยกที่เก็บถาวรตามภาษาและเพิ่มการกำหนดค่า CMake ลงในไฟล์ C++ (#3200)
กราฟ
แบ่ง ortools.graph.pywrapgraph
เป็น:
ortools.graph.python.linear_sum_assignment
.ortools.graph.python.max_flow
.ortools.graph.python.min_cost_flow
.
วิธีนี้จะช่วยให้สามารถใช้ numpy เพื่อเร่งการตั้งค่าปัญหา
CP-SAT
การปรับปรุงบางอย่างในเรื่องต่อไปนี้
- การกำหนดเวลา (การเผยแพร่ การตัด ขอบเขตล่าง)
- MaxSAT (การเรียนรู้แบบล่วงหน้า แบบหลัก)
- ประสิทธิภาพของ MIP (เชิงรุก การตัด)
มีนาคม 2022
ประกาศการเปิดตัว OR-Tools v9.3
เราได้เปิดตัว OR-Tools v9.3 แล้ว หากต้องการอัปเดตเวอร์ชัน โปรดดูที่ส่วนการติดตั้ง OR-เครื่องมือ
การเปลี่ยนแปลงของแพลตฟอร์ม
- วางการสนับสนุน Debian-10
- วางการรองรับ Ubuntu-16.04
- วาง .NET Framework 4.5.2
การอัปเดตการขึ้นต่อกัน
- เพิ่ม Eigen
3.4.0
- เพิ่ม Google re2
2021-11-01
- โปรโตคอล
3.19.1
->3.19.4
- SCIP
7.0.1
->v800
Python
- เพิ่ม pybind11
ฟีเจอร์
- เพิ่ม PDLP เป็นการทดสอบ
- เพิ่ม MathOpt เป็นการทดสอบ
CP-SAT
- เปลี่ยนชื่อ API บางรายการเพื่อความสอดคล้อง
เช่น
LinearExpr.ScalProd.
->LinearExpr.WeightedSum.
- เพิ่ม
AddAtLeastOne
/AddAtMostOne
/AddExactlyOne
วิธี - เพิ่ม
AddMultiplicationConstraint(z, x, y)
ในทุกภาษา - เพิ่ม
AddMultipleCircuit()
ในทุกภาษา
C++
- การกระทำที่ชัดแจ้ง
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
แสดงผลคลาสเฉพาะทางที่มี API ที่เพิ่มขึ้นเพื่อเพิ่มตัวแปร ข้อกำหนด และความต้องการใหม่...
C
- บันทึกวิธีการทั้งหมด
- ทำตาม C++ API:
Circuit
,MultipleCircuit
,Cumulative
,Reservoir
,AllowedAssignment
และForbiddenAssignment
แสดงผลคลาสเฉพาะทางที่มี API ที่เพิ่มขึ้นเพื่อเพิ่มตัวแปร ข้อกำหนด และความต้องการใหม่... - เพิ่มคลาส
LinearExprBuilder
เพื่อสร้างนิพจน์แบบเพิ่มขึ้นเรื่อยๆ
สร้างระบบ
CMake
- ต้องมี CMake อย่างน้อย= 3.18
ยี่ห้อ
- ตอนนี้ให้ใช้บิลด์ที่อิงตาม CMake ภายใน
ธันวาคม 2021
ประกาศการเปิดตัว OR-Tools v9.2
เราได้เปิดตัว OR-Tools v9.2 แล้ว หากต้องการอัปเดตเวอร์ชัน โปรดดูที่ส่วนการติดตั้ง OR-เครื่องมือ
การเปลี่ยนแปลงของแพลตฟอร์ม
- เพิ่มการสนับสนุนสำหรับ Ubuntu 21:10 (รุ่นที่เปิดตัวล่าสุด)
การอัปเดตการขึ้นต่อกัน
- .Net TFM อัปเดต net5.0 -> net6.0 (ต้องการ .Net SDK 6.0 LTS และ .Net SDK 3.1 LTS)
- abseil-cpp 20210324.2 -> 20211102.0
- Protobuf 3.18.0 -> 3.19.1
- Googletest 1.10.0 -> 1.11.0
- Python: บวกตัวเลข >= 1.13.3
- ใน MacOS คอมไพล์ Coin-OR ใน
-O1
เพื่อหลีกเลี่ยงข้อขัดข้องในนักวิ่ง
การกำหนดเส้นทาง
- การปรับปรุงตัวกรอง
- ปรับปรุงการเรียนรู้ของโซลูชันแรก
- ปรับปรุงตำแหน่งช่วงพัก
CP-SAT
การเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ
- บัฟเฟอร์โปรโตคอลที่สำคัญใช้ร่วมกับเวอร์ชันก่อนหน้าไม่ได้ คุณจะต้องสร้างบัฟเฟอร์โปรโตคอลที่จัดเก็บไว้อีกครั้งด้วย API เครื่องมือสร้างที่อัปเดตแล้ว (ใน C++, Python, Java และ .NET)
- โดยเฉพาะอย่างยิ่ง โปรโตคอลของช่วงเวลานั้นสะอาดตาเมื่อเรานำช่องเก่าออก (เริ่มต้น ขนาด และสิ้นสุด) และเปลี่ยนชื่อช่องใหม่ (โดยใช้
_view
) เพื่อใช้ชื่อของช่องที่นำออก
ฟีเจอร์ใหม่
- ข้อจำกัด
all_different
,reservoir
,modulo
,multiplication
และdivision
จะยอมรับนิพจน์แบบ affine (a * var + b
) ในทุกตำแหน่งที่ต้องมีตัวแปรจำนวนเต็ม - วัตถุประสงค์ยอมรับค่าสัมประสิทธิ์จุดลอยตัว (ดูคลาส
DoubleLinearExpr
ใน C++/Java/.NET ดูตัวอย่างknapsack_2d_sat.py
ใน Python) - ข้อจำกัด
no_overlap_2d
รองรับช่วงเวลาที่ไม่บังคับ - C++ API จะใช้โอเปอเรเตอร์
+
และ*
เพื่อสร้างนิพจน์
การปรับปรุง
- ปรับปรุงโค้ดเบื้องต้น
- เครื่องมือตรวจสอบโมเดลแบบละเอียดยิ่งขึ้น
- แก้ไขข้อจำกัดอ่างเก็บน้ำ
- เพิ่มการตัดอย่างกระตือรือร้นสำหรับข้อจำกัด no_overlap_2d
- ปรับปรุงการผ่อนปรนข้อจำกัดในการเข้ารหัสเชิงเส้น (
literal implies var == value
)
วิธีการที่เลิกใช้งานและนำออกแล้ว
- เลิกใช้งาน C++
BooleanSum
และBooleanScalProd
แล้ว เพียงใช้Sum
และScalProd
- นำ C++
AddLinMinEquality
และAddLinMaxEquality
ออกแล้ว เพียงใช้AddMinEquality
และAddMaxEquality
ความไม่เข้ากันในอนาคต
- ในอนาคต เราจะเขียนเลเยอร์การสร้างแบบจำลอง Java ใหม่ให้ใกล้เคียงกับเลเยอร์ C++ มากขึ้น
- ในเลเยอร์การสร้างแบบจำลอง C++ เราจะทำให้ IntVar(BoolVar var) เป็นตัวแปรที่ชัดเจน
- เรากำลังพิจารณาเกี่ยวกับการทำให้ Python API สำหรับ PEP 8 เป็นไปตามข้อกำหนด (โดยใช้ snake_cases) หากเป็นเช่นนี้ เราจะให้ไฟล์ sed เพื่อพอร์ตโค้ด
สร้างระบบ
Bazel
- แก้ไขบิลด์ของ Windows
CMake
- เพิ่มตัวเลือก
FETCH_PYTHON_DEPS
(ค่าเริ่มต้นคือON
) - เพิ่มการสนับสนุนที่ไม่บังคับสำหรับเครื่องมือแก้โจทย์ GPLK (ค่าเริ่มต้น
-DUSE_GLPK=OFF
)
Python
- รองรับจำนวนเต็ม
numpy
ใน CP-SAT API ส่วนใหญ่ - แก้ไข
__version__
ที่ขาดหายไป
กันยายน 2021
ประกาศการเปิดตัว OR-Tools v9.1
เราได้เปิดตัว OR-Tools v9.1 แล้ว หากต้องการอัปเดตเวอร์ชัน โปรดดูที่ส่วนการติดตั้ง OR-เครื่องมือ
การเปลี่ยนแปลงของแพลตฟอร์ม
- Python: ใช้รูปภาพ
manylinux2014
(ดู PEP 599) - Python: เพิ่มการรองรับ aarch64 linux โดยใช้อิมเมจ
manylinux2014_aarch64
- .Net: เพิ่มการรองรับ .Net 5.0
การอัปเดตการขึ้นต่อกัน
- abseil-cpp 20210324.1 -> 20210324.2
- Protobuf 3.15.8 -> 3.18.0
- SCIP 7.0.1 -> ต้นฉบับ
- การทดสอบ Google 1.8.0 -> 1.10.0
- Python: การใช้
warning
ในcp_model.py
(ดู #2530) - Python: absl-py 0.11 -> 0.13
CMake
- เพิ่มเวอร์ชันขั้นต่ำที่ต้องใช้ 3.14 -> 3.15 (ดู #2528)
- Python: เพิ่มเวอร์ชันขั้นต่ำ 3.14 -> 3.18 (ดู #2774)
ยี่ห้อ
เลิกใช้งานบิลด์ที่อิงตามความตั้งใจแล้ว โปรดย้ายข้อมูลไปยัง CMake หรือ Bazel เพื่อสร้างจากต้นทาง
Java
- ปรับปรุงประสิทธิภาพของตัวโหลดไลบรารีในเครื่อง (ดู #2742)
- แก้ไขข้อขัดข้องของเครื่องมือเก็บขยะของ JVM เมื่อโมเดลการกำหนดเส้นทางหรือเครื่องมือแก้ข้อจำกัดถูกกำจัด (ดู #2091) (ดู #2466)
- แก้ไขข้อขัดข้องในการติดต่อกลับของการบันทึก CP-SAT เมื่อใช้ผู้ปฏิบัติงานหลายคน (ดู #2775)
CP-SAT
- ปรับปรุงประสิทธิภาพของโค้ด LNS (ดู #2525)
- ปรับปรุงโค้ดการตั้งเวลา: วิธีการใหม่ๆ จากโรงงานเพื่อสร้างช่วงเวลาขนาดคงที่ การเรียนรู้แบบใหม่ของการค้นหา, การแก้ไขล่วงหน้าที่ปรับปรุงใหม่ และการตัดแบบเชิงเส้นใหม่ๆ
- ปรับปรุงรหัสการกำหนดเส้นทาง: LNS ใหม่เฉพาะ
- ปรับปรุงเครื่องมือตรวจสอบโมเดล ตอนนี้ถือเป็นการเหยียดหยามกันมากขึ้น โดยเฉพาะมีโอกาสที่ล้นเกินไป
- ปรับปรุงโค้ด MIP: ตอบสนองได้ดีขึ้นและปรับปรุงการผ่อนคลายเชิงเส้นของโมเดล MIP และ CP
- เพิ่มความหลากหลายในการค้นหา เมื่อใช้ผู้ปฏิบัติงานมากกว่า 12 คน ให้เพิ่มผู้ปฏิบัติงาน ที่มีไว้สำหรับปรับปรุงขอบเขตล่างของวัตถุประสงค์
- เปลี่ยนเป็นโค้ดพร้อมกัน: โดยค่าเริ่มต้น เครื่องมือแก้โจทย์จะใช้แกนที่มีอยู่ทั้งหมด ใช้
num_search_parameters
เพื่อระบุระดับของการโหลดพร้อมกัน - เลิกใช้งาน
SearchAllSolutions
และSolveWithSolutionCallback
- Python API: จะมีการตรวจสอบที่อวดรู้มากขึ้นเมื่อใช้
var == ...
หรือvar != ...
นอกการเรียกใช้model.Add()
เมษายน 2021
ประกาศการเปิดตัว OR-Tools v9.0
เราได้เปิดตัว OR-Tools v9.0 แล้ว หากต้องการอัปเดตเวอร์ชัน โปรดดูที่ส่วนการติดตั้ง OR-เครื่องมือ
การอัปเดตการขึ้นต่อกัน
- Abseil-cpp 20200923.3 อัปเดตเป็น 20210324.1 LTS
- Protobuf 3.15.3 อัปเดตเป็น 3.15.8
- Java: jna-platform อัปเดต 5.5.0 เป็น 5.8.0 แล้ว
Java
- หรือตอนนี้เครื่องมือ "หรือ" พร้อมให้บริการแล้วใน Maven Central (โปรดดู com.google.ortools:ortools-java)
แก้ไขข้อบกพร่อง
- ปรับปรุงเทรดหลายรายการเมื่อใช้ตัวแก้โจทย์ CP-SAT (ดู #1588)
- แก้ไขการรองรับ Python Wrapper ของ
std::vector<std::string>
(ดู #2453) - ปรับปรุงการรองรับ CPLEX (ดู #2470)
การเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบที่ทราบ
- เพิ่มการเข้าถึงตัวบันทึกใน Python, Java และ .Net (ดู #2245)
- แทนที่ประเภท Google ที่กำหนดเองทั้งหมดโดยประเภทที่มีให้ใน
cstdint
CP-SAT
- เลิกใช้งานเมธอด
SearchForAllSolutions()
,SearchAllSolutions()
และSolveWithSolutionCallback()
แล้ว โปรดใช้Solve()
แทน - ปรับปรุงการรองรับโอเปอเรเตอร์มาตรฐานของ Python ซึ่งอาจทำให้โค้ดที่มีอยู่ไม่ถูกต้องเสียหาย
มีนาคม 2021
ประกาศการเปิดตัว OR-Tools v8.2
เราได้เปิดตัว OR-Tools v8.2 แล้ว หากต้องการอัปเดตเวอร์ชัน โปรดดูที่ส่วนการติดตั้ง OR-เครื่องมือ
การอัปเดตการขึ้นต่อกัน
- Abseil-cpp 20200923.2 อัปเดตเป็น 20200923.3 LTS
- Protobuf 3.14.0 อัปเดตเป็น 3.15.3
การกำหนดเส้นทาง
- เพิ่ม
RoutingModel.RegisterTransitMatrix()
และRoutingModel.RegisterUnaryTransitVector()
แล้ว - เปลี่ยนการคืนสินค้าของ
RoutingModel.AddVectorDimension()
และRoutingModel.AddMatrixDimension()
เป็นstd::pair<int, bool>
ซึ่งint
เป็นรหัสผู้ประเมินขนส่งสาธารณะ
ธันวาคม 2020
ประกาศการเปิดตัว OR-Tools v8.1
เราได้เปิดตัว OR-Tools v8.1 แล้ว หากต้องการอัปเดตเวอร์ชัน โปรดดูที่ส่วนการติดตั้ง OR-เครื่องมือ
การอัปเดตการขึ้นต่อกัน
- Abseil-cpp 20200923 อัปเดตเป็น 20200923.2 LTS
- Protobuf 3.13.0 อัปเดตเป็น 3.14
- เพิ่มการรองรับ Gurobi 9.1.0
- ทิ้งทรัพยากร Dependency ของ GLog (แทนที่โดยการใช้งานที่กำหนดเองตามแฟล็ก abseil-cpp)
- ทิ้งทรัพยากร Dependency ของ GFlag (แทนที่โดยคอมโพเนนต์แฟล็ก abseil-cpp)
แก้ไขข้อบกพร่อง
ตุลาคม 2020
ประกาศการเปิดตัว OR-Tools v8.0
เราได้เปิดตัว OR-Tools v8.0 แล้ว หากต้องการอัปเดตเวอร์ชัน โปรดดูที่ส่วนการติดตั้ง OR-เครื่องมือ
การเปลี่ยนแปลงของแพลตฟอร์ม
- เพิ่มการรองรับ Python 3.9 (#2187)
- ยกเลิกการรองรับ Python 3.5 (#2186)
<!-- กำลังรอการรองรับ Microsoftdotnet-sdk ซึ่งสามารถสร้างได้หลังเปิดตัวรุ่น...
- เพิ่มการรองรับ Ubuntu 20.10 (#2188) -->
- เลิกรองรับ Ubuntu 16.04 LTS (#2188)
- ยกเลิกการรองรับ Ubuntu 19.10 (#2188)
การอัปเดตการขึ้นต่อกัน
- Abseil-cpp 20200225.2 ที่อัปเดตเป็น 20200923 LTS
- Protobuf 3.12.2 อัปเดตเป็น 3.13.0
การเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบที่ทราบ
- ตอนนี้การกำหนดเส้นทางและซอร์สโค้ด CP-SAT จะใช้ฟีเจอร์บางอย่างของ
C++17
คำเตือน: หากคุณระบุabseil-cpp
เวอร์ชันของคุณเอง โปรดยืนยันว่าสร้างมาเพื่อC++17
ด้วย - มีการเปลี่ยนแปลงลายเซ็น
MPSolver::CreateSolver
อาร์กิวเมนต์ชื่อโมเดล ถูกตัดออก
CMake
- แก้ไขการปิดใช้การรองรับ SCIP เมื่อใช้
-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
(การใช้ฟังก์ชันการประเมิน) - ต้องมี
CMake >= 3.14
(การใช้ตัวเลือก CMake --verbose) - เพิ่มตัวเลือกเพื่อปิดการรองรับ SCIP โดยใช้
-DUSE_SCIP=OFF
(ดู #2134) - เพิ่มตัวเลือกในการปิดใช้การรองรับ CLP และ CBC โดยใช้
-DUSE_COINOR=OFF
Java
- "หรือ" สร้างแพ็กเกจ Maven แล้ว (ดู #202)
แก้ไขข้อบกพร่อง
- แก้ไขบิลด์ C++ และ Python บน FreeBSD (ดู #2126)
- แก้ไขการแก้ไขข้อบกพร่องบิลด์บน Windows (ดู #2077)
- แก้ไขข้อขัดข้องเป็นเวลานานพร้อมกันใน CP-SAT ใน Windows (ดู #2001, #2019)
กรกฎาคม 2020
ประกาศการเปิดตัว OR-Tools v7.8
เราได้เปิดตัว OR-Tools v7.8 แล้ว หากต้องการอัปเดตเวอร์ชัน โปรดดูที่ส่วนการติดตั้ง OR-เครื่องมือ
การอัปเดตการขึ้นต่อกัน
- Gurobi 9.0.2 มีการผสานรวมไว้ล่วงหน้าแล้วในไบนารีที่สร้างไว้ล่วงหน้า ระบบจะค้นหาไลบรารีที่ใช้ร่วมกัน Gurobi 90 ในเส้นทางการติดตั้งเริ่มต้นของตัวติดตั้ง Gurobi บน MAC OS X และ Windows หรือในไดเรกทอรี GUROBI_HOME
- SCIP 7.0.1 ผสานรวมอยู่ในไบนารีที่สร้างไว้ล่วงหน้าแล้ว โปรดตรวจสอบว่าใบอนุญาต SCIP เป็นไปตามข้อกำหนดก่อนที่จะใช้งาน
- เพิ่มการรองรับ Xpress Solver 8.9.0 ที่ไม่บังคับ
ตัวช่วยโปรแกรมเชิงเส้น
- เพิ่มเมธอด
LinearSolver::CreateSolver()
แบบคงที่เพื่อให้การสนับสนุนการตรวจสอบสำหรับแบ็กเอนด์เครื่องมือแก้โจทย์วิดีโอเชิงเส้นที่ผสานรวมทำได้ง่ายขึ้น ใช้งานได้กับทุกภาษา
แก้ไขข้อบกพร่อง
- บิลด์ที่ใช้ CMake แบบคงที่บน FreeBSD
- การแก้ไขการจัดเรียง CP-SAT ในการสร้างการตัดสะสม
- แก้ไขการรั่วไหลของหน่วยความจำเครื่องมือแก้เชิงเส้นใน .Net Wrapper
มิถุนายน 2020
ประกาศการเปิดตัว OR-Tools v7.7
เราได้เปิดตัว OR-Tools v7.7 แล้ว หากต้องการอัปเดตเวอร์ชัน โปรดดูที่ส่วนการติดตั้ง OR-เครื่องมือ
การอัปเดตการขึ้นต่อกัน
- Abseil-cpp b832dce อัปเดตเป็น c51510d (LTS 20200225.2)
- Protobuf 3.11.4 อัปเดตเป็น 3.12.2
ฟีเจอร์ใหม่และการปรับปรุง
- ตอนนี้เครื่องมือแก้โจทย์คณิต CP-SAT จะแสดงผล
Optimal
แทนที่จะเป็นFeasible
ในโมเดลความพึงพอใจ (กล่าวคือ ไม่มีวัตถุประสงค์) - เพิ่มการเรียนรู้ของ Pump ความเป็นไปได้จากชุมชน MIP
แก้ไขข้อบกพร่อง
แก้ไขข้อขัดข้องของมัลติเทรด CP-SAT (ดู #2005)
เมษายน 2020
ประกาศการเปิดตัว OR-Tools v7.6
เราได้เปิดตัว OR-Tools v7.6 แล้ว หากต้องการอัปเดตเวอร์ชัน โปรดดูที่ส่วนการติดตั้ง OR-เครื่องมือ
ฟีเจอร์ใหม่ของ CP-SAT
เราได้เพิ่มฟีเจอร์ใหม่ๆ ต่อไปนี้ลงในเครื่องมือแก้โจทย์ CP-SAT
- ปรับปรุงการจัดการเครื่องบินตัดสำหรับ LP
- เครื่องมือแก้ไขข้อบกพร่อง
การอัปเดตการขึ้นต่อกัน
Abseil-cpp 8ba96a8 อัปเดตเป็น b832dce (LTS 20200225)
แก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องของ CP-SAT UNSAT ใน Presolve (ดู #1908)
- แก้ไข URL swigwin.exe
- แก้ไขการจัดการ Typemap ของ SWIG สำหรับ Java และ .Net
มกราคม 2020
ประกาศการเปิดตัว OR-Tools v7.5
เราได้เปิดตัว OR-Tools v7.5 แล้ว หากต้องการอัปเดตเวอร์ชัน โปรดดูที่ส่วนการติดตั้ง OR-เครื่องมือ
การเปลี่ยนแปลงของแพลตฟอร์ม
- เพิ่มการรองรับ Python 3.8 (#1719)
- ยกเลิกการรวบรวมการสนับสนุนจากแหล่งที่มาใน Visual Studio 2017 (#1852)
- อัปเดตการสนับสนุนจาก Centos 7 เป็น Centos 8 (#1827)
การอัปเดตการขึ้นต่อกัน
แก้ไขข้อบกพร่อง
ปัญหาต่อไปนี้ได้รับการแก้ไขแล้วใน OR-Tools v7.5 (ดูรายการทั้งหมดได้ที่ Milestone v7.5)
โดยเฉพาะอย่างยิ่งฟีเจอร์ต่อไปนี้
- การโหลดการประกอบที่แก้ไขแล้ว ดู #1421
- เปิดเผยเมธอด
GetStartIndex()
และGetEndIndex()
ของ RouteIndexManager (#1843) - แก้ไข SWIG เพื่อนำเมธอดที่ใช้งานไม่ได้ออก (#1838, #1276)
ตุลาคม 2019
ประกาศการเปิดตัว OR-Tools v7.4
เราได้เปิดตัว OR-Tools v7.4 แล้ว หากต้องการอัปเดตเวอร์ชัน โปรดดูที่ส่วนการติดตั้ง OR-เครื่องมือ
ฟีเจอร์ใหม่และการปรับปรุง
- ตอนนี้เครื่องมือแก้โจทย์คณิต CP-SAT จะตรวจหาข้อจำกัดที่ไม่รองรับข้อความการบังคับใช้ เครื่องมือตรวจสอบโมเดลจะแสดงผลข้อผิดพลาดก่อนที่จะแก้ไข หากข้อจำกัดดังกล่าวมีค่าลิเทอรัลการบังคับใช้
- การค้นหาภายในเครื่องที่ดีและรวดเร็วยิ่งขึ้นสำหรับไลบรารีการกำหนดเส้นทาง
- ตอนนี้เครื่องมือแก้วิดีโอเชิงเส้นรองรับ Xpress-MP ซอฟต์แวร์ของบุคคลที่สามแล้ว คุณจะต้องสร้าง "หรือ-เครื่องมือ" ใหม่จากซอร์สเพื่อใช้งาน
- สถาปัตยกรรมของแพ็กเกจ NuGet ได้รับการเขียนใหม่ทั้งหมด โดยเฉพาะตอนนี้ที่รองรับ .NET Framework >= 4.5.2 ในแพลตฟอร์ม Windows
แพลตฟอร์มที่เลิกใช้งาน
ตามที่ได้ประกาศในบันทึกประจำรุ่นเดือนกรกฎาคม 2019 OR-Tools จะไม่รองรับ Python 2.7 อีกต่อไป
การอัปเดตการขึ้นต่อกัน
Protobuf 3.9.0 ได้รับการอัปเดตเป็น 3.10.0 แล้ว
สิงหาคม 2019
ประกาศการเปิดตัว OR-Tools v7.3
เราได้เปิดตัว OR-Tools v7.3 แล้ว หากต้องการอัปเดตเวอร์ชัน โปรดดูที่ส่วนการติดตั้ง OR-เครื่องมือ
แพลตฟอร์มที่เลิกใช้งาน
เรากำลังจะเลิกรองรับ Python 2.7 เพื่อให้สอดคล้องกับการย้ายไปใช้ Python 3 ของ Google นี่จะเป็นรุ่นสุดท้ายของ OR-เครื่องมือที่รองรับ Python 2.7
การอัปเดตการขึ้นต่อกัน
Protobuf 3.8.0 ได้รับการอัปเดตเป็น 3.9.0 แล้ว
แก้ไขข้อบกพร่อง
ปัญหาต่อไปนี้ได้รับการแก้ไขแล้วใน OR-Tools v7.3 (ดูรายการทั้งหมดได้ที่ Kanban v7.3)
โดยเฉพาะอย่างยิ่งฟีเจอร์ต่อไปนี้
- แก้ไขปัญหาแคสต์ init/int64 ใน Java (#1448)
- แก้ไขการตรวจสอบล่วงหน้าเมื่อประมวลผลข้อจำกัดสะสมที่ว่างเปล่า
กรกฎาคม 2019
ประกาศการเปิดตัว OR-Tools v7.2
เราได้เปิดตัว OR-Tools v7.2 แล้ว หากต้องการอัปเดตเวอร์ชัน โปรดดูที่ส่วนการติดตั้ง OR-เครื่องมือ
การเปลี่ยนแปลงของแพลตฟอร์ม
- เรากำลังจะเลิกรองรับ Python 2.7 เพื่อให้สอดคล้องกับการย้ายไปใช้ Python 3 ของ Google จะมีรุ่น OR-เครื่องมือ อีกไม่เกิน 1 รุ่นที่รองรับ Python 2.7
- อัปเดต Ubuntu 18.10 เป็น Ubuntu 19.04 แล้ว
- เพิ่มการรองรับการรวบรวมจากแหล่งที่มาใน Visual Studio 2019
- Windows ไม่รองรับ Python 3.5 อีกต่อไป โปรดใช้ Python 3.6 ขึ้นไป
การอัปเดตทรัพยากร Dependency
- ตอนนี้เรากำหนดเป้าหมายไปที่ CBC 2.10.3
- ตอนนี้เรากำหนดเป้าหมายเป็น Protobuf 3.8.0
CP-SAT
- เราได้ปรับปรุงการค้นหา การทำงานพร้อมกัน และการผ่อนปรนแบบเชิงเส้นไว้หลายครั้ง
- เพิ่ม API
LinearExpr.Sum()
และLinearExpr.ScalProd()
ใน Python - เลิกใช้งาน API
IntVar[].Sum()
และIntVar[].ScalProd()
ใน C# แล้ว - C++: นำ
SolveWithModel()
ออกแล้วเนื่องจากซ้ำกับSolveCpModel()
- เพิ่มเมธอด
CpModel.addGreaterThan()
และCpModel.addLessThan()
ลงใน Java API
เครื่องมือแก้โจทย์เชิงเส้น
- เพิ่ม
MPSolver.SetHint()
สำหรับ Python, Java และ C# (รองรับโดย SCIP และ Gurobi) - เพิ่ม
MPSolver.SetNumThreads()
สำหรับ Python, Java และ C# (รองรับโดย CBC, Gurobi และ SCIP) - การสนับสนุนการเขียนใหม่สำหรับ SCIP 6.0.1
เอกสารประกอบอ้างอิง
- เราได้เพิ่มคู่มืออ้างอิงที่ใช้ Doxygen และ pdoc3 สำหรับภาษาและเครื่องมือทั้งหมด (อัลกอริทึม การกำหนดเส้นทาง กราฟ พารามิเตอร์เชิงเส้น และ CP-SAT) ดูคู่มืออ้างอิงหรือคู่มือเครื่องมือ
- มีเอกสารอ้างอิงสำหรับ C++ (ผลิตภัณฑ์ทั้งหมด) และ CP-SAT (C++, Python, Java) ครบถ้วน
- ขณะนี้เรากำลังดำเนินการส่งออกเอกสาร C++ ทั้งหมดไปยัง Python และ Java
- ไม่มีเอกสาร .NET และยังไม่มีโซลูชันในอนาคตอันใกล้ที่จะปรับปรุงเรื่องนี้ได้ เราได้เก็บ API ไว้เนื่องจากยังแสดง API ที่ใช้งานได้อยู่
พฤษภาคม 2019
ประกาศการเปิดตัว OR-Tools v7.1
เราได้เปิดตัว OR-Tools v7.1 แล้ว หากต้องการอัปเดตเวอร์ชัน โปรดดูที่ส่วนการติดตั้ง OR-เครื่องมือ
การเปลี่ยนแปลงทรัพยากร Dependency ที่จำเป็น
OR-Tools v7.1 มีทรัพยากร Dependency ใหม่และที่อัปเดตดังนี้
- 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 API
ส่วนต่อไปนี้จะอธิบายการเปลี่ยนแปลงของ CP-SAT API ใน OR-เครื่องมือ 7.1
การใช้โดเมนเพื่อสร้างตัวแปร
ตัวอย่างต่อไปนี้แสดงวิธีสร้างตัวแปรจำนวนเต็มที่มีโดเมนไม่ต่อเนื่อง
วิธีนี้แทนที่เมธอด 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} }))
.Net
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);
.Net
model.Add(x + y == 20); model.Add(4 * x + 2 * y == 56);
มีนาคม 2019
ประกาศการเปิดตัว OR-Tools v7.0
เราได้เปิดตัว OR-Tools v7.0 แล้ว หากต้องการอัปเดตเวอร์ชัน โปรดดูที่ส่วนการติดตั้ง OR-เครื่องมือ
การเปลี่ยนแปลงในแพลตฟอร์มที่รองรับ
OR-Tools v7.0 จะไม่รองรับแพลตฟอร์มต่อไปนี้อีกต่อไป
- ภาพ C++ 2015
- Ubuntu 14.04
- Python 3.4 บน Linux
หากใช้แพลตฟอร์มเหล่านี้ คุณจะยังคงติดตั้ง OR-Tools v6.10 ได้
การเปลี่ยนแปลงทรัพยากร Dependency ที่จำเป็น
OR-Tools v7.0 มีทรัพยากร Dependency ใหม่และที่อัปเดตดังนี้
- ใหม่: Abseil-cpp
- อัปเดต gflags 2.2.1 เป็น 2.2.2
ส่วนต่อไปนี้จะอธิบายฟีเจอร์ใหม่และการปรับปรุงใน OR-Tools 7.0
- ตัวจัดการดัชนีใหม่สำหรับโปรแกรมการกำหนดเส้นทาง
- การรองรับ VRP ด้วยบริการรับสินค้าและบริการจัดส่ง
- รองรับฟังก์ชัน lambda ใน Java และ C#
ตัวจัดการดัชนีใหม่สำหรับโปรแกรมการกำหนดเส้นทาง
ใน OR-Tools v7.0 โปรแกรมการกำหนดเส้นทางยานพาหนะต้องใช้ RoutingIndexManager
ใหม่
วิธีนี้ช่วยให้มั่นใจว่าดัชนีมาตรฐานสำหรับสถานที่ต่างๆ นั้นสอดคล้องกับดัชนีภายในที่เครื่องมือแก้โจทย์ใช้ และช่วยป้องกันข้อผิดพลาดในโค้ดของคุณ
RoutingIndexManager
แบบใหม่กำหนดให้ต้องมีการเปลี่ยนแปลงเล็กน้อยในโปรแกรมการกำหนดเส้นทาง ซึ่งได้อธิบายไว้ในส่วนต่อไปนี้
- รวมหรือนำเข้า
RoutingIndexManager
ใน C++ และ Java - ประกาศ
RoutingIndexManager
- เพิ่ม
RoutingIndexManager
ลงใน โค้ดเรียกกลับของมิติข้อมูล - ใช้
RoutingIndexManager
เพื่อพิมพ์โซลูชัน
รวม/นำเข้า RoutingIndexManager
ใน OR-Tools 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-Tools 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);
.Net
RoutingIndexManager manager = new RoutingIndexManager(numLocations, numVehicles, depot); RoutingModel routing = new RoutingModel(manager);
อาร์กิวเมนต์ของ RoutingIndexManager
คือ
- จำนวนสถานที่
- จำนวนยานพาหนะ
- ดัชนีของดีโป (ตำแหน่งเริ่มต้นและสิ้นสุดสำหรับยานพาหนะทุกคัน)
โค้ดเรียกกลับ
ใน OR-Tools 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);
.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
จะแปลงดัชนีตำแหน่งภายในที่ตัวปรับแต่งใช้ให้เป็นดัชนีมาตรฐานสำหรับเมทริกซ์ระยะทาง
แทนที่จะส่งโค้ดเรียกกลับไปยังเครื่องมือแก้โดยตรงเหมือนในเวอร์ชันก่อนหน้า ในเวอร์ชันก่อน ให้สร้าง 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");
.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");
โซลูชันการพิมพ์
ใน OR-Tools 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"); }
.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); }
การสนับสนุนสำหรับ VRP ด้วยบริการรับสินค้าและบริการจัดส่ง
OR-Tools v7.0 จะให้ความช่วยเหลือในการแก้ไขปัญหาการกำหนดเส้นทางรถ (VRP) ด้วยบริการรับสินค้าและการจัดส่ง โดยมีเป้าหมายคือการค้นหาเส้นทางที่สั้นที่สุดสำหรับยานพาหนะที่เข้าไปรับสินค้าและส่งสินค้าในสถานที่ต่างๆ คุณตั้งค่าปัญหาคล้ายกับ VRP มาตรฐาน แต่นอกจากนี้ยังระบุ (i, j)
สถานที่สำหรับแต่ละรายการ โดย i คือสถานที่รับสินค้า และ j คือสถานที่ส่ง เครื่องมือแก้เส้นทางส่งคืนเส้นทางพาหนะที่ (i, j)
, i
และ j
แต่ละคู่อยู่ในเส้นทางเดียวกัน และรถจะเยี่ยมชม i
ก่อนวันที่ j
สำหรับตัวอย่างที่ช่วยแก้ปัญหาประเภทนี้ได้ โปรดดูการกำหนดเส้นทางพาหนะพร้อมรับและนำส่ง
การรองรับฟังก์ชันแลมบ์ดา
ตอนนี้ OR-Tools v7.0 มีการรองรับฟังก์ชัน lambda ใน C# และ Java (นอกเหนือจาก C++ และ Python ซึ่งรองรับอยู่แล้ว) ฟังก์ชัน Lambda เป็นวิธีที่สะดวกในการกำหนดโค้ดเรียกกลับในโปรแกรมการกำหนดเส้นทาง อย่างไรก็ตาม คุณสามารถกำหนดโค้ดเรียกกลับโดยใช้ฟังก์ชันมาตรฐานได้หากรู้สึกว่าทำให้โค้ดอ่านง่ายขึ้น
ตัวอย่างโค้ดเรียกกลับของ C# และ Java ด้านบนจะสาธิตวิธีการกำหนดโค้ดเรียกกลับโดยใช้ฟังก์ชัน lambda
พฤศจิกายน 2018
ประกาศการเปิดตัวเวอร์ชัน v6.10
เราได้เปิดตัว OR-Tools เวอร์ชัน 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.ccดูวิธีการเฉพาะสำหรับการเรียกใช้โปรแกรมตามภาษาได้ที่เริ่มต้นใช้งาน OR-เครื่องมือ
การสนับสนุนสำหรับ SCIP 6.0.0
ตอนนี้ "หรือ" รองรับ SCIP 6.0.0
ไบนารี
ชุดไบนารีสร้างขึ้นโดยใช้ Java JDK 8 (JDK 7 สำหรับ Ubuntu 14.04)
เครื่องมือแก้โจทย์ CP-SAT
อัปเดต API
- เพิ่ม C++ CP-SAT CpModelBuilder API
ตัวอย่าง
มีการย้ายบางตัวอย่างไปแล้ว
- ย้ายตัวอย่างชุมชนไปที่
examples/contrib
- ย้ายตัวอย่างบางส่วนไปที่
ortools/<var>component</var>/samples
(เช่นortools/linear_solver/samples/simple_program.java
)
กันยายน 2018
ประกาศการเปิดตัวเวอร์ชัน v6.9
เราได้เปิดตัว OR-Tools เวอร์ชัน 6.9 แล้ว หากต้องการอัปเดตเวอร์ชัน ให้ดู ส่วนที่เกี่ยวข้องของการติดตั้ง OR-เครื่องมือ
อัปเดตทรัพยากร Dependency แล้ว
- Protobuf 3.5.1 -> 3.6.1
- SCIP 4.0 -> 6.0
เครื่องมือแก้โจทย์ CP-SAT
- รายละเอียดของการเปลี่ยนแปลง API - ดูรายละเอียดทั้งหมดได้ที่นี่
- เปลี่ยนชื่อ
SolveWithSolutionObserver
เป็นSolveWithSolutionCallback
ใน Python เปลี่ยนชื่อ
NewSolution
เป็นOnSolutionCallback
ในคลาสCpSolverSolutionCallback
ใน Python ตัวอย่างต่อไปนี้แสดงวิธีใหม่ในการสร้างโค้ดเรียกกลับของโซลูชันใน Pythonclass 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
แสดง
StopSearch
ในโค้ดเรียกกลับของโซลูชันใน Python, Java และ C# ดูเอกสารประกอบที่นี่แสดง
ModelStats
และCpSolverResponseStats
ใน Python, Java และ C#ปรับปรุงเอกสารประกอบเรื่องสตริงเอกสารของ Python ดูเอกสารประกอบที่นี่
การอัปเดตการใช้งาน Java ในอินเทอร์เฟซการแก้โจทย์และตำราอาหาร
นำมอดูโลไปใช้
เปลี่ยนการใช้งานที่เก็บอ่างเก็บน้ำ: เพิ่ม API ที่มีบูลีนเพื่อระบุเหตุการณ์การระบาย/การเติมข้อมูลที่ไม่บังคับ
ตัวช่วยโปรแกรมเชิงเส้น
- แสดง
InterruptSolve
ใน Java และ C#
เครื่องมือแก้ปัญหา CP
- แสดงผู้อำนวยการ
SolutionCollector
คนใน C#
Python
- เพิ่มการสนับสนุนสำหรับ
Python 3.7
- เมื่อคอมไพล์จากแหล่งที่มา: เลือกใช้
python3
มากกว่าpython2
เมื่อตรวจหา Python
.NET
- เขียนเลเยอร์ .NET ใหม่ให้เสร็จสมบูรณ์
- ส่งแพ็กเกจ
Google.OrTools
NetStandard 2.0 Nuget ที่ใช้ได้กับ Runtime IDentifierwin-x64
,linux-x64
และosx-x64
- ส่งแพ็กเกจ
Google.OrTools.FSharp
Nuget - เพิ่มไฟล์โปรเจ็กต์สำหรับตัวอย่าง .NET ทั้งหมด
- อัปเดตตัวอย่างสคริปต์ F# ทั้งหมด (.fsx) เป็นโปรเจ็กต์ F# ปกติ (.fs)
- เพิ่มเอกสารประกอบเกี่ยวกับการสร้างแพ็กเกจ .NET ได้ที่นี่
แฟลตซิงค์
- เพิ่มการรองรับชุดใน Flatzinc (โดยใช้ nosets.mzn)
การมีส่วนร่วม
- เพิ่มการรองรับ Binder ขอขอบคุณ Kevin Mader
- กำหนดให้
DecisionVisitor
เป็นประเภท Director ในการเชื่อมโยง Java ขอขอบคุณ Jeremy Apthorp
กรกฎาคม 2018
ประกาศการเปิดตัวเวอร์ชัน v6.8
เราได้เปิดตัว OR-Tools เวอร์ชัน 6.8 แล้ว หากต้องการอัปเดตเวอร์ชัน ให้ดู ส่วนที่เกี่ยวข้องของการติดตั้ง OR-เครื่องมือ
เปิดตัวเครื่องมือแก้โจทย์ CP-SAT
โปรแกรมแก้โจทย์ CP-SAT เป็นเครื่องมือแก้โจทย์ใหม่สำหรับการเขียนโปรแกรมข้อจำกัด เครื่องมือแก้โจทย์ CP-SAT เร็วกว่าเครื่องมือแก้โจทย์ CP เดิม และควรเป็นวิธีแก้ปัญหา CP
สำหรับตัวอย่างที่ใช้ตัวแก้โจทย์ CP-SAT โปรดดูไฟล์ที่มี _sat
ในชื่อในไดเรกทอรี ตัวอย่าง บน GitHub
เครื่องมือแก้โจทย์คณิตเดิมจะยังคงอยู่เป็นระยะเวลาหนึ่งเพื่อรองรับโค้ดที่มีอยู่ แต่ระบบจะเลิกใช้งานไปแล้ว
ตัวเลือกใหม่สำหรับตัวแก้โจทย์ CP-SAT
ตัวเลือกต่อไปนี้สำหรับเครื่องมือแก้โจทย์คณ CP-SAT คือฟีเจอร์ใหม่ในรุ่นนี้
- ค้นหาย่านใกล้เคียง (LNS): ใช้ตัวเลือก
SatParameters.use_lns
เพื่อเปิดใช้ LNS - การค้นหาพร้อมกัน: ใช้ตัวเลือก
SatParameters.num_search_workers
เพื่อเปิดใช้ชุดข้อความหลายรายการระหว่างการค้นหา แต่ละเทรดอาจมีพารามิเตอร์ที่ต่างกัน และเมล็ดแบบสุ่มที่ต่างกัน ซึ่งจะช่วยเพิ่มความหลากหลายให้มากที่สุด และความน่าจะเป็นที่เทรดอย่างน้อย 1 สายจะพบวิธีแก้ปัญหา
การปรับปรุงประสิทธิภาพสำหรับเครื่องมือแก้โจทย์
เราได้ปรับปรุงประสิทธิภาพเครื่องมือแก้โจทย์ CP-SAT และ Glop
มีนาคม 2018
ประกาศการเปิดตัวเวอร์ชัน v6.7
เราได้เปิดตัว OR-Tools เวอร์ชัน 6.7 แล้ว หากต้องการอัปเดตเวอร์ชัน โปรดดูที่ส่วนการติดตั้ง OR-เครื่องมือ
อัปเดตเป็นทรัพยากร Dependency ที่จำเป็น
- Protobuf 3.5.0 -> 3.5.1
อื่นๆ
- เปลี่ยนโครงสร้างภายในเพื่อเตรียมการผสานรวม abseil-cpp
- การใช้บริการการผสานรวมอย่างต่อเนื่อง (CI) ของ Travis CI และ Appveyor
SAT
- การปรับปรุงประสิทธิภาพ
- ปรับปรุง Python API
- เพิ่ม C# API หรือ CpSolver.cs (เวอร์ชันทดลอง)
กลอป
- การเปลี่ยนโครงสร้างโค้ด
- การปรับปรุงประสิทธิภาพ
การสนับสนุน CMake (ทดลอง)
- เพิ่มการสนับสนุน C++ หรือเครื่องมือ CMake
- สร้าง OR-Tools เป็นโปรเจ็กต์ CMake แบบสแตนด์อโลนได้
- ผสานรวม OR-เครื่องมือ เข้ากับโปรเจ็กต์ CMake ที่มีอยู่ได้
- เพิ่มบิลด์ที่อิงตาม Python OR-Tools CMake
- สร้างแพ็กเกจ Python (วงล้อ) โดยใช้ CMake
การมีส่วนร่วม
- แก้ไขการกำหนดใหม่ "winsock2.h" ในหน้าต่าง ขอขอบคุณ Florent Tollin de Rivarol
- เพิ่มการสนับสนุน F# (รุ่นทดลอง) ขอขอบคุณ Matthew Moore หมายเหตุ: ใช้ได้กับเครื่องมือสร้าง Makefile เท่านั้น
- เพิ่มการสนับสนุนระดับมาตรฐาน .NET (รุ่นทดลอง) ขอขอบคุณ Ziad El Malki หมายเหตุ: ใช้ได้กับเครื่องมือสร้าง Makefile เท่านั้น
พฤศจิกายน 2017
ประกาศการเปิดตัวเวอร์ชัน v6.6
เราได้เปิดตัว OR-Tools เวอร์ชัน 6.6 แล้ว หากต้องการอัปเดตเวอร์ชัน ให้ดู ส่วนที่เกี่ยวข้องของการติดตั้ง OR-เครื่องมือ
การอัปเดตทรัพยากร Dependency ที่จำเป็น
- Protobuf เป็น 3.3.0 -> 3.5.0
- gflags เป็น 2.2.0 -> 2.2.1
- CBC 2.9.8 -> 2.9.9
- เพิ่มโมดูล Python ที่ 6 (1.10) เป็นทรัพยากร Dependency ที่จำเป็นสำหรับ Python
การแก้ไขข้อบกพร่อง
- ดึงคำขอเปลี่ยนโครงสร้างภายใน #494 ชื่อ การเพิ่มความคิดเห็นสำหรับ IntelliSense ใน ตัวแก้ไขบางรายการ ขอขอบคุณ Matthew Moore
- พุลคำขอ #516 คำสั่งสำหรับไบนารีแบบสแตนด์อโลนของ F# ขอขอบคุณ Matthew Moore
- ปรับปรุงความแม่นยำใน Glop
เครื่องมือแก้โจทย์ SAT
- ปรับปรุงเครื่องมือแก้โจทย์ SAT ภายใน แก้ไขข้อบกพร่องต่างๆ
- เพิ่มข้อจำกัด VRP ลงในเครื่องมือแก้โจทย์ SAT ซึ่งลิงก์กับเครื่องมือแก้โจทย์ LP
- เปลี่ยนเครื่องมือสังเกตการณ์โซลูชันในตัวแก้โจทย์ SAT เพื่อใช้
CpSolverResponse
เป็นพารามิเตอร์ - ปรับปรุงการใช้ Glop ในเครื่องมือแก้โจทย์ SAT
- เร่งการเชื่อมต่อ SAT-LP
- เพิ่มข้อจำกัด Reservoir ให้กับรูปแบบ SAT cp_model สองรุ่น
SAT/Python
- บทนำของ SAT API ใน Python
- เขียนโค้ดใน
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
- ตัวอย่าง Python จะส่งออกไปยังสมุดบันทึกและพร้อมใช้งานในตัวอย่าง/notebook
ตัวอย่าง
- เขียน rcpsp_parser ใหม่ เพื่อใช้รูปแบบ ProtoBuf ในการจัดเก็บปัญหา
- ปรับปรุงโปรแกรมแยกวิเคราะห์ RCPSP
ตุลาคม 2017
ประกาศการเปิดตัวเวอร์ชัน v6.5
เราได้เปิดตัว OR-Tools เวอร์ชัน 6.5 แล้ว หากต้องการอัปเดตเวอร์ชัน ให้ดู ส่วนที่เกี่ยวข้องของการติดตั้ง OR-เครื่องมือ
การเปลี่ยนแปลงในแพลตฟอร์ม
- โมดูล pypi py3-ortools ได้ถูกรวมเข้ากับโมดูล ortools แล้ว ตอนนี้มีเพียงโมดูลเดียว คือ "ortools"
- รูปแบบหลักของโมดูล Python เหล่านี้ตอนนี้คือไฟล์วีล
หากต้องการติดตั้ง OR-เครื่องมือสำหรับ Python จาก Pypi เพียงเรียกใช้
pip install ortools
คุณต้องติดตั้ง PIP เวอร์ชันล่าสุด (>= 9.0.1) ซึ่งจะดึงรุ่นล่าสุด (v6.5)
Bug fixed
ขณะนี้ไฟล์ Jar Protobuf สร้างขึ้นอย่างถูกต้องด้วยคลาสที่คอมไพล์แล้ว
ตัวอย่างใหม่
- ได้มีการส่งตัวอย่าง F# เพิ่มเติมไปยังไดเรกทอรี sample/fsharp (ขอขอบคุณ Matthew Moore อีกครั้ง)
- นอกจากนี้ เรายังได้ร่วมส่งตัวอย่าง Java MIP (ขอบคุณ Darian)
กันยายน 2017
ประกาศการเปิดตัวเวอร์ชัน v6.4
เราได้เปิดตัว OR-Tools เวอร์ชัน 6.4 แล้ว หากต้องการอัปเดตเวอร์ชัน ให้ดู ส่วนที่เกี่ยวข้องของการติดตั้ง OR-เครื่องมือ
การเปลี่ยนแปลงในแพลตฟอร์ม
- ตอนนี้โมดูล Pypi บนแพลตฟอร์ม Linux จะแสดงเป็นไฟล์วงล้อโดยใช้แท็ก Manylinux1 ขอขอบคุณ Federico Ficarelli จากการเปลี่ยนแปลงนี้ เราได้ย้อนกลับโมดูล Per-linux ที่เปิดตัวไปในรุ่นเดือนกรกฎาคม 2017
ฟีเจอร์ใหม่
- วิธีการปรับขนาดที่ใช้ภายใน GLOP ที่ได้รับการปรับปรุง
- แก้ไขการรวมผู้ประเมินในไลบรารีการกำหนดเส้นทาง C# ขอขอบคุณ DevNamedZed
- ปรับปรุงประสิทธิภาพของตัวละลาย Flatzinc สำหรับโมเดลขนาดใหญ่
- ใช้ SAT ที่ได้รับการสนับสนุนสำหรับ Flatzinc โดยค่าเริ่มต้น
- ปรับปรุงประสิทธิภาพหลักการพื้นฐานสำหรับเครื่องมือแก้คะแนน
- แก้ไขข้อบกพร่องในอัลกอริทึมการกำหนดเชิงเส้นที่ล้มเหลวอย่างไม่ถูกต้อง
- เพิ่มตัวอย่าง F# ใน ortools/examples/fsharp
- นำการตรวจหาการลงโทษเชิงบวกออกจากไลบรารีการกำหนดเส้นทาง
สิงหาคม 2017
ประกาศการเปิดตัวเวอร์ชัน v6.3
เราได้เปิดตัว OR-Tools เวอร์ชัน 6.3 แล้ว หากต้องการอัปเดตเวอร์ชัน ให้ดู ส่วนที่เกี่ยวข้องของการติดตั้ง OR-เครื่องมือ
ไฟล์ดาวน์โหลดใหม่
ไฟล์ Python Wheel สำหรับ Linux พร้อมให้ดาวน์โหลดแล้วในหน้าการเผยแพร่ "OR-Tools" พร้อมกับเวอร์ชันล่าสุดของการดาวน์โหลดทั้งหมด
เครื่องมือแก้โจทย์คณิตน้อย
เวอร์ชันนี้มีโค้ด Sat และ Flatzinc ขั้นสุดท้ายที่ส่งสำหรับ ชาเลนจ์ Minizinc 2017
กรกฎาคม 2017
ประกาศการเปิดตัวเวอร์ชัน v6.2
เราได้เปิดตัว OR-Tools เวอร์ชัน 6.2 แล้ว หากต้องการอัปเดตเวอร์ชัน ให้ดู ส่วนที่เกี่ยวข้องของการติดตั้ง OR-เครื่องมือ
การเปลี่ยนแปลงในแพลตฟอร์ม
- ตอนนี้เรารองรับไบนารีของ Linux หลายรายการ (Ubuntu 14.04, 16.04, 17.04, CentOS 7, Debian 9)
- โมดูล Pypi บนแพลตฟอร์ม Linux มีแท็กที่อธิบายการกระจาย (ubuntu-14.04, ubuntu-16.04, ubuntu-17.04, centos-7, debian-9)
ฟีเจอร์ใหม่
เราได้เพิ่มการรองรับ Docker เพื่อสร้างอาร์ติแฟกต์ที่ใช้ระบบปฏิบัติการ Linux ไปที่ or-tools/tools/docker
และดู Makefile
เพื่อดูเป้าหมายที่เป็นไปได้ (make archive
make pypi
และ make pypi3
)
คำสั่งเหล่านี้จะสร้างไดเรกทอรีย่อย export
และเพิ่มอาร์ติแฟกต์ไบนารีในนั้น
มิถุนายน 2017
ประกาศการเปิดตัวเวอร์ชัน v6.1
เราได้เปิดตัว OR-Tools เวอร์ชัน 6.1 แล้ว หากต้องการอัปเดตเวอร์ชัน ให้ดู ส่วนที่เกี่ยวข้องของการติดตั้ง OR-เครื่องมือ
การเปลี่ยนแปลงในแพลตฟอร์ม
- ระบบรองรับ Visual Studio 2017 แต่จะไม่รองรับ Visual Studio 2013 อีกต่อไป
- รองรับ macOS เวอร์ชัน 10.9 ขึ้นไป
ฟีเจอร์ใหม่
เราได้เพิ่มรูปแบบ Protobuf ใหม่สำหรับเครื่องมือแก้โจทย์ CP-SAT
ดู ortools/sat/cp_model.proto
เพื่อกำหนดโมเดลของคุณ และ ortools/sat/cp_model_solver.h
เพื่อแก้ปัญหา
การแก้ไขข้อบกพร่อง
ปัญหา #420: เราได้แก้ไขแอตทริบิวต์ __version__
ที่ขาดหายไปในโมดูล Python pypi ในทุกแพลตฟอร์มแล้ว
พฤษภาคม 2017
ประกาศการเปิดตัวเวอร์ชัน v6.0
เราได้เปิดตัว OR-Tools เวอร์ชัน 6.0 แล้ว หากต้องการอัปเดตเวอร์ชัน ให้ดู ส่วนที่เกี่ยวข้องของการติดตั้ง OR-เครื่องมือ
โครงสร้างไดเรกทอรีใหม่ใน C++
เราได้เปลี่ยนโครงสร้างแหล่งที่มา/รวมของ "หรือ" เมื่อใช้ C++ เป้าหมายคือให้มีการห่อหุ้มไฟล์ C++ ที่ดีขึ้น และยังมีประโยชน์ในการปรับโครงสร้างไดเรกทอรี C++ และ Python ให้สอดคล้องกันด้วย
src/
เปลี่ยนชื่อเป็นortools/
แล้ว- ตอนนี้คำสั่ง #include ในไฟล์ C++ ทั้งหมดมีการเพิ่มคำนำหน้า
ortools
#include "constraint/constraint_solver.h"
เปลี่ยนชื่อเป็น#include "ortools/constraint/constraint_solver.h"
แล้ว
ฟีเจอร์ใหม่
- ทีมสนับสนุนของ Bazel
ตอนนี้คุณสามารถสร้าง "หรือ" เครื่องมือด้วย bazel ซึ่งเป็นเครื่องมือสร้างของ Google ได้แล้ว ซึ่งใช้งานได้ใน Linux และ Mac OS X หลังจากดาวน์โหลด Bazel เวอร์ชัน 0.4.5 ขึ้นไปแล้ว ให้เปลี่ยนไดเรกทอรีเป็น or-tools และสร้างตัวอย่าง:
bazel build examples/cpp/...
การกำหนดเส้นทาง
เราได้รองรับการหยุดพัก (เช่น ช่วงพักของยานพาหนะเนื่องจากคนขับรับประทานอาหารเที่ยง) ในคลังเส้นทาง ฟีเจอร์นี้จะแสดงในตัวอย่างของ cvrptw_with_breaks.cc
รองรับ SCIP
ตอนนี้ Wrapper เครื่องมือแก้โจทย์เชิงเส้นรองรับ SCIP 4.0 แล้ว ตอนนี้คุณจะต้องสร้าง SCIP ก่อน แล้วบอกหรือเครื่องมือว่าคุณจะใช้ ดูวิธีการได้ที่นี่
การสนับสนุนสำหรับ GLPK
นอกจากนี้ เรายังได้เปลี่ยนวิธีการสร้างด้วย GLPK ด้วย โปรดดูที่นี่
ทำความสะอาดข้อมูล
- เราได้นำการใช้ Hash_map และแฮช_set ทั้งหมดในฐานของโค้ด C++ ออกแล้วเนื่องจากเลิกใช้งานไปแล้ว ค่าเหล่านี้ถูกแทนที่ด้วย unordered_map และ unordered_set จาก STL
- การทำความสะอาดไฟล์ C# จาก Michael Powell
มกราคม 2017
ประกาศการเปิดตัวเวอร์ชัน v5.1
เราได้เปิดตัว OR-Tools เวอร์ชัน 5.1 แล้ว หากต้องการอัปเดตเวอร์ชัน ให้ดู ส่วนที่เกี่ยวข้องของการติดตั้ง OR-เครื่องมือ
ฟีเจอร์ใหม่
กำลังติดตั้ง
- แนะนำขั้นตอนการติดตั้ง "หรือ" ที่ง่ายขึ้น ไม่ว่าจะเป็นการติดตั้งแบบไบนารี หรือจากซอร์สโค้ด ดูข้อมูลเพิ่มเติมได้ที่การติดตั้ง OR-เครื่องมือจากไบนารี หรือการติดตั้ง OR-เครื่องมือ จากซอร์สโค้ด
การกำหนดเส้นทาง
ใช้งานอัลกอริทึมเพื่อคำนวณขอบเขตล่างของ Held-Karp สำหรับปัญหาเกี่ยวกับ "การเดินทางของพนักงานขาย" แบบสมมาตร ซึ่งทำให้คุณคำนวณขอบเขตบนของช่องว่างระหว่างต้นทุนของโซลูชันที่ไม่เหมาะเท่าไรกับต้นทุนของโซลูชันที่เหมาะสมที่สุดได้
- เพิ่มเมธอดใหม่ในไลบรารีการกำหนดเส้นทางของรถ
RoutingModel::SetBreakIntervalsOfVehicle
ซึ่งให้คุณเพิ่มช่วงbreak ซึ่งเป็นระยะเวลาที่ยานพาหนะไม่สามารถดำเนินงานใดๆ ได้ (เช่น เดินทางหรือเข้าโหนด) ดูตัวอย่างที่ใช้ตัวเลือกนี้ได้ที่ cvrptw_with_breaks.cc
Scheduling
- เพิ่มการรองรับรูปแบบข้อมูลอื่นๆ ในโปรแกรมแยกวิเคราะห์สำหรับไลบรารีการกำหนดเวลาโปรเจ็กต์
เครื่องมือแก้โจทย์ S
- ตอนนี้ข้อจำกัดสะสมของตัวแก้โจทย์ SAT ยอมรับช่วงเวลาที่ไม่บังคับซึ่งสร้างด้วยเมธอด
NewOptionalInterval
ดูตัวอย่างได้ที่ https://github.com/google/or-tools/blob/master/examples/cpp/rcpsp_sat.cc - ตอนนี้คุณสามารถแก้โจทย์ Max-SAT (ค่าความพอใจสูงสุด_โดยการระบุวัตถุประสงค์เป็นผลรวมแบบถ่วงน้ำหนักของลิเทอรัลได้แล้ว ไม่จำเป็นต้องสร้างตัวแปรจำนวนเต็มกลางอีกต่อไป
ปรับปรุงประสิทธิภาพ
- เครื่องมือแก้โจทย์ SAT — ปรับปรุงประสิทธิภาพของเครื่องมือแก้โจทย์ Sat โดยเฉพาะสำหรับข้อจำกัดสะสม
- เครื่องมือแก้โจทย์คณิต Glop — ปรับปรุงประสิทธิภาพด้านตัวเลขของเครื่องมือแก้โจทย์คณ Glop ซึ่งตอนนี้แสดงผลวิธีแก้ปัญหาที่แม่นยำมากขึ้นให้กับโจทย์เลขยาก
- เครื่องมือแก้โจทย์ Flatzinc
- แบ็กเอนด์ Sat ได้รับการปรับปรุงให้ดีขึ้นอย่างมากสำหรับล่าม Flatzinc
- อินเทอร์เฟซ C# Flatzinc แบบเรียบง่าย ดูตัวอย่างอินเทอร์เฟซใหม่ได้ที่ https://github.com/google/or-tools/blob/master/examples/csharp/csfz.cs
การแก้ไขข้อบกพร่อง
- การใช้การเรียนรู้ของระบบ
PathCheapestArc
ในโมเดลที่มีรถคันเดียวและมีจุดยึดด้านข้างบางครั้งอาจทำให้เครื่องมือแก้โจทย์ทำงานเป็นเวลานานเกินไป ซึ่งแก้ไขได้โดยการพิจารณาข้อจำกัดข้างเคียงอย่างเหมาะสม - บางครั้งเครื่องมือแก้เส้นทางใน Java อาจขัดข้องเมื่อแก้ปัญหาการกำหนดเส้นทางรถ ซึ่งปัญหานี้ได้รับการแก้ไขแล้วในรุ่นล่าสุด
พฤศจิกายน 2016
ประกาศการเปิดตัวเวอร์ชัน v5.0
เราได้เปิดตัว OR-Tools เวอร์ชัน 5.0 แล้ว หากต้องการอัปเดตเวอร์ชัน ให้ดู ส่วนที่เกี่ยวข้องของการติดตั้ง OR-เครื่องมือ
ตัวอย่างการเรียกใช้
- เปิดตัวเป้าหมายเฉพาะภาษาซึ่งช่วยให้คอมไพล์และเรียกใช้โปรแกรมของคุณได้ง่ายขึ้น รวมถึงตัวอย่างที่มาพร้อมกับ OR-Tools
ส
- เพิ่มการรองรับการเขียนโปรแกรมข้อจำกัด
- ปฏิบัติตามข้อจำกัด diffn, Cumulative , Circuit และ Subcircuit
- ใช้งานเครื่องมือตรวจสอบโอเวอร์โหลดบนพื้นฐานของอัลกอริทึมการกรองพลังงานสูงสุดสำหรับข้อจำกัดสะสมแบบไม่ต่อเนื่อง
- นำเครื่องมือเผยแพร่ที่สอดคล้องกันซึ่งมีขอบเขตทั้งหมดมาใช้ ซึ่งจะทำการนำไปใช้ที่ดีกว่าสำหรับข้อจำกัด AllDifferent
FlatZinc
- ใช้งานเครื่องมือแก้โจทย์ SAT สำหรับโจทย์ FlatZinc
เครื่องมือแก้สี
- ปฏิบัติตามข้อจำกัดต่อไปนี้
- atMost: ตั้งค่าขอบเขตบนสำหรับจำนวนตัวแปรที่เท่ากับค่าที่กำหนด
- MakePathPrecedenceConstraint และ MakePathTransitPrecedenceConstraint: ใช้ข้อจํากัดลําดับความสําคัญสําหรับชุดคู่
การกำหนดเส้นทาง
- ใช้งาน AddAtSolutionCallback ซึ่งเป็นโค้ดเรียกกลับที่เรียกใช้ทุกครั้งที่มีการพบโซลูชันระหว่างการค้นหา
- นำตัวสร้าง RoutingModel ที่ไม่มี Depot ออก ตอนนี้ต้องระบุ Depot อย่างน้อย 1 รายการในรูปแบบการกำหนดเส้นทาง
กันยายน 2016
ประกาศการเปิดตัวเวอร์ชัน v4.4
เราได้เปิดตัว OR-Tools เวอร์ชัน 4.4 แล้ว หากต้องการอัปเดตเวอร์ชัน ให้ดู ส่วนที่เกี่ยวข้องของการติดตั้ง OR-เครื่องมือ
ส
- API การตั้งเวลาเพิ่มเติมและตัวอย่างที่แก้ไขแล้ว (weighted_tardiness_sat และjobshop_sat) เพื่อใช้งาน
กราฟ
- เพิ่มลักษณะของตัวซ้ำในคลาสกราฟ
การเผยแพร่ OR-เครื่องมือ
- รองรับแพ็กเกจ Nuget อีกครั้งแล้ว
สิงหาคม 2016
ประกาศการเปิดตัวเวอร์ชัน v4.3
เราได้เปิดตัว OR-Tools เวอร์ชัน 4.3 แล้ว หากต้องการอัปเดตเวอร์ชัน ให้ดู ส่วนที่เกี่ยวข้องของการติดตั้ง OR-เครื่องมือ
เครื่องมือแก้โจทย์ข้อจำกัด
- ใช้งานเมธอด
NotBetween
เพื่อจำกัดตัวแปรให้อยู่นอกช่วงเวลาที่ระบุ
การกำหนดเส้นทาง
- เพิ่มการแยกวิเคราะห์โมเดลเพื่อตรวจสอบข้อจำกัด
NotMember
ที่มีอยู่ตามที่แสดงในตัวอย่างนี้ และนำไปใช้ในตัวกรองการค้นหาในเครื่อง - เพิ่มการทำโปรไฟล์การค้นหาในพื้นที่แล้ว
- แก้ไขสำหรับการย้ายในประเทศ
เครื่องมือแก้โจทย์เชิงเส้น
- การรายงานสถานะ SCIP ที่แก้ไขแล้ว
ส
- ใช้วิธีการ SolveWithPresolve เพื่อลดความซับซ้อนในการใช้งานตัวปฏิเสธ SAT
- ยูทิลิตีการค้นหาที่มีการจัดกลุ่มใหม่ใน src/sat/util.h|cc
- ใช้ข้อจํากัดการกำหนดเวลาของ SMT (Lazy Clause Generation) ได้ที่ jobshop_sat.cc และ weighted_tardiness_sat.cc
กลอป
- ปรับปรุงประสิทธิภาพโดยการใช้ประโยชน์จากช่วงเล็กๆ ของการประมวลผลที่มากขึ้น
แฟลตซิงค์
- แก้ไขข้อบกพร่องจากชาเลนจ์ minizinc
Lp_data
- ลดความซับซ้อนของเทมเพลตในตัวทำซ้ำอย่างต่อเนื่อง
การเผยแพร่ OR-เครื่องมือ
- ตอนนี้มีการตั้งชื่อแอสเซมบลี C# อย่างชัดเจนโดยค่าเริ่มต้น
- อัปเกรดเป็น Protobuf3.0.0 แล้ว
- เพิ่ม script ของ Python เพื่อตรวจสอบทรัพยากร Dependency ของที่เก็บถาวร "หรือ-เครื่องมือ"
กรกฎาคม 2016
ประกาศการเปิดตัวเวอร์ชัน v4.2
เราได้เปิดตัว OR-Tools เวอร์ชัน 4.2 แล้ว หากต้องการอัปเดตเวอร์ชัน ให้ดู ส่วนที่เกี่ยวข้องของการติดตั้ง OR-เครื่องมือ
เครื่องมือแก้จุดยึด (การกำหนดเส้นทาง)
- ตอนนี้คุณสามารถกำหนดการแยกทางด้วย Cardinality ซึ่งเป็นจำนวนโหนดสูงสุดที่ใช้งานได้ภายในการจ่ายแยกนี้ ตัวอย่างเช่น หากคุณเพิ่ม Disjunction ที่มีโหนด n และ Cardinality เป็น k ระบบจะอนุญาตให้ใช้โหนด k จาก n โหนดได้ โดยคุณสามารถใช้คำจำกัดความใหม่ของ AddDisjunction เพื่อดำเนินการนี้ได้
- เพิ่มการสนับสนุนสำหรับการบิดเบือนหลายรายการต่อโหนด ตัวอย่างเช่น ตอนนี้คุณสามารถเพิ่ม โหนด N1 ไปยังการแยกหลายรายการ (D1..Dm) ซึ่งเป็นการเพิ่มโอกาสให้มีการใช้งานในประเภทนั้นๆ แนะนำอัลกอริทึมการค้นหาการกำหนดเส้นทางที่รวดเร็วขึ้นสำหรับปัญหาที่เกี่ยวข้องกับกรอบเวลาที่หยุดชะงัก
- เพิ่มพารามิเตอร์การแก้โจทย์ข้อจำกัดลงในพารามิเตอร์โมเดลการกำหนดเส้นทาง และ log_search ไปยังพารามิเตอร์การค้นหา
- อัลกอริทึมการค้นหาในท้องถิ่นทำงานได้เร็วขึ้นเนื่องจากสามารถแก้ไขปัญหากรอบเวลาที่ไม่ต่อเนื่องได้ ดูรายละเอียดเพิ่มเติมได้ที่ตัวอย่าง cvrp_disjoint_tw.cc
Glop (การเพิ่มประสิทธิภาพเชิงเส้น)
- แนะนำอัลกอริทึม Simplex ที่เร็วกว่า
การเผยแพร่ OR-เครื่องมือ
- ที่เก็บถาวร 1 รายการต่อแพลตฟอร์ม แทนที่จะเป็นที่เก็บถาวรแต่ละรายการสำหรับที่เก็บถาวรของ C++, Java และ .Net. Python แต่ละรายการจะยังคงโฮสต์อยู่ใน pypi
- ใน pypi เราได้เปลี่ยนไปใช้โมดูล Wheel (.whl) ใน Mac OS X และ Windows แนะนำสคีมาหมายเลข MAJOR.MINOR ตัวเลขเหล่านี้ใช้ชื่อที่เก็บถาวร, เวอร์ชันที่จัดเก็บไว้ในไลบรารีที่ใช้ร่วมกันของ Mac OS X, โมดูล Python, .NETassemblies เวอร์ชันแรกที่เรากำลังเผยแพร่อยู่ในสคีมานี้คือ v4.2
มิถุนายน 2016
ประกาศการเปิดตัวเวอร์ชัน v2016-06
เราได้เปิดตัว OR-Tools เวอร์ชัน v2016-06 แล้ว หากต้องการอัปเดตเวอร์ชัน ให้ดู ส่วนที่เกี่ยวข้องของการติดตั้ง OR-เครื่องมือ
เครื่องมือแก้สี
- นำอินสแตนซ์ส่วนใหญ่ของโค้ดเรียกกลับ (src/base/callback.h) ออกจากไลบรารี CP
- NotMemberCt ที่เพิ่ม (ตัวแปรต้องไม่อยู่ในชุดของช่วงเวลา)
ไลบรารีการกำหนดเส้นทาง
- การเปลี่ยนแปลงที่เข้ากันไม่ได้: หากต้องการระบุความจุของยานพาหนะใน
AddDimensionWithVehicleCapacity
ตอนนี้คุณจะต้องส่งอาร์เรย์ (เวกเตอร์ใน c++) แทนการเรียกกลับ
กลอป
- เปลี่ยนการนำเสนอภายในของเมทริกซ์แบบกระจัดกระจาย
- การปรับปรุงประสิทธิภาพ
กราฟ
- เขียนอัลกอริทึม Dijkstra และ Bellman-Ford ใหม่เพื่อแทนที่โค้ดเรียกกลับด้วย
std::function
(C++) - เปลี่ยน API ของการใช้งานกราฟแบบต่างๆ เมื่อทำซ้ำแบบโค้งและโหนด
ส
- นำเมธอดหลักที่ไม่ได้ใช้ (โหนดความละเอียด) ออก
- เพิ่มนักเขียนดราม่าเพื่อตรวจสอบหลักฐานเกี่ยวกับความไม่พึงพอใจ
- เพิ่ม Preprocessor
บ๊อป
- เพิ่มย่านใกล้เคียงใหม่
ตัวอย่าง
- c++: การกำจัด filelinereader ในตัวอย่าง
- data: เพิ่มปัญหาการจัดตารางเวลาสำหรับเครื่องเดียว
เอกสารประกอบ
- โปรดดู เอกสารประกอบใหม่
เมษายน 2016
ประกาศการเปิดตัวเวอร์ชัน v2016-04
เราได้เปิดตัว OR-Tools เวอร์ชัน v2016-04 แล้ว หากต้องการอัปเดตเวอร์ชัน ให้ดู ส่วนที่เกี่ยวข้องของการติดตั้ง OR-เครื่องมือ
อัปเดตทรัพยากร Dependency แล้ว
- ใช้ Protobuf แทนแฟล็กในไลบรารี Constraint Programming และการกำหนดเส้นทาง โปรดดูรายละเอียดที่ http://or-tools.blogspot.fr/2016/02/heads-up-upcoming-incompatibility-in.html
ธันวาคม 2015
ประกาศการเปิดตัวเวอร์ชัน v2015-12
เราได้เปิดตัว OR-Tools เวอร์ชัน v2015-12 หากต้องการอัปเดตเวอร์ชัน ให้ดู ส่วนที่เกี่ยวข้องของการติดตั้ง OR-เครื่องมือ
เครื่องมือแก้สี
- เข้ากันไม่ได้กับการค้นหาย่านใกล้เคียงขนาดใหญ่ในตัวแก้โจทย์ CP (ดู
examples/cpp/ls_api.cc
,examples/python/pyls_api.py
,examples/csharp/csls_api.cs
และexamples/com/google/ortools/sample/LsApi.java
เพื่อดู API ใหม่) - ทำความสะอาดการตัด Python แล้ว รองรับการตัดสินใจที่กำหนดเองในเครื่องมือแก้โจทย์ CP
(ดู
examples/test/test_cp_api.py
เพื่อดูการทำงานของ API) - การปรับปรุงและแก้ไขข้อบกพร่องหลายรายการ
กันยายน 2015
ประกาศเปิดตัวรุ่นแรกใน GitHub
จากนี้ไประบบจะจัดเก็บไฟล์ไว้
แฟลตซิงค์
- เพิ่มไบนารีที่เก็บไว้สำหรับอินเทอร์พรีเตอร์ Flatzinc (โปรดดู www.minizinc.org)
- มีการแก้ไขเวอร์ชันที่ใช้ในภารกิจ