gravatar
kpeter (Peter Kovacs)
kpeter@inf.elte.hu
Change the default scaling factor in CostScaling (#417)
0 1 0
default
1 file changed with 3 insertions and 2 deletions:
↑ Collapse diff ↑
Ignore white space 48 line context
... ...
@@ -466,63 +466,64 @@
466 466

	
467 467
    /// @{
468 468

	
469 469
    /// \brief Run the algorithm.
470 470
    ///
471 471
    /// This function runs the algorithm.
472 472
    /// The paramters can be specified using functions \ref lowerMap(),
473 473
    /// \ref upperMap(), \ref costMap(), \ref supplyMap(), \ref stSupply().
474 474
    /// For example,
475 475
    /// \code
476 476
    ///   CostScaling<ListDigraph> cs(graph);
477 477
    ///   cs.lowerMap(lower).upperMap(upper).costMap(cost)
478 478
    ///     .supplyMap(sup).run();
479 479
    /// \endcode
480 480
    ///
481 481
    /// This function can be called more than once. All the given parameters
482 482
    /// are kept for the next call, unless \ref resetParams() or \ref reset()
483 483
    /// is used, thus only the modified parameters have to be set again.
484 484
    /// If the underlying digraph was also modified after the construction
485 485
    /// of the class (or the last \ref reset() call), then the \ref reset()
486 486
    /// function must be called.
487 487
    ///
488 488
    /// \param method The internal method that will be used in the
489 489
    /// algorithm. For more information, see \ref Method.
490
    /// \param factor The cost scaling factor. It must be larger than one.
490
    /// \param factor The cost scaling factor. It must be at least two.
491 491
    ///
492 492
    /// \return \c INFEASIBLE if no feasible flow exists,
493 493
    /// \n \c OPTIMAL if the problem has optimal solution
494 494
    /// (i.e. it is feasible and bounded), and the algorithm has found
495 495
    /// optimal flow and node potentials (primal and dual solutions),
496 496
    /// \n \c UNBOUNDED if the digraph contains an arc of negative cost
497 497
    /// and infinite upper bound. It means that the objective function
498 498
    /// is unbounded on that arc, however, note that it could actually be
499 499
    /// bounded over the feasible flows, but this algroithm cannot handle
500 500
    /// these cases.
501 501
    ///
502 502
    /// \see ProblemType, Method
503 503
    /// \see resetParams(), reset()
504
    ProblemType run(Method method = PARTIAL_AUGMENT, int factor = 8) {
504
    ProblemType run(Method method = PARTIAL_AUGMENT, int factor = 16) {
505
      LEMON_ASSERT(factor >= 2, "The scaling factor must be at least 2");
505 506
      _alpha = factor;
506 507
      ProblemType pt = init();
507 508
      if (pt != OPTIMAL) return pt;
508 509
      start(method);
509 510
      return OPTIMAL;
510 511
    }
511 512

	
512 513
    /// \brief Reset all the parameters that have been given before.
513 514
    ///
514 515
    /// This function resets all the paramaters that have been given
515 516
    /// before using functions \ref lowerMap(), \ref upperMap(),
516 517
    /// \ref costMap(), \ref supplyMap(), \ref stSupply().
517 518
    ///
518 519
    /// It is useful for multiple \ref run() calls. Basically, all the given
519 520
    /// parameters are kept for the next \ref run() call, unless
520 521
    /// \ref resetParams() or \ref reset() is used.
521 522
    /// If the underlying digraph was also modified after the construction
522 523
    /// of the class or the last \ref reset() call, then the \ref reset()
523 524
    /// function must be used, otherwise \ref resetParams() is sufficient.
524 525
    ///
525 526
    /// For example,
526 527
    /// \code
527 528
    ///   CostScaling<ListDigraph> cs(graph);
528 529
    ///
0 comments (0 inline)