Преобразуйте задачу оптимизации в форму решателя
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 относится к этим файлам функции.