dwavesystems / dwave-system

An API for easily incorporating the D-Wave system as a sampler, either directly or through Leap's cloud-based hybrid samplers
https://docs.ocean.dwavesys.com/
Apache License 2.0
87 stars 62 forks source link

LeapHybridNLSampler not rejecting for `state_size() > maximum_number_of_states` #526

Open JoelPasvolsky opened 1 month ago

JoelPasvolsky commented 1 month ago

Description LeapHybridNLSampler accepts models with more than maximum_number_of_states states initialized but quietly ignore the rest. Users might think the rest are being used.

To Reproduce

model = traveling_salesperson(distance_matrix=DISTANCE_MATRIX)
route, = model.iter_decisions()
with model.lock():
    model.states.resize(2)
     route.set_state(0, [0, 1, 2, 3, 4])
    route.set_state(1, [0, 1, 2, 3, 4])
results = sampler.sample(
     model,
     label='SDK Examples - TSP')

Expected it to reject: "Alex C 6 days ago Something that came up... we need to add it. And reject problems based on that num_states field in the header"

Expected behavior Reject such problems

Environment:

Additional context @alexzucca90 suggested to move to here. I notice we actually check maximum_number_of_states property here so can easily do this in the client.

randomir commented 1 month ago

We could also just raise a user warning and continue with the truncated states. Seems more user friendly (but less explicit), unless you think it's really important for users to realize only one state is used (currently).