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 <[email protected] 
> <javascript:>> 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