Class LinearOptimizationEngine

LinearOptimizationEngine

선형 프로그램을 모델링하고 해결하는 데 사용되는 엔진입니다. 아래 예는 다음 문제를 해결합니다. 선형 프로그램:

두 개의 변수 xy:
0 ≤ x ≤ 10 <ph type="x-smartling-placeholder">
</ph> 0 ≤ y ≤ 5

제약조건:
0 ≤ 2 * x + 5 * y ≤ 10
<ph type="x-smartling-placeholder">0 ≤ 10 * x + 3 * y ≤ 20</ph>

목표:
x + y 최대화

var engine = LinearOptimizationService.createEngine();

// Add variables, constraints and define the objective with addVariable(), addConstraint(), etc
// Add two variables, 0 <= x <= 10 and 0 <= y <= 5
engine.addVariable('x', 0, 10);
engine.addVariable('y', 0, 5);

// Create the constraint: 0 <= 2 * x + 5 * y <= 10
var constraint = engine.addConstraint(0, 10);
constraint.setCoefficient('x', 2);
constraint.setCoefficient('y', 5);

// Create the constraint: 0 <= 10 * x + 3 * y <= 20
var constraint = engine.addConstraint(0, 20);
constraint.setCoefficient('x', 10);
constraint.setCoefficient('y', 3);

// Set the objective to be x + y
engine.setObjectiveCoefficient('x', 1);
engine.setObjectiveCoefficient('y', 1);

// Engine should maximize the objective
engine.setMaximization();

// Solve the linear program
var solution = engine.solve();
if (!solution.isValid()) {
  Logger.log('No solution ' + solution.getStatus());
} else {
  Logger.log('Value of x: ' + solution.getVariableValue('x'));
  Logger.log('Value of y: ' + solution.getVariableValue('y'));
}

메서드

메서드반환 유형간략한 설명
addConstraint(lowerBound, upperBound)LinearOptimizationConstraint모델에 새 선형 제약조건을 추가합니다.
addConstraints(lowerBounds, upperBounds, variableNames, coefficients)LinearOptimizationEngine모델에 제약 조건을 일괄적으로 추가합니다.
addVariable(name, lowerBound, upperBound)LinearOptimizationEngine모델에 새 연속 변수를 추가합니다.
addVariable(name, lowerBound, upperBound, type)LinearOptimizationEngine모델에 새 변수를 추가합니다.
addVariable(name, lowerBound, upperBound, type, objectiveCoefficient)LinearOptimizationEngine모델에 새 변수를 추가합니다.
addVariables(names, lowerBounds, upperBounds, types, objectiveCoefficients)LinearOptimizationEngine변수를 모델에 일괄 추가합니다.
setMaximization()LinearOptimizationEngine선형 목적 함수를 최대화하는 최적화 방향을 설정합니다.
setMinimization()LinearOptimizationEngine선형 목적 함수를 최소화하는 최적화 방향을 설정합니다.
setObjectiveCoefficient(variableName, coefficient)LinearOptimizationEngine선형 목적 함수에서 변수의 계수를 설정합니다.
solve()LinearOptimizationSolution기본 기한이 30초인 현재 선형 프로그램을 해결합니다.
solve(seconds)LinearOptimizationSolution현재 선형 프로그램을 풉니다.

자세한 문서

addConstraint(lowerBound, upperBound)

모델에 새 선형 제약조건을 추가합니다. 제약조건의 상한과 하한은 정의할 수 있습니다. 변수의 계수는 LinearOptimizationConstraint.setCoefficient(variableName, coefficient) 호출을 통해 정의됩니다.

var engine = LinearOptimizationService.createEngine();

// Create a linear constraint with the bounds 0 and 10
var constraint = engine.addConstraint(0, 10);

// Create a variable so we can add it to the constraint
engine.addVariable('x', 0, 5);

// Set the coefficient of the variable in the constraint. The constraint is now:
// 0 <= 2 * x <= 5
constraint.setCoefficient('x', 2);

