24 std::vector<std::vector<std::int64_t>> &
key_list,
26 std::vector<std::pair<std::int64_t, std::int64_t>> &
bounds) {
28 throw std::runtime_error(
"Key and value lists must have the same size.");
31 std::unordered_set<std::int64_t>
index_set;
34 throw std::runtime_error(
"Key size must be less than or equal to 2.");
52 for (std::size_t i = 0; i <
key_list.size(); ++i) {
54 if (
key.size() == 0) {
56 }
else if (
key.size() == 1) {
58 throw std::runtime_error(
"Index out of bounds.");
61 }
else if (
key.size() == 2) {
64 throw std::runtime_error(
"Index out of bounds.");
76 if (std::abs(this->
squared_[i]) < 1
e-10) {
87 return std::min(std::abs(
current_min), std::abs(value));
94 return std::max(std::abs(
current_max), std::abs(value));
99 double abs_min_dE = std::numeric_limits<double>::infinity();
109 }
else if (
bound_i.second < 0) {
122 }
else if (
bound_j.second < 0) {
140 throw std::runtime_error(
"No valid energy difference found.");
148 const std::vector<std::vector<std::pair<std::int64_t, double>>> &
155 const std::vector<std::pair<std::int64_t, std::int64_t>> &
GetBounds()
const {
165 std::vector<std::vector<std::pair<std::int64_t, double>>>
quadratic_;
169 std::vector<std::pair<std::int64_t, std::int64_t>>
bounds_;
Definition integer_quadratic_model.hpp:20
const std::vector< double > & GetLinear() const
Definition integer_quadratic_model.hpp:152
const std::unordered_set< std::int64_t > & GetOnlyBilinearIndexSet() const
Definition integer_quadratic_model.hpp:158
std::int64_t GetNumVariables() const
Definition integer_quadratic_model.hpp:147
double GetConstant() const
Definition integer_quadratic_model.hpp:154
std::vector< std::vector< std::pair< std::int64_t, double > > > quadratic_
Definition integer_quadratic_model.hpp:165
std::vector< double > squared_
Definition integer_quadratic_model.hpp:167
std::int64_t num_variables_
Definition integer_quadratic_model.hpp:164
const std::vector< double > & GetSquared() const
Definition integer_quadratic_model.hpp:153
std::vector< double > linear_
Definition integer_quadratic_model.hpp:166
const std::vector< std::vector< std::pair< std::int64_t, double > > > & GetQuadratic() const
Definition integer_quadratic_model.hpp:149
std::vector< std::int64_t > index_list_
Definition integer_quadratic_model.hpp:163
double constant_
Definition integer_quadratic_model.hpp:168
const std::vector< std::pair< std::int64_t, std::int64_t > > & GetBounds() const
Definition integer_quadratic_model.hpp:155
std::pair< double, double > GetMaxMinTerms() const
Definition integer_quadratic_model.hpp:82
std::unordered_set< std::int64_t > only_bilinear_index_set_
Definition integer_quadratic_model.hpp:170
IntegerQuadraticModel(std::vector< std::vector< std::int64_t > > &key_list, std::vector< double > &value_list, std::vector< std::pair< std::int64_t, std::int64_t > > &bounds)
Definition integer_quadratic_model.hpp:23
const std::vector< std::int64_t > & GetIndexList() const
Definition integer_quadratic_model.hpp:146
std::vector< std::pair< std::int64_t, std::int64_t > > bounds_
Definition integer_quadratic_model.hpp:169
auto json_parse(const json &obj, bool relabel=true)
parse json object from bqm.to_serializable
Definition parse.hpp:50
Definition algorithm.hpp:24