1 / 31

ILOG

ILOG. 2007.5.21 김 해 중. 서울대학교 산업공학과 제조통합자동화 실험실. 목차. ILOG 제품군 ILOG 설치 및 설정 ILOG CPLEX ILOG Solver ILOG Scheduler ILOG Dispatcher. ILOG 제품군. ILOG makes the world's most advanced software engines ,

cleary
Download Presentation

ILOG

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ILOG 2007.5.21 김 해 중 서울대학교 산업공학과 제조통합자동화 실험실

  2. 목차 • ILOG 제품군 • ILOG 설치 및 설정 • ILOG CPLEX • ILOG Solver • ILOG Scheduler • ILOG Dispatcher

  3. ILOG 제품군 ILOG makes the world's most advanced software engines, including C++ and Java software components for business rules, optimization and visualization. Business Rules IT 부서와 비즈니스 유저 사이의 상황을 조율 Optimization 운영 효율성 최적화 엔진 Visualization 사용자인터페이스 Planning & Scheduling 생산, 운송 계획수립 (엔진 + 인터페이스)

  4. ILOG Optimization 제품군 • ILOG CPLEX 9.0 • ILOG CP (Constraint Programming) • ILOG Solver 6.0 • ILOG Scheduler 6.0 • ILOG Dispatcher 4.0 • ILOG OPL-CPLEX • ILOG ODM Model Development Tools Application Development Tools ILOG OPL Development Studio ILOG Optimization Decision Manager (ODM) Optimization Engines Math Programming Engines (MP) Constraint Programming Engines (CP)  ILOG CPLEX  ILOG CP

  5. ILOG 설치 • 프로그램 설치

  6. M.A.I. Lab. ILOG 설치 • LICENSE FILE 복사 • C:\ILOG\ILM\ACCESS.ILM • LICENSE 확인 • “ilmcheck.exe” 로 License가 맞는지 확인 • 시스템 환경변수 설정 (License 파일을 다른 폴더에 둘 경우) • set ILOG_LICENSE_FILE=C:\ILOG\ILM\ACCESS.ILM

  7. Server 설정 • Token server 실행

  8. ILOG CPLEX • ILOG CPLEX 란? • ILOG의 핵심 엔진으로, 아래와같은 Linear programming (LP) 문제를 해결하기 위한 도구. • Input

  9. Cplex 문제 범위 • Linear programming (LP) • Quadratic programming (QP) • Quadratically constrained programming (QCP) • Mixed Integer Programming (MIP) • Mixed integer quadratic programs (MIQP) • Mixed integer quadratically Constrained Programming (MIQCP) • Network-flow problems • Optimizer • Primal simplex optimizer • Dual simplex optimizer • Barrier optimizer • Mixed integer optimizer • Network optimizer • CPLEX Technology • Interactive Optimizer • Concert Technology (C++기반의 Library)를이용한 APIs • C++ • Java • C#.NET • Cplex 고객 • 1,000 개 이상의 글로벌 기업 및 정부 • SAP, Oracle를 포함한 세계 선두 소프트웨어 업체들 • 500개 이상의 대학들

  10. Example • Linear programming problem Maximize Z = X1 + 2X2 + 3X3 Subject to - X1 + X2 + X3 <= 20 X1 - 3X2 + X3 <= 30 With these bounds 0 <= X1 < = 40 0 <= X2 0 <= X3

  11. 1) Interactive Optimizer • CPLEX Console 실행 • C:\ILOG\Cplex90\bin\win31\cplex.exe

  12. 문제직접 입력 • Command prompt에서 “enter”를 입력 • “Enter name for problem:” 이라는 메시지가 출력되면 문제의 이름을 입력 • “Enter new problem:” 이라는 메시지가 출력되면 목적식과 제약식, 변수 범위를 입력 maximize X1 + 2 X2 + 3 X3 subject to -X1 + X2 + X3 <= 20 X1 - 3 X2 + X3 <= 30 bounds 0 <= X1 <= 40 0 <= X2 0 <= X3 end

  13. 최적해 도출 • “optimize” or “op”라고 입력 • “optimize” 명령어는 모델의 특성을 자동적으로 인식하고 알맞은Algorithm을 적용시킴. • 만일 모델의 특성상 특정한Optimization Algorithm을 사용하고 싶다면 다른 명령어를 사용 • primopt, tranopt, netopt, baropt • 결과보기 • 결과를 보려면 “display [ option ]” 명령어를 사용. • 해의 값을 알고 싶다면 “solution” 입력 • 변수값을 알고 싶다면 “variables” 입력 • 모든 변수값을 알고 싶다면 “-” 입력 •  dis sol var - • 결과값 출력 • 입력한 모델을 파일로 출력하거나 기존 파일을 읽어올 수 있다. • “write” 입력

  14. 결과값 출력 • 입력한 모델을 파일로 출력하거나 기존 파일을 읽어올 수 있다. • “write” 입력 \Problem name: d:/lp_ex1.lp Maximize obj: x1 + 2 x2 + 3 x3 Subject To c1: - x1 + x2 + x3 <= 20 c2: x1 - 3 x2 + x3 <= 30 Bounds 0 <= x1 <= 40 End \Problem name: d:/lp_ex1.mps NAME ROWS N obj L c1 L c2 COLUMNS x1 obj -1 c1 -1 x1 c2 1 x2 obj -2 c1 1 x2 c2 -3 x3 obj -3 c1 1 x3 c2 1 RHS rhs c1 20 c2 30 BOUNDS UP bnd x1 40 ENDATA

  15. 파일 입력 • C:\ILOG\Cplex90\bin\win31\ 아래의 txt파일 작성 (LP format or MPS)) • 실행 • 문제 읽기 • CPLEX> read LP_ex1.txt lp • 최적해 수행 • CPLEX> op • 결과보기 • dis sol var – maximize X1 + 2 X2 + 3 X3 subject to -X1 + X2 + X3 <= 20 X1 - 3 X2 + X3 <= 30 bounds 0 <= X1 <= 40 end

  16. Concert Technology 이용한 API 개발 • API 개발절차 • 환경 생성 • Model 수립 • 문제 풀기 • 결과 얻기 • 종료

  17. .NET을 이용한 Application 예 • 1. 빈 프로젝트 만들기 • 2. 환경생성: 참조추가 (Add reference) • ILOG.CPLEX.dll / ILOG.CONCERT.dll • 위치: C:\ILOG\Cplex90\bin\win31\

  18. 3. 프로그래밍 Head 추가 Model instance 생성 Model 수립 문제풀기 결과 출력

  19. ILOG Solver • ILOG Solver란? • LP 형태의 문제를 벗어나는 여러 가지 Scheduling과 Routing 문제를 풀기 위한 탐색(Search)에 기반한 C++ library • 문제구성 • Decisionvariables • Constraints

  20. Example • Describing • x + y = 17 • x - y = 5 • x can be any integer from 5 through 12 • y can be any integer from 2 through 17 • Modeling • Decisionvariables • X [5..12] y [2..17] • Constraints • x + y = 17 • x - y = 5 • Solving • Solver looks for a solution in the search space (all possible combinations of values)

  21. Initial constraint propagation • Before initial constraint propagation • D(x) = [5 6 7 8 9 10 11 12] • D(y) = [2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17] • After initial propagation for the constraint x + y = 17 • D(x) = [5 6 7 8 9 10 11 12] • D(y) = [5 6 7 8 9 10 11 12] • After initial propagation for both constraints • D(x) = [10 11 12] • D(y) = [5 6 7] • Search tree

  22. Search

  23. C++ code

  24. ILOG Scheduler • ILOG Scheduler란? • ILOG Solver를 Scheduling 문제에 특성화 시킨 도구. • Scheduling 문제 구성 요소 • Scheduling : The process of assigning activities to resourcesover time. • Activities • The task or work to be performed • Temporal constraints: • Possible relationships between the start and end times of the activities • Resources • Objects such as workers, machines, vehicles, supplies, raw materials, etc., which add value to a product or service in its creation, production, or delivery—to allocate to the activities; • Resources constraints • Definitions of demands of the activities upon the Resources

  25. Example 바닥 (7) 벽(3) 지붕(1) 수도(8) 배선(3) 외관(2) 정원(1) 내부도색(2) 창문(1) 이사(1)

  26. C++ code // Model IloEnv env; IloNumVar makespan; IloModel model = DefineModel(env, makespan); // Algorithm IloSolver solver(model); IloGoal goal = IloInstantiate(env, makespan); if (solver.solve(goal)) { PrintSolution(solver); } else solver.out() << “No Solution” << endl; env.end(); • IloModel DefineModel(const IloEnv env, IloNumVar& makespan) • { • IloModel model(env); • /* CREATE THE ACTIVITIES. */ • IloActivity masonry(env, 7, “masonry “); • IloActivity carpentry(env, 3, “carpentry “); • IloActivity plumbing(env, 8, “plumbing “); • IloActivity ceiling(env, 3, “ceiling “); • IloActivity roofing(env, 1, “roofing “); • IloActivity painting(env, 2, “painting “); • IloActivity windows(env, 1, “windows “); • IloActivity facade(env, 2, “facade “); • IloActivity garden(env, 1, “garden “); • IloActivity moving(env, 1, “moving “); • /* ADD THE TEMPORAL CONSTRAINTS. */ • model.add(carpentry.startsAfterEnd(masonry)); • model.add(plumbing.startsAfterEnd(masonry)); • model.add(ceiling.startsAfterEnd(masonry)); • model.add(roofing.startsAfterEnd(carpentry)); • model.add(painting.startsAfterEnd(ceiling)); • model.add(windows.startsAfterEnd(roofing)); • model.add(facade.startsAfterEnd(roofing)); • model.add(facade.startsAfterEnd(plumbing)); • model.add(garden.startsAfterEnd(roofing)); • model.add(garden.startsAfterEnd(plumbing)); • model.add(moving.startsAfterEnd(windows)); • model.add(moving.startsAfterEnd(facade)); • model.add(moving.startsAfterEnd(garden)); • model.add(moving.startsAfterEnd(painting)); • /* SET THE MAKESPAN VARIABLE. */ • makespan = IloNumVar(env, 0, IloInfinity, ILOINT); • model.add(moving.endsAt(makespan)); • return model; • } void PrintSolution(const IloSolver solver) { IlcScheduler scheduler(solver); IloEnv env = solver.getEnv(); for(IloIterator<IloActivity> act(env); act.ok(); ++act) env.out() << scheduler.getActivity(*act) << endl; solver.printInformation(); }

  27. 결과 바닥 공사: 0일에 시작해서 7일 소요, 7일에 마무리. masonry [0 -- 7 --> 7] carpentry [7..11 -- 3 --> 10..14] plumbing [7 -- 8 --> 15] ceiling [7..12 -- 3 --> 10..15] roofing [10..14 -- 1 --> 11..15] painting [10..15 -- 2 --> 12..17] windows [11..16 -- 1 --> 12..17] facade [15 -- 2 --> 17] garden [15..16 -- 1 --> 16..17] moving [17 -- 1 --> 18] 벽 공사: 7~11일 사이 시작, 3일 소요, 10일에서 14일 마무리 바닥 벽 지붕 배관 배선 내부도색 창 외관 정원 이사

  28. Gantt chart로 결과 보기 • ILOG Views Gantt로 연결

  29. ILOG Dispatcher • ILOG Dispatcher란? • ILOG Solver를 Vehicle routing 문제에특성화. • 문제 구성 요소 • Routing : The process of assigning visits to vehicles, while taking into account constraints such as capacity or time windows, to produce a routing plan with the least possible cost • Nodes • Geographic locations • Visits • Activities that the vehicle has to perform • Vehicles • Resources that convey goods from one visit to another. • A vehicle has a start and an end visit and can have variable start and end times associated with those visits.

  30. Example • A simple vehicle routing problem

  31. 문제해결 순서 • 초기해 생성 • Local search를 통해 해의 개선

More Related