Class LinearOptimizationSolution

LinearOptimizationSolution

حلّ برنامج خطي يحلّ المثال أدناه البرنامج الخطي التالي:

متغيران، x وy:
0 ≤ x ≤ 10
0 ≤ y ≤ 5

القيود:
0 ≤ 2 * x + 5 * y ≤ 10
0 ≤ 10 * x + 3 * y ≤ 20

الهدف:
زيادة x + y إلى أقصى حد

const 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
let constraint = engine.addConstraint(0, 10);
constraint.setCoefficient('x', 2);
constraint.setCoefficient('y', 5);

// Create the constraint: 0 <= 10 * x + 3 * y <= 20
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
const solution = engine.solve();
if (!solution.isValid()) {
  Logger.log(`No solution ${solution.getStatus()}`);
} else {
  Logger.log(`Objective  value: ${solution.getObjectiveValue()}`);
  Logger.log(`Value of x: ${solution.getVariableValue('x')}`);
  Logger.log(`Value of y: ${solution.getVariableValue('y')}`);
}

الطُرق

الطريقةنوع القيمة التي تم إرجاعهاوصف قصير
getObjectiveValue()Numberتعرض هذه الدالة قيمة دالة الهدف في الحلّ الحالي.
getStatus()Statusتعرض هذه السمة حالة الحلّ.
getVariableValue(variableName)Numberتعرض هذه الدالة قيمة متغيّر في الحلّ الذي تم إنشاؤه من خلال آخر استدعاء للدالة LinearOptimizationEngine.solve().
isValid()Booleanتحدّد ما إذا كان الحلّ ممكنًا أو مثاليًا.

مستندات تفصيلية

getObjectiveValue()

تعرض هذه الدالة قيمة دالة الهدف في الحلّ الحالي.

const engine = LinearOptimizationService.createEngine();

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

// ...

// Solve the linear program
const solution = engine.solve();
Logger.log(`ObjectiveValue: ${solution.getObjectiveValue()}`);

الإرجاع

Number: قيمة دالة الهدف


getStatus()

تعرض هذه السمة حالة الحلّ. قبل حلّ المشكلة، ستكون الحالة NOT_SOLVED.

const engine = LinearOptimizationService.createEngine();

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

// ...

// Solve the linear program
const solution = engine.solve();
const status = solution.getStatus();

if (status !== LinearOptimizationService.Status.FEASIBLE &&
    status !== LinearOptimizationService.Status.OPTIMAL) {
  throw `No solution ${status}`;
}
Logger.log(`Status: ${status}`);

الإرجاع

Status — حالة أداة الحل


getVariableValue(variableName)

تعرض هذه الدالة قيمة متغيّر في الحلّ الذي تم إنشاؤه من خلال آخر استدعاء للدالة LinearOptimizationEngine.solve().

const engine = LinearOptimizationService.createEngine();

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

// ...

// Solve the linear program
const solution = engine.solve();
Logger.log(`Value of x: ${solution.getVariableValue('x')}`);

المَعلمات

الاسمالنوعالوصف
variableNameStringاسم المتغيّر

الإرجاع

Number: قيمة المتغير في الحل


isValid()

تحدّد ما إذا كان الحلّ ممكنًا أو مثاليًا.

const engine = LinearOptimizationService.createEngine();

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

// ...

// Solve the linear program
const solution = engine.solve();
if (!solution.isValid()) {
  throw `No solution ${solution.getStatus()}`;
}

الإرجاع

Booleantrue إذا كان الحلّ صالحًا (Status.FEASIBLE أو Status.OPTIMAL)، أو false إذا لم يكن صالحًا