f[x1_, x2_, x3_, x4_] := (((x1^2 + 2 x2^2 + 3 x3^2 + 2 x4^2) - 8)/
242)^2 + ((6 x1*E^(x1/4) + 6 x2*E^(x2/4) + 8 x3*E^(x3/4) +
7 x4*E^(x4/4) - 34.6)/
465)^2 + ((10^(-5)*1000^1.5*(x1 + E^(x1/4)) +
2.3*10^(-5)*1000^1.5*(x2 + E^(x2/4)) +
0.3*10^(-5)*1000^1.5*(x3 + E^(x3/4)) +
2.3*10^(-5)*1000^1.5*(x4 + E^(x4/4)) - 114)/
286)^2 + (((1 - (1 - (1 - 1/E)^x1) (1 - (1 - 1/E)^
x2) (1 - (1 - 1/E)^x3) (1 - (1 - 1/E)^x4)) - 0.04)/0.21)^2
g[x1_, x2_, x3_, x4_] :=
1 <= x1 <= 10 && 1 <= x2 <= 10 && 1 <= x3 <= 10 && 1 <= x4 <= 10 &&
x1 \[Element] Integers && x2 \[Element] Integers &&
x3 \[Element] Integers && x4 \[Element] Integers
h[x1_, x2_, x3_, x4_] :=
Minimize[f[x1, x2, x3, x4], g[x1, x2, x3, x4], {x1, x2, x3, x4}]
t[{x1_, x2_, x3_, x4_}] := (x1^2 + 2 x2^2 + 3 x3^2 + 2 x4^2) <=
250 && (6 x1*E^(x1/4) + 6 x2*E^(x2/4) + 8 x3*E^(x3/4) +
7 x4*E^(x4/4)) <=
500 && (10^(-5)*1000^1.5*(x1 + E^(x1/4)) +
2.3*10^(-5)*1000^1.5*(x2 + E^(x2/4)) +
0.3*10^(-5)*1000^1.5*(x3 + E^(x3/4)) +
2.3*10^(-5)*1000^1.5*(x4 + E^(x4/4))) <=
400 && (1 - (1 - (1 - 1/E)^x1) (1 - (1 - 1/E)^x2) (1 - (1 - 1/E)^
x3) (1 - (1 - 1/E)^x4)) <= 0.25
我的目的是求f[x1,x2,x3,x4]在满足g[x1,x2,x3,x4]和t[x1,x2,x3,x4]下的最小值
我打算的做法是先求出f的一个最小值判断是否满足t,如果满足就输出,不满足就把这个点去掉再求最小值,求指教这个怎么实现?(我不知道能不能不用循环直接算的,但是Minimize的限制语句好像只能是多项式函数)
For[h[x1, x2, x3,
x4], (x1^2 + 2 x2^2 + 3 x3^2 + 2 x4^2) >
250 && (6 x1*E^(x1/4) + 6 x2*E^(x2/4) + 8 x3*E^(x3/4) +
7 x4*E^(x4/4)) >
500 && (10^(-5)*1000^1.5*(x1 + E^(x1/4)) +
2.3*10^(-5)*1000^1.5*(x2 + E^(x2/4)) +
0.3*10^(-5)*1000^1.5*(x3 + E^(x3/4)) +
2.3*10^(-5)*1000^1.5*(x4 + E^(x4/4))) >
400 && (1 - (1 - 1/E)^x1) (1 - (1 - 1/E)^x2) (1 - (1 - 1/E)^
x3) (1 - (1 - 1/E)^x4) > 0.25
, ,
If[t[x1, x2, x3, x4],
Print[x1, x2, x3, x4], {Print[x1, x2, x3, x4],
g[y1, y2, y3, y4] =
Complement[
g[y1, y2, y3, y4], {y1 = x1 && y2 = x2 && y3 = x3 && y4 = x4}]}]]
这个不对
抱歉刚才发布的打错了
t函数是t[{x1_, x2_, x3_, x4_}] := (x1^2 + 2 x2^2 + 3 x3^2 + 2 x4^2) <=
250 && (6 x1*E^(x1/4) + 6 x2*E^(x2/4) + 8 x3*E^(x3/4) +
7 x4*E^(x4/4)) <=
500 && (10^(-5)*1000^1.5*(x1 + E^(x1/4)) +
2.3*10^(-5)*1000^1.5*(x2 + E^(x2/4)) +
0.3*10^(-5)*1000^1.5*(x3 + E^(x3/4)) +
2.3*10^(-5)*1000^1.5*(x4 + E^(x4/4))) <=
400 && (1 - (1 - (1 - 1/E)^x1) (1 - (1 - 1/E)^x2) (1 - (1 - 1/E)^
x3) (1 - (1 - 1/E)^x4)) <= 0.25