optimproblem

Создайте задачу оптимизации

Синтаксис

prob = optimproblem
prob = optimproblem(Name,Value)

Описание

пример

prob = optimproblem создает задачу оптимизации со свойствами по умолчанию.

пример

prob = optimproblem(Name,Value) дополнительные опции использования заданы одним или несколькими аргументами пары Name,Value. Например, чтобы задать проблему максимизации вместо проблемы минимизации, используйте prob = optimproblem('ObjectiveSense','maximize').

Примеры

свернуть все

Создайте задачу оптимизации со свойствами по умолчанию.

prob = optimproblem
prob = 
  OptimizationProblem with properties:

       Description: ''
    ObjectiveSense: 'minimize'
         Variables: [0x0 struct] containing 0 OptimizationVariables
         Objective: [0x0 OptimizationExpression]
       Constraints: [0x0 struct] containing 0 OptimizationConstraints

  No problem defined.

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

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

Входные параметры

свернуть все

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: Чтобы задать проблему максимизации, используйте prob = optimproblem('ObjectiveSense','maximize').

Ограничения задач, заданные как массив OptimizationConstraint или структура с массивами OptimizationConstraint как поля.

Пример: prob = optimproblem('Constraints',sum(x,2) == 1)

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

Пример: prob = optimproblem('Description',"An iterative approach to the Traveling Salesman problem")

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

Целевая функция, заданная как скалярный объект OptimizationExpression.

Пример: prob = optimproblem('Objective',sum(sum(x))) для 2D переменной x

Смысл оптимизации, заданной как 'minimize' или 'maximize'. Можно также задать 'min', чтобы получить 'minimize' или 'max', чтобы получить 'maximize'. Функция solve минимизирует цель, когда ObjectiveSense является 'minimize' и максимизирует цель, когда ObjectiveSense является 'maximize'.

Пример: prob = optimproblem('ObjectiveSense','max')

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

Выходные аргументы

свернуть все

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

Введенный в R2017b