Julia 跳转:如何从getvalue(x)获得多个解决方案

Julia 跳转:如何从getvalue(x)获得多个解决方案,julia,julia-jump,Julia,Julia Jump,我正在解决这个多目标问题 f1(x,y)=x f2(x,y)=(2.0-exp(-(y-0.2)/0.004)^2)-0.8*exp(-(y-0.6)/0.4)^2)/x 已定义(:f1)|跳转.寄存器(:f1,2,f1,autodiff=true) isdefined(:f2)|跳转.寄存器(:f2,2,f2,autodiff=true) m=模型(解算器=IpoptSolver(打印级别=0)) @变量(m,0.1我在整数规划中遇到了类似的问题。然而,当我在这里寻找答案时,这里似乎是一个分

我正在解决这个多目标问题

f1(x,y)=x
f2(x,y)=(2.0-exp(-(y-0.2)/0.004)^2)-0.8*exp(-(y-0.6)/0.4)^2)/x
已定义(:f1)|跳转.寄存器(:f1,2,f1,autodiff=true)
isdefined(:f2)|跳转.寄存器(:f2,2,f2,autodiff=true)
m=模型(解算器=IpoptSolver(打印级别=0))

@变量(m,0.1我在整数规划中遇到了类似的问题。然而,当我在这里寻找答案时,这里似乎是一个分享我想法的好地方

在我看来,解决这一问题的方法似乎是首先解决系统,然后添加一个约束,即以前找到的解决方案现在不可行。我的想法是按照以下方式添加:

solve(m)
x_opt = getvalue(x)
y_opt = getvalue(y)
println("GOAL Programming (p=1): F1 = $(f1(x_opt, y_opt)), F2 = $(f2(x_opt, y_opt))")

eps = 1.e-15
@constraint(m, x - x_opt <= eps)
@constraint(m, x - x_opt >= eps)
@constraint(m, y - y_opt <= eps)
@constraint(m, y - y_opt >= eps)
solve(m)
println("GOAL Programming (p=1): F1 = $(f1(x_opt, y_opt)), F2 = $(f2(x_opt, y_opt))")
solve(m)
x_opt=getvalue(x)
y_opt=getvalue(y)
println(“目标规划(p=1):F1=$(F1(x_opt,y_opt)),F2=$(F2(x_opt,y_opt)))
每股收益=1.e-15
@约束(m,x-x_opt=eps)
@约束(m,y-y_opt=eps)
求解(m)
println(“目标规划(p=1):F1=$(F1(x_opt,y_opt)),F2=$(F2(x_opt,y_opt)))

我在整数规划的循环中也做了同样的工作,即在求解(m)=:最优时将最后一行包装在
中,以找到更多选项。

不是
跳转
用户,但不是
alpha1
(和
alpha2
)上的约束太严格了?也许其中一个缺少负号?你是对的。不管怎样,仍然得到一个解首先,你需要一个返回多个解的解算器。与跳跃相关的非线性解算器目前都没有返回多个解。2020年你仍然是这样做的吗?老实说,我对自己的建议感到惊讶,
x-x_opt
怎么可能既大于又小于eps?我想我在这里对自己的代码解释得很糟糕。这个想法应该仍然有效。这将取决于后端(接口)是否有更智能的方式在2020年实现。
solve(m)
x_opt = getvalue(x)
y_opt = getvalue(y)
println("GOAL Programming (p=1): F1 = $(f1(x_opt, y_opt)), F2 = $(f2(x_opt, y_opt))")

eps = 1.e-15
@constraint(m, x - x_opt <= eps)
@constraint(m, x - x_opt >= eps)
@constraint(m, y - y_opt <= eps)
@constraint(m, y - y_opt >= eps)
solve(m)
println("GOAL Programming (p=1): F1 = $(f1(x_opt, y_opt)), F2 = $(f2(x_opt, y_opt))")