Найдите числовые эквиваленты индекса именованных индексных переменных
Создайте переменную оптимизации под названием colors
это индексируется первичными именами аддитивного цвета и первичными именами субтрактивного цвета. Включайте 'black'
и 'white'
как имена аддитивного цвета и 'black'
как имя субтрактивного цвета.
colors = optimvar('colors',["black","white","red","green","blue"],["cyan","magenta","yellow","black"]);
Найдите индексы для аддитивных цветов 'red'
и 'black'
и для субтрактивного цвета 'black'
.
[idxadd,idxsub] = findindex(colors,{'red','black'},{'black'})
idxadd = 1×2
3 1
idxsub = 4
Создайте переменную оптимизации под названием colors
это индексируется первичными именами аддитивного цвета и первичными именами субтрактивного цвета. Включайте 'black'
и 'white'
как имена аддитивного цвета и 'black'
как имя субтрактивного цвета.
colors = optimvar('colors',["black","white","red","green","blue"],["cyan","magenta","yellow","black"]);
Найдите линейные эквиваленты индекса комбинациям ["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
Создайте и решите задачу оптимизации с помощью названный индексными переменными. Проблема состоит в том, чтобы максимизировать взвешенный прибылью поток фруктов в различные аэропорты согласно ограничениям на взвешенные потоки.
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. Upper 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).
Найдите оптимальный поток апельсинов и ягод в Нью-Йорк и Лос-Анджелес.
[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
Это отображение означает, что никакие апельсины не идут в NYC
, 70 ягод идут в NYC
, 980 апельсинов идут в LAX
, и никакие ягоды не идут в LAX
.
Перечислите оптимальный поток следующего:
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
Это отображение означает, что 70 ягод идут в NYC
, 28 яблок идут в BOS
, и 980 апельсинов идут в LAX
.
Создайте названные индексные переменные для проблемы с различными типами земли, потенциальными обрезками и методами вспахивания.
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);
Установите начальную точку на нулевой массив правильного размера.
x0.xcrop = zeros(size(xcrop));
Установите начальное значение к 3 000 для "wheat-onion"
и "wheat-lentil"
обрезки, которые устанавливают в любом сухом состоянии и пашут традиционно.
[idxLand, idxCrop, idxPlough] = findindex(xcrop, ["dry-good","dry-poor"], ... ["wheat-onion","wheat-lentil"],"tradition"); x0.xcrop(idxLand,idxCrop,idxPlough) = 3000;
Установите начальные значения для следующих трех точек.
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];
var
— Переменная OptimizationOptimizationVariable
объектПеременная Optimization в виде OptimizationVariable
объект. Создайте var
использование optimvar
.
Пример: var = optimvar('var',4,6)
strindex
— Названный индексНазванный индекс в виде массива ячеек из символьных векторов, вектора символов, представляет в виде строки вектор или целочисленный вектор. Количество strindex
аргументы должны быть количеством размерностей в var
.
Пример: ["small","medium","large"]
Типы данных: double |
char
| string
| cell
numindex
— Числовой эквивалентный индексЧисловой эквивалентный индекс, возвращенный как целочисленный вектор. Количество выходных аргументов должно быть одним из следующего:
Количество размерностей в var
. Каждый выходной вектор numindexj
числовой эквивалент соответствующего входного параметра strindexj
.
Один. В этом случае, размер каждого входа strindex
j
должно быть то же самое для всего j
, и выход удовлетворяет линейному критерию индексации
var(numindex(j)) = var(strindex1(j),...,strindexk(j))
для всего j
.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.