yanweiyuan3
2023-08-09 588bc7829387dfc761cc25f06f77d4c81818bd10
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
Quintiq file version 2.0
#parent: #root
StaticMethod ParseBenchmarkName (
  String name,
  output Number endproductstoadd,
  output Number intermediatetoadd,
  output Number periodstoadd,
  output Boolean addtriplotsize,
  output Real usertriplotsize,
  output Boolean addptolotsize,
  output Real userptolotsize,
  output Boolean addptominqty,
  output Real userptominqty,
  output Boolean addinputlotsize,
  output Real userinputlotsize,
  output Boolean setlotcost,
  output Boolean setinventorybalancing,
  output Boolean addcapacitysmoothing,
  output Real smoothingdelta,
  output Boolean addpostponentspec,
  output Number postponementnrperiods
)
{
  TextBody:
  [*
    separator := '_'; 
    
    strlist := name.Tokenize( separator ); 
    traverse( strlist, Elements, str ) 
    {
      s := str.Tokenize( ':' ); 
      id := s.Element( 0 ) + ':';  
      val := s.Element( 1 ); 
      if (  id = Optimization::EndProductTag() ) 
      {
        endproductstoadd := [Number] val; 
      }
      else if ( id = Optimization::IntermediateProductTag() )
      {
        intermediatetoadd := [Number] val; 
      } 
      else if ( id = Optimization::PeriodsTag() ) 
      {
        periodstoadd := [Number] val; 
      }
      else if ( id = Optimization::TripLotSizeTag() ) 
      {
        usertriplotsize := [Real]val;
        addtriplotsize := usertriplotsize > 0.0;  
      }
      else if ( id = Optimization::PTOLotSizeTag() ) 
      {
        userptolotsize := [Real]val; 
        addptolotsize := userptolotsize > 0.0; 
      }
      else if ( id = Optimization::PTOProcessMinQtyTag() ) 
      {
        userptominqty := [Real]val; 
        addptominqty := userptominqty > 0.0; 
      }
      else if ( id = Optimization::InputLotSizeTag() ) 
      {
        userinputlotsize := [Real]val;   
        addinputlotsize := userinputlotsize > 0.0; 
      }
      else if ( id = Optimization::LotCostTag() ) 
      {
        setlotcost := val = 'true';   
      }
      else if ( id = Optimization::InventoryMixBalancingTag() ) 
      {
        setinventorybalancing := val = 'true';
      }
      else if ( id = Optimization::CapacitySmoothingTag() ) 
      {
        addcapacitysmoothing := val = 'true';
      }
      else if ( id = Optimization::SmoothingDeltaTag() ) 
      {
        smoothingdelta := [Real]val;   
      }
      else if ( id = Optimization::PostponementTag() ) 
      {
        addpostponentspec := val = 'true';
      }
      else if ( id = Optimization::PostonementPeriodsTag() ) 
      {
        postponementnrperiods := [Number]val;
      }
    }
  *]
}