「达摩院MindOpt」用于多目标规划(加权和法)

简介: 多目标规划(Multi-objective programming)是指在一个优化问题中需要同时考虑多个目标函数的优化。在多目标规划问题中,目标函数之间通常是互相冲突的,即在优化一个目标函数的过程中,另一个或几个目标函数可能会受到影响。因此,多目标规划问题的目标是找到一个解x,使得在满足约束的前提下,所有目标函数达到一个相对满意的折中。

多目标规划的处理

多目标规划(Multi-objective programming)是指在一个优化问题中需要同时考虑多个目标函数的优化。在多目标规划问题中,目标函数之间通常是互相冲突的,即在优化一个目标函数的过程中,另一个或几个目标函数可能会受到影响。因此,多目标规划问题的目标是找到一个解x,使得在满足约束的前提下,所有目标函数达到一个相对满意的折中。

在现实世界中,我们经常面临需要在多个目标之间权衡的问题。例如:


场景

示例

在经济发展与环境保护之间寻求平衡

如经济发展的目标函数可以是国内生产总值(GDP)的增长率,而环境保护的目标函数可以是污染物排放量的减少率。政府在制定政策时需要权衡这两个目标,以实现经济与环境的可持续发展。

在提高产品质量的同时降低成本

如设计一款手机,设计师需要在保证性能、续航时间、重量和成本等多个因素之间达到一个合适的平衡。

在投资理财里权衡收益和风险

如购买基金或股票,投资者需要考虑到不同产品的期望收益和风险,来购买合适风险等级的理财产品。

在供应链管理中的多目标

如库存成本、运输成本、客户满意度等。为了实现这些目标的平衡,公司需要优化其生产、采购、运输和分销策略。

商品定价的利润和销量的博弈

如电子产品定价,希望能得到最多的利润率,同时又希望能扩大销量,使得生产的单位成本降低。


对于这些多目标问题,如何折中以及如何求解是个难题,为此,学者们提出了许多方法将多目标规划问题转化为单目标规划问题,以便利用传统的单目标优化技术求解。如:加权和法(本篇)、指标法、层次法等。这些方法都有其优缺点,使用时需要根据具体问题的特点选择合适的方法。

值得注意的是,将多目标转化为单目标后求解得到的解可能不是多目标优化问题的帕累托最优解(没有其他解更优),因此在实际应用中需要权衡各种因素。

加权和法(Weighted Sum Method)

1. 原理

加权和法(Weighted Sum Method),是将多个目标函数通过赋予不同的权重值相加形成一个单一的目标函数。具体来说,假设有image.png个目标函数image.png,我们可以构建一个新的目标函数image.png如下:

image.png

其中image.png表示第image.png个目标函数的权重,通常要求所有权重之和为1。

通过调整权重值,可以得到不同的优化结果。

2.举例子

假设一个农场主希望优化其土地上的作物种植布局,需要在以下两个目标之间取得平衡:


  • 目标1:最大化农场产值(单位:元);
  • 目标2:最小化化肥使用量(单位:千克)。

农场主有两种作物可以种植:作物A、作物B、作物C。设image.png
分别为种植作物A、B、C的面积。

  • 已知A、B、C每亩作物的产值分别为1000元、1200元、1300元。则,目标1的函数:image.png
  • 每亩A、B、C作物分别需要化肥:20千克、30千克、33千克。则,目标2的函数:image.png
  • 总种植面积不超过100亩。即:

    image.png

  • 3种作物至少每个需要种10亩。

我们可以使用加权和法将其转换为单目标优化问题。

  • 首先,我们引入权重参数image.pngimage.png,分别表示农场产值和化肥使用量的重要程度,且满足image.png,即image.png
  • 然后考虑两个目标的单位和数据量级不一样,我们引入参数image.png来给目标2调整数量级。实际使用的时候,也可以合并进image.png
  • 然后,新的单目标 image.png,即image.png

在实际应用中,可以根据需求和数据的数量级来调整权重参数w1和w2的值,以平衡这两个目标。 假设农场主更关心农场产值,可以选择image.png

接下来,我们使用 MindOpt APL建模语言对这个问题进行建模,并调用 MindOpt Solver 来求解。代码如下:

clear model;
# ------建模-------Start-----
# model_1.mapl
# 变量
var x1 >= 10;
var x2 >= 10;
var x3 >= 10;
# 权重参数
param w1 = 0.7; # 假设农场主更关心农场产值
param w2 = 1 - w1;
param c = 50; # 根据数量级差异 1000/20 = 50来简单预估
# 目标
maximize obj: w1 * (1000 * x1 + 1200 * x2 + 1300 * x3) - c * w2 * (20 * x1 + 30 * x2 + 33 * x3);
# 定义约束条件
subject to constraint1: x1 + x2 + x3 <= 100;
# ------建模-------End-----
#求解
option solver mindopt;     # (可选)指定求解用的求解器,默认是MindOpt
option mindopt_options 'print=0'; #设置求解器输出级别,减少过程打印
solve;         # 求解
# 结果打印和检查结果
print "-----------------Display---------------";
display; 
print "改造的单目标最优是:",w1 * (1000 * x1 + 1200 * x2 + 1300 * x3) - c * w2 * (20 * x1 + 30 * x2 + 33 * x3);
print "其中,种", x1,"亩作物A,种",x2,"亩作物B,种",x3,"亩作物C。";
print "对应农场产值:", (1000 * x1 + 1200 * x2 + 1300 * x3),"元。";
print "对应化肥使用量:", (20 * x1 + 30 * x2 + 33 * x3),"千克。";

