Main Content

Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

fseminf

Busque el mínimo de función no lineal multivariable con restricciones semiinfinitas

Ecuación

Busca el mínimo de un problema especificado por

minxf(x) such that {Axb,Aeqx=beq,lbxub,c(x)0,ceq(x)=0,Ki(x,wi)0, 1in.

y son vectores, y son matrices, (), () ybbeqAAeqcxceqx Ki(x, wi) son funciones que devuelven vectores, y () es una función que devuelve un escalar. (), () y () pueden ser funciones no lineales.fxfxcxceqx Los vectores (o matrices) Ki(x,wi) ≤ 0 son funciones continuas de ambos y un conjunto adicional de variablesx w1,w2,...,wn. Las variables w1,w2,...,wn son vectores de, como máximo, la longitud dos.

, y se pueden pasar como vectores o matrices; Ver.xlbubArgumentos de matriz

Sintaxis

x = fseminf(fun,x0,ntheta,seminfcon)
x = fseminf(fun,x0,ntheta,seminfcon,A,b)
x = fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq)
x = fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq,lb,ub)
x = fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq,lb,ub,options)
x = fseminf(problem)
[x,fval] = fseminf(...)
[x,fval,exitflag] = fseminf(...)
[x,fval,exitflag,output] = fseminf(...)
[x,fval,exitflag,output,lambda] = fseminf(...)

Descripción

encuentra un mínimo de una función escalar semi-infinitamente restringida de varias variables, comenzando en una estimación inicial.fseminf El objetivo es minimizar () de modo que las restricciones se mantenga para todos los valores posibles defx wi1 (o wi2). Porque es imposible calcular todos los valores posibles de Ki(x,wi), se debe elegir una región para Wi para calcular un conjunto de valores muestreados apropiadamente.

Nota

explica cómo pasar parámetros adicionales a la función objetiva y a las funciones de restricción no lineal, si es necesario.Pasar parámetros adicionales

x = fseminf(fun,x0,ntheta,seminfcon) comienza y encuentra un mínimo de la función restringida por las restricciones semi-infinitas definidas en.x0funnthetaseminfcon

x = fseminf(fun,x0,ntheta,seminfcon,A,b) también intenta satisfacer las desigualdades lineales.A*x ≤ b

x = fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq) minimiza sujeto a las equalidades lineales también.Aeq*x = beq Establecer y si no existen desigualdades.A = []b = []

x = fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq,lb,ub) define un conjunto de límites inferior y superior en las variables de diseño, de modo que la solución esté siempre en el rango ≤ ≤.xlb  x  ub

x = fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq,lb,ub,options) minimiza con las opciones de optimización especificadas en.Opciones Se usa para establecer estas opciones.optimoptions

x = fseminf(problem) encuentra el mínimo para, donde se describe una estructura.problemproblemArgumentos de entrada

Cree la estructura exportando un problema desde la aplicación de optimización, como se describe en.problemExportar su trabajo

[x,fval] = fseminf(...) Devuelve el valor de la función objetiva en la solución.funx

[x,fval,exitflag] = fseminf(...) Devuelve un valor que describe la condición de salida.exitflag

[x,fval,exitflag,output] = fseminf(...) Devuelve una estructura que contiene información sobre la optimización.output

[x,fval,exitflag,output,lambda] = fseminf(...) Devuelve una estructura cuyos campos contienen los multiplicadores de Lagrange en la solución.lambdax

Nota

Si los límites de entrada especificados para un problema son incoherentes, la salida es y la salida es.xx0fval[]

Argumentos de entrada

contiene descripciones generales de los argumentos pasados.Argumentos de entrada de funciónfseminf En esta sección se proporcionan detalles específicos de la función para,,, y:funnthetaOpcionesseminfconproblem

fun

La función que se debe minimizar. es una función que acepta un vector y devuelve un escalar, la función objetiva evaluada en.funxfx La función se puede especificar como un identificador de función para un archivofun

x = fseminf(@myfun,x0,ntheta,seminfcon)

donde se encuentra una función comomyfunMATLAB®

function f = myfun(x) f = ...            % Compute function value at x

también puede ser un identificador de función para una función anónima.fun

fun = @(x)sin(x''*x);

Si también se puede calcular el degradado de la opción es, según lo establecido porfunandSpecifyObjectiveGradienttrue

