数学建模:多目标规划:ε约束法、 理想点法
一、ε约束法
定义
ε约束法通过将部分目标函数转化为约束条件,保留一个主要目标进行优化。
1、选择一个主要目标 fk(x) 进行优化。
2、其他目标 fi(x) 转化为约束 fi(x)≤εi,其中 εi 是决策者设定的容许阈值。
原理
目标选择:决策者选择一个最重要的目标作为优化目标。
约束转换:其余目标被限制在某个可接受范围内。
参数调整:通过调整 εi,可以探索不同的Pareto最优解。
求解代码
clear
clcprob = optimproblem('ObjectiveSense', 'min');
x = optimvar('x', 2, 'LowerBound', 0);%定义约束
prob.Constraints.con1 = 0.5*x(1) + 0.25*x(2) <= 8;
prob.Constraints.con2 = 0.2*x(1) + 0.2*x(2) <= 4;
prob.Constraints.con3 = x(1) + 5*x(2) <= 72;
prob.Constraints.con4 = x(1) + x(2) >= 10;%ε约束:污染 ≤ 33
prob.Constraints.epsilon_con = x(1) + 2*x(2) <= 33;%主目标:利润最大化(转换为最小化 -利润)
prob.Objective = -2*x(1) - 3*x(2);[sol, fval] = solve(prob);
fprintf('最优解: x1 = %.2f, x2 = %.2f\n', sol.x(1), sol.x(2));
fprintf('利润: %.2f, 污染: %.2f\n', -fval, sol.x(1) + 2*sol.x(2));
二、 理想点法
定义
理想点法通过计算各单目标的最优解(理想点),然后寻找最接近理想点的解。
先分别优化每个单目标,得到理想值 fi∗。
构造评价函数,最小化目标值与理想值的加权距离(如欧氏距离)。
求解代码
clear
clcprob = optimproblem('ObjectiveSense', 'min');
x = optimvar('x', 2, 'LowerBound', 0);%定义约束
prob.Constraints.con1 = 0.5*x(1) + 0.25*x(2) <= 8;
prob.Constraints.con2 = 0.2*x(1) + 0.2*x(2) <= 4;
prob.Constraints.con3 = x(1) + 5*x(2) <= 72;
prob.Constraints.con4 = x(1) + x(2) >= 10;%计算理想点(单目标优化)
prob1 = prob;
%利润最大化
prob1.Objective = -2*x(1) - 3*x(2);
[sol1, fval1] = solve(prob1);
%利润理想值
f1_ideal = -fval1; prob2 = prob;
%污染最小化
prob2.Objective = x(1) + 2*x(2);
[sol2, fval2] = solve(prob2);
%污染理想值
f2_ideal = fval2; %构造理想点法的二次规划
prob_ideal = prob;
prob_ideal.Objective = (-2*x(1) - 3*x(2) - (-53))^2 + (x(1) + 2*x(2) - 10)^2;[sol_ideal, fval_ideal] = solve(prob_ideal);
fprintf('最优解: x1 = %.2f, x2 = %.2f\n', sol_ideal.x(1), sol_ideal.x(2));
fprintf('利润: %.2f, 污染: %.2f\n', 2*sol_ideal.x(1) + 3*sol_ideal.x(2), sol_ideal.x(1) + 2*sol_ideal.x(2));