Optimization(최적화) 기능 활용 방법
Speos에서는 광학계의 법규 및 스펙 만족 또는 균일도 달성 등을 목표로 하는 디자인을 위해 설계변수를 최적화할 수 있으며, 그 방법으로는 총 3가지가 있습니다 .
첫번째, Workbench를 활용하는 방법 . 두번째, OptisLang을 활용하는 방법. 그리고 세번째로 Speos에 내장된 기능인 Optimization을 활용하는 방법이 있습니다.
본 자료에서는 상기 마지막 방법인 Optimization 기능 활용 방법에 대해서만 설명하겠습니다.
본 내용은 사실 폐사 주관 ‘Speos 활용 Light Guide 광학 설계 입문’ 교육에서 관련 예제를 통해 집중적으로 다루고 있습니다만, 교육 과정의 속도 및 분량이 다소 타이트하여 전부 안내 드리지 못했던 디테일한 설명을 본 자료를 통해 보완 드리고자 합니다.
다음의 순서로 안내드립니다 :
- §1. Optimization 개요
최적화 프로세스를 위해 Speos에 내장된 Optimization 기능을 소개합니다. - §2. Optimization Parameter에 대한 이해
Optimization 생성 시 설정해야 하는 다양한 파라메터에 대해 설명합니다. - §3. Optimization 생성
Optimization 생성 workflow 및 각 optimization 모드에 대해 설명합니다. - §4. Variables 정의
적용 대상 파라메터 유형에 따라 변수를 정의하는 방법에 대해 설명합니다. - §5. Targets 정의
정의된 변수의 영향을 측정/평가/분석하기 위한 target을 정의하는 방법에 대해 설명합니다. - §6. Optimization 실행
Optimization의 3가지 세부 모드들에 따른 프로세스 작동 방식을 설명합니다. - §7. HTML Report 검토 (Random Search 모드 한정)
HTML report에 포함된 모든 정보를 설명합니다. - §8. Optimization Plugin 모드 응용
프로그래밍을 응용한 유저 커스텀 모드이며, 상급자용으로, 본 자료에서는 설명을 생략합니다.
§1. Optimization 개요
최적화 프로세스를 위해 Speos에 내장된 Optimization 기능을 소개합니다.
Optimization 기능은 설정된 target에 따라 달성하고자 하는 설계변수를 찾을 수 있도록 하여 광학계의 성능을 극대화하는데 그 목적이 있습니다.
이를 위해 다양한 최적화 모드와 그에 적용할 변수 유형을 제공하여 분석에 유연성을 부여합니다.
§1.1. Optimization 모드
Speos의 Light Simulation 탭에 내장된 Optimization 기능은 3가지 최적화 모드를 제공합니다 :


- Random Search 모드는 랜덤변수를 기반으로 한 광역 최적화 기법입니다.
- Design of Experiment(DOE, 실험계획법) 모드는 Excel 파일 포맷을 적용하여 해당 변수들의 특정 값들을 유저가 직접 지정하는 기법입니다.
- Plugin 모드는 유저가 직접 커스텀한 최적화 알고리즘을 활용하여 분석에 더욱 향상된 유연성을 부여하는 기법입니다.
§1.2. Variables 종류
Optimization 기능에서 적용 가능한 변수는 각 출처에 따라 3가지 유형으로 분류됩니다.

- Simulation Variable
Light Simulation 탭의 기능들에 구성된 정량 파라메터들을 선택할 수 있는 최적화 변수입니다. - Design Variable
Design 탭의 Optical Part Design 기능들에 구성된 정량 파라메터들을 선택할 수 있는 최적화 변수입니다. - Document Variable
Groups 패널에서 생성할 수 있는 input parameter(Driving Dimension, Script Parameter)들을 선택할 수 있는 최적화 변수입니다.
§1.3. Target
Target을 설정하여 정의된 변수들의 영향을 최적화의 관점에서 측정/평가/분석합니다.

Variables가 input이라면, Target은 output에 해당합니다.
§1.4. 기본 workflow
1) 먼저 광학계를 검토하기 위해 Direct Simulation 또는 Inverse Simulation을 정의합니다 .
2) 상기 정의된 Simulation을 실행하여 결과를 생성합니다.
3) XMP 결과에서 target(최적화 목표)로 사용할 measure 항목을 설정합니다.
4) Light Simulation 탭에서 Optimization을 생성합니다 .
5) 최적화할 변수 (Variables)들을 하나 이상 추가합니다.
6) 변수 범위 (최소값 및 최대값)을 정의합니다.
7) XMP 결과의 measure에서 생성한 측정 항목들 중 하나 이상을 target으로 추가합니다.
8) Target(목표치)들이 2개 이상일 경우 그 우선순위에 대한 weight(가중치)를 정의합니다.
9) 정의 완료된 optimization을 실행합니다.
10) 설정된 최적화 파라메터에 따라 발견된 최적화 결과값을 측정/평가/분석합니다.
유의사항 : Optimization 과정 중 Design of Experiment(DOE, 실험계획법)모드에서 degrees로 표현된 각도 단위 값을 script parameter로 사용할 경우 잘못된 결과를 초래합니다.
Degrees 단위를 적용할 경우 optimization에서 radian 단위로 잘못 인식하기 때문입니다.
따라서, 각도 단위는 반드시 radian만 적용 가능하며 , degrees일 경우 radian으로 변환하셔야 합니다.
§2. Optimization Parameter에 대한 이해
Optimization 생성 시 설정해야 하는 다양한 파라메터에 대해 설명합니다 .
§2.1. Merit Function
Merit function 설정으로 최적화 결과를 어느 방향으로 수렴할지 정의할 수 있습니다.

- Minimize를 적용하면 최적화 결과값을 target값에 최대한 근접하게 맞출 수 있습니다.
- Maximize를 적용하면 최적화 결과값을 target값으로부터 최대한 멀리 떨어뜨릴 수 있습니다.
Merit function의 공식은 다음과 같습니다 :

상기 공식 중 :
- Target : 최적화 목표치
- Measure : target의 실제 해석된 값
- Weight : 가중치, target들이 여러 개 인 경우 해당 target 중요도 우선 순위
§2.2. Optimization 모드 종류
§2.2.1. Random Search
Random Search 모드는 확률적 원리에 기반하여 광역 범위에서 최적화 결과값을 찾는 기법입니다.

