findindex
Encontrar equivalentes de índice numérico de variables de índice con nombre
Sintaxis
Descripción
Ejemplos
Encontrar equivalentes numéricos de variables de índice con nombre
Cree una variable de optimización llamada colors
que esté indexada por los nombres de colores primarios aditivos y los nombres de colores primarios sustractivos. Incluya 'black'
y 'white'
como nombres de colores aditivos y 'black'
como un nombre de color sustractivo.
colors = optimvar('colors',["black","white","red","green","blue"],["cyan","magenta","yellow","black"]);
Busque los número de índice para los colores aditivos 'red'
y 'black'
y para el color sustractivo 'black'
.
[idxadd,idxsub] = findindex(colors,{'red','black'},{'black'})
idxadd = 1×2
3 1
idxsub = 4
Encontrar equivalentes de índice lineal de variables de índice con nombre
Cree una variable de optimización llamada colors
que esté indexada por los nombres de colores primarios aditivos y los nombres de colores primarios sustractivos. Incluya 'black'
y 'white'
como nombres de colores aditivos y 'black'
como un nombre de color sustractivo.
colors = optimvar('colors',["black","white","red","green","blue"],["cyan","magenta","yellow","black"]);
Busque los equivalentes de índice lineal para las combinaciones ["white","black"]
, ["red","cyan"]
, ["green","magenta"]
y ["blue","yellow"]
.
idx = findindex(colors,["white","red","green","blue"],["black","cyan","magenta","yellow"])
idx = 1×4
17 3 9 15
Visualizar una solución con variables de índice
Cree y resuelva un problema de optimización utilizando variables de índice con nombre. El problema consiste en maximizar el flujo de fruta ponderado según 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);
Solving problem using intlinprog. LP: Optimal objective value is 1027.472366. Heuristics: Found 1 solution using ZI round. 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 intcon variables are integer within tolerance, options.IntegerTolerance = 1e-05.
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
70 0
Esta visualización indica que no se envían naranjas a NYC
, se envían 70 bayas a NYC
, se envían 980 naranjas a LAX
y no se envían bayas a LAX
.
Enumere el flujo óptimo de las siguientes frutas:
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 28 980
Esta visualización indica que se envían 70 bayas a NYC
, se envían 28 manzanas a BOS
y se envían 980 naranjas a LAX
.
Crear un punto inicial con variables de índice con nombre
Cree variables de índice con nombre para un problema con varios tipos de terrenos, cultivos potenciales y métodos de labranza.
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 un arreglo cero del tamaño correcto.
x0.xcrop = zeros(size(xcrop));
Establezca el valor inicial en 3000 para los cultivos de "wheat-onion"
y "wheat-lentil"
que se siembran en cualquier condición de secano y que se labran de manera tradicional.
[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
var
— Variable de optimización
Objeto OptimizationVariable
Variable de optimización, especificada como un objeto OptimizationVariable
. Cree var
utilizando optimvar
.
Ejemplo: var = optimvar('var',4,6)
strindex
— Índice con nombre
arreglo de celdas de vectores de caracteres | vector de caracteres | vector de cadenas | vector de enteros
Índice con nombre, especificado como un arreglo de celdas de vectores de caracteres, vector de caracteres, vector de cadenas o vector de enteros. El número de argumentos strindex
debe ser el número de dimensiones en var
.
Ejemplo: ["small","medium","large"]
Tipos de datos: double
| char
| string
| cell
Argumentos de salida
numindex
— Equivalente de índice numérico
vector de enteros
Equivalente de índice numérico, devuelto como un vector de enteros. El número de argumentos de salida debe ser uno de los siguientes:
El número de dimensiones en
var
. Cada vector de salidanumindexj
es el equivalente numérico del argumento de entradastrindexj
correspondiente.Uno. En este caso, el tamaño de cada
strindex
j
de entrada debe ser el mismo para todoj
y la salida satisface el criterio de indexación lineal.var(numindex(j)) = var(strindex1(j),...,strindexk(j))
para todoj
.
Historial de versiones
Introducido en R2018a
Abrir ejemplo
Tiene una versión modificada de este ejemplo. ¿Desea abrir este ejemplo con sus modificaciones?
Comando de MATLAB
Ha hecho clic en un enlace que corresponde a este comando de MATLAB:
Ejecute el comando introduciéndolo en la ventana de comandos de MATLAB. Los navegadores web no admiten comandos de MATLAB.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)