吾爱光设

会员须知
会员须知
实用帮助
实用帮助
查看: 9347|回复: 12

利用粒子群算法,计算同轴三反系统的初始结构

[复制链接]
  • TA的每日心情
    无聊
    2024-11-4 17:50
  • 签到天数: 47 天

    [LV.5]常住居民I

    1

    主题

    3

    回帖

    1

    积分

    小白

    积分
    1
    发表于 2022-10-14 15:32 | 显示全部楼层 |阅读模式
    本帖最后由 crazy_nima 于 2022-10-14 16:42 编辑

    最近在学习离轴三反系统的设计,首先了解了一些同轴反射镜的设计。根据专利和查阅资料,编写了代码,希望对大家有用。设计思路是基于赛德像差理论,通过三个反射镜的圆锥系数e1、e2、e3,遮拦比a1、a2,以及次镜三镜的放大率b1、b2总共7个参数来表示五个的像差。
    而粒子群算法可以十分方便地计算多维函数的局部最优解问题。将总像差记为评价函数,7个参数作为变量,通过matlab优化结果,计算最优解。


    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?注册

    ×

    评分

    参与人数 5金币 +8 贡献值 +1 收起 理由
    + 2
    赞一个!
    + 2
    很给力!
    + 3
    很专业!

    查看全部评分

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

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-11-4 20:54
  • 签到天数: 621 天

    [LV.9]以坛为家II

    45

    主题

    321

    回帖

    18

    积分

    新手

    积分
    18
    发表于 2022-10-14 18:51 | 显示全部楼层
    同轴三反不是书上有公式吗,你这个有啥不同啊
    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2024-11-4 17:50
  • 签到天数: 47 天

    [LV.5]常住居民I

    1

    主题

    3

    回帖

    1

    积分

    小白

    积分
    1
     楼主| 发表于 2022-10-17 09:20 | 显示全部楼层
    zsj123456 发表于 2022-10-14 18:51
    同轴三反不是书上有公式吗,你这个有啥不同啊

    是的,确实是利用书上的公式,只不过是利用了一种方法来解出初始结构,并用matlab编出来。我现在也正在学习这些,所以还没有更好、更完整的离轴设计方法分享给大家。

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

    使用道具 举报

  • TA的每日心情
    开心
    2023-8-7 00:25
  • 签到天数: 140 天

    [LV.7]常住居民III

    7

    主题

    1093

    回帖

    229

    积分

    版主

    积分
    229
    发表于 2022-10-18 23:52 | 显示全部楼层
    本帖最后由 Ds12345679 于 2022-10-19 00:00 编辑

    我知识浅薄,看不懂你写的粒子群程序,我把particle_3mirror.m粘贴到Matlab命令窗口运行,显示未定义函数或变量 'sumS'。原以为可以得到你给出的7个优化结果,可是没运行。请您指导我是哪里出了问题。另外半径和间隔那5个参数是怎么得到的?我以为运行sumS.m,就能得到,可是matlab显示 function [ s ] = sumS( x )

    错误: 此上下文中不允许函数定义。
    以上问题希望得到你的指导。
    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2024-11-4 17:50
  • 签到天数: 47 天

    [LV.5]常住居民I

    1

    主题

    3

    回帖

    1

    积分

    小白

    积分
    1
     楼主| 发表于 2022-10-19 10:05 | 显示全部楼层
    本帖最后由 crazy_nima 于 2022-10-19 10:06 编辑
    Ds12345679 发表于 2022-10-18 23:52
    我知识浅薄,看不懂你写的粒子群程序,我把particle_3mirror.m粘贴到Matlab命令窗口运行,显示未定义函数或 ...

    您好,sumS.m是作为主程序particle_3mirror.m的自定义函数,所以在使用时应该将两个程序放在同一个文件夹中,然后运行主程序,如图一所示。此外,半径和间隔的参数可以通过a1、a2、b1、b2求得,如图二所示,您可以直接将附件中rd代码粘到主程序中使用。有关详细的推导查询多反射望远镜系统的设计 (wanfangdata.com.cn)论文中44页,因为上传文件大小限制无法上传。
    有关粒子群算法,在粒子群算法及MATLAB实例仿真 - 知乎 (zhihu.com)中讲得方法非常完整,我也是参考他的程序学的。
    最后在该算法只能找到局部最优解,可能需要运行多次才能找到合适的结构,同时可以改变七个参量范围来限定三反结构,比如凹凸凹结构。







    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?注册

    ×

    评分

    参与人数 1金币 +8 收起 理由
    + 8
    原创

    查看全部评分

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

    使用道具 举报

  • TA的每日心情
    开心
    2023-8-7 00:25
  • 签到天数: 140 天

    [LV.7]常住居民III

    7

    主题

    1093

    回帖

    229

    积分

    版主

    积分
    229
    发表于 2022-10-21 18:46 | 显示全部楼层
    十分感谢你,真的得运行通了。我把你的这篇文章当做范文,按照你说的去读论文和实例,争取理解你的范文。祝你工作顺利,今后把学习心得与大家分享,你若有问题就来社区,我知道的会马上回答你。再一次感谢你。
    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2023-8-7 00:25
  • 签到天数: 140 天

    [LV.7]常住居民III

    7

    主题

    1093

    回帖

    229

    积分

    版主

    积分
    229
    发表于 2022-10-21 21:50 | 显示全部楼层
    我有2问题向你请教,1.我把粒子数和迭代都增加10倍,最小相差只到0.3,你是怎么做到0.0013的。
                                   2.请问一下rd.m文件,粘贴到particle_3mirror.m文件的那个语句后面。
    离开你无人可以作答,谢谢。
    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2024-11-4 17:50
  • 签到天数: 47 天

    [LV.5]常住居民I

    1

    主题

    3

    回帖

    1

    积分

    小白

    积分
    1
     楼主| 发表于 2022-10-22 10:38 | 显示全部楼层
    Ds12345679 发表于 2022-10-21 21:50
    我有2问题向你请教,1.我把粒子数和迭代都增加10倍,最小相差只到0.3,你是怎么做到0.0013的。
               ...

    您好,第一个问题不太好意思,我之前做了一些测试,忘记主程序里的c1=0改回c1=2了,您改好以后应该会得到比较好的结果了。至于第二个我不太清楚您的问题是什么,rd是通过a1、a2、b1、b2求出反射镜的半径和间距。关于这两个问题我把主程序更新了,您应该可以重新下载。


    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?注册

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

    使用道具 举报

  • TA的每日心情
    开心
    2023-8-7 00:25
  • 签到天数: 140 天

    [LV.7]常住居民III

    7

    主题

    1093

    回帖

    229

    积分

    版主

    积分
    229
    发表于 2022-10-22 20:09 | 显示全部楼层
    谢谢你耐心传授,按照第2个程序我通过了计算。很多问题需要自己慢慢学习,有人指导一下很是幸运。谢谢你。
    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-11-1 20:03
  • 签到天数: 232 天

    [LV.7]常住居民III

    11

    主题

    23

    回帖

    0

    积分

    小白

    积分
    0
    发表于 2023-3-21 09:58 | 显示全部楼层
    您好,按照我的理解,我截取了一段程序,这里面的100是不是换成N值,即5000,更加准确些
    for j=1:100
            if y(j)<pbest(j)
                pbest(j)=y(j);
                pp(j,=x(j,;
            end
            if y(j)<gbest
                gbest=y(j);
                gg=x(j,;
            end
        end
    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-11-6 16:36 , Processed in 0.187500 second(s), 23 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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