매개변수

이름유형설명
lowerBoundNumber제약조건의 하한
upperBoundNumber제약조건의 상한값

리턴

LinearOptimizationConstraint - 생성된 제약조건


addConstraints(lowerBounds, upperBounds, variableNames, coefficients)

모델에 제약 조건을 일괄적으로 추가합니다.

var engine = LinearOptimizationService.createEngine();

// Add a boolean variable 'x' (integer >= 0 and <= 1) and a real (continuous >= 0 and <= 100)
variable 'y'.
engine.addVariables(['x', 'y'], [0, 0], [1, 100],
    [LinearOptimizationService.VariableType.INTEGER,
        LinearOptimizationService.VariableType.CONTINUOUS]);

// Adds two constraints:
//   0 <= x + y <= 3
//   1 <= 10 * x - y <= 5
engine.addConstraints([0.0, 1.0], [3.0, 5.0], [['x', 'y'], ['x', 'y']], [[1, 1], [10, -1]]);

매개변수

이름유형설명
lowerBoundsNumber[]제약 조건의 하한
upperBoundsNumber[]제약 조건의 상한값
variableNamesString[][]계수가 설정되는 변수의 이름
coefficientsNumber[][]설정 중인 계수

리턴

LinearOptimizationEngine - 선형 최적화 엔진


addVariable(name, lowerBound, upperBound)

모델에 새 연속 변수를 추가합니다. 변수는 이름으로 참조됩니다. 유형 VariableType.CONTINUOUS로 설정되어 있습니다.

var engine = LinearOptimizationService.createEngine();
var constraint = engine.addConstraint(0, 10);

// Add a boolean variable (integer >= 0 and <= 1)
engine.addVariable('x', 0, 1, LinearOptimizationService.VariableType.INTEGER);

// Add a real (continuous) variable. Notice the lack of type specification.
engine.addVariable('y', 0, 100);

매개변수

이름유형설명
nameString변수의 고유한 이름입니다.
lowerBoundNumber변수의 하한값
upperBoundNumber변수의 상한값

리턴

LinearOptimizationEngine - 선형 최적화 엔진


addVariable(name, lowerBound, upperBound, type)

모델에 새 변수를 추가합니다. 변수는 이름으로 참조됩니다.

var engine = LinearOptimizationService.createEngine();
var constraint = engine.addConstraint(0, 10);

// Add a boolean variable (integer >= 0 and <= 1)
engine.addVariable('x', 0, 1, LinearOptimizationService.VariableType.INTEGER);

// Add a real (continuous) variable
engine.addVariable('y', 0, 100, LinearOptimizationService.VariableType.CONTINUOUS);

매개변수

이름유형설명
nameString변수의 고유한 이름입니다.
lowerBoundNumber변수의 하한값
upperBoundNumber변수의 상한값
typeVariableType변수의 유형으로, VariableType 중 하나일 수 있습니다.

리턴

LinearOptimizationEngine - 선형 최적화 엔진


addVariable(name, lowerBound, upperBound, type, objectiveCoefficient)

모델에 새 변수를 추가합니다. 변수는 이름으로 참조됩니다.

var engine = LinearOptimizationService.createEngine();
var constraint = engine.addConstraint(0, 10);

// Add a boolean variable (integer >= 0 and <= 1)
engine.addVariable('x', 0, 1, LinearOptimizationService.VariableType.INTEGER, 2);
// The objective is now 2 * x.

// Add a real (continuous) variable
engine.addVariable('y', 0, 100, LinearOptimizationService.VariableType.CONTINUOUS, -5);
// The objective is now 2 * x - 5 * y.

매개변수

이름유형설명
nameString변수의 고유한 이름입니다.
lowerBoundNumber변수의 하한값
upperBoundNumber변수의 상한값
typeVariableType변수의 유형으로, VariableType 중 하나일 수 있습니다.
objectiveCoefficientNumber변수의 객관적 계수

