AMPL 转 JuMP (Julia)

AMPL to JuMP (Julia)

我需要将 AMPL 代码转换为 JuMP。

param f;

set R := 1..N;
set R_OK := 1..M;
set V := 1..N;

param tMax;
set T := 1..tMax;

var primary{R,V}, binary;
var SendPrepReq{T,R,V}, binary;

"param f" 将是一个整数。我知道该怎么做的变量。但是布景呢?它在 JuMP 中的等价物是什么?

最相关的文档之一可能是Quickstart guide获取 JuMP 工作原理的基础知识。

对于你的例子,你可以直接声明你的参数:

using JuMP

# declare some parameters
f = 3
N = 10
M = 5
R = 1:N
V = 1:N
R_OK = 1:M

Tmax = 33
T = 1:Tmax

# create the model
m = Model()
# add variables
@variable(m, primary[R,V], Bin)
@variable(m, SendPrepReq[T,R,V], Bin)

编辑

人们可能希望像在 AMLP 中一样独立于模型声明提供参数。在 Julia 中最直接的方法是在一个函数中构建和求解模型,该函数采用参数中的问题参数:

function build_model(f, N, M, Tmax)
    R = 1:N
    V = 1:N
    R_OK = 1:M
    T = 1:Tmax

    # create the model
    m = Model()
    # add variables
    @variable(m, primary[R,V], Bin)
    @variable(m, SendPrepReq[T,R,V], Bin)

    return (m, primary, SendPrepReq)
end