idol
A C++ Framework for Optimization
Loading...
Searching...
No Matches
StrongDuality.h
1
//
2
// Created by henri on 29.11.24.
3
//
4
5
#ifndef IDOL_BILEVEL_STRONG_DUALITY_H
6
#define IDOL_BILEVEL_STRONG_DUALITY_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
StrongDuality;
14
}
15
16
class
idol::Bilevel::StrongDuality
:
public
OptimizerFactoryWithDefaultParameters
<StrongDuality>,
public
Bilevel::OptimizerInterface
{
17
const
Bilevel::Description
* m_description =
nullptr
;
18
std::unique_ptr<OptimizerFactory> m_single_level_optimizer;
19
public
:
20
StrongDuality
();
21
22
explicit
StrongDuality
(
const
Bilevel::Description
& t_description);
23
24
StrongDuality
(
const
StrongDuality
& t_src);
25
26
Optimizer
*
operator()
(
const
Model
&t_model)
const override
;
27
28
[[nodiscard]]
OptimizerFactory
*
clone
()
const override
;
29
30
void
set_bilevel_description(
const
Description
&t_bilevel_description)
override
;
31
32
StrongDuality
& with_single_level_optimizer(
const
OptimizerFactory
& t_deterministic_optimizer);
33
34
StrongDuality
& operator+=(
const
OptimizerFactory
& t_optimizer) {
return
with_single_level_optimizer(t_optimizer); }
35
36
static
Model
make_model(
const
Model
& t_model,
const
Bilevel::Description
& t_description);
37
};
38
39
namespace
idol {
40
static
Bilevel::StrongDuality
operator+(
const
Bilevel::StrongDuality
& t_strong_duality,
const
OptimizerFactory
& t_optimizer) {
41
Bilevel::StrongDuality
result(t_strong_duality);
42
result += t_optimizer;
43
return
result;
44
}
45
}
46
47
#endif
//IDOL_BILEVEL_STRONG_DUALITY_H
idol::Bilevel::Description
Definition
Description.h:19
idol::Bilevel::OptimizerInterface
Definition
BilevelOptimizerInterface.h:13
idol::Bilevel::StrongDuality
Definition
StrongDuality.h:16
idol::Bilevel::StrongDuality::clone
OptimizerFactory * clone() const override
idol::Bilevel::StrongDuality::operator()
Optimizer * operator()(const Model &t_model) 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
StrongDuality
StrongDuality.h
Generated by
1.9.8