이 모드는 모든 유형의 optimization에 무난하게 적용할 수 있다는 점이 장점입니다.
§2.2.2. Design of Experiment (DOE, 실험계획법)
Design of Experiment 모드는 Excel 파일 포맷으로 변수값을 직접 입력하여 정의할 수 있게 합니다.

Random Search와 같이 변수값을 지정 범위 내 랜덤한 숫자로 자동 부여하지 않음을 주목 바랍니다.

Random Search 모드와는 달리, Design of Experiment는 사실 최적화 알고리즘이 아닙니다.
이는 Excel 파일에 정의한 변수값의 개수에 의존하기 때문에, Merit function이나 Stop Condition을 정의할 필요가 없기 때문입니다.
§2.2.3. Plugin
Plugin은 유저가 직접 프로그래밍으로 최적화 알고리즘을 제작하여 적용하는 모드입니다.
Plugin 모드는 최적화 알고리즘을 생성하는 방법을 알고 있는 고급 유저를 위한 전용 모드이므로, 본 자료에서는 설명을 생략합니다.
§2.3. Variables(변수) 종류
§2.3.1. Simulation Variables
Simulation Variable은 Light Simulation 탭의 기능들에 구성된 정량 파라메터들을 선택할 수 있는 최적화 변수입니다.

§2.3.2. Design Variables
Design Variable은 Design 탭의 Optical Part Design 기능들에 구성된 정량 파라메터들을 선택할 수 있는 최적화 변수입니다.
§2.3.3. Document Variables
Document Variable은 Groups 패널에서 생성할 수 있는 input parameter
즉, Driving Dimension, Script Parameter들을 선택할 수 있는 최적화 변수입니다.

- Driving Dimension은 형상의 크기, 각도나 위치 등 치수를 나타내는 파라메터입니다.
- Script Parameter는 Script 패널 내에 위치하며, Driving Dimension을 효과적으로 제어하기 위해 유저가 직접 만든 치수 제어 공식입니다.
Driving Dimensions 및 Script Parameters 생성 방법에 대한 자세한 내용은 폐사 주관 교육인 ‘Speos 중급’ 및 ‘Speos 심화’ 과정에서 예제를 통해 중점적으로 다루고 있습니다.
참고 : Simulation Variable 및 Design Variable와 달리, Document Variable은 반드시 Simulation에 영향을 미치는 것은 아니므로, Document Variable을 적용시에는 광학계나 Simulation과 직접 관련된 변수인지 검토 후 적용 바랍니다.
예시 : Simulation에 포함되지 않은 형상의 크기, 각도 또는 위치를 수정하는 Driving Dimension.
이 경우, 해당 Driving Dimension을 Document Variable로 설정해도 최적화에 영향을 미치지 않습니다.
§2.4. Targets
Target은 정의된 변수들의 영향을 최적화의 관점에서 측정/평가/분석합니다.
Variables가 input이라면, Target은 output에 해당합니다 .
이 target들은 Simulation 완료 후 XMP 결과에서 생성한 각 measure값들로 구성할 수 있습니다.
이러한 각 measure값들은 optimization 실행 전에 준비되어 있어야 합니다.
즉, 사전 Simulation 실행으로 생성된 measure값에 해당합니다.

§2.5. Weight
Weight(가중치)는 다른 target들에 비해 해당 target의 중요도 수준을 지정하는 척도입니다.
숫자가 높을수록 해당 target의 우선순위가 다른 target들 보다 더 높게 고려됩니다.
§2.6. Keep Intermediate Results
Keep intermediate results는 최적화 과정 중 반복 simulation의 각 결과를 유지하는 옵션입니다.

SPEOS output files 폴더 내에 해당 optimization 이름으로 하위 폴더가 생성되어, 각 반복마다 각각의 결과가 개별로 저장됩니다.
§2.7. Use Maximum Time
Use maximum time은 stop condition으로서 optimization 진행에 소요되는 최대 시간을 설정합니다.
단, 시간이 초과되었는데도 마지막 Simulation 실행이 아직 완료되지 않은 경우에는, 해당 Simulation까지만 완료하고 optimization 진행을 중지하게 됩니다.

§2.8. Use Maximum Number of Simulations
Use maximum number of simulations는 stop condition으로서 반복할 Simulation 횟수를 설정합니다.
§3. Optimization 생성
Optimization 생성 workflow 및 각 optimization 모드에 대해 설명합니다.
1) Light Simulation 탭에서 Optimization
아이콘을 클릭합니다.
2) General 섹션의 mode 항목 드롭다운 리스트에서 사용할 최적화 모드를 선택합니다 :

o Random Search : Merit function 기반으로 랜덤변수를 활용한 최적화 모드입니다.
o Design of Experiment : Excel 파일 포맷을 기반으로 유저가 직접 세팅한 변수값을 활용한 최적화 모드입니다.
o Plugin : 프로그래밍을 응용한 상급자용 유저 커스텀 방식으로 설명을 생략합니다.
3) 3D view에서
아이콘을 클릭하고 최적화할 Simulation을 선택합니다.
최적화 모드에 따라 Random Search, Design of Experiment 또는 plugin 별로 다음 절차를 따릅니다.
§3.1. Random Search 모드
Optimization 기능에서 Random Search 모드를 선택합니다.
1) Merit function 항목의 드롭다운 리스트에서 최적화가 수렴하는 방식을 정의합니다: 
o Minimize를 선택하면 XMP 결과의 measure에서 선택된 target값을 설정 target값과 최대한 가깝게 만듭니다.
o Maximize를 선택하면 XMP 결과의 measure에서 선택된 target값을 설정 target값과 최대한 멀리 떨어지게 만듭니다.
2) Keep intermediate results 선택으로 각 반복 결과를 모두 저장할지 여부를 정의합니다.
True로 설정하면 SPEOS output files 폴더내에 각 반복 결과들이 저장됩니다 .
3) Stop Conditions 섹션에서 최적화를 종료하는 방법을 정의합니다 : 
o 최적화가 특정 시간 동안 실행된 후 중단되도록 하려면, Use maximum time을 True로
설정하고 최대 시간을 초 단위로 정의합니다.
중요 : 시간이 초과되었는데도 마지막 Simulation 실행이 아직 완료되지 않은 경우, Optimization을 중지하기 전에 현재 Simulation까지 완료합니다 .
o 특정 Simulation 실행 횟수 이후에 최적화를 중지하려면,
Use maximum number of simulations를 True로 설정하고 최대 Simulation 횟수를 정의합니다.
참고 : 두 Stop Condition을 모두 True로 설정할 수 있습니다.
이 경우, 가장 먼저 도달하는 Stop Condition으로 최적화가 종료됩니다.
§3.2. Design of Experiment(DOE, 실험계획법) 모드
Optimization 기능에서 Design of Experiment 모드를 선택합니다.

