| <!DOCTYPE HTML> |
| <!-- NewPage --> |
| <html lang="de"> |
| <head> |
| <!-- Generated by javadoc (11.0.8) on Mon Nov 30 13:15:36 CET 2020 --> |
| <title>WeibullUtil</title> |
| <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
| <meta name="dc.created" content="2020-11-30"> |
| <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style"> |
| |
| </head> |
| <body> |
| <!-- ======== START OF CLASS DATA ======== --> |
| <main role="main"> |
| <div class="header"> |
| <div class="subTitle"><span class="packageLabelInType">Package</span> <a href="package-summary.html">org.eclipse.app4mc.amalthea.model.util</a></div> |
| <h2 title="Class WeibullUtil" class="title">Class WeibullUtil</h2> |
| </div> |
| <div class="contentContainer"> |
| <ul class="inheritance"> |
| <li>Object</li> |
| <li> |
| <ul class="inheritance"> |
| <li>WeibullUtil</li> |
| </ul> |
| </li> |
| </ul> |
| <div class="description"> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <hr> |
| <pre>public class <span class="typeNameLabel">WeibullUtil</span> |
| extends Object</pre> |
| </li> |
| </ul> |
| </div> |
| <div class="summary"> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <!-- ======== NESTED CLASS SUMMARY ======== --> |
| <section role="region"> |
| <ul class="blockList"> |
| <li class="blockList"><a id="nested.class.summary"> |
| <!-- --> |
| </a> |
| <h3>Nested Class Summary</h3> |
| <table class="memberSummary"> |
| <caption><span>Nested Classes</span><span class="tabEnd"> </span></caption> |
| <tr> |
| <th class="colFirst" scope="col">Modifier and Type</th> |
| <th class="colSecond" scope="col">Class</th> |
| <th class="colLast" scope="col">Description</th> |
| </tr> |
| <tr class="altColor"> |
| <td class="colFirst"><code>static class </code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="WeibullUtil.Parameters.html" title="class in org.eclipse.app4mc.amalthea.model.util">WeibullUtil.Parameters</a></span></code></th> |
| <td class="colLast"> </td> |
| </tr> |
| </table> |
| </li> |
| </ul> |
| </section> |
| <!-- ========== METHOD SUMMARY =========== --> |
| <section role="region"> |
| <ul class="blockList"> |
| <li class="blockList"><a id="method.summary"> |
| <!-- --> |
| </a> |
| <h3>Method Summary</h3> |
| <table class="memberSummary"> |
| <caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span></caption> |
| <tr> |
| <th class="colFirst" scope="col">Modifier and Type</th> |
| <th class="colSecond" scope="col">Method</th> |
| <th class="colLast" scope="col">Description</th> |
| </tr> |
| <tr id="i0" class="altColor"> |
| <td class="colFirst"><code>static double</code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#computeAverage(double,double,double,java.lang.Double)">computeAverage</a></span>​(double shape, |
| double scale, |
| double location, |
| Double upperBound)</code></th> |
| <td class="colLast"> |
| <div class="block">See Crénin, François, Truncated Weibull Distribution Functions and Moments (October 30, 2015).</div> |
| </td> |
| </tr> |
| <tr id="i1" class="rowColor"> |
| <td class="colFirst"><code>static double</code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#computeMedian(double,double,double,java.lang.Double)">computeMedian</a></span>​(double shape, |
| double scale, |
| double location, |
| Double upperBound)</code></th> |
| <td class="colLast"> </td> |
| </tr> |
| <tr id="i2" class="altColor"> |
| <td class="colFirst"><code>static double</code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#computeMedianWithPRemainPromille(double,double,double,double)">computeMedianWithPRemainPromille</a></span>​(double shape, |
| double scale, |
| double location, |
| double pRemainPromille)</code></th> |
| <td class="colLast"> </td> |
| </tr> |
| <tr id="i3" class="rowColor"> |
| <td class="colFirst"><code>static double</code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#computePRemainPromille(double,double,double,double)">computePRemainPromille</a></span>​(double shape, |
| double scale, |
| double location, |
| double upperBound)</code></th> |
| <td class="colLast"> </td> |
| </tr> |
| <tr id="i4" class="altColor"> |
| <td class="colFirst"><code>static double</code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#computeUpperBound(double,double,double,double)">computeUpperBound</a></span>​(double shape, |
| double scale, |
| double location, |
| double pRemainPromille)</code></th> |
| <td class="colLast"> </td> |
| </tr> |
| <tr id="i5" class="rowColor"> |
| <td class="colFirst"><code>static <a href="WeibullUtil.Parameters.html" title="class in org.eclipse.app4mc.amalthea.model.util">WeibullUtil.Parameters</a></code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#findParameters(double,double,double,double)">findParameters</a></span>​(double lowerBound, |
| double average, |
| double upperBound, |
| double pRemainPromille)</code></th> |
| <td class="colLast"> |
| <div class="block">This is a simple attempt to get a better parameter estimation for big pRemainPromille values.</div> |
| </td> |
| </tr> |
| <tr id="i6" class="altColor"> |
| <td class="colFirst"><code>static <a href="WeibullUtil.Parameters.html" title="class in org.eclipse.app4mc.amalthea.model.util">WeibullUtil.Parameters</a></code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#findParametersForAverage(double,double,double,double)">findParametersForAverage</a></span>​(double lowerBound, |
| double average, |
| double upperBound, |
| double pRemainPromille)</code></th> |
| <td class="colLast"> |
| <div class="block">The approximation from the given parameters boil down to the following problem (latex formulas):</div> |
| </td> |
| </tr> |
| <tr id="i7" class="rowColor"> |
| <td class="colFirst"><code>static <a href="WeibullUtil.Parameters.html" title="class in org.eclipse.app4mc.amalthea.model.util">WeibullUtil.Parameters</a></code></td> |
| <th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#findParametersForMedian(double,double,double,double)">findParametersForMedian</a></span>​(double lowerBound, |
| double median, |
| double upperBound, |
| double pRemainPromille)</code></th> |
| <td class="colLast"> </td> |
| </tr> |
| </table> |
| <ul class="blockList"> |
| <li class="blockList"><a id="methods.inherited.from.class.Object"> |
| <!-- --> |
| </a> |
| <h3>Methods inherited from class Object</h3> |
| <code>equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li> |
| </ul> |
| </li> |
| </ul> |
| </section> |
| </li> |
| </ul> |
| </div> |
| <div class="details"> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <!-- ============ METHOD DETAIL ========== --> |
| <section role="region"> |
| <ul class="blockList"> |
| <li class="blockList"><a id="method.detail"> |
| <!-- --> |
| </a> |
| <h3>Method Detail</h3> |
| <a id="computeAverage(double,double,double,java.lang.Double)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>computeAverage</h4> |
| <pre class="methodSignature">public static double computeAverage​(double shape, |
| double scale, |
| double location, |
| Double upperBound)</pre> |
| <div class="block">See Crénin, François, Truncated Weibull Distribution Functions and Moments (October 30, 2015). |
| Available at SSRN: https://ssrn.com/abstract=2690255 or http://dx.doi.org/10.2139/ssrn.2690255</div> |
| <dl> |
| <dt><span class="paramLabel">Parameters:</span></dt> |
| <dd><code>shape</code> - </dd> |
| <dd><code>scale</code> - </dd> |
| <dd><code>location</code> - </dd> |
| <dd><code>upperBound</code> - </dd> |
| <dt><span class="returnLabel">Returns:</span></dt> |
| </dl> |
| </li> |
| </ul> |
| <a id="computeMedian(double,double,double,java.lang.Double)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>computeMedian</h4> |
| <pre class="methodSignature">public static double computeMedian​(double shape, |
| double scale, |
| double location, |
| Double upperBound)</pre> |
| </li> |
| </ul> |
| <a id="computeMedianWithPRemainPromille(double,double,double,double)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>computeMedianWithPRemainPromille</h4> |
| <pre class="methodSignature">public static double computeMedianWithPRemainPromille​(double shape, |
| double scale, |
| double location, |
| double pRemainPromille)</pre> |
| </li> |
| </ul> |
| <a id="computePRemainPromille(double,double,double,double)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>computePRemainPromille</h4> |
| <pre class="methodSignature">public static double computePRemainPromille​(double shape, |
| double scale, |
| double location, |
| double upperBound)</pre> |
| </li> |
| </ul> |
| <a id="computeUpperBound(double,double,double,double)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>computeUpperBound</h4> |
| <pre class="methodSignature">public static double computeUpperBound​(double shape, |
| double scale, |
| double location, |
| double pRemainPromille)</pre> |
| </li> |
| </ul> |
| <a id="findParameters(double,double,double,double)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>findParameters</h4> |
| <pre class="methodSignature">public static <a href="WeibullUtil.Parameters.html" title="class in org.eclipse.app4mc.amalthea.model.util">WeibullUtil.Parameters</a> findParameters​(double lowerBound, |
| double average, |
| double upperBound, |
| double pRemainPromille)</pre> |
| <div class="block">This is a simple attempt to get a better parameter estimation for big pRemainPromille values. |
| |
| As an alternative to the regular estimation another estimation based on the median value is calculated. |
| The better result is selected according to the relative error of both requested values. |
| |
| Better solutions are welcome !</div> |
| <dl> |
| <dt><span class="paramLabel">Parameters:</span></dt> |
| <dd><code>lowerBound</code> - </dd> |
| <dd><code>average</code> - </dd> |
| <dd><code>upperBound</code> - </dd> |
| <dd><code>pRemainPromille</code> - </dd> |
| <dt><span class="returnLabel">Returns:</span></dt> |
| </dl> |
| </li> |
| </ul> |
| <a id="findParametersForAverage(double,double,double,double)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>findParametersForAverage</h4> |
| <pre class="methodSignature">public static <a href="WeibullUtil.Parameters.html" title="class in org.eclipse.app4mc.amalthea.model.util">WeibullUtil.Parameters</a> findParametersForAverage​(double lowerBound, |
| double average, |
| double upperBound, |
| double pRemainPromille)</pre> |
| <div class="block">The approximation from the given parameters boil down to the following problem (latex formulas): |
| <p> |
| CDF_{weibull}(upperBound) = 1 - pRemainPromille/1000 |
| <p> |
| Using the Weibull CDF (1) and the Expectation Value (average) (2) |
| we can derive a formula for the scale dependent on shape and known values from (2) |
| <p> |
| (1) CDF_{weibull}(x) = 1 - e^{- (\frac{x}{scale})^{shape}} |
| <p> |
| (2) avg = scale \cdot \Gamma(1 + \frac{1}{shape}) |
| <p> |
| (3) scale = \frac{avg}{\Gamma(1 + (1 / shape))} |
| <p> |
| with (1), (3) and pRemain = pRemainPromille/1000 follows |
| <p> |
| (4) pRemain = e^{-(\frac{upper limit}{E_{avg}} \cdot \Gamma(1 + \frac{1}{shape}))^{shape}} |
| <p> |
| from this we form a zero finding problem |
| <p> |
| (5) 0 = e^{-(\frac{upper limit}{E_{avg}}\cdot \Gamma(1 + \frac{1}{shape}))^{shape}} - pRemain |
| <p> |
| The work "Robust Scheduling of Real-Time Applications on Efficient Embedded Multicore Systems" |
| (https://mediatum.ub.tum.de/download/1063381/1063381.pdf) proposes an algorithm from (4) which |
| is basically the bisection method.</div> |
| </li> |
| </ul> |
| <a id="findParametersForMedian(double,double,double,double)"> |
| <!-- --> |
| </a> |
| <ul class="blockListLast"> |
| <li class="blockList"> |
| <h4>findParametersForMedian</h4> |
| <pre class="methodSignature">public static <a href="WeibullUtil.Parameters.html" title="class in org.eclipse.app4mc.amalthea.model.util">WeibullUtil.Parameters</a> findParametersForMedian​(double lowerBound, |
| double median, |
| double upperBound, |
| double pRemainPromille)</pre> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| </section> |
| </li> |
| </ul> |
| </div> |
| </div> |
| </main> |
| <!-- ========= END OF CLASS DATA ========= --> |
| </body> |
| </html> |