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> 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 setup.py 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.0.4.tar.gz
(168.8 kB
view hashes)
Built Distributions
Close
Hashes for jij_cimod-1.0.4-cp39-cp39-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 58cbf31a2d5548977f209e582303a843c340a1d97fd2e8d63c9a8cf3c4f01d5e |
|
MD5 | 48696c1a68abdbc56df05da67d40bfdb |
|
BLAKE2b-256 | 7e6f8de90c00b393c85fc88b54fec8e1b72ec4c0d4538bd4e18c887fa46f26de |
Close
Hashes for jij_cimod-1.0.4-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0ccb05dca757690591b3df60591aa14e00b3a7ea9c4b2cbbc232a473350a25f8 |
|
MD5 | 36606891ed9984031c3e3957085620e4 |
|
BLAKE2b-256 | 55ba46f1c2c22d302c0ea6bfa654280819b88078377749138216a950af4e82b3 |
Close
Hashes for jij_cimod-1.0.4-cp38-cp38-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2c4b26dd3a4d20c65df2a65d0f3b613031581f8dbfb6e5ebbf776cdbca7dffab |
|
MD5 | 3341fc04bb3b44cd42a29d3004f958c0 |
|
BLAKE2b-256 | 8e813800030d91deddd5572e8dfe3a8866ac55b16594825475511dde5fe6c0a4 |
Close
Hashes for jij_cimod-1.0.4-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7c8003646de9b95764424da913beb53bce84a028db5bc4e208b88a61a249ca8f |
|
MD5 | 8e442d1dba86988d08e940ef4716d4ac |
|
BLAKE2b-256 | de90a50c238cba3c6bb6db5919e2914e354d941d90bfeab15588dc0e73e3bb1f |
Close
Hashes for jij_cimod-1.0.4-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5456aec844ad660b23776cfd49bbcba16af660e1fbdbb93e55e3cc21a9775184 |
|
MD5 | 98723d31058388b8e92da0e57e500ce1 |
|
BLAKE2b-256 | 028014092ce824fea34e486aa7165427a48f0be360fcb30178f738fe9b77ad69 |
Close
Hashes for jij_cimod-1.0.4-cp37-cp37m-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 35432d6a3c3aff33fa04795436c082cd797d4776ad51364800d823b06b99c1ba |
|
MD5 | 8bb0dbc2fe92f96f91f67eb4dbbbce51 |
|
BLAKE2b-256 | ec4b505d5920d41ee6b1440d12a7c5f5e59bbe085fd3158bfd4a52b6835ce25e |
Close
Hashes for jij_cimod-1.0.4-cp37-cp37m-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1388ca56969a8afb69c5c90660f2710bde8e959244ec95b23f60e07ac1df17b0 |
|
MD5 | 6c2b898722a3b1b439bdd93971a3c647 |
|
BLAKE2b-256 | f585e5a01d94a952328152a65393fdf8d6ba2837e575de88f22f704d5d3dd72e |
Close
Hashes for jij_cimod-1.0.4-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a0246e03f00f917e3c6eb5849f3bf9d1b478b0ea0a1dcc44838ec4a3736c95c4 |
|
MD5 | 456e239544db44b646e4bcd1a27b2a9b |
|
BLAKE2b-256 | db23b0ddb6d06b354837c109aa6a651a23df8749894628fdfae0399db28f3f9b |
Close
Hashes for jij_cimod-1.0.4-cp36-cp36m-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f0a0a24e4045020c60f99d893a92aabde3b7f36fd8c2bc18c732fbaa02018323 |
|
MD5 | 879265963ec002d0f52d8d6f13893092 |
|
BLAKE2b-256 | 30f91f8b7876c50236a8bab6114520819af377aaa375b4ca5dac6b45dc2cd883 |
Close
Hashes for jij_cimod-1.0.4-cp36-cp36m-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8d860e713c7cf52e5500798343b409f60204c947e7e56196da5986b00393a3cb |
|
MD5 | 4b45201fcc0b8d041c8ba2cb159dab64 |
|
BLAKE2b-256 | 0d85cd12fd4fbc438d727b9c0eab5ba097e4c0da76cbbc3a815d1e47207f6b72 |
Close
Hashes for jij_cimod-1.0.4-cp35-cp35m-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 81a918976734d4f2e8ae295c36e44a178c4ed4dffc1902f559d00d02190ddb65 |
|
MD5 | 8b2357b942867b4f6afe2037a08aad20 |
|
BLAKE2b-256 | ecfa700edee31ed98aa6f348c7569e6b1289d94de106a157fd2beb54cdb28e4d |