lazhen
2025-01-09 8afe90b633046db39042aada36b88193062f8cff
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
Quintiq file version 2.0
#parent: #root
StaticMethod CreateFor (LibOpt_Run run)
{
  Description: 'Create `LibOpt_StatisticSuboptimizerMPs` for the given "run" (`LibOpt_Run`).'
  TextBody:
  [*
    traverse( run.SuboptimizerMPs(), Elements, suboptimizermp )
    {
      nrexecutions_max := max( suboptimizermp, SnapshotMP, snapshotmp,
                               // FILTER
                               true,
                               // VALUE
                               snapshotmp.ExecutionNr()
                             );
      
      // Create MP suboptimizer statistics.
      for( executionnr := 1; executionnr <= nrexecutions_max; executionnr++ )
      {
        // Create `LibOpt_StatisticSuboptimizerMPInfeasible`.
        LibOpt_StatisticSuboptimizerMP::Create( run, typeof( LibOpt_StatisticSuboptimizerMPInfeasible ),
                                                suboptimizermp,
                                                executionnr, // ExecutionNr
                                                0            // GoalLevel (irrelevant for this statistic type)
                                              );
        
        // Create `LibOpt_StatisticSuboptimizerMPKappa`.
        LibOpt_StatisticSuboptimizerMP::Create( run, typeof( LibOpt_StatisticSuboptimizerMPKappa ),
                                                suboptimizermp,
                                                executionnr, // ExecutionNr
                                                0            // GoalLevel (irrelevant for this statistic type)
                                              );
        
        
        nrgoallevels_max := max( suboptimizermp, SnapshotMP, snapshotmp,
                                 // FILTER
                                 snapshotmp.ExecutionNr() = executionnr,
                                 // VALUE
                                 snapshotmp.NrGoalLevels()
                               );
        for( goallevel := 1; goallevel <= nrgoallevels_max; goallevel++ )
        {
          // Create `LibOpt_StatisticSuboptimizerMPRelativeGap`.
          LibOpt_StatisticSuboptimizerMP::Create( run, typeof( LibOpt_StatisticSuboptimizerMPRelativeGap ),
                                                  suboptimizermp,
                                                  executionnr, // ExecutionNr
                                                  goallevel    // GoalLevel
                                                );
        }
      }
    }
  *]
  InterfaceProperties { Accessibility: 'Extensible' }
}