chenqinghong
2024-05-07 3ec06a830367465068963156dcc1d8e522571c13
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
Quintiq file version 2.0
#parent: #root
StaticMethod MergeStreams (
  CapacityPlanningSuboptimizer_CapacityPlanningAlgorithm program,
  CapacityPlanningSuboptimizer_CapacityPlanningAlgorithm clone1,
  CapacityPlanningSuboptimizer_CapacityPlanningAlgorithm clone2
)
{
  TextBody:
  [*
    start := OS::PrecisionCounter(); 
    
    program.Merge( clone1, MPMergeStrategy::SkipVariables() );
    program.Merge( clone2, MPMergeStrategy::SkipVariables() ); 
    
    end := OS::PrecisionCounter(); 
    durationmerge := (end- start)/OS::PrecisionCounterFrequency(); 
    program.StoreReal( 'type_B_constraints', clone1.RetrieveReal( 'type_B_constraints' ) ); // msg to show time needed for constraint init
    program.StoreReal( 'type_C_constraints', clone2.RetrieveReal( 'type_C_constraints' ) ); // msg to show time needed for constraint init
    program.StoreString( 'MergeDuration', 'Merge time program = ' + [String] durationmerge ); 
    
    // type B constraint init sets the following on the clone - need to copy over  
    valueboundsp := clone1.RetrieveReal( 'collect_values_model_TotalStockingPointCapacityVariables' ); 
    program.StoreReal( 'collect_values_model_TotalStockingPointCapacityVariables',  valueboundsp );
  *]
  InterfaceProperties { Accessibility: 'Module' }
}