运行上述代码结果如下:

Running mindoptampl
wantsol=1
print=0
MindOpt Version 0.25.1 (Build date: 20230816)
Copyright (c) 2020-2023 Alibaba Cloud.
Start license validation (current time : 22-SEP-2023 16:14:25).
License validation terminated. Time : 0.006s
OPTIMAL; objective 41100.00
0 simplex iterations
Completed.
-----------------Display---------------
Primal Solution:
      x1 = 10.0000000
      x2 = 10.0000000
      x3 = 80.0000000
改造的单目标最优是:41099.99999999999
其中,种10亩作物A,种10亩作物B,种80亩作物C。
对应农场产值:126000元。
对应化肥使用量:3140千克。

3.权重影响分析和改进

不同的参数设置,结果会不一样,比如上面的方案,如果image.png不变,我们选取不同的 image.png 的值,得到结果如下。

w1

评估目标值

A亩数

B亩数

C亩数

农场产值(元)

化肥使用量(千克)

1.0

126000

10

10

80

126000

3140

0.9

97700

10

10

80

126000

3140

0.8

69400

10

10

80

126000

3140

0.7

41100

10

10

80

126000

3140

0.65

29225

80

10

10

105000

2230

0.6

18400

80

10

10

105000

2230

0.55

7575

80

10

10

105000

2230

0.5

-3250

10

10

10

35000

830

0.4

-10900

10

10

10

35000

830

可以看出,不同的权重算出来的最优的决策是不一样的,甚至会出现无有效解的情况。

将多目标规划转换为单目标规划的加权和法存在以下缺点:

  • 权重赋值主观性:对每个目标赋权的过程是主观的,可能无法准确反映目标的相对重要性。
  • 信息丢失:加权和法将所有目标合并为一个单一目标,丢失了有关单个目标及其关系的信息。
  • 灵活性有限:该方法假设目标之间存在线性关系,这在所有情况下可能不成立。

为了改进加权和法,可以考虑以下方法:

  • 使用灵敏度分析:进行灵敏度分析,以确定不同权重赋值对最终解决方案的影响。这可以帮助确定产生理想结果的权重范围。
  • 考虑非线性关系:如果目标之间存在非线性关系,则可以使用模糊规划或具有非线性函数的目标规划等替代方法来更准确地捕捉复杂性。
  • 加入权衡:不是分配固定的权重,而是允许决策者指定目标之间的权衡。这可以通过目标规划或妥协规划等技术来实现。

总体而言,改进加权和法涉及增加更多的灵活性,捕捉目标之间的关系,并减少权重分配中的主观性。

