Ignore:
Timestamp:
Jan 12, 2010 10:46:49 PM (10 years ago)
Author:
jwatson
Message:

More cleanup of SIZES pysp example, and output clarification in the WW PH extension.

Location:
coopr.pysp/trunk/examples/pysp/sizes
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • coopr.pysp/trunk/examples/pysp/sizes/README.txt

    r2153 r2156  
    99SIZES10: Objective value with gap=0.12%: 224406.64  Achieved after 10+ minutes and 2.5M branch-and-bound nodes.
    1010
    11 SIZES3 EF SOLUTION (non-zero elements):
     11SIZES3 EF (OPTIMAL) SOLUTION (non-zero elements):
    1212
    1313ProduceSizeFirstStage(3)                  1.000000
     
    3434NumUnitsCutFirstStage(8,8)            12500.000000
    3535
    36 SIZES10 EF SOLUTION (non-zero elements):
     36SIZES10 EF (SUB-OPTIMAL) SOLUTION (non-zero elements):
    3737
    3838ProduceSizeFirstStage(3)                  1.000000
     
    7979
    8080The SIZES example is a great example of where fixing is needed - PH gets close to a high-quality solution quickly, but takes a long
    81 time to "polish" the solution to complete agreement.
     81time to "polish" the solution to complete agreement. Thus, acceleration can be achieved by using variable fixing and slamming; both
     82techniques are described in the PySP documentation. To use these techniques, simply add the following command-line arguments to the
     83runph invocation:
    8284
     85--enable-ww-extensions --ww-extension-cfgfile=config/wwph.cfg --ww-extension-suffixfile=config/wwph.suffixes
     86
     87With these techniques, runph yields the following performance:
     88
     89SIZES3:  Converges in 113 iterations with an objective value=224553.5936
     90SIZES10: Converges in 125 iterations with an objective value=224702.6184
     91
     92In the case of SIZES3, the acceleration comes at a slight increase in solution cost. For SIZES10, it makes convergence possible.
     93In both cases, the solutions are very high-quality relative to the EF objective function values.
  • coopr.pysp/trunk/examples/pysp/sizes/config/wwph.cfg

    r2153 r2156  
    1616# broken by variable slamming.
    1717self.CycleLengthSlamThreshold = 50
    18 
    1918     
    2019# "default" slamming parms
    21 # True and False are the options (case sensitive)
    22 #self.CanSlamToLB = False
    23 #self.CanSlamToMin = False
    24 #self.CanSlamToAnywhere = False
    25 #self.CanSlamToMax = True
    26 #self.CanSlamToUB = False
    27 #self.PH_Iters_Between_Cycle_Slams = 5
     20self.CanSlamToLB = False
     21self.CanSlamToMin = False
     22self.CanSlamToAnywhere = False
     23self.CanSlamToMax = True
     24self.CanSlamToUB = False
    2825
    2926# the next line will try to force at least one variable to be
    30 # fixed every other iteration after iteration 50
    31 # if anything can be slammed
    32 self.SlamAfterIter = 50
     27# fixed every other iteration after iteration 100 if anything
     28# can be slammed. this is a "last-resort" behavior.
     29self.SlamAfterIter = 100
    3330
     31self.PH_Iters_Between_Cycle_Slams = 5
     32
  • coopr.pysp/trunk/examples/pysp/sizes/config/wwph.suffixes

    r2153 r2156  
    1515
    1616# if the production quantities have been stable a long time, fix them.
     17NumProducedFirstStage[*] FixWhenItersConvergedAtLB 30
    1718NumProducedFirstStage[*] FixWhenItersConvergedAtNB 30
    1819
    19 #ProduceSizeFirstStage[1] SlammingPriority 1
    20 #ProduceSizeFirstStage[2] SlammingPriority 2
    21 #ProduceSizeFirstStage[3] SlammingPriority 3
    22 #ProduceSizeFirstStage[4] SlammingPriority 4
    23 #ProduceSizeFirstStage[5] SlammingPriority 5
    24 #ProduceSizeFirstStage[6] SlammingPriority 6
    25 #ProduceSizeFirstStage[7] SlammingPriority 7
    26 #ProduceSizeFirstStage[8] SlammingPriority 8
    27 #ProduceSizeFirstStage[9] SlammingPriority 9
    28 #ProduceSizeFirstStage[10] SlammingPriority 10
     20# if the number of units to cut has been frozen for a while, fix them.
     21NumUnitsCutFirstStage[*,*] FixWhenItersConvergedAtLB 30
     22NumUnitsCutFirstStage[*,*] FixWhenItersConvergedAtNB 30
     23
     24# the num produced variables are problematic to converge,
     25# so slam them to force early convergence.
     26NumProducedFirstStage[1]  SlammingPriority 1
     27NumProducedFirstStage[2]  SlammingPriority 2
     28NumProducedFirstStage[3]  SlammingPriority 3
     29NumProducedFirstStage[4]  SlammingPriority 4
     30NumProducedFirstStage[5]  SlammingPriority 5
     31NumProducedFirstStage[6]  SlammingPriority 6
     32NumProducedFirstStage[7]  SlammingPriority 7
     33NumProducedFirstStage[8]  SlammingPriority 8
     34NumProducedFirstStage[9]  SlammingPriority 9
     35NumProducedFirstStage[10] SlammingPriority 10
     36
     37NumProducedFirstStage[*] CanSlamToMax True
Note: See TracChangeset for help on using the changeset viewer.