今天看啥  ›  专栏  ›  运筹OR帷幄

优化|使用cp-sat解决非线性规划问题

运筹OR帷幄  · 公众号  ·  · 2024-07-21 20:32

文章预览

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 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览