Hi,
   I am new to Julia and would like to run a set of operations repeatedly 
for a finite set of time. I tried to implement the following code:

using JuMP, Ipopt
Truck = Model(solver=IpoptSolver(print_level=0))
#Initial Values
gear_0 = 1
v_0 = 20
N_0 = 600
#Constants:
i_f = 3.27
eta_f = 0.95
eta_t = 0.95
r_w = 0.52
gear = 1
i = [11.27 9.14 7.17 5.81 4.62 3.75 3.01 2.44 1.91 1.55 1.23 1] 
#Discretization
n = 500
@defVar(Truck,Δt≥0,start = 1/n)
@defNLExpr(t_f,Δt*n)
@defVar(Truck,600<=N[0:n]<=2500)
@defVar(Truck,1<=gear[0:n]<=12)
@defVar(Truck,i_t[0:n])
@addConstraint(Truck,N[0]==N_0)
@addConstraint(Truck,gear[0]==gear_0)
@addConstraint(Truck,i_t[0]==i[1])
@defNLExpr(N[j=0:n],(30*i_t[j]*i_f)/(pi*r_w))
for j in 1:n
    if(gear[j]==1)
        if(N[j]>=1500)
            gear[j]= 2
    else
        gear[j] = 1
    end
        elseif(gear[j]==2)
        if(N[j]>=1501)
        gear[j] = 3
            elseif(N[j]<=950)
            gear[j]= 1
    else
        gear[j] = 2
    end
        elseif(gear[j]==3)
        if(N[j]>=1502)
        gear[j] = 4
            elseif(N[j]<=960)
        gear[j] = 2
    else
        gear[j] = 3
    end
        elseif(gear[j]==4)
        if(N[j]>=1503)
        gear[j] = 5;
            elseif(N[j]<=970)
        gear[j] = 3
    else
        gear[j] = 4
    end
        elseif(gear[j]==5)
        if(N[j]>=1504)
        gear[j] = 6;
            elseif(N[j]<=980)
        gear[j] = 4
    else
        gear[j] = 5
    end
        elseif(gear[j]==6)
        if(N[j]>=1505)
        gear[j] = 7
            elseif(N[j]<=990)
        gear[j] = 5
    else
        gear[j] = 6
    end
        elseif(gear[j]==7)
        if(N[j]>=1497)
        gear[j] = 8
            elseif(N[j]<=1000)
        gear[j] = 6
    else
        gear[j] = 7
    end
        elseif(gear[j]==8)
        if(N[j]>=1489)
        gear[j] = 9
            elseif(N[j]<=1006)
        gear[j] = 7
    else
        gear[j] = 8
    end
        elseif(gear[j]==9)
        if(N[j]>=1481)
        gear[j] = 10
            elseif(N[j]<=1012)
        gear[j] = 8
    else
        gear[j] = 9
    end
        elseif(gear[j]==10)
        if(N[j]>=1473)
        gear[j] = 11
            elseif(N[j]<=1018)
        gear[j] = 9
    else
        gear[j] = 10
    end
        elseif(gear[j]==11)
        if(N[j]>=1465)
        gear[j] = 12
            elseif(N[j]<=1024)
        gear[j] = 10
    else
        gear[j] = 11
    end 
        elseif(gear[j]==12)
        if(N[j]<=1030)
        gear[j] = 11
    else
        gear[j] = 12
    end
end
i_t[j] = i[gear[j]]
end

However, I keep getting the error: 

LoadError: TypeError: non-boolean 
(JuMP.GenericRangeConstraint{JuMP.GenericAffExpr{Float64,JuMP.Variable}}) used 
in boolean context
while loading In[52], in expression starting on line 25

 in anonymous at no file


I am clueless about how I could debug this!


Thank you.

Reply via email to