📄 rand_fgh.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 + -