新手一步步学习黑盒优化算法,借助达摩院MindOpt的RABBO榜单【系列1/3】

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 这次达摩院MindOpt优化求解器团队出的「开发者福利」黑盒优化RABBO V1.0看起来挺有意思的,什么室黑盒优化呢?怎么借助这个榜单学习这个技术呢?

1 黑盒优化的概念

什么是黑盒优化?「黑盒优化问题」泛指目标函数难以从数学上解析表达,缺少可直接利用的梯度信息,仅可利用目标函数输入和对应输出函数值进行最优解搜索的优化问题。

太抽象,不懂,根据达摩院MindOpt的教程,它“通过获取不同控制参数(输入变量)对应的系统表现,来推断和搜寻优化解"、“可用于强化学习策略搜索、工业冶炼方案设计、计算资源额度预算优化等”。

云栖大会上王孟昌博士有讲解: https://yunqi.aliyun.com/2021/agenda/session170 在这个直播回放大约20分钟的时候,截图如下:
image.png
其中的黑盒优化的架构就像下面的图这样,我们假设我们要求解的问题不好描述,就把这个问题做成一个仿真系统,这个系统可以根据输入的变量值(“候选解”)来给出对应的评价(“观测值”),然后黑盒优化算法,就是接上这个仿真系统,通过不断地去提供候选解和得到观测值,来搜索可能的最优表现的候选解。
image.png

2 黑盒优化benchmark:RABBO

这次达摩院MindOpt优化求解器团队出的「开发者福利」RABBO V1.0看起来挺有意思的,题目集包含4种问题:
image.png

从这儿可以看到他们的网页介绍:https://tianchi.aliyun.com/specials/promotion/BlackBox
image.png

2.1 瞄一眼长长的文档

点击“查看文档”,会进入个长长的文档,供了解细节。提交评测实际是进的同一个页面,上面有一排tab不要错过,有“排行榜”和“提交结果”。太长,瞄一眼文档结构就行。
image.png

2.2 看git项目

image.png
点击首页的“下载数据”按钮,和数据列表的“guide.html.zip”文件,都会引导到阿里云家的git(code.aliyun.com),用阿里云的账号登录,第一次用需要根据指引把自己的账号设置好,账号折腾好后,在https://code.aliyun.com/mindopt001/RABBO 可以看到文件截图如下图。
image.png
点击“3.27MB”的图标,可以看到文件如下图:
image.png

2.3 下载它

然后根据自己的喜好下载它。考虑到官方好像在不停更新的样子,我们fork这个项目,在页面上点击“派生”,等待系统完成
image.png
image.png
这个页面会转很久很久,好像有bug的样纸。 点击左侧导航栏的“项目”就可以看到项目已经有了,地址是
https://code.aliyun.com/你的Username/RABBO,比如我的名字是wuyoy520。可以进项目设置将“可见等级”改成Private。
image.png
然后clone克隆到本地自己喜欢的文件夹内。

git clone git@code.aliyun.com:你的Username/RABBO.git

clone完了后,根据git指导来安装它,"Note: RABBO supports Python3.6 or newer." 由于我的python3是分开的指令所以我是这样做的:

cd RABBO
pip3 install -r requirements.txt
python3 setup.py install
pip3 install -e .

运行看结果的主程序示例程序在这儿:

python3 examples/experiment_example.py

image.png
最后的运行结果好像是不OK的,没解出来:
image.png

2.3.1 偷懒的换git账号方法

这里分享一个我切换git账号的偷懒方法:建立一个空的empty项目,然后里面会有Git全局设置参数,复制这两句到终端命令行运行。
image.png

3 参考文档,学习RABBO

3.1 RABBO V1.0 问题集

4个问题分别对应文件夹中的不同文件。在目录 blackbox_starter_kit -> problems文件夹下面。
image.png
只有4个文件夹,是因为里面的2 金属冶炼配比优化并没有开放直接下载,参与公开测评,也就是评分的分数里会有它。

