haorenhui
2023-10-30 6d6cc10d9e8e242661da7fd655dec155a09d676c
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
Quintiq file version 2.0
Component GroupPanel541
{
  #keys: '[122872.1.1903797278]'
  BaseType: 'GroupPanel'
  GBLayout
  {
    Type: 'internal[GBLayoutDefinition]'
    Columns:
    [
      GBFlow.Column { grow: 0 id: 459 parent: 0 }
      GBFlow.Column { grow: 0 id: 714 parent: 0 }
      GBFlow.Column { grow: 128 id: 673 parent: 0 }
    ]
    Elements:
    [
      GBElement
      {
        Component => CheckBoxRunPeggingAlgorithm797
        Position { startcolumn: 714 startrow: 923 endcolumn: 673 endrow: 923 }
      }
      GBElement
      {
        Component => LabelDefaultNumberOfPeriodsForAverageDemand
        Position { startcolumn: 459 startrow: 120 endcolumn: 459 endrow: 120 }
      }
      GBElement
      {
        Component => /EditorDefaultNumberOfPeriodsForAverageDemand
        Position { startcolumn: 714 startrow: 120 endcolumn: 673 endrow: 120 }
      }
      GBElement
      {
        Component => LabelDurationInventoryMixBalancingCheck
        Position { startcolumn: 459 startrow: 135 endcolumn: 459 endrow: 135 }
      }
      GBElement
      {
        Component => GUIDurationSelectorInventoryMixBalancingFilter
        Position { startcolumn: 714 startrow: 135 endcolumn: 714 endrow: 135 }
      }
      GBElement
      {
        Component => LabelMinimumSalesDemandQuantityThreshold
        Position { startcolumn: 459 startrow: 570 endcolumn: 459 endrow: 570 }
      }
      GBElement
      {
        Component => /EditorMinimumSalesDemandQuantityThreshold
        Position { startcolumn: 714 startrow: 570 endcolumn: 673 endrow: 570 }
      }
      GBElement
      {
        Component => LabelMinTripPercentage
        Position { startcolumn: 459 startrow: 891 endcolumn: 459 endrow: 891 }
      }
      GBElement
      {
        Component => /EditorMinPercentage
        Position { startcolumn: 714 startrow: 891 endcolumn: 673 endrow: 891 }
      }
    ]
    Gaps: [ left: 5 right: 5 top: 5 bottom: 5 inner: 5 ]
    Rows:
    [
      GBFlow.Row { grow: 0 id: 923 parent: 0 }
      GBFlow.Row { grow: 0 id: 120 parent: 0 }
      GBFlow.Row { grow: 0 id: 135 parent: 0 }
      GBFlow.Row { grow: 0 id: 570 parent: 0 }
      GBFlow.Row { grow: 0 id: 891 parent: 0 }
    ]
  }
  Children:
  [
    Component CheckBoxRunPeggingAlgorithm797
    {
      #keys: '[122872.1.1903798182]'
      BaseType: 'CheckBox'
      ViewSecurity: 'Pegging'
      Properties:
      [
        DataBinding: 'Dialog.Data.IsPeggingRunAfterOptimization'
        Shortcut: 'Alt+P'
        SizePosition: 'lt176 338 110 126'
        Text: 'Run &pegging algorithm after optimizer run'
        Tooltip: 'The pegging algorithm creates explicit links between supplies to demands.'
      ]
    }
    Component LabelDefaultNumberOfPeriodsForAverageDemand
    {
      #keys: '[122872.1.1903799661]'
      BaseType: 'Label'
      ViewSecurity: 'InventoryMixBalancing'
      Properties:
      [
        Alignment: 'right'
        FocusControl: 'EditorDefaultNumberOfPeriodsForAverageDemand'
        LayoutGroup: 'LabelOptimizer'
        Shortcut: 'Alt+A'
        Text: 'Default number of periods for &average demand'
        Tooltip: '<html>The optimizer balances the products per product category based on their average demand.<br> If a target in days has been specified, then the average demand will be calculated over the next target number of days. <br>If no target in days has been specified, then the average demand will be calculated over the next X periods, where X is the default number of periods specified here.</html>'
        Transparent: true
      ]
    }
    #child: EditorDefaultNumberOfPeriodsForAverageDemand
    Component LabelDurationInventoryMixBalancingCheck
    {
      #keys: '[113400.0.1740905242]'
      BaseType: 'Label'
      ViewSecurity: 'InventoryMixBalancing'
      Properties:
      [
        Alignment: 'right'
        FocusControl: 'GUIDurationSelectorInventoryMixBalancingFilter'
        Shortcut: 'Alt+F'
        Text: 'Duration inventory mix balancing &filter'
        Tooltip: '<HTML>If the initial inventory of a product is much higher than the total sales demand, then the inventory mix balancing may force an overproduction of all other products in this category to achieve a balanced inventory. <br> In practice, this behavior is typically undesirable and therefore we want to exclude these products from balancing. <br> This duration determines which products are excluded. Any product for which the inventory supplies are greater than the total sales demand from the start of the horizon to the end of this duration will be excluded. </HTML>'
        Transparent: true
      ]
    }
    Component GUIDurationSelectorInventoryMixBalancingFilter
    {
      #keys: '[113400.0.1740906668]'
      BaseType: 'GUIDurationSelector'
      ViewSecurity: 'InventoryMixBalancing'
      Properties:
      [
        BackgroundColor: 'Window'
        DataBinding: 'Dialog.Data.DurationInventoryMixBalancingCheck'
        MinDuration: '0:00:00'
      ]
    }
    #child: EditorMinimumSalesDemandQuantityThreshold
    Component LabelMinimumSalesDemandQuantityThreshold
    {
      #keys: '[122872.2.403980700]'
      BaseType: 'Label'
      Properties:
      [
        Alignment: 'right'
        FocusControl: 'EditorMinimumSalesDemandQuantityThreshold'
        LayoutGroup: 'LabelOptimizer'
        Shortcut: 'Alt+Q'
        Text: 'Minimum sales demand &quantity (UOM)'
        Tooltip: 'The optimizer will ignore any sales demand below this threshold'
        Transparent: true
      ]
    }
    Component LabelMinTripPercentage
    {
      #keys: '[127238.1.1254775220]'
      BaseType: 'Label'
      Properties:
      [
        Alignment: 'right'
        FocusControl: 'EditorMinPercentage'
        Shortcut: 'Alt+T'
        Text: 'Usage percentage for &trip cleanup'
        Tooltip:
        [*
          <html>This parameter is used to balance the memory load versus the optimizer runtime for trip planning.<br>After an optimizer run, unused trips (i.e. quantity = 0) are removed if the percentage of used trips is below this value.
                          <br>So a higher value means unused trips are more likely to be removed, which reduces memory consumption.
                          <br>A lower value means unused trips are less likely to be removed, which speeds up the next optimizer run.</html>
        *]
        Transparent: true
      ]
    }
    #child: EditorMinPercentage
  ]
  Properties:
  [
    LayoutGroup: 'OptimizerLabel'
    Text: 'General optimizer settings'
    ModeledStringList ChildOrdering
    {
      c: CheckBoxRunPeggingAlgorithm797
      c: EditorDefaultNumberOfPeriodsForAverageDemand
      c: GUIDurationSelectorInventoryMixBalancingFilter
      c: LabelDefaultNumberOfPeriodsForAverageDemand
      c: EditorMinimumSalesDemandQuantityThreshold
      c: EditorMinPercentage
      c: LabelDurationInventoryMixBalancingCheck
      c: LabelMinimumSalesDemandQuantityThreshold
      c: LabelMinTripPercentage
    }
  ]
}