1) Variables 패널에서 적용하려는 변수를 유형에 따라 Simulation Variables, Design Variables 및 Document Variables에 추가합니다.
2) 변수 설정을 완료한 후, Excel 파일 경로 드롭다운 리스트에서 Create Excel을 클릭합니다.
중요 : Variables 패널에서 먼저 변수를 추가해야 합니다.
그렇지 않으면 Excel 파일에서 변수 값에 대한 표가 제대로 생성되지 않습니다.
3) Excel 파일을 SPEOS input files 폴더에 저장합니다.
그러면 Excel 파일이 자동으로 열립니다.
4) Excel 파일에서 제일 왼쪽 세로 열의 1, 2, 3, 4, 5…로 표현되는 정수는 실행할 반복 횟수와 그 순서를 나타내며, 그 이후의 모든 열은 추가된 각 변수에 해당합니다 :

a) Iteration number 열에서 각 반복 simulation의 순번을 매깁니다.
b) 그 다음 각 변수 열에서 각 반복마다 적용할 변수의 값을 설정합니다.
참고 : Variables 패널의 변수에 대한 Min value와 Max value는 설정할 필요가 없습니다.
최적화 진행 시 Excel 파일에 정의된 값들 만을 사용하기 때문입니다.
5) Excel 파일을 저장하고 닫습니다.
모든 변수를 정의하였다면, 이제 Optimization을 실행합니다 .
§3.3. Plugin 모드
Plugin 모드는 프로그래밍을 응용하여, 최적화 프로세스를 유저가 직접 커스텀하는 방식으로, 상급자용으로서, 자세한 설명은 생략합니다.
§4. Variables 정의
적용 대상 파라메터 유형에 따라 변수를 정의하는 3가지 방법에 대해 설명합니다 .
§4.1. Simulation Variables 정의
Light Simulation 탭의 기능들에 구성된 정량 파라메터들을 선택할 수 있는 최적화 변수입니다.
필수조건 : 해당 Optimization feature에 대상 Simulation feature가 추가되어 있어야 합니다.
1) Optimization의 definition 패널에서 하단의 Simulation Variables 탭을 선택합니다.
2)
버튼을 클릭하여 Simulation Variables 리스트를 엽니다.
이 리스트는 대상 simulation feature의 변수들 중 Light Simulation 탭에서 생성된 기능에서 유래한 변수로서 Simulation Variables에 적용할 수 있는 정량적인 파라메터들을 보여줍니다.
3) Simulation Variables로 지정할 파라메터를 선택합니다.
팁 : 파라메터 리스트가 너무 많은 Simulation의 경우, 필터 도구를 사용하여 원하는 파라메터를 빠르게 찾을 수 있습니다.
4) Simulation Variables 리스트를 닫습니다 .
그 다음 변수들이 잘 정의되었는지 Simulation Variables 탭에서 확인합니다.
5) Simulation Variables 탭에서 각 변수에 대해 Min value와 Max value를 설정하여 변수가 가질 수 있는 값의 범위를 정의합니다.
단, Min value와 Max value 사이에 Current value가 위치하도록 설정되어야 합니다.
§4.2. Design Variables 정의
Design 탭의 기능들에 구성된 정량 파라메터들을 선택할 수 있는 최적화 변수입니다.
필수조건 : 해당 Optimization feature에 대상 Simulation feature가 추가되어 있어야 합니다.
1) Optimization의 definition 패널에서 하단의 Design Variables 탭을 선택합니다.
2)
버튼을 클릭하여 Design variables 리스트를 엽니다.
이 리스트는 대상 simulation feature의 변수들 중 Design 탭의 Optical Part Design 기능에서 유래한 변수로서 Design Variables에 적용할 수 있는 정량적인 파라메터들을 보여줍니다.
3) Design Variables로 지정할 파라메터를 선택합니다.
팁 : 파라메터 리스트가 너무 많은 Simulation의 경우, 필터 도구를 사용하여 원하는 파라메터를 빠르게 찾을 수 있습니다.
4) Design variables 리스트를 닫습니다.
그 다음 변수들이 잘 정의되었는지 Simulation Variables 탭에서 확인합니다.
5) Design Variables 탭에서 각 변수에 대해 Min value와 Max value를 설정하여 변수가 가질 수 있는 값의 범위를 정의합니다.
단, Min value와 Max value 사이에 Current value가 위치하도록 설정되어야 합니다 :
Min value < Current value < Max value
그 다음 다른 변수 유형을 Simulation Variables나 Document Variables로 추가하거나,
또는 Target을 추가합니다.
§4.3. Document Variables 정의
Groups 패널에서 생성할 수 있는 input parameter(Driving Dimension, Script Parameter)들을 선택할 수 있는 최적화 변수입니다.
참고 : 해당 Optimization feature에 대상 Simulation feature를 추가할 것을 권장합니다.
Simulation feature가 아직 선택되지 않았더라도 Document Variables를 정의할 수 있기 때문입니다.
1) Optimization의 definition 패널에서 하단의 Document Variables 탭을 선택합니다.
2)
버튼을 클릭하여 Document Variables 리스트를 엽니다.
이 리스트는 Driving Dimension 및 Script Parameters에서 유래한 변수로서 Document Variables에 적용할 수 있는 정량적인 파라메터들을 보여줍니다 .
참고 : Simulation Variables 및 Design Variables와 달리, Document Variables 리스트에 나타나는 변수들은 반드시 Simulation에 영향을 미치는 것은 아닙니다.
따라서, Simulation에 직접적인 광학계와 관련된 Document Variable을 반드시 추가합니다.
3) Document Variables로 지정할 파라메터를 선택합니다.
팁 : 파라메터 리스트가 너무 많은 Simulation의 경우, 필터 도구를 사용하여 원하는 파라메터를 빠르게 찾을 수 있습니다.
4) Document Variables 리스트를 닫습니다 .
그 다음 변수들이 잘 정의되었는지 Document Variables 탭에서 확인합니다.
5) Document Variables 탭에서 각 변수에 대해 Min value와 Max value를 설정하여 변수가 가질 수 있는 값의 범위를 정의합니다.
단, Min value와 Max value 사이에 Current value가 위치하도록 설정되어야 합니다 :
Min value < Current value < Max value
§5. Targets 정의
정의된 변수의 영향을 측정/평가/분석하기 위한 target을 정의하는 방법에 대해 설명합니다.
1) Optimization에서 target으로 사용될 measure값을 설정합니다 :
a) Optimization에 적용할 Simulation을 우선 실행합니다.
b) XMP 결과 창에서 measure값들을 설정합니다.
c) File à Export template을 선택합니다.
d) 결과를 생성한 sensor에서 상기 export한 template을 XML template으로 적용합니다.
해당 template의 measure값들을 optimization에서 target으로 정의하기 위함입니다.
2) Optimization의 definition 패널에서 하단의 Targets 탭을 선택합니다.
3)
버튼을 클릭하여 Targets 리스트를 엽니다.
이 리스트는 대상 simulation의 XMP 결과 중 measure에서 유래한 변수로서 target으로 적용할 수 있는 정량적인 파라메터들을 보여줍니다.
4) Target으로 지정할 measure값들을 선택합니다.
팁 : 파라메터 리스트가 너무 많은 경우, 필터 도구를 사용하여 더욱 빠르게 찾을 수 있습니다.
5) Targets 리스트를 닫습니다.
그 다음 target들이 잘 정의되었는지 Targets 탭에서 확인합니다.
6) Targets 탭에서 각 target들에 대해 근접시킬 target값(Merit function 최소화) 또는 반대로 멀어질 target값(Merit function 최대화)와 해당 weight(가중치)를 설정합니다.
Weight(가중치)는 모든 target들 중 해당 target의 중요도 수준을 설정합니다.
숫자가 높을수록 해당 target의 비중을 더 크게 다룹니다.
§6. Optimization 실행
Optimization의 3가지 모드들 (Random Search, Design of Experiment, Plugin)에 따른 각각의 작동 방식을 설명합니다.

