Java Reference

Java Reference

MPSolver.java
Go to the documentation of this file.
1 /* ----------------------------------------------------------------------------
2  * This file was automatically generated by SWIG (http://www.swig.org).
3  * Version 4.0.1
4  *
5  * Do not make changes to this file unless you know what you are doing--modify
6  * the SWIG interface file instead.
7  * ----------------------------------------------------------------------------- */
8 
9 package com.google.ortools.linearsolver;
10 
11 import java.lang.reflect.*;
12 
13 public class MPSolver {
14  private transient long swigCPtr;
15  protected transient boolean swigCMemOwn;
16 
17  protected MPSolver(long cPtr, boolean cMemoryOwn) {
18  swigCMemOwn = cMemoryOwn;
19  swigCPtr = cPtr;
20  }
21 
22  protected static long getCPtr(MPSolver obj) {
23  return (obj == null) ? 0 : obj.swigCPtr;
24  }
25 
26  @SuppressWarnings("deprecation")
27  protected void finalize() {
28  delete();
29  }
30 
31  public synchronized void delete() {
32  if (swigCPtr != 0) {
33  if (swigCMemOwn) {
34  swigCMemOwn = false;
35  main_research_linear_solverJNI.delete_MPSolver(swigCPtr);
36  }
37  swigCPtr = 0;
38  }
39  }
40 
44  public MPVariable[] makeVarArray(int count, double lb, double ub, boolean integer) {
45  MPVariable[] array = new MPVariable[count];
46  for (int i = 0; i < count; ++i) {
47  array[i] = makeVar(lb, ub, integer, "");
48  }
49  return array;
50  }
51 
55  public MPVariable[] makeVarArray(int count, double lb, double ub, boolean integer,
56  String var_name) {
57  MPVariable[] array = new MPVariable[count];
58  for (int i = 0; i < count; ++i) {
59  array[i] = makeVar(lb, ub, integer, var_name + i);
60  }
61  return array;
62  }
63 
64  public MPVariable[] makeNumVarArray(int count, double lb, double ub) {
65  return makeVarArray(count, lb, ub, false);
66  }
67 
68  public MPVariable[] makeNumVarArray(int count, double lb, double ub, String var_name) {
69  return makeVarArray(count, lb, ub, false, var_name);
70  }
71 
72  public MPVariable[] makeIntVarArray(int count, double lb, double ub) {
73  return makeVarArray(count, lb, ub, true);
74  }
75 
76  public MPVariable[] makeIntVarArray(int count, double lb, double ub, String var_name) {
77  return makeVarArray(count, lb, ub, true, var_name);
78  }
79 
80  public MPVariable[] makeBoolVarArray(int count) {
81  return makeVarArray(count, 0.0, 1.0, true);
82  }
83 
84  public MPVariable[] makeBoolVarArray(int count, String var_name) {
85  return makeVarArray(count, 0.0, 1.0, true, var_name);
86  }
87 
88  public MPSolver(String name, MPSolver.OptimizationProblemType problem_type) {
89  this(main_research_linear_solverJNI.new_MPSolver(name, problem_type.swigValue()), true);
90  }
91 
92  public static boolean supportsProblemType(MPSolver.OptimizationProblemType problem_type) {
93  return main_research_linear_solverJNI.MPSolver_supportsProblemType(problem_type.swigValue());
94  }
95 
96  public void clear() {
97  main_research_linear_solverJNI.MPSolver_clear(swigCPtr, this);
98  }
99 
100  public int numVariables() {
101  return main_research_linear_solverJNI.MPSolver_numVariables(swigCPtr, this);
102  }
103 
104  public MPVariable[] variables() {
105  return main_research_linear_solverJNI.MPSolver_variables(swigCPtr, this);
106 }
107 
108  public MPVariable lookupVariableOrNull(String var_name) {
109  long cPtr = main_research_linear_solverJNI.MPSolver_lookupVariableOrNull(swigCPtr, this, var_name);
110  return (cPtr == 0) ? null : new MPVariable(cPtr, false);
111  }
112 
113  public MPVariable makeVar(double lb, double ub, boolean integer, String name) {
114  long cPtr = main_research_linear_solverJNI.MPSolver_makeVar(swigCPtr, this, lb, ub, integer, name);
115  return (cPtr == 0) ? null : new MPVariable(cPtr, false);
116  }
117 
118  public MPVariable makeNumVar(double lb, double ub, String name) {
119  long cPtr = main_research_linear_solverJNI.MPSolver_makeNumVar(swigCPtr, this, lb, ub, name);
120  return (cPtr == 0) ? null : new MPVariable(cPtr, false);
121  }
122 
123  public MPVariable makeIntVar(double lb, double ub, String name) {
124  long cPtr = main_research_linear_solverJNI.MPSolver_makeIntVar(swigCPtr, this, lb, ub, name);
125  return (cPtr == 0) ? null : new MPVariable(cPtr, false);
126  }
127 
128  public MPVariable makeBoolVar(String name) {
129  long cPtr = main_research_linear_solverJNI.MPSolver_makeBoolVar(swigCPtr, this, name);
130  return (cPtr == 0) ? null : new MPVariable(cPtr, false);
131  }
132 
133  public int numConstraints() {
134  return main_research_linear_solverJNI.MPSolver_numConstraints(swigCPtr, this);
135  }
136 
138  return main_research_linear_solverJNI.MPSolver_constraints(swigCPtr, this);
139 }
140 
141  public MPConstraint lookupConstraintOrNull(String constraint_name) {
142  long cPtr = main_research_linear_solverJNI.MPSolver_lookupConstraintOrNull(swigCPtr, this, constraint_name);
143  return (cPtr == 0) ? null : new MPConstraint(cPtr, false);
144  }
145 
146  public MPConstraint makeConstraint(double lb, double ub) {
147  long cPtr = main_research_linear_solverJNI.MPSolver_makeConstraint__SWIG_0(swigCPtr, this, lb, ub);
148  return (cPtr == 0) ? null : new MPConstraint(cPtr, false);
149  }
150 
152  long cPtr = main_research_linear_solverJNI.MPSolver_makeConstraint__SWIG_1(swigCPtr, this);
153  return (cPtr == 0) ? null : new MPConstraint(cPtr, false);
154  }
155 
156  public MPConstraint makeConstraint(double lb, double ub, String name) {
157  long cPtr = main_research_linear_solverJNI.MPSolver_makeConstraint__SWIG_2(swigCPtr, this, lb, ub, name);
158  return (cPtr == 0) ? null : new MPConstraint(cPtr, false);
159  }
160 
161  public MPConstraint makeConstraint(String name) {
162  long cPtr = main_research_linear_solverJNI.MPSolver_makeConstraint__SWIG_3(swigCPtr, this, name);
163  return (cPtr == 0) ? null : new MPConstraint(cPtr, false);
164  }
165 
167  long cPtr = main_research_linear_solverJNI.MPSolver_objective(swigCPtr, this);
168  return (cPtr == 0) ? null : new MPObjective(cPtr, false);
169  }
170 
172  return MPSolver.ResultStatus.swigToEnum(main_research_linear_solverJNI.MPSolver_solve__SWIG_0(swigCPtr, this));
173  }
174 
176  return MPSolver.ResultStatus.swigToEnum(main_research_linear_solverJNI.MPSolver_solve__SWIG_1(swigCPtr, this, MPSolverParameters.getCPtr(param), param));
177  }
178 
179  public double[] computeConstraintActivities() {
180  return main_research_linear_solverJNI.MPSolver_computeConstraintActivities(swigCPtr, this);
181 }
182 
183  public boolean verifySolution(double tolerance, boolean log_errors) {
184  return main_research_linear_solverJNI.MPSolver_verifySolution(swigCPtr, this, tolerance, log_errors);
185  }
186 
187  public void reset() {
188  main_research_linear_solverJNI.MPSolver_reset(swigCPtr, this);
189  }
190 
191  public boolean interruptSolve() {
192  return main_research_linear_solverJNI.MPSolver_interruptSolve(swigCPtr, this);
193  }
194 
195  public boolean setSolverSpecificParametersAsString(String parameters) {
196  return main_research_linear_solverJNI.MPSolver_setSolverSpecificParametersAsString(swigCPtr, this, parameters);
197  }
198 
199  public void SetStartingLpBasis(SWIGTYPE_p_std__vectorT_operations_research__MPSolver__BasisStatus_t variable_statuses, SWIGTYPE_p_std__vectorT_operations_research__MPSolver__BasisStatus_t constraint_statuses) {
200  main_research_linear_solverJNI.MPSolver_SetStartingLpBasis(swigCPtr, this, SWIGTYPE_p_std__vectorT_operations_research__MPSolver__BasisStatus_t.getCPtr(variable_statuses), SWIGTYPE_p_std__vectorT_operations_research__MPSolver__BasisStatus_t.getCPtr(constraint_statuses));
201  }
202 
203  public static double infinity() {
204  return main_research_linear_solverJNI.MPSolver_infinity();
205  }
206 
207  public void enableOutput() {
208  main_research_linear_solverJNI.MPSolver_enableOutput(swigCPtr, this);
209  }
210 
211  public void suppressOutput() {
212  main_research_linear_solverJNI.MPSolver_suppressOutput(swigCPtr, this);
213  }
214 
215  public long iterations() {
216  return main_research_linear_solverJNI.MPSolver_iterations(swigCPtr, this);
217  }
218 
219  public long nodes() {
220  return main_research_linear_solverJNI.MPSolver_nodes(swigCPtr, this);
221  }
222 
223  public double computeExactConditionNumber() {
224  return main_research_linear_solverJNI.MPSolver_computeExactConditionNumber(swigCPtr, this);
225  }
226 
227  public void setTimeLimit(long time_limit_milliseconds) {
228  main_research_linear_solverJNI.MPSolver_setTimeLimit(swigCPtr, this, time_limit_milliseconds);
229  }
230 
231  public long wallTime() {
232  return main_research_linear_solverJNI.MPSolver_wallTime(swigCPtr, this);
233  }
234 
236  return main_research_linear_solverJNI.MPSolver_loadModelFromProto(swigCPtr, this, input_model.toByteArray());
237  }
238 
240  return main_research_linear_solverJNI.MPSolver_loadModelFromProtoWithUniqueNamesOrDie(swigCPtr, this, input_model.toByteArray());
241  }
242 
244  byte[] buf = main_research_linear_solverJNI.MPSolver_exportModelToProto(swigCPtr, this);
245  if (buf == null || buf.length == 0) {
246  return null;
247  }
248  try {
250  } catch (com.google.protobuf.InvalidProtocolBufferException e) {
251  throw new RuntimeException(
252  "Unable to parse com.google.ortools.linearsolver.MPModelProto protocol message.");
253  }
254 }
255 
257  byte[] buf = main_research_linear_solverJNI.MPSolver_createSolutionResponseProto(swigCPtr, this);
258  if (buf == null || buf.length == 0) {
259  return null;
260  }
261  try {
263  } catch (com.google.protobuf.InvalidProtocolBufferException e) {
264  throw new RuntimeException(
265  "Unable to parse com.google.ortools.linearsolver.MPSolutionResponse protocol message.");
266  }
267 }
268 
270  return main_research_linear_solverJNI.MPSolver_loadSolutionFromProto(swigCPtr, this, response.toByteArray());
271  }
272 
274  byte[] buf = main_research_linear_solverJNI.MPSolver_solveWithProto(model_request.toByteArray());
275  if (buf == null || buf.length == 0) {
276  return null;
277  }
278  try {
280  } catch (com.google.protobuf.InvalidProtocolBufferException e) {
281  throw new RuntimeException(
282  "Unable to parse com.google.ortools.linearsolver.MPSolutionResponse protocol message.");
283  }
284 }
285 
287  return main_research_linear_solverJNI.MPSolver_exportModelAsLpFormat__SWIG_0(swigCPtr, this, MPModelExportOptions.getCPtr(options), options);
288  }
289 
290  public String exportModelAsLpFormat() {
291  return main_research_linear_solverJNI.MPSolver_exportModelAsLpFormat__SWIG_1(swigCPtr, this);
292  }
293 
295  return main_research_linear_solverJNI.MPSolver_exportModelAsMpsFormat__SWIG_0(swigCPtr, this, MPModelExportOptions.getCPtr(options), options);
296  }
297 
298  public String exportModelAsMpsFormat() {
299  return main_research_linear_solverJNI.MPSolver_exportModelAsMpsFormat__SWIG_1(swigCPtr, this);
300  }
301 
302  public void setHint(MPVariable[] variables, double[] values) {
303  main_research_linear_solverJNI.MPSolver_setHint(swigCPtr, this, variables, values);
304  }
305 
306  public boolean setNumThreads(int num_theads) {
307  return main_research_linear_solverJNI.MPSolver_setNumThreads(swigCPtr, this, num_theads);
308  }
309 
311  CLP_LINEAR_PROGRAMMING(main_research_linear_solverJNI.MPSolver_CLP_LINEAR_PROGRAMMING_get()),
312  GLOP_LINEAR_PROGRAMMING(main_research_linear_solverJNI.MPSolver_GLOP_LINEAR_PROGRAMMING_get()),
313  CBC_MIXED_INTEGER_PROGRAMMING(main_research_linear_solverJNI.MPSolver_CBC_MIXED_INTEGER_PROGRAMMING_get()),
314  BOP_INTEGER_PROGRAMMING(main_research_linear_solverJNI.MPSolver_BOP_INTEGER_PROGRAMMING_get());
315 
316  public final int swigValue() {
317  return swigValue;
318  }
319 
320  public static OptimizationProblemType swigToEnum(int swigValue) {
321  OptimizationProblemType[] swigValues = OptimizationProblemType.class.getEnumConstants();
322  if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue)
323  return swigValues[swigValue];
324  for (OptimizationProblemType swigEnum : swigValues)
325  if (swigEnum.swigValue == swigValue)
326  return swigEnum;
327  throw new IllegalArgumentException("No enum " + OptimizationProblemType.class + " with value " + swigValue);
328  }
329 
330  @SuppressWarnings("unused")
331  private OptimizationProblemType() {
332  this.swigValue = SwigNext.next++;
333  }
334 
335  @SuppressWarnings("unused")
336  private OptimizationProblemType(int swigValue) {
337  this.swigValue = swigValue;
338  SwigNext.next = swigValue+1;
339  }
340 
341  @SuppressWarnings("unused")
342  private OptimizationProblemType(OptimizationProblemType swigEnum) {
343  this.swigValue = swigEnum.swigValue;
344  SwigNext.next = this.swigValue+1;
345  }
346 
347  private final int swigValue;
348 
349  private static class SwigNext {
350  private static int next = 0;
351  }
352  }
353 
354  public enum ResultStatus {
360  NOT_SOLVED(main_research_linear_solverJNI.MPSolver_NOT_SOLVED_get());
361 
362  public final int swigValue() {
363  return swigValue;
364  }
365 
366  public static ResultStatus swigToEnum(int swigValue) {
367  ResultStatus[] swigValues = ResultStatus.class.getEnumConstants();
368  if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue)
369  return swigValues[swigValue];
370  for (ResultStatus swigEnum : swigValues)
371  if (swigEnum.swigValue == swigValue)
372  return swigEnum;
373  throw new IllegalArgumentException("No enum " + ResultStatus.class + " with value " + swigValue);
374  }
375 
376  @SuppressWarnings("unused")
377  private ResultStatus() {
378  this.swigValue = SwigNext.next++;
379  }
380 
381  @SuppressWarnings("unused")
382  private ResultStatus(int swigValue) {
383  this.swigValue = swigValue;
384  SwigNext.next = swigValue+1;
385  }
386 
387  @SuppressWarnings("unused")
388  private ResultStatus(ResultStatus swigEnum) {
389  this.swigValue = swigEnum.swigValue;
390  SwigNext.next = this.swigValue+1;
391  }
392 
393  private final int swigValue;
394 
395  private static class SwigNext {
396  private static int next = 0;
397  }
398  }
399 
400  public enum BasisStatus {
401  FREE(main_research_linear_solverJNI.MPSolver_FREE_get()),
402  AT_LOWER_BOUND,
403  AT_UPPER_BOUND,
404  FIXED_VALUE,
405  BASIC;
406 
407  public final int swigValue() {
408  return swigValue;
409  }
410 
411  public static BasisStatus swigToEnum(int swigValue) {
412  BasisStatus[] swigValues = BasisStatus.class.getEnumConstants();
413  if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue)
414  return swigValues[swigValue];
415  for (BasisStatus swigEnum : swigValues)
416  if (swigEnum.swigValue == swigValue)
417  return swigEnum;
418  throw new IllegalArgumentException("No enum " + BasisStatus.class + " with value " + swigValue);
419  }
420 
421  @SuppressWarnings("unused")
422  private BasisStatus() {
423  this.swigValue = SwigNext.next++;
424  }
425 
426  @SuppressWarnings("unused")
427  private BasisStatus(int swigValue) {
428  this.swigValue = swigValue;
429  SwigNext.next = swigValue+1;
430  }
431 
432  @SuppressWarnings("unused")
433  private BasisStatus(BasisStatus swigEnum) {
434  this.swigValue = swigEnum.swigValue;
435  SwigNext.next = this.swigValue+1;
436  }
437 
438  private final int swigValue;
439 
440  private static class SwigNext {
441  private static int next = 0;
442  }
443  }
444 
445 }
boolean interruptSolve()
Definition: MPSolver.java:191
final int swigValue()
Definition: MPSolver.java:407
MPObjective objective()
Definition: MPSolver.java:166
MPVariable makeVar(double lb, double ub, boolean integer, String name)
Definition: MPSolver.java:113
void enableOutput()
Definition: MPSolver.java:207
UNBOUNDED
Definition: MPSolver.java:358
MPVariable lookupVariableOrNull(String var_name)
Definition: MPSolver.java:108
String exportModelAsLpFormat()
Definition: MPSolver.java:290
com.google.ortools.linearsolver.MPSolutionResponse createSolutionResponseProto()
Definition: MPSolver.java:256
MPVariable[] makeVarArray(int count, double lb, double ub, boolean integer)
Creates and returns an array of variables.
Definition: MPSolver.java:44
GLOP_LINEAR_PROGRAMMING
Definition: MPSolver.java:312
Protobuf type.
CLP_LINEAR_PROGRAMMING
Definition: MPSolver.java:311
String loadModelFromProto(com.google.ortools.linearsolver.MPModelProto input_model)
Definition: MPSolver.java:235
void setHint(MPVariable[] variables, double[] values)
Definition: MPSolver.java:302
boolean setSolverSpecificParametersAsString(String parameters)
Definition: MPSolver.java:195
static com.google.ortools.linearsolver.MPSolutionResponse solveWithProto(com.google.ortools.linearsolver.MPModelRequest model_request)
Definition: MPSolver.java:273
MPVariable makeNumVar(double lb, double ub, String name)
Definition: MPSolver.java:118
MPConstraint makeConstraint(double lb, double ub, String name)
Definition: MPSolver.java:156
INFEASIBLE
Definition: MPSolver.java:357
MPConstraint[] constraints()
Definition: MPSolver.java:137
Definition: MPSolver.java:400
static com.google.ortools.linearsolver.MPSolutionResponse parseFrom(java.nio.ByteBuffer data)
static BasisStatus swigToEnum(int swigValue)
Definition: MPSolver.java:411
FEASIBLE
Definition: MPSolver.java:356
MPVariable[] makeIntVarArray(int count, double lb, double ub)
Definition: MPSolver.java:72
boolean verifySolution(double tolerance, boolean log_errors)
Definition: MPSolver.java:183
BOP_INTEGER_PROGRAMMING
Definition: MPSolver.java:314
MPSolver(long cPtr, boolean cMemoryOwn)
Definition: MPSolver.java:17
MPVariable[] makeNumVarArray(int count, double lb, double ub)
Definition: MPSolver.java:64
double[] computeConstraintActivities()
Definition: MPSolver.java:179
void reset()
Definition: MPSolver.java:187
FREE
Definition: MPSolver.java:401
NOT_SOLVED
Definition: MPSolver.java:360
Definition: MPSolver.java:354
static double infinity()
Definition: MPSolver.java:203
String exportModelAsMpsFormat()
Definition: MPSolver.java:298
MPVariable makeBoolVar(String name)
Definition: MPSolver.java:128
boolean setNumThreads(int num_theads)
Definition: MPSolver.java:306
MPConstraint makeConstraint(double lb, double ub)
Definition: MPSolver.java:146
void setTimeLimit(long time_limit_milliseconds)
Definition: MPSolver.java:227
long wallTime()
Definition: MPSolver.java:231
long iterations()
Definition: MPSolver.java:215
static OptimizationProblemType swigToEnum(int swigValue)
Definition: MPSolver.java:320
MPConstraint makeConstraint()
Definition: MPSolver.java:151
MPVariable[] makeNumVarArray(int count, double lb, double ub, String var_name)
Definition: MPSolver.java:68
String loadModelFromProtoWithUniqueNamesOrDie(com.google.ortools.linearsolver.MPModelProto input_model)
Definition: MPSolver.java:239
static ResultStatus swigToEnum(int swigValue)
Definition: MPSolver.java:366
final int swigValue()
Definition: MPSolver.java:316
MPVariable makeIntVar(double lb, double ub, String name)
Definition: MPSolver.java:123
Definition: MPSolver.java:310
CBC_MIXED_INTEGER_PROGRAMMING
Definition: MPSolver.java:313
OPTIMAL
Definition: MPSolver.java:355
long nodes()
Definition: MPSolver.java:219
void clear()
Definition: MPSolver.java:96
String exportModelAsLpFormat(MPModelExportOptions options)
Definition: MPSolver.java:286
static boolean supportsProblemType(MPSolver.OptimizationProblemType problem_type)
Definition: MPSolver.java:92
MPVariable[] makeBoolVarArray(int count)
Definition: MPSolver.java:80
void suppressOutput()
Definition: MPSolver.java:211
MPVariable[] variables()
Definition: MPSolver.java:104
MPVariable[] makeBoolVarArray(int count, String var_name)
Definition: MPSolver.java:84
com.google.ortools.linearsolver.MPModelProto exportModelToProto()
Definition: MPSolver.java:243
MPSolver(String name, MPSolver.OptimizationProblemType problem_type)
Definition: MPSolver.java:88
String exportModelAsMpsFormat(MPModelExportOptions options)
Definition: MPSolver.java:294
MPConstraint makeConstraint(String name)
Definition: MPSolver.java:161
int numVariables()
Definition: MPSolver.java:100
Definition: MPVariable.java:13
static com.google.ortools.linearsolver.MPModelProto parseFrom(java.nio.ByteBuffer data)
MPVariable[] makeVarArray(int count, double lb, double ub, boolean integer, String var_name)
Creates and returns an array of named variables.
Definition: MPSolver.java:55
MPVariable[] makeIntVarArray(int count, double lb, double ub, String var_name)
Definition: MPSolver.java:76
final int swigValue()
Definition: MPSolver.java:362
boolean loadSolutionFromProto(com.google.ortools.linearsolver.MPSolutionResponse response)
Definition: MPSolver.java:269
MPSolver.ResultStatus solve(MPSolverParameters param)
Definition: MPSolver.java:175
MPConstraint lookupConstraintOrNull(String constraint_name)
Definition: MPSolver.java:141
double computeExactConditionNumber()
Definition: MPSolver.java:223
int numConstraints()
Definition: MPSolver.java:133
MPSolver.ResultStatus solve()
Definition: MPSolver.java:171
ABNORMAL
Definition: MPSolver.java:359
void SetStartingLpBasis(SWIGTYPE_p_std__vectorT_operations_research__MPSolver__BasisStatus_t variable_statuses, SWIGTYPE_p_std__vectorT_operations_research__MPSolver__BasisStatus_t constraint_statuses)
Definition: MPSolver.java:199
Definition: MPSolver.java:13