3.2 步骤1,实现一个自己的算法,嗯,姑且先copy一个

前面说运行看结果的主程序示例程序examples/experiment_example.py,内容是:
image.png

直接不改的运行结果好像是不OK的,没解出来:
image.png

我们要改的文件在blackbox_starter_kit/algorithms/submission/submission_algorithm.py
image.png

里面有一些指导,我们先copy一份示例算法过来,示例算法在blackbox_starter_kit/algoriths/文件夹下的cmaes/cma_algorithm.pyrandom_search/random_search_algorithm.py
将cma的算法代码“有技巧”地拷贝至submission/submission_algorithm.py,不要动函数名,其他的copy进去。然后将examples/experiment_example.py中的算法改成选手算法:
image.png
运行,可以看到有类似的输出了,后续就在这个submission_algorithm.py改造自己的算法就行。

3.3 步骤2,额,上1步运行过了,改算法后面再研究,先跳过

3.4 步骤3,打包算法提交测评

文档写的很轻松的几句话,但是前面需要安装docker,点击进入标的链接,根据这个页面的内容来安装、开通容器镜像服务,打镜像,和推仓库。
image.png
首先,先安装docker;
然后,从https://www.aliyun.com/product/acr容器镜像服务ACR的产品页,开通进入“管理控制台”,如下图,创建个人版(免费)实例。根据文档指引,在页面上操作,创建一个私有的命名空间,然后再创建一个本地镜像仓库。
image.png

然后,回到rabbo的目录,运行sh build.sh来打包仓库:

cd RABBO
sh build.sh

由于我电脑多个Python版本,因此要进build.sh把python改成python3
image.png
然后我家的龟速网络就要漫长地等待了。。。
image.png
镜像打结束后,注意,最后一行显示:
naming to docker.io/library/mind-blackbox-bench:20211218,
复制mind-blackbox-bench:20211218,后面要这个ImageId。

然后,推镜像到仓库。从推镜像的指令在仓库里面复制更方便:
image.png
image.png
第一次推不晓得啥米原因它卡住了,然后取消了后重新推又很快就上去了。这时候刷新镜像版本就能看到多了个镜像啦。
image.png

最后,提交评测。提交结果的tab页。镜像的地址从奖项的基本信息里面拷贝公网的地址,并在后面加上刚刚提交的版本,如:0.1
image.png

提交了后,等待一会后,出现结果。
image.png
注意,如果前面一个没结束的时候重复提交,上一个任务会被停掉,之前提交的任务会获得一个“task terminated”的已经失败提示。
点击模型的超链接,会弹出日志先是各个分数。排行榜不是实时更新的,需要等待。
image.png
至此,整个流程走通了。

4 其他文

后面我会发如何去读官方参考算法代码,和如何研发自己的算法。
先立个flag:
1.《学习一下官方提供的两个参考算法和开源算法》
2.《改编一个自己的黑盒优化算法》

image.png

