混合整数分布式蚁群优化算法-MIDACO

MIDACO是数值优化问题的求解器。MIDACO可以应用于连续(NLP非线性规划)、离散/整数(IP整数规划)和混合整数规划(MINLP)问题。MIDACO可用于单目标和多目标优化问题。问题可能限于等式和/或不等式约束。MIDACO适用于具有上万个变量和数百个目标的问题。MIDACO实现了一种无导数的进化混合算法,该算法将问题视为黑盒,黑盒可能包含关键函数特性,如非凸性、不连续性或随机噪声。对于CPU时间昂贵的应用程序,MIDACO提供了一种高效的并行化策略。该数学优化软件可用于多种编程语言,包括而不限于Excel、VBA、java、C#、MATLAB、Octave、Python、R、Julia、C/C++和FORTRAN语言。请联系MIDACO中国区代理商无锡迅合信息科技有限公司工作人员获得试用。

MIDACO是用于解决单目标和多目标优化问题的高性能数值分析和求解软件。该软件最初是针对欧洲航天局、Astrium(空客集团)的空间站应用的挑战性问题而研发的,后来被扩展并构建为通用型解算器,以适应更为广泛的优化问题。MIDACO处理目标函数f(x)依赖于变量x是连续、整数或两种类型(混合整数情况)的问题。该问题可能进一步限制于等式和/或不等式约束g(x)。下面为MIDACO求解器所考虑的优化问题的简图。

优化问题

作为黑盒优化器,MIDACO不要求目标f(x)和约束g(x)函数以明确的数学形式给出。对于给定的决策变量x的输入,MIDACO只需目标和约束的返回值。这些目标值和约束值的计算方式完全独立于MIDACO,因此被认为是在后台进行的。这样的黑盒概念为用户提供了表达和制定应用的最大自由度。特别地,MIDACO能够解决具有高度非线性、非光滑、非凸和不可微问题的函数。此外,MIDACO可以稳健地解决具有中等水平随机噪声的问题。

核心算法

MIDACO基于一种称为蚁群优化(ACO)的进化算法。特别是MIDACO实现了一个扩展到混合整数搜索域的连续蚁群算法。下图说明了这种混合整数扩展蚁群算法如何使用多核概率密度函数(PDF)对连续情况(左)和整数情况(右)的决策变量搜索空间进行采样。

在MIDACO中,通过“Oracle惩罚方法”处理约束,“Oracle惩罚方法”是进化算法获得全局最优解的一种先进的自适应方法。像所有的进化算法一样,MIDACO并不能保证获得全局最优解,但在数百个基准上进行的大量数值试验证明它能够快速而稳健地获得大多数问题的全局最优解。特别是在文献[A Numerical Study of MIDACO on 100 MINLP Benchmarks]中,我们还证明了MIDACO在全局最优性能和运行时性能方面优于已建立的经典MINLP算法(如分支界定法)。MIDACO背后的驱动是为大家提供一个健壮的优化算法,并可以在合理的时间内优化复杂的实际应用程序,从而得到一个合理的、更好的解决方案。为了提高其整体性能,MIDACO进一步实现了许多启发式算法和其他算法,包括基于伪梯度回溯线搜索,以实现快速的局部收敛。因此,MIDACO被归类为一种进化混合算法。

软件开发历史

