C++ library for a binary quadratic model
Project description
cimod : C++ header-only library for a binary quadratic model
How to use
You should only include a header src/binary_quadratic_model.hpp
in your project.
Example
C++
#include "src/binary_quadratic_model.hpp"
using namespace cimod;
int main()
{
// Set linear biases and quadratic biases
Linear<uint32_t, double> linear{ {1, 1.0}, {2, 2.0}, {3, 3.0}, {4, 4.0} };
Quadratic<uint32_t, double> quadratic
{
{std::make_pair(1, 2), 12.0}, {std::make_pair(1, 3), 13.0}, {std::make_pair(1, 4), 14.0},
{std::make_pair(2, 3), 23.0}, {std::make_pair(2, 4), 24.0},
{std::make_pair(3, 4), 34.0}
};
// Set offset
double offset = 0.0;
// Set variable type
Vartype vartype = Vartype::BINARY;
// Create a BinaryQuadraticModel instance
BinaryQuadraticModel<uint32_t, double, cimod::Dense> bqm(linear, quadratic, offset, vartype);
//linear terms -> bqm.get_linear()
//quadratic terms -> bqm.get_quadratic()
return 0;
}
Python
import cimod
import dimod
# Set linear biases and quadratic biases
linear = {1:1.0, 2:2.0, 3:3.0, 4:4.0}
quadratic = {(1,2):12.0, (1,3):13.0, (1,4):14.0, (2,3):23.0, (2,4):24.0, (3,4):34.0}
# Set offset
offset = 0.0
# Set variable type
vartype = dimod.BINARY
# Create a BinaryQuadraticModel instance
bqm = cimod.BinaryQuadraticModel(linear, quadratic, offset, vartype)
print(bqm.linear)
print(bqm.quadratic)
Install
via this directory
$ python -m pip install .
via pip
$ pip install jij-cimod
Benchmark
Benchmark code
import dimod
import cimod
import time
fil = open("benchmark", "w")
fil.write("N t_dimod t_cimod\n")
def benchmark(N, test_fw):
linear = {}
quadratic = {}
spin = {}
# interactions
for i in range(N):
spin[i] = 1
for elem in range(N):
linear[elem] = 2.0*elem;
for i in range(N):
for j in range(i+1, N):
if i != j:
quadratic[(i,j)] = (i+j)/(N)
t1 = time.time()
# initialize
a = test_fw.BinaryQuadraticModel(linear, quadratic, 0, test_fw.BINARY)
a.change_vartype(test_fw.SPIN)
# calculate energy for 50 times.
for _ in range(50):
print(a.energy(spin))
t2 = time.time()
return t2-t1
d_arr = []
c_arr = []
for N in [25, 50, 100, 200, 300, 400, 600, 800,1000, 1600, 2000, 3200, 5000]:
print("N {}".format(N))
d = benchmark(N, dimod)
c = benchmark(N, cimod)
print("{} {} {}".format(N, d, c))
fil.write("{} {} {}\n".format(N, d, c))
Software versions
Package | Version |
---|---|
cimod | 1.0.3 |
dimod | 0.9.2 |
Result
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
jij_cimod-1.3.3.tar.gz
(202.4 kB
view hashes)
Built Distributions
Close
Hashes for jij_cimod-1.3.3-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f2bd7783334c618a11fc8a2262df4baf1596ed55a175916b1c44fc922731a58b |
|
MD5 | 1d009666286207254fe5e7c3556e1084 |
|
BLAKE2b-256 | 6e32ca1c77b95dda96b81da07c2ba23e0a6c0c0004fcb7453ee9085db64bca74 |
Close
Hashes for jij_cimod-1.3.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e9f6565859a90df0ff91beec24b68345a23a962d80afe0fc90996e38dc15ab5e |
|
MD5 | 1ef7cbf38cc0e6b6ccc423ef409db26b |
|
BLAKE2b-256 | c994b9040aa062778a7db666ce3893b9e6a9c2313727e244413fac0cb638dbee |
Close
Hashes for jij_cimod-1.3.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2db0b21f7d1ffb3f75a941a767d38e559f29ddb84115682954b7c2b786a89cc8 |
|
MD5 | ef1503411650cbd01499d5370d36116a |
|
BLAKE2b-256 | 51246d05826af6f84cf1c04c3386d60d354a8aaf2d29f3f95eb0cb5711950bde |
Close
Hashes for jij_cimod-1.3.3-cp39-cp39-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | af2d6fe2aae96a2045cad6ae83bafff3cf2ebd875e1dde6b49e7cf4fc9203737 |
|
MD5 | b0f63804382120fd9e5ffaae3e8243c0 |
|
BLAKE2b-256 | dd64d527b29b167df8e0c6d21b04b60c2fea6353eb569b2d8a8c5a2d88b1c483 |
Close
Hashes for jij_cimod-1.3.3-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 27283b22c8c0bafd21fca34a9a44fe6906fb287962996f8c3b4c2f6735a6a14a |
|
MD5 | d001b3c604a7b3efe39bdda03f220cc0 |
|
BLAKE2b-256 | 0c5b53b083ecc2fc36ce08adad80d73913286a950a9c56fde88cf0c7c5e5b469 |
Close
Hashes for jij_cimod-1.3.3-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2549f7f15c39d738c72c476e3656159edc4404cbb6a5c771cb057e9811e58d7f |
|
MD5 | ce89862a70865f40605afffedfc2b6ab |
|
BLAKE2b-256 | 0dd68a30340e650ab4c4c0610a35bf35f30f35b44f8a9534e07a5c1062e69036 |
Close
Hashes for jij_cimod-1.3.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4493cf1ce142ef9095bb6e41d6e5fe27352c75417665babd9fbba348151069a2 |
|
MD5 | 11e21d08f267846795dca6503849987c |
|
BLAKE2b-256 | 3166a9602c9eab79d66f2ce69a0b53250fc5980290b977ceff1f272584778f60 |
Close
Hashes for jij_cimod-1.3.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6fc100d96a441f7783e5fd351bb4711d5cbd3d72bde9c72c933679cfb6dfb462 |
|
MD5 | 833463e055c9671dcf647cd857484758 |
|
BLAKE2b-256 | 1ab1c6c2c8f6705ae57a627f60f05810ace7d3bcb8c7aa0634ad8dbd41c24b84 |
Close
Hashes for jij_cimod-1.3.3-cp38-cp38-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d75d060c46acf860b0c5d4371f74edb2a79e84e5dc7232874ecb4f8417948ac8 |
|
MD5 | 33a9de3ef45e0ef388fd5d67474270e6 |
|
BLAKE2b-256 | 081b7859689132dea2061207e53611ebff10600b2f21eca2f68cfecb38cdbd43 |
Close
Hashes for jij_cimod-1.3.3-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b572f116ec4a7ce7a3cb9ac04867f17bed3256a741c6120b9df3561f111ad869 |
|
MD5 | 5ceddc0cd38ee819d7f4dd3173a50a99 |
|
BLAKE2b-256 | a0fd6772f9d6fb9a88dd38f7d6617e46dcf404326607fa03fbc734e6da2ed54e |
Close
Hashes for jij_cimod-1.3.3-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 83f36df62fa4540b195496df291996184a692faf795a76ad255f37770b0055c9 |
|
MD5 | ea07e91baf41dffb6d2f0380e65c21ff |
|
BLAKE2b-256 | 7049930a379ab551df9c9b27ab17d6e8f113092518fd417b1310f8df2597c6f5 |
Close
Hashes for jij_cimod-1.3.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 905c4bba6249da6e88d3135efdf417cdad7c73535a14ab3ec88e183bcf066fcb |
|
MD5 | 343800854ed2a2f898a38b5d39acec24 |
|
BLAKE2b-256 | 8d35d8985efddb50e13934fe46eafb2202e9f801c12b879becf4e9ec675ffea2 |
Close
Hashes for jij_cimod-1.3.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7f0d76ca4250c2d96d82cef9cc8eac65acd9c368a35648fed234728eb45450d7 |
|
MD5 | 3a8a156340c53a17e5520f4b89f3d402 |
|
BLAKE2b-256 | 81c6c42dd2bf9d15bb2f3f0069ee86b326aba754d813e5595ef1fa4616f1ad52 |
Close
Hashes for jij_cimod-1.3.3-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 59e3824bc971626375525e810c5d0ad341cfd5cffb5988ead27cd5e4404de991 |
|
MD5 | a34f452d4a92af216211d72e30c08a3b |
|
BLAKE2b-256 | 0071fed14dd6f2ecf7471c33d12e8f46a5191deb8bda12770b1a2be4120f948a |