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

📄 rand_fgh.pas

📁 机械优化设计中的约束随机法
💻 PAS
字号:
unit rand_fgh;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
   arr3 = array[1..55]of real;
type
  TForm3 = class(TForm)

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form3: TForm3;
  Procedure ffx;
  Procedure ggx;

implementation

uses rand_1, rand_2;

{$R *.DFM}

{      应用随机方向法优化方法计算优化问题,用户应首先根据具体问题
  建立其优化的数学模型(①目标函数;②约束函数);
            min  F[x]
            s.t. GX[j]≤0  (j=1,2,...kg)

  再将目标函数、约束函数按DELPHI语言改写成表达式,
        fx := ...;
     gx[1] := ...;
     gx[2] := ...;
      .
      .
     gx[kg] := ...;
 替换下面的procedure ffx段中的目标函数的计算表达式 fx;
 替换下面的procedure ggx段中的目标函数的计算表达式 gx[1]、gx[2]...gx[kg]}


{
// 考题 1 ===========================================================
procedure ffx;  //目标函数
begin
  with form1.hfgd do   begin
    NFX := NFX+1;
    fx:=4.0*x[1]-x[2]*x[2]-12.0;
  end;
end;

procedure ggx;  //约束函数
begin
  with form1.hfgd do   begin
    gx[1]:=x[1]*x[1]+x[2]*x[2]-25.0;
    gx[2]:=-x[1];
    gx[3]:=-x[2];
  end;
end;
{
procedure hhx;
begin
 with form1.hfgd do   begin
    hx[1]:=hx[1];
 end;
end;
}
{
// 考题 2 ===========================================================
procedure ffx;  //目标函数
begin
  with form1.hfgd do   begin
    NFX := NFX+1;
    fx:=60.0-10.0*x[1]-4.0*x[2]+x[1]*x[1]+x[2]*x[2]-x[1]*x[2];
  end;
end;

procedure ggx;  //约束函数
begin
  with form1.hfgd do   begin
    gx[1]:=-x[1];
    gx[2]:=-x[2];
    gx[3]:=x[1]-6.0;
    gx[4]:=x[2]-8.0;
    gx[5]:=x[1]+x[2]-11.0;
  end;
end;

{
procedure hhx;
begin
 with form1.hfgd do   begin
    hx[1]:=hx[1];
 end;
end;
}
{
// 考题 3 ===========================================================
procedure ffx;  //目标函数
begin
  with form1.hfgd do   begin
    fx:=4.0*x[1]-x[2]*x[2]-12.0;
  end;
end;

procedure ggx;  //约束函数
begin
  with form1.hfgd do   begin
    gx[1]:=34.0-10.0*x[1]-10.0*x[2]+x[1]*x[1]+x[2]*x[2];
    gx[2]:=-x[1];
    gx[3]:=-x[2];
  end;
end;

procedure hhx;
begin
 with form1.hfgd do   begin
    hx[1]:=x[1]*x[1]+x[2]*x[2]-25.0;
 end;
end;
}
{
// 考题 4 ===========================================================
procedure ffx;  //目标函数
begin
  with form1.hfgd do   begin
    NFX := NFX+1;
    fx:=x[1]*x[4]*(x[1]+x[2]+x[3])+x[3];
  end;
end;

procedure ggx;  //约束函数
begin
  with form1.hfgd do   begin
    gx[1]:=x[1]*x[1]+x[2]*x[2]+x[3]*x[3]+x[4]*x[4]-40.0;
    gx[2]:=25.0-x[1]*x[2]*x[3]*x[4];
  end;
end;
{
procedure hhx;
begin
 with form1.hfgd do   begin
    hx[1]:=x[1];
 end;
end;
}
{
// 考题 5 ===========================================================
procedure ffx;  //目标函数
begin
  with form1.hfgd do   begin
    NFX := NFX+1;
    fx:=x[1]*x[1]+x[2];
  end;
end;

procedure ggx;  //约束函数
begin
  with form1.hfgd do   begin
    gx[1]:=x[1]*x[1]+x[2]*x[2]-9.0;
    gx[2]:=x[1]+x[2]-1.0;
  end;
end;
{
procedure hhx;
begin
 with form1.hfgd do   begin
    hx[1]:=x[1];
 end;
end;
}
{
// 考题 6 ===========================================================
procedure ffx;  //目标函数
begin
  with form1.hfgd do   begin
    NFX := NFX+1;
    fx:=(x[1]-5.0)*(x[1]-5.0)+4.0*(x[2]-6.0)*(x[2]-6.0);
  end;
end;

procedure ggx;  //约束函数
begin
  with form1.hfgd do   begin
    gx[1]:=64.0-x[1]*x[1]-x[2]*x[2];
    gx[2]:=x[2]-x[1]-10.0;
    gx[3]:=x[1]-10.0;
  end;
end;
{
procedure hhx;
begin
 with form1.hfgd do   begin
    hx[1]:=x[1];
 end;
end;
}
{
// 考题 7 ===========================================================
procedure ffx;  //目标函数
begin
  with form1.hfgd do   begin
    NFX := NFX+1;
    fx:=(x[1]-x[4])*(x[1]-x[4])+(x[2]-x[5])*(x[2]-x[5])+(x[3]-x[6])*(x[3]-x[6]);
  end;
end;

procedure ggx;  //约束函数
begin
  with form1.hfgd do   begin
    gx[1]:=x[1]*x[1]+x[2]*x[2]+x[3]*x[3]-5.0;
    gx[2]:=(x[4]-3.0)*(x[4]-3.0)+x[5]*x[5]-1.0;
    gx[3]:=x[6]-8.0;
    gx[4]:=4.0-x[6];
  end;
end;
{
procedure hhx;
begin
 with form1.hfgd do   begin
    hx[1]:=x[1];
 end;
end;
}
{
// 考题 8 ===========================================================
procedure ffx;  //目标函数
begin
  with form1.hfgd do   begin
    fx:=1000.0-x[1]*x[1]-2.0*x[2]*x[2]-x[3]*x[3]-x[1]*x[2]-x[1]*x[3];
  end;
end;

procedure ggx;  //约束函数
begin
  with form1.hfgd do   begin
    gx[1]:=-x[1];
    gx[2]:=-x[2];
    gx[3]:=-x[3];
  end;
end;

procedure hhx;
begin
 with form1.hfgd do   begin
    HX[1]:=X[1]*X[1]+X[2]*X[2]+X[3]*X[3]-25.0;
    HX[2]:=8.0*X[1]+14.0*X[2]+7.0*X[3]-56.0;
 end;
end;
}


// 考题 9 ===========================================================
procedure ffx;  //目标函数
begin
  with form1.hfgd do   begin
    NFX := NFX+1;
    fx:=100.0*(x[2]-x[1]*x[1])*(x[2]-x[1]*x[1])+90.0*(x[4]-x[3]*x[3])*(x[4]-x[3]*x[3])
       +(1.0-x[3])*(1.0-x[3])+10.0*((x[2]-1.0)*(x[2]-1.0)+(x[4]-1.0)*(x[4]-1.0))
       +19.8*(x[2]-1.0)*(x[4]-1.0);
  end;
end;

procedure ggx;  //约束函数
var
   j : integer;
begin
  with form1.hfgd do   begin
    for j := 1 to 4 do gx[j]:=-10.0-x[j];
    for j := 1 to 4 do gx[4+j]:=x[j]-10.0;
  end;
end;

{
procedure hhx;
begin
 with form1.hfgd do   begin
    HX[1]:=HX[1];
 end;
end;

}



end.






⌨️ 快捷键说明

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