MIDACO软件在日本经过10多年的研发、开发和不断改进,它代表了“进化计算”最领先水平,用于解决MINLP、约束和大规模优化问题。该软件旨在独立使用以及集成(嵌入)到外部算法和软件中。MIDACO的目标是将最高的数值效率与易于使用的界面结合起来。MIDACO是一种完全自给自足的超轻量(约200kb)ANSI-C或Fortran源代码,可移植,可在所有平台(Win/Mac/Linux)上编译/运行,包括web服务器和微处理器。它提供了到流行语言(如Excel、VBA、C#、Java、R、Matlab、Python和Julia)的现成运行网关。MIDACO软件已经成功地进行了测试,可以扩展到具有100000个变量、数千个约束和数百个目标的问题。

MIDACO软件的一个特殊特性是它的“并行化”计算选项,可并行地评估多个候选解决方案。并行化可以显著加快总体计算时间,以解决CPU时间密集型应用,如数值模拟。MIDACO并行化方法提供了两个独特的优点。第一个优点是,它不仅限于单一语言和方法,几乎可以用任何语言和方法来实现。当前的并行化模板包括:OpenMP、MPI、GPGPU、apache spark、Fork/Join、multiprocessing、mpi4py等。第二个优点是可以自由选择并行化因子,独立于MIDACO内部算法组件(如种群大小)或CPU硬件规格。这使得MIDACO能够高度适应任何分布式HPC系统,并利用大规模并行化。

MIDACO软件在全球范围内目前有数百名学术和商业机构用户。MIDACO数学求解器应用范围广泛,包括汽车工业、化工、电信、机器人、土木工程、电气工程、生物技术、气候、能源和金融。MIDACO特别用于(航空)航天工程,例如欧洲航天局(ESA)、德国航空航天局(DLR)、日本宇宙航空研究开发机构(JAXA)、韩国航空航天研究所(KARI)和航空航天相关行业,如Astos Solutions、MT Aerospace、Almatech,PACE航空或三菱重工。MIDACO最令人兴奋的应用之一是星际空间任务轨迹设计,这里MIDACO拥有多个创纪录的解决方案。

MIDACO的开发得到了多家机构的赞助,被众多知名的企业采用,直接集成到他们自己的系统或产品中。

研发赞助方:

MIDACO数学求解器集成商:

Ranplan Wireless(优化5G无线通讯网络的部署成本和能力);

ELISE GmbH(使用MIDACO和仿生轻量化技术优化产品设计);

eyeV GmbH的Skyle系统(Skyle眼睛跟踪工具,支持身体有缺陷的人行动) ;

Axians(IT系统引入优化,提升企业管理水平)  ;

ProSim(流程仿真软件使用MIDACO的优化引擎提升仿真优化能力);

Altair(牵牛星公司MDS(多尺度设计系统)中的微观结构优化优化) ;

SigmaXL(在SigmaXL产品的DiscoverSim组件中引入MIDACO基于excel的优化) ;

TOMLAB(适合Matlab用户使用的数学优化组件,使用MIDACO优化引擎);

ASTOS Solutions GmbH (航天/空间站相关的计算软件ASTOS采用MIDACO);

PACE(将MIDACO求解技术嵌入PACELAB 飞行器性能分析软件) ;

【无锡迅合信息科技有限公司 宣2021】

混合整数分布式蚁群优化算法-MIDACO介绍和试用相关推荐

  1. 蚁群优化算法的JAVA实现

    蚁群算法简介 蚁群算法是群智能算法的一种,所谓的群智能是一种由无智能或简单智能的个体通过任何形式的聚集协同而表现出智能行为,它为在没有集中控制且不提供全局模型的前提下寻找复杂的分布式问题求解方案提供了 ...

  2. 集群智能-蚁群优化算法

    群体智能  1.集群智能     众多无智能的个体,通过相互之间的简单合作所表现出来的智能行为 2.博弈    具备一定智能的理性个体,按照某种机制行动,在群体层面体现出的智能 3.众包    设计合 ...

  3. 【优秀作业】蚁群优化算法

    蚁群优化算法 一.概述 生物学家发现,自然界中的蚁群觅食是一种群体性行为,并非单只蚂蚁自行寻找食物源.蚂蚁在寻找食物源时,会在其经过的路径上释放一种信息素,并能够感知其它蚂蚁释放的信息素.信息素浓度的 ...

  4. 揽货最短路径解决方案算法 - C# 蚁群优化算法实现

    需求为(自己编的,非实际项目): 某配送中心进行揽货,目标客户数为50个客户,配送中心目前的运力资源如下: 现有车辆5台 单台运力最大行驶距离200千米 单台运力最大载重公斤1吨 问:运力怎样走法才能 ...

  5. 蚁群优化算法 ACO

    群体智能(swarm intelligence) 定义: 由单个复杂个体完成的任务可由大量简单个体组成的群体合作完成,而后者往往更具有健壮性.灵活性等优势.在没有集中控制,不提供全局模型的前提下,为寻 ...

  6. 基于蚁群优化算法的特征选择相关文献

    Dorigo等人在20世纪90年代初提出了蚁群优化算法(Ant colony optimization ,ACO).ACO是一种元启发式群智能算法,旨在解决组合优化问题.它利用了真实蚂蚁的觅食行为,由 ...

  7. 蚁群优化算法(ACO)

    背景知识 蚁群优化算法是Marco Dorigo 受到蚂蚁寻找食物发现路径的行为启发,在博士论文提出的算法,是一种用来寻找优化路径的概率型算法,刚开始是为了解决 TSP(旅行商问题) ,即旅行家要旅行 ...

  8. 蚁群优化算法(ACO)详细介绍

    今年有幸上岸,导师是做群体智能控制方向的,会涉及到一些算法,所以提前学习 今天早上看到了一个中科院的群体智能视频https://www.bilibili.com/video/BV1KZ4y137sX/ ...

  9. Python实现ACO蚁群优化算法优化支持向量机回归模型(SVR算法)项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 蚁群优化算法(Ant Colony Optimization, ...

最新文章

  1. sqlserver 查找某个字段在哪张表里
  2. 学php为什么要学linux,为什么 PHP 程序员应该学习使用 Swoole
  3. 与php有区别_php://output和php://stdout的区别
  4. java中报错convension_LambdaConversionException与泛型:JVM错误?
  5. WINCE Driver 心得总结
  6. Flex DataGrid的labelFunction用法例子
  7. Chapter13:IPv6
  8. 拓端tecdat|python在Scikit-learn中用决策树和随机森林预测NBA获胜者
  9. java bean jsp_jsp+java bean+servlet开发的mvc简易鞋城在线商城系统
  10. 无刷直流电机四象限matlab pudn,一种无刷直流电机四象限PWM调制方式的分析和设计...
  11. 内存继续涨价 LPDDR4/LPDDR4X内存标准升级
  12. Python判断素数 查找所有素数
  13. BES2300x笔记(30) -- ANC降噪原理与通道配置
  14. SVM作业题:支持向量机求最优分类面
  15. Docker架构与工作流程
  16. 字符集和Java char与UTF-16
  17. 学习ARM开发(10)
  18. 计算机编程中abs怎么用,换ABS泵换ABS泵怎样用元征电脑把新资料 – 手机爱问
  19. 图片基于base64转码技术
  20. JS 异步编程六种方案

热门文章

  1. 【Android进阶】20、音频播放:SoundPool 类、单元测试:Espresso框架
  2. CodeForces - 1324D Pair of Topics (分治+排序)
  3. 反诈中心拦截网站域名措施与申诉方法
  4. 苏宁2021“轻装上阵”,张近东:聚焦零售优势业务,增利减亏
  5. php 随即英文,PHP生成随机英文用户名
  6. 高一Python入门第三讲 石头剪刀布
  7. 用户头像上传(自用)
  8. Oracle 登陆数据库的方式
  9. 小程序地图,回到当前所在位置
  10. 浅谈深度学习:基于对LSTM项目`LSTM Neural Network for Time Series Prediction`的理解与回顾