Ejemplo n.º 1
0
 def test_margins_2d(self):
     cc = ChanceConstraint([self.U <= 0, min(self.V) >= 5])
     self.U.value = np.array([[1, 2], [3, 4]])
     self.V.value = np.array([[-2, 3], [-1, 2], [0, 1]])
     margins = cc.margins()
     self.assertEqual(len(margins), 2)
     self.assertItemsAlmostEqual(margins[0], self.U.value, places=8)
     self.assertItemsAlmostEqual(margins[1],
                                 5 - np.min(self.V.value),
                                 places=8)
Ejemplo n.º 2
0
    def test_margins(self):
        cc = ChanceConstraint([self.x <= 0])
        self.assertItemsAlmostEqual(cc.margins(), [None])
        self.x.value = [-1, 1]
        margins = cc.margins()
        self.assertEqual(len(margins), 1)
        self.assertItemsAlmostEqual(margins[0], self.x.value, places=8)

        cc.constraints = [self.x >= 0]
        self.assertItemsAlmostEqual(cc.margins()[0], -self.x.value, places=8)

        cc.constraints = [self.x >= 0, self.y <= 0]
        margins = cc.margins()
        self.assertEqual(len(margins), 2)
        self.assertItemsAlmostEqual(margins[0], -self.x.value, places=8)
        self.assertEqual(margins[1], None)
        self.y.value = [-5, 0, 10]
        self.assertItemsAlmostEqual(cc.margins()[1], self.y.value)

        b = np.random.randn(self.A.shape[0])
        cc = ChanceConstraint([self.A * self.x == b])
        self.x.value = [-1, 1]
        margins = cc.margins()
        self.assertItemsAlmostEqual(margins[0],
                                    np.abs(self.A.dot(self.x.value) - b))