idol
A C++ Framework for Optimization
Loading...
Searching...
No Matches
PessimisticAsOptimistic.h
1
//
2
// Created by henri on 22.01.25.
3
//
4
5
#ifndef IDOL_PESSIMISTICASOPTIMISTIC_H
6
#define IDOL_PESSIMISTICASOPTIMISTIC_H
7
8
#include "idol/general/optimizers/OptimizerFactory.h"
9
#include "idol/bilevel/modeling/Description.h"
10
#include "idol/bilevel/optimizers/BilevelOptimizerInterface.h"
11
12
namespace
idol::Bilevel {
13
class
PessimisticAsOptimistic;
14
}
15
16
class
idol::Bilevel::PessimisticAsOptimistic
:
public
OptimizerFactoryWithDefaultParameters
<PessimisticAsOptimistic>,
public
Bilevel::OptimizerInterface
{
17
const
Bilevel::Description
* m_description =
nullptr
;
18
std::unique_ptr<OptimizerFactory> m_optimistic_bilevel_optimizer;
19
public
:
20
PessimisticAsOptimistic
() =
default
;
21
22
explicit
PessimisticAsOptimistic
(
const
Bilevel::Description
& t_description);
23
24
PessimisticAsOptimistic
(
const
PessimisticAsOptimistic
& t_src);
25
26
PessimisticAsOptimistic
& with_optimistic_bilevel_optimizer(
const
OptimizerFactory
& t_optimizer);
27
28
PessimisticAsOptimistic
& operator+=(
const
OptimizerFactory
& t_optimizer) {
29
return
with_optimistic_bilevel_optimizer(t_optimizer);
30
}
31
32
void
set_bilevel_description(
const
Description
&t_bilevel_description)
override
;
33
34
Optimizer
*
operator()
(
const
Model
&t_model)
const override
;
35
36
[[nodiscard]]
OptimizerFactory
*
clone
()
const override
;
37
38
static
std::pair<Model, Bilevel::Description> make_model(
const
Model
&t_model,
const
Bilevel::Description
&t_description);
39
};
40
41
namespace
idol {
42
static
Bilevel::PessimisticAsOptimistic
operator+(
const
Bilevel::PessimisticAsOptimistic
& t_pessimistic_as_optimistic,
const
OptimizerFactory
& t_optimizer) {
43
Bilevel::PessimisticAsOptimistic
result(t_pessimistic_as_optimistic);
44
result += t_optimizer;
45
return
result;
46
}
47
}
48
49
#endif
//IDOL_PESSIMISTICASOPTIMISTIC_H
idol::Bilevel::Description
Definition
Description.h:19
idol::Bilevel::OptimizerInterface
Definition
BilevelOptimizerInterface.h:13
idol::Bilevel::PessimisticAsOptimistic
Definition
PessimisticAsOptimistic.h:16
idol::Bilevel::PessimisticAsOptimistic::operator()
Optimizer * operator()(const Model &t_model) const override
idol::Bilevel::PessimisticAsOptimistic::clone
OptimizerFactory * clone() const override
idol::Model
Definition
Model.h:43
idol::OptimizerFactoryWithDefaultParameters
Definition
OptimizerFactory.h:66
idol::OptimizerFactory
Definition
OptimizerFactory.h:26
idol::Optimizer
Definition
Optimizer.h:219
lib
include
idol
bilevel
optimizers
PessimisticAsOptimistic
PessimisticAsOptimistic.h
Generated by
1.9.8