Так что у меня проблемы с Python-версией CPLEX.Я думаю, было бы довольно просто получить сводку того, что решатель сделал, то есть количество ветвей и т. Д.
Кто-нибудь знает, как это сделать?
import cplex
from cplex.exceptions import CplexError
class knapsack:
def __init__(self,N,g,square_list):
self.N = N
self.square_list= square_list
self.g = g
def solve_problem(self):
try:
my_prob = cplex.Cplex()
prob =my_prob
prob.set_log_stream(None)
prob.set_error_stream(None)
prob.set_warning_stream(None)
prob.set_results_stream(None)
my_obj = self.g
my_ctype = "B"
number_of_one = self.square_list.count(1.0)
my_ctype = my_ctype*len(self.square_list)
val = self.N -number_of_one
rhs=[val]
my_sense="L"
my_rownames = ["r1"]
counter =0
variable_list=[]
coiff_list=[]
for i in self.square_list:
if i==0:
coiff_list.append(1.0)
else:
coiff_list.append(-1.0)
variable_list.append("w" + str(counter))
counter+=1
rows = [[variable_list, coiff_list]]
prob.objective.set_sense(prob.objective.sense.minimize)
prob.variables.add(obj=my_obj, types=my_ctype,
names=variable_list)
prob.linear_constraints.add(lin_expr=rows, senses=my_sense,
rhs=rhs)
my_prob.solve()
x = my_prob.solution.get_values()
print(my_prob.solution.get_status())
print("---")
print(my_prob.solution.status())
return x
except CplexError as exc:
print(exc)
return
Когда я смотрюв методах, связанных с my_prob и myprob.solution я вижу
['MIP_starts', 'SOS', '_Cplex__copy_init', '__class__', '__del__', '__delattr__', '__dict__', '__dir__', '__doc__', '__enter__', '__eq__', '__exit__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_aborter', '_disposed', '_env', '_env_lp_ptr', '_invoke_generic_callback', '_is_MIP', '_is_special_filetype', '_lp', 'advanced', 'cleanup', 'conflict', 'copy_vmconfig', 'del_vmconfig', 'double_annotations', 'end', 'feasopt', 'get_aborter', 'get_dettime', 'get_num_cores', 'get_problem_name', 'get_problem_type', 'get_stats', 'get_time', 'get_version', 'get_versionnumber', 'has_vmconfig', 'indicator_constraints', 'linear_constraints', 'long_annotations', 'objective', 'order', 'parameters', 'populate_solution_pool', 'presolve', 'problem_type', 'pwl_constraints', 'quadratic_constraints', 'read', 'read_annotations', 'read_copy_vmconfig', 'register_callback', 'remove_aborter', 'runseeds', 'set_callback', 'set_error_stream', 'set_log_stream', 'set_problem_name', 'set_problem_type', 'set_results_stream', 'set_warning_stream', 'solution', 'solve', 'start', 'unregister_callback', 'use_aborter', 'variables', 'write', 'write_annotations', 'write_benders_annotation']
['MIP', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_add_iter', '_add_single', '_conv', '_cplex', '_env', '_get_index', '_get_index_function', 'advanced', 'basis', 'get_activity_levels', 'get_dual_values', 'get_float_quality', 'get_indicator_slacks', 'get_indices', 'get_integer_quality', 'get_linear_slacks', 'get_method', 'get_objective_value', 'get_quadratic_activity_levels', 'get_quadratic_dualslack', 'get_quadratic_slacks', 'get_quality_metrics', 'get_reduced_costs', 'get_solution_type', 'get_status', 'get_status_string', 'get_values', 'infeasibility', 'is_dual_feasible', 'is_primal_feasible', 'method', 'pool', 'progress', 'quality_metric', 'sensitivity', 'status', 'type', 'write']