필수조건 : Random Search 및 Plugin의 경우 target과 변수를 각각 하나 이상 설정해야 하나,
Design of Experiment의 경우 변수만 하나 이상 설정하면 됩니다.
1) 기존에 optimization 실행이 한번 이상 있었고, 그 결과를 보존해야 한다면 , 별도로 저장합니다.
그렇지 않으면 다음에 실행하는 optimization이 이전 기록을 덮어쓸 것입니다.
2) Simulation 패널에서 Optimization feature를 마우스 오른쪽 버튼 클릭 후,
Compute
또는 GPU Compute
를 선택하여 optimization을 실행합니다 .

3) Optimization 과정이 종료된 후, 초기 변수 값 대신, 도출된 최적 해로 교체할 것인지 정합니다.

o Yes를 선택하면 최적 해로 교체합니다.
o No를 선택하면 초기 변수 값을 유지합니다.
최적화 과정 종료 시, Simulation 패널의 해당 Optimization 노드 아래에 HTML report가 생성됩니다 . 
Random Search 모드의 경우, Keep intermediate results를 True로 설정하면 SPEOS output files 폴더 내에 해당 Optimization 이름의 폴더가 생성되며, 이 폴더에는 모든 반복 결과가 포함됩니다.
§7. HTML Report 검토 (Random Search 모드 한정)
HTML report에 포함된 모든 정보를 설명합니다.
HTML report는 프로젝트 폴더내에 SPEOS output files 폴더에서도 찾을 수 있습니다 .
참고 : HTML report는 Random Search 모드만 해당됩니다.
§7.1. Time Analysis 항목
Time Analysis 항목에서는 최적화 과정의 초기화/종료 일시와 소요 시간을 요약합니다. 
§7.2. Variables 항목
Variables 항목은 Optimization에 적용된 모든 변수와 그 최소값 및 최대값을 요약합니다.
참고 : Precision 열은 계산되지 않으므로 고려하지 않으셔도 됩니다.

§7.3. Targets 항목
Targets 항목은 선택된 모든 target 항목, 그 target 값 및 weight(가중치)를 요약합니다 .
§7.4. Parameters 항목
Parameters 항목에서는 선택된 Optimization 모드에 따라 정의된 파라메터들을 요약합니다 .
Random search 모드의 경우, Merit function을 평가합니다.
§7.5. Evaluations 항목
Evaluations 항목에서는 각 반복에 대해 적용된 모든 변수 값, 각 target들로 도출된 값 및 Merit function 값을 요약합니다.
Best solution은 녹색으로 강조 표시됩니다.
Random Search 모드의 경우, Keep intermediate results가 True로 설정되어 있으면 HTML report에서 XMP 결과를 직접 다운로드할 수 있는 링크가 제공됩니다. 
§7.6. Results 항목
Results 항목에서는 도출된 best solution만 요약합니다 (Evaluations 섹션에서는 녹색으로 강조 표시됨).
§8. Optimization Plugin 모드 응용
그 외 Plugin 응용 방법이 남아 있으나, 프로그래밍을 활용한 고급 과정에 해당된다고 판단하여,
앞선 언급과 같이 생략하였습니다.
이상 Speos Optimization 기능 활용 방법 안내를 마치겠습니다.
Optimization에 대한 더욱 자세한 활용법은 폐사 주관 “Speos 활용 Light Guide 광학 설계 입문” 교육에서 예제 중심으로 다루고 있습니다.
관심 있으신 분은 한번 수강하셔도 좋을 것 같습니다.
추가로 궁금 하신 부분 있으시면 아래의 연락처로 연락 바랍니다.
감사합니다
㈜래디언트솔루션
㈜래디언트솔루션은 광학 이론, 설계, 해석, 측정 평가, 생산라인 검사 자문까지 End-to-End Service가 가능한
광학 전문 ANSYS 채널 파트너로서 광학 설계, 측정, 검사 시스템 개발, 암실 구축까지
당사의 기술력을 기반으로 한 고객 맞춤형 광학 Full Service 제공하고 있습니다.
Ansys Speos에 대한 자세한 사양 및 기술 지원 정보는 이메일 radiant@radiantsolution.co.kr,
또는 02-2065-0726으로 연락 주시기 바랍니다.
감사합니다.
Ansys Optics Products Sales
담당자 (Direct) : 02-6096-5706
대표전화 : 02-2065-0726
E-mail: optical@radiantsolution.co.kr

