singlepost

Решение задач LP << На главную или назад  

Здравствуйте.
Есть такой солвер для решения задач линейного программирования как

http://www.gnu.org/software/glpk/

Бесплатный удобный и сырцами и так далее.

Правда есть минус один - решает задачу он на одном ядре.
Это сильно увеличивает время вычисления - а задачи довольно большие.
Существует ли возможность разбить вычисление задачи на этом решателе?
Или же если такая возможность отсутвует -существуют ли аналоги, которые позволят выполнять задачуна нескольких ядрах...

Или же лезьть в исходники руками и думать как раскидать?

4 ответов в теме “Решение задач LP”

  1. 1
    Жека Кирпичев ответил:

    Ох… Скачал, открыл сорцы – не советовал бы я пытаться руками раскидывать ;)
    Думаю, лучше разбить задачу ЛП на несколько задач, и запустить несколько независимых glpk для подзадач, а потом слить как-нибудь.
    Как именно разбить ЛП на подзадачи – я не знаю, но наверняка современная наука об этом уже подумала :)

  2. 2
    Евгений Гаврин ответил:

    Наука думала)
    Просто если идти по принципу разбиения задачи на подзадачи – недалеко уже и до кластеризации =)
    Просто ЛП гарантирует по итогам вычислений идеальное решение, а если разбивать, то точность результата может несколько пострадать.

    На самом деле мысль хорошая, тулза позволяет одновременно запускать в отдельном потоке несколько независимых друг от друга задач. Ток мне чет кажется, что их она тоже на одном ядре считать будет.

    Пойду попробую =)

  3. 3
    Жека Кирпичев ответил:

    > Ток мне чет кажется, что их она тоже на одном ядре считать будет.
    Запустить два *процесса*, считающих для подзадач и сбрасывающих результаты в файлы. Тут уж никуда не денется – ось сама по ядрам раскидает :)

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.