Чтение файла MPS для данных оптимизации LP и MILP
увеличивает возвращенное problem = mpsread(mpsfile,'ReturnNames',true)problem структура с variableNames и constraintNames поля, содержащие имена переменных и ограничений в mpsfile.
Загрузить mps и решить описанную в нем проблему.
Загрузить eil33-2.mps файл из общедоступного репозитория. Просмотр типа проблемы.
gunzip('http://miplib.zib.de/WebData/instances/eil33-2.mps.gz') problem = mpsread('eil33-2.mps')
problem =
f: [4516x1 double]
Aineq: [0x4516 double]
bineq: [0x1 double]
Aeq: [32x4516 double]
beq: [32x1 double]
lb: [4516x1 double]
ub: [4516x1 double]
intcon: [4516x1 double]
solver: 'intlinprog'
options: [1x1 optim.options.Intlinprog]Обратите внимание, что problem.intcon не пуст, и problem.solver является 'intlinprog'. Задача состоит в целочисленном линейном программировании.
Измените опции, чтобы подавить итеративное отображение и создать график по мере выполнения решателя.
options = optimoptions('intlinprog','Display','final','PlotFcn',@optimplotmilp); problem.options = options;
Решить проблему, позвонив intlinprog.
[x,fval,exitflag,output] = intlinprog(problem);
Optimal solution found. Intlinprog stopped 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).

Загрузить mps и получить имена переменных и ограничений.
Загрузить eil33-2.mps файл из общедоступного репозитория. Просмотр возвращенной структуры проблем.
gunzip('http://miplib.zib.de/WebData/instances/eil33-2.mps.gz') problem = mpsread('eil33-2.mps','ReturnNames',true)
problem =
struct with fields:
f: [4516×1 double]
Aineq: [0×4516 double]
bineq: [0×1 double]
Aeq: [32×4516 double]
beq: [32×1 double]
lb: [4516×1 double]
ub: [4516×1 double]
intcon: [4516×1 double]
solver: 'intlinprog'
options: [1×1 optim.options.Intlinprog]
variableNames: [4516×1 string]
constraintNames: [1×1 struct]Просмотрите первые несколько имен каждого типа.
problem.variableNames(1:4)
ans =
4×1 string array
"x1"
"x2"
"x3"
"x4"problem.constraintNames.eqlin(1:4)
ans =
4×1 string array
"c1"
"c2"
"c3"
"c4"В этой проблеме нет ограничений неравенства.
problem.constraintNames.ineqlin
ans = 0×1 empty string array
mpsfile - Путь к файлу MPSПуть к файлу MPS, указанный как вектор символов или скаляр строки. mpsfile должен быть файлом в формате MPS.
Примечание
mpsread не поддерживает полунепрерывные ограничения или ограничения SOS.
mpsread поддерживает файлы «фиксированного формата».
mpsread не поддерживает расширения, такие как objsense и objname.
mpsread бесшумно игнорирует переменные в BOUNDS , которые ранее не появлялись в COLUMNS в разделе файла MPS.
Пример: "documents/optimization/milpproblem.mps"
Типы данных: char | string
ReturnNames - пара «имя-значение», которая возвращает имена переменных и ограничений из файла MPS;false (по умолчанию) | trueПара «имя-значение», указывающая на возврат имен переменных и ограничений из файла MPS с логическим значением. false указывает, что не следует возвращать имена. true причины mpsread для возврата двух дополнительных полей в problem структура вывода:
problem.variableNames - Строковый массив имен переменных
problem.constraintNames - Структура имен ограничений:
problem.constraintNames.eqlin Строковый массив имен ограничений линейного равенства
problem.constraintNames.ineqlin Строковый массив имен ограничений линейного неравенства
problem ограничения структурного неравенства problem.Aineq и problem.bineq имеют тот же порядок, что и имена в problem.constraintNames.ineqlin. Аналогично, ограничения problem.Aeq и problem.beq имеют тот же порядок, что и имена в problem.constraintNames.eqlin. problem.variableNames порядок совпадает с порядком переменных решения x после выполнения linprog или intlinprog на problem структура.
Пример: mpsread('filename','ReturnNames',true)
Типы данных: logical
problem - Структура проблемыСтруктура проблемы, возвращенная как структура с полями:
f | Вектор, представляющий цель f'*x |
intcon | Вектор, указывающий переменные, принимающие целочисленные значения (пустые для LP, непустые для MILP) |
Aineq | Матрица в линейных ограничениях неравенства Aineq*x ≤ bineq |
| Вектор в линейных ограничениях неравенства Aineq*x ≤ bineq |
| Матрица в линейных ограничениях равенства Aeq*x = beq |
| Вектор в линейных ограничениях равенства Aeq*x = beq |
lb | Вектор нижних границ |
ub | Вектор верхних границ |
solver | 'intlinprog' (если intcon не является пустым), или 'linprog' (если intcon пуст) |
|
Параметры по умолчанию, возвращаемые командой optimoptions(solver) |
variableNames | Строковый массив, содержащий имена переменных из файла MPS. Это поле появляется только в том случае, если ReturnNames является true. |
constraintNames | Структура, содержащая имена ограничений из файла MPS. Описание см. в разделе ReturnNames. Это поле появляется только в том случае, если ReturnNames является true. |
mpsread прибыль problem.Aineq и problem.Aeq в виде разреженных матриц.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.