使用 ORtools 求解器进行图形着色的目标函数

问题描述

我写了一个 cp 函数来用 ORtools 解决图形着色问题

(最小化颜色使用,当一条边上每两个顶点的颜色需要不同时) 我得到了奇怪的结果,这不是最优的,我不知道为什么 - 我认为我的目标函数是错误的,或者我的约束公式有什么帮助? 谢谢


    def cp_with_ortools(node_count,edge_count,edges,M,solution,max_degree):
        global colors
        from ortools.sat.python import cp_model
        solution = [0] * (node_count)# list of colors to nodes initialized with 0
        # Creates the model.
        model = cp_model.CpModel()

        # Creates the variables.
        for i in range(node_count):
            solution[i] = model.NewIntVar(0,int(node_count),'')
            #shouldnt be max_degree? isnt working..
            
        # Adds  constraint
        for edge in edges:
            model.Add(solution[edge[0]] != solution[edge[1]])

        # Create the objective function
        obj_var = model.NewIntVar(0,node_count,'makespan')
        model.AddMaxEquality(obj_var,solution)
        model.Minimize(obj_var)

        #model.Minimize(len(set(solution)))
        #model.Minimize(sum(solution)))

        # Creates a solver and solves the model.
        solver = cp_model.CpSolver()

        status = solver.Solve(model)

        if status == cp_model.OPTIMAL:
            colors = [solver.Value(solution[i]) for i in range(node_count)]

        return colors

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...