OptimizationProblem

Задача оптимизации

Описание

Объект OptimizationProblem описывает задачу оптимизации, включая переменные для оптимизации, ограничений, целевой функции, и состоит ли цель в том, чтобы быть максимизирована или минимизирована. Решите полную проблему с помощью solve.

Создание

Создайте объект OptimizationProblem при помощи optimproblem.

Свойства

развернуть все

Проблемная метка, заданная как строка или вектор символов. Программное обеспечение не использует Description. Это - произвольная метка, которую можно использовать по любой причине. Например, можно совместно использовать, заархивировать, или представить модель или проблему, и хранить описательную информацию о модели или проблеме в свойстве Description.

Пример: "Describes a traveling salesman problem"

Типы данных: char | string

Индикация, чтобы минимизировать или максимизировать, заданный как 'minimize' или 'maximize'. Это свойство влияет, как solve работает.

Можно использовать краткое название 'min' для 'minimize' или 'max' для 'maximize'.

Пример: 'maximize'

Типы данных: char | string

Это свойство доступно только для чтения.

Переменные оптимизации в объекте, возвращенном как структура объектов OptimizationVariable.

Типы данных: struct

Целевая функция, заданная как скалярный OptimizationExpression или как структура, содержащая скалярный OptimizationExpression. Включите целевую функцию в проблему, когда вы создадите проблему, или позже при помощи записи через точку.

prob = optimproblem('Objective',5*brownies + 2*cookies)
% or
prob = optimproblem;
prob.Objective = 5*brownies + 2*cookies

Ограничения оптимизации, заданные как объект OptimizationConstraint или как структура, содержащая объекты OptimizationConstraint. Включите ограничения в проблему, когда вы создадите проблему, или позже при помощи записи через точку:

constrs = struct('TrayArea',10*brownies + 20*cookies <= traysize,...
    'TrayWeight',12*brownies + 18*cookies <= maxweight);
prob = optimproblem('Constraints',constrs)
% or
prob.Constraints.TrayArea = 10*brownies + 20*cookies <= traysize
prob.Constraints.TrayWeight = 12*brownies + 18*cookies <= maxweight

Удалите ограничение путем установки его на [].

prob.Constraints.TrayArea = [];

Функции объекта

writeproblemСохраните описание задачи оптимизации
showproblemОтобразите задачу оптимизации
solveРешите задачу оптимизации
prob2structПреобразуйте задачу оптимизации в форму решателя

Примеры

свернуть все

Создайте линейную проблему программирования для максимизации. Проблема имеет две положительных переменные и три линейных ограничения неравенства.

prob = optimproblem('ObjectiveSense','max');

Создайте положительные переменные. Включайте целевую функцию в проблему.

x = optimvar('x',2,1,'LowerBound',0);
prob.Objective = x(1) + 2*x(2);

Создайте линейные ограничения неравенства в проблеме.

cons1 = x(1) + 5*x(2) <= 100;
cons2 = x(1) + x(2) <= 40;
cons3 = 2*x(1) + x(2)/2 <= 60;
prob.Constraints.cons1 = cons1;
prob.Constraints.cons2 = cons2;
prob.Constraints.cons3 = cons3;

Рассмотрите проблему.

showproblem(prob)
  OptimizationProblem : 

	max :
       x(1) + 2*x(2)

	subject to cons1:
       x(1) + 5*x(2) <= 100

	subject to cons2:
       x(1) + x(2) <= 40

	subject to cons3:
       2*x(1) + 0.5*x(2) <= 60

	variable bounds:
       0 <= x(1)
       0 <= x(2)

Решите проблему.

sol = solve(prob);
Optimal solution found.
sol.x
ans = 2×1

   25.0000
   15.0000

Введенный в R2017b