Optimization(최적화) 기능 활용 방법
Speos에서는 광학계의 법규 및 스펙 만족 또는 균일도 달성 등을 목표로 하는 디자인을 위해 설계변수를 최적화할 수 있으며, 그 방법으로는 총 3가지가 있습니다 .
첫번째, Workbench를 활용하는 방법 . 두번째, OptisLang을 활용하는 방법. 그리고 세번째로 Speos에 내장된 기능인 Optimization을 활용하는 방법이 있습니다.
본 자료에서는 상기 마지막 방법인 Optimization 기능 활용 방법에 대해서만 설명하겠습니다.
본 내용은 사실 폐사 주관 ‘Speos 활용 Light Guide 광학 설계 입문’ 교육에서 관련 예제를 통해 집중적으로 다루고 있습니다만, 교육 과정의 속도 및 분량이 다소 타이트하여 전부 안내 드리지 못했던 디테일한 설명을 본 자료를 통해 보완 드리고자 합니다.
다음의 순서로 안내드립니다 :
최적화 프로세스를 위해 Speos에 내장된 Optimization 기능을 소개합니다.
Optimization 생성 시 설정해야 하는 다양한 파라메터에 대해 설명합니다.
Optimization 생성 workflow 및 각 optimization 모드에 대해 설명합니다.
적용 대상 파라메터 유형에 따라 변수를 정의하는 방법에 대해 설명합니다.
정의된 변수의 영향을 측정/평가/분석하기 위한 target을 정의하는 방법에 대해 설명합니다.
Optimization의 3가지 세부 모드들에 따른 프로세스 작동 방식을 설명합니다.
HTML report에 포함된 모든 정보를 설명합니다.
프로그래밍을 응용한 유저 커스텀 모드이며, 상급자용으로, 본 자료에서는 설명을 생략합니다.
§1. Optimization 개요
최적화 프로세스를 위해 Speos에 내장된 Optimization 기능을 소개합니다.
Optimization 기능은 설정된 target에 따라 달성하고자 하는 설계변수를 찾을 수 있도록 하여 광학계의 성능을 극대화하는데 그 목적이 있습니다.
이를 위해 다양한 최적화 모드와 그에 적용할 변수 유형을 제공하여 분석에 유연성을 부여합니다.
§1.1. Optimization 모드
Speos의 Light Simulation 탭에 내장된 Optimization 기능은 3가지 최적화 모드를 제공합니다 :
§1.2. Variables 종류
Optimization 기능에서 적용 가능한 변수는 각 출처에 따라 3가지 유형으로 분류됩니다.
Light Simulation 탭의 기능들에 구성된 정량 파라메터들을 선택할 수 있는 최적화 변수입니다.
Design 탭의 Optical Part Design 기능들에 구성된 정량 파라메터들을 선택할 수 있는 최적화 변수입니다.
Groups 패널에서 생성할 수 있는 input parameter(Driving Dimension, Script Parameter)들을 선택할 수 있는 최적화 변수입니다.
§1.3. Target
Target을 설정하여 정의된 변수들의 영향을 최적화의 관점에서 측정/평가/분석합니다.
Variables가 input이라면, Target은 output에 해당합니다.
§1.4. 기본 workflow
1) 먼저 광학계를 검토하기 위해 Direct Simulation 또는 Inverse Simulation을 정의합니다 .
2) 상기 정의된 Simulation을 실행하여 결과를 생성합니다.
3) XMP 결과에서 target(최적화 목표)로 사용할 measure 항목을 설정합니다.
4) Light Simulation 탭에서 Optimization을 생성합니다 .
5) 최적화할 변수 (Variables)들을 하나 이상 추가합니다.
6) 변수 범위 (최소값 및 최대값)을 정의합니다.
7) XMP 결과의 measure에서 생성한 측정 항목들 중 하나 이상을 target으로 추가합니다.
8) Target(목표치)들이 2개 이상일 경우 그 우선순위에 대한 weight(가중치)를 정의합니다.
9) 정의 완료된 optimization을 실행합니다.
10) 설정된 최적화 파라메터에 따라 발견된 최적화 결과값을 측정/평가/분석합니다.
유의사항 : Optimization 과정 중 Design of Experiment(DOE, 실험계획법)모드에서 degrees로 표현된 각도 단위 값을 script parameter로 사용할 경우 잘못된 결과를 초래합니다.
Degrees 단위를 적용할 경우 optimization에서 radian 단위로 잘못 인식하기 때문입니다.
따라서, 각도 단위는 반드시 radian만 적용 가능하며 , degrees일 경우 radian으로 변환하셔야 합니다.
§2. Optimization Parameter에 대한 이해
Optimization 생성 시 설정해야 하는 다양한 파라메터에 대해 설명합니다 .
§2.1. Merit Function
Merit function 설정으로 최적화 결과를 어느 방향으로 수렴할지 정의할 수 있습니다.
Merit function의 공식은 다음과 같습니다 :
상기 공식 중 :
§2.2. Optimization 모드 종류
§2.2.1. Random Search
Random Search 모드는 확률적 원리에 기반하여 광역 범위에서 최적화 결과값을 찾는 기법입니다.
이 모드는 모든 유형의 optimization에 무난하게 적용할 수 있다는 점이 장점입니다.
§2.2.2. Design of Experiment (DOE, 실험계획법)
Design of Experiment 모드는 Excel 파일 포맷으로 변수값을 직접 입력하여 정의할 수 있게 합니다.
Random Search와 같이 변수값을 지정 범위 내 랜덤한 숫자로 자동 부여하지 않음을 주목 바랍니다.

