OR- টুলস রিলিজ নোট

এই পৃষ্ঠাটি নতুন বৈশিষ্ট্য, বাগ সংশোধন এবং কোড এবং ইনস্টলেশন পদ্ধতির উন্নতি সহ OR-Tools-এর পরিবর্তনগুলি তালিকাভুক্ত করে৷

আপনি যদি OR-Tools ইন্সটল করতে সমস্যা অনুভব করেন, তাহলে OR-Tools ইন্সটলেশনের নির্দেশাবলীতে ট্রাবলশুটিং বিভাগটি দেখুন। যদি আপনার সমস্যা সেখানে তালিকাভুক্ত না থাকে, GitHub-এ সমস্যাগুলি পরীক্ষা করুন, অথবা একটি নতুন খুলতে দ্বিধা করবেন না, এবং আমরা আপনাকে সাহায্য করতে পেরে খুশি হব।

OR-Tools-এর জন্য নিম্নোক্ত রিলিজ নোট, সর্বশেষ রিলিজ দিয়ে শুরু।

মে 2024

OR-Tools v9.10 প্রকাশের ঘোষণা

আমরা OR-Tools v9.10 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, OR-Tools ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

আপনি github এ রিলিজ নোট খুঁজে পেতে পারেন

মার্চ 2024

OR-Tools v9.9 প্রকাশের ঘোষণা

আমরা OR-Tools v9.9 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, OR-Tools ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

আপনি github এ রিলিজ নোট খুঁজে পেতে পারেন

নভেম্বর 2023

OR-Tools v9.8 প্রকাশের ঘোষণা

আমরা OR-Tools v9.8 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, OR-Tools ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

প্ল্যাটফর্ম পরিবর্তন

  • Python 3.12 যোগ করুন।
  • উবুন্টু 23.10 এর জন্য সমর্থন যোগ করুন

রৈখিক সমাধানকারী

  • পোর্ট ModelBuilder থেকে .নেট।
  • SAT LogCallback-এর সাথে সংঘর্ষ এড়াতে LogCallback নাম পরিবর্তন করে MbLogCallback করুন।
  • ModelBuilder API প্রসারিত করুন:
    • সূচক সীমাবদ্ধতা যোগ করুন।
    • ইঙ্গিত সমর্থন যোগ করুন.
    • মডেল ক্লোনিং যোগ করুন।

Math Opt

  • গভীর পুনরায় কাজ.

রাউটিং

  • ROUTING_OPTIMAL স্থিতি যোগ করুন।
  • RoutingModel নকল করা যায় না বা চলনযোগ্য করে না।
  • স্থানীয় অনুসন্ধান অপারেটরগুলিতে কিছু অসীম লুপ ঠিক করুন।
  • একটি PickupDeliveryPosition অভ্যন্তরীণ কাঠামো যোগ করুন।
  • IsPickup() এবং IsDelivery() পদ্ধতি যোগ করুন।

SAT

  • বড় মডেলের জন্য মেমরি পদচিহ্ন হ্রাস করুন।
  • উন্নত সময়সূচী অনুসন্ধান.
  • packing_preceences_lns যোগ করুন।
  • অপ্টিমাইজ করুন এবং সম্ভাব্যতা জাম্প ঠিক করুন।
  • রৈখিক সমাধান এবং ভাল সমাধান লগিং অপ্টিমাইজ করুন।
  • int_abs , int_mod , int_prod এবং lin_max এর জন্য সমাধান উন্নত করুন।
  • পান্ডা সমর্থন উন্নত করুন
  • কয়েকটি বাগ ফিক্স।

গিটহাব চেঞ্জলগ

আগস্ট 2023

OR-Tools v9.7 প্রকাশের ঘোষণা

আমরা OR-Tools v9.7 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, OR-Tools ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

প্ল্যাটফর্ম পরিবর্তন

  • ড্রপ Centos-8 (EOL)।
  • ডেবিয়ান 10 বাদ দিন।
  • ফেডোরা বাদ দিন [33, 36] (ইওএল)।
  • উবুন্টু 18.04 LTS (EOL) বাদ দিন।
  • ড্রপ পাইথন 3.7 (EOL)।
  • CMake (EOL) এ netcore3.1 সমর্থন অক্ষম করুন।

মডেল বিল্ডার পাইথন

  • ভেরিয়েবল তৈরি করতে পান্ডাস ডেটাফ্রেম এবং সিরিজ ব্যবহারের অনুমতি দিন।
  • সম্পূর্ণ টাইপিং তথ্য

পিডিএলপি

  • বিভিন্ন আপডেট।

CP-SAT

  • কর্মক্ষমতা উন্নতি. (সম্ভাব্যতা_জাম্প, লিন_ম্যাক্স)
  • কাটা ব্যবস্থাপনা উন্নত
  • নতুন উদ্দেশ্য_শেভিং_অনুসন্ধান কর্মী উদ্দেশ্যের নিম্ন সীমার উন্নতির জন্য নিবেদিত (যখন ছোট করা হয়)
  • python cp_model.py-এর জন্য টীকা টাইপ করা হচ্ছে
  • cp_model.py-এ পান্ডাদের জন্য পরীক্ষামূলক আংশিক সমর্থন
  • পরীক্ষামূলক স্থানীয় অনুসন্ধান লঙ্ঘন ভিত্তিক কর্মীরা:
    • পরামিতি সহ সক্রিয় করা হয়েছে: num_violation_ls:xxx
    • রৈখিক মডেলের জন্য অপ্টিমাইজ করা হয়েছে ( linear , bool_or , bool_and , at_most_one , exactly_one )
    • lin_max, পণ্য, বিভাগের সাথে সঠিকভাবে কাজ করে
    • no_overlap, cumulative, circuit, routes সমর্থন করে
    • no_overlap_2d দিয়ে অক্ষম
    • ls কর্মীদের প্রস্তাবিত সংখ্যা: num_workers -> num_violation_ls : (8, 1), (16, 2) (24, 3), (32, 4)

গিটহাব চেঞ্জলগ

মার্চ 2023

OR-Tools v9.6 প্রকাশের ঘোষণা

আমরা OR-Tools v9.6 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, OR-Tools ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

প্ল্যাটফর্ম পরিবর্তন

  • Fedora 37, 38 সমর্থন যোগ করুন।
  • ড্রপ পাইথন 3.6 ( protobuf দ্বারা সমর্থিত নয়)।
  • ম্যাকওএস-এ পাইথন 3.7 ড্রপ করুন ( scipy দ্বারা সমর্থিত নয়)।
  • CMake-এ net7.0 সমর্থন যোগ করুন (ব্যবহার করুন -DUSE_DOTNET_7=ON )
  • nuget .org প্যাকেজে netcore3.1 বাদ দিন

নির্ভরতা

  • SCIP v801 -> v803 (দ্রষ্টব্য: এখন SCIP একটি OSI সামঞ্জস্যপূর্ণ লাইসেন্স ব্যবহার করে)
  • abseil 20220623.1 -> 20230105.0
  • Protobuf v21.5 -> v21.12
  • SWIG 4.1.1
  • Java JNA 5.11.0 -> 5.12.1

বাজেল

  • pybind11 সমর্থন যোগ করুন।
  • জাভা র্যাপার সমর্থন যোগ করুন।

সমাধানকারী

  • PDLP: dd পাইথন মোড়ক।
  • CP-SAT: কর্মক্ষমতা উন্নতি।
  • GLOP: টুইক সমাধান।
  • মডেলবিল্ডার: পাইথন: নমপি সমর্থন উন্নত করুন।
  • রাউটিং: কর্মক্ষমতা উন্নতি (স্থানীয় অনুসন্ধান)

