MATLAB 多目标规划

AI-摘要
小嗷犬 GPT
本文介绍了多目标规划的基本概念、数学模型和 MATLAB 求解方法。多目标规划是在一定的约束条件下,求解多个目标函数的最优解。数学模型包括正负偏差变量、绝对约束和目标约束等。MATLAB 提供了 fgoalattain 函数可以直接求解多目标规划问题。对于每个目标,有恰好达到、不超过和不少于三种情况,需要根据优先因子进行加权求和得到最终的目标函数。最后给出了两个例子来说明如何使用 MATLAB 解决多目标规
介绍自己 🙈
生成本文简介 👋
推荐相关文章 📖
前往主页 🏠
前往爱发电购买
这篇文章距离上次更新已经过去了 620 天,其中的某些内容可能不再适用了,请谨慎阅读。
MATLAB 多目标规划
小嗷犬多目标规划
多目标规划是指在一定的约束条件下,求解多个目标函数的最优解。
数学模型
正负偏差变量
设 d 为决策变量的函数,d0 为目标值。
正负偏差变量 d+ = max{0, d - d0} 表示决策值超过目标值的部分;d- = max{0, d0 - d} 表示决策值低于目标值的部分。
因为决策值不可能既高于目标值,又低于目标值,所以恒有 d+ × d- = 0。
绝对约束和目标约束
- 绝对约束:线性规划直接给出的约束条件,一定要满足的约束
- 目标约束:由决策目标得出的约束条件,尽量满足的约束,允许存在一定的正负偏差
优先因子
为各个目标主观设定一个因子,表示各个目标的重要程度。优先因子越高的目标拥有越高的权重,将会被优先考虑。
多目标规划的目标函数
对于每个目标,有以下三种情况:
- 恰好达到:正负偏差都尽可能小,
- 不超过:正偏差尽可能小,
- 不少于:负偏差尽可能小,
最后将各个目标的目标函数根据优先因子进行加权求和,得到最终的目标函数。
如何使用 MATLAB 解决多目标规划问题
MATLAB 为我们提供了 fgoalattain
函数,可以直接求解多目标规划问题。
fgoalattain
函数的语法为:
matlab
1 |
|
其中,fun
为目标函数,x0
为初始值,goal
为目标值,weight
为优先因子,A
为线性不等式约束系数,b
为线性不等式约束的右端项,Aeq
为线性等式约束系数,beq
为线性等式约束的右端项,lb
为变量的下界,ub
为变量的上界,nonlcon
为非线性约束。
输入的标准形式为:
例1
假设有以下双目标函数:
设置目标 [3,6] 和权重 [1,1],并从 x0 = 1 开始求解目标达到问题。
matlab
1 |
|
结果为:
matlab
1 |
|
可以看到,目标函数达到了目标值。
例2
目标函数为:
此处, 且。目标是 [3,6],权重是 [1,1],线性约束是 。
从 x0 = [1,1] 开始求解目标达到问题。
matlab
1 |
|
结果为:
matlab
1 |
|