def test_XML(self): self.message("JModelica XML parsing") ocp = SymbolicOCP() ocp.parseFMI('data/cstr.xml') self.assertEqual(ocp.t0,0) self.assertEqual(ocp.tf,150) #self.assertFalse(ocp.t0_free) #self.assertFalse(ocp.tf_free) self.assertTrue(ocp.lterm.size()==0) self.assertTrue(ocp.mterm.size()==1) m = ocp.mterm self.assertTrue(isinstance(m,SXMatrix)) self.assertTrue(isinstance(ocp.t,SXMatrix)) self.assertEquals(str(m),'cost.atTime(150)') print dir(ocp) self.assertEquals(ocp.ode.size(),3) self.assertEquals(len(ocp.x),3) # there are three states c = ocp.variable("cstr.c") T = ocp.variable("cstr.T") cost = ocp.variable("cost") self.assertTrue(isinstance(c,Variable)) self.assertEquals(c.getName(),"cstr.c") self.assertEquals(T.getName(),"cstr.T") self.assertEquals(cost.getName(),"cost") self.assertEquals(c.getNominal(),1000) #print c.atTime(0) c = c.var() T = T.var() cost = cost.var() u = ocp.variable("u").var() self.assertEquals(ocp.path.size(),3) #self.assertEquals(len(ocp.cfcn_lb),3) #self.assertEquals(len(ocp.cfcn_ub),3) #self.assertTrue(ocp.cfcn[0].isEqual(T)) #self.assertTrue(ocp.cfcn[1].isEqual(u)) #self.assertTrue(ocp.cfcn[2].isEqual(u)) #self.assertTrue(ocp.cfcn_lb[0].isMinusInf()) #self.assertEquals(ocp.cfcn_lb[1].getValue(),230) #self.assertTrue(ocp.cfcn_lb[2].isMinusInf()) #self.assertEquals(ocp.cfcn_ub[0].getValue(),350) #self.assertTrue(ocp.cfcn_ub[1].isInf()) #self.assertEquals(ocp.cfcn_ub[2].getValue(),370) print ocp.initial print c,T,cost #print c.atTime(0) f=SXFunction([vertcat([c,T,cost])],[ocp.initial]) f.init() return f.evaluate() self.checkarray(f.output(),matrix([-956.271065,-250.051971,0]).T,"initeq") mystates = []
def test_XML(self): self.message("JModelica XML parsing") ocp = SymbolicOCP() ocp.parseFMI('data/cstr.xml') self.assertEqual(ocp.t0, 0) self.assertEqual(ocp.tf, 150) #self.assertFalse(ocp.t0_free) #self.assertFalse(ocp.tf_free) self.assertTrue(ocp.lterm.size() == 0) self.assertTrue(ocp.mterm.size() == 1) m = ocp.mterm self.assertTrue(isinstance(m, SXMatrix)) self.assertTrue(isinstance(ocp.t, SXMatrix)) self.assertEquals(str(m), 'cost.atTime(150)') print dir(ocp) self.assertEquals(ocp.ode.size(), 3) self.assertEquals(len(ocp.x), 3) # there are three states c = ocp.variable("cstr.c") T = ocp.variable("cstr.T") cost = ocp.variable("cost") self.assertTrue(isinstance(c, Variable)) self.assertEquals(c.getName(), "cstr.c") self.assertEquals(T.getName(), "cstr.T") self.assertEquals(cost.getName(), "cost") self.assertEquals(c.getNominal(), 1000) #print c.atTime(0) c = c.var() T = T.var() cost = cost.var() u = ocp.variable("u").var() self.assertEquals(ocp.path.size(), 3) #self.assertEquals(len(ocp.cfcn_lb),3) #self.assertEquals(len(ocp.cfcn_ub),3) #self.assertTrue(ocp.cfcn[0].isEqual(T)) #self.assertTrue(ocp.cfcn[1].isEqual(u)) #self.assertTrue(ocp.cfcn[2].isEqual(u)) #self.assertTrue(ocp.cfcn_lb[0].isMinusInf()) #self.assertEquals(ocp.cfcn_lb[1].getValue(),230) #self.assertTrue(ocp.cfcn_lb[2].isMinusInf()) #self.assertEquals(ocp.cfcn_ub[0].getValue(),350) #self.assertTrue(ocp.cfcn_ub[1].isInf()) #self.assertEquals(ocp.cfcn_ub[2].getValue(),370) print ocp.initial print c, T, cost #print c.atTime(0) f = SXFunction([vertcat([c, T, cost])], [ocp.initial]) f.init() return f.evaluate() self.checkarray(f.output(), matrix([-956.271065, -250.051971, 0]).T, "initeq") mystates = []
def test_XML(self): self.message("JModelica XML parsing") ocp = SymbolicOCP() ocp.parseFMI('data/cstr.xml') # Separate differential and algebraic variables ocp.split_dae() self.assertEqual(ocp.t0,0) self.assertEqual(ocp.tf,150) #self.assertFalse(ocp.t0_free) #self.assertFalse(ocp.tf_free) self.assertTrue(ocp.lterm.nnz()==0) self.assertTrue(ocp.mterm.nnz()==1) m = ocp.mterm self.assertTrue(isinstance(m,SX)) self.assertTrue(isinstance(ocp.t,SX)) self.assertEquals(str(m),'cost') print dir(ocp) self.assertEquals(ocp.dae.nnz(),3) print type(ocp.s) self.assertEquals(ocp.s.nnz(),3) # there are three states c = ocp("cstr.c") T = ocp("cstr.T") cost = ocp("cost") self.assertTrue(isinstance(c,SX)) self.assertEquals(c.getName(),"cstr.c") self.assertEquals(T.getName(),"cstr.T") self.assertEquals(cost.getName(),"cost") self.assertEquals(ocp.nominal("cstr.c"),1000) u = ocp("u") #self.assertEquals(ocp.path.nnz(),3) #self.assertEquals(len(ocp.cfcn_lb),3) #self.assertEquals(len(ocp.cfcn_ub),3) #self.assertTrue(ocp.cfcn[0].isEqual(T)) #self.assertTrue(ocp.cfcn[1].isEqual(u)) #self.assertTrue(ocp.cfcn[2].isEqual(u)) #self.assertTrue(ocp.cfcn_lb[0].isMinusInf()) #self.assertEquals(ocp.cfcn_lb[1].getValue(),230) #self.assertTrue(ocp.cfcn_lb[2].isMinusInf()) #self.assertEquals(ocp.cfcn_ub[0].getValue(),350) #self.assertTrue(ocp.cfcn_ub[1].isInf()) #self.assertEquals(ocp.cfcn_ub[2].getValue(),370) print ocp.init print c,T,cost #print c.atTime(0) f=SXFunction([vertcat([c,T,cost])],[ocp.init]) f.init() return f.evaluate() self.checkarray(f.getOutput(),matrix([-956.271065,-250.051971,0]).T,"initeq") mystates = []
def test_XML(self): self.message("JModelica XML parsing") ivp = DaeBuilder() ivp.parseFMI('data/cstr.xml') # Separate differential and algebraic variables ivp.split_dae() self.assertTrue(len(ivp.q)==0) self.assertTrue(len(ivp.y)==1) m = vertcat(ivp.ydef) self.assertTrue(isinstance(m,MX)) self.assertEquals(str(m),'cost') print dir(ivp) self.assertEquals(len(ivp.dae),3) print type(ivp.s) self.assertEquals(len(ivp.s),3) # there are three states c = ivp("cstr.c") T = ivp("cstr.T") cost = ivp("cost") self.assertTrue(isinstance(c,MX)) self.assertEquals(c.getName(),"cstr.c") self.assertEquals(T.getName(),"cstr.T") self.assertEquals(cost.getName(),"cost") self.assertEquals(ivp.nominal("cstr.c"),1000) u = ivp("u") #self.assertEquals(ivp.path.nnz(),3) #self.assertEquals(len(ivp.cfcn_lb),3) #self.assertEquals(len(ivp.cfcn_ub),3) #self.assertTrue(ivp.cfcn[0].isEqual(T)) #self.assertTrue(ivp.cfcn[1].isEqual(u)) #self.assertTrue(ivp.cfcn[2].isEqual(u)) #self.assertTrue(ivp.cfcn_lb[0].isMinusInf()) #self.assertEquals(ivp.cfcn_lb[1].getValue(),230) #self.assertTrue(ivp.cfcn_lb[2].isMinusInf()) #self.assertEquals(ivp.cfcn_ub[0].getValue(),350) #self.assertTrue(ivp.cfcn_ub[1].isInf()) #self.assertEquals(ivp.cfcn_ub[2].getValue(),370) print ivp.init print c,T,cost #print c.atTime(0) f=MXFunction('f', [vertcat([c,T,cost])],[vertcat(ivp.init)]) return f.evaluate() self.checkarray(f.getOutput(),matrix([-956.271065,-250.051971,0]).T,"initeq") mystates = []
def test_XML(self): self.message("JModelica XML parsing") ivp = DaeBuilder() ivp.parseFMI('data/cstr.xml') # Separate differential and algebraic variables ivp.split_dae() self.assertTrue(len(ivp.q) == 0) self.assertTrue(len(ivp.y) == 1) m = vertcat(ivp.ydef) self.assertTrue(isinstance(m, MX)) self.assertEquals(str(m), 'cost') print dir(ivp) self.assertEquals(len(ivp.dae), 3) print type(ivp.s) self.assertEquals(len(ivp.s), 3) # there are three states c = ivp("cstr.c") T = ivp("cstr.T") cost = ivp("cost") self.assertTrue(isinstance(c, MX)) self.assertEquals(c.getName(), "cstr.c") self.assertEquals(T.getName(), "cstr.T") self.assertEquals(cost.getName(), "cost") self.assertEquals(ivp.nominal("cstr.c"), 1000) u = ivp("u") #self.assertEquals(ivp.path.nnz(),3) #self.assertEquals(len(ivp.cfcn_lb),3) #self.assertEquals(len(ivp.cfcn_ub),3) #self.assertTrue(ivp.cfcn[0].isEqual(T)) #self.assertTrue(ivp.cfcn[1].isEqual(u)) #self.assertTrue(ivp.cfcn[2].isEqual(u)) #self.assertTrue(ivp.cfcn_lb[0].isMinusInf()) #self.assertEquals(ivp.cfcn_lb[1].getValue(),230) #self.assertTrue(ivp.cfcn_lb[2].isMinusInf()) #self.assertEquals(ivp.cfcn_ub[0].getValue(),350) #self.assertTrue(ivp.cfcn_ub[1].isInf()) #self.assertEquals(ivp.cfcn_ub[2].getValue(),370) print ivp.init print c, T, cost #print c.atTime(0) f = MXFunction('f', [vertcat([c, T, cost])], [vertcat(ivp.init)]) return f.evaluate() self.checkarray(f.getOutput(), matrix([-956.271065, -250.051971, 0]).T, "initeq") mystates = []