无锡前洲行业网站建设,公司邮箱免费注册,网站建设意义模板,游戏推广公司好做吗优化问题描述 优化
优化算法是指在满足一定条件下,在众多方案中或者参数中最优方案,或者参数值,以使得某个或者多个功能指标达到最优,或使得系统的某些性能指标达到最大值或者最小值 线性规划
线性规划是指目标函数和约束都是线性的情况
[x,fval]linprog(f,A,b,Aeq,Beq,LB,U…优化问题描述 优化
优化算法是指在满足一定条件下,在众多方案中或者参数中最优方案,或者参数值,以使得某个或者多个功能指标达到最优,或使得系统的某些性能指标达到最大值或者最小值 线性规划
线性规划是指目标函数和约束都是线性的情况
[x,fval]linprog(f,A,b,Aeq,Beq,LB,UB) x求得最优情况下变量的解 fval求得最优目标值 f目标函数的系数符号按最小值标准若目标是求解机大值可以通过添加负号改成求极小值 A不等式约束的变量系数符合按小于标准如果是大于约束可通过加负号变成小于 b不等式约束的常量 Aeq等式约束的变量系数Beq等式约束的常量LB变量的下限UB变量的上限 %% 线性规划
clc;clear;close all;
%目标函数/max 要改成min 的形式max最大值可以系数加个负号的变成求min
f[-1;-2;3]; %不等约束 /化成标准形式 x1x2
% -x1-x20*x3-3
%0*x1-x2-x3-3
A[-1,-1,0;0,-1,-1];%左边特征矩阵
b[-3;-3]; %右边%等式约束
Aeq[1,0,1];
Beq[4];%变量约束,上限下限
LBzeros(3,1);
UB2*ones(3,1);%优化
[x,fval]linprog(f,A,b,Aeq,Beq,LB,UB);
%
objstr[目标函数最优值,num2str(fval)];
disp(objstr)
for i1:length(x)xstr[x,num2str(i),的值为,num2str(x(i))];disp(xstr)
end
非线性规划
非线性规划是指目标函数和约束有非线性的情况 %% 非线性规划1
clc;clear;close all;
%初始解随意给个初始解
x0zeros(3,1);%不等约束
A[2,1,3];%左边特征矩阵
b[6]; %右边%描述线性
%等式约束
Aeq[];
Beq[];%变量约束,上限下限
LBzeros(3,1);
UB1*ones(3,1);%
%优化求解 max 加负号
fun (x)-x(1)^2x(2)^2-x(2)*x(3);
%
nonlcon unitdisk;
[x,fval]fmincon(fun,x0,A,b,Aeq,Beq,LB,UB,nonlcon);objstr[目标函数最优值,num2str(-fval)];%num2str 数字变成字符
disp(objstr)
for i1:length(x)xstr[x,num2str(i),的值为,num2str(x(i))];disp(xstr)
endfunction [c,ceq] unitdisk(x)
%c为不等式非线性约束
%ceq为等式非线性约束
cx(1)^2x(1)*x(2)x(2)*x(3)-x(2)-6;
%多个非线性约束的话可以用[约束1;约束2];
ceq [];
end%%
%遇到较为复杂的目标函数
%可以写为函数的形式
fun obj;
function y obj(x)y1 x(1)^2x(2)^2;y sqrt(y1)x(3)^3;
end
%%
多目标优化 多目标求解的第一种方法
%% 非线性规划1
clc;clear;close all;
%%
%初始解随意给个初始解
x0zeros(3,1);%不等约束
A[2,1,3];%左边特征矩阵
b[6]; %右边%等式约束
Aeq[];
Beq[];%变量约束,上限下限
LBzeros(3,1);
UB1*ones(3,1);
%优化求解
%%
w10.5;w20.5;
fun (x)(-x(1)^2x(2)^2-x(2)*x(3))*w1(2*x(1)^2-x(2)^32*x(2)*x(3))*w2;nonlcon unitdisk;
[x1,fval1]fmincon(fun,x0,A,b,Aeq,Beq,LB,UB,nonlcon);
objstr[目标函数最优值,num2str(fval1)];
disp(objstr)
for i1:length(x1)xstr[x,num2str(i),的值为,num2str(x1(i))];disp(xstr)
endfunction [c,ceq] unitdisk(x)
%c为不等式非线性约束
%ceq为等式非线性约束
cx(1)^2x(1)*x(2)x(2)*x(3)-x(2)-6;
ceq [];
end多目标求解的第二种方法
%% 非线性规划1
clc;clear;close all;
%%
%初始解随意给个初始解
x0zeros(3,1);%不等约束
A[2,1,3];%左边特征矩阵
b[6]; %右边%等式约束
Aeq[];
Beq[];%变量约束,上限下限
LBzeros(3,1);
UB1*ones(3,1);
%优化求解
%%
fun1 (x)-x(1)^2x(2)^2-x(2)*x(3);
fun2 (x)2*x(1)^2-x(2)^32*x(2)*x(3);
%%
nonlcon unitdisk;
[x1,fval1]fmincon(fun1,x0,A,b,Aeq,Beq,LB,UB,nonlcon);
objstr[目标函数最优值,num2str(fval1)];
disp(objstr)
for i1:length(x1)xstr[x,num2str(i),的值为,num2str(x1(i))];disp(xstr)
end
[x2,fval2]fmincon(fun2,x0,A,b,Aeq,Beq,LB,UB,nonlcon);
objstr[目标函数最优值,num2str(fval2)];
disp(objstr)
for i1:length(x2)xstr[x,num2str(i),的值为,num2str(x2(i))];disp(xstr)
end
%% 多目标规划
goal[fval1,fval2];
func (x)[-x(1)^2x(2)^2-x(2)*x(3);2*x(1)^2-x(2)^32*x(2)*x(3)];
weight[1,1];
[x,fival]fgoalattain(func,x0,goal,weight,A,b,Aeq,Beq,LB,UB,nonlcon);
disp(在两个目标的优化结果为)
disp(func(x))
for i1:length(x)xstr[x,num2str(i),的值为,num2str(x(i))];disp(xstr)
end
%%
function [c,ceq] unitdisk(x)
%c为不等式非线性约束
%ceq为等式非线性约束
cx(1)^2x(1)*x(2)x(2)*x(3)-x(2)-6;
ceq [];
end %% 非线性规划1
clc;clear;close all;
%%
%初始解随意给个初始解
x0zeros(10,1);%不等约束
A[];%左边特征矩阵
b[]; %右边%等式约束
Aeq[];
Beq[];%变量约束,上限下限
LB-1*ones(10,1);LB(1)0;
UB1*ones(10,1);
%优化求解
%%
fun1 obj1;
fun2 obj2;
%%
nonlcon [];
[x1,fval1]fmincon(fun1,x0,A,b,Aeq,Beq,LB,UB,nonlcon);
objstr[目标函数最优值,num2str(fval1)];
disp(objstr)
for i1:length(x1)xstr[x,num2str(i),的值为,num2str(x1(i))];disp(xstr)
end
[x2,fval2]fmincon(fun2,x0,A,b,Aeq,Beq,LB,UB,nonlcon);
objstr[目标函数最优值,num2str(fval2)];
disp(objstr)
for i1:length(x2)xstr[x,num2str(i),的值为,num2str(x2(i))];disp(xstr)
end
%% 多目标规划
goal[fval1,fval2];
func obj3;
weight[1,1];
[x,fival]fgoalattain(func,x0,goal,weight,A,b,Aeq,Beq,LB,UB,nonlcon);
disp(在两个目标的优化结果为)
disp(func(x))
for i1:length(x)xstr[x,num2str(i),的值为,num2str(x(i))];disp(xstr)
end
%%
function y1obj1(x)[dim, num] size(x);tmp zeros(dim,num);tmp(2:dim,:) (x(2:dim,:) - sin(6.0*pi*repmat(x(1,:),[dim-1,1]) pi/dim*repmat((2:dim),[1,num]))).^2;tmp1 sum(tmp(3:2:dim,:)); % odd indextmp2 sum(tmp(2:2:dim,:)); % even indexy1 x(1,:) 2.0*tmp1/size(3:2:dim,2);
% y(2,:) 1.0 - sqrt(x(1,:)) 2.0*tmp2/size(2:2:dim,2);
end
function y2obj2(x)[dim, num] size(x);tmp zeros(dim,num);tmp(2:dim,:) (x(2:dim,:) - sin(6.0*pi*repmat(x(1,:),[dim-1,1]) pi/dim*repmat((2:dim),[1,num]))).^2;tmp1 sum(tmp(3:2:dim,:)); % odd indextmp2 sum(tmp(2:2:dim,:)); % even index
% y2 x(1,:) 2.0*tmp1/size(3:2:dim,2);y2 1.0 - sqrt(x(1,:)) 2.0*tmp2/size(2:2:dim,2);
end
function yobj3(x)[dim, num] size(x);tmp zeros(dim,num);tmp(2:dim,:) (x(2:dim,:) - sin(6.0*pi*repmat(x(1,:),[dim-1,1]) pi/dim*repmat((2:dim),[1,num]))).^2;tmp1 sum(tmp(3:2:dim,:)); % odd indextmp2 sum(tmp(2:2:dim,:)); % even indexy(1,:) x(1,:) 2.0*tmp1/size(3:2:dim,2);y(2,:) 1.0 - sqrt(x(1,:)) 2.0*tmp2/size(2:2:dim,2);
end
% function [c,ceq] unitdisk(x)
% %c为不等式非线性约束
% %ceq为等式非线性约束
% cx(1)^2x(1)*x(2)x(2)*x(3)-x(2)-6;
% ceq [];
% end