Convierta el problema de optimización en forma de solucionador
Devuelve una estructura de problema de optimización adecuada para resolver problemas utilizando,,,, o.problem
= prob2struct(prob
)linprog
intlinprog
quadprog
lsqlin
fmincon
fminunc
Para problemas no lineales, crea archivos para la función objetiva y, si es necesario, para funciones de restricción no lineal y archivos auxiliares.prob2struct
, para los argumentos de entrada, especifica opciones adicionales mediante uno o varios argumentos de par nombre-valor. Por ejemplo, para un problema no lineal, especifica que crea un archivo de función objetivo denominado en la carpeta actual.problem
= prob2struct(___,Name,Value
)problem = prob2struct(prob,'ObjectiveFunctionName','objfun1')
prob2struct
objfun1.m
Si llama varias veces en la misma sesión para problemas no lineales, use los argumentos de par nombre-valor y, si corresponde,.prob2struct
MATLAB®ObjectiveFunctionName
ConstraintFunctionName
La especificación de nombres únicos garantiza que las estructuras problemáticas resultantes se refieren a las funciones correctas de restricción y objetivo. De lo contrario, las llamadas subsiguientes pueden hacer que los archivos de función no lineales generados sobrescriban los archivos existentes.prob2struct
Para evitar provocar una recursividad infinita, no llame dentro de una función objetiva o de restricción.prob2struct
Cuando se llama en paralelo para problemas no lineales, asegúrese de que los archivos de función objetivo y restricción resultantes tienen nombres únicos.prob2struct
Al hacerlo, se evita que cada paso de la escritura de bucle en el mismo archivo o archivos.
La base para la estructura del problema es una ordenación implícita de todas las variables de problema en un solo vector. El orden de las variables de problema es el mismo que el orden de la propiedad en.Variables
prob
Ver.OptimizationProblem
También puede encontrar el pedido mediante el uso de.varindex
Por ejemplo, supongamos que las variables de problema están en este orden:
— una matriz de 3 por 2 por 4x
— una matriz de 3 por 2y
En este caso, el orden de la variable implícita es el mismo que si la variable de problema es.vars = [x(:);y(:)]
Los primeros 24 elementos de son equivalentes a, y los seis siguientes elementos equivalen a, para un total de 30 elementos.vars
x(:)
y(:)
Los límites inferior y superior corresponden a esta orden de variable, y cada matriz de restricción lineal tiene 30 columnas.
Para problemas con las funciones generales de objetivo o restricción no lineales, crea archivos de función en la carpeta actual o en la carpeta especificada por.prob2struct
FileLocation
La estructura devuelta hace referencia a estos archivos de función.problem