fix: number of dimensions

This commit is contained in:
johann dreo 2019-12-16 15:25:35 +01:00
commit 5aee3fb37b
3 changed files with 10 additions and 6 deletions

View file

@ -8,11 +8,12 @@ from . import x,y,pb
# Objective functions # Objective functions
######################################################################## ########################################################################
def cover_sum(sol, domain_width, sensor_range): def cover_sum(sol, domain_width, sensor_range, dim):
"""Compute the coverage quality of the given array of bits.""" """Compute the coverage quality of the given array of bits."""
assert(0 < sensor_range <= math.sqrt(2)) assert(0 < sensor_range <= math.sqrt(2))
assert(0 < domain_width) assert(0 < domain_width)
assert(len(sol)>0) assert(dim > 0)
assert(len(sol) >= dim)
domain = np.zeros((domain_width,domain_width)) domain = np.zeros((domain_width,domain_width))
sensors = to_sensors(sol) sensors = to_sensors(sol)
cov = pb.coverage(domain, sensors, sensor_range*domain_width) cov = pb.coverage(domain, sensors, sensor_range*domain_width)

View file

@ -21,11 +21,12 @@ def to_sensors(sol):
return sensors return sensors
def cover_sum(sol, domain_width, sensor_range): def cover_sum(sol, domain_width, sensor_range, dim):
"""Compute the coverage quality of the given vector.""" """Compute the coverage quality of the given vector."""
assert(0 < sensor_range <= domain_width * math.sqrt(2)) assert(0 < sensor_range <= domain_width * math.sqrt(2))
assert(0 < domain_width) assert(0 < domain_width)
assert(len(sol)>0) assert(dim > 0)
assert(len(sol) >= dim)
domain = np.zeros((domain_width,domain_width)) domain = np.zeros((domain_width,domain_width))
sensors = to_sensors(sol) sensors = to_sensors(sol)
cov = pb.coverage(domain, sensors, sensor_range*domain_width) cov = pb.coverage(domain, sensors, sensor_range*domain_width)

6
snp.py
View file

@ -93,7 +93,8 @@ if __name__=="__main__":
val,sol = algo.greedy( val,sol = algo.greedy(
make.func(num.cover_sum, make.func(num.cover_sum,
domain_width = the.domain_width, domain_width = the.domain_width,
sensor_range = the.sensor_range), sensor_range = the.sensor_range,
dim = d * the.nb_sensors),
make.init(num.rand, make.init(num.rand,
dim = d * the.nb_sensors, dim = d * the.nb_sensors,
scale = the.domain_width), scale = the.domain_width),
@ -108,7 +109,8 @@ if __name__=="__main__":
val,sol = algo.greedy( val,sol = algo.greedy(
make.func(bit.cover_sum, make.func(bit.cover_sum,
domain_width = the.domain_width, domain_width = the.domain_width,
sensor_range = the.sensor_range), sensor_range = the.sensor_range,
dim = d * the.nb_sensors),
make.init(bit.rand, make.init(bit.rand,
domain_width = the.domain_width, domain_width = the.domain_width,
nb_sensors = the.nb_sensors), nb_sensors = the.nb_sensors),