28 lines
664 B
ObjectPascal
28 lines
664 B
ObjectPascal
|
|
uses NumLibABC;
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
|||
|
|
|
|||
|
|
function f(x:array of real):real;
|
|||
|
|
begin
|
|||
|
|
var x1:=x[0];
|
|||
|
|
var x2:=x[1];
|
|||
|
|
var s:=0.0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
if x1+x2>8 then s:=real.MaxValue
|
|||
|
|
else if -2*x1+3*x2>9 then s:=real.MaxValue
|
|||
|
|
else if 2*x1-x2>10 then s:=real.MaxValue
|
|||
|
|
else if x1<0 then s:=real.MaxValue
|
|||
|
|
else if x2<0 then s:=real.MaxValue;
|
|||
|
|
Result:=-4*x1-3*x2+1+s
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
begin
|
|||
|
|
var a:=Arr(0.0,0.0);
|
|||
|
|
var b:=Arr(8.0,8.0);
|
|||
|
|
var y:real;
|
|||
|
|
var oL:=new FMinN(a,f);
|
|||
|
|
oL.MKSearch(a,b,y);
|
|||
|
|
oL.x.Transform(t->real(Round(t)));
|
|||
|
|
Write('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: '); oL.x.Println;
|
|||
|
|
Writeln('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: ',f(oL.x))
|
|||
|
|
end.
|