Преобразуйте задачу оптимизации в форму решателя
problem = prob2struct(prob)
problem = prob2struct(prob,x0)
problem = prob2struct(___,Name,Value)
возвращает структуру задачи оптимизации, подходящую для решения проблем с помощью problem
= prob2struct(prob
)linprog
, intlinprog
, quadprog
, lsqlin
, fmincon
или fminunc
. Для нелинейных проблем prob2struct
создает файлы для целевой функции, и, при необходимости, для нелинейных ограничительных функций и вспомогательных файлов.
, для любых входных параметров, задает дополнительные опции с помощью одного или нескольких аргументов пары "имя-значение". Например, для нелинейной проблемы, problem
= prob2struct(___,Name,Value
)problem = prob2struct(prob,'ObjectiveFunctionName','objfun1')
указывает, что prob2struct
создает файл с именем целевой функции objfun1.m
в текущей папке.
Если вы вызываете prob2struct
многократно на том же сеансе MATLAB® для нелинейных проблем, используйте ObjectiveFunctionName
и, при необходимости аргументы пары "имя-значение" ConstraintFunctionName
. Определение уникальных имен гарантирует, что получившиеся структуры задачи относятся к правильной цели и ограничительным функциям. В противном случае последующие вызовы prob2struct
могут заставить сгенерированные нелинейные файлы функции перезаписывать существующие файлы.
Чтобы постараться не вызывать бесконечную рекурсию, не вызывайте prob2struct
в ограничительной функции или цели.
При вызове prob2struct
параллельно для нелинейных проблем, гарантируйте, что получившаяся цель и ограничительные файлы функции имеют уникальные имена. Выполнение так избегает каждой передачи цикла, пишущего в тот же файл или файлы.
Основанием для структуры задачи является неявное упорядоченное расположение всех проблемных переменных в один вектор. Порядок проблемных переменных совпадает с порядком свойства Variables
в prob
. Смотрите OptimizationProblem
. Можно также найти порядок при помощи varindex
.
Например, предположите, что проблемные переменные находятся в этом порядке:
x
3 2 4 массивами
y
3 2 массив
В этом случае неявный переменный порядок эквивалентен, если проблемной переменной является vars = [x(:);y(:)]
.
Первые 24 элемента vars
эквивалентны x(:)
, и следующие шесть элементов эквивалентны y(:)
для в общей сложности 30 элементов. Нижние и верхние границы соответствуют этому переменному упорядоченному расположению, и каждая линейная матрица ограничений имеет 30 столбцов.
Для проблем с общей нелинейной целью или ограничительными функциями, prob2struct
создает файлы функции в текущей папке или в папке, заданной FileLocation
. Возвращенная структура problem
относится к этим файлам функции.