or-tools 0.7.2 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2a6d267706d117ea1b3e1e76b0c74f49d28fedb300e39243ccf9d5160bcc5c76
4
- data.tar.gz: 401e862ce8f7ae97608c746df879d7b43b39738bb45293097ef0dd61363b6491
3
+ metadata.gz: 3c17039d61f01ad9e167b5e8d1b39995a1f8a1cffa20d4c3e26485e2f0cf6b19
4
+ data.tar.gz: e8e016ac25dda825bfb0115b5604dcffae4933514532a1c24659c9afe5bc5d59
5
5
  SHA512:
6
- metadata.gz: 34775f80be4bcf4fb0b039189365d66241821f9805ffa0e83f794a8c1fa00e5c3857ac90b2c98b2050004e92eb4b522155f11475b8335ac1f9f18666bd775503
7
- data.tar.gz: fb904b96d10d5e88e9cbdc2326b031f46a565589546786899797432a66487464afaf31ff86f2f3f751d24cdf1993f09a366b7f0e411f28004292de4a12272bf6
6
+ metadata.gz: 7ebd2e2454cab59523831c3d2cd073d1ab4c052c3009157784058dae07c513860658371a82edcaf77aaaf7a75a8b0153db412b2d227ce1158bdf5d9d025bacd8
7
+ data.tar.gz: d556fbc1778bc761824a3f218d5eccfae6e609ad00e80abe32a547e1ea6be39ac0dc0f5dade5f89b4a7315dc3af9a1c16524bb58e988962bc752fe5aba31c3b8
data/CHANGELOG.md CHANGED
@@ -1,3 +1,18 @@
1
+ ## 0.8.1 (2022-08-22)
2
+
3
+ - Added binary installation for Ubuntu 22.04
4
+
5
+ ## 0.8.0 (2022-08-21)
6
+
7
+ - Updated OR-Tools to 9.4
8
+ - Added binary installation for Mac ARM
9
+ - Restored support for Debian 10
10
+ - Dropped support for Ruby < 2.7
11
+
12
+ ## 0.7.3 (2022-07-23)
13
+
14
+ - Added more methods to `RoutingModel` and `RoutingDimension`
15
+
1
16
  ## 0.7.2 (2022-05-28)
2
17
 
3
18
  - Fixed library not loaded error on Mac
data/README.md CHANGED
@@ -12,7 +12,7 @@ Add this line to your application’s Gemfile:
12
12
  gem "or-tools"
13
13
  ```
14
14
 
15
- Installation can take a few minutes as OR-Tools downloads and builds. For Mac ARM, also follow [these instructions](#additional-instructions).
15
+ Installation can take a few minutes as OR-Tools downloads and builds.
16
16
 
17
17
  ## Guides
18
18
 
@@ -2263,17 +2263,6 @@ possible_tables.each do |table|
2263
2263
  end
2264
2264
  ```
2265
2265
 
2266
- ## Additional Instructions
2267
-
2268
- ### Mac ARM
2269
-
2270
- ARM binaries are not available for Mac yet, so use Homebrew to install OR-Tools before installing the gem.
2271
-
2272
- ```sh
2273
- brew install or-tools
2274
- bundle config build.or-tools --with-or-tools-dir=/opt/homebrew
2275
- ```
2276
-
2277
2266
  ## History
2278
2267
 
