У меня есть эта cplex-модель с 1 переменной binay (x_i). Теперь у меня есть 2 вопроса по его комплексным решениям (я поместил их в один пост, потому что они связаны).
Первое. Для моей модели я получил 26 решений, но я знаю, что на самом деле решений гораздо больше. Как решения генерируются в cplex? Есть ли способ увеличить количество раствора?
Во-вторых: я хочу получить доступ ко всем решениям с помощью пула решений, но когда я пытаюсь распечатать все решения, он распечатывает все существующие переменные (очевидно, мне просто нужны переменные, которые равны 1 ) с их значением.
Это мой код для пула решений:
def generate_soln_pool(mdl):
cpx = mdl.get_cplex()
cpx.solnpoolintensity=4
cpx.solnpoolagap=0
cpx.populatelim=100000
try:
cpx.populate_solution_pool()
except CplexSolverError:
print("Exception raised during populate")
return []
numsol = cpx.solution.pool.get_num()
print(numsol)
nb_vars = mdl.number_of_variables
sol_pool = []
for i in range(numsol):
x_i = cpx.solution.pool.get_values(i)
assert len(x_i) == nb_vars
sol = mdl.new_solution()
for k in range(nb_vars):
vk = mdl.get_var_by_index(k)
sol.add_var_value(vk, x_i[k])
sol_pool.append(sol)
return sol_pool
bm=CModel()
pool = generate_soln_pool(bm)
for s, sol in enumerate(pool,start=1):
print(" this is solution #{0} of the pool".format(s))
sol.display()
Это часть моего вывода:
x_0 = 0
x_1 = 0
x_2 = 0
x_3 = 0
x_4 = 0
x_5 = 0
x_6 = 0
x_7 = 0
x_8 = 0
x_9 = 0
x_10= 0
x_11 = 1
x_12 = 0
x_13 = 0
.
.
.