জ্ঞাত সমস্যা:

  • CP-SAT: pseudo_costs subsolver উপেক্ষা করে অবৈধ প্যারামিটার প্রদান করে ( #3706 দেখুন)।

নভেম্বর 2022

OR-Tools v9.5 প্রকাশের ঘোষণা

আমরা OR-Tools v9.5 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, OR-Tools ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

প্ল্যাটফর্ম পরিবর্তন

  • ডেবিয়ান সিড সমর্থন যোগ করুন।
  • Fedora 35, 36 সমর্থন যোগ করুন।
  • উবুন্টু 22.10 সমর্থন যোগ করুন।
  • ম্যাকওএস-এ পাইথন 3.6 বাদ দিন।
  • Python 3.11 সমর্থন যোগ করুন।

নির্ভরতা আপডেট

  • প্রোটোবুফ v19.4 -> v21.5
  • SCIP সল্ভার v800 -> v801

CP-SAT

  • উন্নতিগুলি সমাধান করুন: সর্বোচ্চ (অ্যারে), বুলিয়ান সীমাবদ্ধতা, রৈখিক সীমাবদ্ধতা।
  • ইন্টারলিভড অনুসন্ধান সমান্তরালভাবে নির্ধারক হওয়া উচিত।
  • লিনিয়ার কাট: ক্লিনআপ স্কোয়ার এবং int_prod কাট; কাটা পাইপলাইন পুনর্লিখন.
  • ফিঙ্গারপ্রিন্ট ইনপুট মডেল এবং সমাধান (লগে দৃশ্যমান)।
  • সময়সূচী উন্নতি.
  • বাগফিক্সের সাধারণ গুচ্ছ (প্রতিরোধের সময় ক্র্যাশ, কাটে ক্র্যাশ, অকার্যকর সমাধান, এলএনএসে অসম্ভাব্য মডেল)।

GLOP

  • রৈখিক বীজগণিত পুনর্লিখন করে গতি বাড়ান, সেইসাথে পিভট নির্বাচনের নিয়ম।

রৈখিক সমাধানকারী

  • knapsack_interface.cc যোগ করুন।
  • linear_solver ডিরেক্টরির অধীনে মডেল_বিল্ডার API সরান (হেডার এবং নমুনা)।
  • গুরোবি 10 এর জন্য সমর্থন যোগ করুন।

রাউটিং

  • বিভিন্ন রাউটিং চ্যালেঞ্জের জন্য কয়েকটি পার্সারকে মুক্ত করুন।

আগস্ট 2022

OR-Tools v9.4 প্রকাশের ঘোষণা

আমরা OR-Tools v9.4 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, OR-Tools ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

প্ল্যাটফর্ম

  • Debian-10 সমর্থন যোগ করুন ( #3029 দেখুন)।
  • Ubuntu 22.04 LTS সমর্থন যোগ করুন ( #3276 দেখুন)। দ্রষ্টব্য: .Net 3.1 সমর্থন থাকবে না ( ডটনেট/কোর#7038 দেখুন)।
  • উবুন্টু 21.10 সমর্থন সরান।

বিবিধ

  • ভাষা অনুসারে সংরক্ষণাগার বিভক্ত করুন এবং C++ এক (#3200) এ CMake কনফিগারেশন যোগ করুন।

চিত্রলেখ

ortools.graph.pywrapgraph এতে বিভক্ত করুন:

  • ortools.graph.python.linear_sum_assignment
  • ortools.graph.python.max_flow
  • ortools.graph.python.min_cost_flow

এটি numpy ব্যবহার করে সমস্যার সেটআপের গতি বাড়ানোর অনুমতি দেয়।

CP-SAT

কিছু উন্নতি:

  • সময়সূচী (প্রচার, কাট, নিম্ন সীমানা)।
  • ম্যাক্সস্যাট (সমাধান, মূল ভিত্তিক হিউরিস্টিকস)।
  • MIP কর্মক্ষমতা (সমাধান, কাট)।

মার্চ 2022

OR-Tools v9.3 প্রকাশের ঘোষণা

আমরা OR-Tools v9.3 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, OR-Tools ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

প্ল্যাটফর্ম পরিবর্তন

  • Debian-10 সমর্থন বাদ দিন।
  • Ubuntu-16.04 সমর্থন বাদ দিন।
  • ড্রপ করুন .NET ফ্রেমওয়ার্ক 4.5.2।

নির্ভরতা আপডেট

  • Eigen 3.4.0 যোগ করুন।
  • Google re2 যোগ করুন 2021-11-01
  • প্রোটোবাফ 3.19.1 -> 3.19.4
  • SCIP 7.0.1 -> v800

পাইথন

  • pybind11 যোগ করুন।

বৈশিষ্ট্য

  • পরীক্ষামূলক হিসাবে PDLP যোগ করুন।
  • পরীক্ষামূলক হিসাবে MathOpt যোগ করুন।

CP-SAT

  • ধারাবাহিকতার জন্য কয়েকটি API-এর নাম পরিবর্তন করা হয়েছে যেমন LinearExpr.ScalProd. -> LinearExpr.WeightedSum. .
  • AddAtLeastOne / AddAtMostOne / AddExactlyOne পদ্ধতি যোগ করুন।
  • সমস্ত ভাষায় AddMultiplicationConstraint(z, x, y) যোগ করুন।
  • সব ভাষায় AddMultipleCircuit() যোগ করুন।

সি++

  • স্পষ্ট ctor IntVar(BoolVar)
  • সরানো হয়েছে LinearExpr::Add* এবং অপারেটর দ্বারা প্রতিস্থাপিত হয়েছে যেমন LinearExpr +=
  • লিনিয়ার এক্সপ্রেশনে গাণিতিক অপারেটর যোগ করুন।
  • সরানো হয়েছে LinearExpr::BooleanSum/BooleanScalProd , Sum/WeightedSum ব্যবহার করুন।
  • CpModelBuilder::FixVariable() যোগ করুন যা ভেরিয়েবলের ডোমেনকে একটি একক মানের সাথে ওভাররাইট করে।

জাভা

  • LinearExpr পুনরায় লিখুন, একটি বর্ধিত বিল্ডার ক্লাস যোগ করুন: LinearExpr.newBuilder().add(x).addSum(<array of variables>).build()
  • C++ API অনুসরণ করুন: Circuit , MultipleCircuit , Cumulative , Reservoir , AllowedAssignment এবং ForbiddenAssignment এখন নতুন ভেরিয়েবল, শর্তাবলী, চাহিদা যোগ করতে ক্রমবর্ধমান API সহ একটি বিশেষ শ্রেণি ফেরত দেয়...

  • সমস্ত পদ্ধতি নথিভুক্ত করুন।
  • C++ API অনুসরণ করুন: Circuit , MultipleCircuit , Cumulative , Reservoir , AllowedAssignment এবং ForbiddenAssignment এখন নতুন ভেরিয়েবল, শর্তাবলী, চাহিদা যোগ করতে ক্রমবর্ধমান API সহ একটি বিশেষ শ্রেণি ফেরত দেয়...
  • ক্রমবর্ধমান এক্সপ্রেশন তৈরি করতে LinearExprBuilder ক্লাস যোগ করুন।

সিস্টেম তৈরি করুন

সিমেক

  • কমপক্ষে CMake>= 3.18 প্রয়োজন।

তৈরি করুন

  • এখন অভ্যন্তরীণভাবে CMake ভিত্তিক বিল্ড ব্যবহার করুন।

ডিসেম্বর 2021

OR-Tools v9.2 প্রকাশের ঘোষণা

আমরা OR-Tools v9.2 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, OR-Tools ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

প্ল্যাটফর্ম পরিবর্তন

  • উবুন্টু 21:10 (শেষ রোলিং রিলিজ) এর জন্য সমর্থন যোগ করুন।

নির্ভরতা আপডেট

  • .Net TFM আপডেট net5.0 -> net6.0 (প্রয়োজন .Net SDK 6.0 LTS এবং .Net SDK 3.1 LTS)৷
  • 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 in -O1 কম্পাইল করুন।

রাউটিং

  • ফিল্টার উন্নতি.
  • প্রথম সমাধান হিউরিস্টিকস উন্নত করুন।
  • টাইম ব্রেক প্লেসমেন্ট উন্নত করুন।

CP-SAT

ব্রেকিং পরিবর্তন

  • অন্তর্নিহিত প্রোটোকল বাফার পূর্ববর্তী সংস্করণগুলির সাথে বেমানান৷ যেকোন সঞ্চিত প্রোটোকল বাফারকে আপডেট করা বিল্ডার API (C++, Python, Java, এবং .NET-এ) দিয়ে পুনরায় তৈরি করতে হবে।
  • বিশেষ করে, ব্যবধান প্রোটোবাফ পরিষ্কার ছিল কারণ আমরা পুরানো ক্ষেত্রগুলি (শুরু, আকার এবং শেষ) সরিয়ে দিয়েছি এবং সরানো ক্ষেত্রগুলির নাম ব্যবহার করার জন্য ( _view ব্যবহার করে) নতুন নামকরণ করেছি।

নতুন বৈশিষ্ট

  • all_different , reservoir , modulo , multiplication and division constraints affine expression ( a * var + b ) সব জায়গায় পূর্ণসংখ্যার ভেরিয়েবলের প্রয়োজন হয়।
  • উদ্দেশ্য ফ্লোটিং পয়েন্ট সহগ গ্রহণ করে (C++/Java/.NET-এ DoubleLinearExpr ক্লাস দেখুন। পাইথনে knapsack_2d_sat.py উদাহরণ দেখুন)।
  • no_overlap_2d সীমাবদ্ধতা ঐচ্ছিক ব্যবধান সমর্থন করে।
  • C++ API এক্সপ্রেশন তৈরি করতে + এবং * অপারেটর প্রয়োগ করে।

উন্নতি

  • উন্নত সমাধান কোড।
  • শক্ত মডেল পরীক্ষক।
  • রিওয়ার্ক রিজার্ভার সীমাবদ্ধতা।
  • no_overlap_2d সীমাবদ্ধতার জন্য শক্তিশালী কাট যোগ করুন।
  • এনকোডিং সীমাবদ্ধতার উন্নত রৈখিক শিথিলকরণ ( literal implies var == value )।

অপসারিত এবং অপসারিত পদ্ধতি

  • অপ্রচলিত C++ BooleanSum এবং BooleanScalProd । শুধু Sum এবং ScalProd ব্যবহার করুন।
  • C++ AddLinMinEquality এবং AddLinMaxEquality সরানো হয়েছে। শুধু AddMinEquality এবং AddMaxEquality ব্যবহার করুন।

ভবিষ্যতের অসঙ্গতি

  • ভবিষ্যতে কোনো সময়ে, আমরা C++ স্তরের কাছাকাছি হতে জাভা মডেলিং স্তরটিকে আবার লিখব।
  • C++ মডেলিং লেয়ারে, আমরা IntVar(BoolVar var) ctorকে স্পষ্ট করে দেব।
  • আমরা পাইথন এপিআই পিইপি 8 কমপ্লায়েন্ট করার কথা ভাবছি (snake_case নাম ব্যবহার করে)। যদি এটি ঘটে, আমরা কোডটি পোর্ট করার জন্য একটি sed ফাইল প্রদান করব।

সিস্টেম তৈরি করুন

বাজেল

  • উইন্ডোজ বিল্ড ঠিক করুন।

সিমেক

  • FETCH_PYTHON_DEPS বিকল্প যোগ করুন (ডিফল্ট ON )।
  • GPLK সমাধানকারীর জন্য ঐচ্ছিক সমর্থন যোগ করুন (ডিফল্ট -DUSE_GLPK=OFF )।

পাইথন

  • বেশিরভাগ CP-SAT API-এ numpy পূর্ণসংখ্যা সমর্থন করে।
  • অনুপস্থিত __version__ ঠিক করুন।

সেপ্টেম্বর 2021

OR-Tools v9.1 প্রকাশের ঘোষণা

আমরা OR-Tools v9.1 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, OR-Tools ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

প্ল্যাটফর্ম পরিবর্তন

  • পাইথন: manylinux2014 ইমেজ ব্যবহার করুন ( পিইপি 599 দেখুন)।
  • Python: manylinux2014_aarch64 ইমেজ ব্যবহার করে aarch64 linux-এর জন্য সমর্থন যোগ করুন।
  • .নেট: .নেট 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.pywarning ব্যবহার ( #2530 দেখুন)।
  • পাইথন: absl-py 0.11 -> 0.13।

সিমেক

  • বাম্প ন্যূনতম সংস্করণ প্রয়োজন 3.14 -> 3.15 ( #2528 দেখুন)।
  • পাইথন: বাম্প ন্যূনতম প্রয়োজনীয় সংস্করণ 3.14 -> 3.18 ( #2774 দেখুন)।

তৈরি করুন

মেক ভিত্তিক বিল্ড অবহেলিত হয়েছে, উত্স থেকে তৈরি করতে দয়া করে সিমেক বা বেজেলে স্থানান্তর করুন৷

জাভা

  • নেটিভ লাইব্রেরি লোডারের দৃঢ়তা উন্নত করুন ( #2742 দেখুন)।
  • রাউটিং মডেল বা সীমাবদ্ধতা সমাধান করার সময় JVM গারবেজ কালেক্টর ক্র্যাশ ঠিক করুন ( #2091 দেখুন) ( #2466 দেখুন)।
  • একাধিক কর্মী ব্যবহার করার সময় CP-SAT লগিং কলব্যাক ক্র্যাশ ঠিক করুন ( #2775 দেখুন)।

CP-SAT

  • LNS কোডের দৃঢ়তা উন্নত করুন ( #2525 দেখুন)।
  • সময়সূচী কোড উন্নত করুন: নির্দিষ্ট আকারের ব্যবধান তৈরি করতে নতুন কারখানা পদ্ধতি, নতুন অনুসন্ধান হিউরিস্টিকস, উন্নত সমাধান এবং নতুন লিনিয়ার কাট।
  • রাউটিং কোড উন্নত করুন: নতুন ডেডিকেটেড LNS।
  • মডেল পরীক্ষক উন্নত. এটি এখন আরও বৃত্তিমূলক, বিশেষ করে সম্ভাব্য ওভারফ্লো।
  • এমআইপি কোড উন্নত করুন: এমআইপি এবং সিপি মডেলগুলির রৈখিক শিথিলকরণে আরও ভাল সমাধান এবং একাধিক উন্নতি।
  • অনুসন্ধান বৈচিত্র্য উন্নত করুন. 12 জনের বেশি কর্মী ব্যবহার করার সময়, উদ্দেশ্যের নিম্ন সীমার উন্নতির জন্য নিবেদিত কর্মী যোগ করুন।
  • সমান্তরাল কোডে পরিবর্তন করুন: ডিফল্টরূপে, সমাধানকারী এখন সমস্ত উপলব্ধ কোর ব্যবহার করবে। সমান্তরালতার স্তর নির্দিষ্ট করতে num_search_parameters ব্যবহার করুন।
  • SearchAllSolutions এবং SolveWithSolutionCallback বাতিল করুন।
  • পাইথন এপিআই: var == ... বা var != ... একটি model.Add() কল।

এপ্রিল 2021

OR-Tools v9.0 প্রকাশের ঘোষণা

আমরা OR-Tools v9.0 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, OR-Tools ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

নির্ভরতা আপডেট

  • Abseil-cpp 20200923.3 20210324.1 LTS এ আপডেট করা হয়েছে।
  • Protobuf 3.15.3 3.15.8 এ আপডেট করা হয়েছে।
  • জাভা: jna-প্ল্যাটফর্ম 5.5.0 5.8.0 এ আপডেট করা হয়েছে

জাভা

বাগ ফিক্স

  • CP-SAT সল্ভার ব্যবহার করার সময় মাল্টি-থ্রেডিং উন্নত করুন ( #1588 দেখুন)।
  • std::vector&ltstd::string&gt এর পাইথন র্যাপার সমর্থন ঠিক করুন ( #2453 দেখুন)।
  • CPLEX সমর্থন পুনরায় কাজ করুন ( #2470 দেখুন)।

পরিচিত ব্রেকিং পরিবর্তন

  • পাইথন, জাভা এবং .নেটে লগার অ্যাক্সেস যোগ করুন ( #2245 দেখুন)।
  • cstdint এ প্রদত্ত সমস্ত কাস্টম Google প্রকারের প্রতিস্থাপন।

CP-SAT

  • মেথড SearchForAllSolutions() , SearchAllSolutions() এবং SolveWithSolutionCallback() বাতিল করা হয়েছে। পরিবর্তে Solve() ব্যবহার করুন.
  • পাইথন স্ট্যান্ডার্ড অপারেটর সমর্থন উন্নত করুন। এটি ভুল বিদ্যমান কোড ভাঙতে পারে।

মার্চ 2021

OR-Tools v8.2 প্রকাশের ঘোষণা

আমরা OR-Tools v8.2 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, OR-Tools ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

নির্ভরতা আপডেট

  • Abseil-cpp 20200923.2 20200923.3 LTS এ আপডেট করা হয়েছে।
  • Protobuf 3.14.0 3.15.3 এ আপডেট করা হয়েছে।

রাউটিং

  • RoutingModel.RegisterTransitMatrix() এবং RoutingModel.RegisterUnaryTransitVector() যোগ করা হয়েছে।
  • RoutingModel.AddVectorDimension() এবং RoutingModel.AddMatrixDimension() এর রিটার্ন পরিবর্তন করুন std::pair&ltint, bool&gt যার int হল ট্রানজিট মূল্যায়নকারী আইডি।

ডিসেম্বর 2020

OR-Tools v8.1 প্রকাশের ঘোষণা

আমরা OR-Tools v8.1 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, OR-Tools ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

নির্ভরতা আপডেট

  • Abseil-cpp 20200923 আপডেট করা হয়েছে 20200923.2 LTS।
  • Protobuf 3.13.0 3.14 এ আপডেট করা হয়েছে।
  • গুরোবি 9.1.0 এর জন্য সমর্থন যোগ করুন
  • GLog নির্ভরতা বাদ দিন (abseil-cpp পতাকাগুলির উপর নির্ভর করে একটি কাস্টম বাস্তবায়ন দ্বারা প্রতিস্থাপিত)
  • GFlag নির্ভরতা বাদ দিন (abseil-cpp ফ্ল্যাগ উপাদান দ্বারা প্রতিস্থাপিত)

বাগ ফিক্স

  • গুরোবি ভাসমান লাইসেন্সের ডাবল গণনা ঠিক করুন ( #2227 দেখুন)।
  • উইন্ডোজ বিল্ড ঠিক করুন ( #2200 দেখুন)।

অক্টোবর 2020

OR-Tools v8.0 প্রকাশের ঘোষণা

আমরা OR-Tools v8.0 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, OR-Tools ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

প্ল্যাটফর্ম পরিবর্তন

  • Python 3.9 ( #2187 ) এর জন্য সমর্থন যোগ করা হয়েছে
  • Python 3.5 ( #2186 ) <!-- Microsoft dotnet-sdk সমর্থনের জন্য বাদ দেওয়া হয়েছে
    • উবুন্টু 20.10 ( #2188 ) --> এর জন্য সমর্থন যোগ করা হয়েছে
  • উবুন্টু 16.04 LTS ( #2188 ) এর জন্য সমর্থন বাদ দেওয়া হয়েছে
  • উবুন্টু 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 স্বাক্ষর পরিবর্তন করা হয়েছে। মডেল নাম যুক্তি বাদ দেওয়া হয়েছে.

সিমেক

  • -DUSE_SCIP=OFF ব্যবহার করার সময় SCIP সমর্থন নিষ্ক্রিয় করা ঠিক করুন ( #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 বিকল্পের ব্যবহার)।
  • -DUSE_SCIP=OFF ব্যবহার করে SCIP সমর্থন নিষ্ক্রিয় করার বিকল্প যোগ করুন ( #2134 দেখুন)।
  • -DUSE_COINOR=OFF ব্যবহার করে CLP এবং CBC সমর্থন নিষ্ক্রিয় করার বিকল্প যোগ করুন।

জাভা

  • OR-Tools এখন ম্যাভেন প্যাকেজ তৈরি করে ( #202 দেখুন)।

বাগ ফিক্স

  • FreeBSD-তে C++ এবং Python বিল্ড ঠিক করুন ( #2126 দেখুন)।
  • উইন্ডোতে বিল্ড ইন ডিবাগ ঠিক করুন ( #2077 দেখুন)।
  • উইন্ডোজের CP-SAT-এর সমান্তরালে দীর্ঘস্থায়ী ক্র্যাশ ঠিক করুন ( #2001 , #2019 দেখুন)।

জুলাই 2020

OR-Tools v7.8 প্রকাশের ঘোষণা

আমরা OR-Tools v7.8 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, OR-Tools ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

নির্ভরতা আপডেট

  • গুরোবি 9.0.2 এখন প্রি-বিল্ট বাইনারিগুলিতে প্রাক-সংহত। এটি GUROBI 90 শেয়ার্ড লাইব্রেরি অনুসন্ধান করবে MAC OS X এবং Windows-এ গুরোবি ইনস্টলারদের ডিফল্ট ইনস্টল পাথে বা GUROBI_HOME ডিরেক্টরিতে।
  • SCIP 7.0.1 এখন প্রি-বিল্ট বাইনারিগুলিতে একত্রিত করা হয়েছে। SCIP লাইসেন্স ব্যবহার করার আগে অনুগ্রহ করে সম্মতি নিশ্চিত করুন।
  • ঐচ্ছিক এক্সপ্রেস সলভার 8.9.0 এর জন্য সমর্থন যোগ করা হয়েছে।

রৈখিক সমাধানকারী

  • সমন্বিত লিনিয়ার সলভার ব্যাকএন্ডের জন্য চেকিং সমর্থনকে সহজ করার জন্য একটি স্ট্যাটিক LinearSolver::CreateSolver() পদ্ধতি যোগ করা হয়েছে। এটা সব ভাষায় কাজ করে।

বাগ ফিক্স

  • ফ্রিবিএসডি-তে স্থির সিমেক ভিত্তিক বিল্ড।
  • ক্রমবর্ধমান কাট জেনারেশনে স্থির CP-SAT বাছাই।
  • .নেট র‍্যাপারে ফিক্সড লিনিয়ার সলভার মেমরি লিক।

জুন 2020

OR-Tools v7.7 প্রকাশের ঘোষণা

আমরা OR-Tools v7.7 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, OR-Tools ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

নির্ভরতা আপডেট

  • Abseil-cpp b832dce c51510d (LTS 20200225.2) এ আপডেট করা হয়েছে।
  • Protobuf 3.11.4 3.12.2 এ আপডেট করা হয়েছে।

নতুন বৈশিষ্ট্য এবং উন্নতি

  • CP-SAT সমাধানকারী এখন একটি সন্তোষজনক মডেলে (অর্থাৎ উদ্দেশ্য ছাড়াই) Feasible এর পরিবর্তে Optimal প্রদান করে।
  • MIP সম্প্রদায় থেকে সম্ভাব্যতা পাম্প হিউরিস্টিক যোগ করা হয়েছে।

বাগ ফিক্স

ফিক্সড CP-SAT মাল্টি-থ্রেডিং ক্র্যাশ ( #2005 দেখুন)।

এপ্রিল 2020

OR-Tools v7.6 প্রকাশের ঘোষণা

আমরা OR-Tools v7.6 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, OR-Tools ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

CP-SAT নতুন বৈশিষ্ট্য

আমরা CP-SAT সমাধানকারীতে নিম্নলিখিত নতুন বৈশিষ্ট্যগুলি যুক্ত করেছি:

  • এলপির জন্য কাটিং প্লেনের উন্নত ব্যবস্থাপনা।
  • ডিবাগিং টুল।

নির্ভরতা আপডেট

Abseil-cpp 8ba96a8 b832dce (LTS 20200225) এ আপডেট করা হয়েছে।

বাগ ফিক্স

  • সমাধানে CP-SAT UNSAT বাগ সংশোধন করা হয়েছে ( #1908 দেখুন)।
  • স্থির swigwin.exe url.
  • জাভা এবং নেট এর জন্য স্থায়ী SWIG টাইপম্যাপ ব্যবস্থাপনা।

জানুয়ারী 2020

OR-Tools v7.5 প্রকাশের ঘোষণা

আমরা OR-Tools v7.5 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, OR-Tools ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

প্ল্যাটফর্ম পরিবর্তন

  • Python 3.8 ( #1719 ) এর জন্য সমর্থন যোগ করা হয়েছে
  • ভিজ্যুয়াল স্টুডিও 2017 ( #1852 ) এর উত্স থেকে বাদ দেওয়া সমর্থন সংকলন।
  • সেন্টোস 7 থেকে সেন্টোস 8 ( #1827 ) এ আপডেট করা সমর্থন।

নির্ভরতা আপডেট

  • protobuf v3.10.0 v3.11.2 ( #1829 ) এ আপডেট করা হয়েছে।

বাগ ফিক্স

OR-Tools v7.5-এ নিম্নলিখিত সমস্যাগুলি ঠিক করা হয়েছে (সম্পূর্ণ তালিকার জন্য মাইলস্টোন v7.5 দেখুন)।

নির্দিষ্টভাবে:

  • স্থির সমাবেশ লোড হচ্ছে। #1421 দেখুন।
  • RouteIndexManager ( #1843 ) এর GetStartIndex() এবং GetEndIndex() পদ্ধতিগুলি প্রকাশ করেছে।
  • ভাঙা পদ্ধতি অপসারণের জন্য স্থির SWIG ( #1838 , #1276 )।

অক্টোবর 2019

OR-Tools v7.4 প্রকাশের ঘোষণা

আমরা OR-Tools v7.4 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, OR-Tools ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

নতুন বৈশিষ্ট্য এবং উন্নতি

  • CP-SAT সমাধানকারী এখন সীমাবদ্ধতাগুলি পরীক্ষা করে যা এনফোর্সমেন্ট লিটারাল সমর্থন করে না। মডেল পরীক্ষক সমাধান করার আগে একটি ত্রুটি ফিরিয়ে দেবে যদি এই ধরনের সীমাবদ্ধতার আক্ষরিক প্রয়োগ থাকে।
  • রাউটিং লাইব্রেরির জন্য আরও ভাল এবং দ্রুত স্থানীয় অনুসন্ধান।
  • রৈখিক সমাধানকারী এখন তৃতীয় পক্ষের সফ্টওয়্যার Xpress-MP সমর্থন করে। এটি ব্যবহার করার জন্য আপনাকে উত্স থেকে OR-Tools পুনর্নির্মাণ করতে হবে।
  • NuGet প্যাকেজের আর্কিটেকচার সম্পূর্ণরূপে পুনর্লিখন করা হয়েছে। বিশেষ করে, এটি এখন উইন্ডোজ প্ল্যাটফর্মে .NET ফ্রেমওয়ার্ক >= 4.5.2 সমর্থন করে।

অপ্রচলিত প্ল্যাটফর্ম

জুলাই 2019 রিলিজ নোটে ঘোষণা করা হয়েছে, OR-Tools আর Python 2.7 সমর্থন করে না।

নির্ভরতা আপডেট

Protobuf 3.9.0 3.10.0-এ আপডেট করা হয়েছে।

আগস্ট 2019

OR-Tools v7.3 প্রকাশের ঘোষণা

আমরা OR-Tools v7.3 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, OR-Tools ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

অপ্রচলিত প্ল্যাটফর্ম

আমরা Python 2.7-এর সমর্থন বাতিল করছি যাতে Python 3-এ Google-এর সরে যাওয়ার সাথে সারিবদ্ধ হতে পারে। এটি হবে Python 2.7 সমর্থনকারী OR-Tools-এর শেষ প্রকাশ।

নির্ভরতা আপডেট

Protobuf 3.8.0 3.9.0-এ আপডেট করা হয়েছে।

বাগ ফিক্স

OR-Tools v7.3-এ নিম্নলিখিত সমস্যাগুলি সমাধান করা হয়েছে৷ (সম্পূর্ণ তালিকার জন্য কানবান v7.3 দেখুন)।

নির্দিষ্টভাবে:

  • জাভাতে স্থির init/int64 কাস্ট সমস্যা ( #1448 ),
  • খালি ক্রমবর্ধমান সীমাবদ্ধতা প্রক্রিয়া করার সময় স্থির সমাধান চেক।

জুলাই 2019

OR-Tools v7.2 প্রকাশের ঘোষণা

আমরা OR-Tools v7.2 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, OR-Tools ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

প্ল্যাটফর্ম পরিবর্তন

  • আমরা পাইথন 2.7-এর সমর্থন বাতিল করছি যাতে Google-এর Python 3-এ সরে যাওয়ার সাথে সামঞ্জস্যপূর্ণ হয়। Python 2.7 সমর্থনকারী OR-Tools-এর আরও একটি রিলিজ থাকবে।
  • উবুন্টু 18.10 উবুন্টু 19.04 এ আপডেট করা হয়েছে।
  • ভিজ্যুয়াল স্টুডিও 2019-এ উত্স থেকে সংকলনের জন্য সমর্থন যোগ করা হয়েছে।
  • পাইথন 3.5 আর উইন্ডোজে সমর্থিত নয়; অনুগ্রহ করে পাইথন 3.6 বা উচ্চতর ব্যবহার করুন।

নির্ভরতা আপডেট

  • আমরা এখন CBC 2.10.3 টার্গেট করি।
  • আমরা এখন Protobuf 3.8.0 টার্গেট করি।

CP-SAT

  • আমরা অনুসন্ধান, সমান্তরালতা এবং রৈখিক শিথিলকরণে একাধিক উন্নতি করেছি।
  • পাইথনে LinearExpr.Sum() এবং LinearExpr.ScalProd() API যোগ করা হয়েছে।
  • C#-তে IntVar[].Sum() এবং IntVar[].ScalProd() এপিআইগুলি বন্ধ করা হয়েছে।
  • C++: সরানো হয়েছে SolveWithModel() কারণ এটি SolveCpModel() এর একটি সদৃশ ছিল।
  • Java API-তে CpModel.addGreaterThan() এবং CpModel.addLessThan() পদ্ধতি যোগ করা হয়েছে।

রৈখিক সমাধানকারী

  • Python, Java, এবং C# এর জন্য MPSolver.SetHint() যোগ করা হয়েছে (SCIP এবং Gurobi দ্বারা সমর্থিত)।
  • Python, Java, এবং C# এর জন্য MPSolver.SetNumThreads() যোগ করা হয়েছে (CBC, Gurobi, এবং SCIP দ্বারা সমর্থিত)।
  • SCIP 6.0.1-এর জন্য পুনর্লিখন সমর্থন।

রেফারেন্স ডকুমেন্টেশন

  • আমরা সমস্ত ভাষা এবং সমস্ত সরঞ্জামের জন্য ডক্সিজেন এবং pdoc3 ভিত্তিক রেফারেন্স ম্যানুয়াল যুক্ত করেছি (অ্যালগরিদম, রাউটিং, গ্রাফ, লিনিয়ার_সলভার, এবং CP-SAT)। OR-Tools রেফারেন্স ম্যানুয়াল দেখুন।
  • C++ (সমস্ত পণ্য) এবং CP-SAT (C++, Python, Java) এর জন্য রেফারেন্স ডকুমেন্টেশন সম্পূর্ণ।
  • আমরা পাইথন এবং জাভাতে সমস্ত C++ ডকুমেন্টেশন এক্সপোর্ট করার প্রক্রিয়ার মধ্যে আছি।
  • .NET ডকুমেন্টেশনের অভাব রয়েছে, এবং এটিকে উন্নত করার জন্য অদূর ভবিষ্যতে আমাদের কাছে কোন সমাধান নেই। আমরা এটি রেখেছি কারণ এটি এখনও উপলব্ধ API দেখায়।

মে 2019

OR-Tools v7.1 প্রকাশের ঘোষণা

আমরা OR-Tools v7.1 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, OR-Tools ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

প্রয়োজনীয় নির্ভরতা পরিবর্তন

OR-Tools 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 API পরিবর্তন

নিম্নলিখিত বিভাগগুলি OR-Tools 7.1-এ CP-SAT API-তে পরিবর্তনগুলি বর্ণনা করে।

ভেরিয়েবল তৈরি করতে ডোমেন ব্যবহার করে

নিম্নলিখিত উদাহরণগুলি দেখায় কিভাবে অ-সংলগ্ন ডোমেনগুলির সাথে একটি পূর্ণসংখ্যা ভেরিয়েবল তৈরি করা যায়। এটি সরানো পদ্ধতিটি প্রতিস্থাপন করে NewEnumeratedIntVar() । এখানে, ভেরিয়েবল x 1, 3, 4, বা 6 এর যেকোনো একটি হতে পারে:

পাইথন

model.NewIntVarFromDomain(cp_model.Domain.FromValues([1, 3, 4, 6]), 'x')

সি++

model.NewIntVar(Domain::FromValues({1, 3, 4, 6}));

জাভা

model.newIntVarFromDomain(Domain.fromValues(new long[] {1, 3, 4, 6}), "x");

সি#

model.NewIntVarFromDomain(Domain.FromValues(new long[] {1, 3, 4, 6}), "x");

ব্যবধানের তালিকা ব্যবহার করে ভেরিয়েবলও তৈরি করা যেতে পারে। নীচে, পরিবর্তনশীল x 1, 2, 4, 5, বা 6 হতে সীমাবদ্ধ:

পাইথন

model.NewIntVarFromDomain(cp_model.Domain.FromIntervals([[1, 2], [4, 6]]), 'x')

সি++

model.NewIntVar(Domain::FromIntervals({ {1, 2}, {4, 6} }));

জাভা

model.newIntVarFromDomain(Domain.fromIntervals(new long[][] { {1, 2}, {4, 6} }), "x");

সি#

model.NewIntVarFromDomain(Domain.FromIntervals(new long[][] { new long[] {1, 2}, new long[] {4, 6} }), "x");

লিনিয়ার এক্সপ্রেশনে ডোমেন ব্যবহার করা

নিম্নলিখিত উদাহরণগুলি দেখায় যে কীভাবে একটি অ-সংলগ্ন ডোমেনে একটি রৈখিক অভিব্যক্তি সীমাবদ্ধ করা যায়। এখানে, রৈখিক এক্সপ্রেশন linear_expr 5, 6, 8, 9 এবং 10 এ সংজ্ঞায়িত করা হয়েছে:

পাইথন

model.AddLinearExpressionInDomain(linear_expr, cp_model.Domain.FromIntervals([(5, 6), (8, 10)]))

সি++

model.AddLinearConstraint(linear_expr, Domain::FromIntervals({ {5, 6}, {8, 10} }))

জাভা

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 :\

পাইথন

model.Add(x + y == 20)
model.Add(4 * x + 2 * y == 56)

সি++

cp_model.AddEquality(LinearExpr::Sum({x, y}), 20);
cp_model.AddEquality(LinearExpr::ScalProd({x, y}, {4, 2}), 56);

জাভা

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-Tools v7.0 প্রকাশের ঘোষণা

আমরা OR-Tools v7.0 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, OR-Tools ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

সমর্থিত প্ল্যাটফর্মে পরিবর্তন

OR-Tools v7.0 আর নিম্নলিখিত প্ল্যাটফর্মগুলিকে সমর্থন করে না:

  • ভিজ্যুয়াল C++ 2015
  • উবুন্টু 14.04
  • লিনাক্সে পাইথন 3.4

আপনি যদি এই প্ল্যাটফর্মগুলির মধ্যে একটি ব্যবহার করেন তবে আপনি এখনও OR-Tools v6.10 ইনস্টল করতে পারেন।

প্রয়োজনীয় নির্ভরতা পরিবর্তন

OR-Tools v7.0-এর নিম্নলিখিত নতুন এবং আপডেট হওয়া নির্ভরতা রয়েছে:

  • নতুন: Abseil-cpp
  • gflags 2.2.1 2.2.2 এ আপডেট করা হয়েছে

নিম্নলিখিত বিভাগগুলি OR-Tools 7.0-এর নতুন বৈশিষ্ট্য এবং উন্নতিগুলি বর্ণনা করে৷

রাউটিং প্রোগ্রামের জন্য নতুন ইনডেক্স ম্যানেজার

OR-Tools v7.0-এ, গাড়ির রাউটিং প্রোগ্রামগুলিকে অবশ্যই নতুন RoutingIndexManager ব্যবহার করতে হবে। এটি নিশ্চিত করে যে অবস্থানগুলির জন্য আদর্শ সূচকগুলি সমাধানকারী দ্বারা ব্যবহৃত অভ্যন্তরীণ সূচকগুলির সাথে সামঞ্জস্যপূর্ণ এবং আপনার কোডে ত্রুটিগুলি প্রতিরোধ করতে সহায়তা করে৷

নতুন RoutingIndexManager এর জন্য রাউটিং প্রোগ্রামগুলিতে কিছু ছোটখাটো পরিবর্তন প্রয়োজন, যা নিম্নলিখিত বিভাগে বর্ণিত হয়েছে:

RoutingIndexManager অন্তর্ভুক্ত/আমদানি করুন

OR-Tools 7.0-এ, C++ এবং Java-তে রাউটিং প্রোগ্রামগুলিকে অবশ্যই RoutingIndexManager অন্তর্ভুক্ত বা আমদানি করতে হবে যেমন নীচের উদাহরণগুলিতে দেখানো হয়েছে:

সি++

#include "ortools/constraint_solver/routing_index_manager.h"

জাভা

import com.google.ortools.constraintsolver.RoutingIndexManager;

পাইথন এবং C# আমদানি অপরিবর্তিত।

RoutingIndexManager ঘোষণা করুন

OR-Tools v7.0-এ, রাউটিং প্রোগ্রামগুলিকে অবশ্যই RoutingIndexManager ঘোষণা করতে হবে এবং রাউটিং মডেল তৈরি করতে হবে, যেমনটি নিম্নলিখিত উদাহরণগুলিতে দেখানো হয়েছে:

পাইথন

manager = pywrapcp.RoutingIndexManager(num_locations, num_vehicles, depot)
routing = pywrapcp.RoutingModel(manager)

সি++

RoutingIndexManager manager(num_locations, num_vehicles, depot);
RoutingModel routing(manager);

জাভা

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-Tools v7.0-এ, আপনাকে কলব্যাক তৈরি করতে RoutingIndexManager ব্যবহার করতে হবে, যেমন দূরত্বের কলব্যাক, যা আপনি সমাধানকারীকে পাস করবেন। নিম্নলিখিত উদাহরণগুলি দেখায় কিভাবে একটি দূরত্ব কলব্যাক তৈরি করতে হয়।

পাইথন

    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)

সি++

  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);

জাভা

    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&nbsp;callback&nbsp;index তৈরি করেন, কলব্যাকের একটি রেফারেন্স, এবং এটি সমাধানকারীর কাছে প্রেরণ করেন (এই ক্ষেত্রে SetArcCostEvaluatorOfAllVehicles দ্বারা)।

মাত্রা

নিম্নলিখিত উদাহরণগুলি দেখায় যে কীভাবে চাহিদা এবং ক্ষমতার জন্য একটি মাত্রা তৈরি করা যায়, যা ক্যাপাসিটেটেড গাড়ির রাউটিং সমস্যা সমাধান করতে ব্যবহৃত হয়।

পাইথন

    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",
    )

সি++

  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");

জাভা

    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-Tools v7.0-এ, একটি সমাধানে গাড়ির রুটগুলি প্রদর্শন করতে আপনাকে অবশ্যই RoutingIndexManager ব্যবহার করতে হবে। নিম্নলিখিত উদাহরণগুলি দেখায় যে সমস্ত সমর্থিত ভাষায় সমাধানগুলি কীভাবে মুদ্রণ করা যায়৷

পাইথন

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)

সি++

//! @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";
}

জাভা

  /// @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);
    }

পিকআপ এবং ডেলিভারি সহ VRP-এর জন্য সমর্থন

OR-Tools v7.0 পিকআপ এবং ডেলিভারি সহ যানবাহন রাউটিং সমস্যা (VRPs) সমাধানের জন্য সহায়তা প্রদান করে, যার লক্ষ্য হল বিভিন্ন স্থানে আইটেম তোলা এবং বিতরণ করা যানবাহনের বহরের জন্য সংক্ষিপ্ততম রুট খুঁজে বের করা। আপনি একটি স্ট্যান্ডার্ড VRP-এর মতোই সমস্যাটি সেট আপ করেছেন, কিন্তু এছাড়াও আপনি প্রতিটি আইটেমের জন্য একটি জোড়া (i, j) অবস্থান নির্দিষ্ট করেছেন, যেখানে i হল পিকআপ অবস্থান এবং j হল ড্রপ অফ অবস্থান৷ রাউটিং সল্ভার গাড়ির রুট ফেরত দেয় যেমন প্রতিটি জোড়ার জন্য (i, j) , i এবং j একই রুটে থাকে এবং গাড়িটি j এর আগে i ভিজিট করে।

এই ধরনের সমস্যার সমাধান করে এমন একটি উদাহরণের জন্য, পিকআপ এবং ডেলিভারির সাথে যানবাহন রাউটিং দেখুন।

ল্যাম্বডা ফাংশন জন্য সমর্থন

OR-Tools v7.0-এ এখন C# এবং Java (C++ এবং Python ছাড়াও, যেগুলি ইতিমধ্যে সমর্থিত ছিল) ল্যাম্বডা ফাংশনের জন্য সমর্থন অন্তর্ভুক্ত করে। Lambda ফাংশন রাউটিং প্রোগ্রামে কলব্যাক সংজ্ঞায়িত করার একটি সুবিধাজনক উপায় প্রদান করে। যাইহোক, আপনি স্ট্যান্ডার্ড ফাংশন ব্যবহার করে কলব্যাক সংজ্ঞায়িত করতে পারেন যদি আপনি মনে করেন যে এটি আপনার কোডকে আরও পাঠযোগ্য করে তোলে।

উপরের C# এবং জাভা কলব্যাক উদাহরণগুলি ব্যাখ্যা করে কিভাবে ল্যাম্বডা ফাংশন ব্যবহার করে কলব্যাক সংজ্ঞায়িত করা যায়।

নভেম্বর 2018

সংস্করণ v6.10 প্রকাশের ঘোষণা

আমরা OR-Tools সংস্করণ 6.10 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, OR-Tools ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

নিম্নলিখিত বিভাগগুলি সংস্করণ 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-Tools দিয়ে শুরু করুন দেখুন।

SCIP 6.0.0-এর জন্য সমর্থন

OR-Tools এখন SCIP 6.0.0-এর জন্য সমর্থন প্রদান করে।

বাইনারি

জাভা জেডিকে 8 (উবুন্টু 14.04 এর জন্য জেডিকে 7) ব্যবহার করে বাইনারি ডিস্ট্রিবিউশন তৈরি করা হয়েছে।

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-Tools ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

আপডেট করা নির্ভরতা

  • প্রোটোবাফ 3.5.1 -> 3.6.1।
  • SCIP 4.0 -> 6.0।

CP-SAT সমাধানকারী

  • এপিআই-তে ব্রেকিং পরিবর্তন - সম্পূর্ণ বিবরণ এখানে :
  • পাইথনে SolveWithSolutionObserver নাম পরিবর্তন করে SolveWithSolutionCallback করুন।
  • পাইথনে CpSolverSolutionCallback ক্লাসে NewSolution নাম পরিবর্তন করে OnSolutionCallback করুন। নিম্নলিখিত উদাহরণ পাইথনে একটি সমাধান কলব্যাক তৈরি করার নতুন উপায় দেখায়।

    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

  • পাইথন, জাভা এবং সি#-এ সমাধান কলব্যাকে StopSearch প্রকাশ করুন। এখানে ডকুমেন্টেশন.

  • Python, Java এবং C# এ ModelStats এবং CpSolverResponseStats প্রকাশ করুন।

  • পাইথন ডকস্ট্রিং ডকুমেন্টেশন উন্নত করুন। এখানে ডকুমেন্টেশন.

  • সমাধানকারী ইন্টারফেস এবং কুকবুকের জাভা বাস্তবায়নের আপডেট।

  • মডিউল প্রয়োগ করুন।

  • জলাধারের বাস্তবায়ন পরিবর্তন করুন: ঐচ্ছিক ড্রেনিং/ফিলিং ইভেন্টগুলি নির্দিষ্ট করতে বুলিয়ান সহ API যোগ করুন।

রৈখিক সমাধানকারী

  • জাভা এবং C# এ InterruptSolve প্রকাশ করুন।

সিপি সমাধানকারী

  • C# এ SolutionCollector ডিরেক্টর এক্সপোজ করুন।

পাইথন

  • Python 3.7 এর জন্য সমর্থন যোগ করুন।
  • উৎস থেকে কম্পাইল করার সময়: পাইথন সনাক্ত করার সময় python2 এর চেয়ে python3 পছন্দ করুন।

.নেট

  • .NET স্তরের সম্পূর্ণ পুনর্লিখন।
  • Runtime IDentifier win-x64 , linux-x64 এবং osx-x64 এর সাথে সামঞ্জস্যপূর্ণ একটি Google.OrTools NetStandard 2.0 Nuget প্যাকেজ প্রদান করুন।
  • একটি Google.OrTools.FSharp Nuget প্যাকেজ প্রদান করুন।
  • সমস্ত .NET উদাহরণের জন্য প্রকল্প ফাইল যোগ করুন।
  • নিয়মিত F# প্রকল্পে (.fs) সমস্ত F# স্ক্রিপ্ট উদাহরণ (.fsx) আপডেট করুন।
  • .NET প্যাকেজ বিল্ড জেনারেশনের ডকুমেন্টেশন এখানে যোগ করুন।

ফ্ল্যাটজিঙ্ক

  • ফ্ল্যাটজিঙ্কে সেটের জন্য সমর্থন যোগ করুন (nosets.mzn ব্যবহার করে)।

অবদানসমূহ

জুলাই 2018

সংস্করণ v6.8 প্রকাশ করা হচ্ছে

আমরা OR-Tools সংস্করণ 6.8 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, OR-Tools ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

CP-SAT সমাধানকারী ঘোষণা করা হচ্ছে

CP-SAT সমাধানকারী সীমাবদ্ধতা প্রোগ্রামিংয়ের জন্য একটি নতুন সমাধানকারী। CP-SAT সমাধানকারী মূল CP সমাধানকারীর চেয়ে দ্রুত, এবং CP সমস্যার জন্য পছন্দ করা উচিত।

CP-SAT সমাধানকারী ব্যবহার করে এমন উদাহরণগুলির জন্য, GitHub-এর উদাহরণ ডিরেক্টরিতে দেখুন যে ফাইলগুলির নামে _sat আছে।

বিদ্যমান কোডকে সমর্থন করার জন্য মূল CP সল্ভারটি নির্দিষ্ট সময়ের জন্য বজায় রাখা অব্যাহত থাকবে, কিন্তু এটি অবমূল্যায়িত করা হয়েছে।

CP-SAT সমাধানকারীর জন্য নতুন বিকল্প

CP-SAT সমাধানকারীর জন্য নিম্নলিখিত বিকল্পগুলি এই রিলিজে নতুন:

  • স্থানীয় প্রতিবেশী অনুসন্ধান (LNS): LNS সক্ষম করতে SatParameters.use_lns বিকল্পটি ব্যবহার করুন।
  • সমান্তরাল অনুসন্ধান: একটি অনুসন্ধানের সময় একাধিক থ্রেড সক্রিয় করতে SatParameters.num_search_workers বিকল্পটি ব্যবহার করুন। প্রতিটি থ্রেডের বিভিন্ন পরামিতি এবং বিভিন্ন এলোমেলো বীজ থাকতে পারে। এটি বৈচিত্র্যকে সর্বাধিক করে তোলে এবং সম্ভাব্যতা যে অন্তত একটি থ্রেড সমাধান খুঁজে পাবে।

সমাধানকারীদের কর্মক্ষমতা উন্নতি

আমরা CP-SAT এবং Glop সমাধানকারীদের কর্মক্ষমতা উন্নতি করেছি।

মার্চ 2018

সংস্করণ v6.7 প্রকাশ করা হচ্ছে

আমরা OR-Tools সংস্করণ 6.7 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, OR-Tools ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

প্রয়োজনীয় নির্ভরতা আপডেট করুন

  • প্রোটোবাফ 3.5.0 -> 3.5.1।

বিবিধ

  • abseil-cpp ইন্টিগ্রেশন প্রস্তুত করতে রিফ্যাক্টর বেস।
  • Travis CI এবং Appveyor কন্টিনিউশন ইন্টিগ্রেশন (CI) পরিষেবার ব্যবহার।

SAT

  • কর্মক্ষমতা বৃদ্ধি.
  • Python API উন্নত করে।
  • C# API ওরফে CpSolver.cs যোগ করুন (পরীক্ষামূলক)।

গ্লপ

  • কোড রিফ্যাক্টরিং।
  • কর্মক্ষমতা বৃদ্ধি.

CMake সমর্থন (পরীক্ষামূলক)

  • C++ OR-Tools CMake সমর্থন যোগ করুন।
  • একটি স্বতন্ত্র CMake প্রকল্প হিসাবে OR-Tools তৈরি করতে সক্ষম হন।
  • একটি বিদ্যমান CMake প্রকল্পে OR-Tools অন্তর্ভুক্ত করতে সক্ষম হন।
  • Python OR-Tools CMake-ভিত্তিক বিল্ড যোগ করুন।
  • CMake ব্যবহার করে পাইথন প্যাকেজ (চাকা) তৈরি করুন।

অবদানসমূহ

  • উইন্ডোতে winsock2.h রিডেফিনেশন ঠিক করুন। ফ্লোরেন্ট টোলিন ডি রিভারোলকে ধন্যবাদ।
  • F# সমর্থন যোগ করুন (পরীক্ষামূলক)। ম্যাথু মুরকে ধন্যবাদ। দ্রষ্টব্য: শুধুমাত্র Makefile নির্মাতার সাথে উপলব্ধ।
  • .NET স্ট্যান্ডার্ড সমর্থন যোগ করুন (পরীক্ষামূলক)। জিয়াদ এল মালকিকে ধন্যবাদ। দ্রষ্টব্য: শুধুমাত্র Makefile নির্মাতার সাথে উপলব্ধ।

নভেম্বর 2017

সংস্করণ v6.6 প্রকাশ করা হচ্ছে

আমরা OR-Tools সংস্করণ 6.6 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, OR-Tools ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

প্রয়োজনীয় নির্ভরতা আপডেট

  • প্রোটোবুফ থেকে 3.3.0 -> 3.5.0।
  • Gflags 2.2.0 -> 2.2.1 এ।
  • সিবিসি 2.9.8 -> 2.9.9।
  • পাইথনের জন্য প্রয়োজনীয় নির্ভরতা হিসাবে পাইথন মডিউল ছয় (1.10) যুক্ত করুন।

বাগ ফিক্স

  • অনুরোধটি টানুন #494 নাম রিফ্যাক্টরিং। কিছু সম্পাদকদের মধ্যে ইন্টেলিসেন্সের জন্য মন্তব্য যুক্ত করা। ম্যাথু মুরকে ধন্যবাদ।
  • এফ # স্ট্যান্ডেলোন বাইনারি জন্য অনুরোধ করুন # 516 নির্দেশনা। ম্যাথু মুরকে ধন্যবাদ।
  • GLOP এ নির্ভুলতা উন্নত করুন।

SAT সমাধানকারী

  • অভ্যন্তরীণ স্যাট সলভার উন্নত করুন, বিভিন্ন বাগ ঠিক করুন।
  • এলপি সলভারের সাথে সংযুক্ত স্যাট সলভারে একটি ভিআরপি সীমাবদ্ধতা যুক্ত করুন।
  • প্যারামিটার হিসাবে CpSolverResponse নিতে স্যাট সলভারে সমাধান পর্যবেক্ষক পরিবর্তন করুন।
  • স্যাট সলভারে GLOP এর ব্যবহার উন্নত করুন।
  • স্পিডআপ স্যাট-এলপি সংযোগ।
  • স্যাট সিপি_মোডেল প্রোটোবিএফ ফর্ম্যাটে জলাধার সীমাবদ্ধতা যুক্ত করুন।

শনি/পাইথন

উদাহরণ

  • সমস্যাটি সঞ্চয় করতে প্রোটোবিএফ ফর্ম্যাটটি ব্যবহার করতে rcpsp_parser পুনরায় লিখুন।
  • আরসিপিএসপি পার্সার উন্নত করুন।

অক্টোবর 2017

সংস্করণ v6.5 প্রকাশের ঘোষণা দিচ্ছে

আমরা OR-TOOLS সংস্করণ 6.5 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, ওআর-সরঞ্জাম ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

প্ল্যাটফর্ম পরিবর্তন

  • পিওয়াইপিআই মডিউল পিওয়াই 3-অর্টুলগুলি অরটুলস মডিউলে একীভূত করা হয়েছে। এখন কেবল একটি মডিউল রয়েছে: 'অরটুলস'।
  • এই পাইথন মডিউলগুলির প্রধান ফর্ম্যাটটি এখন হুইল ফাইল। পিওয়াইপিআই থেকে পাইথনের জন্য বা সরঞ্জামগুলি ইনস্টল করতে, কেবল pip install ortools চালান। আপনার পিআইপি ইনস্টল করা সাম্প্রতিক সংস্করণ প্রয়োজন (> = 9.0.1)। এটি সর্বশেষ রিলিজটি টানতে হবে (v6.5)।

বাগ সংশোধন করা হয়েছে

প্রোটোবুফ জার ফাইলটি এখন সংকলিত ক্লাসগুলির সাথে সঠিকভাবে তৈরি করে।

নতুন উদাহরণ

  • আরও এফ# উদাহরণগুলি উদাহরণ/এফএসএআরপি ডিরেক্টরিতে অবদান রাখা হয়েছে (ম্যাথিউ মুরকে আবার ধন্যবাদ)।
  • জাভা এমআইপি উদাহরণগুলিও অবদান রাখা হয়েছে (ধন্যবাদ ডায়ারিয়ান)।

সেপ্টেম্বর 2017

সংস্করণ v6.4 প্রকাশের ঘোষণা দিচ্ছে

আমরা ওআর-সরঞ্জাম সংস্করণ 6.4 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, ওআর-সরঞ্জাম ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

প্ল্যাটফর্ম পরিবর্তন

  • লিনাক্স প্ল্যাটফর্মগুলিতে পিওয়াইপিআই মডিউলগুলি এখন মোরলিনাক্স 1 ট্যাগ ব্যবহার করে হুইল ফাইল হিসাবে সরবরাহ করা হয়। ফেডেরিকো ফিকারেলিকে ধন্যবাদ। এই পরিবর্তনের সাথে সাথে, আমরা জুলাই 2017 রিলিজে প্রবর্তিত প্রতি-লিনাক্স মডিউলগুলিকে ব্যাকট্র্যাক করেছি।

নতুন বৈশিষ্ট

  • GLOP এর ভিতরে ব্যবহৃত উন্নত স্কেলিং পদ্ধতি।
  • সি# রাউটিং লাইব্রেরিতে মূল্যায়নকারীদের মোড়ক ঠিক করুন। ডিভনামেডেডকে ধন্যবাদ।
  • বড় মডেলের জন্য ফ্ল্যাটজিনক প্রজ্বলের কার্যকারিতা উন্নত করুন।
  • ডিফল্টরূপে ফ্ল্যাটজিনকের জন্য স্যাট ব্যাক ব্যবহার করুন।
  • স্যাট সলভারের জন্য মূল ভিত্তিক পদ্ধতির কার্যকারিতা উন্নত করুন।
  • লিনিয়ার অ্যাসাইনমেন্ট অ্যালগরিদমে বাগটি ঠিক করুন যা ভুলভাবে ব্যর্থ হয়েছিল।
  • Ortools/উদাহরণ/fsharp এ এফ# উদাহরণ যুক্ত করা হয়েছে।
  • রাউটিং লাইব্রেরিতে ইতিবাচক জরিমানার জন্য চেক সরান।

আগস্ট 2017

সংস্করণ v6.3 প্রকাশের ঘোষণা দিচ্ছে

আমরা ওআর-সরঞ্জাম সংস্করণ 6.3 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, ওআর-সরঞ্জাম ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

নতুন ডাউনলোড ফাইল

লিনাক্সের জন্য পাইথন হুইল ফাইলগুলি এখন সমস্ত ডাউনলোডের সর্বশেষ সংস্করণ সহ ওআর-সরঞ্জাম রিলিজ পৃষ্ঠায় ডাউনলোড করার জন্য উপলব্ধ।

মিনিজিংক সলভার

এই সংস্করণে মিনিজিংক 2017 চ্যালেঞ্জের জন্য প্রেরিত চূড়ান্ত স্যাট এবং ফ্ল্যাটজিংক কোড রয়েছে।

জুলাই 2017

সংস্করণ v6.2 প্রকাশের ঘোষণা দিচ্ছে

আমরা ওআর-সরঞ্জাম সংস্করণ 6.2 ​​প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, ওআর-সরঞ্জাম ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

প্ল্যাটফর্ম পরিবর্তন

  • আমরা এখন একাধিক লিনাক্স বাইনারি বিতরণ সমর্থন করি (উবুন্টু 14.04, 16.04, 17.04, সেন্টোস 7, দেবিয়ান 9)।
  • লিনাক্স প্ল্যাটফর্মগুলিতে পিওয়াইপিআই মডিউলগুলিতে এখন একটি ট্যাগ অন্তর্ভুক্ত রয়েছে যা বিতরণকে বর্ণনা করে (উবুন্টু -14.04, উবুন্টু -16.04, উবুন্টু -17.04, সেন্টোস -7, ডেবিয়ান -9)।

নতুন বৈশিষ্ট

আমরা লিনাক্স শিল্পকর্মগুলি তৈরিতে ডকারের পক্ষে সমর্থন যুক্ত করেছি। or-tools/tools/docker যান এবং সম্ভাব্য লক্ষ্যগুলি দেখতে Makefile দেখুন ( make archive , make pypi এবং make pypi3 )।

এই কমান্ডগুলি একটি export সাব -ডিরেক্টরি তৈরি করবে এবং এতে বাইনারি শিল্পকর্ম যুক্ত করবে।

জুন 2017

সংস্করণ v6.1 প্রকাশের ঘোষণা দিচ্ছে

আমরা ওআর-সরঞ্জাম সংস্করণ 6.1 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, ওআর-সরঞ্জাম ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

প্ল্যাটফর্ম পরিবর্তন

  • ভিজ্যুয়াল স্টুডিও 2017 সমর্থিত; ভিজ্যুয়াল স্টুডিও 2013 আর সমর্থিত নয়।
  • ম্যাকোস সংস্করণগুলি 10.9 এবং উচ্চতর সমর্থিত।

নতুন বৈশিষ্ট

আমরা আমাদের সিপি-স্যাট সলভারের জন্য একটি নতুন প্রোটোবিএফ ফর্ম্যাট যুক্ত করেছি। আপনার মডেলটি সংজ্ঞায়িত করতে ortools/sat/cp_model.proto দেখুন এবং আপনার সমস্যাটি সমাধান করতে ortools/sat/cp_model_solver.h

বাগ ফিক্স

ইস্যু #420: আমরা সমস্ত প্ল্যাটফর্মে পাইথন পাইপিআই মডিউলগুলিতে অনুপস্থিত __version__ বৈশিষ্ট্যটি ঠিক করেছি।

মে 2017

সংস্করণ v6.0 প্রকাশের ঘোষণা দিচ্ছে

আমরা ওআর-সরঞ্জাম সংস্করণ 6.0 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, ওআর-সরঞ্জাম ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

সি ++ এ নতুন ডিরেক্টরি কাঠামো

আমরা সি ++ ব্যবহার করার সময় উত্সটি পরিবর্তন/সরঞ্জামগুলির কাঠামো পরিবর্তন করেছি/অন্তর্ভুক্ত করেছি। লক্ষ্যটি হ'ল সি ++ অন্তর্ভুক্ত ফাইলগুলির আরও ভাল এনক্যাপসুলেশন সরবরাহ করা। এটিতে সি ++ এবং পাইথন ডিরেক্টরি কাঠামোগুলি সারিবদ্ধ করার সুবিধাও রয়েছে।

  • src/ নামকরণ করা হয়েছে ortools/
  • সি ++ ফাইলগুলিতে সমস্ত #অন্তর্ভুক্ত কমান্ডগুলিতে এখন উপসর্গের ortools যুক্ত করা হয়েছে। #include "constraint/constraint_solver.h" এখন #include "ortools/constraint/constraint_solver.h"

নতুন বৈশিষ্ট

  • বাজেল সমর্থন। আপনি এখন গুগলের বিল্ড সরঞ্জাম বাজেল দিয়ে বা-সরঞ্জাম তৈরি করতে পারেন। এটি লিনাক্স এবং ম্যাক ওএস এক্স bazel build examples/cpp/... এ কাজ করে Baz

রাউটিং

আমরা রাউটিং লাইব্রেরিতে বিরতি (যেমন, চালকদের মধ্যাহ্নভোজ খাওয়ার কারণে যানবাহন ডাউনটাইম) এর জন্য সমর্থন বাস্তবায়ন করেছি। এই বৈশিষ্ট্যটি cvrptw_with_breaks.cc উদাহরণে দেখানো হয়েছে।

স্কিপ সমর্থন

লিনিয়ার সলভার মোড়ক এখন এসসিআইপি 4.0 সমর্থন করে। আপনাকে এখন প্রথমে স্কিপ তৈরি করতে হবে, এবং তারপরে বা-সরঞ্জামগুলি বলুন যে আপনি এটি ব্যবহার করবেন। নির্দেশাবলী এখানে উপলব্ধ.

GLPK সমর্থন

আমরা জিএলপিকে দিয়ে বিল্ড দিয়ে পথও পরিবর্তন করেছি। এখানে দেখো .

ক্লিনআপ

  • আমরা সি ++ কোডবেসে HASH_MAP এবং HASH_SET এর সমস্ত ব্যবহার সরিয়ে ফেলেছি কারণ সেগুলি হ্রাস করা হয়। এগুলি এসটিএল থেকে আনর্ডারড_ম্যাপ এবং আনর্ডারড_সেট দ্বারা প্রতিস্থাপিত হয়েছিল।
  • মাইকেল পাওয়েলের সৌজন্যে সি# মেকফাইলসের ক্লিনআপ।

জানুয়ারী 2017

V5.1 সংস্করণ প্রকাশের ঘোষণা

আমরা ওআর-সরঞ্জাম সংস্করণ 5.1 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, ওআর-সরঞ্জাম ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

নতুন বৈশিষ্ট

ইনস্টল করা হচ্ছে

রাউটিং

প্রতিসম ভ্রমণ বিক্রয়কর্মী সমস্যার জন্য হোল্ড-কার্প লোয়ার বাউন্ড গণনা করতে একটি অ্যালগরিদম প্রয়োগ করেছেন। এটি আপনাকে সম্ভাব্য অ-অনুকূল সমাধানের ব্যয় এবং অনুকূল সমাধানের ব্যয়ের মধ্যে ব্যবধানের সাথে একটি উপরের আবদ্ধ গণনা করতে সক্ষম করে।

  • যানবাহন রাউটিং লাইব্রেরিতে একটি নতুন পদ্ধতি যুক্ত করা হয়েছে, RoutingModel::SetBreakIntervalsOfVehicle , যা আপনাকে বিরতি অন্তরগুলি যুক্ত করতে দেয় - সময়কাল যখন কোনও যান কোনও কাজ সম্পাদন করতে পারে না (যেমন কোনও নোড ভ্রমণ বা পরিদর্শন করা)। এই বিকল্পটি ব্যবহার করে এমন একটি উদাহরণের জন্য, CVRPTW_WITH_BREAKS.CC দেখুন

সময়সূচী

সলভার

  • স্যাট সলভারের ক্রমবর্ধমান সীমাবদ্ধতা এখন new চ্ছিক অন্তরগুলি গ্রহণ করে, যা NewOptionalInterval পদ্ধতিতে তৈরি। উদাহরণস্বরূপ, https://github.com/google/or-tools/blob/master/examples/cpp/rcpsp_sat.cc দেখুন।
  • আপনি এখন একটি সর্বোচ্চ-স্যাট সমাধান করতে পারেন (উদ্দেশ্যকে আক্ষরিক একটি ওজন হিসাবে উল্লেখ করে সর্বোচ্চ সন্তুষ্টি_ সমস্যা।

কর্মক্ষমতা উন্নতি

  • স্যাট সলভার - স্যাট সলভারের উন্নত পারফরম্যান্স, বিশেষত ক্রমবর্ধমান সীমাবদ্ধতার জন্য।
  • গ্লোপ সলভার - গ্লোপ সলভারের উন্নত সংখ্যাসূচক দৃ ust ়তা, যা এখন শক্ত সংখ্যাসূচক সমস্যার আরও সঠিক সমাধান দেয়।
  • ফ্ল্যাটজিংক সলভার
  • ফ্ল্যাটজিংক দোভাষীর জন্য স্যাট ব্যাকএন্ডের ব্যাপক উন্নত পারফরম্যান্স।
  • সি# ফ্ল্যাটজিংক ইন্টারফেসকে সরলীকৃত। নতুন ইন্টারফেসের উদাহরণের জন্য, https://github.com/google/or-tools/blob/master/exmples/csharp/csfz.cs দেখুন।

বাগ ফিক্স

  • একক যানবাহন এবং পাশের সীমাবদ্ধতা সহ রাউটিং মডেলগুলিতে PathCheapestArc হিউরিস্টিক ব্যবহার করে কখনও কখনও সলভারকে অতিরিক্ত দীর্ঘ সময়ের জন্য চালাতে পারে। এটি সঠিকভাবে বিবেচনা করে পার্শ্ব-সীমাবদ্ধতাগুলি গ্রহণ করে স্থির করা হয়েছিল।
  • জাভাতে, রাউটিং সলভারটি কখনও কখনও যানবাহনের রাউটিং সমস্যাগুলি সমাধান করার সময় ক্রাশ হয়ে যায়। এটি সর্বশেষ প্রকাশে স্থির করা হয়েছে।

নভেম্বর 2016

V5.0 সংস্করণ প্রকাশের ঘোষণা দিচ্ছে

আমরা ওআর-সরঞ্জাম সংস্করণ 5.0 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, ওআর-সরঞ্জাম ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

চলমান উদাহরণ

  • ভাষা-নির্দিষ্ট লক্ষ্যগুলি প্রবর্তিত হয়েছে যা আপনার প্রোগ্রামগুলি সংকলন করা এবং পরিচালনা করা সহজ করে তোলে, পাশাপাশি টুলগুলির সাথে আসা উদাহরণগুলিও।

শনি

ফ্ল্যাটজিংক

  • ফ্ল্যাটজিনক সমস্যার জন্য একটি স্যাট সলভার প্রয়োগ করেছেন।

সীমাবদ্ধতা সমাধানকারী

রাউটিং

  • বাস্তবায়িত অ্যাডেটসোলিউশনক্যালব্যাক , যা অনুসন্ধানের সময় প্রতিবার সমাধান পাওয়া যায় বলে একটি কলব্যাক।
  • রাউটিং মডেল ডিপো-কম কনস্ট্রাক্টরগুলি সরিয়ে ফেলুন। রাউটিং মডেলটিতে কমপক্ষে একটি ডিপো নির্দিষ্ট করা এখন বাধ্যতামূলক।

সেপ্টেম্বর 2016

সংস্করণ v4.4 প্রকাশের ঘোষণা

আমরা ওআর-সরঞ্জাম সংস্করণ 4.4 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, ওআর-সরঞ্জাম ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

শনি

  • এটি ব্যবহারের জন্য বর্ধিত সময়সূচী এপিআই এবং পরিবর্তিত উদাহরণগুলি (ওজনযুক্ত_টার্ডনেস_স্যাট এবং জবশপ_স্যাট)।

চিত্রলেখ

  • গ্রাফ ক্লাসে পুনরাবৃত্তির বৈশিষ্ট্য যুক্ত করা হয়েছে।

বা সরঞ্জাম বিতরণ

  • নুগেট প্যাকেজটি আবার সমর্থিত।

আগস্ট 2016

V4.3 সংস্করণ প্রকাশের ঘোষণা

আমরা ওআর-সরঞ্জাম সংস্করণ 4.3 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, ওআর-সরঞ্জাম ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

সীমাবদ্ধ সলভার

  • প্রদত্ত ব্যবধানের বাইরে থাকতে একটি পরিবর্তনশীলকে সীমাবদ্ধ করার জন্য NotBetween পদ্ধতি প্রয়োগ করা হয়েছে।

রাউটিং

  • এই উদাহরণে দেখানো হিসাবে বিদ্যমান NotMember সীমাবদ্ধতাগুলি পরীক্ষা করতে মডেলের একটি পার্স যুক্ত করা হয়েছে এবং স্থানীয় অনুসন্ধান ফিল্টারগুলিতে সেগুলি ব্যবহার করুন।
  • স্থানীয় অনুসন্ধান প্রোফাইলিং যুক্ত করা হয়েছে।
  • স্থানীয় পদক্ষেপের জন্য ঠিক করুন।

লিনিয়ার সলভার

  • স্থির এসসিআইপি স্থিতি প্রতিবেদন।

শনি

গ্লপ

  • গণনার আরও পর্যায়ে স্পারসিটি শোষণ করে উন্নত পারফরম্যান্স।

ফ্ল্যাটজিংক

  • মিনিজিংক চ্যালেঞ্জ দ্বারা ফিক্সড বাগগুলি পাওয়া যায়।

Lp_data

  • পুনরাবৃত্তিতে টেমপ্লেটগুলির অব্যাহত সরলীকরণ।

বা সরঞ্জাম বিতরণ

  • সি# অ্যাসেমব্লিগুলি এখন ডিফল্টরূপে দৃ strongly ়ভাবে নামকরণ করা হয়েছে।
  • প্রোটোবুফ 3.0.0 এ আপগ্রেড করা হয়েছে।
  • বা-সরঞ্জাম সংরক্ষণাগার নির্ভরতাগুলি পরীক্ষা করতে একটি পাইথন স্ক্রিপ্ট যুক্ত করেছে।

জুলাই 2016

V4.2 সংস্করণ প্রকাশের ঘোষণা

আমরা ওআর-সরঞ্জাম সংস্করণ 4.2 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, ওআর-সরঞ্জাম ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

সীমাবদ্ধ সলভার (রাউটিং)

  • একটি বিচ্ছিন্নতা এখন একটি কার্ডিনালিটি দিয়ে সংজ্ঞায়িত করা যেতে পারে, যা সর্বাধিক সংখ্যক নোড যা এই বিচ্ছিন্নতার মধ্যে সক্রিয় থাকতে পারে। উদাহরণস্বরূপ, যদি আপনি এন নোড এবং কে এর কার্ডিনালিটি দিয়ে কোনও বিভাজন যুক্ত করেন তবে এন নোডগুলির মধ্যে কে নোডগুলিকে সক্রিয় হওয়ার অনুমতি দেওয়া হয়। এটি করার জন্য আপনি অ্যাডডিসজানশনের নতুন সংজ্ঞাটি ব্যবহার করতে পারেন।
  • নোড প্রতি একাধিক বিচ্ছিন্নতার জন্য সমর্থন যুক্ত করা হয়েছে। উদাহরণস্বরূপ, আপনি এখন অনেক বিভেদ (ডি 1..ডিএম) এ একটি নোড, এন 1 যুক্ত করতে পারেন। এটি তাদের যে কোনও একটির মধ্যে সক্রিয় হওয়ার সম্ভাবনা বাড়িয়ে তোলে। বিচ্ছিন্ন সময় উইন্ডো সম্পর্কিত সমস্যার জন্য একটি দ্রুত রাউটিং অনুসন্ধান অ্যালগরিদম প্রবর্তন করেছে।
  • মডেল প্যারামিটারগুলিতে রাউটিংয়ে সীমাবদ্ধ সলভার প্যারামিটারগুলি এবং অনুসন্ধানের পরামিতিগুলিতে রাউটিংয়ে লগ_ সন্ধান যুক্ত করা হয়েছে।
  • স্থানীয় অনুসন্ধান অ্যালগরিদম বিচ্ছিন্ন সময় উইন্ডোগুলির সাথে সমস্যার সমাধান করার সাথে দ্রুত। আরও তথ্যের জন্য CVRP_DISJINT_TW.CC উদাহরণ পরীক্ষা করুন।

জিএলওপি (লিনিয়ার অপ্টিমাইজেশন)

  • একটি দ্রুত সিমপ্লেক্স অ্যালগরিদম প্রবর্তন করেছে।

বা সরঞ্জাম বিতরণ

  • সি ++, জাভা এবং .NET এর প্রতিটি জন্য পৃথক সংরক্ষণাগারগুলির চেয়ে প্ল্যাটফর্মের জন্য একটি সংরক্ষণাগার। পাইথন সংরক্ষণাগারগুলি এখনও পাইপিতে হোস্ট করা হয়।
  • পিওয়াইপিআই -তে, আমরা ম্যাক ওএস এক্স এবং উইন্ডোতে হুইল (.WHL) মডিউলগুলিতে স্যুইচ করেছি। একটি মেজর.মিনোর নম্বর স্কিমা পরিচয় করিয়ে দিয়েছে। এই সংখ্যাগুলি সংরক্ষণাগারগুলির নামগুলি ব্যবহৃত হয়, ম্যাক ওএস এক্স শেয়ার্ড লাইব্রেরি, পাইথন মডিউলস, নেট অ্যাসেম্বলিতে সঞ্চিত সংস্করণ। আমরা যে প্রথম সংস্করণটি প্রকাশ করছি তা হ'ল এই স্কিমাটি হ'ল v4.2

জুন 2016

V2016-06 সংস্করণ প্রকাশের ঘোষণা দিচ্ছে

আমরা or-সরঞ্জাম সংস্করণ v2016-06 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, ওআর-সরঞ্জাম ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

সীমাবদ্ধতা সমাধানকারী

  • সিপি লাইব্রেরি থেকে কলব্যাকস (এসআরসি/বেস/কলব্যাক.এইচ) এর বেশিরভাগ উদাহরণ সরানো হয়েছে।
  • যোগ করা নটমেম্বার্ট (ভেরিয়েবল অন্তরগুলির একটি সেটের সাথে সম্পর্কিত হতে পারে না)।

রাউটিং লাইব্রেরি

  • বেমানান পরিবর্তন: AddDimensionWithVehicleCapacity যানবাহনের সক্ষমতা নির্দিষ্ট করতে, আপনাকে এখন কলব্যাকের পরিবর্তে একটি অ্যারে (সি ++ তে একটি ভেক্টর) পাস করতে হবে।

GLOP

  • বিরল ম্যাট্রিক্সের অভ্যন্তরীণ উপস্থাপনা পরিবর্তন করুন।
  • কর্মক্ষমতা উন্নতি.

চিত্রলেখ

  • std::function (সি ++) দ্বারা কলব্যাকগুলি প্রতিস্থাপনের জন্য ডিজকস্ট্রা এবং বেলম্যান-ফোর্ড অ্যালগরিদমগুলি পুনরায় লিখুন।
  • আর্কস এবং নোডগুলির উপর পুনরাবৃত্তি করার সময় বিভিন্ন গ্রাফ বাস্তবায়নের এপিআই পরিবর্তন করুন।

শনি

  • অব্যবহৃত কোর পদ্ধতি (রেজোলিউশন নোড) সরান।
  • অসন্তুষ্টির প্রমাণগুলি পরীক্ষা করতে ড্রেট রাইটার যুক্ত করেছেন।
  • প্রিপ্রোসেসর যুক্ত করুন।

বপ

  • নতুন পাড়া যুক্ত করুন।

উদাহরণ

  • সি ++: উদাহরণগুলিতে ফাইললিনিয়ারডার থেকে মুক্তি পাওয়া।
  • ডেটা: একক-মেশিনের সময়সূচী সমস্যা যুক্ত করুন।

ডকুমেন্টেশন

এপ্রিল 2016

সংস্করণ v2016-04 প্রকাশের ঘোষণা দিচ্ছে

আমরা ওআর-সরঞ্জাম সংস্করণ v2016-04 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, ওআর-সরঞ্জাম ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

আপডেট করা নির্ভরতা

  • সীমাবদ্ধতা প্রোগ্রামিং এবং রাউটিং লাইব্রেরিতে পতাকাগুলির পরিবর্তে প্রোটোবুফগুলি ব্যবহার করুন। বিশদগুলির জন্য http://or-tools.blogspot.fr/2016/02/heads-ob- আপ আসন্ন- incompatibility-in.html দেখুন।

ডিসেম্বর 2015

সংস্করণ v2015-12 প্রকাশের ঘোষণা দিচ্ছে

আমরা ওআর-সরঞ্জাম সংস্করণ v2015-12 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, ওআর-সরঞ্জাম ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

সীমাবদ্ধতা সমাধানকারী

  • সিপি সলভারে বৃহত আশেপাশের অনুসন্ধানে সামঞ্জস্যতা ভঙ্গ করে ( examples/cpp/ls_api.cc , examples/python/pyls_api.py , examples/csharp/csls_api.cs , এবং examples/com/google/ortools/sample/LsApi.java নতুন এপিআই দেখতে)।
  • পাইথন মোড়ানো পরিষ্কার। সিপি সলভারে কাস্টম সিদ্ধান্তকে সমর্থন করুন (এপিআইকে কর্মে দেখতে examples/test/test_cp_api.py দেখুন)।
  • বিভিন্ন উন্নতি এবং বাগ ফিক্স।

সেপ্টেম্বর 2015

গিথুবে প্রথম প্রকাশের ঘোষণা।

ফাইলগুলি এখন থেকে সেখানে সংরক্ষণ করা হবে।

ফ্ল্যাটজিংক

  • ফ্ল্যাটজিংক দোভাষীর জন্য বাইনারি সংরক্ষণাগার যুক্ত করা হয়েছে ( www.minizinc.org দেখুন)।
  • চ্যালেঞ্জটিতে ব্যবহৃত সংস্করণে কয়েকটি ফিক্স রয়েছে।
,

এই পৃষ্ঠাটি নতুন বৈশিষ্ট্য, বাগ ফিক্সগুলি এবং কোড এবং ইনস্টলেশন পদ্ধতিতে উন্নতি সহ ওআর-সরঞ্জামগুলিতে পরিবর্তনগুলি তালিকাভুক্ত করে।

আপনি যদি বা সরঞ্জামগুলি ইনস্টল করতে সমস্যাগুলি অনুভব করেন তবে ওআর-সরঞ্জাম ইনস্টলেশন নির্দেশাবলীতে সমস্যা সমাধানের বিভাগটি পরীক্ষা করুন। যদি আপনার সমস্যাটি সেখানে তালিকাভুক্ত না করা হয় তবে গিটহাবের সমস্যাগুলি পরীক্ষা করুন বা কোনও নতুন খুলতে দ্বিধা করবেন না এবং আমরা আপনাকে সহায়তা প্রদান করে খুশি হব।

নীচে সর্বশেষ প্রকাশের সাথে শুরু করে ওআর-সরঞ্জামগুলির জন্য রিলিজ নোটগুলি রয়েছে।

মে 2024

ওআর-সরঞ্জাম v9.10 প্রকাশের ঘোষণা দিচ্ছে

আমরা or-সরঞ্জাম v9.10 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, ওআর-সরঞ্জাম ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

আপনি গিটহাবে রিলিজ নোটটি খুঁজে পেতে পারেন

মার্চ 2024

ওআর-সরঞ্জাম v9.9 প্রকাশের ঘোষণা দিচ্ছে

আমরা OR-TOOLS V9.9 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, ওআর-সরঞ্জাম ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

আপনি গিটহাবে রিলিজ নোটটি খুঁজে পেতে পারেন

নভেম্বর 2023

ওআর-সরঞ্জাম v9.8 প্রকাশের ঘোষণা দিচ্ছে

আমরা OR-TOOLS V9.8 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, ওআর-সরঞ্জাম ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

প্ল্যাটফর্ম পরিবর্তন

  • পাইথন 3.12 যোগ করুন।
  • উবুন্টু 23.10 এর জন্য সমর্থন যুক্ত করুন

রৈখিক সমাধানকারী

  • পোর্ট ModelBuilder টু। নেট।
  • স্যাট লগক্যালব্যাকের সাথে সংঘর্ষ এড়াতে MbLogCallback LogCallback নাম পরিবর্তন করুন।
  • মডেলবিল্ডার এপিআই প্রসারিত করুন:
    • সূচক সীমাবদ্ধতা যুক্ত করুন।
    • ইঙ্গিত সমর্থন যোগ করুন।
    • মডেল ক্লোনিং যুক্ত করুন।

গণিত অপ্ট

  • গভীর পুনর্নির্মাণ।

রাউটিং

  • ROUTING_OPTIMAL স্ট্যাটাস যুক্ত করুন।
  • RoutingModel অনুলিপিযোগ্য বা অস্থাবর করুন।
  • স্থানীয় অনুসন্ধান অপারেটরগুলিতে কিছু অসীম লুপ ঠিক করুন।
  • একটি PickupDeliveryPosition অভ্যন্তরীণ কাঠামো যুক্ত করুন।
  • IsPickup() এবং IsDelivery() পদ্ধতি যুক্ত করুন।

SAT

  • বড় মডেলের জন্য মেমরি পদচিহ্ন হ্রাস করুন।
  • উন্নত সময়সূচী অনুসন্ধান।
  • প্যাকিং_প্রেসিডেন্স_এলএনএস যুক্ত করুন।
  • সম্ভাব্যতা জাম্প অনুকূলিত করুন এবং ঠিক করুন।
  • লিনিয়ার প্রোপ্লোভকে অনুকূল করুন এবং লগিং আরও ভাল প্রোপ্লোভ করুন।
  • int_abs , int_mod , int_prod এবং lin_max এর জন্য প্রাসঙ্গিক উন্নতি করুন।
  • পান্ডা সমর্থন উন্নত করুন
  • কয়েকটি বাগ ফিক্স।

গিটহাব চেঞ্জলগ

আগস্ট 2023

ওআর-সরঞ্জাম v9.7 প্রকাশের ঘোষণা দিচ্ছে

আমরা or-সরঞ্জাম v9.7 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, ওআর-সরঞ্জাম ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

প্ল্যাটফর্ম পরিবর্তন

  • ড্রপ সেন্টোস -8 (ইওএল)।
  • ডিবিয়ান 10 ড্রপ।
  • ফেডোরা ড্রপ করুন [33, 36] (ইওএল)।
  • উবুন্টু 18.04 এলটিএস (ইওএল) ড্রপ করুন।
  • পাইথন 3.7 (ইওএল) ড্রপ করুন।
  • সিএমকে (ইওএল) এ netcore3.1 সমর্থন অক্ষম করুন।

মডেল নির্মাতা পাইথন

  • ভেরিয়েবল তৈরি করতে পান্ডাস ডেটাফ্রেম এবং সিরিজ ব্যবহারের অনুমতি দিন।
  • সম্পূর্ণ টাইপিং তথ্য

পিডিএলপি

  • বিভিন্ন আপডেট।

সিপি-স্যাট

  • কর্মক্ষমতা উন্নতি. (সম্ভাব্যতা_জাম্প, লিন_ম্যাক্স)
  • কাটা ব্যবস্থাপনা উন্নত করুন
  • নতুন উদ্দেশ্য_শেভিং_ অনুসন্ধান কর্মী উদ্দেশ্যটির নীচের সীমাটি উন্নত করতে উত্সর্গীকৃত (যখন হ্রাস করা হয়)
  • পাইথন সিপি_মোডেল.পি জন্য টাইপ টীকা
  • সিপি_মোডেল.পি -তে পান্ডাদের জন্য পরীক্ষামূলক আংশিক সমর্থন
  • পরীক্ষামূলক স্থানীয় অনুসন্ধান লঙ্ঘন ভিত্তিক কর্মীরা:
    • প্যারামিটারগুলির সাথে সক্ষম: num_violation_ls: xxx
    • লিনিয়ার মডেলের জন্য অনুকূলিত ( linear , bool_or , bool_and , at_most_one , exactly_one )
    • লিন_ম্যাক্স, পণ্য, বিভাগের সাথে সঠিকভাবে কাজ করে
    • No_overlap, Cumulative, সার্কিট, রুট সমর্থন করে
    • no_overlap_2d সহ অক্ষম
    • প্রস্তাবিত এলএস কর্মীদের সংখ্যা: num_workers -> num_violation_ls : (8, 1), (16, 2) (24, 3), (32, 4)

গিটহাব চেঞ্জলগ

মার্চ 2023

ওআর-সরঞ্জাম v9.6 প্রকাশের ঘোষণা দিচ্ছে

আমরা OR-TOOLS V9.6 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, ওআর-সরঞ্জাম ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

প্ল্যাটফর্ম পরিবর্তন

  • ফেডোরা 37, 38 সমর্থন যোগ করুন।
  • পাইথন 3.6 ড্রপ করুন ( protobuf দ্বারা সমর্থিত নয়)।
  • ম্যাকোসে পাইথন 3.7 ড্রপ করুন ( scipy দ্বারা সমর্থিত নয়)।
  • সিএমকে net7.0 সমর্থন যুক্ত করুন (ব্যবহার -DUSE_DOTNET_7=ON )
  • নুগেটে netcore3.1 ড্রপ করুন .org প্যাকেজগুলি

নির্ভরতা

  • স্কিপ v801 -> v803 (দ্রষ্টব্য: এখন এসসিআইপি একটি ওএসআই সামঞ্জস্যপূর্ণ লাইসেন্স ব্যবহার করুন)
  • অ্যাবসিল 20220623.1 -> 20230105.0
  • প্রোটোবুফ v21.5 -> v21.12
  • সুইগ 4.1.1
  • জাভা জেএনএ 5.11.0 -> 5.12.1

বাজেল

  • পাইবাইন্ড 11 সমর্থন যুক্ত করুন।
  • জাভা মোড়ক সমর্থন যোগ করুন।

সমাধানকারী

  • পিডিএলপি: ডিডি পাইথন মোড়ক।
  • সিপি-স্যাট: কর্মক্ষমতা উন্নতি।
  • GLOP: টুইট প্রজ্বল।
  • মডেলবিল্ডার: পাইথন: নম্বি সমর্থন উন্নত করুন।
  • রাউটিং: পারফরম্যান্স উন্নতি (স্থানীয় অনুসন্ধান)

জ্ঞাত সমস্যা:

  • সিপি-স্যাট: pseudo_costs সাবসোলবার উপেক্ষা করে অবৈধ পরামিতিগুলি রিটার্ন করে (দেখুন #3706 )।

নভেম্বর 2022

ওআর-সরঞ্জাম v9.5 প্রকাশের ঘোষণা দিচ্ছে

আমরা or-সরঞ্জাম v9.5 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, ওআর-সরঞ্জাম ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

প্ল্যাটফর্ম পরিবর্তন

  • ডেবিয়ান এসআইডি সমর্থন যুক্ত করুন।
  • ফেডোরা 35, 36 সমর্থন যোগ করুন।
  • উবুন্টু 22.10 সমর্থন যোগ করুন।
  • ম্যাকোসে পাইথন 3.6 ড্রপ করুন।
  • পাইথন 3.11 সমর্থন যোগ করুন।

নির্ভরতা আপডেট

  • প্রোটোবিএফ v19.4 -> v21.5
  • স্কিপ সলভার v800 -> v801

সিপি-স্যাট

  • উন্নতিগুলি অনুমান করুন: সর্বোচ্চ (অ্যারে), বুলিয়ান সীমাবদ্ধতা, লিনিয়ার সীমাবদ্ধতা।
  • ইন্টারলিভড অনুসন্ধান সমান্তরালভাবে ডিটারমিনিস্টিক হওয়া উচিত।
  • লিনিয়ার কাট: ক্লিনআপ স্কোয়ার এবং ইন্ট_প্রড কাট; কাটা পাইপলাইন পুনরায় লিখুন।
  • ফিঙ্গারপ্রিন্ট ইনপুট মডেল এবং সমাধান (লগে দৃশ্যমান)।
  • সময়সূচী উন্নতি।
  • বাগফিক্সের সাধারণ গুচ্ছ (প্রসিভের সময় ক্র্যাশ, কাটগুলিতে ক্র্যাশ, অযোগ্য সমাধান, এলএনএসে অযোগ্য মডেল)।

GLOP

  • লিনিয়ার বীজগণিত, পাশাপাশি পিভট নির্বাচনের নিয়ম পুনর্লিখন করে স্পিডআপ।

রৈখিক সমাধানকারী

  • knapsack_interface.cc যুক্ত করুন।
  • লিনিয়ার_সোলভার ডিরেক্টরি (শিরোনাম এবং নমুনা) এর অধীনে মডেল_বিল্ডার এপিআই সরান।
  • গুরোবি 10 এর জন্য সমর্থন যুক্ত করুন।

রাউটিং

  • বিভিন্ন রাউটিং চ্যালেঞ্জের জন্য কয়েকজন পার্সারকে মুক্তি দিন।

আগস্ট 2022

ওআর-সরঞ্জাম v9.4 প্রকাশের ঘোষণা দিচ্ছে

আমরা or-সরঞ্জাম v9.4 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, ওআর-সরঞ্জাম ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

প্ল্যাটফর্ম

  • দেবিয়ান -10 সমর্থন যুক্ত করুন (দেখুন #3029 )।
  • উবুন্টু 22.04 এলটিএস সমর্থন যুক্ত করুন (দেখুন #3276 )। দ্রষ্টব্য: .NET 3.1 সমর্থন থাকবে না ( ডটনেট/কোর#7038 দেখুন)।
  • উবুন্টু 21.10 সমর্থন সরান।

বিবিধ

  • ভাষা দ্বারা সংরক্ষণাগারটি বিভক্ত করুন এবং সি ++ ওয়ান (#3200) এ সিএমকে কনফিগারেশন যুক্ত করুন।

চিত্রলেখ

ortools.graph.pywrapgraph মধ্যে বিভক্ত:

  • ortools.graph.python.linear_sum_assignment
  • ortools.graph.python.max_flow
  • ortools.graph.python.min_cost_flow

এটি সমস্যাগুলির সেটআপকে গতি বাড়ানোর জন্য নুম্পি ব্যবহার করার অনুমতি দেয়।

সিপি-স্যাট

কিছু উন্নতি:

  • সময়সূচী (প্রচার, কাটা, নিম্ন সীমানা)।
  • ম্যাক্সস্যাট (প্রেসলভ, কোর ভিত্তিক হিউরিস্টিকস)।
  • এমআইপি পারফরম্যান্স (প্রিকভ, কাটস)।

মার্চ 2022

ওআর-সরঞ্জাম v9.3 প্রকাশের ঘোষণা দিচ্ছে

আমরা ওআর-টুলগুলি v9.3 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, ওআর-সরঞ্জাম ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

প্ল্যাটফর্ম পরিবর্তন

  • ডিবিয়ান -10 সমর্থন ড্রপ করুন।
  • উবুন্টু -16.04 সমর্থন ড্রপ করুন।
  • ড্রপ। নেট ফ্রেমওয়ার্ক 4.5.2।

নির্ভরতা আপডেট

  • ইগেন যুক্ত করুন 3.4.0
  • গুগল আরই 2 2021-11-01 যুক্ত করুন।
  • প্রোটোবিএফ 3.19.1 -> 3.19.4
  • স্কিপ 7.0.1 -> v800

পাইথন

  • পাইবাইন্ড 11 যুক্ত করুন।

বৈশিষ্ট্য

  • পরীক্ষামূলক হিসাবে পিডিএলপি যুক্ত করুন।
  • পরীক্ষামূলক হিসাবে ম্যাথোপ্ট যুক্ত করুন।

সিপি-স্যাট

  • ধারাবাহিকতার জন্য কয়েকটি এপিআই নামকরণ করা হয়েছে যেমন LinearExpr.ScalProd. -> LinearExpr.WeightedSum. .
  • AddAtLeastOne / AddAtMostOne / AddExactlyOne পদ্ধতি যুক্ত করুন।
  • সমস্ত ভাষায় AddMultiplicationConstraint(z, x, y) যুক্ত করুন।
  • সমস্ত ভাষায় AddMultipleCircuit() যুক্ত করুন।

সি++

  • সুস্পষ্ট কর্টর IntVar(BoolVar)
  • LinearExpr::Add* এবং এগুলি অপারেটর দ্বারা প্রতিস্থাপন করেছেন যেমন LinearExpr +=
  • লিনিয়ার এক্সপ্রেশনটিতে পাটিগণিত অপারেটর যুক্ত করুন।
  • সরানো LinearExpr::BooleanSum/BooleanScalProd , Sum/WeightedSum ব্যবহার করুন।
  • CpModelBuilder::FixVariable() যা ভেরিয়েবলের ডোমেনটিকে একক মানকে ওভাররাইট করে।

জাভা

  • LinearExpr পুনরায় লিখুন, একটি ইনক্রিমেন্টাল বিল্ডার শ্রেণি যুক্ত করুন: LinearExpr.newBuilder().add(x).addSum(&lt;array of variables&gt;).build()
  • সি ++ এপিআই অনুসরণ করুন: Circuit , MultipleCircuit , Cumulative , Reservoir , AllowedAssignment এবং ForbiddenAssignment এখন নতুন ভেরিয়েবল, শর্তাদি, দাবি যুক্ত করতে ইনক্রিমেন্টাল এপিআই সহ একটি বিশেষ শ্রেণি ফিরিয়ে দিন ...

  • সমস্ত পদ্ধতি নথি।
  • সি ++ এপিআই অনুসরণ করুন: Circuit , MultipleCircuit , Cumulative , Reservoir , AllowedAssignment এবং ForbiddenAssignment এখন নতুন ভেরিয়েবল, শর্তাদি, দাবি যুক্ত করতে ইনক্রিমেন্টাল এপিআই সহ একটি বিশেষ শ্রেণি ফিরিয়ে দিন ...
  • ক্রমবর্ধমান অভিব্যক্তি তৈরি করতে LinearExprBuilder শ্রেণি যুক্ত করুন।

সিস্টেম তৈরি করুন

সিমেক

  • কমপক্ষে Cmake> = 3.18 প্রয়োজন।

তৈরি করুন

  • এখন অভ্যন্তরীণভাবে সিএমএকে ভিত্তিক বিল্ড ব্যবহার করুন।

ডিসেম্বর 2021

ওআর-সরঞ্জাম v9.2 প্রকাশের ঘোষণা দিচ্ছে

আমরা ওআর-টুলগুলি v9.2 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, ওআর-সরঞ্জাম ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

প্ল্যাটফর্ম পরিবর্তন

  • উবুন্টু 21:10 এর জন্য সমর্থন যুক্ত করুন (সর্বশেষ রোলিং রিলিজ)।

নির্ভরতা আপডেট

  • .NET TFM আপডেট নেট 5.0 -> নেট 6.0 (প্রয়োজন .NET এসডিকে 6.0 এলটিএস এবং .NET এসডিকে 3.1 এলটিএস)।
  • অ্যাবসিল -সিপিপি 20210324.2 -> 20211102.0।
  • প্রোটোবিএফ 3.18.0 -> 3.19.1।
  • গুগলেটস্ট 1.10.0 -> 1.11.0।
  • পাইথন: নুমপি যুক্ত করুন> = 1.13.3।
  • রানারদের ক্র্যাশ এড়াতে ম্যাকোসে কয়েন -বা -ও -O1 -এ সংকলন করুন।

রাউটিং

  • ফিল্টার উপর উন্নতি।
  • প্রথম সমাধান হিউরিস্টিক্স উন্নত করুন।
  • সময় বিরতি স্থাপনের উন্নতি করুন।

সিপি-স্যাট

ব্রেকিং পরিবর্তন

  • অন্তর্নিহিত প্রোটোকল বাফার পূর্ববর্তী সংস্করণগুলির সাথে বেমানান। যে কোনও সঞ্চিত প্রোটোকল বাফারকে আপডেট হওয়া বিল্ডার এপিআই (সি ++, পাইথন, জাভা, এবং .NET) এর সাথে পুনরায় উত্পন্ন করতে হবে
  • বিশেষত, আমরা পুরাতন ক্ষেত্রগুলি (শুরু, আকার এবং শেষ) সরিয়ে ফেলার সাথে সাথে বিরতি প্রোটোবুফ পরিষ্কার ছিল এবং অপসারণ ক্ষেত্রগুলির নাম ব্যবহার করতে নতুনগুলির নামকরণ ( _view ব্যবহার করে) নামকরণ করেছি।

নতুন বৈশিষ্ট

  • all_different , reservoir , modulo , multiplication এবং division সীমাবদ্ধতাগুলি অ্যাফাইন এক্সপ্রেশনগুলি গ্রহণ করে ( a * var + b ) যেখানেই এটির পূর্ণসংখ্যার ভেরিয়েবল প্রয়োজন।
  • উদ্দেশ্যটি ভাসমান পয়েন্ট সহগকে গ্রহণ করে (সি ++/জাভা/.NET এ DoubleLinearExpr ক্লাসটি দেখুন। পাইথনে knapsack_2d_sat.py উদাহরণ দেখুন)।
  • no_overlap_2d সীমাবদ্ধতা al চ্ছিক অন্তর সমর্থন করে।
  • সি ++ এপিআই এক্সপ্রেশনগুলি তৈরি করতে + এবং * অপারেটরগুলি প্রয়োগ করে।

উন্নতি

  • উন্নত প্রজ্বল কোড।
  • কঠোর মডেল চেকার।
  • পুনরায় কাজ জলাধার সীমাবদ্ধতা।
  • No_overlap_2d সীমাবদ্ধতার জন্য শক্তিশালী কাট যুক্ত করুন।
  • এনকোডিং সীমাবদ্ধতার উন্নত লিনিয়ার শিথিলকরণ ( literal implies var == value )।

অবচয় এবং অপসারণ পদ্ধতি

  • অবমূল্যায়িত সি ++ BooleanSum এবং BooleanScalProd । শুধু Sum এবং ScalProd ব্যবহার করুন।
  • সরানো সি ++ AddLinMinEquality এবং AddLinMaxEquality । কেবল AddMinEquality এবং AddMaxEquality ব্যবহার করুন।

ভবিষ্যতের অসম্পূর্ণতা

  • ভবিষ্যতে এক পর্যায়ে, আমরা জাভা মডেলিং স্তরটি সি ++ স্তরটির কাছাকাছি থাকতে পুনরায় লিখব।
  • সি ++ মডেলিং স্তরে, আমরা ইন্টভার (বুলভার ভিএআর) কর্টরটি স্পষ্ট করে তুলব।
  • আমরা পাইথন এপিআই পিইপি 8 অনুগত (স্নেক_কেস নাম ব্যবহার করে) তৈরির কথা ভাবছি। যদি এটি ঘটে থাকে তবে আমরা কোডটি পোর্ট করার জন্য একটি এসইডি ফাইল সরবরাহ করব।

সিস্টেম তৈরি করুন

বাজেল

  • উইন্ডোজ বিল্ড ঠিক করুন।

সিমেক

  • FETCH_PYTHON_DEPS বিকল্প (ডিফল্ট ON ) যুক্ত করুন।
  • জিপিএলকে সলভারের জন্য al চ্ছিক সমর্থন যুক্ত করুন (ডিফল্ট -DUSE_GLPK=OFF )।

পাইথন

  • বেশিরভাগ সিপি-স্যাট এপিআইতে numpy পূর্ণসংখ্যার সমর্থন করুন।
  • নিখোঁজ __version__

সেপ্টেম্বর 2021

ওআর-সরঞ্জাম v9.1 প্রকাশের ঘোষণা দিচ্ছে

আমরা ওআর-টুলগুলি v9.1 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, ওআর-সরঞ্জাম ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

প্ল্যাটফর্ম পরিবর্তন

  • পাইথন: manylinux2014 চিত্রটি ব্যবহার করুন ( পেপ 599 দেখুন)।
  • পাইথন: manylinux2014_aarch64 চিত্র ব্যবহার করে এআরচ 64 লিনাক্সের জন্য সমর্থন যুক্ত করুন।
  • .NET: যুক্ত করুন .NET 5.0 সমর্থন।

নির্ভরতা আপডেট

  • অ্যাবসিল -সিপিপি 20210324.1 -> 20210324.2।
  • প্রোটোবিএফ 3.15.8 -> 3.18.0।
  • স্কিপ 7.0.1 -> মাস্টার।
  • গুগলেটস্ট 1.8.0 -> 1.10.0।
  • পাইথন: cp_model.py -তে warning ব্যবহার (দেখুন #2530 )।
  • পাইথন: এবিএসএল -পিওয়াই 0.11 -> 0.13।

সিমেক

  • বাম্প ন্যূনতম সংস্করণ প্রয়োজন 3.14 -> 3.15 (দেখুন #2528 )।
  • পাইথন: বাম্প ন্যূনতম প্রয়োজনীয় সংস্করণ 3.14 -> 3.18 (দেখুন #2774 )।

তৈরি করুন

মেক ভিত্তিক বিল্ডটি হ্রাস করা হয়েছে, উত্স থেকে তৈরি করতে দয়া করে সিএমকে বা বাজেলে স্থানান্তর করুন।

জাভা

  • নেটিভ লাইব্রেরি লোডারের দৃ ust ়তা উন্নত করুন (দেখুন #2742 )।
  • রাউটিং মডেল বা সীমাবদ্ধ সমাধানকারী নিষ্পত্তি করার সময় জেভিএম আবর্জনা সংগ্রাহক ক্র্যাশটি ঠিক করুন (দেখুন #2091 দেখুন) (দেখুন #2466 )।
  • একাধিক কর্মী ব্যবহার করার সময় সিপি-স্যাট লগিং কলব্যাক ক্র্যাশটি ঠিক করুন ( #2775 দেখুন)।

সিপি-স্যাট

  • এলএনএস কোডের দৃ ust ়তা উন্নত করুন (দেখুন #2525 )।
  • সময়সূচী কোডটি উন্নত করুন: স্থির আকারের অন্তরগুলি, নতুন অনুসন্ধান হিউরিস্টিকস, উন্নত প্রিকভ এবং নতুন লিনিয়ার কাটগুলি তৈরি করতে নতুন কারখানার পদ্ধতি।
  • রাউটিং কোডটি উন্নত করুন: নতুন ডেডিকেটেড এলএনএস।
  • মডেল চেকার উন্নতি করুন। এটি এখন আরও পেডেন্টিক, বিশেষত ডাব্লুআরটি সম্ভাব্য ওভারফ্লো।
  • এমআইপি কোডটি উন্নত করুন: এমআইপি এবং সিপি মডেলের লিনিয়ার শিথিলকরণের জন্য আরও ভাল প্রেক্ষাপট এবং একাধিক উন্নতি।
  • অনুসন্ধানের বৈচিত্র্য উন্নত করুন। 12 টিরও বেশি কর্মী ব্যবহার করার সময়, উদ্দেশ্যটির নীচের সীমাটি উন্নত করার জন্য নিবেদিত কর্মী যুক্ত করুন।
  • সমান্তরালতা কোডে পরিবর্তন করুন: ডিফল্টরূপে, সলভার এখন সমস্ত উপলব্ধ কোর ব্যবহার করবে। সমান্তরালতার স্তর নির্দিষ্ট করতে num_search_parameters ব্যবহার করুন।
  • SearchAllSolutions অবমূল্যায়ন করুন এবং SolveWithSolutionCallback
  • পাইথন এপিআই: var == ... বা var != ... একটি model.Add() কল করার সময় আরও পেডেন্টিক চেকগুলি।

এপ্রিল 2021

ওআর-সরঞ্জাম v9.0 প্রকাশের ঘোষণা দিচ্ছে

আমরা or-সরঞ্জাম v9.0 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, ওআর-সরঞ্জাম ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

নির্ভরতা আপডেট

জাভা

  • ওআর-সরঞ্জামগুলি এখন ম্যাভেন সেন্ট্রালে উপলভ্য ( Com.google.ortools: ortools-java দেখুন)।

বাগ ফিক্স

  • সিপি-স্যাট সলভার ব্যবহার করার সময় মাল্টি-থ্রেডিং উন্নত করুন (দেখুন #1588 )।
  • std::vector&ltstd::string&gt (দেখুন #2453 দেখুন) এর পাইথন র‌্যাপার সমর্থন ঠিক করুন।
  • পুনরায় কাজ সিপ্লেক্স সমর্থন (দেখুন #2470 )।

পরিচিত ব্রেকিং পরিবর্তন

  • পাইথন, জাভা এবং .NET এ লগার অ্যাক্সেস যুক্ত করুন (দেখুন #2245 )।
  • cstdint সরবরাহিত সমস্ত কাস্টম গুগল টাইপের প্রতিস্থাপন।

সিপি-স্যাট

  • পদ্ধতিগুলি SearchForAllSolutions() , SearchAllSolutions() এবং SolveWithSolutionCallback() হ্রাস করা হয়। পরিবর্তে Solve() ব্যবহার করুন।
  • পাইথন স্ট্যান্ডার্ড অপারেটরদের সমর্থন উন্নত করুন। এটি ভুল বিদ্যমান কোডটি ভাঙতে পারে।

মার্চ 2021

ওআর-সরঞ্জামগুলি v8.2 প্রকাশের ঘোষণা দিচ্ছে

আমরা or-Tools v8.2 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, ওআর-সরঞ্জাম ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

নির্ভরতা আপডেট

রাউটিং

  • যুক্ত RoutingModel.RegisterTransitMatrix() এবং RoutingModel.RegisterUnaryTransitVector()
  • RoutingModel.AddVectorDimension() এবং RoutingModel.AddMatrixDimension() এর std::pair&ltint, bool&gt রিটার্ন পরিবর্তন করুন যার int ট্রানজিট মূল্যায়নকারী আইডি।

ডিসেম্বর 2020

ওআর-সরঞ্জাম v8.1 প্রকাশের ঘোষণা দিচ্ছে

আমরা or-সরঞ্জাম v8.1 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, ওআর-সরঞ্জাম ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

নির্ভরতা আপডেট

  • অ্যাবসিল-সিপিপি 20200923 20200923.2 এলটিএসে আপডেট হয়েছে।
  • প্রোটোবিএফ 3.13.0 3.14 এ আপডেট হয়েছে।
  • গুরোবি 9.1.0 এর জন্য সমর্থন যুক্ত করুন
  • গ্লোগ নির্ভরতা ড্রপ করুন (অ্যাবসিল-সিপিপি পতাকাগুলির উপর নির্ভর করে একটি কাস্টম বাস্তবায়ন দ্বারা প্রতিস্থাপিত)
  • জিএফএলএজি নির্ভরতা ড্রপ করুন (অ্যাবসিল-সিপিপি পতাকা উপাদান দ্বারা প্রতিস্থাপিত)

বাগ ফিক্স

  • গুরোবি ফ্লোটিং লাইসেন্সের ডাবল গণনা ঠিক করুন (দেখুন #2227 )।
  • উইন্ডোজ বিল্ড ঠিক করুন ( #2200 দেখুন)।

অক্টোবর 2020

ওআর-সরঞ্জামগুলি v8.0 প্রকাশের ঘোষণা দিচ্ছে

আমরা or-সরঞ্জাম v8.0 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, ওআর-সরঞ্জাম ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

প্ল্যাটফর্ম পরিবর্তন

  • পাইথন 3.9 এর জন্য সমর্থন যুক্ত করা হয়েছে ( #2187 )
  • পাইথন 3.5 ( #2186 ) <!-এর জন্য মাইক্রোসফ্ট ডটনেট-এসডিকে সমর্থন অপেক্ষা করা সমর্থন, রিলিজ শেষ হওয়ার পরে তৈরি করা যেতে পারে ...
    • উবুন্টু 20.10 ( #2188 ) -> এর জন্য সমর্থন যুক্ত করা হয়েছে
  • উবুন্টু 16.04 এলটিএস ( #2188 ) এর জন্য সমর্থন বাদ দিয়েছে
  • উবুন্টু 19.10 ( #2188 ) এর জন্য সমর্থন বাদ দেওয়া

নির্ভরতা আপডেট

পরিচিত ব্রেকিং পরিবর্তন

  • এখন, রাউটিং এবং সিপি-স্যাট উত্স কোড কিছু C++17 বৈশিষ্ট্য ব্যবহার করে। সতর্কতা: আপনি যদি abseil-cpp র নিজস্ব সংস্করণ সরবরাহ করেন তবে দয়া করে এটি C++17 এর বিপরীতে নির্মিত হয়েছে তা যাচাই করুন।
  • MPSolver::CreateSolver স্বাক্ষর পরিবর্তন করা হয়েছে। মডেল নাম যুক্তি বাদ দেওয়া হয়েছে।

সিমেক

  • -DUSE_SCIP=OFF ব্যবহার করার সময় স্কিপ সমর্থন অক্ষম করা ঠিক করুন (দেখুন #2129 )।
  • সিএমইকে বিল্ড সিস্টেমে নমুনা এবং উদাহরণগুলি সংহত করুন। দ্রষ্টব্য: -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 প্রয়োজন (সিএমএইকে -ভারবোজ বিকল্পের ব্যবহার) প্রয়োজন।
  • -DUSE_SCIP=OFF ব্যবহার করে স্কিপ সমর্থন অক্ষম করতে বিকল্প যুক্ত করুন ( #2134 দেখুন)।
  • -DUSE_COINOR=OFF ব্যবহার করে সিএলপি এবং সিবিসি সমর্থন অক্ষম করতে বিকল্প যুক্ত করুন।

জাভা

  • বা-সরঞ্জামগুলি এখন মাভেন প্যাকেজগুলি তৈরি করে (দেখুন #202 )।

বাগ ফিক্স

  • ফ্রিবিএসডি -তে সি ++ এবং পাইথন বিল্ড ফিক্স করুন (দেখুন #2126 )।
  • উইন্ডোজে ডিবাগ ইন বিল্ড ফিক্স করুন (দেখুন #2077 )।
  • উইন্ডোজের সিপি-শিটের সমান্তরালে দীর্ঘস্থায়ী ক্র্যাশটি ঠিক করুন (দেখুন #2001 , #2019 )।

জুলাই 2020

ওআর-সরঞ্জাম v7.8 প্রকাশের ঘোষণা দিচ্ছে

আমরা or-সরঞ্জাম v7.8 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, ওআর-সরঞ্জাম ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

নির্ভরতা আপডেট

  • গুরোবি 9.0.2 এখন প্রাক-একীভূত বাইনারিগুলিতে প্রাক-সংহত। এটি ম্যাক ওএস এক্স এবং উইন্ডোজে গুরুবি ইনস্টলারদের ডিফল্ট ইনস্টল পাথ বা গুরুবি_হোম ডিরেক্টরিতে গুরুবি 90 ভাগ করা লাইব্রেরির সন্ধান করবে।
  • এসসিআইপি 7.0.1 এখন প্রিপুয়েল্ট বাইনারিগুলিতে সংহত করা হয়েছে। এসসিআইপি লাইসেন্সটি ব্যবহারের আগে সম্মতি নিশ্চিত করুন।
  • Al চ্ছিক এক্সপ্রেস সলভার 8.9.0 এর জন্য সমর্থন যুক্ত করা হয়েছে।

রৈখিক সমাধানকারী

  • ইন্টিগ্রেটেড লিনিয়ার সলভার ব্যাকেন্ডগুলির জন্য চেক সমর্থনকে সহজ করার জন্য একটি স্ট্যাটিক LinearSolver::CreateSolver() পদ্ধতি যুক্ত করা হয়েছে। এটি সমস্ত ভাষায় কাজ করে।

বাগ ফিক্স

  • ফ্রিবিএসডি -তে স্থির সিএমকে ভিত্তিক বিল্ড।
  • সংশ্লেষিত কাট প্রজন্মের মধ্যে স্থির সিপি-স্যাট বাছাই করা।
  • .NET র‌্যাপারে স্থির লিনিয়ার সলভার মেমরি ফাঁস।

জুন 2020

ওআর-সরঞ্জামগুলি v7.7 প্রকাশের ঘোষণা দিচ্ছে

আমরা or-সরঞ্জাম v7.7 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, ওআর-সরঞ্জাম ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

নির্ভরতা আপডেট

নতুন বৈশিষ্ট্য এবং উন্নতি

  • সিপি-স্যাট সলভার এখন একটি সন্তুষ্টি মডেল (অর্থাত্ উদ্দেশ্য ছাড়াই) Feasible পরিবর্তে Optimal ফিরে আসে।
  • এমআইপি সম্প্রদায়ের কাছ থেকে সম্ভাব্যতা পাম্প হিউরিস্টিক যুক্ত করেছে।

বাগ ফিক্স

স্থির সিপি-স্যাট মাল্টি-থ্রেডিং ক্র্যাশ (দেখুন #2005 )।

এপ্রিল 2020

ওআর-সরঞ্জামগুলি v7.6 প্রকাশের ঘোষণা দিচ্ছে

আমরা ওআর-টুলগুলি v7.6 প্রকাশ করেছি। আপনার সংস্করণ আপডেট করতে, ওআর-সরঞ্জাম ইনস্টলেশনের উপযুক্ত বিভাগটি দেখুন।

সিপি-শিট নতুন বৈশিষ্ট্য

আমরা সিপি-স্যাট সলভারে নিম্নলিখিত নতুন বৈশিষ্ট্যগুলি যুক্ত করেছি:

  • এলপিএসের জন্য প্লেন কাটার উন্নত পরিচালনা।
  • ডিবাগিং সরঞ্জাম।

নির্ভরতা আপডেট

অ্যাবসিল-সিপিপি 8 বিএ 96 এ 8 বি 832 ডিসিইতে আপডেট হয়েছে (এলটিএস 20200225)।

বাগ ফিক্স

  • Fixed CP-SAT UNSAT bug in presolve (see #1908 ).
  • Fixed swigwin.exe url.
  • Fixed SWIG typemap management for Java and .Net.

জানুয়ারী 2020

Announcing the release of OR-Tools v7.5

We have released OR-Tools v7.5. To update your version, see the appropriate section of OR-Tools Installation .

প্ল্যাটফর্ম পরিবর্তন

  • Added support for Python 3.8 ( #1719 )
  • Dropped support compilation from sources on Visual Studio 2017 ( #1852 ).
  • Updated support from Centos 7 to Centos 8 ( #1827 ).

Dependency update

বাগ ফিক্স

The following issues have been fixed in OR-Tools v7.5 (For a complete list see Milestone v7.5 ).

নির্দিষ্টভাবে:

  • Fixed Assembly loading. See #1421 .
  • Exposed the GetStartIndex() and GetEndIndex() methods of RouteIndexManager ( #1843 ).
  • Fixed SWIG to remove broken methods ( #1838 , #1276 ).

অক্টোবর 2019

Announcing the release of OR-Tools v7.4

We have released OR-Tools v7.4. To update your version, see the appropriate section of OR-Tools Installation .

নতুন বৈশিষ্ট্য এবং উন্নতি

  • The CP-SAT solver now checks for constraints that do not support enforcement literals. The model checker will return an error before solving if such a constraint has an enforcement literal.
  • Better and faster local search for the routing library.
  • The linear solver now supports the third-party software Xpress-MP. You will need to rebuild OR-Tools from source to use it.
  • The architecture of the NuGet package has been completely rewritten. In particular, it now supports the .NET framework >= 4.5.2 on Windows platforms.

Deprecated platform

As announced in the July 2019 release notes, OR-Tools no longer supports Python 2.7.

Dependency update

Protobuf 3.9.0 has been updated to 3.10.0.

আগস্ট 2019

Announcing the release of OR-Tools v7.3

We have released OR-Tools v7.3. To update your version, see the appropriate section of OR-Tools Installation .

Deprecated platform

We're deprecating support for Python 2.7 to align with Google's move to Python 3. This will be the last release of OR-Tools supporting Python 2.7.

Dependency update

Protobuf 3.8.0 has been updated to 3.9.0.

বাগ ফিক্স

The following issues have been fixed in OR-Tools v7.3. (For a complete list see Kanban v7.3 ).

নির্দিষ্টভাবে:

  • Fixed init/int64 cast issue on Java ( #1448 ),
  • Fixed presolve check when processing empty cumulative constraints.

জুলাই 2019

Announcing the release of OR-Tools v7.2

We have released OR-Tools v7.2. To update your version, see the appropriate section of OR-Tools Installation .

প্ল্যাটফর্ম পরিবর্তন

  • We're deprecating support for Python 2.7 to align with Google's move to Python 3. There will be at most one more release of OR-Tools supporting Python 2.7.
  • Ubuntu 18.10 updated to Ubuntu 19.04.
  • Added support for compilation from sources on Visual Studio 2019.
  • Python 3.5 is no longer supported on Windows; please use Python 3.6 or higher.

Updates to dependencies

  • We now target CBC 2.10.3.
  • We now target Protobuf 3.8.0.

CP-SAT

  • We have made multiple improvements to search, parallelism, and the linear relaxation.
  • Added LinearExpr.Sum() and LinearExpr.ScalProd() APIs in Python.
  • Deprecated IntVar[].Sum() and IntVar[].ScalProd() APIs in C#.
  • C++: Removed SolveWithModel() as it was a duplicate of SolveCpModel() .
  • Added CpModel.addGreaterThan() and CpModel.addLessThan() methods to the Java API.

Linear solver

  • Added MPSolver.SetHint() for Python, Java, and C# (supported by SCIP and Gurobi).
  • Added MPSolver.SetNumThreads() for Python, Java, and C# (supported by CBC, Gurobi, and SCIP).
  • Rewrote support for SCIP 6.0.1.

রেফারেন্স ডকুমেন্টেশন

  • We have added doxygen and pdoc3 based reference manuals for all languages and all tools (algorithms, routing, graph, linear_solver, and CP-SAT). See OR-Tools Reference Manuals .
  • Reference documentation is complete for C++ (all products) and CP-SAT (C++, Python, Java).
  • We are in the process of exporting all C++ documentation to Python and Java.
  • .NET documentation is lacking, and we have no solution in the foreseeable future to improve this. We have kept it as it still shows the available API.

মে 2019

Announcing the release of OR-Tools v7.1

We have released OR-Tools v7.1. To update your version, see the appropriate section of OR-Tools Installation .

Changes to required dependencies

OR-Tools v7.1 has the following new and updated dependencies:

  • glog v0.3.5 updated to v0.4.0
  • protobuf v3.6.1 updated to v3.7.1
  • Cbc 2.9.9 updated to 2.10.1
  • Cgl 0.59.10 updated to 0.60.1
  • Clp 1.16.11 updated to 1.77.1
  • Osi 0.107.9 updated to 0.108.1
  • CoinUtils 2.10.14 updated to 2.11.1

CP-SAT API changes

The following sections describe changes to the CP-SAT API in OR-Tools 7.1.

Using Domain to create variables

The following examples show how to create an integer variable with non-contiguous domains. This replace the removed method NewEnumeratedIntVar() . Here, the variable x can be any of 1, 3, 4, or 6:

পাইথন

model.NewIntVarFromDomain(cp_model.Domain.FromValues([1, 3, 4, 6]), 'x')

সি++

model.NewIntVar(Domain::FromValues({1, 3, 4, 6}));

জাভা

model.newIntVarFromDomain(Domain.fromValues(new long[] {1, 3, 4, 6}), "x");

সি#

model.NewIntVarFromDomain(Domain.FromValues(new long[] {1, 3, 4, 6}), "x");

Variables can also be created using a list of intervals. Below, the variable x is constrained to be 1, 2, 4, 5, or 6:

পাইথন

model.NewIntVarFromDomain(cp_model.Domain.FromIntervals([[1, 2], [4, 6]]), 'x')

সি++

model.NewIntVar(Domain::FromIntervals({ {1, 2}, {4, 6} }));

জাভা

model.newIntVarFromDomain(Domain.fromIntervals(new long[][] { {1, 2}, {4, 6} }), "x");

সি#

model.NewIntVarFromDomain(Domain.FromIntervals(new long[][] { new long[] {1, 2}, new long[] {4, 6} }), "x");

Using Domain in linear expression

The following examples show how to limit a linear expression on a non-contiguous domain. Here, the linear expression linear_expr is defined on 5, 6, 8, 9 and 10:

পাইথন

model.AddLinearExpressionInDomain(linear_expr, cp_model.Domain.FromIntervals([(5, 6), (8, 10)]))

সি++

model.AddLinearConstraint(linear_expr, Domain::FromIntervals({ {5, 6}, {8, 10} }))

জাভা

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} }));

Using linear expression helpers

The following examples show how to use helper methods to create sums and scalar products. Here, an examples where we want x + y == 20 and 4 * x + 2 * y = 56 :\

পাইথন

model.Add(x + y == 20)
model.Add(4 * x + 2 * y == 56)

সি++

cp_model.AddEquality(LinearExpr::Sum({x, y}), 20);
cp_model.AddEquality(LinearExpr::ScalProd({x, y}, {4, 2}), 56);

জাভা

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

Announcing the release of OR-Tools v7.0

We have released OR-Tools v7.0. To update your version, see the appropriate section of OR-Tools Installation .

Changes to supported platforms

OR-Tools v7.0 no longer supports the following platforms:

  • Visual C++ 2015
  • উবুন্টু 14.04
  • Python 3.4 on Linux

If you are using one of these platforms, you can still install OR-Tools v6.10 .

Changes to required dependencies

OR-Tools v7.0 has the following new and updated dependencies:

The following sections describe the new features and improvements in OR-Tools 7.0.

New index manager for routing programs

In OR-Tools v7.0, vehicle routing programs must use the new RoutingIndexManager . This ensures that the standard indices for locations are consistent with the internal indices used by the solver, and helps prevent errors in your code.

The new RoutingIndexManager requires some minor changes to routing programs, which are described in the following sections:

Include/import RoutingIndexManager

In OR-Tools 7.0, routing programs in C++ and Java must include or import the RoutingIndexManager as shown in the examples below:

সি++

#include "ortools/constraint_solver/routing_index_manager.h"

জাভা

import com.google.ortools.constraintsolver.RoutingIndexManager;

Python and C# imports are unchanged.

Declare RoutingIndexManager

In OR-Tools v7.0, routing programs must declare the RoutingIndexManager and create the routing model, as shown in the following examples:

পাইথন

manager = pywrapcp.RoutingIndexManager(num_locations, num_vehicles, depot)
routing = pywrapcp.RoutingModel(manager)

সি++

RoutingIndexManager manager(num_locations, num_vehicles, depot);
RoutingModel routing(manager);

জাভা

RoutingIndexManager manager = new RoutingIndexManager(numLocations, numVehicles, depot);
RoutingModel routing = new RoutingModel(manager);

.নেট

RoutingIndexManager manager = new RoutingIndexManager(numLocations, numVehicles, depot);
RoutingModel routing = new RoutingModel(manager);

The arguments for RoutingIndexManager are:

  • The number of locations
  • The number of vehicles
  • The index of the depot (start and end location for all vehicles)

কলব্যাক

In OR-Tools v7.0, you need to use the RoutingIndexManager to create callbacks, such as the distance callback, which you then pass to the solver. The following examples show how to create a distance callback.

পাইথন

    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)

সি++

  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);

জাভা

    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);

The method IndexToNode converts the internal location indices used by the solver to the standard indices for the distance matrix.

Instead of passing the callback directly to to solver, as in previous versions, in v7.0 you first create transit&nbsp;callback&nbsp;index , a reference to the callback, and pass that to the solver (in this case by SetArcCostEvaluatorOfAllVehicles ).

মাত্রা

The following examples show how to create a dimension for demands and capacities , which is used to solve the capacitated vehicle routing problem .

পাইথন

    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",
    )

সি++

  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");

জাভা

    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");

মুদ্রণ সমাধান

In OR-Tools v7.0, you must use the RoutingIndexManager to display the vehicle routes in a solution. The following examples show how to print solutions in all of the supported languages.

পাইথন

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)

সি++

//! @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";
}

জাভা

  /// @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);
    }

Support for VRPs with pickups and deliveries

OR-Tools v7.0 provides support for solving vehicle routing problems (VRPs) with pickups and deliveries, in which the goal is to find the shortest routes for a fleet of vehicles picking up and delivering items at various locations. You set up the problem similarly to a standard VRP, but in addition you specify a pair (i, j) of locations for each item, where i is the pickup location and j is the drop off location. The routing solver returns vehicle routes such that for each pair (i, j) , i and j are on the same route, and the vehicle visits i before j .

For an example that solves this type of problem, see Vehicle Routing with Pickups and Deliveries .

Support for lambda functions

OR-Tools v7.0 now includes support for lambda functions in C# and Java (in addition to C++ and Python, which were already supported). Lambda functions provide a convenient way to define callbacks in routing programs. However, you can define callbacks using standard functions if you feel that makes your code more readable.

The C# and Java callback examples above illustrate how to define callbacks using lambda functions.

নভেম্বর 2018

Announcing the release of version v6.10

We have released OR-Tools version 6.10. To update your version, see the appropriate section of OR-Tools Installation .

The following sections describe the new features and improvements in version 6.10.

Simplified commands for building and running programs

In version 6.10, you can build and run programs by entering commands like the following:

make run SOURCE=relative/path/to/program.cc
where <var>relative/path/to</var> is the path to the directory containing the program.

To build a program without running it, enter:

make build SOURCE=relative/path/to/program.cc
See Get Started with OR-Tools for specific instructions for running programs by language.

Support for SCIP 6.0.0

OR-Tools now provides support for SCIP 6.0.0.

বাইনারি

Binary distributions have been built using Java JDK 8 (JDK 7 for Ubuntu 14.04).

CP-SAT Solver

Update the API

  • Add C++ CP-SAT CpModelBuilder API.

উদাহরণ

Some examples have been moved.

  • Move community examples to examples/contrib .
  • Move some examples to ortools/<var>component</var>/samples (eg ortools/linear_solver/samples/simple_program.java )

সেপ্টেম্বর 2018

Announcing release of version v6.9

We have released OR-Tools version 6.9. To update your version, see the appropriate section of OR-Tools Installation .

আপডেট করা নির্ভরতা

  • Protobuf 3.5.1 -> 3.6.1.
  • SCIP 4.0 -> 6.0.

CP-SAT Solver

  • Breaking changes to the API - full details here :
  • Rename SolveWithSolutionObserver to SolveWithSolutionCallback in Python.
  • Rename NewSolution to OnSolutionCallback in class CpSolverSolutionCallback in Python. The following example shows the new way to create a solution callback in 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

  • Expose StopSearch on solution callback in Python, Java and C#. এখানে ডকুমেন্টেশন.

  • Expose ModelStats and CpSolverResponseStats in Python, Java and C#.

  • Improve Python docstring documentation. এখানে ডকুমেন্টেশন.

  • Updates to Java implementation of the solver interface and cookbook.

  • Implement modulo.

  • Change implementation of reservoir: add API with boolean to specify optional draining/filling events.

রৈখিক সমাধানকারী

  • Expose InterruptSolve in Java and C#.

CP Solver

  • Expose SolutionCollector director in C#.

পাইথন

  • Add support for Python 3.7 .
  • When compiling from source: prefer python3 over python2 when detecting python.

.নেট

  • Complete rewrite of the .NET layer.
  • Provide a Google.OrTools NetStandard 2.0 Nuget package compatible with Runtime IDentifier win-x64 , linux-x64 and osx-x64 .
  • Provide a Google.OrTools.FSharp Nuget package.
  • Add project file for all .NET examples.
  • Update all F# script examples (.fsx) to regular F# project (.fs).
  • Add documentation on .NET package build generation here .

Flatzinc

  • Add support for sets in flatzinc (using nosets.mzn).

অবদানসমূহ

  • Add support for Binder. Thanks to Kevin Mader .
  • Make DecisionVisitor a director type in Java bindings. Thanks to Jeremy Apthorp .

জুলাই 2018

Announcing release of version v6.8

We have released OR-Tools version 6.8. To update your version, see the appropriate section of OR-Tools Installation .

Announcing the CP-SAT solver

The CP-SAT solver is a new solver for constraint programming. The CP-SAT solver is faster than the original CP solver, and should be preferred for CP problems.

For examples that use the CP-SAT solver, look in the examples directory on GitHub for files that have _sat in their names.

The original CP solver will continue to be maintained for a period of time to support existing code, but it is deprecated.

New options for the CP-SAT solver

The following options for the CP-SAT solver are new in this release:

  • Local neighborhood search (LNS): Use the SatParameters.use_lns option to enable LNS.
  • Parallel search: Use the SatParameters.num_search_workers option to enable multiple threads during a search. Each thread can have different parameters, and different random seeds. This maximizes diversity, and the probability that at least one thread will find solutions.

Performance improvements to solvers

We have made performance improvements to the CP-SAT and Glop solvers.

মার্চ 2018

Announcing release of version v6.7

We have released OR-Tools version 6.7. To update your version, see the appropriate section of OR-Tools Installation .

Update to required dependencies

  • Protobuf 3.5.0 -> 3.5.1.

বিবিধ

  • Refactor base to prepare abseil-cpp integration.
  • Use of Travis CI and Appveyor continuous integration (CI) services.

SAT

  • কর্মক্ষমতা বৃদ্ধি.
  • Improves Python API.
  • Add C# API aka CpSolver.cs (EXPERIMENTAL).

গ্লপ

  • কোড রিফ্যাক্টরিং।
  • কর্মক্ষমতা বৃদ্ধি.

CMake Support (EXPERIMENTAL)

  • Add C++ OR-Tools CMake support.
  • Be able to build OR-Tools as a standalone CMake project.
  • Be able to incorporate OR-Tools into an Existing CMake project.
  • Add Python OR-Tools CMake-based build.
  • Generate Python package (wheel) using CMake.

অবদানসমূহ

  • Fix winsock2.h redefinition on windows. Thanks to Florent Tollin de Rivarol .
  • Add F# Support (EXPERIMENTAL). Thanks to Matthew Moore . Note: only available with Makefile builder.
  • Add .NET Standard Support (EXPERIMENTAL). Thanks to Ziad El Malki . Note: only available with Makefile builder.

নভেম্বর 2017

Announcing release of version v6.6

We have released OR-Tools version 6.6. To update your version, see the appropriate section of OR-Tools Installation .

Updates to required dependencies

  • Protobuf to 3.3.0 -> 3.5.0.
  • gflags to 2.2.0 -> 2.2.1.
  • CBC 2.9.8 -> 2.9.9.
  • Add Python module six (1.10) as required dependency for Python.

বাগ ফিক্স

  • Pull request #494 Name refactoring. Adding comments for IntelliSense in some editors. Thanks to Matthew Moore .
  • Pull request #516 Instruction for F# standalone binary. Thanks to Matthew Moore .
  • Improve precision in Glop.

SAT সমাধানকারী

  • Improve internal SAT solver, Fix various bugs.
  • Add a VRP constraint to the SAT solver, linked to the LP solver.
  • Change the solution observer in the SAT solver to take a CpSolverResponse as a parameter.
  • Improve the use of Glop in SAT Solver.
  • Speedup SAT-LP connection.
  • Add Reservoir constraint to the SAT cp_model protobuf format.

SAT/Python

উদাহরণ

  • Rewrite rcpsp_parser to use ProtoBuf format to store the problem.
  • Improve RCPSP parser.

অক্টোবর 2017

Announcing release of version v6.5

We have released OR-Tools version 6.5. To update your version, see the appropriate section of OR-Tools Installation .

Change in platforms

  • The pypi module py3-ortools has been merged into the ortools module. There is now only one module: 'ortools'.
  • The main format for these Python modules is now wheel files. To install OR-Tools for python from pypi, just run pip install ortools . You need a recent version of pip installed (>= 9.0.1). This should pull the latest release (v6.5).

বাগ সংশোধন করা হয়েছে

The protobuf jar file now correctly builds with compiled classes.

নতুন উদাহরণ

  • More F# examples have been contributed to the examples/fsharp directory (Thanks again to Matthew Moore).
  • Java MIP examples have also been contributed (Thanks Darian).

সেপ্টেম্বর 2017

Announcing release of version v6.4

We have released OR-Tools version 6.4. To update your version, see the appropriate section of OR-Tools Installation .

Change in platforms

  • Pypi modules on Linux platforms are now delivered as wheel files using the manylinux1 tag. Thanks to Federico Ficarelli . With this change, we have backtracked the per-linux modules introduced in the July 2017 release.

নতুন বৈশিষ্ট

  • Improved scaling method used inside GLOP.
  • Fix wrapping of evaluators in the C# routing library. Thanks to DevNamedZed .
  • Improve the performance of the flatzinc presolve for large models.
  • Use the SAT backed for flatzinc by default.
  • Improve performance of the Core based approach for the sat solver.
  • Fix bug in the linear assignment algorithm that was failing incorrectly.
  • Added F# examples in ortools/examples/fsharp.
  • Remove check for positive penalties in the routing library.

আগস্ট 2017

Announcing release of version v6.3

We have released OR-Tools version 6.3. To update your version, see the appropriate section of OR-Tools Installation .

New download files

Python wheel files for Linux are now available to download in the OR-Tools release page , along with the latest versions of all downloads.

Minizinc solver

This version contains the final sat and flatzinc code sent for the Minizinc 2017 challenge .

জুলাই 2017

Announcing release of version v6.2

We have released OR-Tools version 6.2. To update your version, see the appropriate section of OR-Tools Installation .

Change in platforms

  • We now support multiple Linux binary distributions (Ubuntu 14.04, 16.04, 17.04, CentOS 7, Debian 9).
  • Pypi modules on Linux platforms now include a tag that describes the distribution (ubuntu-14.04, ubuntu-16.04, ubuntu-17.04, centos-7, debian-9).

নতুন বৈশিষ্ট

We have added support for Docker to build linux artifacts. Go to or-tools/tools/docker and look at the Makefile to see possible targets ( make archive , make pypi , and make pypi3 ).

These commands will create an export subdirectory and add binary artifacts in it.

জুন 2017

Announcing release of version v6.1

We have released OR-Tools version 6.1. To update your version, see the appropriate section of OR-Tools Installation .

Change in platforms

  • Visual Studio 2017 is supported; Visual Studio 2013 is no longer supported.
  • macOS versions 10.9 and higher are supported.

নতুন বৈশিষ্ট

We've added a new protobuf format for our CP-SAT solver. See ortools/sat/cp_model.proto to define your model, and ortools/sat/cp_model_solver.h to solve your problem.

বাগ ফিক্স

Issue #420: We have fixed the missing __version__ attribute on Python pypi modules on all platforms.

মে 2017

Announcing release of version v6.0

We have released OR-Tools version 6.0. To update your version, see the appropriate section of OR-Tools Installation .

New directory structure in C++

We have changed the source/include structure of OR-Tools when using C++. The goal is to provide better encapsulation of the C++ include files. It also has the benefit of aligning the C++ and the Python directory structures.

  • src/ has been renamed ortools/ .
  • All #include commands in C++ files now have the prefix ortools added. #include "constraint/constraint_solver.h" is now #include "ortools/constraint/constraint_solver.h" .

নতুন বৈশিষ্ট

  • Bazel support. You can now build OR-Tools with bazel , Google's build tool. It works on Linux and Mac OS X. After downloading Bazel version 0.4.5 or later, change directory to or-tools and build the examples: bazel build examples/cpp/... .

রাউটিং

We have implemented support for breaks (eg, vehicle downtime due to drivers eating lunch) in the routing library. This feature is shown in the cvrptw_with_breaks.cc example.

SCIP support

The linear solver wrapper now supports SCIP 4.0. You now need to build SCIP first, and then tell or-tools that you will use it. নির্দেশাবলী এখানে উপলব্ধ.

GLPK support

We have also changed the way with build with GLPK. এখানে দেখো .

ক্লিনআপ

  • We have removed all usage of hash_map and hash_set in the C++ codebase as they are deprecated. They were replaced by unordered_map and unordered_set from the STL.
  • Cleanup of the C# makefiles, courtesy of Michael Powell.

জানুয়ারী 2017

Announcing release of version v5.1

We have released OR-Tools version 5.1. To update your version, see the appropriate section of OR-Tools Installation .

নতুন বৈশিষ্ট

ইনস্টল করা হচ্ছে

রাউটিং

Implemented an algorithm to compute the Held-Karp lower bound for symmetric Traveling Salesperson Problems. This enables you to compute an upper bound to the gap between the cost of a potentially non-optimal solution and the cost of the optimal solution.

সময়সূচী

Sat solver

কর্মক্ষমতা উন্নতি

  • SAT solver — Improved performance of the Sat solver, particularly for the cumulative constraint.
  • Glop solver — Improved numerical robustness of the Glop solver, which now returns even more accurate solutions to hard numerical problems.
  • Flatzinc solver
  • Greatly improved performance of the Sat backend for the flatzinc interpreter.
  • Simplified the C# flatzinc interface. For an example of the new interface, see https://github.com/google/or-tools/blob/master/examples/csharp/csfz.cs .

বাগ ফিক্স

  • Using the PathCheapestArc heuristic on routing models with a single vehicle and side constraints would sometimes cause the solver to run for an excessively long time. This was fixed by properly taking into account side-constraints.
  • In Java, the routing solver would sometimes crash when solving vehicle routing problems. This has been fixed in the latest release.

নভেম্বর 2016

Announcing release of version v5.0

We have released OR-Tools version 5.0. To update your version, see the appropriate section of OR-Tools Installation .

চলমান উদাহরণ

  • Introduced language-specific targets that make it easier to compile and run your programs, as well as the examples that come with OR-Tools.

শনি

FlatZinc

সীমাবদ্ধতা সমাধানকারী

রাউটিং

  • Implemented AddAtSolutionCallback , which is a callback called each time a solution is found during the search.
  • Removed the RoutingModel depot-less constructors. Specifying at least one depot in the routing model is now mandatory.

সেপ্টেম্বর 2016

Announcing release of version v4.4

We have released OR-Tools version 4.4. To update your version, see the appropriate section of OR-Tools Installation .

শনি

  • Extended scheduling API and modified examples (weighted_tardiness_sat, and jobshop_sat) to use it.

চিত্রলেখ

  • Added iterator traits to Graph classes.

OR-Tools distribution

  • Nuget package is supported again.

আগস্ট 2016

Announcing release of version v4.3

We have released OR-Tools version 4.3. To update your version, see the appropriate section of OR-Tools Installation .

Constraint solver

  • Implemented NotBetween method to constrain a variable to be outside a given interval.

রাউটিং

  • Added a parse of the model to check existing NotMember constraints as shown in this example , and use them in local search filters.
  • Added local search profiling.
  • Fix for local moves.

Linear solver

  • Fixed SCIP status reporting.

শনি

গ্লপ

  • Improved performance by exploiting sparsity in more stages of computation.

Flatzinc

  • Fixed bugs found by minizinc challenge.

Lp_data

  • Continued simplification of templates in iterators.

OR-Tools distribution

  • C# assemblies are now strongly named by default.
  • Upgraded to Protobuf3.0.0.
  • Added a Python script to check OR-Tools archive dependencies.

জুলাই 2016

Announcing release of version v4.2

We have released OR-Tools version 4.2. To update your version, see the appropriate section of OR-Tools Installation .

Constraint solver (routing)

  • A disjunction can now be defined with a cardinality, which is the maximum number of nodes that can be active within this disjunction. For example, if you add a disjunction with n nodes and a cardinality of k, then k nodes among the n nodes are allowed to be active. You can use the new definition of AddDisjunction to do this.
  • Added support for multiple disjunctions per node. For example, you can now add a node, N1, to many disjunctions (D1..Dm). This increases its chance of being active within any one of them. Introduced a faster routing search algorithm for problems related to disjunct time windows.
  • Added constraint solver parameters to routing model parameters and log_search to routing search parameters.
  • Local search algorithm is faster with resolving problems with disjoint time windows. Check cvrp_disjoint_tw.cc example for more details.

Glop (linear optimization)

  • Introduced a faster Simplex Algorithm.

OR-Tools distribution

  • One archive per platform, rather than individual archives for each of C++, Java, and .Net. Python archives are still hosted on pypi.
  • On pypi, we have switched to wheel (.whl) modules on Mac OS X and Windows. Introduced a MAJOR.MINOR numbering schema. These numbers are used the archive names, the version stored in Mac OS X shared libraries, Python modules, .NET assemblies. The first version we are releasing is with this schema is v4.2

জুন 2016

Announcing release of version v2016-06

We have released OR-Tools version v2016-06. To update your version, see the appropriate section of OR-Tools Installation .

সীমাবদ্ধতা সমাধানকারী

  • Removed most of the instances of the callbacks (src/base/callback.h) from the CP library.
  • Added NotMemberCt (the variable cannot belong to a set of intervals).

Routing library

  • INCOMPATIBLE CHANGE: To specify the capacity of vehicles in AddDimensionWithVehicleCapacity , you now need to pass an array (a vector in c++) instead of a callback.

GLOP

  • Change internal representation of sparse matrix.
  • কর্মক্ষমতা উন্নতি.

চিত্রলেখ

  • Rewrite Dijkstra and Bellman-Ford algorithms to replace callbacks by std::function (C++).
  • Change API of different graph implementation when iterating over arcs and nodes.

শনি

  • Remove unused core method (Resolution nodes).
  • Added drat writer to check proofs on unsatisfiability.
  • Add preprocessor.

বপ

  • Add new neighborhoods.

উদাহরণ

  • c++: getting rid of filelinereader in examples.
  • data: Add single-machine scheduling problems.

ডকুমেন্টেশন

এপ্রিল 2016

Announcing release of version v2016-04

We have released OR-Tools version v2016-04. To update your version, see the appropriate section of OR-Tools Installation .

আপডেট করা নির্ভরতা

ডিসেম্বর 2015

Announcing release of version v2015-12

We have released OR-Tools version v2015-12. To update your version, see the appropriate section of OR-Tools Installation .

সীমাবদ্ধতা সমাধানকারী

  • Broke compatibility on the Large Neighborhood Search in the CP solver (see examples/cpp/ls_api.cc , examples/python/pyls_api.py , examples/csharp/csls_api.cs , and examples/com/google/ortools/sample/LsApi.java to see the new API).
  • Cleaned up the Python wrapping. Support custom decision in the CP solver (see examples/test/test_cp_api.py to see the API in action).
  • বিভিন্ন উন্নতি এবং বাগ ফিক্স।

সেপ্টেম্বর 2015

Announcing first release on github.

Files will be stored there from now on.

Flatzinc

  • Added binary archives for the flatzinc interpreter (see www.minizinc.org ).
  • Contains a few fixes to the version used in the challenge.