리턴

LinearOptimizationEngine - 선형 최적화 엔진


addVariables(names, lowerBounds, upperBounds, types, objectiveCoefficients)

변수를 모델에 일괄 추가합니다. 변수는 이름으로 참조됩니다.

var engine = LinearOptimizationService.createEngine();

// Add a boolean variable 'x' (integer >= 0 and <= 1) and a real (continuous >=0 and <= 100)
// variable 'y'.
engine.addVariables(['x', 'y'], [0, 0], [1, 100],
    [LinearOptimizationService.VariableType.INTEGER,
        LinearOptimizationService.VariableType.CONTINUOUS]);

매개변수

이름유형설명
namesString[]변수의 고유한 이름
lowerBoundsNumber[]변수의 하한
upperBoundsNumber[]변수의 상한값
typesVariableType[]변수의 유형은 VariableType 중 하나일 수 있습니다.
objectiveCoefficientsNumber[]변수의 객관적 계수를

리턴

LinearOptimizationEngine - 선형 최적화 엔진


setMaximization()

선형 목적 함수를 최대화하는 최적화 방향을 설정합니다.

var engine = LinearOptimizationService.createEngine();

// Add a real (continuous) variable. Notice the lack of type specification.
engine.addVariable('y', 0, 100);

// Set the coefficient of 'y' in the objective.
// The objective is now 5 * y
engine.setObjectiveCoefficient('y', 5);

// We want to maximize.
engine.setMaximization();

리턴

LinearOptimizationEngine - 선형 최적화 엔진


setMinimization()

선형 목적 함수를 최소화하는 최적화 방향을 설정합니다.

var engine = LinearOptimizationService.createEngine();

// Add a real (continuous) variable. Notice the lack of type specification.
engine.addVariable('y', 0, 100);

// Set the coefficient of 'y' in the objective.
// The objective is now 5 * y
engine.setObjectiveCoefficient('y', 5);

// We want to minimize
engine.setMinimization();

리턴

LinearOptimizationEngine - 선형 최적화 엔진


setObjectiveCoefficient(variableName, coefficient)

선형 목적 함수에서 변수의 계수를 설정합니다.

var engine = LinearOptimizationService.createEngine();

// Add a real (continuous) variable. Notice the lack of type specification.
engine.addVariable('y', 0, 100);

// Set the coefficient of 'y' in the objective.
// The objective is now 5 * y
engine.setObjectiveCoefficient('y', 5);

매개변수

이름유형설명
variableNameString계수를 설정하는 변수의 이름
coefficientNumber목적 함수의 변수 계수

리턴

LinearOptimizationEngine - 선형 최적화 엔진


solve()

기본 기한이 30초인 현재 선형 프로그램을 해결합니다. 찾은 솔루션을 반환합니다.

var engine = LinearOptimizationService.createEngine();

// Add variables, constraints and define the objective with addVariable(), addConstraint(), etc
engine.addVariable('x', 0, 10);

// ...

// Solve the linear program
var solution = engine.solve();
if (!solution.isValid()) {
  throw 'No solution ' + solution.getStatus();
}
Logger.log('Value of x: ' + solution.getVariableValue('x'));

리턴

LinearOptimizationSolution - 최적화 솔루션


solve(seconds)

현재 선형 프로그램을 풉니다. 찾은 솔루션을 반환합니다. 최적의 솔루션을 제공합니다

var engine = LinearOptimizationService.createEngine();

// Add variables, constraints and define the objective with addVariable(), addConstraint(), etc
engine.addVariable('x', 0, 10);

// ...

// Solve the linear program
var solution = engine.solve(300);
if (!solution.isValid()) {
  throw 'No solution ' + solution.getStatus();
}
Logger.log('Value of x: ' + solution.getVariableValue('x'));

매개변수

이름유형설명
secondsNumber문제 해결 기한(초) 최대 기한은 300초입니다.

리턴

LinearOptimizationSolution - 최적화 솔루션