[1., 0., -1., 1.5], [0., 1., 1., 15.], [0., 1., -1., 18.]])) DOS = ConSet(DOSA, DOSs, DOSb) POS = ConSet(*mat2ab(array([[1., 0., 1., 0], [1., 0., -1., 1.9], [0., 1., 1., 6.], [0., 1., -1., 25.]]))) # define G (steady-state model) G = array([[-0.0476, -0.0498], [ 0.0111, -0.0604]]) Gi = linalg.inv(G) # calc AOS (from G and AIS) lss = array([[1.322, 16.4048]]) # nominal operating point (used for model generation) AOS = ConSet(*AIS.outconlin(G, AIS.cscent, lss)) mbox = ConSet(fitmaxbox(AOS, 0.2).intersect(POS)) # -- AOS/DOS intersection DOSi = ConSet(AOS.intersect(DOS)) DIS = ConSet(*DOS.outconlin(Gi, lss, AIS.cscent)) # -- Fitted constraints DOSn = fitset(DOSi, 'r', 'a') DISn = ConSet(*DOSn.outconlin(Gi, lss, AIS.cscent)) DISi = ConSet(DIS.intersect(AIS)) print DISi
[0., 1., -1., 82.]])) DOS = ConSet(DOSA, DOSs, DOSb) # define G (steady-state model) # R T10sp G = array([[-0.0575, 0.96], # T1 [ -0.146, 0.518]]) # T8 Gi = linalg.inv(G) # calc AOS (from G and AIS) lss = array([[68., 78.]]) # nominal operating point (used for model generation) AOSA, AOSs, AOSb = AIS.outconlin(G, AIS.cscent, lss) AOS = ConSet(AOSA, AOSs, AOSb) #TODO: check nominal op.point use # Calc intersection of AOS|DOS DOSi = ConSet(*mat2ab(array([[-0.47486499, 0.88005866, -1, 36.55612415], [ 1., 0., -1, 68.], [ 0., -1., -1, -78.]]))) # Calc additional spaces DIS = ConSet(*DOS.outconlin(Gi, lss, AIS.cscent)) DOSn = fitset(DOSi, 'r', 'a') DISn = ConSet(*DOSn.outconlin(Gi, lss, AIS.cscent)) DISi = ConSet(*DOSi.outconlin(Gi, lss, AIS.cscent)) DIS2 = ConSet(AIS.intersect(DIS)) DOS2 = ConSet(*DIS2.outconlin(G, AIS.cscent, lss)) # Calc modified constraints and model for high/low limits modA, mods, modb, modG = con2pscon(DOSi, G, 'o')