文章预览
cp-sat是ortools的一个强大的约束规划求解器,但其也能设定目标函数,且在开源免费求解器中求解效率非常高。 cp-sat的求解功能非常强大,谷歌的官网介绍比较少,需要大家对cp-sat底层的API深入研究才能逐渐发现其强大的求解功能。 本文介绍cp-sat求解非线性规划问题的建模技巧。 一个简单的非线性问题。 约束条件:x1,x2 为0到20的整数; x1*x1 + x2 < = 40 ; x1 + x2 < = 30 目标函数:max:x1 + 2 * x2 直接建模会报错 因为cp-sat不能直接识别x1*x1两个乘积的变量,直接按照常规方法建模会报错。 from ortools.sat.python import cp_model # 创建模型 model = cp_model.CpModel() # 定义变量 x1 = model.NewIntVar(0, 20, 'x1' ) x2 = model.NewIntVar(0, 20, 'x2' ) # 添加约束条件 model.Add(x1*x1 + x2 < = 40) model.Add(x1 + x2 < = 30) # 定义目标函数 model.Maximize(x1 + 2 * x2) # 创建求解器并求解 so
………………………………