吾爱光设

 找回密码
 注册
会员须知
会员须知
实用帮助
实用帮助
查看: 146|回复: 0

[技术文章] Zemax—Matlab API 交互教程(2) _插入评价函数操作数

[复制链接]
  • TA的每日心情
    奋斗
    2025-9-13 14:33
  • 签到天数: 288 天

    [LV.8]以坛为家I

    22

    主题

    43

    回帖

    4

    积分

    小白

    积分
    4
    发表于 2025-9-11 16:31 | 显示全部楼层 |阅读模式
    本帖最后由 伊人在水一方 于 2025-9-12 10:43 编辑



    Zemax—Matlab API 交互教程(2) _插入评价函数操作数



    相关教程:

    Zemax—Matlab API 交互教程(1) _初始化:http://www.optzmx.com/thread-42088-1-1.html



    1.ZEMAX API MATLAB 评价函数基础设置

    TheMFE = TheSystem.MFE; % 获取优化函数编辑器(MFE)接口
    TheMFE.ShowEditor();       % 显示评价函数编辑器
    TheMFE.AddOperand();% 增加一行操作数
    TheSystem.MFE.CalculateMeritFunction();% 刷新计算
    Operand.ChangeType(ZOSAPI.Editors.MFE.MeritOperandType.XXXX);% 插入操作数,XXXX为插入的操作数

    比如:

    Operand_1.ChangeType(ZOSAPI.Editors.MFE.MeritOperandType.REAY);% 插入操作数 REAX,控制实际光线Y向坐标
    Operand_1.GetCellAt(2).IntegerValue = 2; % 设置面,GetCellAt(2)是获取该行第3列的表格数据,标题列是第1,赋值为整数IntegerValue = 1
    Operand_1.GetCellAt(3).IntegerValue= 1; % 设置波长
    Operand_1.GetCellAt(4).DoubleValue = 0.4; % 设置Hx,注意数据类型为双精度浮点数DoubleValue
    Operand_1.GetCellAt(5).DoubleValue= 0.5; % 设置Hy
    Operand_1.GetCellAt(6).DoubleValue= 0.6; % 设置Px
    Operand_1.GetCellAt(7).DoubleValue= 0.7; % 设置Py
    Operand_1.Target= 0.2; % 目标值设为0
    Operand_1.Weight= 1.1; % 权重设为10


    2.也可以一键设置默认评价函数

    %默认评价函数
    TheMFE = TheSystem.MFE; % 评价函数编辑器
    TheMFE.ShowEditor();
    OptWizard =TheMFE.SEQOptimizationWizard;%默认评价函数
    OptWizard.StartAt =OptimizationWizard_Start;
    % 优化目标:最小化RMS光斑半径(Data=1),进行点列图优化
    OptWizard.Data = 1;
    OptWizard.OverallWeight = 2;
    OptWizard.Ring = 2; % 高斯积分(3环)
    % 设置玻璃和空气边界约束
    OptWizard.IsGlassUsed = true;
    OptWizard.GlassMin = 2.0; % 最小中心厚度(mm
    OptWizard.GlassMax = 20.0;
    OptWizard.GlassEdge = 0.5; % 最小边缘厚度(mm
    OptWizard.IsAirUsed = true;
    OptWizard.AirMin = 0.5; % 最小空气厚度(mm
    OptWizard.AirMax = 60.0;
    OptWizard.AirEdge = 0.5;
    OptWizard.Apply(); % 应用设置



    3.自动进行局部优化的代码:

    % 局部优化设置
    LocalOpt =TheSystem.Tools.OpenLocalOptimization();
    LocalOpt.Algorithm =ZOSAPI.Tools.Optimization.OptimizationAlgorithm.DampedLeastSquares;% 阻尼最小二乘法
    LocalOpt.Cycles =ZOSAPI.Tools.Optimization.OptimizationCycles.Automatic; % 自动循环次数
    LocalOpt.NumberOfCores = 8; % 使用8CPU核心
    % 运行优化直到完成
    LocalOpt.RunAndWaitForCompletion();
    LocalOpt.Close();
    disp('优化完成');


    4.进行锤形优化的代码:
    % 锤形优化全局优化设置
    HammerOpt = TheSystem.Tools.OpenHammerOptimization();
    % 运行优化10秒(超时设置)
    HammerOpt.RunAndWaitWithTimeout(10);   
    % 终止并等待优化完全停止
    HammerOpt.Cancel();
    HammerOpt.WaitForCompletion();
    HammerOpt.Close();



    评分

    参与人数 1金币 +3 收起 理由
    aku + 3 赞一个!

    查看全部评分

    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    联系我们|本论坛只支持PC端注册|手机版|小黑屋|吾爱光设 ( 粤ICP备15067533号 )

    GMT+8, 2025-9-13 21:22 , Processed in 0.125000 second(s), 24 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表