陈清红
2025-04-14 880f3c0257eeb8c37761d484258fdd102a369a19
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
Quintiq file version 2.0
Component GroupPanel735
{
  #keys: '[122872.2.395514066]'
  BaseType: 'GroupPanel'
  ViewSecurity: 'LotSizes'
  GBLayout
  {
    Type: 'internal[GBLayoutDefinition]'
    Columns:
    [
      GBFlow.Column { grow: 0 id: 778 parent: 0 }
      GBFlow.Column { grow: 0 id: 107 parent: 0 }
      GBFlow.Column { grow: 128 id: 222 parent: 0 }
    ]
    Elements:
    [
      GBElement
      {
        Component => CheckBoxIsSlidingWindowsApproach
        Position { startcolumn: 778 startrow: 389 endcolumn: 107 endrow: 389 }
      }
      GBElement
      {
        Component => LabelNumberOfPeriodsInWindow
        Position { startcolumn: 778 startrow: 749 endcolumn: 778 endrow: 749 }
      }
      GBElement
      {
        Component => /EditorNumberOfPeriodsInWindow
        Position { startcolumn: 107 startrow: 749 endcolumn: 222 endrow: 749 }
      }
      GBElement
      {
        Component => LabelNumberOfPeriodsPerSlide
        Position { startcolumn: 778 startrow: 265 endcolumn: 778 endrow: 265 }
      }
      GBElement
      {
        Component => /EditorNumberOfPeriodsPerSlide
        Position { startcolumn: 107 startrow: 265 endcolumn: 222 endrow: 265 }
      }
    ]
    Gaps: [ left: 5 right: 5 top: 5 bottom: 5 inner: 5 ]
    Rows:
    [
      GBFlow.Row { grow: 0 id: 389 parent: 0 }
      GBFlow.Row { grow: 0 id: 749 parent: 0 }
      GBFlow.Row { grow: 0 id: 265 parent: 0 }
    ]
  }
  Children:
  [
    Component CheckBoxIsSlidingWindowsApproach
    {
      #keys: '[122872.2.395514069]'
      BaseType: 'CheckBox'
      ViewSecurity: 'LotSizes'
      Properties:
      [
        DataBinding: 'Dialog.Data.UseSlidingWindowsApproach'
        Shortcut: 'Alt+U'
        Text: '&Use sliding windows approach'
        Tooltip: '<HTML>When the sliding windows approach is used, the optimizer will iteratively optimize the problem. <br> In the first iteration, it will consider the lotsizes only in the first X periods (=the active window).<br> In all of the following iterations, it will slide this active window forward. <br> The lotsizes in the periods before the active window will be frozen, the lotsizes in the periods after the active window will be relaxed. <br> The optimizer will continue to slide the active window forward until it reaches the end of the horizon. </HTML>'
      ]
    }
    Component LabelNumberOfPeriodsInWindow
    {
      #keys: '[122872.2.395514067]'
      BaseType: 'Label'
      ViewSecurity: 'LotSizes'
      Properties:
      [
        Alignment: 'right'
        FocusControl: 'EditorNumberOfPeriodsInWindow'
        Shortcut: 'Alt+W'
        Text: 'Number of periods in &window'
        Tooltip: 'The number of periods in the active window. This is the number of periods for which the lotsizes will be considered simultaneously.'
        Transparent: true
      ]
    }
    #child: EditorNumberOfPeriodsInWindow
    Component LabelNumberOfPeriodsPerSlide
    {
      #keys: '[122872.2.395514068]'
      BaseType: 'Label'
      ViewSecurity: 'LotSizes'
      Properties:
      [
        Alignment: 'right'
        FocusControl: 'EditorNumberOfPeriodsPerSlide'
        Shortcut: 'Alt+L'
        Text: 'Number of periods per s&lide'
        Tooltip: 'Number of periods that the active window moves forward in each slide.'
        Transparent: true
      ]
    }
    #child: EditorNumberOfPeriodsPerSlide
  ]
  Properties:
  [
    Text: 'Sliding windows approach'
    ModeledStringList ChildOrdering
    {
      c: CheckBoxIsSlidingWindowsApproach
      c: EditorNumberOfPeriodsInWindow
      c: LabelNumberOfPeriodsInWindow
      c: EditorNumberOfPeriodsPerSlide
      c: LabelNumberOfPeriodsPerSlide
    }
  ]
}