Я просматривал документацию по командам / классам [смешанной] целочисленной линейной программы ([M] ILP) Matlab, чтобы узнать, есть ли способ определить «проблему оптимизации» (optimproblem) и вызовите внешний решатель [M] ILP с помощью API, а не с помощью собственного < a href = "http://www.mathworks.com/help/optim/ug/intlinprog.html" rel = "nofollow noreferrer"> intlinprog . Я еще не нашел никаких признаков того, что это возможно, если не считать преобразования проблемы в матричный / решающий формат (prob2struct) и создание собственного промежуточного файла данных ILP. Это было бы за то, что я готов сделать.

На самом деле нет никакого способа напрямую вызвать сторонний решатель?

Если есть способ, может кто-нибудь направить меня на соответствующую страницу документации?

Если на самом деле нет никакой возможности, может кто-нибудь подтвердить это?

Спасибо.

Уточнение. Вопрос подчеркивает использование optimproblem

Я ценю ответы и комментарии на сегодняшний день, но я понимаю из них, что мне нужно подчеркнуть ключевой момент в этом вопросе. Моя цель - использовать высокоуровневую спецификацию проблемы optimproblem, который использует синтаксис массива Matlab для компактного представления большого количества ограничений, длинных внутренних произведений для них и для целевой функции. Это так называемый основанный на проблемах подход, который на высоком уровне похож на AMPL .

Напротив, мое впечатление от первоначального просмотра цитируемых документов сторонними решающими программами заключается в том, что их входные данные находятся на более низком уровне абстракции. Это так называемый решатель на основе подход, который коллеги также назвали «матричным уровнем», по следующей причине: предполагается, что архетипические массивы x, Aeq, beq, Aineq, bineq и т. д. составлены, и это до аналитик должен отслеживать, какие элементы в x соответствуют каким (более) реальным параметрам, т. е. тем, которые используются в проблемном подходе.

Я надеялся, что есть способ использовать optimproblem и использовать для этого сторонний решатель, чтобы мне не приходилось иметь дело с уровнем матрицы. Примером последнего будет использование {{X1} } для генерации массивов для явной передачи внешним решателям через API-интерфейсы Matlab (если они есть). Я хочу избежать этого, потому что я не хочу отслеживать, какие переменные, основанные на задачах, сопоставляются с переменными, основанными на решателе, тем более что первая часто имеет высокую размерность. Конечно, varindex упрощает бухгалтерия, но не кодирование такой бухгалтерии гораздо предпочтительнее.

1
user36800 27 Май 2019 в 19:29

2 ответа

Лучший ответ

Согласно TMW, ответ «нет» в настоящее время (30 мая 2019 года).

0
user36800 30 Май 2019 в 12:53

Да, различные сторонние решения по оптимизации имеют API-интерфейсы MATLAB. Например, CPLEX и Gurobi оба имеют API-интерфейсы MATLAB. Но вы вызываете их через их собственные вызовы функций, а не через intlinprog.

0
LarrySnyder610 28 Май 2019 в 00:10
56329620