options = optimoptions('fseminf','SpecifyObjectiveGradient',true)

a continuación, la función debe devolver, en el segundo argumento de salida, el valor de degradado, un vector, at.fungx

ntheta

El número de restricciones semi-infinitas.

Opciones

proporciona los detalles específicos de la función para los valores.OpcionesOpciones

seminfcon

La función que calcula el vector de las restricciones de desigualdad no lineal, un vector de restricciones de igualdad no lineal y las restricciones semi-infinitas (vectores o matrices),,,,,,,,,,,,,,,,,,,,,,,,,,cceqnthetaK1K2...KnthetaSx La función se puede especificar como un identificador de función.seminfcon

x = fseminf(@myfun,x0,ntheta,@myinfcon)

donde se encuentra una función comomyinfconMATLAB

function [c,ceq,K1,K2,...,Kntheta,S] = myinfcon(x,S) % Initial sampling interval if isnan(S(1,1)),    S = ...% S has ntheta rows and 2 columns end w1 = ...% Compute sample set w2 = ...% Compute sample set  ... wntheta = ... % Compute sample set K1 = ... % 1st semi-infinite constraint at x and w K2 = ... % 2nd semi-infinite constraint at x and w ... Kntheta = ...% Last semi-infinite constraint at x and w c = ...      % Compute nonlinear inequalities at x ceq = ...    % Compute the nonlinear equalities at x 

es un intervalo de muestreo recomendado, que puede o no se puede utilizar.S Volver para y si no existen tales restricciones.[]cceq

Los vectores o matrices,,,, contienen las restricciones semi-infinitas evaluadas para un conjunto muestreado de valores para las variables independientes,,,, respectivamente.K1K2...Knthetaw1w2...wntheta La matriz de dos columnas,, contiene un intervalo de muestreo recomendado para los valores de,,,, que se utilizan para evaluar,,,.Sw1w2...wnthetaK1K2...Kntheta La fila TH contiene el intervalo de muestreo recomendado para evaluariSKi. CuandoKi es un vector, use only (la segunda columna puede ser todos ceros).S(i,1) CuandoKi es una matriz, se utiliza para el muestreo de las filas enS(i,2)Ki, se utiliza para el intervalo de muestreo de las columnas deS(i,1)Ki (véase).Restricción semi-infinita bidimensional En la primera iteración es, por lo que se debe determinar algún intervalo de muestreo inicial.SNaNseminfcon

Nota

Dado que las funciones solo aceptan entradas de tipo, las funciones de restricción objetiva y no lineal proporcionadas por el usuario deben devolver salidas de tipo.Optimization Toolbox™doubledouble

explica cómo parametrizar, si es necesario. contiene un ejemplo de puntos de muestreo de uno y dos dimensiones.Pasar parámetros adicionalesseminfconEjemplo de creación de puntos de muestreo

problem

Objetivo

Función objetiva

x0

Punto inicial parax
nthetaNúmero de restricciones semi-infinitas
seminfconFunción de restricción semi-infinita

Aineq

Matriz para las restricciones de desigualdad lineal

bineq

Vector para las restricciones de desigualdad lineal

Aeq

Matriz para las restricciones de igualdad lineal

beq

Vector para las restricciones de igualdad lineales
lbVector de los límites inferiores
ubVector de los límites superiores

solver

'fseminf'

Opciones

Las opciones creadas conoptimoptions

Argumentos de salida

contiene descripciones generales de los argumentos devueltos por.Argumentos de entrada de funciónfseminf Esta sección proporciona detalles específicos de la función para, y:exitflaglambdaoutput

exitflag

Entero que identifica el motivo por el que finalizó el algoritmo. A continuación se enumeran los valores de y las razones correspondientes que finalizó el algoritmo.exitflag

1

Función convergida a una solución.x

4

La magnitud de la dirección de búsqueda era menor que la tolerancia especificada y la infracción de restricción era menor que.options.ConstraintTolerance

5

La magnitud del derivado direccional fue menor que la tolerancia especificada y la infracción de restricción fue menor que.options.ConstraintTolerance

0

Número de iteraciones superada o número de evaluaciones de función superada.options.MaxIterationsoptions.MaxFunctionEvaluations

-1

