Hi,

I'm one of the JuMP developers.

I'm confused by your lines like:

gear[j]==1

gear is a decision variable, so this doesn't make sense as written. What 
were you intending to do?

Thanks,
Iain

On Friday, September 25, 2015 at 9:12:57 AM UTC-4, NV wrote:
>
> 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