idol
A C++ Framework for Optimization
Loading...
Searching...
No Matches
VarVersion.h
1//
2// Created by henri on 27/01/23.
3//
4
5#ifndef IDOL_VARVERSION_H
6#define IDOL_VARVERSION_H
7
8#include "idol/mixed-integer/modeling/objects/Version.h"
9#include "idol/mixed-integer/modeling/expressions/LinExpr.h"
10#include "idol/mixed-integer/modeling/constraints/Ctr.h"
11
12namespace idol {
13 class TempVar;
14 class VarVersion;
15}
16
17class idol::VarVersion : public Version {
18 double m_lb;
19 double m_ub;
20 VarType m_type;
21 double m_obj;
22 std::unique_ptr<LinExpr<Ctr>> m_column;
23public:
24 VarVersion(unsigned int t_index, double t_lb, double t_ub, VarType t_type, double t_obj, LinExpr<Ctr>&& t_column);
25 VarVersion(unsigned int t_index, TempVar&& t_temp_var);
26 VarVersion(unsigned int t_index, const TempVar& t_temp_var);
27
28 VarVersion(const VarVersion& t_other);
29 VarVersion(VarVersion&& t_other) noexcept = default;
30
31 double lb() const { return m_lb; }
32
33 void set_lb(double t_lb) { m_lb = t_lb; }
34
35 double ub() const { return m_ub; }
36
37 void set_ub(double t_ub) { m_ub = t_ub; }
38
39 VarType type() const { return m_type; }
40
41 void set_type(VarType t_type) { m_type = t_type; }
42
43 double obj() const { return m_obj; }
44
45 void set_obj(double t_obj) { m_obj = t_obj; }
46
47 LinExpr<Ctr>& column() { return *m_column; }
48
49 const LinExpr<Ctr>& column() const { return *m_column; }
50
51 void set_column(LinExpr<Ctr>&& t_column) { m_column = std::make_unique<LinExpr<Ctr>>(std::move(t_column)); }
52
53 bool has_column() const { return m_column.operator bool(); }
54
55 void set_column(const LinExpr<Ctr>& t_column) { m_column = std::make_unique<LinExpr<Ctr>>(t_column); }
56
57 void reset_column() { m_column.reset(); }
58
59};
60
61#endif //IDOL_VARVERSION_H