欢迎来到飞鸟慕鱼博客,开始您的技术之旅!
当前位置: 首页知识笔记正文

利用ortools工具不算建模么,protools教程

墨初 知识笔记 43阅读

画出可行域如图所示/span>/span>/span>/span>/span>/span>/span>/span>/span>/span>/p> Python调用ortools求解 导入求解器 /span>/span>/span>/span>/span>/span>/span>/span>/span>/span>code class="prism language-python"># 导入(或包含)or - tools线性求解器包装器这是MIP求解器和线性求解器的接口如下所示from ortools.linear_solver import pywraplp/span>/span>/span>/span>/span>/span>/span>/span>/span>/span>/pre> 声明线性规划求解器 /span>/span>/span>/span>/span>/span>/span>/span>/span> is a wrapper for several different solvers, including Glop. The code below declares the GLOP solver.

/span>/span>/span>/span>/span>/span>/span>/span>/span>/span>code class="prism language-python">solver pywraplp.Solver.CreateSolver(GLOP)/span>/span>/span>/span>/span>/span>/span>/span>/span>/span>/pre> 创建决策变量 /span>/span>/span>/span>/span>/span>/span>/span>/span>/span>code class="prism language-python">x solver.NumVar(0, solver.infinity(), x)y solver.NumVar(0, solver.infinity(), y)fNumber of variables {solver.NumVariables()}/span>/span>/span>/span>/span>/span>/span>/span>/span>/span>/pre> /span>/span>/span>/span>/span>/span>/span>/span>/span>/span>code>Number of variables 2/span>/span>/span>/span>/span>/span>/span>/span>/span>/span>/pre> 约束条件 /span>/span>/span>/span>/span>/span>/span>/span>/span>/span>code class="prism language-python"># Constraint 0: x 2y < 14.solver.Add(x 2 * y < 14.0)# Constraint 1: 3x - y > 0.solver.Add(3 * x - y > 0.0)# Constraint 2: x - y < 2.solver.Add(x - y < 2.0)print(Number of constraints , solver.NumConstraints())/span>/span>/span>/span>/span>/span>/span>/span>/span>/span>/pre> 定义目标函数 /span>/span>/span>/span>/span>/span>/span>/span>/span>/span>code class="prism language-python"># Objective function: 3x 4y.solver.Maximize(3 * x 4 * y)/span>/span>/span>/span>/span>/span>/span>/span>/span>/span>/pre> 调用求解器 /span>/span>/span>/span>/span>/span>/span>/span>/span>/span>code class="prism language-python">status solver.Solve()/span>/span>/span>/span>/span>/span>/span>/span>/span>/span>/pre> /span>/span>/span>/span>/span>/span>/span>/span>/span>/span>code class="prism language-python">### 打印结果/span>/span>/span>/span>/span>/span>/span>/span>/span>/span>/pre> /span>/span>/span>/span>/span>/span>/span>/span>/span>/span>code class="prism language-python">if status pywraplp.Solver.OPTIMAL: print(Solution:) print(Objective value , solver.Objective().Value()) print(x , x.solution_value()) print(y , y.solution_value())else: print(The problem does not have an optimal solution.)/span>/span>/span>/span>/span>/span>/span>/span>/span>/span>/pre> /span>/span>/span>/span>/span>/span>/span>/span>/span>/span>code>Solution:Objective value 0.0x 0.0y 0.0/span>/span>/span>/span>/span>/span>/span>/span>/span>/span>/pre> /span>/span>/span>/span>/span>/span>/span>/span>/span>/span>code class="prism language-python"/span>/span>/span>/span>/span>/span>/span>/span>/span>/span>/code/span>/span>/span>/span>/span>/span>/span>/span>/span>/span>/pre> Java调用ortools求解 /span>/span>/span>/span>/span>/span>/span>/span>/span>/span>code class="prism language-java">package org.example;import com.google.ortools.Loader;import com.google.ortools.linearsolver.MPConstraint;import com.google.ortools.linearsolver.MPObjective;import com.google.ortools.linearsolver.MPSolver;import com.google.ortools.linearsolver.MPVariable;/** * Simple linear programming example. */public final class LinearProgrammingExample { public static void main(String[] args) { Loader.loadNativeLibraries(); MPSolver solver MPSolver.createSolver(GLOP); double infinity java.lang.Double.POSITIVE_INFINITY; // x and y are continuous non-negative variables. MPVariable x solver.makeNumVar(0.0, infinity, x); MPVariable y solver.makeNumVar(0.0, infinity, y); System.out.println(Number of variables solver.numVariables()); // x 2*y < 14. MPConstraint c0 solver.makeConstraint(-infinity, 14.0, c0); c0.setCoefficient(x, 1); c0.setCoefficient(y, 2); // 3*x - y > 0. MPConstraint c1 solver.makeConstraint(0.0, infinity, c1); c1.setCoefficient(x, 3); c1.setCoefficient(y, -1); // x - y < 2. MPConstraint c2 solver.makeConstraint(-infinity, 2.0, c2); c2.setCoefficient(x, 1); c2.setCoefficient(y, -1); System.out.println(Number of constraints solver.numConstraints()); // Maximize 3 * x 4 * y. MPObjective objective solver.objective(); objective.setCoefficient(x, 3); objective.setCoefficient(y, 4); objective.setMaximization(); final MPSolver.ResultStatus resultStatus solver.solve(); if (resultStatus MPSolver.ResultStatus.OPTIMAL) { System.out.println(Solution:); System.out.println(Objective value objective.value()); System.out.println(x x.solutionValue()); System.out.println(y y.solutionValue()); } else { System.err.println(The problem does not have an optimal solution!); } System.out.println(\nAdvanced usage:); System.out.println(Problem solved in solver.wallTime() milliseconds);//运行时间 System.out.println(Problem solved in solver.iterations() iterations);//迭代次数 } private LinearProgrammingExample() { }}/span>/span>/span>/span>/span>/span>/span>/span>/span>/span>/pre>

标签:
声明:无特别说明,转载请标明本文来源!