Random Search 모드와는 달리, Design of Experiment는 사실 최적화 알고리즘이 아닙니다.
이는 Excel 파일에 정의한 변수값의 개수에 의존하기 때문에, Merit function이나 Stop Condition을 정의할 필요가 없기 때문입니다.
§2.2.3. Plugin
Plugin은 유저가 직접 프로그래밍으로 최적화 알고리즘을 제작하여 적용하는 모드입니다.
Plugin 모드는 최적화 알고리즘을 생성하는 방법을 알고 있는 고급 유저를 위한 전용 모드이므로, 본 자료에서는 설명을 생략합니다.
§2.3. Variables(변수) 종류
§2.3.1. Simulation Variables
Simulation Variable은 Light Simulation 탭의 기능들에 구성된 정량 파라메터들을 선택할 수 있는 최적화 변수입니다.
§2.3.2. Design Variables
Design Variable은 Design 탭의 Optical Part Design 기능들에 구성된 정량 파라메터들을 선택할 수 있는 최적화 변수입니다.
§2.3.3. Document Variables
Document Variable은 Groups 패널에서 생성할 수 있는 input parameter
즉, Driving Dimension, Script Parameter들을 선택할 수 있는 최적화 변수입니다.
Driving Dimensions 및 Script Parameters 생성 방법에 대한 자세한 내용은 폐사 주관 교육인 ‘Speos 중급’ 및 ‘Speos 심화’ 과정에서 예제를 통해 중점적으로 다루고 있습니다.
참고 : Simulation Variable 및 Design Variable와 달리, Document Variable은 반드시 Simulation에 영향을 미치는 것은 아니므로, Document Variable을 적용시에는 광학계나 Simulation과 직접 관련된 변수인지 검토 후 적용 바랍니다.
예시 : Simulation에 포함되지 않은 형상의 크기, 각도 또는 위치를 수정하는 Driving Dimension.
이 경우, 해당 Driving Dimension을 Document Variable로 설정해도 최적화에 영향을 미치지 않습니다.
§2.4. Targets
Target은 정의된 변수들의 영향을 최적화의 관점에서 측정/평가/분석합니다.
Variables가 input이라면, Target은 output에 해당합니다 .
이 target들은 Simulation 완료 후 XMP 결과에서 생성한 각 measure값들로 구성할 수 있습니다.
이러한 각 measure값들은 optimization 실행 전에 준비되어 있어야 합니다.
즉, 사전 Simulation 실행으로 생성된 measure값에 해당합니다.
§2.5. Weight
Weight(가중치)는 다른 target들에 비해 해당 target의 중요도 수준을 지정하는 척도입니다.
숫자가 높을수록 해당 target의 우선순위가 다른 target들 보다 더 높게 고려됩니다.
§2.6. Keep Intermediate Results
Keep intermediate results는 최적화 과정 중 반복 simulation의 각 결과를 유지하는 옵션입니다.
SPEOS output files 폴더 내에 해당 optimization 이름으로 하위 폴더가 생성되어, 각 반복마다 각각의 결과가 개별로 저장됩니다.
§2.7. Use Maximum Time
Use maximum time은 stop condition으로서 optimization 진행에 소요되는 최대 시간을 설정합니다.
단, 시간이 초과되었는데도 마지막 Simulation 실행이 아직 완료되지 않은 경우에는, 해당 Simulation까지만 완료하고 optimization 진행을 중지하게 됩니다.
§2.8. Use Maximum Number of Simulations
Use maximum number of simulations는 stop condition으로서 반복할 Simulation 횟수를 설정합니다.
§3. Optimization 생성
Optimization 생성 workflow 및 각 optimization 모드에 대해 설명합니다.
1) Light Simulation 탭에서 Optimization
아이콘을 클릭합니다.
2) General 섹션의 mode 항목 드롭다운 리스트에서 사용할 최적화 모드를 선택합니다 :

o Random Search : Merit function 기반으로 랜덤변수를 활용한 최적화 모드입니다.
o Design of Experiment : Excel 파일 포맷을 기반으로 유저가 직접 세팅한 변수값을 활용한 최적화 모드입니다.
o Plugin : 프로그래밍을 응용한 상급자용 유저 커스텀 방식으로 설명을 생략합니다.
3) 3D view에서
아이콘을 클릭하고 최적화할 Simulation을 선택합니다.
최적화 모드에 따라 Random Search, Design of Experiment 또는 plugin 별로 다음 절차를 따릅니다.
§3.1. Random Search 모드
Optimization 기능에서 Random Search 모드를 선택합니다.
1) Merit function 항목의 드롭다운 리스트에서 최적화가 수렴하는 방식을 정의합니다:
o Minimize를 선택하면 XMP 결과의 measure에서 선택된 target값을 설정 target값과 최대한 가깝게 만듭니다.
o Maximize를 선택하면 XMP 결과의 measure에서 선택된 target값을 설정 target값과 최대한 멀리 떨어지게 만듭니다.
2) Keep intermediate results 선택으로 각 반복 결과를 모두 저장할지 여부를 정의합니다.
True로 설정하면 SPEOS output files 폴더내에 각 반복 결과들이 저장됩니다 .
3) Stop Conditions 섹션에서 최적화를 종료하는 방법을 정의합니다 :
o 최적화가 특정 시간 동안 실행된 후 중단되도록 하려면, Use maximum time을 True로
설정하고 최대 시간을 초 단위로 정의합니다.
중요 : 시간이 초과되었는데도 마지막 Simulation 실행이 아직 완료되지 않은 경우, Optimization을 중지하기 전에 현재 Simulation까지 완료합니다 .
o 특정 Simulation 실행 횟수 이후에 최적화를 중지하려면,
Use maximum number of simulations를 True로 설정하고 최대 Simulation 횟수를 정의합니다.
참고 : 두 Stop Condition을 모두 True로 설정할 수 있습니다.
이 경우, 가장 먼저 도달하는 Stop Condition으로 최적화가 종료됩니다.
§3.2. Design of Experiment(DOE, 실험계획법) 모드
Optimization 기능에서 Design of Experiment 모드를 선택합니다.
1) Variables 패널에서 적용하려는 변수를 유형에 따라 Simulation Variables, Design Variables 및 Document Variables에 추가합니다.
2) 변수 설정을 완료한 후, Excel 파일 경로 드롭다운 리스트에서 Create Excel을 클릭합니다.
중요 : Variables 패널에서 먼저 변수를 추가해야 합니다.
그렇지 않으면 Excel 파일에서 변수 값에 대한 표가 제대로 생성되지 않습니다.
3) Excel 파일을 SPEOS input files 폴더에 저장합니다.
그러면 Excel 파일이 자동으로 열립니다.
4) Excel 파일에서 제일 왼쪽 세로 열의 1, 2, 3, 4, 5…로 표현되는 정수는 실행할 반복 횟수와 그 순서를 나타내며, 그 이후의 모든 열은 추가된 각 변수에 해당합니다 :

