# [START program] # [START import] from __future__ import print_function from ortools.linear_solver import pywraplp # [END import] def main(): # [START solver] # Create the linear solver with the GLOP backend. solver = pywraplp.Solver('simple_lp_program', pywraplp.Solver.GLOP_LINEAR_PROGRAMMING) # [END solver] # [START variables] # Create variables x_i,j>=0, store them in a 2D list to access later variables = [] for i in range(1,5): sublist = [] for j in range(1,4): sublist.append(solver.NumVar(0, solver.infinity(), 'x_'+str(i)+","+str(j))) variables.append(sublist) print('Number of variables =', solver.NumVariables()) print("Should be 12", variables) # [END variables] # [START constraints] # Create a linear constraint, 0 <= x + y <= 2. #cargo constraints maxcargo = [18,15,23,12] for i in range(4): ct = solver.Constraint(0,maxcargo[i]) for j in range(3): ct.SetCoefficient(variables[i][j],1) #weight constraints maxweight = [10,16,8] for j in range(3): ct = solver.Constraint(0,maxweight[j]) for i in range(4): ct.SetCoefficient(variables[i][j],1) maxvolume = [6800,8700,5300] coeffs = [480,650,580,390] for j in range(3): ct = solver.Constraint(0,maxvolume[j]) for i in range(4): ct.SetCoefficient(variables[i][j],coeffs[i]) print('Number of constraints =', solver.NumConstraints()) print("Should be 10") # [END constraints] # [START objective] # Create the objective function profits = [310,380,350,285] objective = solver.Objective() for i in range(4): for j in range(3): objective.SetCoefficient(variables[i][j],profits[i]) objective.SetMaximization() # [END objective] # [START solve] solver.Solve() # [END solve] # [START print_solution] print('Solution:') print('Objective value =', objective.Value()) for i in range(4): for j in range(3): print(variables[i][j].name(),' = ', variables[i][j].solution_value()) # [END print_solution] if __name__ == '__main__': main() # [END program]