Считайте файл 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 вывод структуры:
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)
Типы данных: логический
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 isempty, |
|
Опции по умолчанию, как возвращено командой optimoptions(solver) |
variableNames | Массив строк, содержащий имена переменных из файла MPS. Это поле появляется только если ReturnNames true. |
constraintNames | Структура, содержащая ограничение, называет из файла MPS. Для описания смотрите ReturnNames. Это поле появляется только если ReturnNames true. |
mpsread возвращает problem.Aineq и problem.Aeq как разреженные матрицы.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.