It's not too clear to me what's trying to be accomplished here, but "gear" 
and "N" are optimization variables and can't be used inside conditional 
statements. You can use getValue() to query the value of the variables in 
an optimal solution after calling solve(). If these statements are supposed 
to be constraints in the optimization problem, you'll have to reformulate 
them into standard nonlinear programming form, possibly with the addition 
of integer variables to model logical relationships.

On Friday, September 25, 2015 at 10:22:15 AM UTC-4, NV wrote:
>
> Yes, I have a transmission model to implement. I used the following code. 
> But I need it to run for as long as I have initialized the time variable to.
>
> 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
> 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[1:n]<=2500)
> @defVar(Truck,1<=gear[1:n]<=12)
> @defVar(Truck,i_t[1: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:1:n
>     if(gear[j]==1)
>         if(N[j]>=1500)
>             gear[j+1]= 2
>     else
>         gear[j+1] = 1
>     end
>         elseif(gear[j]==2)
>         if(N[j]>=1501)
>         gear[j+1] = 3
>             elseif(N[j]<=950)
>             gear[j+1]= 1
>     else
>         gear[j+1] = 2
>     end
>         elseif(gear[j]==3)
>         if(N[j]>=1502)
>         gear[j+1] = 4
>             elseif(N[j]<=960)
>         gear[j+1] = 2
>     else
>         gear[j+1] = 3
>     end
>         elseif(gear[j]==4)
>         if(N[j]>=1503)
>         gear[j+1] = 5;
>             elseif(N[j]<=970)
>         gear[j+1] = 3
>     else
>         gear[j+1] = 4
>     end
>         elseif(gear[j]==5)
>         if(N[]>=1504)
>         gear[j+1] = 6;
>             elseif(N[j]<=980)
>         gear[j+1] = 4
>     else
>         gear[j+1] = 5
>     end
>         elseif(gear[j]==6)
>         if(N[j]>=1505)
>         gear[j+1] = 7
>             elseif(N[j]<=990)
>         gear[j+1] = 5
>     else
>         gear[j+1] = 6
>     end
>         elseif(gear[j]==7)
>         if(N[j]>=1497)
>         gear[j+1] = 8
>             elseif(N[j]<=1000)
>         gear[j+1] = 6
>     else
>         gear[j+1] = 7
>     end
>         elseif(gear[j]==8)
>         if(N[j]>=1489)
>         gear[j+1] = 9
>             elseif(N[j]<=1006)
>         gear[j+1] = 7
>     else
>         gear[j+1] = 8
>     end
>         elseif(gear[j]==9)
>         if(N[j]>=1481)
>         gear[j+1] = 10
>             elseif(N[j]<=1012)
>         gear[j+1] = 8
>     else
>         gear[j+1] = 9
>     end
>         elseif(gear[j]==10)
>         if(N[j]>=1473)
>         gear[j+1] = 11
>             elseif(N[j]<=1018)
>         gear[j+1] = 9
>     else
>         gear[j+1] = 10
>     end
>         elseif(gear[j]==11)
>         if(N[j]>=1465)
>         gear[j+1] = 12
>             elseif(N[j]<=1024)
>         gear[j+1] = 10
>     else
>         gear[j+1] = 11
>     end 
>         elseif(gear[j]==12)
>         if(N[j]<=1030)
>         gear[j+1] = 11
>     else
>         gear[j+1] = 12
>     end
> end   
>     i_t[j] = i[gear[j+1]]
> end
>
> To solve for the system dynamics, I am following the example in 
> http://www.juliaopt.org/notebooks/JuMP-Rocket.html . I tried passing gear 
> position(gear), engine rpm(N) and transmission ratio(i_t) as variables and 
> have added the necessary constraints as well. However, on trying to run it, 
> I kept getting an error:
>
>
> The comparison operator == has been deprecated for constructing constraints. 
> Use the macro form @addConstraint instead.
>
>
> LoadError: TypeError: non-boolean 
> (JuMP.GenericRangeConstraint{JuMP.GenericAffExpr{Float64,JuMP.Variable}}) 
> used in boolean context
> while loading In[2], in expression starting on line 30
>
>  in anonymous at no file
>
>
> On Friday, 25 September 2015 08:18:53 UTC-5, Spencer Russell wrote:
>>
>> Welcome to Julia! 
>>
>> To get useful answers you’re going to need to provide quite a bit more 
>> detail on what problems you’re running into. What did you try? What errors 
>> are you getting? Are there specific concepts from the documentation that 
>> you’re having trouble with? 
>>
>> -s 
>>
>> > On Sep 25, 2015, at 1:18 AM, Narayani Vedam <naraya...@gmail.com> 
>> wrote: 
>> > 
>> > Hi, 
>> >    I am new to Julia. I tried implementing a logic that I had in 
>> Simulink - Stateflow using Julia, but ran into trouble. Any heads-up on 
>> this? 
>> > 
>> > Thank you 
>>
>>

Reply via email to