Как установить SCIP в Spyder (Python 3.6)

Подскажите, пожалуйста, как установить модуль SCIP в Spyder (Python 3.6). Кстати, это связано с анакондой. Я пытался вставить этот модуль в этот python 3.6 в течение последних двух дней, и я ничего не получаю. Это расстраивает.

Мне нужно решить проблему смешанного целочисленного программирования.

Честно говоря, мне все равно, какой язык программирования мы используем, пока я могу решить свою проблему MIP. Однако будет лучше, если SCIP будет установлен в Spyder (Python 3.6), потому что я знаком с этим языком.

Подскажите, пожалуйста, как это сделать быстрее и проще всего. Я также только что скачал и установил автономный python 3.6. Я был бы очень признателен, если кто-то может помочь мне с этим.

Спасибо!

Я пытаюсь запустить следующий код:

from zibopt import scip
solver = scip.solver()

# All variables have default lower bounds of 0
x1 = solver.variable(scip.INTEGER)
x2 = solver.variable(scip.INTEGER)
x3 = solver.variable(scip.INTEGER)

# x1 has an upper bound of 2
solver += x1 <= 2

# Add a constraint such that:  x1 + x2 + 3*x3 <= 3
solver += x1 + x2 + 3*x3 <= 3

# The objective function is: z = x1 + x2 + 2*x3
solution = solver.maximize(objective=x1 + x2 + 2*x3)

# Print the optimal solution if it is feasible.
if solution:
    print('z  =', solution.objective)
    print('x1 =', solution[x1])
    print('x3 =', solution[x2])
    print('x2 =', solution[x3])
else:
    print('invalid problem')

Ошибка, которую я получаю:

from zibopt import scip

ModuleNotFoundError: No module named 'zibopt'

Я уже поместил папку scip в папку site-packages на диске C: и надеялся, что это сработает. У меня есть еще несколько вещей, но я не помню, какие именно.


person DD1    schedule 24.02.2017    source источник
comment
Комментарии не для расширенного обсуждения; этот разговор был перешел в чат.   -  person Bhargav Rao    schedule 26.02.2017


Ответы (2)


Если вы хотите использовать SCIP в Python, вам следует использовать этот интерфейс: https://github.com/SCIP-Interfaces/PySCIPOpt

Я даже не знаю, как вы нашли старый пакет zibopt, не наткнувшись на PySCIPOpt.

И, кстати, если вы хотите решить только смешанную целочисленную программу, вы можете просто загрузить двоичный/исполняемый файл SCIP для выбранной вами платформы. Затем вам нужно каким-то образом смоделировать свою проблему, например. с помощью ZIMPL или просто в виде простого .lp файла (см. здесь для описания формата).

person mattmilten    schedule 24.02.2017
comment
Я рад, что вы помогаете мне здесь, потому что я вижу, что именно вы были частью PySCIPOpt. Я думаю, вы были бы лучшим человеком, чтобы помочь мне решить. Прежде всего, я хочу знать, где я могу скачать Python, чтобы иметь в нем SCIP или ZIMPL. У меня есть Spyder (Python 3.6), но я не думаю, что кто-то знаком с этим. Это то, что я хочу использовать, но если я не могу, то ничего страшного. Но тогда что я использую? Я готов сделать это с нуля, если вы можете мне помочь. Я понятия не имею об использовании установки всех этих модулей и библиотек. Я был бы признателен, если бы вы могли направить меня. Спасибо! - person DD1; 25.02.2017
comment
Все эти папки мне кажутся одинаковыми. Я скачал PySCIPOPt, PuLP, SCIP, Gurobi, ZIMPL. Что мне делать после их извлечения, это мой вопрос. Я просто хочу, чтобы следовать простым инструкциям. Я вообще не специалист в этом. Я делаю это впервые. Да, я только хочу решить проблему MIP. - person DD1; 25.02.2017
comment
Вам нужно лучше ознакомиться с инструментами, которые вы хотите использовать. Python — это язык программирования, Spyder — это IDE для Python и SCIP, ZIMPL и Gurobi — это инструменты C для моделирования и решения (среди прочего) смешанных целочисленных программ. Как я уже сказал выше, нет необходимости создавать или устанавливать какие-либо из этих инструментов. Просто скачайте бинарники по ссылке, которую я упомянул выше, и запустите их. О, и, пожалуйста, не забудьте отметить мой ответ «принятым», чтобы закрыть эту тему. - person mattmilten; 25.02.2017
comment
Просто скачайте бинарники по ссылке, которую я упомянул выше, и запустите их. Как мне их запустить? И вы хотите сказать, что если я запущу это, оно будет работать в Spyder или нет? - person DD1; 25.02.2017
comment
Шутки в сторону? Вы дважды щелкаете исполняемый файл. И нет, это ничего не сделает со Spyder. И, пожалуйста, постарайтесь сначала немного усерднее, прежде чем задавать вопросы. - person mattmilten; 25.02.2017
comment
Что это ? Интерфейс SCIP Python использует общую библиотеку SCIP Optimization Suite. Поэтому вам нужно запустить make SHARED=true scipoptlib из корня каталога оптимизации SCIP. Это приведет к созданию каталога ‹path_to_scipopt/lib› и разделяемой библиотеки libscipopt.so. Как мне это сделать? И где? - person DD1; 25.02.2017

Вы можете просто скачать и установить Gusek (https://sourceforge.net/projects/gusek/) и смоделируйте задачу в MathProg (вырежьте и вставьте следующий текст в gusek IDE, сохраните и запустите):

/*# All variables have default lower bounds of 0*/
var x1 integer, >=0;
var x2 integer, >=0;
var x3 integer, >=0;

/*# x1 has an upper bound of 2*/
s.t. upx1: x1 <= 2;

/*# Add a constraint such that:  x1 + x2 + 3*x3 <= 3*/

s.t. c1: x1 + x2 + 3*x3 <= 3;


/*# The objective function is: z = x1 + x2 + 2*x3*/

maximize FunObj:x1 + x2 + 2*x3;


solve;

end;

Вы также можете использовать gusek (Ctrl-2 в gusek IDE) для создания файла *.lp (формат CPLEX) и решить его с помощью автономного SCIP.

person HRC    schedule 25.06.2021