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.

findindex

Busque equivalentes de índice numérico de variables de índice con nombre

Descripción

ejemplo

[numindex1,numindex2,...,numindexk] = findindex(var,strindex1,strindex2,...,strindexk) encuentra los equivalentes de índice numérico de las variables de índice con nombre en la variable de optimización.var

ejemplo

numindex = findindex(var,strindex1,strindex2,...,strindexk) encuentra los equivalentes de índice lineales de las variables de índice con nombre.

Ejemplos

contraer todo

Cree una variable de optimización denominada que esté indexada por los nombres de los colores aditivos primarios y los nombres de color sustractivo primarios.colors Incluya y como nombres de color aditivos y como nombre de color sustractivo.'black''white''black'

colors = optimvar('colors',["black","white","red","green","blue"],["cyan","magenta","yellow","black"]);

Busque los números de índice para los colores aditivos y para el color sustractivo.'red''black''black'

[idxadd,idxsub] = findindex(colors,{'red','black'},{'black'})
idxadd = 1×2

     3     1

idxsub = 4 

Cree una variable de optimización denominada que esté indexada por los nombres de los colores aditivos primarios y los nombres de color sustractivo primarios.colors Incluya y como nombres de color aditivos y como nombre de color sustractivo.'black''white''black'

colors = optimvar('colors',["black","white","red","green","blue"],["cyan","magenta","yellow","black"]);

Busque los equivalentes del índice lineal en las combinaciones, y.["white","black"]["red","cyan"]["green","magenta"]["blue","yellow"]

idx = findindex(colors,["white","red","green","blue"],["black","cyan","magenta","yellow"])
idx = 1×4

    17     3     9    15

Crear y resolver un problema de optimización mediante variables de índice con nombre. El problema consiste en maximizar el flujo de fruta ponderado con beneficios a varios aeropuertos, sujeto a restricciones en los flujos ponderados.

rng(0) % For reproducibility p = optimproblem('ObjectiveSense', 'maximize'); flow = optimvar('flow', ...     {'apples', 'oranges', 'bananas', 'berries'}, {'NYC', 'BOS', 'LAX'}, ...     'LowerBound',0,'Type','integer'); p.Objective = sum(sum(rand(4,3).*flow)); p.Constraints.NYC = rand(1,4)*flow(:,'NYC') <= 10; p.Constraints.BOS = rand(1,4)*flow(:,'BOS') <= 12; p.Constraints.LAX = rand(1,4)*flow(:,'LAX') <= 35; sol = solve(p);
LP:                Optimal objective value is -1027.472366.                                           Heuristics:        Found 1 solution using rounding.                                                                     Upper bound is -1027.233133.                                                                         Relative gap is 0.00%.                                                            Cut Generation:    Applied 1 mir cut, and 2 strong CG cuts.                                                             Lower bound is -1027.233133.                                                                         Relative gap is 0.00%.                                                             Optimal solution found.  Intlinprog stopped at the root node because the objective value is within a gap tolerance of the optimal value, options.AbsoluteGapTolerance = 0 (the default value). The intcon variables are integer within tolerance, options.IntegerTolerance = 1e-05 (the default value). 

Encuentre el flujo óptimo de naranjas y bayas a Nueva York y los Ángeles.

[idxFruit,idxAirports] = findindex(flow, {'oranges','berries'}, {'NYC', 'LAX'})
idxFruit = 1×2

     2     4

idxAirports = 1×2

     1     3

orangeBerries = sol.flow(idxFruit, idxAirports)
orangeBerries = 2×2

         0  980.0000
   70.0000         0

Esta pantalla significa que ninguna naranja va a, 70 bayas van a, 980 naranjas van a, y no hay bayas van a.NYCNYCLAXLAX

Enumere el flujo óptimo de lo siguiente:

Fruit Airports

----- --------

Berries NYC

Apples BOS

Oranges LAX

idx = findindex(flow, {'berries', 'apples', 'oranges'}, {'NYC', 'BOS', 'LAX'})
idx = 1×3

     4     5    10

optimalFlow = sol.flow(idx)
optimalFlow = 1×3

   70.0000   28.0000  980.0000

Esta pantalla significa que 70 bayas van a, 28 manzanas van a, y 980 naranjas van a.NYCBOSLAX

Cree variables de índice con nombre para un problema con varios tipos de terrenos, cultivos potenciales y métodos de arado.

land = ["irr-good","irr-poor","dry-good","dry-poor"]; crops = ["wheat-lentil","wheat-corn","barley-chickpea","barley-lentil","wheat-onion","barley-onion"]; plow = ["tradition","mechanized"]; xcrop = optimvar('xcrop',land,crops,plow,'LowerBound',0);

Establezca el punto inicial en una matriz de cero del tamaño correcto.

x0.xcrop = zeros(size(xcrop));

Fije el valor inicial a 3000 para el y los cultivos que se plantan en cualquier condición seca y se arar tradicionalmente."wheat-onion""wheat-lentil"

[idxLand, idxCrop, idxPlough] = findindex(xcrop, ["dry-good","dry-poor"], ...              ["wheat-onion","wheat-lentil"],"tradition"); x0.xcrop(idxLand,idxCrop,idxPlough) = 3000;

Establezca los valores iniciales para los tres puntos siguientes.

Land      Crops           Method      Value dry-good  wheat-corn      mechanized  2000 irr-poor  barley-onion    tradition   5000 irr-good  barley-chickpea mechanized  3500 
idx = findindex(xcrop,...     ["dry-good","irr-poor","irr-good"],...     ["wheat-corn","barley-onion","barley-chickpea"],...     ["mechanized","tradition","mechanized"]); x0.xcrop(idx) = [2000,5000,3500];

Argumentos de entrada

contraer todo

Variable de optimización, especificada como un objeto.OptimizationVariable Crear utilizando.varoptimvar

Ejemplo: var = optimvar('var',4,6)

Índice con nombre, especificado como una matriz de celdas de vectores de caracteres, Vector de caracteres, Vector de cadena o Vector entero. El número de argumentos debe ser el número de dimensiones en.strindexvar

Ejemplo: ["small","medium","large"]

Tipos de datos: double | char | string | cell

Argumentos de salida

contraer todo

Equivalente de índice numérico, devuelto como un vector entero. El número de argumentos de salida debe ser uno de los siguientes:

  • El número de cotas en.var Cada vector de salida es el equivalente numérico del argumento de entrada correspondiente.numindexjstrindexj

  • Una. En este caso, el tamaño de cada entrada debe ser el mismo para todos, y la salida satisface el criterio de indexación linealstrindexjj

    para todos.var(numindex(j)) = var(strindex1(j),...,strindexk(j))j

Introducido en R2018a