idol
A C++ Framework for Optimization
Loading...
Searching...
No Matches
MinMax_Dualize.h
1
//
2
// Created by henri on 29.11.24.
3
//
4
5
#ifndef IDOL_BILEVEL_MINMAX_DUALIZE_H
6
#define IDOL_BILEVEL_MINMAX_DUALIZE_H
7
8
#include "idol/general/optimizers/OptimizerFactory.h"
9
#include "idol/bilevel/modeling/Description.h"
10
#include "idol/bilevel/optimizers/BilevelOptimizerInterface.h"
11
#include "idol/mixed-integer/modeling/models/KKT.h"
12
13
namespace
idol::Bilevel::MinMax {
14
class
Dualize;
15
}
16
17
class
idol::Bilevel::MinMax::Dualize
:
public
OptimizerFactoryWithDefaultParameters
<Dualize>,
public
Bilevel::OptimizerInterface
{
18
const
Bilevel::Description
* m_description =
nullptr
;
19
std::unique_ptr<OptimizerFactory> m_single_level_optimizer;
20
std::unique_ptr<Reformulators::KKT::BoundProvider> m_bound_provider;
21
public
:
22
Dualize
();
23
24
explicit
Dualize
(
const
Bilevel::Description
& t_description);
25
26
Dualize
(
const
Dualize
& t_src);
27
28
Optimizer
*
operator()
(
const
Model
&t_model)
const override
;
29
30
[[nodiscard]]
OptimizerFactory
*
clone
()
const override
;
31
32
void
set_bilevel_description(
const
Description
&t_bilevel_description)
override
;
33
34
Dualize
& with_single_level_optimizer(
const
OptimizerFactory
& t_deterministic_optimizer);
35
36
Dualize
& with_bound_provider(
const
Reformulators::KKT::BoundProvider
& t_bound_provider);
37
38
Dualize
& operator+=(
const
OptimizerFactory
& t_optimizer) {
return
with_single_level_optimizer(t_optimizer); }
39
40
static
Model
make_model(
const
Model
& t_model,
const
Bilevel::Description
& t_description);
41
42
static
Model
make_model(
const
Model
& t_model,
const
Bilevel::Description
& t_description,
::idol::Reformulators::KKT::BoundProvider
& t_bound_provider);
43
};
44
45
namespace
idol {
46
static
Bilevel::MinMax::Dualize
operator+(
const
Bilevel::MinMax::Dualize
& t_MINMAX_DUALIZE,
const
OptimizerFactory
& t_optimizer) {
47
Bilevel::MinMax::Dualize
result(t_MINMAX_DUALIZE);
48
result += t_optimizer;
49
return
result;
50
}
51
}
52
53
#endif
//IDOL_BILEVEL_MINMAX_DUALIZE_H
idol::Bilevel::Description
Definition
Description.h:19
idol::Bilevel::MinMax::Dualize
Definition
MinMax_Dualize.h:17
idol::Bilevel::MinMax::Dualize::operator()
Optimizer * operator()(const Model &t_model) const override
idol::Bilevel::MinMax::Dualize::clone
OptimizerFactory * clone() const override
idol::Bilevel::OptimizerInterface
Definition
BilevelOptimizerInterface.h:13
idol::Model
Definition
Model.h:43
idol::OptimizerFactoryWithDefaultParameters
Definition
OptimizerFactory.h:66
idol::OptimizerFactory
Definition
OptimizerFactory.h:26
idol::Optimizer
Definition
Optimizer.h:219
idol::Reformulators::KKT::BoundProvider
Definition
KKT.h:122
lib
include
idol
bilevel
optimizers
MinMaxDualize
MinMax_Dualize.h
Generated by
1.9.8