El algoritmo fue terminado por la función de salida.

-2

No se encontró ningún punto factible.

lambda

Estructura que contiene los multiplicadores de Lagrange en la solución (separados por tipo de restricción).x Los campos de la estructura son

lower

Los límites inferioreslb

upper

Los límites superioresub

ineqlin

Las desigualdades lineales

eqlin

Las equalidades lineales

ineqnonlin

Las desigualdades no lineales

eqnonlin

Las equalidades no lineales

output

Estructura que contiene información sobre la optimización. Los campos de la estructura son

iterations

Número de iteraciones tomadas

funcCount

Número de evaluaciones de funciones

lssteplength

Tamaño del paso de búsqueda de línea en relación con la dirección de búsqueda

stepsize

El desplazamiento final enx

algorithm

Algoritmo de optimización utilizado

constrviolation

Máximo de funciones de restricción

firstorderopt

Medida de la optimalidad de primer orden

message

Mensaje de salida

Opciones

Opciones de optimización utilizadas por.fseminf Se usa para establecer o cambiar.optimoptionsOpciones Consulte para obtener información detallada.Opciones de optimización referencia

Algunas opciones están ausentes en la pantalla.optimoptions Estas opciones aparecen en cursiva en la tabla siguiente. Para obtener más información, consulte.Ver opciones

CheckGradients

Compare los derivados suministrados por el usuario (degradados de objetivos o restricciones) con los derivados de diferenciación finita. Las opciones son o el valor predeterminado.truefalse

Para, el nombre es y los valores son o.optimsetDerivativeCheck'on''off' Ver.Las tablas de nombres de opciones actuales y heredadas

ConstraintTolerance

Tolerancia de terminación en la infracción de restricción, un escalar positivo. El valor predeterminado es.1e-6 Ver.Tolerancias y criterios de detención

El nombre es.optimsetTolCon Ver.Las tablas de nombres de opciones actuales y heredadas

Diagnostics

Mostrar información de diagnóstico sobre la función que se debe minimizar o resolver. Las opciones son o el valor predeterminado.'on''off'

DiffMaxChange

Cambio máximo en las variables para los degradados de diferencias finitas (un escalar positivo). El valor predeterminado es.Inf

DiffMinChange

Cambio mínimo en las variables para los degradados de diferencias finitas (un escalar positivo). El valor predeterminado es.0

Display

Nivel de visualización (ver):Visualización iterativa

  • o no muestra ninguna salida.'off''none'

  • muestra la salida en cada iteración y proporciona el mensaje de salida predeterminado.'iter'

  • muestra la salida en cada iteración y proporciona el mensaje técnico de salida.'iter-detailed'

  • muestra la salida solamente si la función no converge, y da el mensaje de salida predeterminado.'notify'

  • muestra la salida sólo si la función no converge y da el mensaje técnico de salida.'notify-detailed'

  • (valor predeterminado) muestra solo la salida final y proporciona el mensaje de salida predeterminado.'final'

  • muestra sólo la salida final y da el mensaje técnico de salida.'final-detailed'

FiniteDifferenceStepSize

Factor de tamaño de paso escalar o vectorial para diferencias finitas. Cuando se establece en un vector, las diferencias finitas de avance sonFiniteDifferenceStepSizevdelta

delta = v.*sign′(x).*max(abs(x),TypicalX);

donde excepto.sign′(x) = sign(x)sign′(0) = 1 Las diferencias finitas centrales son

delta = v.*max(abs(x),TypicalX);

Escalar se expande a un vector.FiniteDifferenceStepSize El valor predeterminado es para las diferencias finitas de avance y para las diferencias finitas centrales.sqrt(eps)eps^(1/3)

El nombre es.optimsetFinDiffRelStep Ver.Las tablas de nombres de opciones actuales y heredadas

FiniteDifferenceType

Las diferencias finitas, que se utilizan para estimar degradados, son o bien (el valor predeterminado) o (centrado). toma el doble de evaluaciones de funciones, pero debe ser más precisa.'forward''central''central'

El algoritmo tiene cuidado de obedecer los límites al estimar ambos tipos de diferencias finitas. Así, por ejemplo, podría tomar una diferencia hacia atrás, en lugar de una hacia adelante, para evitar la evaluación en un punto fuera de los límites.