相关文章
|
达摩院 供应链 安全
光储荷经济性调度问题【数学规划的应用(含代码)】阿里达摩院MindOpt
本文介绍使用MindOpt工具优化光储荷经济性调度的数学规划问题。光储荷经济性调度技术旨在最大化能源利用率和经济效益,应用场景包括分布式光伏微网、家庭能源管理系统、商业及工业用电、电力市场参与者等。文章详细阐述了如何通过数学规划方法解决虚拟电厂中的不确定性与多目标优化难题,并借助MindOpt云建模平台、MindOpt APL建模语言及MindOpt优化求解器实现问题建模与求解。最终案例展示了如何通过合理充放电策略减少37%的电费支出,实现经济与环保双重效益。读者可通过提供的链接获取完整源代码。
|
达摩院 BI 索引
切割问题【数学规划的应用(含代码)】阿里达摩院MindOpt
本文主要讲述了使用MindOpt工具对切割问题进行优化的过程与实践。切割问题是指从一维原材料(如木材、钢材等)中切割出特定长度的零件以满足不同需求,同时尽可能减少浪费的成本。文章通过实例详细介绍了如何使用MindOpt云上建模求解平台及其配套的MindOpt APL建模语言来解决此类问题,包括数学建模、代码实现、求解过程及结果分析等内容。此外,还讨论了一维切割问题的应用场景,并对其进行了扩展,探讨了更复杂的二维和三维切割问题。通过本文的学习,读者能够掌握利用MindOpt工具解决实际切割问题的方法和技术。
|
达摩院 算法 安全
智慧楼宇多目标调度问题【数学规划的应用(含代码)】阿里达摩院MindOpt
本文探讨了使用MindOpt工具优化智慧楼宇的多目标调度问题,特别是在虚拟电厂场景下的应用。智慧楼宇通过智能化技术综合考虑能耗、舒适度等多目标,实现楼宇设备的有效管理和调度。虚拟电厂作为多能源聚合体,能够参与电力市场,提供调峰、调频等辅助服务。文章介绍了如何使用MindOpt云上建模求解平台及MindOpt APL建模语言对楼宇多目标调度问题进行数学建模和求解,旨在通过优化储能设备的充放电操作来最小化用电成本、碳排放成本和功率变化成本,从而实现经济、环保和电网稳定的综合目标。最终结果显示,在使用储能设备的情况下,相比不使用储能设备的情形,成本节约达到了约48%。
|
达摩院 供应链 JavaScript
网络流问题--仓储物流调度【数学规划的应用(含代码)】阿里达摩院MindOpt
本文通过使用MindOpt工具优化仓储物流调度问题,旨在提高物流效率并降低成本。首先,通过考虑供需匹配、运输时间与距离、车辆容量、仓库储存能力等因素构建案例场景。接着,利用数学规划方法,包括线性规划和网络流问题,来建立模型。在网络流问题中,通过定义节点(资源)和边(资源间的关系),确保流量守恒和容量限制条件下找到最优解。文中还详细介绍了MindOpt Studio云建模平台和MindOpt APL建模语言的应用,并通过实例展示了如何声明集合、参数、变量、目标函数及约束条件,并最终解析了求解结果。通过这些步骤,实现了在满足各仓库需求的同时最小化运输成本的目标。
|
达摩院 安全 调度
网络流问题--交通调度【数学规划的应用(含代码)】阿里达摩院MindOpt
本文探讨了如何利用数学规划工具MindOpt解决交通调度问题。交通调度涉及网络流分析,考虑道路容量、车辆限制、路径选择等因素,以实现高效运行。通过建立数学模型,利用MindOpt云平台和建模语言MAPL,设定流量最大化目标并确保流量守恒,解决实际的调度问题。案例展示了如何分配车辆从起点到终点,同时满足道路容量约束。MindOpt Studio提供在线开发环境,支持模型构建和求解,帮助优化大规模交通调度。
人员排班【数学规划的应用(含代码)】阿里达摩院MindOpt
本文介绍了使用阿里巴巴达摩院的MindOpt工具解决人员排班的数学规划问题。人员排班在多个行业中至关重要,如制造业、医疗、餐饮和零售等。问题涉及多种约束,包括工作需求、员工能力、工作时间限制、连续工作天数及公平性。通过MindOpt云建模平台和建模语言MindOpt APL,建立数学模型并编写代码来解决最小化总上班班次的问题。案例中展示了如何声明集合、参数、变量和约束,并给出了部分代码示例。最后,通过MindOpt求解器得到最优解,并将结果输出到CSV文件中。
|
达摩院 Linux API
阿里达摩院MindOpt求解器V1.1新增C#接口
阿里达摩院MindOpt求解器发布最新版本V1.1,增加了C#相关API和文档。优化求解器产品是求解优化问题的专业计算软件,可广泛各个行业。阿里达摩院从2019年投入自研MindOpt优化求解器,截止目前经历27个版本的迭代,取得了多项国内和国际第一的成绩。就在上个月,2023年12月,在工信部产业发展促进中心等单位主办的首届能源电子产业创新大赛上,MindOpt获得电力用国产求解器第一名。本文将为C#开发者讲述如何下载安装MindOpt和C#案例源代码。
470 3
阿里达摩院MindOpt求解器V1.1新增C#接口
|
达摩院 Linux 决策智能
阿里达摩院MindOpt优化求解器-月刊(2024年3月)
### MindOpt 优化求解器月刊(2024年3月) - 发布亮点:MAPL建模语言升级至V2.4,支持云上无安装使用和向量化建模语法。 - 新增功能:Linux用户可本地安装`maplpy`,并支持Python与MAPL混编。 - 实例分享:介绍背包问题的组合优化,展示如何在限定容量下最大化收益。 - 用户投稿:探讨机票超售时的最优调派策略,以最小化赔付成本。 - 加入互动:官方钉钉群32451444,更多资源及。 [查看详细内容](https://opt.aliyun.com/)
213 0
阿里达摩院MindOpt优化求解器-月刊(2024年3月)
|
达摩院 开发者 容器
「达摩院MindOpt」优化形状切割问题(MILP)
在制造业,高效地利用材料不仅是节约成本的重要环节,也是可持续发展的关键因素。无论是在金属加工、家具制造还是纺织品生产中,原材料的有效利用都直接影响了整体效率和环境影响。
「达摩院MindOpt」优化形状切割问题(MILP)
|
机器学习/深度学习 达摩院
阿里达摩院MindOpt优化求解器-月刊(2024年4月)
【摘要】2024.04.30,阿里云发布了MindOpt优化求解器的新商品和功能。MindOpt现在已上架,提供超低价零售求解器,支持按需购买,可在阿里云平台上直接购买联网或不联网License。新版本V1.2发布,提升MILP性能,并增加PostScaling参数。此外,MindOpt Studio推出租户定制版,正处于邀测阶段。同时分享了使用MindOpt解决二分类SVM问题的案例。更多内容,可访问相关链接。
393 0

热门文章

最新文章