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

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

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

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

মার্চ 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.
  • CBC 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"

নতুন বৈশিষ্ট

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

রাউটিং

আমরা রাউটিং লাইব্রেরিতে বিরতি (যেমন, চালকদের মধ্যাহ্নভোজ খাওয়ার কারণে যানবাহন ডাউনটাইম) এর জন্য সমর্থন বাস্তবায়ন করেছি। এই বৈশিষ্ট্যটি 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 যানবাহনের সক্ষমতা নির্দিষ্ট করতে, আপনাকে এখন কলব্যাকের পরিবর্তে একটি অ্যারে (সি ++ তে একটি ভেক্টর) পাস করতে হবে।

গ্লোপ

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

চিত্রলেখ

  • 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 দেখুন)।
  • চ্যালেঞ্জটিতে ব্যবহৃত সংস্করণে কয়েকটি ফিক্স রয়েছে।