El nombre es.optimsetFinDiffType Ver.Las tablas de nombres de opciones actuales y heredadas

FunctionTolerance

Tolerancia de terminación en el valor de la función, un escalar positivo. El valor predeterminado es.1e-4 Ver.Tolerancias y criterios de detención

El nombre es.optimsetTolFun Ver.Las tablas de nombres de opciones actuales y heredadas

FunValCheck

Compruebe si los valores de función objetiva y restricciones son válidos. muestra un error cuando la función objetiva o las restricciones devuelven un valor que es, o.'on'complexInfNaN El valor predeterminado no muestra ningún error.'off'

MaxFunctionEvaluations

Número máximo de evaluaciones de funciones permitidas, un entero positivo. El valor predeterminado es.100*numberOfVariables Mira y.Tolerancias y criterios de detenciónIteraciones y recuentos de funciones

El nombre es.optimsetMaxFunEvals Ver.Las tablas de nombres de opciones actuales y heredadas

MaxIterations

Número máximo de iteraciones permitidas, un entero positivo. El valor predeterminado es.400 Mira y.Tolerancias y criterios de detenciónIteraciones y recuentos de funciones

El nombre es.optimsetMaxIter Ver.Las tablas de nombres de opciones actuales y heredadas

MaxSQPIter

Número máximo de iteraciones SQP permitidas, un entero positivo. El valor predeterminado es.10*max(numberOfVariables, numberOfInequalities + numberOfBounds)

OptimalityTolerance

Tolerancia de terminación en la optimalidad de primer orden (un escalar positivo). El valor predeterminado es.1e-6 Ver.Medida de optimalidad de primer orden

El nombre es.optimsetTolFun Ver.Las tablas de nombres de opciones actuales y heredadas

OutputFcn

Especifique una o varias funciones definidas por el usuario a las que llama una función de optimización en cada iteración. Pasar un identificador de función o una matriz de celdas de identificadores de función. El valor predeterminado es None ().[] Ver.Sintaxis de función de salida

PlotFcn

Traza varias medidas de progreso mientras se ejecuta el algoritmo; seleccionar de parcelas predefinidas o escribir las suyas propias. Pase un nombre, un identificador de función o una matriz de celdas de nombres o identificadores de función. Para las funciones de trazado personalizadas, pase los identificadores de función. El valor predeterminado es None ():[]

  • traza el punto actual.'optimplotx'

  • traza el recuento de funciones.'optimplotfunccount'

  • traza el valor de la función.'optimplotfval'

  • traza la infracción de restricción máxima.'optimplotconstrviolation'

  • traza el tamaño del paso.'optimplotstepsize'

  • traza la medida de optimalidad de primer orden.'optimplotfirstorderopt'

Para obtener información sobre cómo escribir una función de trazado personalizada, consulte.Sintaxis de función de trazado

El nombre es.optimsetPlotFcns Ver.Las tablas de nombres de opciones actuales y heredadas

RelLineSrchBnd

Límite relativo (un valor escalar real no negativo) en la longitud del paso de búsqueda de línea, de forma que el desplazamiento total satisfacex x(i)| ≤ relLineSrchBnd· max(|x(i)|,|typicalx(i)|). Esta opción proporciona control sobre la magnitud de los desplazamientos en los casos en los que el solucionador toma medidas que considera demasiado grandes.xfseminf El valor predeterminado es no Bounds ().[]

RelLineSrchBndDuration

Número de iteraciones para las que debe estar activo el enlazado especificado (por defecto es)RelLineSrchBnd1

SpecifyObjectiveGradient

Gradiente para la función objetiva definida por el usuario. Consulte la descripción anterior para ver cómo definir el degradado.funfun Se establece para que utilice un degradado definido por el usuario de la función objetiva.truefseminf Las causas predeterminadas para estimar los degradados utilizando diferencias finitas.falsefseminf

Para, el nombre es y los valores son o.optimsetGradObj'on''off' Ver.Las tablas de nombres de opciones actuales y heredadas

StepTolerance

Tolerancia de terminación activada, un escalar positivo.x El valor predeterminado es.1e-4 Ver.Tolerancias y criterios de detención

El nombre es.optimsetTolX Ver.Las tablas de nombres de opciones actuales y heredadas