a) Iteration number 열에서 각 반복 simulation의 순번을 매깁니다.
b) 그 다음 각 변수 열에서 각 반복마다 적용할 변수의 값을 설정합니다.
참고 : Variables 패널의 변수에 대한 Min value와 Max value는 설정할 필요가 없습니다.
최적화 진행 시 Excel 파일에 정의된 값들 만을 사용하기 때문입니다.
5) Excel 파일을 저장하고 닫습니다.
모든 변수를 정의하였다면, 이제 Optimization을 실행합니다 .
§3.3. Plugin 모드
Plugin 모드는 프로그래밍을 응용하여, 최적화 프로세스를 유저가 직접 커스텀하는 방식으로, 상급자용으로서, 자세한 설명은 생략합니다.
§4. Variables 정의
적용 대상 파라메터 유형에 따라 변수를 정의하는 3가지 방법에 대해 설명합니다 .
§4.1. Simulation Variables 정의
Light Simulation 탭의 기능들에 구성된 정량 파라메터들을 선택할 수 있는 최적화 변수입니다.
필수조건 : 해당 Optimization feature에 대상 Simulation feature가 추가되어 있어야 합니다.
1) Optimization의 definition 패널에서 하단의 Simulation Variables 탭을 선택합니다.
2)
버튼을 클릭하여 Simulation Variables 리스트를 엽니다.
이 리스트는 대상 simulation feature의 변수들 중 Light Simulation 탭에서 생성된 기능에서 유래한 변수로서 Simulation Variables에 적용할 수 있는 정량적인 파라메터들을 보여줍니다.
3) Simulation Variables로 지정할 파라메터를 선택합니다.
팁 : 파라메터 리스트가 너무 많은 Simulation의 경우, 필터 도구를 사용하여 원하는 파라메터를 빠르게 찾을 수 있습니다.
4) Simulation Variables 리스트를 닫습니다 .
그 다음 변수들이 잘 정의되었는지 Simulation Variables 탭에서 확인합니다.
5) Simulation Variables 탭에서 각 변수에 대해 Min value와 Max value를 설정하여 변수가 가질 수 있는 값의 범위를 정의합니다.
단, Min value와 Max value 사이에 Current value가 위치하도록 설정되어야 합니다.
§4.2. Design Variables 정의
Design 탭의 기능들에 구성된 정량 파라메터들을 선택할 수 있는 최적화 변수입니다.
필수조건 : 해당 Optimization feature에 대상 Simulation feature가 추가되어 있어야 합니다.
1) Optimization의 definition 패널에서 하단의 Design Variables 탭을 선택합니다.
2)
버튼을 클릭하여 Design variables 리스트를 엽니다.
이 리스트는 대상 simulation feature의 변수들 중 Design 탭의 Optical Part Design 기능에서 유래한 변수로서 Design Variables에 적용할 수 있는 정량적인 파라메터들을 보여줍니다.
3) Design Variables로 지정할 파라메터를 선택합니다.
팁 : 파라메터 리스트가 너무 많은 Simulation의 경우, 필터 도구를 사용하여 원하는 파라메터를 빠르게 찾을 수 있습니다.
4) Design variables 리스트를 닫습니다.
그 다음 변수들이 잘 정의되었는지 Simulation Variables 탭에서 확인합니다.
5) Design Variables 탭에서 각 변수에 대해 Min value와 Max value를 설정하여 변수가 가질 수 있는 값의 범위를 정의합니다.
단, Min value와 Max value 사이에 Current value가 위치하도록 설정되어야 합니다 :
Min value < Current value < Max value
그 다음 다른 변수 유형을 Simulation Variables나 Document Variables로 추가하거나,
또는 Target을 추가합니다.
§4.3. Document Variables 정의
Groups 패널에서 생성할 수 있는 input parameter(Driving Dimension, Script Parameter)들을 선택할 수 있는 최적화 변수입니다.
참고 : 해당 Optimization feature에 대상 Simulation feature를 추가할 것을 권장합니다.
Simulation feature가 아직 선택되지 않았더라도 Document Variables를 정의할 수 있기 때문입니다.
1) Optimization의 definition 패널에서 하단의 Document Variables 탭을 선택합니다.
2)
버튼을 클릭하여 Document Variables 리스트를 엽니다.
이 리스트는 Driving Dimension 및 Script Parameters에서 유래한 변수로서 Document Variables에 적용할 수 있는 정량적인 파라메터들을 보여줍니다 .
참고 : Simulation Variables 및 Design Variables와 달리, Document Variables 리스트에 나타나는 변수들은 반드시 Simulation에 영향을 미치는 것은 아닙니다.
따라서, Simulation에 직접적인 광학계와 관련된 Document Variable을 반드시 추가합니다.
3) Document Variables로 지정할 파라메터를 선택합니다.
팁 : 파라메터 리스트가 너무 많은 Simulation의 경우, 필터 도구를 사용하여 원하는 파라메터를 빠르게 찾을 수 있습니다.
4) Document Variables 리스트를 닫습니다 .
그 다음 변수들이 잘 정의되었는지 Document Variables 탭에서 확인합니다.
5) Document Variables 탭에서 각 변수에 대해 Min value와 Max value를 설정하여 변수가 가질 수 있는 값의 범위를 정의합니다.
단, Min value와 Max value 사이에 Current value가 위치하도록 설정되어야 합니다 :
Min value < Current value < Max value
§5. Targets 정의
정의된 변수의 영향을 측정/평가/분석하기 위한 target을 정의하는 방법에 대해 설명합니다.
1) Optimization에서 target으로 사용될 measure값을 설정합니다 :
a) Optimization에 적용할 Simulation을 우선 실행합니다.
b) XMP 결과 창에서 measure값들을 설정합니다.
c) File à Export template을 선택합니다.
d) 결과를 생성한 sensor에서 상기 export한 template을 XML template으로 적용합니다.
해당 template의 measure값들을 optimization에서 target으로 정의하기 위함입니다.
2) Optimization의 definition 패널에서 하단의 Targets 탭을 선택합니다.
3)
버튼을 클릭하여 Targets 리스트를 엽니다.
이 리스트는 대상 simulation의 XMP 결과 중 measure에서 유래한 변수로서 target으로 적용할 수 있는 정량적인 파라메터들을 보여줍니다.
4) Target으로 지정할 measure값들을 선택합니다.
팁 : 파라메터 리스트가 너무 많은 경우, 필터 도구를 사용하여 더욱 빠르게 찾을 수 있습니다.
5) Targets 리스트를 닫습니다.
그 다음 target들이 잘 정의되었는지 Targets 탭에서 확인합니다.
6) Targets 탭에서 각 target들에 대해 근접시킬 target값(Merit function 최소화) 또는 반대로 멀어질 target값(Merit function 최대화)와 해당 weight(가중치)를 설정합니다.
Weight(가중치)는 모든 target들 중 해당 target의 중요도 수준을 설정합니다.
숫자가 높을수록 해당 target의 비중을 더 크게 다룹니다.
§6. Optimization 실행
Optimization의 3가지 모드들 (Random Search, Design of Experiment, Plugin)에 따른 각각의 작동 방식을 설명합니다.
필수조건 : Random Search 및 Plugin의 경우 target과 변수를 각각 하나 이상 설정해야 하나,
Design of Experiment의 경우 변수만 하나 이상 설정하면 됩니다.
1) 기존에 optimization 실행이 한번 이상 있었고, 그 결과를 보존해야 한다면 , 별도로 저장합니다.
그렇지 않으면 다음에 실행하는 optimization이 이전 기록을 덮어쓸 것입니다.
2) Simulation 패널에서 Optimization feature를 마우스 오른쪽 버튼 클릭 후,
또는 GPU Compute
를 선택하여 optimization을 실행합니다 .

