5

argmax(x,y,z) -1/2(20x^2+32xy +16y^2)+2x+2y を見つけたいとします。

x>=0、y>=0、z>=0、および -x-y+z =0 が条件となります。

偏導関数が 0 に設定されていることはわかっています。

-20x-16y+2=0 および -16x-16y+2 =0

したがって、x= 0、y =1/8、z=1/8 となる可能性があります。

Swi-prologでこれを行うにはどうすればよいですか? 線形解法用のシンプレックス ライブラリがあるようですが、これは 2 次問題ですが、偏導関数はそうではありません。(私は少し混乱しています!)

これは私が持っているものです:

:- use_module(library(simplex)).

my_constraints(S):-
 gen_state(S0),
 constraint([-20*x, -16*y] = 0, S0, S1),
 constraint([-16*x,-16*y] = 0, S1,S2),
 constraint([x] >= 0,S2,S3),
 constraint([y] >= 0,S3,S4),
 constraint([z] >= 0,S4,S5),
 constraint([-x-y+z] = 0,S5,S).

?- my_constraints(S), variable_value(S,x,Val1),variable_value(S,y,Val2).
false.
4

1 に答える 1