⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 restrain.m

📁 基于灰色系统方法的离散多目标优化设计程序
💻 M
字号:
function [res_gx,res_hx]=restrain(x,gk,hk)
global f1 kexample kg 
if kg==2, global gk hk;end
res_gx=zeros(gk,1);%不等式约束条件初始化
res_hx=zeros(hk,1);%等式约束条件初始化
%  计算约束函数值程序,含等式约束hj(x)==0
%  和不等式约束gi(x)<=0,注意输入格式为"<="。
%  res_gx为不等式约束函数值,res_hx为等式约束值。
%  用us,ux数组表示的设计变量范围可不列入约束条件。
%  等式、不等式约束采用列向量形式,用分号隔开。
%  等式约束输入格式与不等式约束相同。
%  以下提供一范例,实际应用时可按此格式输入。
%-------------------原例题gi(x)>=0---------------------------------------------------------------
% res_gx=[85.334407+0.0056858*x(2)*x(5)+0.00026*x(1)*x(4)-0.0022053*x(3)*x(5);....% 玄光男p45例2.2
%        92-(85.334407+0.0056858*x(2)*x(5)+0.00026*x(1)*x(4)-0.0022053*x(3)*x(5));...
%        80.51249+0.0071317*x(2)*x(5)+0.0029955*x(1)*x(2)+0.0021813*x(3)^2-90; .....
%       110-(80.51249+0.0071317*x(2)*x(5)+0.0029955*x(1)*x(2)+0.0021813*x(3)^2);.....
%       9.300961+0.0047026*x(3)*x(5)+0.0012547*x(1)*x(3)+0.0019085*x(3)*x(4)-20;...
%       25-(9.300961+0.0047026*x(3)*x(5)+0.0012547*x(1)*x(3)+0.0019085*x(3)*x(4))];
% res_hx=[];
%----------------------------------------------------------------------------------
%%%%%%%%%%%%%%%%the first example %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if kexample==1
    x1=x(1);x2=x(2);x3=x(3);x4=x(4);x5=x(5);
   c1=85.334407+0.0056858*x2*x5+0.00026*x1*x4-0.0022053*x3*x5;
   c2=80.51249+0.0071317*x2*x5+0.0029955*x1*x2+0.0021813*x3^2;
   c3=9.300961+0.0047026*x3*x5+0.0012547*x1*x3+0.0019085*x3*x4;
   c=[c1-92;-c1;c2-110;-c2+90;c3-25;-c3+20;-(x1-78);x1-102;-(x2-33);x2-45;-(x3-27);x3-45;-(x4-27);x4-45;-(x5-27);x5-45];
   ceq=[];
   % 2007.8.6 
%%%%%%%%%%%%%%%%%%%%% the second  example %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
elseif kexample==2
    x1=x(1);x2=x(2);x3=x(3);x4=x(4);x5=x(5);x6=x(6);
    g1=17-x2;
    g2=x2*x3-30;
    g3=0.2-x3;
    g4=16-x1/x3;
    g5=x1/x3-35;
    g6=10-x5;
    g7=x5-15;
    g8=x6-20;
    g9=13-x6;
   g10=x1+0.5*x6-x4+4;
   g11=43854/(x2*x3*x1^0.5)-855;
   g12=7098/(x1*x2*x3^2*(0.169+0.006666*x2-0.0000854*x2^2))-261;
   g13=7098/(x1*x2*x3^2*(0.2824+0.00177*x2-0.0000394*x2^2))-213;
   g14=0.01233*x4^3/(x1*x3*x5^4)-0.003*x4-261;
   g15=29050*x4/(x2*x3*x5^3)*(1+0.29709*x2^2*x3^2/x4^2)^0.5-55;
   g16=29050*x4/(x2*x3*x6^3)*(1+7.42727*x2^2*x3^2/x4^2)^0.5-55;
   c=[g1;g2;g3;g4;g5;g6;g7;g8;g9;g10;g11;g12;g13;g14;g15;g16];
   ceq=[];