Compute
3) Optimization 과정이 종료된 후, 초기 변수 값 대신, 도출된 최적 해로 교체할 것인지 정합니다.

o Yes를 선택하면 최적 해로 교체합니다.
o No를 선택하면 초기 변수 값을 유지합니다.
최적화 과정 종료 시, Simulation 패널의 해당 Optimization 노드 아래에 HTML report가 생성됩니다 .
Random Search 모드의 경우, Keep intermediate results를 True로 설정하면 SPEOS output files 폴더 내에 해당 Optimization 이름의 폴더가 생성되며, 이 폴더에는 모든 반복 결과가 포함됩니다.
§7. HTML Report 검토 (Random Search 모드 한정)
HTML report에 포함된 모든 정보를 설명합니다.
HTML report는 프로젝트 폴더내에 SPEOS output files 폴더에서도 찾을 수 있습니다 .
참고 : HTML report는 Random Search 모드만 해당됩니다.
§7.1. Time Analysis 항목
Time Analysis 항목에서는 최적화 과정의 초기화/종료 일시와 소요 시간을 요약합니다.
§7.2. Variables 항목
Variables 항목은 Optimization에 적용된 모든 변수와 그 최소값 및 최대값을 요약합니다.
참고 : Precision 열은 계산되지 않으므로 고려하지 않으셔도 됩니다.
§7.3. Targets 항목
Targets 항목은 선택된 모든 target 항목, 그 target 값 및 weight(가중치)를 요약합니다 .
§7.4. Parameters 항목
Parameters 항목에서는 선택된 Optimization 모드에 따라 정의된 파라메터들을 요약합니다 .
Random search 모드의 경우, Merit function을 평가합니다.
§7.5. Evaluations 항목
Evaluations 항목에서는 각 반복에 대해 적용된 모든 변수 값, 각 target들로 도출된 값 및 Merit function 값을 요약합니다.
Best solution은 녹색으로 강조 표시됩니다.
Random Search 모드의 경우, Keep intermediate results가 True로 설정되어 있으면 HTML report에서 XMP 결과를 직접 다운로드할 수 있는 링크가 제공됩니다.
§7.6. Results 항목
Results 항목에서는 도출된 best solution만 요약합니다 (Evaluations 섹션에서는 녹색으로 강조 표시됨).
§8. Optimization Plugin 모드 응용
그 외 Plugin 응용 방법이 남아 있으나, 프로그래밍을 활용한 고급 과정에 해당된다고 판단하여,
앞선 언급과 같이 생략하였습니다.
이상 Speos Optimization 기능 활용 방법 안내를 마치겠습니다.
Optimization에 대한 더욱 자세한 활용법은 폐사 주관 “Speos 활용 Light Guide 광학 설계 입문” 교육에서 예제 중심으로 다루고 있습니다.
관심 있으신 분은 한번 수강하셔도 좋을 것 같습니다.
추가로 궁금 하신 부분 있으시면 아래의 연락처로 연락 바랍니다.
감사합니다
㈜래디언트솔루션
㈜래디언트솔루션은 광학 이론, 설계, 해석, 측정 평가, 생산라인 검사 자문까지 End-to-End Service가 가능한
광학 전문 ANSYS 채널 파트너로서 광학 설계, 측정, 검사 시스템 개발, 암실 구축까지
당사의 기술력을 기반으로 한 고객 맞춤형 광학 Full Service 제공하고 있습니다.
Ansys Speos에 대한 자세한 사양 및 기술 지원 정보는 이메일 radiant@radiantsolution.co.kr,
또는 02-2065-0726으로 연락 주시기 바랍니다.
감사합니다.
Ansys Optics Products Sales
담당자 (Direct) : 02-6096-5706
대표전화 : 02-2065-0726
E-mail: optical@radiantsolution.co.kr