专栏名称: 运筹OR帷幄
致力于成为全球最大的运筹学中文线上社区
今天看啥  ›  专栏  ›  运筹OR帷幄

ortools求解非线性问题

运筹OR帷幄  · 公众号  ·  · 2024-07-13 19:56

文章预览

最近抽空研究了谷歌运筹优化库ortools底层封装的函数,发现其自带的许多函数能解决很多复杂的非线性规划问题。 例如:以下是一个目标函数为非线性表达式(包含x与y的乘积)的例子。 直接使用线性规划模型建模,一般是无法求解的。在ortools中一堆非线性函数,可以在建模过程中应用,利用好这些非线性函数可以处理绝大部分问题。 在本例中使用 AddMultip licationEquality函数,可 以生成一个新的 乘 积变量 ,再根据 这个变量编写约束或者目标函数 就 可以对模型求解。 完整代码 from ortools.sat.python import cp_model model = cp_model.CpModel() # x,y,z为0到100之间的整数 x = model.NewIntVar(0, 100,  'x' ) y = model.NewIntVar(0, 100,  'y' ) z= model.NewIntVar(0, 100,  'z' ) ##     约束: ### 2x+3y < 100 ### x*y-z>10 mult=model.NewIntVar(0, 10000,  'mm' ) model.AddMultiplicationEquality(mult, x, y) ………………………………

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