Создайте задачу оптимизации
prob = optimproblem
prob = optimproblem(Name,Value)
дополнительные опции использования заданы одним или несколькими аргументами пары 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
как поляОграничения задач, заданные как массив OptimizationConstraint
или структура с массивами OptimizationConstraint
как поля.
Пример: prob = optimproblem('Constraints',sum(x,2) == 1)
'Description'
— Problem''
(значение по умолчанию) | представляет в виде строки | вектор символовПроблемная метка, заданная как строка или вектор символов. Программное обеспечение не использует Description
для вычисления. Description
является произвольной меткой, которую можно использовать по любой причине. Например, можно совместно использовать, заархивировать, или представить модель или проблему, и хранить описательную информацию о модели или проблеме в свойстве Description
.
Пример: prob = optimproblem('Description',"An iterative approach to the Traveling Salesman problem")
Типы данных: char | string
Цель
Целевая функцияOptimizationExpression
Целевая функция, заданная как скалярный объект OptimizationExpression
.
Пример: prob = optimproblem('Objective',sum(sum(x)))
для 2D переменной x
'ObjectiveSense'
— Смысл оптимизации'minimize'
(значение по умолчанию) | 'min'
| 'maximize'
| 'max'
Смысл оптимизации, заданной как 'minimize'
или 'maximize'
. Можно также задать 'min'
, чтобы получить 'minimize'
или 'max'
, чтобы получить 'maximize'
. Функция solve
минимизирует цель, когда ObjectiveSense
является 'minimize'
и максимизирует цель, когда ObjectiveSense
является 'maximize'
.
Пример: prob = optimproblem('ObjectiveSense','max')
Типы данных: char | string
prob
— Задача оптимизацииOptimizationProblem
Задача оптимизации, возвращенная как объект OptimizationProblem
. Как правило, чтобы завершить описание проблемы, вы задаете целевую функцию и линейные ограничения. Однако у вас может быть проблема выполнимости, которая не имеет никакой целевой функции, или у вас может быть проблема без линейных ограничений. Решите полную проблему путем вызова solve
.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.