optimproblem

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

Описание

пример

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 : 

	Solve for:
       x

	maximize :
       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);
Solving problem using linprog.

Optimal solution found.
sol.x
ans = 2×1

   25.0000
   15.0000

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

свернуть все

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

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

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

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

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

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

Для просмотра документации необходимо авторизоваться на сайте