Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

对geatpy项目的阶段性总结及建议 #378

Open
daytime001 opened this issue Aug 4, 2024 · 2 comments
Open

对geatpy项目的阶段性总结及建议 #378

daytime001 opened this issue Aug 4, 2024 · 2 comments

Comments

@daytime001
Copy link
Contributor

前言

这几天接触到geatpy,首先我想对开发者们表示深深的感谢。这真的是一个非常优秀的项目,尤其是在国内环境下,注释和文档非常详细,并且全部由中文撰写。对于决策变量的设置(三种编码、离散连续、等于不等于)以及目标函数的定义(aimFunc、evalVars)都非常方便,还提供了装饰器便于对二维数组操作不太熟练的新手更好理解。算法模板类的设置也非常便于更换不同算法,打印日志的设计更是充满了人性化,多种可视化绘图非常强大,允许用户传入自定义outFunc函数也很灵活,真的是一个不可多得的好项目。

bug

下面说说本人在使用过程中发现,并且本项目源码已经解决了的bug(pip源2.7.0仍存在,对新手不太友好)

  • 装饰器只允许对evalVars修饰,对aimFunc修饰存在bug,目前已移除对aimFunc的修饰功能,有点可惜
  • 多目标算法类中outFunc函数对于传入函数的检查使用type,该方法返回的是类型对象而不是字符串,应该像单目标算法类一样使用callable进行检查,目前已github源码修复

PR

下面是本人在使用过程中发现,但是本项目源码还没有解决的小问题,详情请看#377,主要包括

  • matplotlib高版本已移除对Axes3D的支持,因此画3维pareto前沿图时一片空白,需要转用add_subplot方法
  • 本人在使用moea_NSGA2_templet进行较复杂多目标问题求解时最终求得的pareto解集中总是会出现重复解,且各个解顺序杂乱,不利于作出决策,因此增加NDSet = NDSet[np.unique(NDSet.ObjV,return_index=True,axis=0)[1]]对重复解进行排除,并且各个解按照大小顺序排列

修改后效果良好,已向项目提出PR,望采纳

待改进

下面是本人在使用过程中发现,但是本项目源码还没有解决的小瑕疵,主要包括

  • 绘制迭代变化图像时是根据记录日志进行绘图,但是这时候出现一个问题,如果日志是按照每隔20代进行记录,那么最终绘制图像x轴坐标代数还是1,2,3,4等依次递增,并没有间隔
    迭代变化图像
    如上所示,本人设置迭代次数为100,每隔10次记录日志,最终绘制出的图像迭代次数只有9次,而且x轴坐标没有相应进行对应
    这个问题目前我的idea是:
    1. 设置记录日志为每隔1代进行记录,勉强可以接受,但是不舒服
    2. 修改绘图时的x轴坐标,与日志中记录相隔代数保持一致
    3. 观察到单目标算法类中最终结果图的绘制采用的是trace属性进行绘制,保留了每一代数据,考虑多目标算法类也增加trace属性
  • 尽管解决了上一个问题,但是我发现本项目数据并不是从第1代就开始记录(包括单目标trace属性、日志等),而是迭代最初的前几十代都没有被记录下来,如上图所示设置迭代次数为100,每隔10次记录日志,最终绘制出的图像迭代次数应该是10次,但是绘制出来只有9次,包括控制台打印出的日志也是从第20代开始,没有第10代的数据。why?这样的话绘出来的迭代变化图就更加迷惑了,是因为前几十代无可行解吗?不应该啊,就是无可行解也可以保留下来进行绘图啊

由于个人时间,上述2个问题没有进一步去研究和解决,希望开发者能够重视

总结

观察到本项目已经很久没有进行大的更新,平时的维护也寥寥无几,甚至通过减少功能来修复bug,对于issue也不太重视。当然,我完全能够理解,但还是希望开发者能够带着这个项目继续前进。对于本项目的网站,或许可以使用hexo、docusaurus等框架快速搭建,纯静态无需服务器,便宜的如.asia域名6元首年,目前仅有简陋的github源码及readme文件对于新手还是不够友好,不利于推广。衷心的希望geatpy项目能够越来越好!

@geatpy-dev
Copy link
Owner

非常感谢您的宝贵意见!计划于这几个月再出一版,把积累的问题尽数修复。

@daytime001
Copy link
Contributor Author

这个项目不接受PR的吗?我还想着有时间再帮忙搞个文档的官网

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants