[Julia] Julia Programming for Operations Research : Chap8 – Nonlinear Optimization Problems

비선형 방정식의 최적화 문제를 다루고 있다.

예제는 Jupyter notebook 입니다.

파일은 –> 여기

Nonlinear Optimizer Solvers

환경

여기서 사용된 Non-Linear Solver는

  • Knitro – 유료버전, 학생버전은 제한된 용량으로 6개월 , 풀 기능으로 1개월, Nonlinear Objective, Nonlinear Constraint, Mixed Integer-NLP등을 지원
  • Ipop – 오픈소스, Nonlinear Objective, Nonlinear Constraint 지원, Mixed Integer-NLP 미지원
  • SCIP – 오픈소스, 상업적용도는 별도 협의, Nonlinear Objective 미지원, Nonlinear Constraint, Mixed Integer-NLP 지원
  • Bonmin,couenne 등은 에러발생으로 테스트 못함
  • https://ampl.com/products/solvers/open-source/
  • 위 url에서 bonmin,couenne 을 받아 압축을 풀고 적당한 폴더 예를들어 /home/ampl에 압축을 푼 파일을 복사한다.
  • Julia v1.3.0 , JuMP v0.20.1, Ipopt v0.6.1
  • KNITRO v0.8.0 (https://github.com/JuliaOpt/KNITRO.jl)
  • knitro-12.1.1-Linux-64 (https://www.artelys.com/solvers/knitro/)
  • SCIP (https://scip.zib.de/)

KNITRO

  • Nonliner optimizer (commercial)
  • knitro package가 설치 되어 있고 라이선스가 있어야 동작함
  • 라이선스는 학생용으로 받으면 제한된 크기로 6개월간 사용가능 하며
  • 풀기능은 1개월 사용 가능하다.
  • Mixed Integer Nonlinear 문제를 어느 정도 풀 수 있음

SCIP

  • SCIP julia interface를 설치 하기전에 scip 패키지가 먼저 설치 되어 있어야 한다.
  • 필요시 (소스 컴파일시) 아래 패키지를 먼저 설치 한다.
  • sudo apt-get install libreadline-dev
  • sudo apt install libgmp-dev
  • scip 패키지 : https://scip.zib.de/#scipoptsuite
  • 리눅스의 경우 위 사이트에서 아래 파일을 받아 설치 한다.
  • sudo dpkg -i SCIPOptSuite-6.0.2-Linux.deb
  • scip 패키지의 lib,bin,include 파일들은 “/usr” 아래 설치된다.
  • julia에서 SCIP Interface 설치전에 아래와 같은 환경 변수를 설정 해야 한다.
    • export SCIPOPTDIR=/usr
    • .bashrc 파일에 넣어 준다
    • source .bashrc
  • 환경 변수 설정 까지 끝났으면 https://github.com/mrchaos/SCIP.jl 에서 SCIP interface 패키지를 설치 한다
  • https://github.com/SCIP-Interfaces/SCIP.jl 에 요청한 내용이 반영된 경우는 이 사이트에서 하면된다.
  • scip julia interface site(forked and updated) : https://github.com/mrchaos/SCIP.jl
    • main에 merge 요청중 (2019.12.19)
    • 몇개의 주요 파일이 업데이트 됨
    • 아래 SCIP예제를 성공적으로 실행 하기 위해서는 mrchaos 사이트의 SCIP를 설치 해야 된다.
    • Pkg> add https://github.com/mrchaos/SCIP.jl
    • Julia> using SCIP
    • 아무 문제 없다면 OK!
  • Origianl scip julia interface site : https://github.com/SCIP-Interfaces/SCIP.jl

Ipopt

  • Nonliner optimizer (opensource)
  • Mixed Integer Nonlinear는 지원하지 않음
  • import Pkg; Pkg.add(“SCIP”)

bonmin,couenne

  • Nonliner optimizer (opensource)
  • Mixed Integer Nonlinear 문제를 어느정도 풀 수 있다고 하는데 제대로 동작하지 않아 테스트 못함
  • 제대로 동작 하지 않음
  • AmplNLWriter v0.5.0
  • 아래 예제 소스에서 사용한 optimizer는 Ipopt이다. bonmin이 잘 동작 하지 않음

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다