多目标规划
clc,clear,prob=optimproblem;
x=optimvar('x',2,'LowerBound',0);
c1=[-2,-3];c2=[1,2];
a=[0.5,0.25;0.2,0.2;1,5;-1,-1];%求最小值,不等号方向需相同,否则反号
b=[8;4;72;-10];
prob.Constraints.con1=a*x<=b;
obj1=0.5*c1*x+0.5*c2*x%线性加权法
prob1=prob;prob1.Objective=obj1;
[sol1,fval1]=solve(prob1),sx=sol1.x
f1=-c1*sx,f2=c2*sx
prob21=prob;prob21.Objective=c1*x;%理想点法
[sol21,fval21]=solve(prob21),sx21=sol21.x
prob22=prob;prob22.Objective=c2*x;
[sol22,fval22]=solve(prob22),sx22=sol22.x
prob23=prob;
prob23.Objective=(c1*x-fval21)^2+(c2*x-fval22)^2;
[sol23,fval23]=solve(prob23),sx23=sol23.x
prob3=prob;prob3.Objective=c2*x;%序贯解法
prob3.Constraints.con2=c1*x==fval21;
[sol3,fval3]=solve(prob3),sx3=sol3.x
result
obj1 =
Linear OptimizationExpression
-0.5*x(1) - 0.5*x(2)
Solving problem using linprog.
Optimal solution found.
sol1 =
包含以下字段的 struct:
x: [2×1 double]
fval1 =
-10
sx =
7
13
f1 =
53
f2 =
33
Solving problem using linprog.
Optimal solution found.
sol21 =
包含以下字段的 struct:
x: [2×1 double]
fval21 =
-53
sx21 =
7
13
Solving problem using linprog.
Optimal solution found.
sol22 =
包含以下字段的 struct:
x: [2×1 double]
fval22 =
10
sx22 =
10
0
Solving problem using lsqlin.
Minimum found that satisfies the constraints.
Optimization completed because the objective function is non-decreasing in
feasible directions, to within the value of the optimality tolerance,
and constraints are satisfied to within the value of the constraint tolerance.
sol23 =
包含以下字段的 struct:
x: [2×1 double]
fval23 =
302.76
sx23 =
13.36
5.28
Solving problem using linprog.
Optimal solution found.
sol3 =
包含以下字段的 struct:
x: [2×1 double]
fval3 =
33
sx3 =
7
13