@@ -408,24 +408,12 @@ def init(self, everest_config: EverestConfig) -> None:
408
408
)
409
409
410
410
def _store_function_results (self , results : FunctionResults ) -> _EvaluationResults :
411
- names = {
412
- "variable" : self .data .controls ["control_name" ],
413
- "objective" : self .data .objective_functions ["objective_name" ],
414
- "nonlinear_constraint" : (
415
- self .data .nonlinear_constraints ["constraint_name" ]
416
- if self .data .nonlinear_constraints is not None
417
- else None
418
- ),
419
- "realization" : self .data .realization_weights ["realization" ],
420
- }
421
-
422
411
# We could select only objective values,
423
412
# but we select all to also get the constraint values (if they exist)
424
413
realization_objectives = polars .from_pandas (
425
414
results .to_dataframe (
426
415
"evaluations" ,
427
416
select = ["objectives" , "evaluation_ids" ],
428
- names = names ,
429
417
).reset_index (),
430
418
).select (
431
419
"batch_id" ,
@@ -434,13 +422,20 @@ def _store_function_results(self, results: FunctionResults) -> _EvaluationResult
434
422
"objectives" ,
435
423
"evaluation_ids" ,
436
424
)
425
+ realization_objectives = realization_objectives .with_columns (
426
+ polars .col ("realization" ).replace_strict (
427
+ dict (enumerate (self .data .realization_weights ["realization" ]))
428
+ ),
429
+ polars .col ("objective" ).replace_strict (
430
+ dict (enumerate (self .data .objective_functions ["objective_name" ]))
431
+ ),
432
+ )
437
433
438
434
if results .functions is not None and results .functions .constraints is not None :
439
435
realization_constraints = polars .from_pandas (
440
436
results .to_dataframe (
441
437
"evaluations" ,
442
438
select = ["constraints" , "evaluation_ids" ],
443
- names = names ,
444
439
).reset_index (),
445
440
).select (
446
441
"batch_id" ,
@@ -449,16 +444,27 @@ def _store_function_results(self, results: FunctionResults) -> _EvaluationResult
449
444
"nonlinear_constraint" ,
450
445
"constraints" ,
451
446
)
447
+ realization_constraints = realization_constraints .with_columns (
448
+ polars .col ("realization" ).replace_strict (
449
+ dict (enumerate (self .data .realization_weights ["realization" ]))
450
+ ),
451
+ polars .col ("nonlinear_constraint" ).replace_strict (
452
+ dict (enumerate (self .data .nonlinear_constraints ["constraint_name" ]))
453
+ ),
454
+ )
452
455
453
456
realization_constraints = self ._rename_ropt_df_columns (
454
457
realization_constraints
455
458
)
456
459
457
460
batch_constraints = polars .from_pandas (
458
- results .to_dataframe (
459
- "functions" , select = ["constraints" ], names = names
460
- ).reset_index ()
461
+ results .to_dataframe ("functions" , select = ["constraints" ]).reset_index ()
461
462
).select ("batch_id" , "nonlinear_constraint" , "constraints" )
463
+ batch_constraints = batch_constraints .with_columns (
464
+ polars .col ("nonlinear_constraint" ).replace_strict (
465
+ dict (enumerate (self .data .nonlinear_constraints ["constraint_name" ]))
466
+ ),
467
+ )
462
468
463
469
batch_constraints = batch_constraints .rename (
464
470
{
@@ -485,13 +491,17 @@ def _store_function_results(self, results: FunctionResults) -> _EvaluationResult
485
491
results .to_dataframe (
486
492
"functions" ,
487
493
select = ["objectives" , "weighted_objective" ],
488
- names = names ,
489
494
).reset_index ()
490
495
).select ("batch_id" , "objective" , "objectives" , "weighted_objective" )
496
+ batch_objectives = batch_objectives .with_columns (
497
+ polars .col ("objective" ).replace_strict (
498
+ dict (enumerate (self .data .objective_functions ["objective_name" ]))
499
+ ),
500
+ )
491
501
492
502
realization_controls = polars .from_pandas (
493
503
results .to_dataframe (
494
- "evaluations" , select = ["variables" , "evaluation_ids" ], names = names
504
+ "evaluations" , select = ["variables" , "evaluation_ids" ]
495
505
).reset_index ()
496
506
).select (
497
507
"batch_id" ,
@@ -500,6 +510,14 @@ def _store_function_results(self, results: FunctionResults) -> _EvaluationResult
500
510
"variables" ,
501
511
"evaluation_ids" ,
502
512
)
513
+ realization_controls = realization_controls .with_columns (
514
+ polars .col ("variable" ).replace_strict (
515
+ dict (enumerate (self .data .controls ["control_name" ]))
516
+ ),
517
+ polars .col ("realization" ).replace_strict (
518
+ dict (enumerate (self .data .realization_weights ["realization" ]))
519
+ ),
520
+ )
503
521
504
522
realization_controls = self ._rename_ropt_df_columns (realization_controls )
505
523
realization_controls = self ._enforce_dtypes (realization_controls )
@@ -541,19 +559,8 @@ def _store_function_results(self, results: FunctionResults) -> _EvaluationResult
541
559
}
542
560
543
561
def _store_gradient_results (self , results : GradientResults ) -> _GradientResults :
544
- names = {
545
- "variable" : self .data .controls ["control_name" ],
546
- "objective" : self .data .objective_functions ["objective_name" ],
547
- "nonlinear_constraint" : (
548
- self .data .nonlinear_constraints ["constraint_name" ]
549
- if self .data .nonlinear_constraints is not None
550
- else None
551
- ),
552
- "realization" : self .data .realization_weights ["realization" ],
553
- }
554
-
555
562
perturbation_objectives = polars .from_pandas (
556
- results .to_dataframe ("evaluations" , names = names ).reset_index ()
563
+ results .to_dataframe ("evaluations" ).reset_index ()
557
564
).select (
558
565
[
559
566
"batch_id" ,
@@ -572,12 +579,30 @@ def _store_gradient_results(self, results: GradientResults) -> _GradientResults:
572
579
),
573
580
]
574
581
)
582
+ perturbation_objectives = perturbation_objectives .with_columns (
583
+ polars .col ("variable" ).replace_strict (
584
+ dict (enumerate (self .data .controls ["control_name" ]))
585
+ ),
586
+ polars .col ("realization" ).replace_strict (
587
+ dict (enumerate (self .data .realization_weights ["realization" ]))
588
+ ),
589
+ polars .col ("objective" ).replace_strict (
590
+ dict (enumerate (self .data .objective_functions ["objective_name" ]))
591
+ ),
592
+ )
593
+ if results .evaluations .perturbed_constraints is not None :
594
+ perturbation_objectives = perturbation_objectives .with_columns (
595
+ polars .col ("nonlinear_constraint" ).replace_strict (
596
+ dict (enumerate (self .data .nonlinear_constraints ["constraint_name" ]))
597
+ ),
598
+ )
599
+
575
600
perturbation_objectives = self ._rename_ropt_df_columns (perturbation_objectives )
576
601
perturbation_objectives = self ._enforce_dtypes (perturbation_objectives )
577
602
578
603
if results .gradients is not None :
579
604
batch_objective_gradient = polars .from_pandas (
580
- results .to_dataframe ("gradients" , names = names ).reset_index ()
605
+ results .to_dataframe ("gradients" ).reset_index ()
581
606
).select (
582
607
[
583
608
"batch_id" ,
@@ -592,6 +617,25 @@ def _store_gradient_results(self, results: GradientResults) -> _GradientResults:
592
617
),
593
618
]
594
619
)
620
+ batch_objective_gradient = batch_objective_gradient .with_columns (
621
+ polars .col ("variable" ).replace_strict (
622
+ dict (enumerate (self .data .controls ["control_name" ]))
623
+ ),
624
+ polars .col ("objective" ).replace_strict (
625
+ dict (enumerate (self .data .objective_functions ["objective_name" ]))
626
+ ),
627
+ )
628
+ if results .gradients .constraints is not None :
629
+ batch_objective_gradient = batch_objective_gradient .with_columns (
630
+ polars .col ("nonlinear_constraint" ).replace_strict (
631
+ dict (
632
+ enumerate (
633
+ self .data .nonlinear_constraints ["constraint_name" ]
634
+ )
635
+ )
636
+ ),
637
+ )
638
+
595
639
batch_objective_gradient = self ._rename_ropt_df_columns (
596
640
batch_objective_gradient
597
641
)
0 commit comments