линейно-целочисленная оптимизация в целлюлозе

Я пытался решить следующий простой пример задачи оптимизации, прежде чем приступить к более серьезной проблеме. Код:

from pulp import *
x = LpVariable("x", 0, 3)
y = LpVariable("y", 0, 1)
prob = LpProblem("myProblem", LpMinimize)

prob += x + y <= 2
#objective function
prob += -4*x + y

status = prob.solve(GLPK(msg = 0))
#results
value(x)

Я получаю следующую ошибку:

Traceback (most recent call last):
  File "C:\Users\mahabubalam\Desktop\Works\GUI\whiskas.py", line 85, in <module>
    status = prob.solve(GLPK(msg = 0))
  File "C:\Python34\lib\site-packages\pulp-1.5.6-py3.4.egg\pulp\pulp.py", line 1619, in solve
    status = solver.actualSolve(self, **kwargs)
  File "C:\Python34\lib\site-packages\pulp-1.5.6-py3.4.egg\pulp\solvers.py", line 335, in actualSolve
    raise PulpSolverError("PuLP: cannot execute "+self.path)
pulp.solvers.PulpSolverError: PuLP: cannot execute glpsol.exe

Может ли кто-нибудь помочь мне понять, почему это так?


person Dubar Alam    schedule 18.07.2014    source источник
comment
Вы пробовали запускаться с правами администратора?   -  person oyvind    schedule 18.07.2014
comment
Извините, я новичок в оптимизации. Что вы имели в виду под «правами администратора»? Как мне это сделать?   -  person Dubar Alam    schedule 18.07.2014
comment
Права админа винды, тут оптимизация не причем :). Щелкните правой кнопкой мыши файл python и выберите Запуск от имени администратора.   -  person oyvind    schedule 19.07.2014
comment
Я сохранил файл python как whisk.py. Я щелкнул правой кнопкой мыши файл whisk.py, но нет ничего лучше Запуск от имени администратора. Я наверное что-то упустил.   -  person Dubar Alam    schedule 19.07.2014
comment
Как вы в первую очередь продвигаете программу?   -  person oyvind    schedule 19.07.2014
comment
Вы установили GLPK?   -  person oyvind    schedule 19.07.2014
comment
Установил жом. ГЛПК ведь должен быть с мякотью?   -  person Dubar Alam    schedule 19.07.2014
comment
запустить pulp.pulpTestAll ()   -  person oyvind    schedule 19.07.2014
comment
Я сделал и нашел недоступный список: * Solver ‹class 'pulp.solvers.PULP_CBC_CMD'› пройден. Решатель ‹класс 'pulp.solvers.GLPK_CMD'› недоступен   -  person Dubar Alam    schedule 19.07.2014
comment
Так что, возможно, это то, что вам нужно: sourceforge.net/projects/winglpk   -  person oyvind    schedule 19.07.2014


Ответы (5)


Я успешно выполнил ваш код после выполнения следующих двух шагов:

  1. Скачать GLPK из

    http://sourceforge.net/projects/winglpk/files/latest/download (как упомянул ойвинд)

  2. Разархивируйте в (например): C:\glpk_is_here\
  3. Добавьте двоичные файлы GLPK в системный путь перед запуском python C:\>set PATH=%PATH%;C:\glpk_is_here\glpk-4.55\w64

  4. Используя то же окно cmd из (3), используйте python / ipython для запуска вашего кода:
    C:\>ipython your_code.py

  5. Посмотреть результаты Out[4]: 2.0

Удачи.

person MZHm    schedule 27.03.2015

Я получил эту ошибку, когда использовал недопустимые символы в имени переменных. Из того, что я могу собрать в коде целлюлозы (точнее, LpElement), символы -+[] ->/ недопустимы и все они заменены подчеркиванием.

После обнаружения ошибки я предварительно обрабатываю имена переменных с помощью следующей функции, устраняя проблему:

  def variableName(s):
    # illegalChars = "-+[] ->/"
    s = s.replace("-","(hyphen)")
    s = s.replace("+","(plus)")
    s = s.replace("[","(leftBracket)")
    s = s.replace("]","(rightBracket)")
    s = s.replace(" ","(space)")
    s = s.replace(">","(greaterThan)")
    s = s.replace("/","(slash)")
    return s
person levis501    schedule 30.05.2015
comment
Эта ошибка также может быть вызвана повторяющимися именами LpVariable. В моем случае у меня было несколько разных имен, которые были уникальны до замены подчеркивания. - person levis501; 30.05.2015

Это работает для меня в unbuntu:

   sudo apt-get install python-glpk  
   sudo apt-get install glpk-utils

Думаю в windows есть подобное решение

person hunter    schedule 26.09.2016

Установите GLPK, например из sourceforge.net/projects/winglpk

person oyvind    schedule 18.07.2014

Для Mac - brew install glpk на терминале.

Homebrew - лучший вариант.

person lorelai    schedule 09.03.2016