相关实践学习
通过容器镜像仓库与容器服务快速部署spring-hello应用
本教程主要讲述如何将本地Java代码程序上传并在云端以容器化的构建、传输和运行。
Kubernetes极速入门
Kubernetes(K8S)是Google在2014年发布的一个开源项目,用于自动化容器化应用程序的部署、扩展和管理。Kubernetes通常结合docker容器工作,并且整合多个运行着docker容器的主机集群。 本课程从Kubernetes的简介、功能、架构,集群的概念、工具及部署等各个方面进行了详细的讲解及展示,通过对本课程的学习,可以对Kubernetes有一个较为全面的认识,并初步掌握Kubernetes相关的安装部署及使用技巧。本课程由黑马程序员提供。   相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
9天前
|
算法
基于GA遗传算法的PID控制器参数优化matlab建模与仿真
本项目基于遗传算法(GA)优化PID控制器参数,通过空间状态方程构建控制对象,自定义GA的选择、交叉、变异过程,以提高PID控制性能。与使用通用GA工具箱相比,此方法更灵活、针对性强。MATLAB2022A环境下测试,展示了GA优化前后PID控制效果的显著差异。核心代码实现了遗传算法的迭代优化过程,最终通过适应度函数评估并选择了最优PID参数,显著提升了系统响应速度和稳定性。
|
13天前
|
数据采集 存储 算法
Python 中的数据结构和算法优化策略
Python中的数据结构和算法如何进行优化?
|
6天前
|
算法
基于WOA鲸鱼优化的购售电收益与风险评估算法matlab仿真
本研究提出了一种基于鲸鱼优化算法(WOA)的购售电收益与风险评估算法。通过将售电公司购售电收益风险计算公式作为WOA的目标函数,经过迭代优化计算出最优购电策略。实验结果表明,在迭代次数超过10次后,风险价值收益优化值达到1715.1万元的最大值。WOA还确定了中长期市场、现货市场及可再生能源等不同市场的最优购电量,验证了算法的有效性。核心程序使用MATLAB2022a实现,通过多次迭代优化,实现了售电公司收益最大化和风险最小化的目标。
|
10天前
|
算法
通过matlab分别对比PSO,反向学习PSO,多策略改进反向学习PSO三种优化算法
本项目使用MATLAB2022A版本,对比分析了PSO、反向学习PSO及多策略改进反向学习PSO三种优化算法的性能,主要通过优化收敛曲线进行直观展示。核心代码实现了标准PSO算法流程,加入反向学习机制及多种改进策略,以提升算法跳出局部最优的能力,增强全局搜索效率。
|
6天前
|
算法
通过matlab对比遗传算法优化前后染色体的变化情况
该程序使用MATLAB2022A实现遗传算法优化染色体的过程,通过迭代选择、交叉和变异操作,提高染色体适应度,优化解的质量,同时保持种群多样性,避免局部最优。代码展示了算法的核心流程,包括适应度计算、选择、交叉、变异等步骤,并通过图表直观展示了优化前后染色体的变化情况。
|
10天前
|
算法
基于大爆炸优化算法的PID控制器参数寻优matlab仿真
本研究基于大爆炸优化算法对PID控制器参数进行寻优,并通过Matlab仿真对比优化前后PID控制效果。使用MATLAB2022a实现核心程序,展示了算法迭代过程及最优PID参数的求解。大爆炸优化算法通过模拟宇宙大爆炸和大收缩过程,在搜索空间中迭代寻找全局最优解,特别适用于PID参数优化,提升控制系统性能。
|
10天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于贝叶斯优化CNN-GRU网络的数据分类识别算法matlab仿真
本项目展示了使用MATLAB2022a实现的贝叶斯优化、CNN和GRU算法优化效果。优化前后对比显著,完整代码附带中文注释及操作视频。贝叶斯优化适用于黑盒函数,CNN用于时间序列特征提取,GRU改进了RNN的长序列处理能力。
|
13天前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
37 1
|
17天前
|
存储 关系型数据库 分布式数据库
PolarDB的PolarStore存储引擎以其高效的索引结构、优化的数据压缩算法、出色的事务处理能力著称
PolarDB的PolarStore存储引擎以其高效的索引结构、优化的数据压缩算法、出色的事务处理能力著称。本文深入解析PolarStore的内部机制及优化策略,包括合理调整索引、优化数据分布、控制事务规模等,旨在最大化其性能优势,提升数据存储与访问效率。
23 5
|
1月前
|
存储 算法 安全
2024重生之回溯数据结构与算法系列学习之串(12)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丟脸好嘛?】
数据结构与算法系列学习之串的定义和基本操作、串的储存结构、基本操作的实现、朴素模式匹配算法、KMP算法等代码举例及图解说明;【含常见的报错问题及其对应的解决方法】你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
2024重生之回溯数据结构与算法系列学习之串(12)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丟脸好嘛?】