Чтение файла 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 - Пара "имя-значение", указывающая на возврат имен переменной и ограничений из файла MPSfalse (по умолчанию) | trueПара "имя-значение", указывающая на возврат имен переменной и ограничений из файла MPS со значением, заданным как логическое. false указывает, что не возвращать имена. true причины mpsread чтобы вернуть два дополнительных поля в problem структура output:
problem.variableNames - Строковые массивы имен переменных
problem.constraintNames - Структура имен ограничений:
problem.constraintNames.eqlin Строковые массивы имен линейных ограничений равенства
problem.constraintNames.ineqlin Строковые массивы имен ограничений линейного неравенства
The problem структурные ограничения неравенства problem.Aineq и problem.bineq имеют тот же порядок, что и имена в problem.constraintNames.ineqlin. Точно так же ограничения problem.Aeq и problem.beq имеют тот же порядок, что и имена в problem.constraintNames.eqlin. The 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.