TolConSQP

Tolerancia de terminación en la infracción de restricción SQP de iteración interna, un escalar positivo. El valor predeterminado es.1e-6

TypicalX

Valores típicos.x El número de elementos en es igual al número de elementos en, el punto de partida.TypicalXx0 El valor predeterminado es. utiliza para escalar las diferencias finitas para la estimación de degradado.ones(numberofvariables,1)fseminfTypicalX

Notas

La rutina de optimización puede variar el intervalo de muestreo recomendado, establecido en, durante el cálculo porque los valores que no sean el intervalo recomendado podrían ser más apropiados para la eficiencia o la robustez.fseminfSseminfcon Además, la región finita Wi, sobre la que Ki(x,wi) se calcula, puede variar durante la optimización, siempre que no resulte en cambios significativos en el número de mínimos locales en Ki(x,wi).

Ejemplos

En este ejemplo se minimiza la función

(– 1)x2,

sujeta a las restricciones

0 ≤ ≤ 2 (,) = (– 1/2) – (– 1/2)x
gxtxt2 ≤ 0 para todos 0 ≤ ≤ 1.t

La función objetiva no restringida se minimiza en x = 1. Sin embargo, la restricción,

(,) ≤ 0 para todos 0 ≤ ≤ 1,gxtt

Implica x ≤ 1/2. Se puede ver esto al notar que (t – 1/2)2 ≥ 0así que

máximot (,) = (– 1/2).gxtx

por lo tanto

máximot (,) ≤ 0 cuando ≤ 1/2.gxtx

Para resolver este problema utilizando:fseminf

  1. Escriba la función objetiva como una función anónima:

    objfun = @(x)(x-1)^2;
  2. Escriba la función de restricción semi-infinita, que incluye las restricciones no lineales ([] en este caso), el intervalo de muestreo inicial para (0 a 1 en los pasos de 0,01 en este caso) y la función de restricción semi-infinita (,):tgxt

    function [c, ceq, K1, s] = seminfcon(x,s)  % No finite nonlinear inequality and equality constraints c = []; ceq = [];  % Sample set if isnan(s)     % Initial sampling interval     s = [0.01 0]; end t = 0:s(1):1;  % Evaluate the semi-infinite constraint K1 = (x - 0.5) - (t - 0.5).^2;
  3. Llame con el punto inicial 0,2, y vea el resultado:fseminf

    x = fseminf(objfun,0.2,1,@seminfcon)
    
    Local minimum found that satisfies the constraints.
    
    Optimization completed because the objective function is
    non-decreasing in feasible directions, to within the 
    default value of the function tolerance, and constraints
    are satisfied to within the default value of the
    constraint tolerance.
    
    Active inequalities (to within options.ConstraintTolerance = 1e-006):
      lower      upper     ineqlin   ineqnonlin
                                         1
    
    x =
        0.5000

Limitaciones

La función que se debe minimizar, las restricciones y las restricciones semi-infinitas deben ser funciones continuas de y. sólo podría dar soluciones locales.xwfseminf

Cuando el problema no es factible, intenta minimizar el valor máximo de restricción.fseminf

Algoritmos

utiliza técnicas de interpolación cúbica y cuadrática para estimar los valores de pico en las restricciones semi-infinitas.fseminf Los valores de pico se utilizan para formar un conjunto de restricciones que se suministran a un método SQP como en la función.fmincon Cuando el número de restricciones cambia, los multiplicadores de Lagrange se reubican al nuevo conjunto de restricciones.

El cálculo del intervalo de muestreo recomendado utiliza la diferencia entre los valores de pico interpolados y los valores de pico que aparecen en el conjunto de datos para estimar si la función debe tomar más o menos puntos. La función también evalúa la efectividad de la interpolación extrapolando la curva y comparándola con otros puntos de la curva. El intervalo de muestreo recomendado disminuye cuando los valores de pico están cerca de los límites de restricción, es decir, cero.

Para obtener más detalles sobre el algoritmo utilizado y los tipos de procedimientos mostrados en el encabezado cuando se establece la opción con, vea también.ProceduresDisplay'iter'optimoptionsImplementación de SQP Para obtener más información sobre el algoritmo, consulte.fseminffseminf formulación y algoritmo del problema

Introducido antes de R2006a