列出多个可行解
方法为定义一个回调接口供Solver使用,方便获取所有的解
# 定义一个类VarArraySolutionPrinter(大意为多可行解,官网命名), 类中命名方法:cp_model.CpSolverSolutionCallback
class VarArraySolutionPrinter(cp_model.CpSolverSolutionCallback):
python使用类(class)来创建对象
class 类名(父类名:成员函数及成员变量),其中父类名可略,默认为object
父类名表示继承这个父类的属性
#定义函数:命名为self,有variables属性
def __init__(self, variables):
__init__表示类的对象被建立时,马上运行,对对象进行初始化。
在对类对象(class)进行实例化过程中,为防止缺少类中属性等情况发展,希望将类“封装”,解决方法为类内部定义一个def __init__(命名, 属性1,属性2)函数,在执行实例化过程中预先设定好需要哪些属性,同时可以在输入class中不同实例时可以正确地初始化
相当于用先用一段注释占着__init__函数内的位置
定义__init__后,执行实例化的过程须变成命名(属性1, 属性2) 新建的实例包括其参数,传给__init__函数并初始化后,执行它。
def __init__(命名, 属性1,属性2)语句中习惯上J将命名设为self。新建的实例传给self后,就可以在__init__函数内创建并初始化它的属性,一般呈现为 def __init__(self, 属性1,属性2)
cp_model.CpSolverSolutionCallback.__init__(self)#调用__init__(self)
self.__variables = variables #定义selfvariables等于求到的解
self.__solution_count = 1 #定义solution_count等于1,用于计数结构数
__前单下划线:保护变量,一般只能够被类对象和子类对象内部才能够访问到这些变量,一般情况下外部不得访问,
def on_solution_callback(self):
print('可行解第 %i 组' % self.__solution_count)
print('目标函

本文介绍了如何利用OR-Tools中的CpModel和CpSolverSolutionCallback创建VarArraySolutionPrinter类,以获取和打印线性规划模型的所有可行解。通过定义回调接口,解决过程中的每个解都会被逐一输出,包括目标函数值和变量值。
最低0.47元/天 解锁文章
1034

被折叠的 条评论
为什么被折叠?