2279
2268
  View the [changelog](https://github.com/ankane/or-tools-ruby/blob/master/CHANGELOG.md)
data/ext/or-tools/ext.cpp CHANGED
@@ -18,13 +18,7 @@ void Init_ext()
18
18
  {
19
19
  auto m = Rice::define_module("ORTools");
20
20
 
21
- // TODO use operations_research::OrToolsVersionString() in 0.8.0
22
- m.define_singleton_function(
23
- "lib_version",
24
- []() {
25
- return std::to_string(operations_research::OrToolsMajorVersion()) + "."
26
- + std::to_string(operations_research::OrToolsMinorVersion());
27
- });
21
+ m.define_singleton_function("lib_version", &operations_research::OrToolsVersionString);
28
22
 
29
23
  init_assignment(m);
30
24
  init_bin_packing(m);
@@ -9,6 +9,7 @@ using operations_research::DefaultRoutingSearchParameters;
9
9
  using operations_research::FirstSolutionStrategy;
10
10
  using operations_research::LocalSearchMetaheuristic;
11
11
  using operations_research::RoutingDimension;
12
+ using operations_research::RoutingDisjunctionIndex;
12
13
  using operations_research::RoutingIndexManager;
13
14
  using operations_research::RoutingModel;
14
15
  using operations_research::RoutingModelParameters;
@@ -55,6 +56,19 @@ namespace Rice::detail
55
56
  };
56
57
  }
57
58
 
