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.2.tar.gz
(200.9 kB
view hashes)
Built Distributions
Close
Hashes for jij_cimod-1.3.2-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 959eafe8f1fe5f51c086263714ef5db19334c4fb16fd0e587539c599008468bb |
|
MD5 | f61b0b98aaedf1069517a8647537db6f |
|
BLAKE2b-256 | 2a09a092d7e6baa42cf2d5b988b1a542297b59e756f78a1e250c2708885a8469 |
Close
Hashes for jij_cimod-1.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e88b4ee6b1201f9a844334042ff02481a54299ef619a4e0d95b274ce1d6513a5 |
|
MD5 | 293096e5149c3a6cf47482c9637b2aa7 |
|
BLAKE2b-256 | 1cb40ee08b885386bc6df28c85cfb0bab389b0e2cf96e8a69a59bce5ceb3c055 |
Close
Hashes for jij_cimod-1.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 321de122dd55f6b234bdb5940996a760dd106216961a6593496ba6ff175bda23 |
|
MD5 | 20f0bba4384c2505fb244b4976d6192e |
|
BLAKE2b-256 | 0ba486a64b0e2d57d6b52ec5174f987842419fa718b8bb7d3ddf75ad526499f0 |
Close
Hashes for jij_cimod-1.3.2-cp39-cp39-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3f218f396aee48f801cb26fe84bcf4c92c44fb4abb3faa084cea2eb224962e28 |
|
MD5 | 2772d6e3c4a60b597f059ee8f17c0b70 |
|
BLAKE2b-256 | 87439522967793c1d9c58b01a3450066fa2010669fc7a87fbf3476780bfa130b |
Close
Hashes for jij_cimod-1.3.2-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4752b162cf8254b7fc94f1e103929469f7dac9197a59a821051a6e861ab7954d |
|
MD5 | 092470e689f7dad66a07c7d4adfd98b8 |
|
BLAKE2b-256 | 30dd0d38806c9806ede8e7f0f57265ca496325e955ec83aecec77e64e1c8f1d0 |
Close
Hashes for jij_cimod-1.3.2-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | af4a759a8fbdef15097e3e15fc2e4e80f72ff22ca8ebc975e9b3ee402455068f |
|
MD5 | f47098844858bd4014593f5bb7ab237a |
|
BLAKE2b-256 | 92d6d44b357e41ac90fb7911e51fcc9a93de3f9f72f60da9b05ae692fa622392 |
Close
Hashes for jij_cimod-1.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 78ec18453babd9568d988d9b1ff76d6231af2946c521bce187315c28d5a792e1 |
|
MD5 | 3ead6bfddebb42ea3a87048cb99df30f |
|
BLAKE2b-256 | b3024d969e96180b29423847974bd6462dc674c6ed79a59a1d43cef09f40954b |
Close
Hashes for jij_cimod-1.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f7222d5b202149fea2abda3f1d0d5ec094de50464d5fac0df7b34bc7e73ceeba |
|
MD5 | 7d2a1d13dec0bb5961c758e833136240 |
|
BLAKE2b-256 | 13442005c6fa4ca82b4783a73d6322b435b02825ff701d3db4d0e2254657e95f |
Close
Hashes for jij_cimod-1.3.2-cp38-cp38-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2491b90cbb4f42b4f6e55f5b19b6af430c273207f78f6da6357c0cd02d29ed4d |
|
MD5 | 77fbf92d6d03ba255ea1a6f319fc4b8d |
|
BLAKE2b-256 | d97404900a8a2bd01552b92d3414239dfc24f4cd5f406c0bd3d2f13fcc823bb3 |
Close
Hashes for jij_cimod-1.3.2-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 545b3f287175682ba0c83c39ce5d816009b8799d9270de1167b49d9983526246 |
|
MD5 | d5b9a371c6251ab7cffbf37f4b45baf7 |
|
BLAKE2b-256 | 8876de2424ffcb4040d621219e48afe09eba34a63db7e87c9676a73bda011903 |
Close
Hashes for jij_cimod-1.3.2-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fc2bb49d34c45009ecf41de1badedca81b65608eebc59f10f60bb960b9095537 |
|
MD5 | 03bdb585df990c6e4af6877f2630a8f4 |
|
BLAKE2b-256 | 28f70eedf63c60b5167a144c01205a0de172106c820bda123d421ab9f8ea7b5e |
Close
Hashes for jij_cimod-1.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 33f14f9597a7ce0c7a28865f39edfa6ccf8d31163bc2c2a0a46e75a74f62306c |
|
MD5 | 9306abbe3ce1f15b10219ae4ffd51cf9 |
|
BLAKE2b-256 | 6ebb5bf74c46b7d1c91e3bec5635b25d80b3e61fc5cddb871011e2bdec2df0c7 |
Close
Hashes for jij_cimod-1.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | dfde6d4cba3d5b6548cea365d8d044c74d91f2b33950b34e221fbab3b13fb588 |
|
MD5 | d7f5fb997e9dae9be7af22cca78aefc7 |
|
BLAKE2b-256 | d85fb4b4de0c5c203a59d8371b3a3f36c649b85e638a0b9e2b94fb797e1989b3 |
Close
Hashes for jij_cimod-1.3.2-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 726a4c05ed599958616687ef535f74d1a2bbcb43bc7c2adb6a893d46da989a9e |
|
MD5 | d46791f620da7d5f2e0206324c75bfaf |
|
BLAKE2b-256 | 6f490f76c1fa5768dbd0aba0dd6401bcc9c45ea1c0a1cf8f99b635f11f502f77 |