Changeset 17803 for stable/HeuristicLab.Tests
- Timestamp:
- 12/23/20 17:02:12 (3 years ago)
- Location:
- stable
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
stable
- Property svn:mergeinfo changed
/trunk merged: 17579-17580,17583-17584,17754
- Property svn:mergeinfo changed
-
stable/HeuristicLab.Tests
- Property svn:mergeinfo changed
/trunk/HeuristicLab.Tests merged: 17584,17754
- Property svn:mergeinfo changed
-
stable/HeuristicLab.Tests/HeuristicLab.Problems.DataAnalysis-3.4/IntervalTest.cs
r17495 r17803 1 1 using System; 2 using System.Collections.Generic; 2 3 using Microsoft.VisualStudio.TestTools.UnitTesting; 3 4 … … 141 142 [TestProperty("Time", "short")] 142 143 public void SquarerootIntervalTest() { 143 Assert.AreEqual<Interval>(new Interval( 1, 2), Interval.SquareRoot(new Interval(1, 4)));144 Assert.AreEqual<Interval>(new Interval(-2, 2), Interval.SquareRoot(new Interval(1, 4))); 144 145 Assert.AreEqual<Interval>(new Interval(double.NaN, double.NaN), Interval.SquareRoot(new Interval(-4, -1))); 145 146 } … … 192 193 193 194 //Second interval goes over zero 194 Assert.AreEqual(new Interval(aPos.LowerBound/Math.Sqrt(17), aPos.UpperBound), Interval.AnalyticalQuotient(aPos, bZero)); 195 Assert.AreEqual(new Interval(aZero.LowerBound, aZero.UpperBound), Interval.AnalyticalQuotient(aZero, bZero)); 196 Assert.AreEqual(new Interval(aNeg.LowerBound, aNeg.UpperBound/Math.Sqrt(17)), Interval.AnalyticalQuotient(aNeg, bZero)); 197 //Second interval is positive 198 Assert.AreEqual(new Interval(aPos.LowerBound/Math.Sqrt(17), aPos.UpperBound/Math.Sqrt(5)), Interval.AnalyticalQuotient(aPos, bPos)); 199 Assert.AreEqual(new Interval(aZero.LowerBound/Math.Sqrt(5), aZero.UpperBound/Math.Sqrt(5)), Interval.AnalyticalQuotient(aZero, bPos)); 200 Assert.AreEqual(new Interval(aNeg.LowerBound/Math.Sqrt(5), aNeg.UpperBound/Math.Sqrt(17)), Interval.AnalyticalQuotient(aNeg, bPos)); 201 //Second interval is negative 202 Assert.AreEqual(new Interval(aPos.LowerBound/Math.Sqrt(17), aPos.UpperBound/Math.Sqrt(5)), Interval.AnalyticalQuotient(aPos, bNeg)); 203 Assert.AreEqual(new Interval(aZero.LowerBound/Math.Sqrt(5), aZero.UpperBound/Math.Sqrt(5)), Interval.AnalyticalQuotient(aZero, bNeg)); 204 Assert.AreEqual(new Interval(aNeg.LowerBound/Math.Sqrt(5), aNeg.UpperBound/Math.Sqrt(17)), Interval.AnalyticalQuotient(aNeg, bNeg)); 195 //Assert.AreEqual(new Interval(aPos.LowerBound/Math.Sqrt(17), aPos.UpperBound), Interval.AnalyticalQuotient(aPos, bZero)); 196 //Assert.AreEqual(new Interval(aZero.LowerBound, aZero.UpperBound), Interval.AnalyticalQuotient(aZero, bZero)); 197 //Assert.AreEqual(new Interval(aNeg.LowerBound, aNeg.UpperBound/Math.Sqrt(17)), Interval.AnalyticalQuotient(aNeg, bZero)); 198 ////Second interval is positive 199 //Assert.AreEqual(new Interval(aPos.LowerBound/Math.Sqrt(17), aPos.UpperBound/Math.Sqrt(5)), Interval.AnalyticalQuotient(aPos, bPos)); 200 //Assert.AreEqual(new Interval(aZero.LowerBound/Math.Sqrt(5), aZero.UpperBound/Math.Sqrt(5)), Interval.AnalyticalQuotient(aZero, bPos)); 201 //Assert.AreEqual(new Interval(aNeg.LowerBound/Math.Sqrt(5), aNeg.UpperBound/Math.Sqrt(17)), Interval.AnalyticalQuotient(aNeg, bPos)); 202 ////Second interval is negative 203 //Assert.AreEqual(new Interval(aPos.LowerBound/Math.Sqrt(17), aPos.UpperBound/Math.Sqrt(5)), Interval.AnalyticalQuotient(aPos, bNeg)); 204 //Assert.AreEqual(new Interval(aZero.LowerBound/Math.Sqrt(5), aZero.UpperBound/Math.Sqrt(5)), Interval.AnalyticalQuotient(aZero, bNeg)); 205 //Assert.AreEqual(new Interval(aNeg.LowerBound/Math.Sqrt(5), aNeg.UpperBound/Math.Sqrt(17)), Interval.AnalyticalQuotient(aNeg, bNeg)); 206 Assert.AreEqual(new Interval(double.NegativeInfinity, double.PositiveInfinity), Interval.AnalyticalQuotient(aPos, bZero)); 207 Assert.AreEqual(new Interval(double.NegativeInfinity, double.PositiveInfinity), Interval.AnalyticalQuotient(aPos, bPos)); 208 Assert.AreEqual(new Interval(double.NegativeInfinity, double.PositiveInfinity), Interval.AnalyticalQuotient(aZero, bNeg)); 205 209 } 206 210 … … 247 251 Assert.AreEqual(0, zeroInterval.LowerBound); 248 252 Assert.AreEqual(0, zeroInterval.UpperBound); 249 250 } 253 } 254 255 [TestMethod] 256 [TestCategory("Problems.DataAnalysis")] 257 [TestProperty("Time", "short")] 258 public void ContaintsTest() { 259 var negativeInterval = new Interval(-10, -5); 260 var positiveInterval = new Interval(5, 10); 261 var overZeroInterval = new Interval(-5, 5); 262 263 //Tests for negative intervals 264 Assert.AreEqual(true, negativeInterval.Contains(new Interval(-9, -7))); 265 Assert.AreEqual(false, negativeInterval.Contains(new Interval(-11, -3))); 266 Assert.AreEqual(false, negativeInterval.Contains(positiveInterval)); 267 Assert.AreEqual(false, negativeInterval.Contains(overZeroInterval)); 268 Assert.AreEqual(true, negativeInterval.Contains(-8)); 269 Assert.AreEqual(false, negativeInterval.Contains(-12)); 270 Assert.AreEqual(false, negativeInterval.Contains(0)); 271 //Testes for positive intervals 272 Assert.AreEqual(true, positiveInterval.Contains(new Interval(6, 10))); 273 Assert.AreEqual(false, positiveInterval.Contains(new Interval(6, 12))); 274 Assert.AreEqual(false, positiveInterval.Contains(negativeInterval)); 275 Assert.AreEqual(false, positiveInterval.Contains(overZeroInterval)); 276 Assert.AreEqual(true, positiveInterval.Contains(7)); 277 Assert.AreEqual(false, positiveInterval.Contains(11)); 278 Assert.AreEqual(false, positiveInterval.Contains(0)); 279 //Tests for over zero intervals 280 Assert.AreEqual(true, overZeroInterval.Contains(new Interval(-3, 3))); 281 Assert.AreEqual(true, overZeroInterval.Contains(new Interval(-4, -1))); 282 Assert.AreEqual(true, overZeroInterval.Contains(new Interval(1, 5))); 283 Assert.AreEqual(false, overZeroInterval.Contains(new Interval(-6, 0))); 284 Assert.AreEqual(false, overZeroInterval.Contains(new Interval(0, 6))); 285 Assert.AreEqual(false, overZeroInterval.Contains(new Interval(-7, 7))); 286 Assert.AreEqual(true, overZeroInterval.Contains(-3)); 287 Assert.AreEqual(true, overZeroInterval.Contains(0)); 288 Assert.AreEqual(true, overZeroInterval.Contains(3)); 289 Assert.AreEqual(false, overZeroInterval.Contains(12)); 290 Assert.AreEqual(false, overZeroInterval.Contains(-7)); 291 } 292 293 [TestMethod] 294 [TestCategory("Problems.DataAnalysis")] 295 [TestProperty("Time", "short")] 296 public void GetIntervalTest() { 297 var values = new List<double>() { -2.5, -9, 2, 7, 0 ,12, 12.4, 12.4, 9.29, 1002, -29.9}; 298 var valuesNan = new List<double>() { double.NaN, 2, 4, 19, -2, -12.2}; 299 var valuesInf = new List<double>() {double.NegativeInfinity, double.PositiveInfinity, 12, 2, -2, -12.2}; 300 301 var valuesInterval = new Interval(-29.9, 1002); 302 var valuesNanInterval = new Interval(double.NaN, double.NaN); 303 var valuesInfInterval = new Interval(double.NegativeInfinity, double.PositiveInfinity); 304 305 306 Assert.AreEqual(valuesInterval, Interval.GetInterval(values)); 307 Assert.AreEqual(valuesNanInterval, Interval.GetInterval(valuesNan)); 308 Assert.AreEqual(valuesInfInterval, Interval.GetInterval(valuesInf)); 309 } 310 311 [TestMethod] 312 [TestCategory("Problems.DataAnalysis")] 313 [TestProperty("Time", "short")] 314 public void GeometricTest() { 315 Assert.AreEqual(new Interval(-1, -0.936456687290796), Interval.Cosine(new Interval(3, 3.5))); 316 Assert.AreEqual(new Interval(-1, -0.936456687290796), Interval.Cosine(new Interval(-3.5, -3))); 317 Assert.AreEqual(new Interval(-1, 1), Interval.Cosine(new Interval(-3.5, 3))); 318 Assert.AreEqual(new Interval(-0.839071529076452, 0.843853958732493), Interval.Cosine(new Interval(10, 12))); 319 Assert.AreEqual(new Interval(0.136737218207833, 0.907446781450197), Interval.Cosine(new Interval(13, 14))); 320 Assert.AreEqual(new Interval(-0.839071529076452, 1), Interval.Cosine(new Interval(10, 14))); 321 Assert.AreEqual(new Interval(-1, 0.136737218207833), Interval.Cosine(new Interval(14, 16))); 322 Assert.AreEqual(new Interval(-0.839071529076452, 0.004425697988051), Interval.Cosine(new Interval(-11, -10))); 323 Assert.AreEqual(new Interval(0.136737218207833, 0.907446781450197), Interval.Cosine(new Interval(-14, -13))); 324 Assert.AreEqual(new Interval(-1, 0.136737218207833), Interval.Cosine(new Interval(-16, -14))); 325 Assert.AreEqual(new Interval(0.101585703696621, 1), Interval.Cosine(new Interval(-102, -100))); 326 Assert.AreEqual(new Interval(-1, 1), Interval.Cosine(new Interval(4.6e15, 4.7e15))); 327 Assert.AreEqual(new Interval(0.87758256189037265, 0.87758256189037276), Interval.Cosine(new Interval(0.5, 0.5))); 328 Assert.AreEqual(new Interval(-0.09904103659872825, 0.8775825618903728), Interval.Cosine(new Interval(0.5, 1.67))); 329 Assert.AreEqual(new Interval(-1.0, 0.77556587851025016), Interval.Cosine(new Interval(2.1, 5.6))); 330 Assert.AreEqual(new Interval(-1.0, 1.0), Interval.Cosine(new Interval(0.5, 8.5))); 331 Assert.AreEqual(new Interval(-1.0, -0.09904103659872801), Interval.Cosine(new Interval(1.67, 3.2))); 332 333 334 Assert.AreEqual(new Interval(double.NegativeInfinity, double.PositiveInfinity), Interval.Tangens(new Interval(double.NegativeInfinity, double.PositiveInfinity))); 335 Assert.AreEqual(new Interval(0, 1.55740772465490223051), Interval.Tangens(new Interval(0, 1))); 336 Assert.AreEqual(new Interval(-1.55740772465490223051, 0), Interval.Tangens(new Interval(-1, 0))); 337 Assert.AreEqual(new Interval(double.NegativeInfinity, double.PositiveInfinity), Interval.Tangens(new Interval(-2, -1))); 338 Assert.AreEqual(new Interval(double.NegativeInfinity, double.PositiveInfinity), Interval.Tangens(new Interval(202, 203))); 339 Assert.AreEqual(new Interval(0.54630248984379048, 0.5463024898437906), Interval.Tangens(new Interval(0.5, 0.5))); 340 Assert.AreEqual(new Interval(double.NegativeInfinity, double.PositiveInfinity), Interval.Tangens(new Interval(0.5, 341 1.67))); 342 //Assert.AreEqual(new Interval(-10.047182299210307, 0.5847385445957865), Interval.Tangens(new Interval(1.67, 3.2))); 343 Assert.AreEqual(new Interval(double.NegativeInfinity, double.PositiveInfinity), Interval.Tangens(new Interval( 344 6.638314112824137, 8.38263151220128))); 345 346 347 348 Assert.AreEqual(new Interval(0.47942553860420295, 0.47942553860420301), Interval.Sine(new Interval(0.5, 0.5))); 349 Assert.AreEqual(new Interval(4.7942553860420295e-01, 1.0), Interval.Sine(new Interval(0.5, 1.67))); 350 Assert.AreEqual(new Interval(-5.8374143427580093e-02, 9.9508334981018021e-01), Interval.Sine(new Interval(1.67, 351 3.2))); 352 Assert.AreEqual(new Interval(-1.0, 0.863209366648874), Interval.Sine(new Interval(2.1, 5.6))); 353 Assert.AreEqual(new Interval(-1.0, 1.0), Interval.Sine(new Interval(0.5, 8.5))); 354 Assert.AreEqual(new Interval(-1.0, 0.9775301176650971), Interval.Sine(new Interval(-4.5, 0.1))); 355 Assert.AreEqual(new Interval(-1.0, 1.0), Interval.Sine(new Interval(1.3, 6.3))); 356 } 357 358 [TestMethod] 359 [TestCategory("Problems.DataAnalysis")] 360 [TestProperty("Time", "short")] 361 public void EqualsTest() { 362 var interval1 = new Interval(0, 12); 363 var interval2 = new Interval(-12, 8); 364 var interval3 = new Interval(double.NegativeInfinity, 0); 365 366 Assert.AreEqual(true, interval1.Equals(new Interval(0, 12))); 367 Assert.AreEqual(false, interval1.Equals(interval2)); 368 Assert.AreEqual(true, interval3 == new Interval(double.NegativeInfinity, 0)); 369 Assert.AreEqual(true, interval1 != interval2); 370 Assert.AreEqual(false, interval2 == interval3); 371 Assert.AreEqual(false, interval1 != new Interval(0, 12)); 372 } 373 //[TestMethod] 374 //[TestCategory("Problems.DataAnalysis")] 375 //[TestProperty("Time", "short")] 376 //public void RootTest() { 377 // var posInterval = new Interval(3, 5); 378 // var negInterval = new Interval(-6, -2); 379 // var posIntervalConst = new Interval(5, 5); 380 // var negIntervalConst = new Interval(-3, -3); 381 // var zeroIntervalConst = new Interval(0, 0); 382 // var zeroPosInterval = new Interval(0, 2); 383 // var zeroNegInterval = new Interval(-2, 0); 384 385 // var posRoot = new Interval(4, 4); 386 // var negRoot = new Interval(-4, -4); 387 // var zeroRoot = new Interval(0, 0); 388 // var oneRoot = new Interval(1, 1); 389 390 // Assert.AreEqual(Interval.Root(posInterval, posRoot), new Interval(Math.Pow(3, (1.0/4)), Math.Pow(5, (1.0/4)))); 391 // Assert.AreEqual(Interval.Root(posInterval, negRoot), new Interval(Math.Pow(5, -(1.0/4)), Math.Pow(3, -(1.0/4)))); 392 // Assert.AreEqual(Interval.Root(posInterval, zeroRoot), new Interval(double.NaN, double.NaN)); 393 // Assert.AreEqual(Interval.Root(posInterval, oneRoot), new Interval(3, 5)); 394 395 // Assert.AreEqual(Interval.Root(negInterval, posRoot), new Interval(Math.Pow(-6, (1.0 / 4)), Math.Pow(-2, (1.0 / 4)))); 396 // Assert.AreEqual(Interval.Root(negInterval, negRoot), new Interval(Math.Pow(-2, -(1.0 / 4)), Math.Pow(-6, -(1.0 / 4)))); 397 // Assert.AreEqual(Interval.Root(negInterval, zeroRoot), new Interval(double.NaN, double.NaN)); 398 // Assert.AreEqual(Interval.Root(negInterval, oneRoot), new Interval(-6, -2)); 399 400 // Assert.AreEqual(Interval.Root(posIntervalConst, posRoot), new Interval(Math.Pow(5, (1.0 / 4)), Math.Pow(5, (1.0 / 4)))); 401 // Assert.AreEqual(Interval.Root(posIntervalConst, negRoot), new Interval(Math.Pow(5, -(1.0 / 4)), Math.Pow(5, -(1.0 / 4)))); 402 // Assert.AreEqual(Interval.Root(posIntervalConst, zeroRoot), new Interval(double.NaN, double.NaN)); 403 // Assert.AreEqual(Interval.Root(posIntervalConst, oneRoot), new Interval(5, 5)); 404 405 // Assert.AreEqual(Interval.Root(negIntervalConst, posRoot), new Interval(Math.Pow(-3, (1.0 / 4)), Math.Pow(-3, (1.0 / 4)))); 406 // Assert.AreEqual(Interval.Root(negIntervalConst, negRoot), new Interval(Math.Pow(-3, -(1.0 / 4)), Math.Pow(-3, -(1.0 / 4)))); 407 // Assert.AreEqual(Interval.Root(negIntervalConst, zeroRoot), new Interval(double.NaN, double.NaN)); 408 // Assert.AreEqual(Interval.Root(negIntervalConst, oneRoot), new Interval(-3, -3)); 409 410 // Assert.AreEqual(Interval.Root(zeroIntervalConst, posRoot), new Interval(0, 0)); 411 // //Compley Infinity https://www.wolframalpha.com/input/?i=root%28-4%2C+0%29 412 // Assert.AreEqual(Interval.Root(zeroIntervalConst, negRoot), new Interval(double.PositiveInfinity, double.PositiveInfinity)); 413 // Assert.AreEqual(Interval.Root(zeroIntervalConst, zeroRoot), new Interval(0, 0)); 414 // Assert.AreEqual(Interval.Root(zeroIntervalConst, oneRoot), new Interval(0, 0)); 415 416 // Assert.AreEqual(Interval.Root(zeroPosInterval, posRoot), new Interval(0, Math.Pow(2, (1.0 / 4)))); 417 // //Check for complex infinity 418 // Assert.AreEqual(Interval.Root(zeroPosInterval, negRoot), new Interval(Math.Pow(2, -(1.0 / 4)), double.PositiveInfinity)); 419 // Assert.AreEqual(Interval.Root(zeroPosInterval, zeroRoot), new Interval(0, 0)); 420 // Assert.AreEqual(Interval.Root(zeroPosInterval, oneRoot), new Interval(0, 2)); 421 422 // Assert.AreEqual(Interval.Root(zeroNegInterval, posRoot), new Interval(Math.Pow(-2, (1.0 / 4)),0)); 423 // //Check for complex infinity 424 // Assert.AreEqual(Interval.Root(zeroNegInterval, negRoot), new Interval(Math.Pow(-2, -(1.0 / 4)), double.PositiveInfinity)); 425 // Assert.AreEqual(Interval.Root(zeroNegInterval, zeroRoot), new Interval(double.NaN, double.NaN)); 426 // Assert.AreEqual(Interval.Root(zeroNegInterval, oneRoot), new Interval(-2, 0)); 427 //} 251 428 } 252 429 } -
stable/HeuristicLab.Tests/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4/IntervalInterpreterTest.cs
r17100 r17803 40 40 Interval result; 41 41 if (variableRanges == null) 42 result = interpreter.GetSymbolicExpressionTreeInterval(tree, problemData.Dataset, problemData.AllIndices);42 result = interpreter.GetSymbolicExpressionTreeInterval(tree, problemData.Dataset, rows:problemData.AllIndices); 43 43 else 44 44 result = interpreter.GetSymbolicExpressionTreeInterval(tree, variableRanges); … … 163 163 } 164 164 165 [TestMethod]166 [TestCategory("Problems.DataAnalysis.Symbolic")]167 [TestProperty("Time", "short")]168 public void TestIntervalInterpreterExpRoot() {169 EvaluateTest("exp(root(x1*x2, 2))", new Interval(Math.Exp(Math.Sqrt(6)), Math.Exp(Math.Sqrt(48))));170 EvaluateTest("exp(root(x1*x2, 2))", new Interval(Math.Exp(Math.Sqrt(4)), Math.Exp(Math.Sqrt(60))), variableRanges);171 }172 173 [TestMethod]174 [TestCategory("Problems.DataAnalysis.Symbolic")]175 [TestProperty("Time", "short")]176 public void TestIntervalInterpreterPower() {177 EvaluateTest("pow(x1, 2)", new Interval(Math.Pow(3, 1), Math.Pow(8, 3)));178 }179 165 } 180 166 }
Note: See TracChangeset
for help on using the changeset viewer.