59
+ namespace Rice::detail
60
+ {
61
+ template<class T, class U>
62
+ class To_Ruby<std::pair<T, U>>
63
+ {
64
+ public:
65
+ VALUE convert(std::pair<T, U> const & x)
66
+ {
67
+ return rb_ary_new3(2, To_Ruby<T>().convert(x.first), To_Ruby<U>().convert(x.second));
68
+ }
69
+ };
70
+ }
71
+
58
72
  void init_routing(Rice::Module& m) {
59
73
  auto rb_cRoutingSearchParameters = Rice::define_class_under<RoutingSearchParameters>(m, "RoutingSearchParameters");
60
74
  auto rb_cIntVar = Rice::define_class_under<operations_research::IntVar>(m, "IntVar");
@@ -198,8 +212,28 @@ void init_routing(Rice::Module& m) {
198
212
  .define_method("old_end_max", &operations_research::IntervalVar::OldEndMax);
199
213
 
200
214
  Rice::define_class_under<RoutingDimension>(m, "RoutingDimension")
215
+ .define_method("transit_value", &RoutingDimension::GetTransitValue)
216
+ // TODO GetTransitValueFromClass
217
+ .define_method("cumul_var", &RoutingDimension::CumulVar)
218
+ .define_method("transit_var", &RoutingDimension::TransitVar)
219
+ .define_method("fixed_transit_var", &RoutingDimension::FixedTransitVar)
220
+ .define_method("slack_var", &RoutingDimension::SlackVar)
221
+ .define_method("set_span_upper_bound_for_vehicle", &RoutingDimension::SetSpanUpperBoundForVehicle)
222
+ .define_method("set_span_cost_coefficient_for_vehicle", &RoutingDimension::SetSpanCostCoefficientForVehicle)
223
+ .define_method("set_span_cost_coefficient_for_all_vehicles", &RoutingDimension::SetSpanCostCoefficientForAllVehicles)
224
+ .define_method("set_global_span_cost_coefficient", &RoutingDimension::SetGlobalSpanCostCoefficient)
225
+ // alias
201
226
  .define_method("global_span_cost_coefficient=", &RoutingDimension::SetGlobalSpanCostCoefficient)
202
- .define_method("cumul_var", &RoutingDimension::CumulVar);
227
+ .define_method("set_cumul_var_soft_upper_bound", &RoutingDimension::SetCumulVarSoftUpperBound)
228
+ .define_method("cumul_var_soft_upper_bound?", &RoutingDimension::HasCumulVarSoftUpperBound)
229
+ .define_method("cumul_var_soft_upper_bound", &RoutingDimension::GetCumulVarSoftUpperBound)
230
+ .define_method("cumul_var_soft_upper_bound_coefficient", &RoutingDimension::GetCumulVarSoftUpperBoundCoefficient)
231
+ .define_method("set_cumul_var_soft_lower_bound", &RoutingDimension::SetCumulVarSoftLowerBound)
232
+ .define_method("cumul_var_soft_lower_bound?", &RoutingDimension::HasCumulVarSoftLowerBound)
233
+ .define_method("cumul_var_soft_lower_bound", &RoutingDimension::GetCumulVarSoftLowerBound)
234
+ .define_method("cumul_var_soft_lower_bound_coefficient", &RoutingDimension::GetCumulVarSoftLowerBoundCoefficient);
235
+
236
+ Rice::define_class_under<RoutingDisjunctionIndex>(m, "RoutingDisjunctionIndex");
203
237
 
204
238
  Rice::define_class_under<operations_research::Constraint>(m, "Constraint")
205
239
  .define_method("post", &operations_research::Constraint::Post)
@@ -264,27 +298,99 @@ void init_routing(Rice::Module& m) {
264
298
 
265
299
  Rice::define_class_under<RoutingModel>(m, "RoutingModel")
266
300
  .define_constructor(Rice::Constructor<RoutingModel, RoutingIndexManager, RoutingModelParameters>(), Rice::Arg("index_manager"), Rice::Arg("parameters") = operations_research::DefaultRoutingModelParameters())
301
+ .define_method("register_unary_transit_vector", &RoutingModel::RegisterUnaryTransitVector)
267
302
  .define_method(
268
- "register_transit_callback",
303
+ "register_unary_transit_callback",
269
304
  [](RoutingModel& self, Object callback) {
270
- return self.RegisterTransitCallback(
271
- [callback](int64_t from_index, int64_t to_index) -> int64_t {
272
- return Rice::detail::From_Ruby<int64_t>().convert(callback.call("call", from_index, to_index));
305
+ return self.RegisterUnaryTransitCallback(
306
+ [callback](int64_t from_index) -> int64_t {
307
+ return Rice::detail::From_Ruby<int64_t>().convert(callback.call("call", from_index));
273
308
  }
274
309
  );
275
310
  })
311
+ .define_method("register_transit_matrix", &RoutingModel::RegisterTransitMatrix)
276
312
  .define_method(
277
- "register_unary_transit_callback",
313
+ "register_transit_callback",
278
314
  [](RoutingModel& self, Object callback) {
279
- return self.RegisterUnaryTransitCallback(
280
- [callback](int64_t from_index) -> int64_t {
281
- return Rice::detail::From_Ruby<int64_t>().convert(callback.call("call", from_index));
315
+ return self.RegisterTransitCallback(
316
+ [callback](int64_t from_index, int64_t to_index) -> int64_t {
317
+ return Rice::detail::From_Ruby<int64_t>().convert(callback.call("call", from_index, to_index));
282
318
  }
283
319
  );
284
320
  })
321
+ .define_method("add_dimension", &RoutingModel::AddDimension)
322
+ .define_method("add_dimension_with_vehicle_transits", &RoutingModel::AddDimensionWithVehicleTransits)
323
+ .define_method("add_dimension_with_vehicle_capacity", &RoutingModel::AddDimensionWithVehicleCapacity)
324
+ .define_method("add_dimension_with_vehicle_transit_and_capacity", &RoutingModel::AddDimensionWithVehicleTransitAndCapacity)
325
+ .define_method("add_constant_dimension_with_slack", &RoutingModel::AddConstantDimensionWithSlack)
326
+ .define_method("add_constant_dimension", &RoutingModel::AddConstantDimension)
327
+ .define_method("add_vector_dimension", &RoutingModel::AddVectorDimension)
328
+ .define_method("add_matrix_dimension", &RoutingModel::AddMatrixDimension)
329
+ // TODO AddDimensionDependentDimensionWithVehicleCapacity
330
+ // .define_method("make_path_spans_and_total_slacks", &RoutingModel::MakePathSpansAndTotalSlacks)
331
+ .define_method("all_dimension_names", &RoutingModel::GetAllDimensionNames)
332
+ // .define_method("dimensions", &RoutingModel::GetDimensions)
333
+ // .define_method("dimensions_with_soft_or_span_costs", &RoutingModel::GetDimensionsWithSoftOrSpanCosts)
334
+ .define_method("dimension?", &RoutingModel::HasDimension)
335
+ // .define_method("dimension_or_die", &RoutingModel::GetDimensionOrDie)
336
+ .define_method("mutable_dimension", &RoutingModel::GetMutableDimension)
337
+ .define_method("set_primary_constrained_dimension", &RoutingModel::SetPrimaryConstrainedDimension)
338
+ .define_method("primary_constrained_dimension", &RoutingModel::GetPrimaryConstrainedDimension)
339
+ .define_method("add_resource_group", &RoutingModel::AddResourceGroup)
340
+ .define_method("dimension_resource_group_indices", &RoutingModel::GetDimensionResourceGroupIndices)
341
+ .define_method("dimension_resource_group_index", &RoutingModel::GetDimensionResourceGroupIndex)
342
+ .define_method("add_disjunction", &RoutingModel::AddDisjunction, Rice::Arg("indices"), Rice::Arg("penalty"), Rice::Arg("max_cardinality") = (int64_t)1)
343
+ .define_method("disjunction_indices", &RoutingModel::GetDisjunctionIndices)
344
+ .define_method("disjunction_penalty", &RoutingModel::GetDisjunctionPenalty)
345
+ .define_method("disjunction_max_cardinality", &RoutingModel::GetDisjunctionMaxCardinality)
346
+ .define_method("number_of_disjunctions", &RoutingModel::GetNumberOfDisjunctions)
347
+ .define_method("mandatory_disjunctions?", &RoutingModel::HasMandatoryDisjunctions)
348
+ .define_method("max_cardinality_constrained_disjunctions?", &RoutingModel::HasMaxCardinalityConstrainedDisjunctions)
349
+ .define_method("perfect_binary_disjunctions", &RoutingModel::GetPerfectBinaryDisjunctions)
350
+ .define_method("ignore_disjunctions_already_forced_to_zero", &RoutingModel::IgnoreDisjunctionsAlreadyForcedToZero)
351
+ .define_method("add_soft_same_vehicle_constraint", &RoutingModel::AddSoftSameVehicleConstraint)
352
+ .define_method("set_allowed_vehicles_for_index", &RoutingModel::SetAllowedVehiclesForIndex)
353
+ .define_method("vehicle_allowed_for_index?", &RoutingModel::IsVehicleAllowedForIndex)
354
+ .define_method("add_pickup_and_delivery", &RoutingModel::AddPickupAndDelivery)
355
+ .define_method("add_pickup_and_delivery_sets", &RoutingModel::AddPickupAndDeliverySets)
356
+ .define_method("pickup_index_pairs", &RoutingModel::GetPickupIndexPairs)
357
+ .define_method("delivery_index_pairs", &RoutingModel::GetDeliveryIndexPairs)
358
+ // TODO SetPickupAndDeliveryPolicyOfAllVehicles
359
+ // TODO SetPickupAndDeliveryPolicyOfVehicle
360
+ // TODO GetPickupAndDeliveryPolicyOfVehicle
361
+ .define_method("num_of_singleton_nodes", &RoutingModel::GetNumOfSingletonNodes)
362
+ .define_method("unperformed_penalty", &RoutingModel::UnperformedPenalty)
363
+ .define_method("unperformed_penalty_or_value", &RoutingModel::UnperformedPenaltyOrValue)
285
364
  .define_method("depot", &RoutingModel::GetDepot)
286
- .define_method("size", &RoutingModel::Size)
287
- .define_method("status", [](RoutingModel& self) {
365
+ .define_method("set_maximum_number_of_active_vehicles", &RoutingModel::SetMaximumNumberOfActiveVehicles)
366
+ .define_method("maximum_number_of_active_vehicles", &RoutingModel::GetMaximumNumberOfActiveVehicles)
367
+ .define_method("set_arc_cost_evaluator_of_all_vehicles", &RoutingModel::SetArcCostEvaluatorOfAllVehicles)
368
+ .define_method("set_arc_cost_evaluator_of_vehicle", &RoutingModel::SetArcCostEvaluatorOfVehicle)
369
+ .define_method("set_fixed_cost_of_all_vehicles", &RoutingModel::SetFixedCostOfAllVehicles)
370
+ .define_method("set_fixed_cost_of_vehicle", &RoutingModel::SetFixedCostOfVehicle)
371
+ .define_method("fixed_cost_of_vehicle", &RoutingModel::GetFixedCostOfVehicle)
372
+ .define_method("set_amortized_cost_factors_of_all_vehicles", &RoutingModel::SetAmortizedCostFactorsOfAllVehicles)
373
+ .define_method("set_amortized_cost_factors_of_vehicle", &RoutingModel::SetAmortizedCostFactorsOfVehicle)
374
+ .define_method("amortized_linear_cost_factor_of_vehicles", &RoutingModel::GetAmortizedLinearCostFactorOfVehicles)
375
+ .define_method("amortized_quadratic_cost_factor_of_vehicles", &RoutingModel::GetAmortizedQuadraticCostFactorOfVehicles)
376
+ .define_method("set_vehicle_used_when_empty", &RoutingModel::SetVehicleUsedWhenEmpty)
377
+ .define_method("vehicle_used_when_empty?", &RoutingModel::IsVehicleUsedWhenEmpty)
378
+ .define_method("add_variable_minimized_by_finalizer", &RoutingModel::AddVariableMinimizedByFinalizer)
379
+ .define_method("add_variable_maximized_by_finalizer", &RoutingModel::AddVariableMaximizedByFinalizer)
380
+ .define_method("add_weighted_variable_minimized_by_finalizer", &RoutingModel::AddWeightedVariableMinimizedByFinalizer)
381
+ .define_method("add_weighted_variable_maximized_by_finalizer", &RoutingModel::AddWeightedVariableMaximizedByFinalizer)
382
+ .define_method("add_variable_target_to_finalizer", &RoutingModel::AddVariableTargetToFinalizer)
383
+ .define_method("add_weighted_variable_target_to_finalizer", &RoutingModel::AddWeightedVariableTargetToFinalizer)
384
+ .define_method("close_model", &RoutingModel::CloseModel)
385
+ // solve defined in Ruby
386
+ .define_method(
387
+ "solve_with_parameters",
388
+ [](RoutingModel& self, const RoutingSearchParameters& search_parameters) {
389
+ return self.SolveWithParameters(search_parameters);
390
+ })
391
+ .define_method("compute_lower_bound", &RoutingModel::ComputeLowerBound)
392
+ .define_method("status",
393
+ [](RoutingModel& self) {
288
394
  auto status = self.status();
289
395
 
290
396
  if (status == RoutingModel::ROUTING_NOT_SOLVED) {
@@ -301,30 +407,22 @@ void init_routing(Rice::Module& m) {
301
407
  throw std::runtime_error("Unknown solver status");
302
408
  }
303
409
  })
304
- .define_method("vehicle_var", &RoutingModel::VehicleVar)
305
- .define_method("set_arc_cost_evaluator_of_all_vehicles", &RoutingModel::SetArcCostEvaluatorOfAllVehicles)
306
- .define_method("set_arc_cost_evaluator_of_vehicle", &RoutingModel::SetArcCostEvaluatorOfVehicle)
307
- .define_method("set_fixed_cost_of_all_vehicles", &RoutingModel::SetFixedCostOfAllVehicles)
308
- .define_method("set_fixed_cost_of_vehicle", &RoutingModel::SetFixedCostOfVehicle)
309
- .define_method("fixed_cost_of_vehicle", &RoutingModel::GetFixedCostOfVehicle)
310
- .define_method("add_dimension", &RoutingModel::AddDimension)
311
- .define_method(
312
- "add_dimension_with_vehicle_capacity",
313
- [](RoutingModel& self, int evaluator_index, int64_t slack_max, std::vector<int64_t> vehicle_capacities, bool fix_start_cumul_to_zero, const std::string& name) {
314
- self.AddDimensionWithVehicleCapacity(evaluator_index, slack_max, vehicle_capacities, fix_start_cumul_to_zero, name);
315
- })
316
- .define_method(
317
- "add_dimension_with_vehicle_transits",
318
- [](RoutingModel& self, std::vector<int> evaluator_indices, int64_t slack_max, int64_t capacity, bool fix_start_cumul_to_zero, const std::string& name) {
319
- self.AddDimensionWithVehicleTransits(evaluator_indices, slack_max, capacity, fix_start_cumul_to_zero, name);
320
- })
321
- .define_method(
322
- "add_disjunction",
323
- [](RoutingModel& self, std::vector<int64_t> indices, int64_t penalty) {
324
- self.AddDisjunction(indices, penalty);
325
- })
326
- .define_method("add_pickup_and_delivery", &RoutingModel::AddPickupAndDelivery)
327
- .define_method("solver", &RoutingModel::solver)
410
+ .define_method("apply_locks", &RoutingModel::ApplyLocks)
411
+ .define_method("apply_locks_to_all_vehicles", &RoutingModel::ApplyLocksToAllVehicles)
412
+ .define_method("pre_assignment", &RoutingModel::PreAssignment)
413
+ .define_method("mutable_pre_assignment", &RoutingModel::MutablePreAssignment)
414
+ .define_method("write_assignment", &RoutingModel::WriteAssignment)
415
+ .define_method("read_assignment", &RoutingModel::ReadAssignment)
416
+ .define_method("restore_assignment", &RoutingModel::RestoreAssignment)
417
+ .define_method("read_assignment_from_routes", &RoutingModel::ReadAssignmentFromRoutes)
418
+ .define_method("routes_to_assignment", &RoutingModel::RoutesToAssignment)
419
+ .define_method("assignment_to_routes", &RoutingModel::AssignmentToRoutes)
420
+ .define_method("compact_assignment", &RoutingModel::CompactAssignment)
421
+ .define_method("compact_and_check_assignment", &RoutingModel::CompactAndCheckAssignment)
422
+ .define_method("add_to_assignment", &RoutingModel::AddToAssignment)
423
+ .define_method("add_interval_to_assignment", &RoutingModel::AddIntervalToAssignment)
424
+ // TODO PackCumulsOfOptimizerDimensionsFromAssignment
425
+ // TODO AddLocalSearchFilter
328
426
  .define_method("start", &RoutingModel::Start)
329
427
  .define_method("end", &RoutingModel::End)
330
428
  .define_method("start?", &RoutingModel::IsStart)
@@ -333,12 +431,23 @@ void init_routing(Rice::Module& m) {
333
431
  .define_method("next", &RoutingModel::Next)
334
432
  .define_method("vehicle_used?", &RoutingModel::IsVehicleUsed)
335
433
  .define_method("next_var", &RoutingModel::NextVar)
434
+ .define_method("active_var", &RoutingModel::ActiveVar)
435
+ .define_method("active_vehicle_var", &RoutingModel::ActiveVehicleVar)
436
+ .define_method("vehicle_route_considered_var", &RoutingModel::VehicleRouteConsideredVar)
437
+ .define_method("vehicle_var", &RoutingModel::VehicleVar)
438
+ .define_method("resource_var", &RoutingModel::ResourceVar)
439
+ .define_method("cost_var", &RoutingModel::CostVar)
336
440
  .define_method("arc_cost_for_vehicle", &RoutingModel::GetArcCostForVehicle)
337
- .define_method("mutable_dimension", &RoutingModel::GetMutableDimension)
338
- .define_method("add_variable_minimized_by_finalizer", &RoutingModel::AddVariableMinimizedByFinalizer)
339
- .define_method(
340
- "solve_with_parameters",
341
- [](RoutingModel& self, const RoutingSearchParameters& search_parameters) {
342
- return self.SolveWithParameters(search_parameters);
343
- });
441
+ .define_method("costs_are_homogeneous_across_vehicles?", &RoutingModel::CostsAreHomogeneousAcrossVehicles)
442
+ .define_method("homogeneous_cost", &RoutingModel::GetHomogeneousCost)
443
+ .define_method("arc_cost_for_first_solution", &RoutingModel::GetArcCostForFirstSolution)
444
+ .define_method("cost_classes_count", &RoutingModel::GetCostClassesCount)
445
+ .define_method("non_zero_cost_classes_count", &RoutingModel::GetNonZeroCostClassesCount)
446
+ .define_method("vehicle_classes_count", &RoutingModel::GetVehicleClassesCount)
447
+ .define_method("arc_is_more_constrained_than_arc?", &RoutingModel::ArcIsMoreConstrainedThanArc)
448
+ .define_method("solver", &RoutingModel::solver)
449
+ .define_method("nodes", &RoutingModel::nodes)
450
+ .define_method("vehicles", &RoutingModel::vehicles)
451
+ .define_method("size", &RoutingModel::Size)
452
+ .define_method("matching_model?", &RoutingModel::IsMatchingModel);
344
453
  }
@@ -4,21 +4,15 @@ require "fileutils"
4
4
  require "net/http"
5
5
  require "tmpdir"
6
6
 
7
- version = "9.3.10497"
7
+ version = "9.4.1874"
8
8
 
9
9
  if RbConfig::CONFIG["host_os"] =~ /darwin/i
10
10
  if RbConfig::CONFIG["host_cpu"] =~ /arm|aarch64/i
11
- raise <<~MSG
12
- Binary installation not available for this platform: Mac ARM
13
-
14
- Run:
15
- brew install or-tools
16
- bundle config build.or-tools --with-or-tools-dir=/opt/homebrew
17
-
18
- MSG
11
+ filename = "or-tools_arm64_MacOsX-12.5_cpp_v#{version}.tar.gz"
12
+ checksum = "ebc185bcb0a056a2704fb1c5175d5c11cc21a7e0634be65139cea55bb6a021ce"
19
13
  else
20
- filename = "or-tools_MacOsX-12.2.1_v#{version}.tar.gz"
21
- checksum = "33941702c59983897935eef06d91aca6c89ed9a8f5f4de3a9dfe489e97d7ca8c"
14
+ filename = "or-tools_x86_64_MacOsX-12.5_cpp_v#{version}.tar.gz"
15
+ checksum = "d03c706b51a6ef7aa77886dc3f135baaac52c00803bb548c286fbdeb4a419acd"
22
16
  end
23
17
  else
24
18
  # try /etc/os-release with fallback to /usr/lib/os-release
@@ -31,22 +25,27 @@ else
31
25
  os = os_info["ID"]
32
26
  os_version = os_info["VERSION_ID"]
33
27
 
34
- if os == "ubuntu" && os_version == "20.04"
35
- # TODO remove sub in v9.4
36
- filename = "or-tools_amd64_ubuntu-20.04_v#{version.sub(".10497", ".10502")}.tar.gz"
37
- checksum = "3d1979967a2c9358b5bc956f2e6b608b00e89e13c71d48d075475ce4138b6d1c"
28
+ if os == "ubuntu" && os_version == "22.04"
29
+ filename = "or-tools_amd64_ubuntu-22.04_cpp_v#{version}.tar.gz"
30
+ checksum = "d7e222fc4f30c9864bfa3062accc8b4dd291c3166ba9cf3576c6c86eded71940"
31
+ elsif os == "ubuntu" && os_version == "20.04"
32
+ filename = "or-tools_amd64_ubuntu-20.04_cpp_v#{version}.tar.gz"
33
+ checksum = "1b09f0f60b5aab83aeec468842e4a166cd3a4e7910e807f55bc7f96d5dffabdb"
38
34
  elsif os == "ubuntu" && os_version == "18.04"
39
- filename = "or-tools_amd64_ubuntu-18.04_v#{version}.tar.gz"
40
- checksum = "6ba5cc153417267e8f8e15f8b6390b17f22de07bacc61f3740a4172ccd56c274"
35
+ filename = "or-tools_amd64_ubuntu-18.04_cpp_v#{version}.tar.gz"
36
+ checksum = "ef73ebd4ca0f82a1179fdb2aded3c2a85dfe2ab275d91b8a5b147a653ca861ab"
41
37
  elsif os == "debian" && os_version == "11"
42
- filename = "or-tools_amd64_debian-11_v#{version}.tar.gz"
43
- checksum = "db0636bab909eabf06a7004f7572dca6fa152f3823c1365b0b7428405bf250e6"
38
+ filename = "or-tools_amd64_debian-11_cpp_v#{version}.tar.gz"
39
+ checksum = "651c62147f231fb90635c522e0a2c799e3de3991c2c75f7c6acb721e7b78946c"
40
+ elsif os == "debian" && os_version == "10"
41
+ filename = "or-tools_amd64_debian-10_cpp_v#{version}.tar.gz"
42
+ checksum = "36088bc6c6fbb96539245db7cddf498f77ae3e7b7c2cc8f6d7d89d76f90751fb"
44
43
  elsif os == "centos" && os_version == "8"
45
- filename = "or-tools_amd64_centos-8_v#{version}.tar.gz"
46
- checksum = "e5649069fd7a3e8228cc18b91e265a90562c5d03a0c962b0346911aada0aedc9"
44
+ filename = "or-tools_amd64_centos-8_cpp_v#{version}.tar.gz"
45
+ checksum = "da2cb303ae332d207592f21bb504e4e2e33dc1b1e8f5747d413c082d9d05504a"
47
46
  elsif os == "centos" && os_version == "7"
48
- filename = "or-tools_amd64_centos-7_v#{version}.tar.gz"
49
- checksum = "3bffdec8c09fc1345dcbd6a553437e2894014093fafb53e50adc7d4d776bb08b"
47
+ filename = "or-tools_amd64_centos-7_cpp_v#{version}.tar.gz"
48
+ checksum = "9eaf0178467f4d2fdbe496f62223809aa43e313548cc6cb716e661c00472b4ff"
50
49
  else
51
50
  platform =
52
51
  if Gem.win_platform?
data/lib/or_tools/tsp.rb CHANGED
@@ -22,13 +22,7 @@ module ORTools
22
22
  manager = ORTools::RoutingIndexManager.new(locations.size, 1, 0)
23
23
  routing = ORTools::RoutingModel.new(manager)
24
24
 
25
- distance_callback = lambda do |from_index, to_index|
26
- from_node = manager.index_to_node(from_index)
27
- to_node = manager.index_to_node(to_index)
28
- distance_matrix[from_node][to_node]
29
- end
30
-
31
- transit_callback_index = routing.register_transit_callback(distance_callback)
25
+ transit_callback_index = routing.register_transit_matrix(distance_matrix)
32
26
  routing.set_arc_cost_evaluator_of_all_vehicles(transit_callback_index)
33
27
  assignment = routing.solve(first_solution_strategy: :path_cheapest_arc)
34
28
 
@@ -1,3 +1,3 @@
1
1
  module ORTools
2
- VERSION = "0.7.2"
2
+ VERSION = "0.8.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: or-tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.2
4
+ version: 0.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kane
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-05-28 00:00:00.000000000 Z
11
+ date: 2022-08-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rice
@@ -85,7 +85,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
85
85
  requirements:
86
86
  - - ">="
87
87
  - !ruby/object:Gem::Version
88
- version: '2.6'
88
+ version: '2.7'
89
89
  required_rubygems_version: !ruby/object:Gem::Requirement
90
90
  requirements:
91
91
  - - ">="