elseif kexample==3
     x1=x(1);x2=x(2);x3=x(3);x4=x(4);x5=x(5);x6=x(6);x7=x(7);
    c1=27/(x1*x2^2*x3)-1;
    c2=397.5/(x1*x2^2*x3^2)-1;
    c3=1.93*x4^3/(x2*x3*x6^4)-1;
    c4=((745*x4/(x2*x3))^2+16.9*10^6)^0.5/(0.1*x6^3)-1100;
    c5=((745*x5/(x2*x3))^2+157.5*10^6)^0.5/(0.1*x7^3)-850;
    c6=x2*x3-40;
    c7=x1/x2-12;
    c8=-x1/x2+5;
    c9=(1.5*x6+1.9)/x4-1;
    c10=(1.1*x7+1.9)/x5-1;
    c=[c1;c2;c3;c4;c5;c6;c7;c8;c9;c10];ceq=[];
elseif kexample==4
     x1=x(1);x2=x(2);x3=x(3);
     c=[6-x2/x1;x2/x1-8;0.5*x3+1.5*x1/x2-5.3;200-3.56*10^5*x1/(x3*x2^2);-400*x3*x2^2.16+520997*x1^1.16];ceq=[];%
     temp= (4900/(4900*x3^2*x2^(108/25)+5666153991557420062000843027225/18889465931478580854784*x1^(58/25))^(1/2)/(400*x3*x2^(54/25)-520997*x1^(29/25))*x3*x2^(108/25)-400*(4900*x3^2*x2^(108/25)+5666153991557420062000843027225/18889465931478580854784*x1^(58/25))^(1/2)/(400*x3*x2^(54/25)-520997*x1^(29/25))^2*x2^(54/25));
     c=[c;abs(temp)-0.08];%temp 为增加一个求导项,用于调试一种新功能!
   % c=[6-x2/x1;x2/x1-8;0.5*x3+1.5*x1/x2-5.3;200-3.56*10^6*x1/(x3*x2^2);-400*x3*x2^2.16+520997*x1^1.16];ceq=[];%10^5
elseif kexample==5
     x1=x(1);x2=x(2);x3=x(3);x4=x(4);%180000*x1/(x3*(x1-2*x4)^3+2*x2*x4*(4*x4^2+3*x1*(x1-2*x4)))+15000*x2/((x1-2*x4)*x3^2+2*x2^3*x4)-14
     c=[-80+x1;10-x1];ceq=[];
elseif kexample==6
    x1=x(1);x2=x(2);x3=x(3);x4=x(4);x5=x(5);
    c=[0.6-x1;0.6-x2;0.6-x3;0.6-x4;0.6-x5;x1-2.4;x2-2.4;x3-2.4;x4-2.4;x5-2.4;
      37.6901+4.9527*x1-5.8503*x2+2.5132*x3+1.445*x4+0.2898*x5+5.5793*x2^2-4.281*x1*x2-46;
      74.833+60.202*x1+52.4*x2-16.168*x3-40.298*x4+23.824*x5-17.158*x1^2-6.262*x2^2+8.263*x3^2+8.144*x4^2-11.34*x5^2-10.435*x2*x3+10.234*x3*x4-150;
      57-(49.498+1.785*x1+1.28*x2+1.779*x3+0.483*x4+1.609*x5-0.342*x1^2-0.138*x2^2-0.216*x3^2-0.269*x5^2-0.131*x1*x2-0.1*x2*x3-0.142*x3*x4-0.129*x3*x5);
      4.022-1.849*x1-1.0061*x2+0.234*x3+0.079*x4-1.128*x5+0.708*x1^2+0.34*x2^2+0.601*x5^2-0.368*x1*x5-0.296*x2*x5-0.2];
    ceq=[];
else 
    x1=x(1);x2=x(2);x3=x(3);
    c=[abs(x2/x1-9.5)-6.5;abs(10000*x1^4/(47*x2^3*x3)-1)-0.01;2771*x2^0.86/x1^2.86-450;((x3+1.3)*x1+18.25)/x2-3.74286;250-3.56*10^5*x1/(x2^2*x3);3-x1;30-x2;x2-60;2.5-x1;x1-9.5];
    ceq=[];
end
[kgn,kgn1]=size(c);
if kg==2
    res_gx=c;res_hx=[];%不等式约束gi(x)<=0形式
else
    res_gx=-c;res_hx=[];%用于将不等式约束gi(x)<=0化为gi(x)>=0形式。
end
%%%%%%%%%%%%%%%%%%%%%%%%%%2007.8.12%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    
    
    
    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -