This list is closed, nobody may subscribe to it.
2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(10) |
Aug
(5) |
Sep
(3) |
Oct
(41) |
Nov
(41) |
Dec
(33) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
(75) |
Feb
(10) |
Mar
(170) |
Apr
(174) |
May
(66) |
Jun
(11) |
Jul
(10) |
Aug
(44) |
Sep
(73) |
Oct
(28) |
Nov
(139) |
Dec
(52) |
2003 |
Jan
(35) |
Feb
(93) |
Mar
(62) |
Apr
(10) |
May
(55) |
Jun
(70) |
Jul
(37) |
Aug
(16) |
Sep
(56) |
Oct
(31) |
Nov
(57) |
Dec
(83) |
2004 |
Jan
(85) |
Feb
(67) |
Mar
(27) |
Apr
(37) |
May
(75) |
Jun
(85) |
Jul
(160) |
Aug
(68) |
Sep
(104) |
Oct
(25) |
Nov
(39) |
Dec
(23) |
2005 |
Jan
(10) |
Feb
(45) |
Mar
(43) |
Apr
(19) |
May
(108) |
Jun
(31) |
Jul
(41) |
Aug
(23) |
Sep
(65) |
Oct
(58) |
Nov
(44) |
Dec
(54) |
2006 |
Jan
(96) |
Feb
(27) |
Mar
(69) |
Apr
(59) |
May
(67) |
Jun
(35) |
Jul
(13) |
Aug
(461) |
Sep
(160) |
Oct
(399) |
Nov
(32) |
Dec
(72) |
2007 |
Jan
(316) |
Feb
(305) |
Mar
(318) |
Apr
(54) |
May
(194) |
Jun
(173) |
Jul
(282) |
Aug
(91) |
Sep
(227) |
Oct
(365) |
Nov
(168) |
Dec
(18) |
2008 |
Jan
(71) |
Feb
(111) |
Mar
(155) |
Apr
(173) |
May
(70) |
Jun
(67) |
Jul
(55) |
Aug
(83) |
Sep
(32) |
Oct
(68) |
Nov
(80) |
Dec
(29) |
2009 |
Jan
(46) |
Feb
(18) |
Mar
(95) |
Apr
(76) |
May
(140) |
Jun
(98) |
Jul
(84) |
Aug
(123) |
Sep
(94) |
Oct
(131) |
Nov
(142) |
Dec
(125) |
2010 |
Jan
(128) |
Feb
(158) |
Mar
(172) |
Apr
(134) |
May
(94) |
Jun
(84) |
Jul
(32) |
Aug
(127) |
Sep
(167) |
Oct
(109) |
Nov
(69) |
Dec
(78) |
2011 |
Jan
(39) |
Feb
(58) |
Mar
(52) |
Apr
(47) |
May
(56) |
Jun
(76) |
Jul
(55) |
Aug
(54) |
Sep
(165) |
Oct
(255) |
Nov
(328) |
Dec
(263) |
2012 |
Jan
(82) |
Feb
(147) |
Mar
(400) |
Apr
(216) |
May
(209) |
Jun
(160) |
Jul
(86) |
Aug
(141) |
Sep
(156) |
Oct
(6) |
Nov
|
Dec
|
2015 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
(1) |
Oct
|
Nov
(1) |
Dec
(2) |
2016 |
Jan
|
Feb
(2) |
Mar
(2) |
Apr
(1) |
May
(1) |
Jun
(2) |
Jul
(1) |
Aug
(1) |
Sep
|
Oct
|
Nov
(1) |
Dec
|
2019 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2021 |
Jan
|
Feb
|
Mar
|
Apr
(3) |
May
(4) |
Jun
(8) |
Jul
(2) |
Aug
(5) |
Sep
(9) |
Oct
|
Nov
|
Dec
|
From: <mma...@us...> - 2012-04-08 20:02:53
|
Revision: 10173 http://octave.svn.sourceforge.net/octave/?rev=10173&view=rev Author: mmarzolla Date: 2012-04-08 20:02:44 +0000 (Sun, 08 Apr 2012) Log Message: ----------- refactored documentation Modified Paths: -------------- trunk/octave-forge/main/queueing/doc/Makefile trunk/octave-forge/main/queueing/doc/queueing.html trunk/octave-forge/main/queueing/doc/queueing.pdf trunk/octave-forge/main/queueing/doc/queueing.texi Added Paths: ----------- trunk/octave-forge/main/queueing/doc/gettingstarted.txi trunk/octave-forge/main/queueing/doc/gpl.txi trunk/octave-forge/main/queueing/doc/installation.txi trunk/octave-forge/main/queueing/doc/markovchains.txi trunk/octave-forge/main/queueing/doc/munge-texi.m trunk/octave-forge/main/queueing/doc/queueingnetworks.txi trunk/octave-forge/main/queueing/doc/references.txi trunk/octave-forge/main/queueing/doc/singlestation.txi trunk/octave-forge/main/queueing/doc/summary.txi Removed Paths: ------------- trunk/octave-forge/main/queueing/doc/ack.texi trunk/octave-forge/main/queueing/doc/contributing.texi trunk/octave-forge/main/queueing/doc/demos/Makefile trunk/octave-forge/main/queueing/doc/gettingstarted.texi trunk/octave-forge/main/queueing/doc/gpl.texi trunk/octave-forge/main/queueing/doc/help/Makefile trunk/octave-forge/main/queueing/doc/installation.texi trunk/octave-forge/main/queueing/doc/markovchains.texi trunk/octave-forge/main/queueing/doc/queueingnetworks.texi trunk/octave-forge/main/queueing/doc/references.texi trunk/octave-forge/main/queueing/doc/singlestation.texi trunk/octave-forge/main/queueing/doc/summary.texi Modified: trunk/octave-forge/main/queueing/doc/Makefile =================================================================== --- trunk/octave-forge/main/queueing/doc/Makefile 2012-04-06 19:07:39 UTC (rev 10172) +++ trunk/octave-forge/main/queueing/doc/Makefile 2012-04-08 20:02:44 UTC (rev 10173) @@ -1,7 +1,6 @@ DOC=queueing -CHAPTERS=$(wildcard *.texi) +CHAPTERS=$(patsubst %.txi, %.texi, $(wildcard *.txi)) DISTFILES=README INSTALL $(DOC).pdf $(DOC).html $(DOC).texi $(CHAPTERS) -SUBDIRS=demos help .PHONY: clean dist @@ -17,32 +16,23 @@ -$(MAKEINFO) -D INSTALLONLY \ --no-validate --no-headers --no-split --output INSTALL $< -$(DOC).html: $(DOC).texi $(CHAPTERS) demos/DONE help/DONE +$(DOC).html: $(DOC).texi $(CHAPTERS) -$(MAKEINFO) --html --no-split $(DOC).texi -$(DOC).pdf: $(DOC).texi $(CHAPTERS) demos/DONE help/DONE +$(DOC).pdf: $(DOC).texi $(CHAPTERS) texi2pdf -o $(DOC).pdf $(DOC).texi -$(DOC).info: $(DOC).texi $(CHAPTERS) demos/DONE help/DONE +$(DOC).info: $(DOC).texi $(CHAPTERS) -$(MAKEINFO) $(DOC).texi -demos/DONE: - $(MAKE) -C demos +%.texi: %.txi + octave -p../inst/ -q munge-texi.m $< ../inst/ > $@ -help/DONE: - $(MAKE) -C help - dist: ln $(DISTFILES) ../`cat ../fname`/doc/ clean: - for d in $(SUBDIRS); do \ - $(MAKE) -C $$d $(MAKECMDGOALS); \ - done - \rm -f *.fns *.pdf *.aux *.log *.dvi *.out *.info *.html *.ky *.tp *.toc *.vr *.cp *.fn *.pg *.op *.au *.aus *.cps x.log *~ DOCSTRINGS DEMOS HELP INSTALL + \rm -f *.fns *.pdf *.aux *.log *.dvi *.out *.info *.html *.ky *.tp *.toc *.vr *.cp *.fn *.pg *.op *.au *.aus *.cps x.log *~ DOCSTRINGS INSTALL $(CHAPTERS) distclean: clean - for d in $(SUBDIRS); do \ - $(MAKE) -C $$d $(MAKECMDGOALS); \ - done Deleted: trunk/octave-forge/main/queueing/doc/ack.texi =================================================================== --- trunk/octave-forge/main/queueing/doc/ack.texi 2012-04-06 19:07:39 UTC (rev 10172) +++ trunk/octave-forge/main/queueing/doc/ack.texi 2012-04-08 20:02:44 UTC (rev 10173) @@ -1,28 +0,0 @@ -@c -*- texinfo -*- - -@c Copyright (C) 2008, 2009, 2010, 2011, 2012 Moreno Marzolla -@c -@c This file is part of the queueing toolbox, a Queueing Networks -@c analysis package for GNU Octave. -@c -@c The queueing toolbox is free software; you can redistribute it -@c and/or modify it under the terms of the GNU General Public License -@c as published by the Free Software Foundation; either version 3 of -@c the License, or (at your option) any later version. -@c -@c The queueing toolbox is distributed in the hope that it will be -@c useful, but WITHOUT ANY WARRANTY; without even the implied warranty -@c of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -@c GNU General Public License for more details. -@c -@c You should have received a copy of the GNU General Public License -@c along with the queueing toolbox; see the file COPYING. If not, see -@c <http://www.gnu.org/licenses/>. - -@node Acknowledgements -@appendix Acknowledgements - -The following people (listed in alphabetical order) contributed to the -@code{queueing} package, either by providing feedback, reporting bugs -or contributing code: Philip Carinhas, Phil Colbourn, Yves Durand, -Marco Guazzone, Dmitry Kolesnikov. Deleted: trunk/octave-forge/main/queueing/doc/contributing.texi =================================================================== --- trunk/octave-forge/main/queueing/doc/contributing.texi 2012-04-06 19:07:39 UTC (rev 10172) +++ trunk/octave-forge/main/queueing/doc/contributing.texi 2012-04-08 20:02:44 UTC (rev 10173) @@ -1,57 +0,0 @@ -@c -*- texinfo -*- - -@c Copyright (C) 2008, 2009, 2010, 2011, 2012 Moreno Marzolla -@c -@c This file is part of the queueing toolbox, a Queueing Networks -@c analysis package for GNU Octave. -@c -@c The queueing toolbox is free software; you can redistribute it -@c and/or modify it under the terms of the GNU General Public License -@c as published by the Free Software Foundation; either version 3 of -@c the License, or (at your option) any later version. -@c -@c The queueing toolbox is distributed in the hope that it will be -@c useful, but WITHOUT ANY WARRANTY; without even the implied warranty -@c of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -@c GNU General Public License for more details. -@c -@c You should have received a copy of the GNU General Public License -@c along with the queueing toolbox; see the file COPYING. If not, see -@c <http://www.gnu.org/licenses/>. - -@node Contributing Guidelines -@appendix Contributing Guidelines - -Contributions and bug reports are @emph{always} welcome. If you want -to contribute to the @code{queueing} package, here are some -guidelines: - -@itemize - -@item If you are contributing a new function, please embed proper -documentation within the function itself. The documentation must be in -@code{texinfo} format, so that it can be extracted and formatted into -the printable manual. See the existing functions of the -@code{queueing} package for the documentation style. - -@item Make sure that each new function -properly checks the validity of its input parameters. For example, -each function accepting vectors should check whether the dimensions -match. - -@item Provide bibliographic references for each new algorithm you -contribute. If your implementation differs in some way from the -reference you give, please describe how and why your implementation -differs. Add references to the @file{doc/references.txi} file. - -@item Include test and demo blocks with your code. -Test blocks are particularly important, since most algorithms tend to -be quite tricky to implement correctly. If appropriate, test blocks -should also verify that the function fails on incorrect input -parameters. - -@end itemize - -Send your contribution to Moreno Marzolla -(@email{marzolla@@cs.unibo.it}). If you are just a user of this -package and find it useful, let me know by dropping me a line. Thanks. Deleted: trunk/octave-forge/main/queueing/doc/demos/Makefile =================================================================== --- trunk/octave-forge/main/queueing/doc/demos/Makefile 2012-04-06 19:07:39 UTC (rev 10172) +++ trunk/octave-forge/main/queueing/doc/demos/Makefile 2012-04-08 20:02:44 UTC (rev 10173) @@ -1,13 +0,0 @@ -DISTFILES=$(wildcard *.texi) - -ALL: - octave -p ../../inst/ -q ../grabdemo.m ../../inst/ && touch DONE - -dist: - ln $(DISTFILES) ../../`cat ../../fname`/doc/demos - -clean: - \rm -f *.texi *~ DONE - -distclean: clean - Deleted: trunk/octave-forge/main/queueing/doc/gettingstarted.texi =================================================================== --- trunk/octave-forge/main/queueing/doc/gettingstarted.texi 2012-04-06 19:07:39 UTC (rev 10172) +++ trunk/octave-forge/main/queueing/doc/gettingstarted.texi 2012-04-08 20:02:44 UTC (rev 10173) @@ -1,316 +0,0 @@ -@c -*- texinfo -*- - -@c Copyright (C) 2008, 2009, 2010, 2011, 2012 Moreno Marzolla -@c -@c This file is part of the queueing toolbox, a Queueing Networks -@c analysis package for GNU Octave. -@c -@c The queueing toolbox is free software; you can redistribute it -@c and/or modify it under the terms of the GNU General Public License -@c as published by the Free Software Foundation; either version 3 of -@c the License, or (at your option) any later version. -@c -@c The queueing toolbox is distributed in the hope that it will be -@c useful, but WITHOUT ANY WARRANTY; without even the implied warranty -@c of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -@c GNU General Public License for more details. -@c -@c You should have received a copy of the GNU General Public License -@c along with the queueing toolbox; see the file COPYING. If not, see -@c <http://www.gnu.org/licenses/>. - -@node Getting Started -@chapter Introduction and Getting Started - -@menu -* Analysis of Closed Networks:: -* Analysis of Open Networks:: -@end menu - -In this chapter we give some usage examples of the @code{queueing} -package. The reader is assumed to be familiar with Queueing Networks -(although some basic terminology and notation will be given -here). Additional usage examples are embedded in most of the function -files; to display and execute the demos associated with function -@emph{fname} you can type @command{demo @emph{fname}} at the Octave -prompt. For example - -@example -@kbd{demo qnclosed} -@end example - -@noindent executes all demos (if any) for the @command{qnclosed} function. - -@node Analysis of Closed Networks -@section Analysis of Closed Networks - -Let us consider a simple closed network with @math{K=3} service -centers. Each center is of type @math{M/M/1}--FCFS. We denote with -@math{S_i} the average service time at center @math{i}, @math{i=1, 2, -3}. Let @math{S_1 = 1.0}, @math{S_2 = 2.0} and @math{S_3 = 0.8}. The -routing of jobs within the network is described with a @emph{routing -probability matrix} @math{P}. Specifically, a request completing -service at center @math{i} is enqueued at center @math{j} with -probability @math{P_{i, j}}. Let us assume the following routing -probability matrix: - -@iftex -@tex -$$ -P = \pmatrix{ 0 & 0.3 & 0.7 \cr - 1 & 0 & 0 \cr - 1 & 0 & 0 } -$$ -@end tex -@end iftex -@ifnottex -@example - [ 0 0.3 0.7 ] -P = [ 1 0 0 ] - [ 1 0 0 ] -@end example -@end ifnottex - -For example, according to matric @math{P} a job completing service at -center 1 is routed to center 2 with probability 0.3, and is routed to -center 3 with probability 0.7. - -The network above can be analyzed with the @command{qnclosed} -function; if there is just a single class of requests, as in the -example above, @command{qnclosed} calls @command{qnclosedsinglemva} -which implements the Mean Value Analysys (MVA) algorithm for -single-class, product-form network. - -@command{qnclosed} requires the following parameters: - -@table @var - -@item N -Number of requests in the network (since we are considering a closed -network, the number of requests is fixed) - -@item S -Array of average service times at the centers: @code{@var{S}(k)} is -the average service time at center @math{k}. - -@item V -Array of visit ratios: @code{@var{V}(k)} is the average number of -visits to center @math{k}. - -@end table - -As can be seen, we must compute the @emph{visit ratios} (or visit -counts) @math{V_k} for each center @math{k}. The visit counts satisfy -the following equations: - -@iftex -@tex -$$ -V_j = \sum_{i=1}^K V_i P_{i, j} -$$ -@end tex -@end iftex -@ifnottex -@example -V_j = sum_i V_i P_ij -@end example -@end ifnottex - -We can compute @math{V_k} from the routing probability matrix -@math{P_{i, j}} using the @command{qnvisits} function: - -@example -@group -@kbd{P = [0 0.3 0.7; 1 0 0; 1 0 0];} -@kbd{V = qnvisits(P)} - @result{} V = 1.00000 0.30000 0.70000 -@end group -@end example - -We can check that the computed values satisfy the above equation by -evaluating the following expression: - -@example -@kbd{V*P} - @result{} ans = 1.00000 0.30000 0.70000 -@end example - -@noindent which is equal to @math{V}. -Hence, we can analyze the network for a given population size @math{N} -(for example, @math{N=10}) as follows: - -@example -@group -@kbd{N = 10;} -@kbd{S = [1 2 0.8];} -@kbd{P = [0 0.3 0.7; 1 0 0; 1 0 0];} -@kbd{V = qnvisits(P);} -@kbd{[U R Q X] = qnclosed( N, S, V )} - @result{} U = 0.99139 0.59483 0.55518 - @result{} R = 7.4360 4.7531 1.7500 - @result{} Q = 7.3719 1.4136 1.2144 - @result{} X = 0.99139 0.29742 0.69397 -@end group -@end example - -The output of @command{qnclosed} includes the vector of utilizations -@math{U_k} at center @math{k}, response time @math{R_k}, average -number of customers @math{Q_k} and throughput @math{X_k}. In our -example, the throughput of center 1 is @math{X_1 = 0.99139}, and the -average number of requests in center 3 is @math{Q_3 = 1.2144}. The -utilization of center 1 is @math{U_1 = 0.99139}, which is the higher -value among the service centers. Tus, center 1 is the @emph{bottleneck -device}. - -This network can also be analyzed with the @command{qnsolve} -function. @command{qnsolve} can handle open, closed or mixed networks, -and allows the network to be described in a very flexible way. First, -let @var{Q1}, @var{Q2} and @var{Q3} be the variables describing the -service centers. Each variable is instantiated with the -@command{qnmknode} function. - -@example -@group -@kbd{Q1 = qnmknode( "m/m/m-fcfs", 1 );} -@kbd{Q2 = qnmknode( "m/m/m-fcfs", 2 );} -@kbd{Q3 = qnmknode( "m/m/m-fcfs", 0.8 );} -@end group -@end example - -The first parameter of @command{qnmknode} is a string describing the -type of the node. Here we use @code{"m/m/m-fcfs"} to denote a -@math{M/M/m}--FCFS center. The second parameter gives the average -service time. An optional third parameter can be used to specify the -number @math{m} of service centers. If omitted, it is assumed -@math{m=1} (single-server node). - -Now, the network can be analyzed as follows: - -@example -@group -@kbd{N = 10;} -@kbd{V = [1 0.3 0.7];} -@kbd{[U R Q X] = qnsolve( "closed", N, @{ Q1, Q2, Q3 @}, V )} - @result{} U = 0.99139 0.59483 0.55518 - @result{} R = 7.4360 4.7531 1.7500 - @result{} Q = 7.3719 1.4136 1.2144 - @result{} X = 0.99139 0.29742 0.69397 -@end group -@end example - -Of course, we get exactly the same results. Other functions can be used -for closed networks, @pxref{Algorithms for Product-Form QNs}. - -@node Analysis of Open Networks -@section Analysis of Open Networks - -Open networks can be analyzed in a similar way. Let us consider -an open network with @math{K=3} service centers, and routing -probability matrix as follows: - -@iftex -@tex -$$ -P = \pmatrix{ 0 & 0.3 & 0.5 \cr - 1 & 0 & 0 \cr - 1 & 0 & 0 } -$$ -@end tex -@end iftex -@ifnottex -@example - [ 0 0.3 0.5 ] -P = [ 1 0 0 ] - [ 1 0 0 ] -@end example -@end ifnottex - -In this network, requests can leave the system from center 1 with -probability @math{(1-(0.3+0.5) = 0.2}. We suppose that external jobs -arrive at center 1 with rate @math{\lambda_1 = 0.15}; there are no -arrivals at centers 2 and 3. - -Similarly to closed networks, we first need to compute the visit -counts @math{V_k} to center @math{k}. Again, we use the -@command{qnvisits} function as follows: - -@example -@group -@kbd{P = [0 0.3 0.5; 1 0 0; 1 0 0];} -@kbd{lambda = [0.15 0 0];} -@kbd{V = qnvisits(P, lambda)} - @result{} V = 5.00000 1.50000 2.50000 -@end group -@end example - -@noindent where @code{@var{lambda}(k)} is the arrival rate at center @math{k}, -and @var{P} is the routing matrix. The visit counts @math{V_k} for -open networks satisfy the following equation: - -@iftex -@tex -$$ -V_j = P_{0, j} + \sum_{i=1}^K V_i P_{i, j} -$$ -@end tex -@end iftex -@ifnottex -@example -V_j = sum_i V_i P_ij -@end example -@end ifnottex - -where @math{P_{0, j}} is the probability of an external arrival to -center @math{j}. This can be computed as: - -@tex -$$ -P_{0, j} = {\lambda_j \over \sum_{i=1}^K \lambda_i } -$$ -@end tex - -Assuming the same service times as in the previous example, the -network can be analyzed with the @command{qnopen} function, as -follows: - -@example -@group -@kbd{S = [1 2 0.8];} -@kbd{[U R Q X] = qnopen( sum(lambda), S, V )} - @result{} U = 0.75000 0.45000 0.30000 - @result{} R = 4.0000 3.6364 1.1429 - @result{} Q = 3.00000 0.81818 0.42857 - @result{} X = 0.75000 0.22500 0.37500 -@end group -@end example - -The first parameter of the @command{qnopen} function is the (scalar) -aggregate arrival rate. - -Again, it is possible to use the @command{qnsolve} high-level function: - -@example -@group -@kbd{Q1 = qnmknode( "m/m/m-fcfs", 1 );} -@kbd{Q2 = qnmknode( "m/m/m-fcfs", 2 );} -@kbd{Q3 = qnmknode( "m/m/m-fcfs", 0.8 );} -@kbd{lambda = [0.15 0 0];} -@kbd{[U R Q X] = qnsolve( "open", sum(lambda), @{ Q1, Q2, Q3 @}, V )} - @result{} U = 0.75000 0.45000 0.30000 - @result{} R = 4.0000 3.6364 1.1429 - @result{} Q = 3.00000 0.81818 0.42857 - @result{} X = 0.75000 0.22500 0.37500 -@end group -@end example - -@c @node Markov Chains Analysis -@c @section Markov Chains Analysis - -@c @subsection Discrete-Time Markov Chains - -@c (TODO) - -@c @subsection Continuous-Time Markov Chains - -@c (TODO) - Copied: trunk/octave-forge/main/queueing/doc/gettingstarted.txi (from rev 10172, trunk/octave-forge/main/queueing/doc/gettingstarted.texi) =================================================================== --- trunk/octave-forge/main/queueing/doc/gettingstarted.txi (rev 0) +++ trunk/octave-forge/main/queueing/doc/gettingstarted.txi 2012-04-08 20:02:44 UTC (rev 10173) @@ -0,0 +1,316 @@ +@c -*- texinfo -*- + +@c Copyright (C) 2008, 2009, 2010, 2011, 2012 Moreno Marzolla +@c +@c This file is part of the queueing toolbox, a Queueing Networks +@c analysis package for GNU Octave. +@c +@c The queueing toolbox is free software; you can redistribute it +@c and/or modify it under the terms of the GNU General Public License +@c as published by the Free Software Foundation; either version 3 of +@c the License, or (at your option) any later version. +@c +@c The queueing toolbox is distributed in the hope that it will be +@c useful, but WITHOUT ANY WARRANTY; without even the implied warranty +@c of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +@c GNU General Public License for more details. +@c +@c You should have received a copy of the GNU General Public License +@c along with the queueing toolbox; see the file COPYING. If not, see +@c <http://www.gnu.org/licenses/>. + +@node Getting Started +@chapter Introduction and Getting Started + +@menu +* Analysis of Closed Networks:: +* Analysis of Open Networks:: +@end menu + +In this chapter we give some usage examples of the @code{queueing} +package. The reader is assumed to be familiar with Queueing Networks +(although some basic terminology and notation will be given +here). Additional usage examples are embedded in most of the function +files; to display and execute the demos associated with function +@emph{fname} you can type @command{demo @emph{fname}} at the Octave +prompt. For example + +@example +@kbd{demo qnclosed} +@end example + +@noindent executes all demos (if any) for the @command{qnclosed} function. + +@node Analysis of Closed Networks +@section Analysis of Closed Networks + +Let us consider a simple closed network with @math{K=3} service +centers. Each center is of type @math{M/M/1}--FCFS. We denote with +@math{S_i} the average service time at center @math{i}, @math{i=1, 2, +3}. Let @math{S_1 = 1.0}, @math{S_2 = 2.0} and @math{S_3 = 0.8}. The +routing of jobs within the network is described with a @emph{routing +probability matrix} @math{P}. Specifically, a request completing +service at center @math{i} is enqueued at center @math{j} with +probability @math{P_{i, j}}. Let us assume the following routing +probability matrix: + +@iftex +@tex +$$ +P = \pmatrix{ 0 & 0.3 & 0.7 \cr + 1 & 0 & 0 \cr + 1 & 0 & 0 } +$$ +@end tex +@end iftex +@ifnottex +@example + [ 0 0.3 0.7 ] +P = [ 1 0 0 ] + [ 1 0 0 ] +@end example +@end ifnottex + +For example, according to matric @math{P} a job completing service at +center 1 is routed to center 2 with probability 0.3, and is routed to +center 3 with probability 0.7. + +The network above can be analyzed with the @command{qnclosed} +function; if there is just a single class of requests, as in the +example above, @command{qnclosed} calls @command{qnclosedsinglemva} +which implements the Mean Value Analysys (MVA) algorithm for +single-class, product-form network. + +@command{qnclosed} requires the following parameters: + +@table @var + +@item N +Number of requests in the network (since we are considering a closed +network, the number of requests is fixed) + +@item S +Array of average service times at the centers: @code{@var{S}(k)} is +the average service time at center @math{k}. + +@item V +Array of visit ratios: @code{@var{V}(k)} is the average number of +visits to center @math{k}. + +@end table + +As can be seen, we must compute the @emph{visit ratios} (or visit +counts) @math{V_k} for each center @math{k}. The visit counts satisfy +the following equations: + +@iftex +@tex +$$ +V_j = \sum_{i=1}^K V_i P_{i, j} +$$ +@end tex +@end iftex +@ifnottex +@example +V_j = sum_i V_i P_ij +@end example +@end ifnottex + +We can compute @math{V_k} from the routing probability matrix +@math{P_{i, j}} using the @command{qnvisits} function: + +@example +@group +@kbd{P = [0 0.3 0.7; 1 0 0; 1 0 0];} +@kbd{V = qnvisits(P)} + @result{} V = 1.00000 0.30000 0.70000 +@end group +@end example + +We can check that the computed values satisfy the above equation by +evaluating the following expression: + +@example +@kbd{V*P} + @result{} ans = 1.00000 0.30000 0.70000 +@end example + +@noindent which is equal to @math{V}. +Hence, we can analyze the network for a given population size @math{N} +(for example, @math{N=10}) as follows: + +@example +@group +@kbd{N = 10;} +@kbd{S = [1 2 0.8];} +@kbd{P = [0 0.3 0.7; 1 0 0; 1 0 0];} +@kbd{V = qnvisits(P);} +@kbd{[U R Q X] = qnclosed( N, S, V )} + @result{} U = 0.99139 0.59483 0.55518 + @result{} R = 7.4360 4.7531 1.7500 + @result{} Q = 7.3719 1.4136 1.2144 + @result{} X = 0.99139 0.29742 0.69397 +@end group +@end example + +The output of @command{qnclosed} includes the vector of utilizations +@math{U_k} at center @math{k}, response time @math{R_k}, average +number of customers @math{Q_k} and throughput @math{X_k}. In our +example, the throughput of center 1 is @math{X_1 = 0.99139}, and the +average number of requests in center 3 is @math{Q_3 = 1.2144}. The +utilization of center 1 is @math{U_1 = 0.99139}, which is the higher +value among the service centers. Tus, center 1 is the @emph{bottleneck +device}. + +This network can also be analyzed with the @command{qnsolve} +function. @command{qnsolve} can handle open, closed or mixed networks, +and allows the network to be described in a very flexible way. First, +let @var{Q1}, @var{Q2} and @var{Q3} be the variables describing the +service centers. Each variable is instantiated with the +@command{qnmknode} function. + +@example +@group +@kbd{Q1 = qnmknode( "m/m/m-fcfs", 1 );} +@kbd{Q2 = qnmknode( "m/m/m-fcfs", 2 );} +@kbd{Q3 = qnmknode( "m/m/m-fcfs", 0.8 );} +@end group +@end example + +The first parameter of @command{qnmknode} is a string describing the +type of the node. Here we use @code{"m/m/m-fcfs"} to denote a +@math{M/M/m}--FCFS center. The second parameter gives the average +service time. An optional third parameter can be used to specify the +number @math{m} of service centers. If omitted, it is assumed +@math{m=1} (single-server node). + +Now, the network can be analyzed as follows: + +@example +@group +@kbd{N = 10;} +@kbd{V = [1 0.3 0.7];} +@kbd{[U R Q X] = qnsolve( "closed", N, @{ Q1, Q2, Q3 @}, V )} + @result{} U = 0.99139 0.59483 0.55518 + @result{} R = 7.4360 4.7531 1.7500 + @result{} Q = 7.3719 1.4136 1.2144 + @result{} X = 0.99139 0.29742 0.69397 +@end group +@end example + +Of course, we get exactly the same results. Other functions can be used +for closed networks, @pxref{Algorithms for Product-Form QNs}. + +@node Analysis of Open Networks +@section Analysis of Open Networks + +Open networks can be analyzed in a similar way. Let us consider +an open network with @math{K=3} service centers, and routing +probability matrix as follows: + +@iftex +@tex +$$ +P = \pmatrix{ 0 & 0.3 & 0.5 \cr + 1 & 0 & 0 \cr + 1 & 0 & 0 } +$$ +@end tex +@end iftex +@ifnottex +@example + [ 0 0.3 0.5 ] +P = [ 1 0 0 ] + [ 1 0 0 ] +@end example +@end ifnottex + +In this network, requests can leave the system from center 1 with +probability @math{(1-(0.3+0.5) = 0.2}. We suppose that external jobs +arrive at center 1 with rate @math{\lambda_1 = 0.15}; there are no +arrivals at centers 2 and 3. + +Similarly to closed networks, we first need to compute the visit +counts @math{V_k} to center @math{k}. Again, we use the +@command{qnvisits} function as follows: + +@example +@group +@kbd{P = [0 0.3 0.5; 1 0 0; 1 0 0];} +@kbd{lambda = [0.15 0 0];} +@kbd{V = qnvisits(P, lambda)} + @result{} V = 5.00000 1.50000 2.50000 +@end group +@end example + +@noindent where @code{@var{lambda}(k)} is the arrival rate at center @math{k}, +and @var{P} is the routing matrix. The visit counts @math{V_k} for +open networks satisfy the following equation: + +@iftex +@tex +$$ +V_j = P_{0, j} + \sum_{i=1}^K V_i P_{i, j} +$$ +@end tex +@end iftex +@ifnottex +@example +V_j = sum_i V_i P_ij +@end example +@end ifnottex + +where @math{P_{0, j}} is the probability of an external arrival to +center @math{j}. This can be computed as: + +@tex +$$ +P_{0, j} = {\lambda_j \over \sum_{i=1}^K \lambda_i } +$$ +@end tex + +Assuming the same service times as in the previous example, the +network can be analyzed with the @command{qnopen} function, as +follows: + +@example +@group +@kbd{S = [1 2 0.8];} +@kbd{[U R Q X] = qnopen( sum(lambda), S, V )} + @result{} U = 0.75000 0.45000 0.30000 + @result{} R = 4.0000 3.6364 1.1429 + @result{} Q = 3.00000 0.81818 0.42857 + @result{} X = 0.75000 0.22500 0.37500 +@end group +@end example + +The first parameter of the @command{qnopen} function is the (scalar) +aggregate arrival rate. + +Again, it is possible to use the @command{qnsolve} high-level function: + +@example +@group +@kbd{Q1 = qnmknode( "m/m/m-fcfs", 1 );} +@kbd{Q2 = qnmknode( "m/m/m-fcfs", 2 );} +@kbd{Q3 = qnmknode( "m/m/m-fcfs", 0.8 );} +@kbd{lambda = [0.15 0 0];} +@kbd{[U R Q X] = qnsolve( "open", sum(lambda), @{ Q1, Q2, Q3 @}, V )} + @result{} U = 0.75000 0.45000 0.30000 + @result{} R = 4.0000 3.6364 1.1429 + @result{} Q = 3.00000 0.81818 0.42857 + @result{} X = 0.75000 0.22500 0.37500 +@end group +@end example + +@c @node Markov Chains Analysis +@c @section Markov Chains Analysis + +@c @subsection Discrete-Time Markov Chains + +@c (TODO) + +@c @subsection Continuous-Time Markov Chains + +@c (TODO) + Deleted: trunk/octave-forge/main/queueing/doc/gpl.texi =================================================================== --- trunk/octave-forge/main/queueing/doc/gpl.texi 2012-04-06 19:07:39 UTC (rev 10172) +++ trunk/octave-forge/main/queueing/doc/gpl.texi 2012-04-08 20:02:44 UTC (rev 10173) @@ -1,718 +0,0 @@ -@node Copying -@appendix GNU GENERAL PUBLIC LICENSE -@cindex warranty -@cindex copyright - -@center Version 3, 29 June 2007 - -@display -Copyright @copyright{} 2007 Free Software Foundation, Inc. @url{http://fsf.org/} - -Everyone is permitted to copy and distribute verbatim copies of this -license document, but changing it is not allowed. -@end display - -@heading Preamble - -The GNU General Public License is a free, copyleft license for -software and other kinds of works. - -The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom -to share and change all versions of a program---to make sure it remains -free software for all its users. We, the Free Software Foundation, -use the GNU General Public License for most of our software; it -applies also to any other work released this way by its authors. You -can apply it to your programs, too. - -When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - -To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you -have certain responsibilities if you distribute copies of the -software, or if you modify it: responsibilities to respect the freedom -of others. - -For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, -receive or can get the source code. And you must show them these -terms so they know their rights. - -Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - -For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - -Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the -manufacturer can do so. This is fundamentally incompatible with the -aim of protecting users' freedom to change the software. The -systematic pattern of such abuse occurs in the area of products for -individuals to use, which is precisely where it is most unacceptable. -Therefore, we have designed this version of the GPL to prohibit the -practice for those products. If such problems arise substantially in -other domains, we stand ready to extend this provision to those -domains in future versions of the GPL, as needed to protect the -freedom of users. - -Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish -to avoid the special danger that patents applied to a free program -could make it effectively proprietary. To prevent this, the GPL -assures that patents cannot be used to render the program non-free. - -The precise terms and conditions for copying, distribution and -modification follow. - -@heading TERMS AND CONDITIONS - -@enumerate 0 -@item Definitions. - -``This License'' refers to version 3 of the GNU General Public License. - -``Copyright'' also means copyright-like laws that apply to other kinds -of works, such as semiconductor masks. - -``The Program'' refers to any copyrightable work licensed under this -License. Each licensee is addressed as ``you''. ``Licensees'' and -``recipients'' may be individuals or organizations. - -To ``modify'' a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of -an exact copy. The resulting work is called a ``modified version'' of -the earlier work or a work ``based on'' the earlier work. - -A ``covered work'' means either the unmodified Program or a work based -on the Program. - -To ``propagate'' a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - -To ``convey'' a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user -through a computer network, with no transfer of a copy, is not -conveying. - -An interactive user interface displays ``Appropriate Legal Notices'' to -the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - -@item Source Code. - -The ``source code'' for a work means the preferred form of the work for -making modifications to it. ``Object code'' means any non-source form -of a work. - -A ``Standard Interface'' means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - -The ``System Libraries'' of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -``Major Component'', in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - -The ``Corresponding Source'' for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - -The Corresponding Source need not include anything that users can -regenerate automatically from other parts of the Corresponding Source. - -The Corresponding Source for a work in source code form is that same -work. - -@item Basic Permissions. - -All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - -You may make, run and propagate covered works that you do not convey, -without conditions so long as your license otherwise remains in force. -You may convey covered works to others for the sole purpose of having -them make modifications exclusively for you, or provide you with -facilities for running those works, provided that you comply with the -terms of this License in conveying all material for which you do not -control copyright. Those thus making or running the covered works for -you must do so exclusively on your behalf, under your direction and -control, on terms that prohibit them from making any copies of your -copyrighted material outside their relationship with you. - -Conveying under any other circumstances is permitted solely under the -conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - -@item Protecting Users' Legal Rights From Anti-Circumvention Law. - -No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - -When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such -circumvention is effected by exercising rights under this License with -respect to the covered work, and you disclaim any intention to limit -operation or modification of the work as a means of enforcing, against -the work's users, your or third parties' legal rights to forbid -circumvention of technological measures. - -@item Conveying Verbatim Copies. - -You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - -You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - -@item Conveying Modified Source Versions. - -You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these -conditions: - -@enumerate a -@item -The work must carry prominent notices stating that you modified it, -and giving a relevant date. - -@item -The work must carry prominent notices stating that it is released -under this License and any conditions added under section 7. This -requirement modifies the requirement in section 4 to ``keep intact all -notices''. - -@item -You must license the entire work, as a whole, under this License to -anyone who comes into possession of a copy. This License will -therefore apply, along with any applicable section 7 additional terms, -to the whole of the work, and all its parts, regardless of how they -are packaged. This License gives no permission to license the work in -any other way, but it does not invalidate such permission if you have -separately received it. - -@item -If the work has interactive user interfaces, each must display -Appropriate Legal Notices; however, if the Program has interactive -interfaces that do not display Appropriate Legal Notices, your work -need not make them do so. -@end enumerate - -A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -``aggregate'' if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - -@item Conveying Non-Source Forms. - -You may convey a covered work in object code form under the terms of -sections 4 and 5, provided that you also convey the machine-readable -Corresponding Source under the terms of this License, in one of these -ways: - -@enumerate a -@item -Convey the object code in, or embodied in, a physical product -(including a physical distribution medium), accompanied by the -Corresponding Source fixed on a durable physical medium customarily -used for software interchange. - -@item -Convey the object code in, or embodied in, a physical product -(including a physical distribution medium), accompanied by a written -offer, valid for at least three years and valid for as long as you -offer spare parts or customer support for that product model, to give -anyone who possesses the object code either (1) a copy of the -Corresponding Source for all the software in the product that is -covered by this License, on a durable physical medium customarily used -for software interchange, for a price no more than your reasonable -cost of physically performing this conveying of source, or (2) access -to copy the Corresponding Source from a network server at no charge. - -@item -Convey individual copies of the object code with a copy of the written -offer to provide the Corresponding Source. This alternative is -allowed only occasionally and noncommercially, and only if you -received the object code with such an offer, in accord with subsection -6b. - -@item -Convey the object code by offering access from a designated place -(gratis or for a charge), and offer equivalent access to the -Corresponding Source in the same way through the same place at no -further charge. You need not require recipients to copy the -Corresponding Source along with the object code. If the place to copy -the object code is a network server, the Corresponding Source may be -on a different server (operated by you or a third party) that supports -equivalent copying facilities, provided you maintain clear directions -next to the object code saying where to find the Corresponding Source. -Regardless of what server hosts the Corresponding Source, you remain -obligated to ensure that it is available for as long as needed to -satisfy these requirements. - -@item -Convey the object code using peer-to-peer transmission, provided you -inform other peers where the object code and Corresponding Source of -the work are being offered to the general public at no charge under -subsection 6d. - -@end enumerate - -A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - -A ``User Product'' is either (1) a ``consumer product'', which means any -tangible personal property which is normally used for personal, -family, or household purposes, or (2) anything designed or sold for -incorporation into a dwelling. In determining whether a product is a -consumer product, doubtful cases shall be resolved in favor of -coverage. For a particular product received by a particular user, -``normally used'' refers to a typical or common use of that class of -product, regardless of the status of the particular user or of the way -in which the particular user actually uses, or expects or is expected -to use, the product. A product is a consumer product regardless of -whether the product has substantial commercial, industrial or -non-consumer uses, unless such uses represent the only significant -mode of use of the product. - -``Installation Information'' for a User Product means any methods, -procedures, authorization keys, or other information required to -install and execute modified versions of a covered work in that User -Product from a modified version of its Corresponding Source. The -information must suffice to ensure that the continued functioning of -the modified object code is in no case prevented or interfered with -solely because modification has been made. - -If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - -The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or -updates for a work that has been modified or installed by the -recipient, or for the User Product in which it has been modified or -installed. Access to a network may be denied when the modification -itself materially and adversely affects the operation of the network -or violates the rules and protocols for communication across the -network. - -Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - -@item Additional Terms. - -``Additional permissions'' are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - -When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - -Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders -of that material) supplement the terms of this License with terms: - -@enumerate a -@item -Disclaiming warranty or limiting liability differently from the terms -of sections 15 and 16 of this License; or - -@item -Requiring preservation of specified reasonable legal notices or author -attributions in that material or in the Appropriate Legal Notices -displayed by works containing it; or - -@item -Prohibiting misrepresentation of the origin of that material, or -requiring that modified versions of such material be marked in -reasonable ways as different from the original version; or - -@item -Limiting the use for publicity purposes of names of licensors or -authors of the material; or - -@item -Declining to grant rights under trademark law for use of some trade -names, trademarks, or service marks; or - -@item -Requiring indemnification of licensors and authors of that material by -anyone who conveys the material (or modified versions of it) with -contractual assumptions of liability to the recipient, for any -liability that these contractual assumptions directly impose on those -licensors and authors. -@end enumerate - -All other non-permissive additional terms are considered ``further -restrictions'' within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - -If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - -Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; the -above requirements apply either way. - -@item Termination. - -You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - -However, if you cease all violation of this License, then your license -from a particular copyright holder is reinstated (a) provisionally, -unless and until the copyright holder explicitly and finally -terminates your license, and (b) permanently, if the copyright holder -fails to notify you of the violation by some reasonable means prior to -60 days after the cessation. - -Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - -Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - -@item Acceptance Not Required for Having Copies. - -You are not required to accept this License in order to receive or run -a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - -@item Automatic Licensing of Downstream Recipients. - -Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - -An ``entity transaction'' is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - -You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - -@item Patents. - -A ``contributor'' is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's ``contributor version''. - -A contributor's ``essential patent claims'' are all patent claims owned -or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, ``control'' includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - -Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - -In the following three paragraphs, a ``patent license'' is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To ``grant'' such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - -If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. ``Knowingly relying'' means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - -If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - -A patent license is ``discriminatory'' if it does not include within the -scope of its coverage, prohibits the exercise of, or is conditioned on -the non-exercise of one or more of the rights that are specifically -granted under this License. You may not convey a covered work if you -are a party to an arrangement with a third party that is in the -business of distributing software, under which you make payment to the -third party based on the extent of your activity of conveying the -work, and under which the third party grants, to any of the parties -who would receive the covered work from you, a discriminatory patent -license (a) in connection with copies of the covered work conveyed by -you (or copies made from those copies), or (b) primarily for and in -connection with specific products or compilations that contain the -covered work, unless you entered into that arrangement, or that patent -license was granted, prior to 28 March 2007. - -Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - -@item No Surrender of Others' Freedom. - -If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey -a covered work so as to satisfy simultaneously your obligations under -this License and any other pertinent obligations, then as a -consequence you may not convey it at all. For example, if you agree -to terms that obligate you to collect a royalty for further conveying -from those to whom you convey the Program, the only way you could -satisfy both those terms and this License would be to refrain entirely -from conveying the Program. - -@item Use with the GNU Affero General Public License. - -Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - -@item Revised Versions of this License. - -The Free Software Foundation may publish revised and/or new versions -of the GNU General Public License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies that a certain numbered version of the GNU General Public -License ``or any later version'' applies to it, you have the option of -following the terms and conditions either of that numbered version or -of any later version published by the Free Software Foundation. If -the Program does not specify a version number of the GNU General -Public License, you may choose any version ever published by the Free -Software Foundation. - -If the Program specifies that a proxy can decide which future versions -of the GNU General Public License can be used, that proxy's public -statement of acceptance of a version permanently authorizes you to -choose that version for the Program. - -Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - -@item Disclaimer of Warranty. - -THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM ``AS IS'' WITHOUT -WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND -PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE -DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR -CORRECTION. - -@item Limitation of Liability. - -IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR -CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES -ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT -NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR -LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM -TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER -PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -@item Interpretation of Sections... [truncated message content] |
From: <par...@us...> - 2012-04-06 19:07:45
|
Revision: 10172 http://octave.svn.sourceforge.net/octave/?rev=10172&view=rev Author: paramaniac Date: 2012-04-06 19:07:39 +0000 (Fri, 06 Apr 2012) Log Message: ----------- control: fix seealso command in pdf manual, macro taken from octave manual Modified Paths: -------------- trunk/octave-forge/main/control/devel/pdfdoc/control.tex Modified: trunk/octave-forge/main/control/devel/pdfdoc/control.tex =================================================================== --- trunk/octave-forge/main/control/devel/pdfdoc/control.tex 2012-04-06 16:54:31 UTC (rev 10171) +++ trunk/octave-forge/main/control/devel/pdfdoc/control.tex 2012-04-06 19:07:39 UTC (rev 10172) @@ -8,6 +8,27 @@ @c @afourwide @c %**end of header + +@c The following macro is used for the on-line help system, but we don't +@c want lots of `See also: foo, bar, and baz' strings cluttering the +@c printed manual (that information should be in the supporting text for +@c each group of functions and variables). + +@macro seealso {args} +@iftex +@vskip 2pt +@end iftex +@ifnottex +@c Texinfo @sp should work but in practice produces ugly results for HTML. +@c A simple blank line produces the correct behavior. +@c @sp 1 + +@end ifnottex +@noindent +@strong{See also:} \args\. +@end macro + + @c %*** Start of TITLEPAGE @titlepage @title control @value{VERSION} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mma...@us...> - 2012-04-06 16:54:38
|
Revision: 10171 http://octave.svn.sourceforge.net/octave/?rev=10171&view=rev Author: mmarzolla Date: 2012-04-06 16:54:31 +0000 (Fri, 06 Apr 2012) Log Message: ----------- Restructuring documentation dir Modified Paths: -------------- trunk/octave-forge/main/queueing/Makefile trunk/octave-forge/main/queueing/doc/Makefile Added Paths: ----------- trunk/octave-forge/main/queueing/doc/demos/Makefile trunk/octave-forge/main/queueing/doc/help/Makefile Modified: trunk/octave-forge/main/queueing/Makefile =================================================================== --- trunk/octave-forge/main/queueing/Makefile 2012-04-06 16:16:17 UTC (rev 10170) +++ trunk/octave-forge/main/queueing/Makefile 2012-04-06 16:54:31 UTC (rev 10171) @@ -5,7 +5,7 @@ DISTNAME=$(PROGNAME)-$(VERSIONNUM) SUBDIRS=inst doc test devel DISTFILES=COPYING NEWS DESCRIPTION -DISTSUBDIRS=inst doc +DISTSUBDIRS=inst doc doc/demos doc/help .PHONY: clean check Modified: trunk/octave-forge/main/queueing/doc/Makefile =================================================================== --- trunk/octave-forge/main/queueing/doc/Makefile 2012-04-06 16:16:17 UTC (rev 10170) +++ trunk/octave-forge/main/queueing/doc/Makefile 2012-04-06 16:54:31 UTC (rev 10171) @@ -1,6 +1,7 @@ DOC=queueing CHAPTERS=$(wildcard *.texi) -DISTFILES=README INSTALL $(DOC).pdf $(DOC).html $(DOC).texi $(CHAPTERS) demos/ help/ +DISTFILES=README INSTALL $(DOC).pdf $(DOC).html $(DOC).texi $(CHAPTERS) +SUBDIRS=demos help .PHONY: clean dist @@ -16,26 +17,32 @@ -$(MAKEINFO) -D INSTALLONLY \ --no-validate --no-headers --no-split --output INSTALL $< -$(DOC).html: $(DOC).texi $(CHAPTERS) DEMOS HELP +$(DOC).html: $(DOC).texi $(CHAPTERS) demos/DONE help/DONE -$(MAKEINFO) --html --no-split $(DOC).texi -$(DOC).pdf: $(DOC).texi $(CHAPTERS) DEMOS HELP +$(DOC).pdf: $(DOC).texi $(CHAPTERS) demos/DONE help/DONE texi2pdf -o $(DOC).pdf $(DOC).texi -$(DOC).info: $(DOC).texi $(CHAPTERS) DEMOS HELP +$(DOC).info: $(DOC).texi $(CHAPTERS) demos/DONE help/DONE -$(MAKEINFO) $(DOC).texi -DEMOS: - cd demos && octave -p ../../inst/ -q ../grabdemo.m ../../inst/ && touch ../DEMOS +demos/DONE: + $(MAKE) -C demos -HELP: - cd help && octave -p ../../inst/ -q ../grabhelp.m ../../inst/ && touch ../HELP +help/DONE: + $(MAKE) -C help dist: ln $(DISTFILES) ../`cat ../fname`/doc/ clean: - \rm -f *.fns *.pdf *.aux *.log *.dvi *.out *.info *.html *.ky *.tp *.toc *.vr *.cp *.fn *.pg *.op *.au *.aus *.cps x.log *~ demos/*.texi help/*.texi DOCSTRINGS DEMOS HELP INSTALL + for d in $(SUBDIRS); do \ + $(MAKE) -C $$d $(MAKECMDGOALS); \ + done + \rm -f *.fns *.pdf *.aux *.log *.dvi *.out *.info *.html *.ky *.tp *.toc *.vr *.cp *.fn *.pg *.op *.au *.aus *.cps x.log *~ DOCSTRINGS DEMOS HELP INSTALL distclean: clean + for d in $(SUBDIRS); do \ + $(MAKE) -C $$d $(MAKECMDGOALS); \ + done Added: trunk/octave-forge/main/queueing/doc/demos/Makefile =================================================================== --- trunk/octave-forge/main/queueing/doc/demos/Makefile (rev 0) +++ trunk/octave-forge/main/queueing/doc/demos/Makefile 2012-04-06 16:54:31 UTC (rev 10171) @@ -0,0 +1,13 @@ +DISTFILES=$(wildcard *.texi) + +ALL: + octave -p ../../inst/ -q ../grabdemo.m ../../inst/ && touch DONE + +dist: + ln $(DISTFILES) ../../`cat ../../fname`/doc/demos + +clean: + \rm -f *.texi *~ DONE + +distclean: clean + Added: trunk/octave-forge/main/queueing/doc/help/Makefile =================================================================== --- trunk/octave-forge/main/queueing/doc/help/Makefile (rev 0) +++ trunk/octave-forge/main/queueing/doc/help/Makefile 2012-04-06 16:54:31 UTC (rev 10171) @@ -0,0 +1,13 @@ +DISTFILES=$(wildcard *.texi) + +ALL: + octave -p ../../inst/ -q ../grabhelp.m ../../inst/ && touch DONE + +dist: + ln $(DISTFILES) ../../`cat ../../fname`/doc/help + +clean: + \rm -f *.texi *~ DONE + +distclean: clean + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mma...@us...> - 2012-04-06 16:16:23
|
Revision: 10170 http://octave.svn.sourceforge.net/octave/?rev=10170&view=rev Author: mmarzolla Date: 2012-04-06 16:16:17 +0000 (Fri, 06 Apr 2012) Log Message: ----------- removed unused target Modified Paths: -------------- trunk/octave-forge/main/queueing/doc/Makefile Modified: trunk/octave-forge/main/queueing/doc/Makefile =================================================================== --- trunk/octave-forge/main/queueing/doc/Makefile 2012-04-06 16:12:18 UTC (rev 10169) +++ trunk/octave-forge/main/queueing/doc/Makefile 2012-04-06 16:16:17 UTC (rev 10170) @@ -1,6 +1,6 @@ DOC=queueing CHAPTERS=$(wildcard *.texi) -DISTFILES=README INSTALL $(DOC).pdf $(DOC).html $(DOC).texi $(CHAPTERS) $(wildcard demos/*.texi) $(wildcard help/*.texi) +DISTFILES=README INSTALL $(DOC).pdf $(DOC).html $(DOC).texi $(CHAPTERS) demos/ help/ .PHONY: clean dist @@ -25,9 +25,6 @@ $(DOC).info: $(DOC).texi $(CHAPTERS) DEMOS HELP -$(MAKEINFO) $(DOC).texi -DOCSTRINGS: $(wildcard ../inst/*.m) - (cd ../scripts; ./mkdoc ../inst) > DOCSTRINGS || \rm -f DOCSTRINGS - DEMOS: cd demos && octave -p ../../inst/ -q ../grabdemo.m ../../inst/ && touch ../DEMOS This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mma...@us...> - 2012-04-06 16:12:28
|
Revision: 10169 http://octave.svn.sourceforge.net/octave/?rev=10169&view=rev Author: mmarzolla Date: 2012-04-06 16:12:18 +0000 (Fri, 06 Apr 2012) Log Message: ----------- documentation restructuring Modified Paths: -------------- trunk/octave-forge/main/queueing/doc/Makefile trunk/octave-forge/main/queueing/doc/queueing.html trunk/octave-forge/main/queueing/doc/queueing.pdf Added Paths: ----------- trunk/octave-forge/main/queueing/doc/markovchains.texi trunk/octave-forge/main/queueing/doc/singlestation.texi Removed Paths: ------------- trunk/octave-forge/main/queueing/doc/markovchains.txi trunk/octave-forge/main/queueing/doc/singlestation.txi Modified: trunk/octave-forge/main/queueing/doc/Makefile =================================================================== --- trunk/octave-forge/main/queueing/doc/Makefile 2012-04-06 16:06:56 UTC (rev 10168) +++ trunk/octave-forge/main/queueing/doc/Makefile 2012-04-06 16:12:18 UTC (rev 10169) @@ -38,7 +38,7 @@ ln $(DISTFILES) ../`cat ../fname`/doc/ clean: - \rm -f *.fns *.pdf *.aux *.log *.dvi *.out *.info *.html *.ky *.tp *.toc *.vr *.cp *.fn *.pg *.op *.au *.aus *.cps x.log *~ demos/*.texi help/*.texi DOCSTRINGS DEMOS HELP $(CHAPTERS) INSTALL + \rm -f *.fns *.pdf *.aux *.log *.dvi *.out *.info *.html *.ky *.tp *.toc *.vr *.cp *.fn *.pg *.op *.au *.aus *.cps x.log *~ demos/*.texi help/*.texi DOCSTRINGS DEMOS HELP INSTALL distclean: clean Copied: trunk/octave-forge/main/queueing/doc/markovchains.texi (from rev 10167, trunk/octave-forge/main/queueing/doc/markovchains.txi) =================================================================== --- trunk/octave-forge/main/queueing/doc/markovchains.texi (rev 0) +++ trunk/octave-forge/main/queueing/doc/markovchains.texi 2012-04-06 16:12:18 UTC (rev 10169) @@ -0,0 +1,697 @@ +@c -*- texinfo -*- + +@c Copyright (C) 2008, 2009, 2010, 2011, 2012 Moreno Marzolla +@c +@c This file is part of the queueing toolbox, a Queueing Networks +@c analysis package for GNU Octave. +@c +@c The queueing toolbox is free software; you can redistribute it +@c and/or modify it under the terms of the GNU General Public License +@c as published by the Free Software Foundation; either version 3 of +@c the License, or (at your option) any later version. +@c +@c The queueing toolbox is distributed in the hope that it will be +@c useful, but WITHOUT ANY WARRANTY; without even the implied warranty +@c of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +@c GNU General Public License for more details. +@c +@c You should have received a copy of the GNU General Public License +@c along with the queueing toolbox; see the file COPYING. If not, see +@c <http://www.gnu.org/licenses/>. + +@node Markov Chains +@chapter Markov Chains + +@menu +* Discrete-Time Markov Chains:: +* Continuous-Time Markov Chains:: +@end menu + +@node Discrete-Time Markov Chains +@section Discrete-Time Markov Chains + +Let @math{X_0, X_1, @dots{}, X_n, @dots{} } be a sequence of random +variables defined over a discete state space @math{0, 1, 2, +@dots{}}. The sequence @math{X_0, X_1, @dots{}, X_n, @dots{}} is a +@emph{stochastic process} with discrete time @math{0, 1, 2, +@dots{}}. A @emph{Markov chain} is a stochastic process @math{@{X_n, +n=0, 1, 2, @dots{}@}} which satisfies the following Markov property: + +@iftex +@tex +$$\eqalign{P\left(X_{n+1} = x_{n+1}\ |\ X_n = x_n, X_{n-1} = x_{n-1}, \ldots, X_0 = x_0 \right) \cr +& = P\left(X_{n+1} = x_{n+1}\ |\ X_n = x_n\right)}$$ +@end tex +@end iftex +@ifnottex +@math{P(X_{n+1} = x_{n+1} | X_n = x_n, X_{n-1} = x_{n-1}, ..., X_0 = x_0) = P(X_{n+1} = x_{n+1} | X_n = x_n)} +@end ifnottex + +@noindent which basically means that the probability that the system is in +a particular state at time @math{n+1} only depends on the state the +system was at time @math{n}. + +The evolution of a Markov chain with finite state space @math{@{1, 2, +@dots{}, N@}} can be fully described by a stochastic matrix @math{{\bf +P}(n) = [ P_{i,j}(n) ]} such that @math{P_{i, j}(n) = P( X_{n+1} = j\ +|\ X_n = i )}. If the Markov chain is homogeneous (that is, the +transition probability matrix @math{{\bf P}(n)} is time-independent), +we can write @math{{\bf P} = [P_{i, j}]}, where @math{P_{i, j} = P( +X_{n+1} = j\ |\ X_n = i )} for all @math{n=0, 1, @dots{}}. + +The transition probability matrix @math{\bf P} must satisfy the +following two properties: (1) @math{P_{i, j} @geq{} 0} for all +@math{i, j}, and (2) @math{\sum_{j=1}^N P_{i,j} = 1} for all @math{i} + +@c +@include help/dtmc_check_P.texi + +@menu +* State occupancy probabilities (DTMC):: +* Birth-death process (DTMC):: +* Expected number of visits (DTMC):: +* Time-averaged expected sojourn times (DTMC):: +* Mean time to absorption (DTMC):: +* First passage times (DTMC):: +@end menu + +@c +@c +@c +@node State occupancy probabilities (DTMC) +@subsection State occupancy probabilities + +We denote with @math{{\bf \pi}(n) = \left(\pi_1(n), \pi_2(n), @dots{}, +\pi_N(n) \right)} the @emph{state occupancy probability vector} at +step @math{n}. @math{\pi_i(n)} denotes the probability that the system +is in state @math{i} after @math{n} transitions. + +Given the transition probability matrix @math{\bf P} and the initial +state occupancy probability vector @math{{\bf \pi}(0) = +\left(\pi_1(0), \pi_2(0), @dots{}, \pi_N(0)\right)}, @math{{\bf +\pi}(n)} can be computed as: + +@iftex +@tex +$${\bf \pi}(n) = {\bf \pi}(0) {\bf P}^n$$ +@end tex +@end iftex +@ifnottex +@example +@group +\pi(n) = \pi(0) P^n +@end group +@end example +@end ifnottex + +Under certain conditions, there exists a @emph{stationary state +occupancy probability} @math{{\bf \pi} = \lim_{n \rightarrow +\infty} +{\bf \pi}(n)}, which is independent from @math{{\bf \pi}(0)}. The +stationary vector @math{\bf \pi} is the solution of the following +linear system: + +@iftex +@tex +$$ +\left\{ \eqalign{ +{\bf \pi P} & = {\bf \pi} \cr +{\bf \pi 1}^T & = 1 +} \right. +$$ +@end tex +@end iftex +@ifnottex +@example +@group +/ +| \pi P = \pi +| \pi 1^T = 1 +\ +@end group +@end example +@end ifnottex + +@noindent where @math{\bf 1} is the row vector of ones, and @math{( \cdot )^T} +the transpose operator. + +@c +@include help/dtmc.texi + +@noindent @strong{EXAMPLE} + +This example is from [GrSn97]. Let us consider a maze with nine rooms, +as shown in the following figure + +@example +@group ++-----+-----+-----+ +| | | | +| 1 2 3 | +| | | | ++- -+- -+- -+ +| | | | +| 4 5 6 | +| | | | ++- -+- -+- -+ +| | | | +| 7 8 9 | +| | | | ++-----+-----+-----+ +@end group +@end example + +A mouse is placed in one of the rooms and can wander around. At each +step, the mouse moves from the current room to a neighboring one with +equal probability: if it is in room 1, it can move to room 2 and 4 +with probability 1/2, respectively. If the mouse is in room 8, it can +move to either 7, 5 or 9 with probability 1/3. + +The transition probability @math{\bf P} from room @math{i} to room +@math{j} is the following: + +@iftex +@tex +$$ {\bf P} = +\pmatrix{ 0 & 1/2 & 0 & 1/2 & 0 & 0 & 0 & 0 & 0 \cr + 1/3 & 0 & 1/3 & 0 & 1/3 & 0 & 0 & 0 & 0 \cr + 0 & 1/2 & 0 & 0 & 0 & 1/2 & 0 & 0 & 0 \cr + 1/3 & 0 & 0 & 0 & 1/3 & 0 & 1/3 & 0 & 0 \cr + 0 & 1/4 & 0 & 1/4 & 0 & 1/4 & 0 & 1/4 & 0 \cr + 0 & 0 & 1/3 & 0 & 1/3 & 0 & 0 & 0 & 1/3 \cr + 0 & 0 & 0 & 1/2 & 0 & 0 & 0 & 1/2 & 0 \cr + 0 & 0 & 0 & 0 & 1/3 & 0 & 1/3 & 0 & 1/3 \cr + 0 & 0 & 0 & 0 & 0 & 1/2 & 0 & 1/2 & 0 } +$$ +@end tex +@end iftex +@ifnottex +@example +@group + / 0 1/2 0 1/2 0 0 0 0 0 \ + | 1/3 0 1/3 0 1/3 0 0 0 0 | + | 0 1/2 0 0 0 1/2 0 0 0 | + | 1/3 0 0 0 1/3 0 1/3 0 0 | + P = | 0 1/4 0 1/4 0 1/4 0 1/4 0 | + | 0 0 1/3 0 1/3 0 0 0 1/3 | + | 0 0 0 1/2 0 0 0 1/2 0 | + | 0 0 0 0 1/3 0 1/3 0 1/3 | + \ 0 0 0 0 0 1/2 0 1/2 0 / +@end group +@end example +@end ifnottex + +The stationary state occupancy probability vector can be computed +using the following code: + +@example +@c @group +@include demos/demo_1_dtmc.texi +@c @end group + @result{} 0.083333 0.125000 0.083333 0.125000 + 0.166667 0.125000 0.083333 0.125000 + 0.083333 +@end example + +@c +@node Birth-death process (DTMC) +@subsection Birth-death process + +@include help/dtmc_bd.texi + +@c +@node Expected number of visits (DTMC) +@subsection Expected Number of Visits + +Given a @math{N} state discrete-time Markov chain with transition +matrix @math{\bf P} and an integer @math{n @geq{} 0}, we let +@math{L_i(n)} be the the expected number of visits to state @math{i} +during the first @math{n} transitions. The vector @math{{\bf L}(n) = +( L_1(n), L_2(n), @dots{}, L_N(n) )} is defined as + +@iftex +@tex +$$ {\bf L}(n) = \sum_{i=0}^n {\bf \pi}(i) = \sum_{i=0}^n {\bf \pi}(0) {\bf P}^i $$ +@end tex +@end iftex +@ifnottex +@example +@group + n n + ___ ___ + \ \ i +L(n) = > pi(i) = > pi(0) P + /___ /___ + i=0 i=0 +@end group +@end example +@end ifnottex + +@noindent where @math{{\bf \pi}(i) = {\bf \pi}(0){\bf P}^i} is the state +occupancy probability after @math{i} transitions. + +If @math{\bf P} is absorbing, i.e., the stochastic process eventually +reaches a state with no outgoing transitions with probability 1, then +we can compute the expected number of visits until absorption +@math{\bf L}. To do so, we first rearrange the states to rewrite +matrix @math{\bf P} as: + +@iftex +@tex +$$ {\bf P} = \pmatrix{ {\bf Q} & {\bf R} \cr + {\bf 0} & {\bf I} }$$ +@end tex +@end iftex +@ifnottex +@example +@group + / Q | R \ +P = |---+---| + \ 0 | I / +@end group +@end example +@end ifnottex + +@noindent where the first @math{t} states are transient +and the last @math{r} states are absorbing (@math{t+r = N}). The +matrix @math{{\bf N} = ({\bf I} - {\bf Q})^{-1}} is called the +@emph{fundamental matrix}; @math{N_{i,j}} is the expected number of +times that the process is in the @math{j}-th transient state if it +started in the @math{i}-th transient state. If we reshape @math{\bf N} +to the size of @math{\bf P} (filling missing entries with zeros), we +have that, for absorbing chains @math{{\bf L} = {\bf \pi}(0){\bf N}}. + +@include help/dtmc_exps.texi + +@c +@node Time-averaged expected sojourn times (DTMC) +@subsection Time-averaged expected sojourn times + +@include help/dtmc_taexps.texi + +@c +@node Mean time to absorption (DTMC) +@subsection Mean Time to Absorption + +The @emph{mean time to absorption} is defined as the average number of +transitions which are required to reach an absorbing state, starting +from a transient state (or given an initial state occupancy +probability vector @math{{\bf \pi}(0)}). + +Let @math{{\bf t}_i} be the expected number of transitions before +being absorbed in any absorbing state, starting from state @math{i}. +Vector @math{\bf t} can be computed from the fundamental matrix +@math{\bf N} (@pxref{Expected number of visits (DTMC)}) as + +@iftex +@tex +$$ {\bf t} = {\bf 1 N} $$ +@end tex +@end iftex +@ifnottex +@example +t = 1 N +@end example +@end ifnottex + +Let @math{{\bf B} = [ B_{i, j} ]} be a matrix where @math{B_{i, j}} is +the probability of being absorbed in state @math{j}, starting from +transient state @math{i}. Again, using matrices @math{\bf N} and +@math{\bf R} (@pxref{Expected number of visits (DTMC)}) we can write + +@iftex +@tex +$$ {\bf B} = {\bf N R} $$ +@end tex +@end iftex +@ifnottex +@example +B = N R +@end example +@end ifnottex + +@include help/dtmc_mtta.texi + +@c +@node First passage times (DTMC) +@subsection First Passage Times + +The First Passage Time @math{M_{i, j}} is the average number of +transitions needed to visit state @math{j} for the first time, +starting from state @math{i}. Matrix @math{\bf M} satisfies the +property that + +@iftex +@tex +$$ M_{i, j} = 1 + \sum_{k \neq j} P_{i, k} M_{k, j}$$ +@end tex +@end iftex +@ifnottex +@example +@group + ___ + \ +M_ij = 1 + > P_ij * M_kj + /___ + k!=j +@end group +@end example +@end ifnottex + +To compute @math{{\bf M} = [ M_{i, j}]} a different formulation is +used. Let @math{\bf W} be the @math{N \times N} matrix having each +row equal to the steady-state probability vector @math{\bf \pi} for +@math{\bf P}; let @math{\bf I} be the @math{N \times N} identity +matrix. Define @math{\bf Z} as follows: + +@iftex +@tex +$$ {\bf Z} = \left( {\bf I} - {\bf P} + {\bf W} \right)^{-1} $$ +@end tex +@end iftex +@ifnottex +@example +@group + -1 +Z = (I - P + W) +@end group +@end example +@end ifnottex + +@noindent Then, we have that + +@iftex +@tex +$$ M_{i, j} = {Z_{j, j} - Z_{i, j} \over \pi_j} $$ +@end tex +@end iftex +@ifnottex +@example +@group + Z_jj - Z_ij +M_ij = ----------- + \pi_j +@end group +@end example +@end ifnottex + +According to the definition above, @math{M_{i,i} = 0}. We arbitrarily +let @math{M_{i,i}} to be the @emph{mean recurrence time} @math{r_i} +for state @math{i}, that is the average number of transitions needed +to return to state @math{i} starting from it. @math{r_i} is: + +@iftex +@tex +$$ r_i = {1 \over \pi_i} $$ +@end tex +@end iftex +@ifnottex +@example +@group + 1 +r_i = ----- + \pi_i +@end group +@end example +@end ifnottex + +@include help/dtmc_fpt.texi + +@c +@c +@c +@node Continuous-Time Markov Chains +@section Continuous-Time Markov Chains + +A stochastic process @math{@{X(t), t @geq{} 0@}} is a continuous-time +Markov chain if, for all integers @math{n}, and for any sequence +@math{t_0, t_1 , \ldots, t_n, t_{n+1}} such that @math{t_0 < t_1 < +\ldots < t_n < t_{n+1}}, we have + +@iftex +@tex +$$\eqalign{P(X(t_{n+1}) = x_{n+1}\ |\ X(t_n) = x_n, X(t_{n-1}) = x_{n-1}, \ldots, X(t_0) = x_0) \cr +&= P(X(t_{n+1}) = x_{n+1}\ |\ X(t_n) = x_n)}$$ +@end tex +@end iftex +@ifnottex +@math{P(X_{n+1} = x_{n+1} | X_n = x_n, X_{n-1} = x_{n-1}, ..., X_0 = x_0) = P(X_{n+1} = x_{n+1} | X_n = x_n)} +@end ifnottex + +A continuous-time Markov chain is defined according to an +@emph{infinitesimal generator matrix} @math{{\bf Q} = [Q_{i,j}]}, +where for each @math{i \neq j}, @math{Q_{i, j}} is the transition rate +from state @math{i} to state @math{j}. The matrix @math{\bf Q} must +satisfy the property that, for all @math{i}, @math{\sum_{j=1}^N Q_{i, +j} = 0}. + +@include help/ctmc_check_Q.texi + +@menu +* State occupancy probabilities (CTMC):: +* Birth-death process (CTMC):: +* Expected sojourn times (CTMC):: +* Time-averaged expected sojourn times (CTMC):: +* Mean time to absorption (CTMC):: +* First passage times (CTMC):: +@end menu + +@node State occupancy probabilities (CTMC) +@subsection State occupancy probabilities + +Similarly to the discrete case, we denote with @math{{\bf \pi}(t) = +(\pi_1(t), \pi_2(t), @dots{}, \pi_N(t) )} the @emph{state occupancy +probability vector} at time @math{t}. @math{\pi_i(t)} is the +probability that the system is in state @math{i} at time @math{t +@geq{} 0}. + +Given the infinitesimal generator matrix @math{\bf Q} and the initial +state occupancy probabilities @math{{\bf \pi}(0) = (\pi_1(0), +\pi_2(0), @dots{}, \pi_N(0))}, the state occupancy probabilities +@math{{\bf \pi}(t)} at time @math{t} can be computed as: + +@iftex +@tex +$${\bf \pi}(t) = {\bf \pi}(0) \exp( {\bf Q} t )$$ +@end tex +@end iftex +@ifnottex +@example +@group +\pi(t) = \pi(0) exp(Qt) +@end group +@end example +@end ifnottex + +@noindent where @math{\exp( {\bf Q} t )} is the matrix exponential +of @math{{\bf Q} t}. Under certain conditions, there exists a +@emph{stationary state occupancy probability} @math{{\bf \pi} = +\lim_{t \rightarrow +\infty} {\bf \pi}(t)}, which is independent from +@math{{\bf \pi}(0)}. @math{\bf \pi} is the solution of the following +linear system: + +@iftex +@tex +$$ +\left\{ \eqalign{ +{\bf \pi Q} & = {\bf 0} \cr +{\bf \pi 1}^T & = 1 +} \right. +$$ +@end tex +@end iftex +@ifnottex +@example +@group +/ +| \pi Q = 0 +| \pi 1^T = 1 +\ +@end group +@end example +@end ifnottex + +@include help/ctmc.texi + +@noindent @strong{EXAMPLE} + +Consider a two-state CTMC such that transition rates between states +are equal to 1. This can be solved as follows: + +@example +@group +@include demos/demo_1_ctmc.texi + @result{} q = 0.50000 0.50000 +@end group +@end example + +@c +@c +@c +@node Birth-death process (CTMC) +@subsection Birth-Death Process + +@include help/ctmc_bd.texi + +@c +@c +@c +@node Expected sojourn times (CTMC) +@subsection Expected Sojourn Times + +Given a @math{N} state continuous-time Markov Chain with infinitesimal +generator matrix @math{\bf Q}, we define the vector @math{{\bf L}(t) = +(L_1(t), L_2(t), \ldots, L_N(t))} such that @math{L_i(t)} is the +expected sojourn time in state @math{i} during the interval +@math{[0,t)}, assuming that the initial occupancy probability at time +0 was @math{{\bf \pi}(0)}. @math{{\bf L}(t)} can be expressed as the +solution of the following differential equation: + +@iftex +@tex +$$ { d{\bf L}(t) \over dt} = {\bf L}(t){\bf Q} + {\bf \pi}(0), \qquad {\bf L}(0) = {\bf 0} $$ +@end tex +@end iftex +@ifnottex +@example +@group + dL + --(t) = L(t) Q + pi(0), L(0) = 0 + dt +@end group +@end example +@end ifnottex + +Alternatively, @math{{\bf L}(t)} can also be expressed in integral +form as: + +@iftex +@tex +$$ {\bf L}(t) = \int_0^t {\bf \pi}(u) du$$ +@end tex +@end iftex +@ifnottex +@example +@group + / t +L(t) = | pi(u) du + / 0 +@end group +@end example +@end ifnottex + +@noindent where @math{{\bf \pi}(t) = {\bf \pi}(0) \exp({\bf Q}t)} is +the state occupancy probability at time @math{t}; @math{\exp({\bf Q}t)} +is the matrix exponential of @math{{\bf Q}t}. + +@include help/ctmc_exps.texi + +@noindent @strong{EXAMPLE} + +Let us consider a pure-birth, 4-states CTMC such that the transition +rate from state @math{i} to state @math{i+1} is @math{\lambda_i = i +\lambda} (@math{i=1, 2, 3}), with @math{\lambda = 0.5}. The following +code computes the expected sojourn time in state @math{i}, +given the initial occupancy probability @math{{\bf \pi}_0=(1,0,0,0)}. + +@example +@group +@include demos/demo_1_ctmc_exps.texi +@end group +@end example + +@c +@c +@c +@node Time-averaged expected sojourn times (CTMC) +@subsection Time-Averaged Expected Sojourn Times + +@include help/ctmc_taexps.texi + +@noindent @strong{EXAMPLE} + +@example +@group +@include demos/demo_1_ctmc_taexps.texi +@end group +@end example + +@c +@c +@c +@node Mean time to absorption (CTMC) +@subsection Mean Time to Absorption + +If we consider a Markov Chain with absorbing states, it is possible to +define the @emph{expected time to absorption} as the expected time +until the system goes into an absorbing state. More specifically, let +us suppose that @math{A} is the set of transient (i.e., non-absorbing) +states of a CTMC with @math{N} states and infinitesimal generator +matrix @math{\bf Q}. The expected time to absorption @math{{\bf +L}_A(\infty)} is defined as the solution of the following equation: + +@iftex +@tex +$$ {\bf L}_A(\infty){\bf Q}_A = -{\bf \pi}_A(0) $$ +@end tex +@end iftex +@ifnottex +@example +@group +L_A( inf ) Q_A = -pi_A(0) +@end group +@end example +@end ifnottex + +@noindent where @math{{\bf Q}_A} is the restriction of matrix @math{\bf Q} to +only states in @math{A}, and @math{{\bf \pi}_A(0)} is the initial +state occupancy probability at time 0, restricted to states in +@math{A}. + +@include help/ctmc_mtta.texi + +@noindent @strong{EXAMPLE} + +Let us consider a simple model of a redundant disk array. We assume +that the array is made of 5 independent disks, such that the array can +tolerate up to 2 disk failures without losing data. If three or more +disks break, the array is dead and unrecoverable. We want to estimate +the Mean-Time-To-Failure (MTTF) of the disk array. + +We model this system as a 4 states Markov chain with state space +@math{\{ 2, 3, 4, 5 \}}. State @math{i} denotes the fact that exactly +@math{i} disks are active; state @math{2} is absorbing. Let @math{\mu} +be the failure rate of a single disk. The system starts in state +@math{5} (all disks are operational). We use a pure death process, +with death rate from state @math{i} to state @math{i-1} is @math{\mu +i}, for @math{i = 3, 4, 5}). + +The MTTF of the disk array is the MTTA of the Markov Chain, and can be +computed with the following expression: + +@example +@group +@include demos/demo_1_ctmc_mtta.texi + @result{} t = 78.333 +@end group +@end example + +@noindent @strong{REFERENCES} + +G. Bolch, S. Greiner, H. de Meer and +K. Trivedi, @cite{Queueing Networks and Markov Chains: Modeling and +Performance Evaluation with Computer Science Applications}, Wiley, +1998. + +@auindex Bolch, G. +@auindex Greiner, S. +@auindex de Meer, H. +@auindex Trivedi, K. + +@c +@c +@c +@node First passage times (CTMC) +@subsection First Passage Times + +@include help/ctmc_fpt.texi + Deleted: trunk/octave-forge/main/queueing/doc/markovchains.txi =================================================================== --- trunk/octave-forge/main/queueing/doc/markovchains.txi 2012-04-06 16:06:56 UTC (rev 10168) +++ trunk/octave-forge/main/queueing/doc/markovchains.txi 2012-04-06 16:12:18 UTC (rev 10169) @@ -1,697 +0,0 @@ -@c -*- texinfo -*- - -@c Copyright (C) 2008, 2009, 2010, 2011, 2012 Moreno Marzolla -@c -@c This file is part of the queueing toolbox, a Queueing Networks -@c analysis package for GNU Octave. -@c -@c The queueing toolbox is free software; you can redistribute it -@c and/or modify it under the terms of the GNU General Public License -@c as published by the Free Software Foundation; either version 3 of -@c the License, or (at your option) any later version. -@c -@c The queueing toolbox is distributed in the hope that it will be -@c useful, but WITHOUT ANY WARRANTY; without even the implied warranty -@c of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -@c GNU General Public License for more details. -@c -@c You should have received a copy of the GNU General Public License -@c along with the queueing toolbox; see the file COPYING. If not, see -@c <http://www.gnu.org/licenses/>. - -@node Markov Chains -@chapter Markov Chains - -@menu -* Discrete-Time Markov Chains:: -* Continuous-Time Markov Chains:: -@end menu - -@node Discrete-Time Markov Chains -@section Discrete-Time Markov Chains - -Let @math{X_0, X_1, @dots{}, X_n, @dots{} } be a sequence of random -variables defined over a discete state space @math{0, 1, 2, -@dots{}}. The sequence @math{X_0, X_1, @dots{}, X_n, @dots{}} is a -@emph{stochastic process} with discrete time @math{0, 1, 2, -@dots{}}. A @emph{Markov chain} is a stochastic process @math{@{X_n, -n=0, 1, 2, @dots{}@}} which satisfies the following Markov property: - -@iftex -@tex -$$\eqalign{P\left(X_{n+1} = x_{n+1}\ |\ X_n = x_n, X_{n-1} = x_{n-1}, \ldots, X_0 = x_0 \right) \cr -& = P\left(X_{n+1} = x_{n+1}\ |\ X_n = x_n\right)}$$ -@end tex -@end iftex -@ifnottex -@math{P(X_{n+1} = x_{n+1} | X_n = x_n, X_{n-1} = x_{n-1}, ..., X_0 = x_0) = P(X_{n+1} = x_{n+1} | X_n = x_n)} -@end ifnottex - -@noindent which basically means that the probability that the system is in -a particular state at time @math{n+1} only depends on the state the -system was at time @math{n}. - -The evolution of a Markov chain with finite state space @math{@{1, 2, -@dots{}, N@}} can be fully described by a stochastic matrix @math{{\bf -P}(n) = [ P_{i,j}(n) ]} such that @math{P_{i, j}(n) = P( X_{n+1} = j\ -|\ X_n = i )}. If the Markov chain is homogeneous (that is, the -transition probability matrix @math{{\bf P}(n)} is time-independent), -we can write @math{{\bf P} = [P_{i, j}]}, where @math{P_{i, j} = P( -X_{n+1} = j\ |\ X_n = i )} for all @math{n=0, 1, @dots{}}. - -The transition probability matrix @math{\bf P} must satisfy the -following two properties: (1) @math{P_{i, j} @geq{} 0} for all -@math{i, j}, and (2) @math{\sum_{j=1}^N P_{i,j} = 1} for all @math{i} - -@c -@include help/dtmc_check_P.texi - -@menu -* State occupancy probabilities (DTMC):: -* Birth-death process (DTMC):: -* Expected number of visits (DTMC):: -* Time-averaged expected sojourn times (DTMC):: -* Mean time to absorption (DTMC):: -* First passage times (DTMC):: -@end menu - -@c -@c -@c -@node State occupancy probabilities (DTMC) -@subsection State occupancy probabilities - -We denote with @math{{\bf \pi}(n) = \left(\pi_1(n), \pi_2(n), @dots{}, -\pi_N(n) \right)} the @emph{state occupancy probability vector} at -step @math{n}. @math{\pi_i(n)} denotes the probability that the system -is in state @math{i} after @math{n} transitions. - -Given the transition probability matrix @math{\bf P} and the initial -state occupancy probability vector @math{{\bf \pi}(0) = -\left(\pi_1(0), \pi_2(0), @dots{}, \pi_N(0)\right)}, @math{{\bf -\pi}(n)} can be computed as: - -@iftex -@tex -$${\bf \pi}(n) = {\bf \pi}(0) {\bf P}^n$$ -@end tex -@end iftex -@ifnottex -@example -@group -\pi(n) = \pi(0) P^n -@end group -@end example -@end ifnottex - -Under certain conditions, there exists a @emph{stationary state -occupancy probability} @math{{\bf \pi} = \lim_{n \rightarrow +\infty} -{\bf \pi}(n)}, which is independent from @math{{\bf \pi}(0)}. The -stationary vector @math{\bf \pi} is the solution of the following -linear system: - -@iftex -@tex -$$ -\left\{ \eqalign{ -{\bf \pi P} & = {\bf \pi} \cr -{\bf \pi 1}^T & = 1 -} \right. -$$ -@end tex -@end iftex -@ifnottex -@example -@group -/ -| \pi P = \pi -| \pi 1^T = 1 -\ -@end group -@end example -@end ifnottex - -@noindent where @math{\bf 1} is the row vector of ones, and @math{( \cdot )^T} -the transpose operator. - -@c -@include help/dtmc.texi - -@noindent @strong{EXAMPLE} - -This example is from [GrSn97]. Let us consider a maze with nine rooms, -as shown in the following figure - -@example -@group -+-----+-----+-----+ -| | | | -| 1 2 3 | -| | | | -+- -+- -+- -+ -| | | | -| 4 5 6 | -| | | | -+- -+- -+- -+ -| | | | -| 7 8 9 | -| | | | -+-----+-----+-----+ -@end group -@end example - -A mouse is placed in one of the rooms and can wander around. At each -step, the mouse moves from the current room to a neighboring one with -equal probability: if it is in room 1, it can move to room 2 and 4 -with probability 1/2, respectively. If the mouse is in room 8, it can -move to either 7, 5 or 9 with probability 1/3. - -The transition probability @math{\bf P} from room @math{i} to room -@math{j} is the following: - -@iftex -@tex -$$ {\bf P} = -\pmatrix{ 0 & 1/2 & 0 & 1/2 & 0 & 0 & 0 & 0 & 0 \cr - 1/3 & 0 & 1/3 & 0 & 1/3 & 0 & 0 & 0 & 0 \cr - 0 & 1/2 & 0 & 0 & 0 & 1/2 & 0 & 0 & 0 \cr - 1/3 & 0 & 0 & 0 & 1/3 & 0 & 1/3 & 0 & 0 \cr - 0 & 1/4 & 0 & 1/4 & 0 & 1/4 & 0 & 1/4 & 0 \cr - 0 & 0 & 1/3 & 0 & 1/3 & 0 & 0 & 0 & 1/3 \cr - 0 & 0 & 0 & 1/2 & 0 & 0 & 0 & 1/2 & 0 \cr - 0 & 0 & 0 & 0 & 1/3 & 0 & 1/3 & 0 & 1/3 \cr - 0 & 0 & 0 & 0 & 0 & 1/2 & 0 & 1/2 & 0 } -$$ -@end tex -@end iftex -@ifnottex -@example -@group - / 0 1/2 0 1/2 0 0 0 0 0 \ - | 1/3 0 1/3 0 1/3 0 0 0 0 | - | 0 1/2 0 0 0 1/2 0 0 0 | - | 1/3 0 0 0 1/3 0 1/3 0 0 | - P = | 0 1/4 0 1/4 0 1/4 0 1/4 0 | - | 0 0 1/3 0 1/3 0 0 0 1/3 | - | 0 0 0 1/2 0 0 0 1/2 0 | - | 0 0 0 0 1/3 0 1/3 0 1/3 | - \ 0 0 0 0 0 1/2 0 1/2 0 / -@end group -@end example -@end ifnottex - -The stationary state occupancy probability vector can be computed -using the following code: - -@example -@c @group -@include demos/demo_1_dtmc.texi -@c @end group - @result{} 0.083333 0.125000 0.083333 0.125000 - 0.166667 0.125000 0.083333 0.125000 - 0.083333 -@end example - -@c -@node Birth-death process (DTMC) -@subsection Birth-death process - -@include help/dtmc_bd.texi - -@c -@node Expected number of visits (DTMC) -@subsection Expected Number of Visits - -Given a @math{N} state discrete-time Markov chain with transition -matrix @math{\bf P} and an integer @math{n @geq{} 0}, we let -@math{L_i(n)} be the the expected number of visits to state @math{i} -during the first @math{n} transitions. The vector @math{{\bf L}(n) = -( L_1(n), L_2(n), @dots{}, L_N(n) )} is defined as - -@iftex -@tex -$$ {\bf L}(n) = \sum_{i=0}^n {\bf \pi}(i) = \sum_{i=0}^n {\bf \pi}(0) {\bf P}^i $$ -@end tex -@end iftex -@ifnottex -@example -@group - n n - ___ ___ - \ \ i -L(n) = > pi(i) = > pi(0) P - /___ /___ - i=0 i=0 -@end group -@end example -@end ifnottex - -@noindent where @math{{\bf \pi}(i) = {\bf \pi}(0){\bf P}^i} is the state -occupancy probability after @math{i} transitions. - -If @math{\bf P} is absorbing, i.e., the stochastic process eventually -reaches a state with no outgoing transitions with probability 1, then -we can compute the expected number of visits until absorption -@math{\bf L}. To do so, we first rearrange the states to rewrite -matrix @math{\bf P} as: - -@iftex -@tex -$$ {\bf P} = \pmatrix{ {\bf Q} & {\bf R} \cr - {\bf 0} & {\bf I} }$$ -@end tex -@end iftex -@ifnottex -@example -@group - / Q | R \ -P = |---+---| - \ 0 | I / -@end group -@end example -@end ifnottex - -@noindent where the first @math{t} states are transient -and the last @math{r} states are absorbing (@math{t+r = N}). The -matrix @math{{\bf N} = ({\bf I} - {\bf Q})^{-1}} is called the -@emph{fundamental matrix}; @math{N_{i,j}} is the expected number of -times that the process is in the @math{j}-th transient state if it -started in the @math{i}-th transient state. If we reshape @math{\bf N} -to the size of @math{\bf P} (filling missing entries with zeros), we -have that, for absorbing chains @math{{\bf L} = {\bf \pi}(0){\bf N}}. - -@include help/dtmc_exps.texi - -@c -@node Time-averaged expected sojourn times (DTMC) -@subsection Time-averaged expected sojourn times - -@include help/dtmc_taexps.texi - -@c -@node Mean time to absorption (DTMC) -@subsection Mean Time to Absorption - -The @emph{mean time to absorption} is defined as the average number of -transitions which are required to reach an absorbing state, starting -from a transient state (or given an initial state occupancy -probability vector @math{{\bf \pi}(0)}). - -Let @math{{\bf t}_i} be the expected number of transitions before -being absorbed in any absorbing state, starting from state @math{i}. -Vector @math{\bf t} can be computed from the fundamental matrix -@math{\bf N} (@pxref{Expected number of visits (DTMC)}) as - -@iftex -@tex -$$ {\bf t} = {\bf 1 N} $$ -@end tex -@end iftex -@ifnottex -@example -t = 1 N -@end example -@end ifnottex - -Let @math{{\bf B} = [ B_{i, j} ]} be a matrix where @math{B_{i, j}} is -the probability of being absorbed in state @math{j}, starting from -transient state @math{i}. Again, using matrices @math{\bf N} and -@math{\bf R} (@pxref{Expected number of visits (DTMC)}) we can write - -@iftex -@tex -$$ {\bf B} = {\bf N R} $$ -@end tex -@end iftex -@ifnottex -@example -B = N R -@end example -@end ifnottex - -@include help/dtmc_mtta.texi - -@c -@node First passage times (DTMC) -@subsection First Passage Times - -The First Passage Time @math{M_{i, j}} is the average number of -transitions needed to visit state @math{j} for the first time, -starting from state @math{i}. Matrix @math{\bf M} satisfies the -property that - -@iftex -@tex -$$ M_{i, j} = 1 + \sum_{k \neq j} P_{i, k} M_{k, j}$$ -@end tex -@end iftex -@ifnottex -@example -@group - ___ - \ -M_ij = 1 + > P_ij * M_kj - /___ - k!=j -@end group -@end example -@end ifnottex - -To compute @math{{\bf M} = [ M_{i, j}]} a different formulation is -used. Let @math{\bf W} be the @math{N \times N} matrix having each -row equal to the steady-state probability vector @math{\bf \pi} for -@math{\bf P}; let @math{\bf I} be the @math{N \times N} identity -matrix. Define @math{\bf Z} as follows: - -@iftex -@tex -$$ {\bf Z} = \left( {\bf I} - {\bf P} + {\bf W} \right)^{-1} $$ -@end tex -@end iftex -@ifnottex -@example -@group - -1 -Z = (I - P + W) -@end group -@end example -@end ifnottex - -@noindent Then, we have that - -@iftex -@tex -$$ M_{i, j} = {Z_{j, j} - Z_{i, j} \over \pi_j} $$ -@end tex -@end iftex -@ifnottex -@example -@group - Z_jj - Z_ij -M_ij = ----------- - \pi_j -@end group -@end example -@end ifnottex - -According to the definition above, @math{M_{i,i} = 0}. We arbitrarily -let @math{M_{i,i}} to be the @emph{mean recurrence time} @math{r_i} -for state @math{i}, that is the average number of transitions needed -to return to state @math{i} starting from it. @math{r_i} is: - -@iftex -@tex -$$ r_i = {1 \over \pi_i} $$ -@end tex -@end iftex -@ifnottex -@example -@group - 1 -r_i = ----- - \pi_i -@end group -@end example -@end ifnottex - -@include help/dtmc_fpt.texi - -@c -@c -@c -@node Continuous-Time Markov Chains -@section Continuous-Time Markov Chains - -A stochastic process @math{@{X(t), t @geq{} 0@}} is a continuous-time -Markov chain if, for all integers @math{n}, and for any sequence -@math{t_0, t_1 , \ldots, t_n, t_{n+1}} such that @math{t_0 < t_1 < -\ldots < t_n < t_{n+1}}, we have - -@iftex -@tex -$$\eqalign{P(X(t_{n+1}) = x_{n+1}\ |\ X(t_n) = x_n, X(t_{n-1}) = x_{n-1}, \ldots, X(t_0) = x_0) \cr -&= P(X(t_{n+1}) = x_{n+1}\ |\ X(t_n) = x_n)}$$ -@end tex -@end iftex -@ifnottex -@math{P(X_{n+1} = x_{n+1} | X_n = x_n, X_{n-1} = x_{n-1}, ..., X_0 = x_0) = P(X_{n+1} = x_{n+1} | X_n = x_n)} -@end ifnottex - -A continuous-time Markov chain is defined according to an -@emph{infinitesimal generator matrix} @math{{\bf Q} = [Q_{i,j}]}, -where for each @math{i \neq j}, @math{Q_{i, j}} is the transition rate -from state @math{i} to state @math{j}. The matrix @math{\bf Q} must -satisfy the property that, for all @math{i}, @math{\sum_{j=1}^N Q_{i, -j} = 0}. - -@include help/ctmc_check_Q.texi - -@menu -* State occupancy probabilities (CTMC):: -* Birth-death process (CTMC):: -* Expected sojourn times (CTMC):: -* Time-averaged expected sojourn times (CTMC):: -* Mean time to absorption (CTMC):: -* First passage times (CTMC):: -@end menu - -@node State occupancy probabilities (CTMC) -@subsection State occupancy probabilities - -Similarly to the discrete case, we denote with @math{{\bf \pi}(t) = -(\pi_1(t), \pi_2(t), @dots{}, \pi_N(t) )} the @emph{state occupancy -probability vector} at time @math{t}. @math{\pi_i(t)} is the -probability that the system is in state @math{i} at time @math{t -@geq{} 0}. - -Given the infinitesimal generator matrix @math{\bf Q} and the initial -state occupancy probabilities @math{{\bf \pi}(0) = (\pi_1(0), -\pi_2(0), @dots{}, \pi_N(0))}, the state occupancy probabilities -@math{{\bf \pi}(t)} at time @math{t} can be computed as: - -@iftex -@tex -$${\bf \pi}(t) = {\bf \pi}(0) \exp( {\bf Q} t )$$ -@end tex -@end iftex -@ifnottex -@example -@group -\pi(t) = \pi(0) exp(Qt) -@end group -@end example -@end ifnottex - -@noindent where @math{\exp( {\bf Q} t )} is the matrix exponential -of @math{{\bf Q} t}. Under certain conditions, there exists a -@emph{stationary state occupancy probability} @math{{\bf \pi} = -\lim_{t \rightarrow +\infty} {\bf \pi}(t)}, which is independent from -@math{{\bf \pi}(0)}. @math{\bf \pi} is the solution of the following -linear system: - -@iftex -@tex -$$ -\left\{ \eqalign{ -{\bf \pi Q} & = {\bf 0} \cr -{\bf \pi 1}^T & = 1 -} \right. -$$ -@end tex -@end iftex -@ifnottex -@example -@group -/ -| \pi Q = 0 -| \pi 1^T = 1 -\ -@end group -@end example -@end ifnottex - -@include help/ctmc.texi - -@noindent @strong{EXAMPLE} - -Consider a two-state CTMC such that transition rates between states -are equal to 1. This can be solved as follows: - -@example -@group -@include demos/demo_1_ctmc.texi - @result{} q = 0.50000 0.50000 -@end group -@end example - -@c -@c -@c -@node Birth-death process (CTMC) -@subsection Birth-Death Process - -@include help/ctmc_bd.texi - -@c -@c -@c -@node Expected sojourn times (CTMC) -@subsection Expected Sojourn Times - -Given a @math{N} state continuous-time Markov Chain with infinitesimal -generator matrix @math{\bf Q}, we define the vector @math{{\bf L}(t) = -(L_1(t), L_2(t), \ldots, L_N(t))} such that @math{L_i(t)} is the -expected sojourn time in state @math{i} during the interval -@math{[0,t)}, assuming that the initial occupancy probability at time -0 was @math{{\bf \pi}(0)}. @math{{\bf L}(t)} can be expressed as the -solution of the following differential equation: - -@iftex -@tex -$$ { d{\bf L}(t) \over dt} = {\bf L}(t){\bf Q} + {\bf \pi}(0), \qquad {\bf L}(0) = {\bf 0} $$ -@end tex -@end iftex -@ifnottex -@example -@group - dL - --(t) = L(t) Q + pi(0), L(0) = 0 - dt -@end group -@end example -@end ifnottex - -Alternatively, @math{{\bf L}(t)} can also be expressed in integral -form as: - -@iftex -@tex -$$ {\bf L}(t) = \int_0^t {\bf \pi}(u) du$$ -@end tex -@end iftex -@ifnottex -@example -@group - / t -L(t) = | pi(u) du - / 0 -@end group -@end example -@end ifnottex - -@noindent where @math{{\bf \pi}(t) = {\bf \pi}(0) \exp({\bf Q}t)} is -the state occupancy probability at time @math{t}; @math{\exp({\bf Q}t)} -is the matrix exponential of @math{{\bf Q}t}. - -@include help/ctmc_exps.texi - -@noindent @strong{EXAMPLE} - -Let us consider a pure-birth, 4-states CTMC such that the transition -rate from state @math{i} to state @math{i+1} is @math{\lambda_i = i -\lambda} (@math{i=1, 2, 3}), with @math{\lambda = 0.5}. The following -code computes the expected sojourn time in state @math{i}, -given the initial occupancy probability @math{{\bf \pi}_0=(1,0,0,0)}. - -@example -@group -@include demos/demo_1_ctmc_exps.texi -@end group -@end example - -@c -@c -@c -@node Time-averaged expected sojourn times (CTMC) -@subsection Time-Averaged Expected Sojourn Times - -@include help/ctmc_taexps.texi - -@noindent @strong{EXAMPLE} - -@example -@group -@include demos/demo_1_ctmc_taexps.texi -@end group -@end example - -@c -@c -@c -@node Mean time to absorption (CTMC) -@subsection Mean Time to Absorption - -If we consider a Markov Chain with absorbing states, it is possible to -define the @emph{expected time to absorption} as the expected time -until the system goes into an absorbing state. More specifically, let -us suppose that @math{A} is the set of transient (i.e., non-absorbing) -states of a CTMC with @math{N} states and infinitesimal generator -matrix @math{\bf Q}. The expected time to absorption @math{{\bf -L}_A(\infty)} is defined as the solution of the following equation: - -@iftex -@tex -$$ {\bf L}_A(\infty){\bf Q}_A = -{\bf \pi}_A(0) $$ -@end tex -@end iftex -@ifnottex -@example -@group -L_A( inf ) Q_A = -pi_A(0) -@end group -@end example -@end ifnottex - -@noindent where @math{{\bf Q}_A} is the restriction of matrix @math{\bf Q} to -only states in @math{A}, and @math{{\bf \pi}_A(0)} is the initial -state occupancy probability at time 0, restricted to states in -@math{A}. - -@include help/ctmc_mtta.texi - -@noindent @strong{EXAMPLE} - -Let us consider a simple model of a redundant disk array. We assume -that the array is made of 5 independent disks, such that the array can -tolerate up to 2 disk failures without losing data. If three or more -disks break, the array is dead and unrecoverable. We want to estimate -the Mean-Time-To-Failure (MTTF) of the disk array. - -We model this system as a 4 states Markov chain with state space -@math{\{ 2, 3, 4, 5 \}}. State @math{i} denotes the fact that exactly -@math{i} disks are active; state @math{2} is absorbing. Let @math{\mu} -be the failure rate of a single disk. The system starts in state -@math{5} (all disks are operational). We use a pure death process, -with death rate from state @math{i} to state @math{i-1} is @math{\mu -i}, for @math{i = 3, 4, 5}). - -The MTTF of the disk array is the MTTA of the Markov Chain, and can be -computed with the following expression: - -@example -@group -@include demos/demo_1_ctmc_mtta.texi - @result{} t = 78.333 -@end group -@end example - -@noindent @strong{REFERENCES} - -G. Bolch, S. Greiner, H. de Meer and -K. Trivedi, @cite{Queueing Networks and Markov Chains: Modeling and -Performance Evaluation with Computer Science Applications}, Wiley, -1998. - -@auindex Bolch, G. -@auindex Greiner, S. -@auindex de Meer, H. -@auindex Trivedi, K. - -@c -@c -@c -@node First passage times (CTMC) -@subsection First Passage Times - -@include help/ctmc_fpt.texi - Modified: trunk/octave-forge/main/queueing/doc/queueing.html =================================================================== --- trunk/octave-forge/main/queueing/doc/queueing.html 2012-04-06 16:06:56 UTC (rev 10168) +++ trunk/octave-forge/main/queueing/doc/queueing.html 2012-04-06 16:12:18 UTC (rev 10169) @@ -150,7 +150,6 @@ </ul> <!-- --> -<!-- DO NOT EDIT! Generated automatically by munge-texi. --> <!-- *- texinfo -*- --> <!-- Copyright (C) 2008, 2009, 2010, 2011, 2012 Moreno Marzolla --> <!-- This file is part of the queueing toolbox, a Queueing Networks --> @@ -272,7 +271,6 @@ <a href="http://www.informatica.unibo.it/ricerca/ublcs/2010/UBLCS-2010-04">UBLCS-2010-04</a>, February 2010, Department of Computer Science, University of Bologna, Italy. -<!-- DO NOT EDIT! Generated automatically by munge-texi. --> <!-- *- texinfo -*- --> <!-- Copyright (C) 2008, 2009, 2010, 2011, 2012 Moreno Marzolla --> <!-- This file is part of the queueing toolbox, a Queueing Networks --> @@ -519,8 +517,7 @@ <pre class="example"> octave:4> <kbd>demo qnclosed</kbd> </pre> - <!-- DO NOT EDIT! Generated automatically by munge-texi. --> -<!-- *- texinfo -*- --> + <!-- *- texinfo -*- --> <!-- Copyright (C) 2008, 2009, 2010, 2011, 2012 Moreno Marzolla --> <!-- This file is part of the queueing toolbox, a Queueing Networks --> <!-- analysis package for GNU Octave. --> @@ -757,7 +754,6 @@ <!-- (TODO) --> <!-- @subsection Continuous-Time Markov Chains --> <!-- (TODO) --> -<!-- DO NOT EDIT! Generated automatically by munge-texi. --> <!-- *- texinfo -*- --> <!-- Copyright (C) 2008, 2009, 2010, 2011, 2012 Moreno Marzolla --> <!-- This file is part of the queueing toolbox, a Queueing Networks --> @@ -825,8 +821,13 @@ following two properties: (1) P_i, j ≥ 0 for all i, j, and (2) \sum_j=1^N P_i,j = 1 for all i - <p><a name="doc_002ddtmc_005fcheck_005fP"></a> - +<!-- *- texinfo -*- --> +<!-- Copyright (C) 2012 Moreno Marzolla --> +<!-- This file is part of the queueing toolbox, a Queueing Networks --> +<!-- analysis package for GNU Octave. The queueing toolbox is distributed --> +<!-- under the terms of the GNU General Public License version 3 or later --> +<!-- This file is automatically generated from dtmc_check_P.m --> +<!-- All modifications to this file will be lost --> <div class="defun"> — Function File: [<var>r</var> <var>err</var>] = <b>dtmc_check_P</b> (<var>P</var>)<var><a name="index-dtmc_005fcheck_005fP-1"></a></var><br> <blockquote> @@ -884,8 +885,13 @@ <p class="noindent">where \bf 1 is the row vector of ones, and ( \cdot )^T the transpose operator. - <p><a name="doc_002ddtmc"></a> - +<!-- *- texinfo -*- --> +<!-- Copyright (C) 2012 Moreno Marzolla --> +<!-- This file is part of the queueing toolbox, a Queueing Networks --> +<!-- analysis package for GNU Octave. The queueing toolbox is distributed --> +<!-- under the terms of the GNU General Public License version 3 or later --> +<!-- This file is automatically generated from dtmc.m --> +<!-- All modifications to this file will be lost --> <div class="defun"> — Function File: <var>p</var> = <b>dtmc</b> (<var>P</var>)<var><a name="index-dtmc-3"></a></var><br> — Function File: <var>p</var> = <b>dtmc</b> (<var>P, n, p0</var>)<var><a name="index-dtmc-4"></a></var><br> @@ -972,6 +978,13 @@ using the following code: <pre class="example"> <!-- @group --> + <!-- *- texinfo -*- --> + <!-- Copyright (C) 2012 Moreno Marzolla --> + <!-- This file is part of the queueing toolbox, a Queueing Networks --> + <!-- analysis package for GNU Octave. The queueing toolbox is distributed --> + <!-- under the terms of the GNU General Public License version 3 or later --> + <!-- This file is automatically generated from dtmc.m --> + <!-- All modifications to this file will be lost --> <pre class="verbatim"> P = zeros(9,9); P(1,[2 4] ) = 1/2; P(2,[1 5 3] ) = 1/3; @@ -983,7 +996,9 @@ P(8,[7 5 9] ) = 1/3; P(9,[6 8] ) = 1/2; p = dtmc(P); - disp(p)</pre><!-- @end group --> + disp(p) +</pre> + <!-- @end group --> ⇒ 0.083333 0.125000 0.083333 0.125000 0.166667 0.125000 0.083333 0.125000 0.083333 @@ -1000,8 +1015,13 @@ <h4 class="subsection">4.1.2 Birth-death process</h4> -<p><a name="doc_002ddtmc_005fbd"></a> - +<!-- *- texinfo -*- --> +<!-- Copyright (C) 2012 Moreno Marzolla --> +<!-- This file is part of the queueing toolbox, a Queueing Networks --> +<!-- analysis package for GNU Octave. The queueing toolbox is distributed --> +<!-- under the terms of the GNU General Public License version 3 or later --> +<!-- This file is automatically generated from dtmc_bd.m --> +<!-- All modifications to this file will be lost --> <div class="defun"> — Function File: <var>P</var> = <b>dtmc_bd</b> (<var>b, d</var>)<var><a name="index-dtmc_005fbd-11"></a></var><br> <blockquote> @@ -1075,8 +1095,13 @@ to the size of \bf P (filling missing entries with zeros), we have that, for absorbing chains \bf L = \bf \pi(0)\bf N. - <p><a name="doc_002ddtmc_005fexps"></a> - +<!-- *- texinfo -*- --> +<!-- Copyright (C) 2012 Moreno Marzolla --> +<!-- This file is part of the queueing toolbox, a Queueing Networks --> +<!-- analysis package for GNU Octave. The queueing toolbox is distributed --> +<!-- under the terms of the GNU General Public License version 3 or later --> +<!-- This file is automatically generated from dtmc_exps.m --> +<!-- All modifications to this file will be lost --> <div class="defun"> — Function File: <var>L</var> = <b>dtmc_exps</b> (<var>P, n, p0</var>)<var><a name="index-dtmc_005fexps-14"></a></var><br> — Function File: <var>L</var> = <b>dtmc_exps</b> (<var>P, p0</var>)<var><a name="index-dtmc_005fexps-15"></a></var><br> @@ -1129,8 +1154,13 @@ <h4 class="subsection">4.1.4 Time-averaged expected sojourn times</h4> -<p><a name="doc_002ddtmc_005ftaexps"></a> - +<!-- *- texinfo -*- --> +<!-- Copyright (C) 2012 Moreno Marzolla --> +<!-- This file is part of the queueing toolbox, a Queueing Networks --> +<!-- analysis package for GNU Octave. The queueing toolbox is distributed --> +<!-- under the terms of the GNU General Public License version 3 or later --> +<!-- This file is automatically generated from dtmc_taexps.m --> +<!-- All modifications to this file will be lost --> <div class="defun"> — Function File: <var>L</var> = <b>dtmc_exps</b> (<var>P, n, p0</var>)<var><a name="index-dtmc_005fexps-17"></a></var><br> — Function File: <var>L</var> = <b>dtmc_exps</b> (<var>P, p0</var>)<var><a name="index-dtmc_005fexps-18"></a></var><br> @@ -1168,7 +1198,7 @@ </dl> - </blockquote></div> + </blockquote></div> <div class="node"> <a name="Mean-time-to-absorption-(DTMC)"></a> @@ -1201,8 +1231,13 @@ <pre class="example"> B = N R </pre> - <p><a name="doc_002ddtmc_005fmtta"></a> - + <!-- *- texinfo -*- --> +<!-- Copyright (C) 2012 Moreno Marzolla --> +<!-- This file is part of the queueing toolbox, a Queueing Networks --> +<!-- analysis package for GNU Octave. The queueing toolbox is distributed --> +<!-- under the terms of the GNU General Public License version 3 or later --> +<!-- This file is automatically generated from dtmc_mtta.m --> +<!-- All modifications to this file will be lost --> <div class="defun"> — Function File: [<var>t</var> <var>N</var> <var>B</var>] = <b>dtmc_mtta</b> (<var>P</var>)<var><a name="index-dtmc_005fmtta-20"></a></var><br> — Function File: [<var>t</var> <var>N</var> <var>B</var>] = <b>dtmc_mtta</b> (<var>P, p0</var>)<var><a name="index-dtmc_005fmtta-21"></a></var><br> @@ -1304,8 +1339,13 @@ r_i = ----- \pi_i </pre> - <p><a name="doc_002ddtmc_005ffpt"></a> - + <!-- *- texinfo -*- --> +<!-- Copyright (C) 2012 Moreno Marzolla --> +<!-- This file is part of the queueing toolbox, a Queueing Networks --> +<!-- analysis package for GNU Octave. The queueing toolbox is distributed --> +<!-- under the terms of the GNU General Public License version 3 or later --> +<!-- This file is automatically generated from dtmc_fpt.m --> +<!-- All modifications to this file will be lost --> <div class="defun"> — Function File: <var>M</var> = <b>dtmc_fpt</b> (<var>P</var>)<var><a name="index-dtmc_005ffpt-25"></a></var><br> <blockquote> @@ -1367,8 +1407,13 @@ satisfy the property that, for all i, \sum_j=1^N Q_i, j = 0. - <p><a name="doc_002dctmc_005fcheck_005fQ"></a> - +<!-- *- texinfo -*- --> +<!-- Copyright (C) 2012 Moreno Marzolla --> +<!-- This file is part of the queueing toolbox, a Queueing Networks --> +<!-- analysis package for GNU Octave. The queueing toolbox is distributed --> +<!-- under the terms of the GNU General Public License version 3 or later --> +<!-- This file is automatically generated from ctmc_check_Q.m --> +<!-- All modifications to this file will be lost --> <div class="defun"> — Function File: [<var>result</var> <var>err</var>] = <b>ctmc_check_Q</b> (<var>Q</var>)<var><a name="index-ctmc_005fcheck_005fQ-28"></a></var><br> <blockquote> @@ -1425,8 +1470,13 @@ | \pi 1^T = 1 \ </pre> - <p><a name="doc_002dctmc"></a> - + <!-- *- texinfo -*- --> +<!-- Copyright (C) 2012 Moreno Marzolla --> +<!-- This file is part of the queueing toolbox, a Queueing Networks --> +<!-- analysis package for GNU Octave. The queueing toolbox is distributed --> +<!-- under the terms of the GNU General Public License version 3 or later --> +<!-- This file is automatically generated from ctmc.m --> +<!-- All modifications to this file will be lost --> <div class="defun"> — Function File: <var>p</var> = <b>ctmc</b> (<var>Q</var>)<var><a name="index-ctmc-30"></a></var><br> — Function File: <var>p</var> = <b>ctmc</b> (<var>Q, t. p0</var>)<var><a name="index-ctmc-31"></a></var><br> @@ -1478,10 +1528,19 @@ <p>Consider a two-state CTMC such that transition rates between states are equal to 1. This can be solved as follows: -<pre class="example"><pre class="verbatim"> Q = [ -1 1; \ +<pre class="example"> <!-- *- texinfo -*- --> + <!-- Copyright (C) 2012 Moreno Marzolla --> + <!-- This file is part of the queueing toolbox, a Queueing Networks --> + <!-- analysis package for GNU Octave. The queueing toolbox is distributed --> + <!-- under the terms of the GNU General Public License version 3 or later --> + <!-- This file is automatically generated from ctmc.m --> + <!-- All modifications to this file will be lost --> +<pre class="verbatim"> Q = [ -1 1; \ 1 -1 ]; - q = ctmc(Q)</pre> ⇒ q = 0.50000 0.50000 + q = ctmc(Q) </pre> + ⇒ q = 0.50000 0.50000 +</pre> <div class="node"> <a name="Birth-death-process-(CTMC)"></a> <a name="Birth_002ddeath-process-_0028CTMC_0029"></a> @@ -1494,8 +1553,13 @@ <h4 class="subsection">4.2.2 Birth-Death Process</h4> -<p><a name="doc_002dctmc_005fbd"></a> - +<!-- *- texinfo -*- --> +<!-- Copyright (C) 2012 Moreno Marzolla --> +<!-- This file is part of the queueing toolbox, a Queueing Networks --> +<!-- analysis package for GNU Octave. The queueing toolbox is distributed --> +<!-- under the terms of the GNU General Public License version 3 or later --> +<!-- This file is automatically generated from ctmc_bd.m --> +<!-- All modifications to this file will be lost --> <div class="defun"> — Function File: <var>Q</var> = <b>ctmc_bd</b> (<var>b, d</var>)<var><a name="index-ctmc_005fbd-36"></a></var><br> <blockquote> @@ -1556,8 +1620,13 @@ the state occupancy probability at time t; \exp(\bf Qt) is the matrix exponential of \bf Qt. - <p><a name="doc_002dctmc_005fexps"></a> - +<!-- *- texinfo -*- --> +<!-- Copyright (C) 2012 Moreno Marzolla --> +<!-- This file is part of the queueing toolbox, a Queueing Networks --> +<!-- analysis package for GNU Octave. The queueing toolbox is distributed --> +<!-- under the terms of the GNU General Public License version 3 or later --> +<!-- This file is automatically generated from ctmc_exps.m --> +<!-- All modifications to this file will be lost --> <div class="defun"> — Function File: <var>L</var> = <b>ctmc_exps</b> (<var>Q, t, p </var>)<var><a name="index-ctmc_005fexps-39"></a></var><br> — Function File: <var>L</var> = <b>ctmc_exps</b> (<var>Q, p</var>)<var><a name="index-ctmc_005fexps-40"></a></var><br> @@ -1607,7 +1676,14 @@ code computes the expected sojourn time in state i, given the initial occupancy probability \bf \pi_0=(1,0,0,0). -<pre class="example"><pre class="verbatim"> lambda = 0.5; +<pre class="example"> <!-- *- texinfo -*- --> + <!-- Copyright (C) 2012 Moreno Marzolla --> + <!-- This file is part of the queueing toolbox, a Queueing Networks --> + <!-- analysis package for GNU Octave. The queueing toolbox is distributed --> + <!-- under the terms of the GNU General Public License version 3 or later --> + <!-- This file is automatically generated from ctmc_exps.m --> + <!-- All modifications to this file will be lost --> +<pre class="verbatim"> lambda = 0.5; N = 4; b = lambda*[1:N-1]; d = zeros(size(b)); @@ -1624,8 +1700,9 @@ t, L(:,4), ";State 4;", "linewidth", 2 ); legend("location","northwest"); xlabel("Time"); - ylabel("Expected sojourn time");</pre> + ylabel("Expected sojourn time"); </pre> +</pre> <div class="node"> <a name="Time-averaged-expected-sojourn-times-(CTMC)"></a> <a name="Time_002daveraged-expected-sojourn-times-_0028CTMC_0029"></a> @@ -1638,8 +1715,13 @@ <h4 class="subsection">4.2.4 Time-Averaged Expected Sojourn Times</h4> -<p><a name="doc_002dctmc_005ftaexps"></a> - +<!-- *- texinfo -*- --> +<!-- Copyright (C) 2012 Moreno Marzolla --> +<!-- This file is part of the queueing toolbox, a Queueing Networks --> +<!-- analysis package for GNU Octave. The queueing toolbox is distributed --> +<!-- under the terms of the GNU General Public License version 3 or later --> +<!-- This file is automatically generated from ctmc_taexps.m --> +<!-- All modifications to this file will be lost --> <div class="defun"> — Function File: <var>M</var> = <b>ctmc_taexps</b> (<var>Q, t, p</var>)<var><a name="index-ctmc_005ftaexps-43"></a></var><br> — Function File: <var>M</var> = <b>ctmc_taexps</b> (<var>Q, p</var>)<var><a name="index-ctmc_005ftaexps-44"></a></var><br> @@ -1677,11 +1759,18 @@ </dl> - </blockquote></div> + </blockquote></div> <p class="noindent"><strong>EXAMPLE</strong> -<pre class="example"><pre class="verbatim"> lambda = 0.5; +<pre class="example"> <!-- *- texinfo -*- --> + <!-- Copyright (C) 2012 Moreno Marzolla --> + <!-- This file is part of the queueing toolbox, a Queueing Networks --> + <!-- analysis package for GNU Octave. The queueing toolbox is distributed --> + <!-- under the terms of the GNU General Public License version 3 or later --> + <!-- This file is automatically generated from ctmc_taexps.m --> + <!-- All modifications to this file will be lost --> +<pre class="verbatim"> lambda = 0.5; N = 4; birth = lambda*linspace(1,N-1,N-1); death = zeros(1,N-1); @@ -1700,8 +1789,9 @@ t, M(:,4), ";State 4 (absorbing);", "linewidth", 2 ); legend("location","east"); xlabel("Time"); - ylabel("Time-averaged Expected sojourn time");</pre> + ylabel("Time-averaged Expected sojourn time"); </pre> +</pre> <div class="node"> <a name="Mean-time-to-absorption-(CTMC)"></a> <a name="Mean-time-to-absorption-_0028CTMC_0029"></a> @@ -1729,8 +1819,13 @@ state occupancy probability at time 0, restricted to states in A. - <p><a name="doc_002dctmc_005fmtta"></a> - +<!-- *- texinfo -*- --> +<!-- Copyright (C) 2012 Moreno Marzolla --> +<!-- This file is part of the queueing toolbox, a Queueing Networks --> +<!-- analysis package for GNU Octave. The queueing toolbox is distributed --> +<!-- under the terms of the GNU General Public License version 3 or later --> +<!-- This file is automatically generated from ctmc_mtta.m --> +<!-- All modifications to this file will be lost --> <div class="defun"> — Function File: <var>t</var> = <b>ctmc_mtta</b> (<var>Q, p</var>)<var><a name="index-ctmc_005fmtta-47"></a></var><br> <blockquote> @@ -1787,12 +1882,21 @@ <p>The MTTF of the disk array is the MTTA of the Markov Chain, and can be computed with the following expression: -<pre class="example"><pre class="verbatim"> mu = 0.01; +<pre class="example"> <!-- *- texinfo -*- --> + <!-- Copyright (C) 2012 Moreno Marzolla --> + <!-- This file is part of the queueing toolbox, a Queueing Networks --> + <!-- analysis package for GNU Octave. The queueing toolbox is distributed --> + <!-- under the terms of the GNU General Public License version 3 or later --> + <!-- This file is automatically generated from ctmc_mtta.m --> + <!-- All modifications to this file will be lost --> +<pre class="verbatim"> mu = 0.01; death = [ 3 4 5 ] * mu; birth = 0*death; Q = ctmc_bd(birth,death); - t = ctmc_mtta(Q,[0 0 0 1])</pre> ⇒ t = 78.333 + t = ctmc_mtta(Q,[0 0 0 1]) </pre> + ⇒ t = 78.333 +</pre> <p class="noindent"><strong>REFERENCES</strong> <p>G. Bolch, S. Greiner, H. de Meer and @@ -1812,8 +1916,13 @@ <h4 class="subsection">4.2.6 First Passage Times</h4> -<p><a name="doc_002dctmc_005ffpt"></a> - +<!-- *- texinfo -*- --> +<!-- Copyright (C) 2012 Moreno Marzolla --> +<!-- This file is part of the queueing toolbox, a Queueing Networks --> +<!-- analysis package for GNU Octave. The queueing toolbox is distributed --> +<!-- under the terms of the GNU General Public License version 3 or later --> +<!-- This file is automatically generated from ctmc_fpt.m --> +<!-- All modifications to this file will be lost --> <div class="defun"> — Function File: <var>M</var> = <b>ctmc_fpt</b> (<var>Q</var>)<var><a name="index-ctmc_005ffpt-54"></a></var><br> — Function File: <var>m</var> = <b>ctmc_fpt</b> (<var>Q, i, j</var>)<var><a name="index-ctmc_005ffpt-55"></a></var><br> @@ -1853,9 +1962,8 @@ </pre> <strong>See also:</strong> dtmc_fpt. - </blockquote></div> + </blockquote></div> -<!-- DO NOT EDIT! Generated automatically by munge-texi. --> <!-- *- texinfo -*- --> <!-- Copyright (C) 2008, 2009, 2010, 2011, 2012 Moreno Marzolla --> <!-- This file is part of the queueing toolbox, a Queueing Networks --> @@ -1921,8 +2029,13 @@ with average service rate \mu. The system is stable if \lambda < \mu. - <p><a name="doc_002dqnmm1"></a> - +<!-- *- texinfo -*- --> +<!-- Copyright (C) 2012 Moreno Marzolla --> +<!-- This file is part of the queueing toolbox, a Queueing Networks --> +<!-- analysis package for GNU Octave. The queueing toolbox is distributed -->... [truncated message content] |
From: <mma...@us...> - 2012-04-06 16:07:03
|
Revision: 10168 http://octave.svn.sourceforge.net/octave/?rev=10168&view=rev Author: mmarzolla Date: 2012-04-06 16:06:56 +0000 (Fri, 06 Apr 2012) Log Message: ----------- removed obsolete script directory Modified Paths: -------------- trunk/octave-forge/main/queueing/Makefile Added Paths: ----------- trunk/octave-forge/main/queueing/devel/pmva.l trunk/octave-forge/main/queueing/devel/pmva.y trunk/octave-forge/main/queueing/devel/test.pmva trunk/octave-forge/main/queueing/doc/grabhelp.m Removed Paths: ------------- trunk/octave-forge/main/queueing/scripts/ Modified: trunk/octave-forge/main/queueing/Makefile =================================================================== --- trunk/octave-forge/main/queueing/Makefile 2012-04-06 16:04:05 UTC (rev 10167) +++ trunk/octave-forge/main/queueing/Makefile 2012-04-06 16:06:56 UTC (rev 10168) @@ -3,7 +3,7 @@ PROGNAME=queueing DISTNAME=$(PROGNAME)-$(VERSIONNUM) -SUBDIRS=inst scripts doc test devel +SUBDIRS=inst doc test devel DISTFILES=COPYING NEWS DESCRIPTION DISTSUBDIRS=inst doc Copied: trunk/octave-forge/main/queueing/devel/pmva.l (from rev 10137, trunk/octave-forge/main/queueing/scripts/pmva.l) =================================================================== --- trunk/octave-forge/main/queueing/devel/pmva.l (rev 0) +++ trunk/octave-forge/main/queueing/devel/pmva.l 2012-04-06 16:06:56 UTC (rev 10168) @@ -0,0 +1,78 @@ +/**************************************************************************** + * + * pmva.l + * + * Lexer for the PMVA notation. + * + * Copyright (C) 2011 Moreno Marzolla + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + ****************************************************************************/ + +/* + * See pmva.y for details + */ +%{ +#include "stdio.h" +#include "pmva.h" +#include "y.tab.h" +int linenum=1; +%} + +DIGITS [0-9]+ +ID [a-zA-Z][A-Za-z0-9_]* +WS [ \t]+ +LF [\r\n] +FLOAT {DIGITS}?\.{DIGITS} +INT {DIGITS} + +%% + +{WS} /* nothing to do */ +{LF} { linenum++; } +classes { return TOK_CLASSES; } +servers { return TOK_SERVERS; } +routing { return TOK_ROUTING; } +network { return TOK_NETWORK; } +end { return TOK_END; } +FCFS { return TOK_FCFS; } +PS { return TOK_PS; } +IS { return TOK_IS; } +LI { return TOK_LI; } +MS { return TOK_MS; } +LD { return TOK_LD; } +POP { return TOK_POP; } +MVA { return TOK_MVA; } +ASYMP { return TOK_ASYMP; } +"=>" { return TOK_ARROW; } +{FLOAT} { return TOK_FLOAT; } +{INT} { yylval.ival = atoi(yytext); return TOK_INT; } +{ID} { + if ((yylval.id=malloc(yyleng+1)) == NULL) { + fprintf(stderr, "malloc() failed for id*\n"); + exit(1); + } + strncpy(yylval.id, yytext, yyleng); + yylval.id[yyleng] = '\0'; + return TOK_ID; + } +. { return yytext[0]; } + +%% +int yywrap( void ) +{ +return 1; +} + Copied: trunk/octave-forge/main/queueing/devel/pmva.y (from rev 10137, trunk/octave-forge/main/queueing/scripts/pmva.y) =================================================================== --- trunk/octave-forge/main/queueing/devel/pmva.y (rev 0) +++ trunk/octave-forge/main/queueing/devel/pmva.y 2012-04-06 16:06:56 UTC (rev 10168) @@ -0,0 +1,271 @@ +/**************************************************************************** + * + * pmva.y + * + * This grammar recognizes the PMVA notation for describing + * queueing network models. This file is part of the queueing toolbox. + * + * Copyright (C) 2011, 2012 Moreno Marzolla + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + ****************************************************************************/ + +/* + * PMVA (Purdue Mean Value Analysis program) is described in + * Jeff Brumfield, "PMVA - Purdue Mean Value Analysis Program User's Guide" + * Technical Report CSD-TR-383, april 1981, Purdue University: + * + * http://docs.lib.purdue.edu/cgi/viewcontent.cgi?article=1309&context=cstech + * + * This file contains a grammar for PMVA, according to the specification + * above. At the moment, this grammar is only used to implement a parser + * which does absolutely nothing (apart recognizing PMVA models). + * Eventually, this grammar will evolve in a suitable software tool + * for generating an Octave model suitable for analysis with + * the queueing toolbox. + */ +%{ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include "pmva.h" + +extern int linenum; +extern FILE *yyin, *yyout; + +#define YYERROR_VERBOSE 1 +%} + +%union{ + int ival; + float fval; + char* id; +}; + +%token <id> TOK_ID +%token <ival> TOK_INT +%token <fval> TOK_FLOAT +%token TOK_CLASSES +%token TOK_SERVERS +%token TOK_ROUTING +%token TOK_FCFS +%token TOK_PS +%token TOK_IS +%token TOK_LCFS +%token TOK_LI +%token TOK_MS +%token TOK_LD +%token TOK_ARROW +%token TOK_NETWORK +%token TOK_END +%token TOK_MVA +%token TOK_ASYMP +%token TOK_POP + +%left ',' +%left TOK_ARROW + +%% /* The grammar follows */ + +input: /* empty */ +| TOK_NETWORK ';' blocks TOK_END ';' solution_block +; + +blocks: /* empty */ +| blocks block +; + +block: TOK_CLASSES class_list ';' +| TOK_SERVERS server_list ';' +| TOK_ROUTING routing_node_list ';' +; + +class_list: /* empty */ +| TOK_ID { push_class($1); } +| class_list ',' TOK_ID { push_class($3); } +; + +server_list: /* empty */ +| server +| server_list ',' server +; + +server: TOK_ID { push_server($1); } queueing_discipline server_type service_times +; + +queueing_discipline: /* empty (assume FCFS) */ +| TOK_FCFS { server_list->queueing_discipline = FCFS; } +| TOK_PS { server_list->queueing_discipline = PS; } +| TOK_IS { server_list->queueing_discipline = IS; printf("m(%d) = -1;\n", n_servers); } +| TOK_LCFS { server_list->queueing_discipline = LCFS; } +; + +server_type: { printf("m(%d) = 1;\n", n_servers); } /* if not specified, assume LI */ +| TOK_LI { server_list->server_type = LI; printf("m(%d) = 1;\n", n_servers); } +| TOK_MS TOK_INT { server_list->server_type = MS; server_list->num_servers = $2; printf("m(%d) = %d;\n", n_servers, $2); } +| TOK_LD { server_list->server_type = LD; printf("m(%d) = 1;\n", n_servers); } +; + +service_times: service_time_spec +| service_times service_time_spec +; + +service_time_spec: class_name visit_ratio service_time +; + +class_name: /* empty */ { if (n_classes > 1) { printf("Class spwcified for server %s must be given for multiclass networks\n", server_list->name); exit(-1); } } +| TOK_ID '=' +; + +visit_ratio: /* empty */ +| '[' TOK_FLOAT ']' +; + +service_time: TOK_FLOAT +| '(' serv_time_list ')' +; + +serv_time_list: TOK_FLOAT +| serv_time_list ',' TOK_FLOAT +; + +routing_node_list: /* empty */ +| nonempty_routing_spec +| routing_node_list ',' nonempty_routing_spec +; + +nonempty_routing_spec: node_list +| nonempty_routing_spec TOK_ARROW node_list +; + +node_list: TOK_ID opt_class_name opt_routing_prob +| node_list TOK_ID opt_class_name opt_routing_prob +; + +opt_class_name: /* empty */ +| '/' TOK_ID +; + +opt_routing_prob: /* empty */ +| '(' TOK_FLOAT ')' +; + +solution_block: /* empty */ +| TOK_ASYMP ';' +| TOK_MVA pop_description ';' +; + +pop_description: TOK_POP '=' TOK_INT +| TOK_POP '=' '(' pop_list ')' +; + +pop_list: TOK_INT +| pop_list ',' TOK_INT +; + +%% + +server_node_t* server_list = 0; +class_node_t* class_list = 0; + +int n_servers = 0; +int n_classes = 0; + +/* + * Push a new server in front of the server list. Return the new head + * of the list (the global variable server_list is also updated to + * point to the newly created object). The caller transfers ownership + * of the pointer name. + */ +server_node_t* push_server( const char* name ) +{ + server_node_t* server = malloc( sizeof(server_node_t) ); + server->id = ++n_servers; + server->name = name; + server->queueing_discipline = FCFS; + server->server_type = LI; + server->num_servers = 1; + server->next = server_list; + server_list = server; + printf("servers{%d} = \"%s\";\n", n_servers, name ); + return server; +} + +class_node_t* push_class( const char* name ) +{ + class_node_t* class = malloc( sizeof(class_node_t) ); + class->id = ++n_classes; + class->name = name; + class->next = class_list; + class_list = class; + printf("classes{%d}=\"%s\";\n", n_classes, name); + return class; +} + +void dump_server_list( void ) +{ + server_node_t* server = server_list; + while ( server ) { + printf("[%d] %s ",server->id, server->name); + + switch ( server->server_type ) { + case LI: printf("LI "); break; + case LD: printf("LD "); break; + case MS: printf("MS %d ", server->num_servers); break; + default: printf("Unrecognized server type %d\n", server->server_type); + exit(-1); + } + + switch ( server->queueing_discipline ) { + case FCFS: printf("FCFS "); break; + case PS: printf("PS "); break; + case LCFS: printf("LCFS "); break; + case IS: printf("IS "); break; + default: printf("Unrecognized queueing discipline %d\n", server->queueing_discipline ); + exit(-1); + } + printf("\n"); + server = server->next; + } +} + +void dump_class_list( void ) +{ + class_node_t* class = class_list; + while( class ) { + printf("[%d] %s\n", class->id, class->name ); + class = class->next; + } +} + +void yyerror(char const *s) +{ + fprintf(stderr, "line %d, %s\n", linenum, s); + /*fprintf(stderr, "%s: (Error) line %d: %s\n", nomefile, linea, s); */ +} + +int main( int argc, char **argv ) +{ + int res; + ++argv, --argc; /* skip over program name */ + if ( argc > 0 ) + yyin = fopen( argv[0], "r" ); + else + yyin = stdin; + + res = yyparse(); + /* dump_server_list(); + dump_class_list(); */ +} Copied: trunk/octave-forge/main/queueing/devel/test.pmva (from rev 10137, trunk/octave-forge/main/queueing/scripts/test.pmva) =================================================================== --- trunk/octave-forge/main/queueing/devel/test.pmva (rev 0) +++ trunk/octave-forge/main/queueing/devel/test.pmva 2012-04-06 16:06:56 UTC (rev 10168) @@ -0,0 +1,15 @@ +network; +classes A, B, C; +classes D, E, F; +servers terminals IS LI 1.0; +servers cpu2 PS MS 2 BATCH=20.0; +servers + terminals IS LI 4.0, + cpu PS LI 0.025, + disk FCFS LI 0.050, + tape FCFS LI 0.150, + cpu2 PS MS 2 BATCH=0.064 INTERACTIVE=(0.4 , 0.4, 0.3), + disk2 FCFS LD ALL=(0.0250, 0.0225, 0.0214, 0.0208); +routing + terminals/FOO => cpu / BAR (0.9) disk / BAZ (0.1) => tape / ID; +end; Added: trunk/octave-forge/main/queueing/doc/grabhelp.m =================================================================== --- trunk/octave-forge/main/queueing/doc/grabhelp.m (rev 0) +++ trunk/octave-forge/main/queueing/doc/grabhelp.m 2012-04-06 16:06:56 UTC (rev 10168) @@ -0,0 +1,68 @@ +## Copyright (C) 2012 Moreno Marzolla +## +## This file is part of the queueing toolbox. +## +## The queueing toolbox is free software: you can redistribute it and/or +## modify it under the terms of the GNU General Public License as +## published by the Free Software Foundation, either version 3 of the +## License, or (at your option) any later version. +## +## The queueing toolbox is distributed in the hope that it will be +## useful, but WITHOUT ANY WARRANTY; without even the implied warranty +## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with the queueing toolbox. If not, see <http://www.gnu.org/licenses/>. + +## Usage: +## +## octave -q grabhelp.m ../inst/ +## +## scans all .m files in the given directory (e.g., ../inst/). For each +## file f, dump the help text to f.texi. The given directory must be in +## Octave search path, otherwise no help text can be located. + +clear all; + +global fundirs; + +if (nargin != 1) + usage("grebhelp.m [script_path]"); +endif + +xdir = argv(){1}; +srcdir = canonicalize_file_name (xdir); +fundirs = {srcdir}; + +for j=1:length(fundirs) + d = fundirs{j}; + lst = dir (d); + for i = 1:length (lst) + nm = lst(i).name; + [pp ff ss] = fileparts(nm); + if ( strcmp(ss, ".m") ) + text = get_help_text(ff); + if ( !isempty(text) ) + texiname = [ff ".texi"]; + printf("%s -> %s\n", ff, texiname); + fid = fopen(texiname, "wt"); + fprintf(fid,"@c -*- texinfo -*-\n\n@c Copyright (C) 2012 Moreno Marzolla\n@c This file is part of the queueing toolbox, a Queueing Networks\n@c analysis package for GNU Octave. The queueing toolbox is distributed\n@c under the terms of the GNU General Public License version 3 or later\n\n@c This file is automatically generated from %s\n@c All modifications to this file will be lost\n\n", + nm); + + ## from __makeinfo__.m in Octave + + ## Formatting in m-files has an extra space at the beginning of + ## every line. Remove these unwanted spaces if present. First + ## text char is "\n" delim. + text = strrep (text, "\n ", "\n"); + + ## Texinfo crashes if @end tex does not appear first on the line. + text = regexprep (text, '^ +@end tex', '@end tex', 'lineanchors'); + + fprintf(fid, "%s\n", text); + fclose(fid); + endif + endif + endfor +endfor This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mma...@us...> - 2012-04-06 16:04:14
|
Revision: 10167 http://octave.svn.sourceforge.net/octave/?rev=10167&view=rev Author: mmarzolla Date: 2012-04-06 16:04:05 +0000 (Fri, 06 Apr 2012) Log Message: ----------- Documentation restructuring Modified Paths: -------------- trunk/octave-forge/main/queueing/doc/Makefile trunk/octave-forge/main/queueing/doc/grabdemo.m trunk/octave-forge/main/queueing/doc/markovchains.txi trunk/octave-forge/main/queueing/doc/singlestation.txi Added Paths: ----------- trunk/octave-forge/main/queueing/doc/ack.texi trunk/octave-forge/main/queueing/doc/contributing.texi trunk/octave-forge/main/queueing/doc/demos/ trunk/octave-forge/main/queueing/doc/gettingstarted.texi trunk/octave-forge/main/queueing/doc/gpl.texi trunk/octave-forge/main/queueing/doc/help/ trunk/octave-forge/main/queueing/doc/installation.texi trunk/octave-forge/main/queueing/doc/queueingnetworks.texi trunk/octave-forge/main/queueing/doc/references.texi trunk/octave-forge/main/queueing/doc/summary.texi Removed Paths: ------------- trunk/octave-forge/main/queueing/doc/ack.txi trunk/octave-forge/main/queueing/doc/contributing.txi trunk/octave-forge/main/queueing/doc/gettingstarted.txi trunk/octave-forge/main/queueing/doc/gpl.txi trunk/octave-forge/main/queueing/doc/installation.txi trunk/octave-forge/main/queueing/doc/queueingnetworks.txi trunk/octave-forge/main/queueing/doc/references.txi trunk/octave-forge/main/queueing/doc/summary.txi Modified: trunk/octave-forge/main/queueing/doc/Makefile =================================================================== --- trunk/octave-forge/main/queueing/doc/Makefile 2012-04-06 10:07:57 UTC (rev 10166) +++ trunk/octave-forge/main/queueing/doc/Makefile 2012-04-06 16:04:05 UTC (rev 10167) @@ -1,6 +1,6 @@ DOC=queueing -CHAPTERS=$(patsubst %.txi,%.texi,$(wildcard *.txi)) -DISTFILES=README INSTALL $(DOC).pdf $(DOC).html $(DOC).texi $(CHAPTERS) $(wildcard demo_*.texi) +CHAPTERS=$(wildcard *.texi) +DISTFILES=README INSTALL $(DOC).pdf $(DOC).html $(DOC).texi $(CHAPTERS) $(wildcard demos/*.texi) $(wildcard help/*.texi) .PHONY: clean dist @@ -13,33 +13,32 @@ info: $(DOC).info INSTALL: installation.texi - rm -f ../INSTALL -$(MAKEINFO) -D INSTALLONLY \ --no-validate --no-headers --no-split --output INSTALL $< -$(DOC).html: $(DOC).texi $(CHAPTERS) +$(DOC).html: $(DOC).texi $(CHAPTERS) DEMOS HELP -$(MAKEINFO) --html --no-split $(DOC).texi -$(DOC).pdf: $(DOC).texi $(CHAPTERS) - texi2pdf -o $(DOC).pdf $< +$(DOC).pdf: $(DOC).texi $(CHAPTERS) DEMOS HELP + texi2pdf -o $(DOC).pdf $(DOC).texi -$(DOC).info: $(DOC).texi $(CHAPTERS) - -$(MAKEINFO) $< +$(DOC).info: $(DOC).texi $(CHAPTERS) DEMOS HELP + -$(MAKEINFO) $(DOC).texi -%.texi: %.txi DOCSTRINGS DEMOS - ../scripts/munge-texi -d DOCSTRINGS < $< > $@ - DOCSTRINGS: $(wildcard ../inst/*.m) (cd ../scripts; ./mkdoc ../inst) > DOCSTRINGS || \rm -f DOCSTRINGS DEMOS: - octave -q grabdemo.m ../inst/ && touch DEMOS + cd demos && octave -p ../../inst/ -q ../grabdemo.m ../../inst/ && touch ../DEMOS +HELP: + cd help && octave -p ../../inst/ -q ../grabhelp.m ../../inst/ && touch ../HELP + dist: ln $(DISTFILES) ../`cat ../fname`/doc/ clean: - \rm -f *.fns *.pdf *.aux *.log *.dvi *.out *.info *.html *.ky *.tp *.toc *.vr *.cp *.fn *.pg *.op *.au *.aus *.cps x.log *~ DOCSTRINGS DEMOS $(CHAPTERS) ../INSTALL demo_*.texi + \rm -f *.fns *.pdf *.aux *.log *.dvi *.out *.info *.html *.ky *.tp *.toc *.vr *.cp *.fn *.pg *.op *.au *.aus *.cps x.log *~ demos/*.texi help/*.texi DOCSTRINGS DEMOS HELP $(CHAPTERS) INSTALL distclean: clean Copied: trunk/octave-forge/main/queueing/doc/ack.texi (from rev 10137, trunk/octave-forge/main/queueing/doc/ack.txi) =================================================================== --- trunk/octave-forge/main/queueing/doc/ack.texi (rev 0) +++ trunk/octave-forge/main/queueing/doc/ack.texi 2012-04-06 16:04:05 UTC (rev 10167) @@ -0,0 +1,28 @@ +@c -*- texinfo -*- + +@c Copyright (C) 2008, 2009, 2010, 2011, 2012 Moreno Marzolla +@c +@c This file is part of the queueing toolbox, a Queueing Networks +@c analysis package for GNU Octave. +@c +@c The queueing toolbox is free software; you can redistribute it +@c and/or modify it under the terms of the GNU General Public License +@c as published by the Free Software Foundation; either version 3 of +@c the License, or (at your option) any later version. +@c +@c The queueing toolbox is distributed in the hope that it will be +@c useful, but WITHOUT ANY WARRANTY; without even the implied warranty +@c of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +@c GNU General Public License for more details. +@c +@c You should have received a copy of the GNU General Public License +@c along with the queueing toolbox; see the file COPYING. If not, see +@c <http://www.gnu.org/licenses/>. + +@node Acknowledgements +@appendix Acknowledgements + +The following people (listed in alphabetical order) contributed to the +@code{queueing} package, either by providing feedback, reporting bugs +or contributing code: Philip Carinhas, Phil Colbourn, Yves Durand, +Marco Guazzone, Dmitry Kolesnikov. Deleted: trunk/octave-forge/main/queueing/doc/ack.txi =================================================================== --- trunk/octave-forge/main/queueing/doc/ack.txi 2012-04-06 10:07:57 UTC (rev 10166) +++ trunk/octave-forge/main/queueing/doc/ack.txi 2012-04-06 16:04:05 UTC (rev 10167) @@ -1,28 +0,0 @@ -@c -*- texinfo -*- - -@c Copyright (C) 2008, 2009, 2010, 2011, 2012 Moreno Marzolla -@c -@c This file is part of the queueing toolbox, a Queueing Networks -@c analysis package for GNU Octave. -@c -@c The queueing toolbox is free software; you can redistribute it -@c and/or modify it under the terms of the GNU General Public License -@c as published by the Free Software Foundation; either version 3 of -@c the License, or (at your option) any later version. -@c -@c The queueing toolbox is distributed in the hope that it will be -@c useful, but WITHOUT ANY WARRANTY; without even the implied warranty -@c of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -@c GNU General Public License for more details. -@c -@c You should have received a copy of the GNU General Public License -@c along with the queueing toolbox; see the file COPYING. If not, see -@c <http://www.gnu.org/licenses/>. - -@node Acknowledgements -@appendix Acknowledgements - -The following people (listed in alphabetical order) contributed to the -@code{queueing} package, either by providing feedback, reporting bugs -or contributing code: Philip Carinhas, Phil Colbourn, Yves Durand, -Marco Guazzone, Dmitry Kolesnikov. Copied: trunk/octave-forge/main/queueing/doc/contributing.texi (from rev 10137, trunk/octave-forge/main/queueing/doc/contributing.txi) =================================================================== --- trunk/octave-forge/main/queueing/doc/contributing.texi (rev 0) +++ trunk/octave-forge/main/queueing/doc/contributing.texi 2012-04-06 16:04:05 UTC (rev 10167) @@ -0,0 +1,57 @@ +@c -*- texinfo -*- + +@c Copyright (C) 2008, 2009, 2010, 2011, 2012 Moreno Marzolla +@c +@c This file is part of the queueing toolbox, a Queueing Networks +@c analysis package for GNU Octave. +@c +@c The queueing toolbox is free software; you can redistribute it +@c and/or modify it under the terms of the GNU General Public License +@c as published by the Free Software Foundation; either version 3 of +@c the License, or (at your option) any later version. +@c +@c The queueing toolbox is distributed in the hope that it will be +@c useful, but WITHOUT ANY WARRANTY; without even the implied warranty +@c of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +@c GNU General Public License for more details. +@c +@c You should have received a copy of the GNU General Public License +@c along with the queueing toolbox; see the file COPYING. If not, see +@c <http://www.gnu.org/licenses/>. + +@node Contributing Guidelines +@appendix Contributing Guidelines + +Contributions and bug reports are @emph{always} welcome. If you want +to contribute to the @code{queueing} package, here are some +guidelines: + +@itemize + +@item If you are contributing a new function, please embed proper +documentation within the function itself. The documentation must be in +@code{texinfo} format, so that it can be extracted and formatted into +the printable manual. See the existing functions of the +@code{queueing} package for the documentation style. + +@item Make sure that each new function +properly checks the validity of its input parameters. For example, +each function accepting vectors should check whether the dimensions +match. + +@item Provide bibliographic references for each new algorithm you +contribute. If your implementation differs in some way from the +reference you give, please describe how and why your implementation +differs. Add references to the @file{doc/references.txi} file. + +@item Include test and demo blocks with your code. +Test blocks are particularly important, since most algorithms tend to +be quite tricky to implement correctly. If appropriate, test blocks +should also verify that the function fails on incorrect input +parameters. + +@end itemize + +Send your contribution to Moreno Marzolla +(@email{marzolla@@cs.unibo.it}). If you are just a user of this +package and find it useful, let me know by dropping me a line. Thanks. Deleted: trunk/octave-forge/main/queueing/doc/contributing.txi =================================================================== --- trunk/octave-forge/main/queueing/doc/contributing.txi 2012-04-06 10:07:57 UTC (rev 10166) +++ trunk/octave-forge/main/queueing/doc/contributing.txi 2012-04-06 16:04:05 UTC (rev 10167) @@ -1,57 +0,0 @@ -@c -*- texinfo -*- - -@c Copyright (C) 2008, 2009, 2010, 2011, 2012 Moreno Marzolla -@c -@c This file is part of the queueing toolbox, a Queueing Networks -@c analysis package for GNU Octave. -@c -@c The queueing toolbox is free software; you can redistribute it -@c and/or modify it under the terms of the GNU General Public License -@c as published by the Free Software Foundation; either version 3 of -@c the License, or (at your option) any later version. -@c -@c The queueing toolbox is distributed in the hope that it will be -@c useful, but WITHOUT ANY WARRANTY; without even the implied warranty -@c of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -@c GNU General Public License for more details. -@c -@c You should have received a copy of the GNU General Public License -@c along with the queueing toolbox; see the file COPYING. If not, see -@c <http://www.gnu.org/licenses/>. - -@node Contributing Guidelines -@appendix Contributing Guidelines - -Contributions and bug reports are @emph{always} welcome. If you want -to contribute to the @code{queueing} package, here are some -guidelines: - -@itemize - -@item If you are contributing a new function, please embed proper -documentation within the function itself. The documentation must be in -@code{texinfo} format, so that it can be extracted and formatted into -the printable manual. See the existing functions of the -@code{queueing} package for the documentation style. - -@item Make sure that each new function -properly checks the validity of its input parameters. For example, -each function accepting vectors should check whether the dimensions -match. - -@item Provide bibliographic references for each new algorithm you -contribute. If your implementation differs in some way from the -reference you give, please describe how and why your implementation -differs. Add references to the @file{doc/references.txi} file. - -@item Include test and demo blocks with your code. -Test blocks are particularly important, since most algorithms tend to -be quite tricky to implement correctly. If appropriate, test blocks -should also verify that the function fails on incorrect input -parameters. - -@end itemize - -Send your contribution to Moreno Marzolla -(@email{marzolla@@cs.unibo.it}). If you are just a user of this -package and find it useful, let me know by dropping me a line. Thanks. Copied: trunk/octave-forge/main/queueing/doc/gettingstarted.texi (from rev 10137, trunk/octave-forge/main/queueing/doc/gettingstarted.txi) =================================================================== --- trunk/octave-forge/main/queueing/doc/gettingstarted.texi (rev 0) +++ trunk/octave-forge/main/queueing/doc/gettingstarted.texi 2012-04-06 16:04:05 UTC (rev 10167) @@ -0,0 +1,316 @@ +@c -*- texinfo -*- + +@c Copyright (C) 2008, 2009, 2010, 2011, 2012 Moreno Marzolla +@c +@c This file is part of the queueing toolbox, a Queueing Networks +@c analysis package for GNU Octave. +@c +@c The queueing toolbox is free software; you can redistribute it +@c and/or modify it under the terms of the GNU General Public License +@c as published by the Free Software Foundation; either version 3 of +@c the License, or (at your option) any later version. +@c +@c The queueing toolbox is distributed in the hope that it will be +@c useful, but WITHOUT ANY WARRANTY; without even the implied warranty +@c of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +@c GNU General Public License for more details. +@c +@c You should have received a copy of the GNU General Public License +@c along with the queueing toolbox; see the file COPYING. If not, see +@c <http://www.gnu.org/licenses/>. + +@node Getting Started +@chapter Introduction and Getting Started + +@menu +* Analysis of Closed Networks:: +* Analysis of Open Networks:: +@end menu + +In this chapter we give some usage examples of the @code{queueing} +package. The reader is assumed to be familiar with Queueing Networks +(although some basic terminology and notation will be given +here). Additional usage examples are embedded in most of the function +files; to display and execute the demos associated with function +@emph{fname} you can type @command{demo @emph{fname}} at the Octave +prompt. For example + +@example +@kbd{demo qnclosed} +@end example + +@noindent executes all demos (if any) for the @command{qnclosed} function. + +@node Analysis of Closed Networks +@section Analysis of Closed Networks + +Let us consider a simple closed network with @math{K=3} service +centers. Each center is of type @math{M/M/1}--FCFS. We denote with +@math{S_i} the average service time at center @math{i}, @math{i=1, 2, +3}. Let @math{S_1 = 1.0}, @math{S_2 = 2.0} and @math{S_3 = 0.8}. The +routing of jobs within the network is described with a @emph{routing +probability matrix} @math{P}. Specifically, a request completing +service at center @math{i} is enqueued at center @math{j} with +probability @math{P_{i, j}}. Let us assume the following routing +probability matrix: + +@iftex +@tex +$$ +P = \pmatrix{ 0 & 0.3 & 0.7 \cr + 1 & 0 & 0 \cr + 1 & 0 & 0 } +$$ +@end tex +@end iftex +@ifnottex +@example + [ 0 0.3 0.7 ] +P = [ 1 0 0 ] + [ 1 0 0 ] +@end example +@end ifnottex + +For example, according to matric @math{P} a job completing service at +center 1 is routed to center 2 with probability 0.3, and is routed to +center 3 with probability 0.7. + +The network above can be analyzed with the @command{qnclosed} +function; if there is just a single class of requests, as in the +example above, @command{qnclosed} calls @command{qnclosedsinglemva} +which implements the Mean Value Analysys (MVA) algorithm for +single-class, product-form network. + +@command{qnclosed} requires the following parameters: + +@table @var + +@item N +Number of requests in the network (since we are considering a closed +network, the number of requests is fixed) + +@item S +Array of average service times at the centers: @code{@var{S}(k)} is +the average service time at center @math{k}. + +@item V +Array of visit ratios: @code{@var{V}(k)} is the average number of +visits to center @math{k}. + +@end table + +As can be seen, we must compute the @emph{visit ratios} (or visit +counts) @math{V_k} for each center @math{k}. The visit counts satisfy +the following equations: + +@iftex +@tex +$$ +V_j = \sum_{i=1}^K V_i P_{i, j} +$$ +@end tex +@end iftex +@ifnottex +@example +V_j = sum_i V_i P_ij +@end example +@end ifnottex + +We can compute @math{V_k} from the routing probability matrix +@math{P_{i, j}} using the @command{qnvisits} function: + +@example +@group +@kbd{P = [0 0.3 0.7; 1 0 0; 1 0 0];} +@kbd{V = qnvisits(P)} + @result{} V = 1.00000 0.30000 0.70000 +@end group +@end example + +We can check that the computed values satisfy the above equation by +evaluating the following expression: + +@example +@kbd{V*P} + @result{} ans = 1.00000 0.30000 0.70000 +@end example + +@noindent which is equal to @math{V}. +Hence, we can analyze the network for a given population size @math{N} +(for example, @math{N=10}) as follows: + +@example +@group +@kbd{N = 10;} +@kbd{S = [1 2 0.8];} +@kbd{P = [0 0.3 0.7; 1 0 0; 1 0 0];} +@kbd{V = qnvisits(P);} +@kbd{[U R Q X] = qnclosed( N, S, V )} + @result{} U = 0.99139 0.59483 0.55518 + @result{} R = 7.4360 4.7531 1.7500 + @result{} Q = 7.3719 1.4136 1.2144 + @result{} X = 0.99139 0.29742 0.69397 +@end group +@end example + +The output of @command{qnclosed} includes the vector of utilizations +@math{U_k} at center @math{k}, response time @math{R_k}, average +number of customers @math{Q_k} and throughput @math{X_k}. In our +example, the throughput of center 1 is @math{X_1 = 0.99139}, and the +average number of requests in center 3 is @math{Q_3 = 1.2144}. The +utilization of center 1 is @math{U_1 = 0.99139}, which is the higher +value among the service centers. Tus, center 1 is the @emph{bottleneck +device}. + +This network can also be analyzed with the @command{qnsolve} +function. @command{qnsolve} can handle open, closed or mixed networks, +and allows the network to be described in a very flexible way. First, +let @var{Q1}, @var{Q2} and @var{Q3} be the variables describing the +service centers. Each variable is instantiated with the +@command{qnmknode} function. + +@example +@group +@kbd{Q1 = qnmknode( "m/m/m-fcfs", 1 );} +@kbd{Q2 = qnmknode( "m/m/m-fcfs", 2 );} +@kbd{Q3 = qnmknode( "m/m/m-fcfs", 0.8 );} +@end group +@end example + +The first parameter of @command{qnmknode} is a string describing the +type of the node. Here we use @code{"m/m/m-fcfs"} to denote a +@math{M/M/m}--FCFS center. The second parameter gives the average +service time. An optional third parameter can be used to specify the +number @math{m} of service centers. If omitted, it is assumed +@math{m=1} (single-server node). + +Now, the network can be analyzed as follows: + +@example +@group +@kbd{N = 10;} +@kbd{V = [1 0.3 0.7];} +@kbd{[U R Q X] = qnsolve( "closed", N, @{ Q1, Q2, Q3 @}, V )} + @result{} U = 0.99139 0.59483 0.55518 + @result{} R = 7.4360 4.7531 1.7500 + @result{} Q = 7.3719 1.4136 1.2144 + @result{} X = 0.99139 0.29742 0.69397 +@end group +@end example + +Of course, we get exactly the same results. Other functions can be used +for closed networks, @pxref{Algorithms for Product-Form QNs}. + +@node Analysis of Open Networks +@section Analysis of Open Networks + +Open networks can be analyzed in a similar way. Let us consider +an open network with @math{K=3} service centers, and routing +probability matrix as follows: + +@iftex +@tex +$$ +P = \pmatrix{ 0 & 0.3 & 0.5 \cr + 1 & 0 & 0 \cr + 1 & 0 & 0 } +$$ +@end tex +@end iftex +@ifnottex +@example + [ 0 0.3 0.5 ] +P = [ 1 0 0 ] + [ 1 0 0 ] +@end example +@end ifnottex + +In this network, requests can leave the system from center 1 with +probability @math{(1-(0.3+0.5) = 0.2}. We suppose that external jobs +arrive at center 1 with rate @math{\lambda_1 = 0.15}; there are no +arrivals at centers 2 and 3. + +Similarly to closed networks, we first need to compute the visit +counts @math{V_k} to center @math{k}. Again, we use the +@command{qnvisits} function as follows: + +@example +@group +@kbd{P = [0 0.3 0.5; 1 0 0; 1 0 0];} +@kbd{lambda = [0.15 0 0];} +@kbd{V = qnvisits(P, lambda)} + @result{} V = 5.00000 1.50000 2.50000 +@end group +@end example + +@noindent where @code{@var{lambda}(k)} is the arrival rate at center @math{k}, +and @var{P} is the routing matrix. The visit counts @math{V_k} for +open networks satisfy the following equation: + +@iftex +@tex +$$ +V_j = P_{0, j} + \sum_{i=1}^K V_i P_{i, j} +$$ +@end tex +@end iftex +@ifnottex +@example +V_j = sum_i V_i P_ij +@end example +@end ifnottex + +where @math{P_{0, j}} is the probability of an external arrival to +center @math{j}. This can be computed as: + +@tex +$$ +P_{0, j} = {\lambda_j \over \sum_{i=1}^K \lambda_i } +$$ +@end tex + +Assuming the same service times as in the previous example, the +network can be analyzed with the @command{qnopen} function, as +follows: + +@example +@group +@kbd{S = [1 2 0.8];} +@kbd{[U R Q X] = qnopen( sum(lambda), S, V )} + @result{} U = 0.75000 0.45000 0.30000 + @result{} R = 4.0000 3.6364 1.1429 + @result{} Q = 3.00000 0.81818 0.42857 + @result{} X = 0.75000 0.22500 0.37500 +@end group +@end example + +The first parameter of the @command{qnopen} function is the (scalar) +aggregate arrival rate. + +Again, it is possible to use the @command{qnsolve} high-level function: + +@example +@group +@kbd{Q1 = qnmknode( "m/m/m-fcfs", 1 );} +@kbd{Q2 = qnmknode( "m/m/m-fcfs", 2 );} +@kbd{Q3 = qnmknode( "m/m/m-fcfs", 0.8 );} +@kbd{lambda = [0.15 0 0];} +@kbd{[U R Q X] = qnsolve( "open", sum(lambda), @{ Q1, Q2, Q3 @}, V )} + @result{} U = 0.75000 0.45000 0.30000 + @result{} R = 4.0000 3.6364 1.1429 + @result{} Q = 3.00000 0.81818 0.42857 + @result{} X = 0.75000 0.22500 0.37500 +@end group +@end example + +@c @node Markov Chains Analysis +@c @section Markov Chains Analysis + +@c @subsection Discrete-Time Markov Chains + +@c (TODO) + +@c @subsection Continuous-Time Markov Chains + +@c (TODO) + Deleted: trunk/octave-forge/main/queueing/doc/gettingstarted.txi =================================================================== --- trunk/octave-forge/main/queueing/doc/gettingstarted.txi 2012-04-06 10:07:57 UTC (rev 10166) +++ trunk/octave-forge/main/queueing/doc/gettingstarted.txi 2012-04-06 16:04:05 UTC (rev 10167) @@ -1,316 +0,0 @@ -@c -*- texinfo -*- - -@c Copyright (C) 2008, 2009, 2010, 2011, 2012 Moreno Marzolla -@c -@c This file is part of the queueing toolbox, a Queueing Networks -@c analysis package for GNU Octave. -@c -@c The queueing toolbox is free software; you can redistribute it -@c and/or modify it under the terms of the GNU General Public License -@c as published by the Free Software Foundation; either version 3 of -@c the License, or (at your option) any later version. -@c -@c The queueing toolbox is distributed in the hope that it will be -@c useful, but WITHOUT ANY WARRANTY; without even the implied warranty -@c of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -@c GNU General Public License for more details. -@c -@c You should have received a copy of the GNU General Public License -@c along with the queueing toolbox; see the file COPYING. If not, see -@c <http://www.gnu.org/licenses/>. - -@node Getting Started -@chapter Introduction and Getting Started - -@menu -* Analysis of Closed Networks:: -* Analysis of Open Networks:: -@end menu - -In this chapter we give some usage examples of the @code{queueing} -package. The reader is assumed to be familiar with Queueing Networks -(although some basic terminology and notation will be given -here). Additional usage examples are embedded in most of the function -files; to display and execute the demos associated with function -@emph{fname} you can type @command{demo @emph{fname}} at the Octave -prompt. For example - -@example -@kbd{demo qnclosed} -@end example - -@noindent executes all demos (if any) for the @command{qnclosed} function. - -@node Analysis of Closed Networks -@section Analysis of Closed Networks - -Let us consider a simple closed network with @math{K=3} service -centers. Each center is of type @math{M/M/1}--FCFS. We denote with -@math{S_i} the average service time at center @math{i}, @math{i=1, 2, -3}. Let @math{S_1 = 1.0}, @math{S_2 = 2.0} and @math{S_3 = 0.8}. The -routing of jobs within the network is described with a @emph{routing -probability matrix} @math{P}. Specifically, a request completing -service at center @math{i} is enqueued at center @math{j} with -probability @math{P_{i, j}}. Let us assume the following routing -probability matrix: - -@iftex -@tex -$$ -P = \pmatrix{ 0 & 0.3 & 0.7 \cr - 1 & 0 & 0 \cr - 1 & 0 & 0 } -$$ -@end tex -@end iftex -@ifnottex -@example - [ 0 0.3 0.7 ] -P = [ 1 0 0 ] - [ 1 0 0 ] -@end example -@end ifnottex - -For example, according to matric @math{P} a job completing service at -center 1 is routed to center 2 with probability 0.3, and is routed to -center 3 with probability 0.7. - -The network above can be analyzed with the @command{qnclosed} -function; if there is just a single class of requests, as in the -example above, @command{qnclosed} calls @command{qnclosedsinglemva} -which implements the Mean Value Analysys (MVA) algorithm for -single-class, product-form network. - -@command{qnclosed} requires the following parameters: - -@table @var - -@item N -Number of requests in the network (since we are considering a closed -network, the number of requests is fixed) - -@item S -Array of average service times at the centers: @code{@var{S}(k)} is -the average service time at center @math{k}. - -@item V -Array of visit ratios: @code{@var{V}(k)} is the average number of -visits to center @math{k}. - -@end table - -As can be seen, we must compute the @emph{visit ratios} (or visit -counts) @math{V_k} for each center @math{k}. The visit counts satisfy -the following equations: - -@iftex -@tex -$$ -V_j = \sum_{i=1}^K V_i P_{i, j} -$$ -@end tex -@end iftex -@ifnottex -@example -V_j = sum_i V_i P_ij -@end example -@end ifnottex - -We can compute @math{V_k} from the routing probability matrix -@math{P_{i, j}} using the @command{qnvisits} function: - -@example -@group -@kbd{P = [0 0.3 0.7; 1 0 0; 1 0 0];} -@kbd{V = qnvisits(P)} - @result{} V = 1.00000 0.30000 0.70000 -@end group -@end example - -We can check that the computed values satisfy the above equation by -evaluating the following expression: - -@example -@kbd{V*P} - @result{} ans = 1.00000 0.30000 0.70000 -@end example - -@noindent which is equal to @math{V}. -Hence, we can analyze the network for a given population size @math{N} -(for example, @math{N=10}) as follows: - -@example -@group -@kbd{N = 10;} -@kbd{S = [1 2 0.8];} -@kbd{P = [0 0.3 0.7; 1 0 0; 1 0 0];} -@kbd{V = qnvisits(P);} -@kbd{[U R Q X] = qnclosed( N, S, V )} - @result{} U = 0.99139 0.59483 0.55518 - @result{} R = 7.4360 4.7531 1.7500 - @result{} Q = 7.3719 1.4136 1.2144 - @result{} X = 0.99139 0.29742 0.69397 -@end group -@end example - -The output of @command{qnclosed} includes the vector of utilizations -@math{U_k} at center @math{k}, response time @math{R_k}, average -number of customers @math{Q_k} and throughput @math{X_k}. In our -example, the throughput of center 1 is @math{X_1 = 0.99139}, and the -average number of requests in center 3 is @math{Q_3 = 1.2144}. The -utilization of center 1 is @math{U_1 = 0.99139}, which is the higher -value among the service centers. Tus, center 1 is the @emph{bottleneck -device}. - -This network can also be analyzed with the @command{qnsolve} -function. @command{qnsolve} can handle open, closed or mixed networks, -and allows the network to be described in a very flexible way. First, -let @var{Q1}, @var{Q2} and @var{Q3} be the variables describing the -service centers. Each variable is instantiated with the -@command{qnmknode} function. - -@example -@group -@kbd{Q1 = qnmknode( "m/m/m-fcfs", 1 );} -@kbd{Q2 = qnmknode( "m/m/m-fcfs", 2 );} -@kbd{Q3 = qnmknode( "m/m/m-fcfs", 0.8 );} -@end group -@end example - -The first parameter of @command{qnmknode} is a string describing the -type of the node. Here we use @code{"m/m/m-fcfs"} to denote a -@math{M/M/m}--FCFS center. The second parameter gives the average -service time. An optional third parameter can be used to specify the -number @math{m} of service centers. If omitted, it is assumed -@math{m=1} (single-server node). - -Now, the network can be analyzed as follows: - -@example -@group -@kbd{N = 10;} -@kbd{V = [1 0.3 0.7];} -@kbd{[U R Q X] = qnsolve( "closed", N, @{ Q1, Q2, Q3 @}, V )} - @result{} U = 0.99139 0.59483 0.55518 - @result{} R = 7.4360 4.7531 1.7500 - @result{} Q = 7.3719 1.4136 1.2144 - @result{} X = 0.99139 0.29742 0.69397 -@end group -@end example - -Of course, we get exactly the same results. Other functions can be used -for closed networks, @pxref{Algorithms for Product-Form QNs}. - -@node Analysis of Open Networks -@section Analysis of Open Networks - -Open networks can be analyzed in a similar way. Let us consider -an open network with @math{K=3} service centers, and routing -probability matrix as follows: - -@iftex -@tex -$$ -P = \pmatrix{ 0 & 0.3 & 0.5 \cr - 1 & 0 & 0 \cr - 1 & 0 & 0 } -$$ -@end tex -@end iftex -@ifnottex -@example - [ 0 0.3 0.5 ] -P = [ 1 0 0 ] - [ 1 0 0 ] -@end example -@end ifnottex - -In this network, requests can leave the system from center 1 with -probability @math{(1-(0.3+0.5) = 0.2}. We suppose that external jobs -arrive at center 1 with rate @math{\lambda_1 = 0.15}; there are no -arrivals at centers 2 and 3. - -Similarly to closed networks, we first need to compute the visit -counts @math{V_k} to center @math{k}. Again, we use the -@command{qnvisits} function as follows: - -@example -@group -@kbd{P = [0 0.3 0.5; 1 0 0; 1 0 0];} -@kbd{lambda = [0.15 0 0];} -@kbd{V = qnvisits(P, lambda)} - @result{} V = 5.00000 1.50000 2.50000 -@end group -@end example - -@noindent where @code{@var{lambda}(k)} is the arrival rate at center @math{k}, -and @var{P} is the routing matrix. The visit counts @math{V_k} for -open networks satisfy the following equation: - -@iftex -@tex -$$ -V_j = P_{0, j} + \sum_{i=1}^K V_i P_{i, j} -$$ -@end tex -@end iftex -@ifnottex -@example -V_j = sum_i V_i P_ij -@end example -@end ifnottex - -where @math{P_{0, j}} is the probability of an external arrival to -center @math{j}. This can be computed as: - -@tex -$$ -P_{0, j} = {\lambda_j \over \sum_{i=1}^K \lambda_i } -$$ -@end tex - -Assuming the same service times as in the previous example, the -network can be analyzed with the @command{qnopen} function, as -follows: - -@example -@group -@kbd{S = [1 2 0.8];} -@kbd{[U R Q X] = qnopen( sum(lambda), S, V )} - @result{} U = 0.75000 0.45000 0.30000 - @result{} R = 4.0000 3.6364 1.1429 - @result{} Q = 3.00000 0.81818 0.42857 - @result{} X = 0.75000 0.22500 0.37500 -@end group -@end example - -The first parameter of the @command{qnopen} function is the (scalar) -aggregate arrival rate. - -Again, it is possible to use the @command{qnsolve} high-level function: - -@example -@group -@kbd{Q1 = qnmknode( "m/m/m-fcfs", 1 );} -@kbd{Q2 = qnmknode( "m/m/m-fcfs", 2 );} -@kbd{Q3 = qnmknode( "m/m/m-fcfs", 0.8 );} -@kbd{lambda = [0.15 0 0];} -@kbd{[U R Q X] = qnsolve( "open", sum(lambda), @{ Q1, Q2, Q3 @}, V )} - @result{} U = 0.75000 0.45000 0.30000 - @result{} R = 4.0000 3.6364 1.1429 - @result{} Q = 3.00000 0.81818 0.42857 - @result{} X = 0.75000 0.22500 0.37500 -@end group -@end example - -@c @node Markov Chains Analysis -@c @section Markov Chains Analysis - -@c @subsection Discrete-Time Markov Chains - -@c (TODO) - -@c @subsection Continuous-Time Markov Chains - -@c (TODO) - Copied: trunk/octave-forge/main/queueing/doc/gpl.texi (from rev 10137, trunk/octave-forge/main/queueing/doc/gpl.txi) =================================================================== --- trunk/octave-forge/main/queueing/doc/gpl.texi (rev 0) +++ trunk/octave-forge/main/queueing/doc/gpl.texi 2012-04-06 16:04:05 UTC (rev 10167) @@ -0,0 +1,718 @@ +@node Copying +@appendix GNU GENERAL PUBLIC LICENSE +@cindex warranty +@cindex copyright + +@center Version 3, 29 June 2007 + +@display +Copyright @copyright{} 2007 Free Software Foundation, Inc. @url{http://fsf.org/} + +Everyone is permitted to copy and distribute verbatim copies of this +license document, but changing it is not allowed. +@end display + +@heading Preamble + +The GNU General Public License is a free, copyleft license for +software and other kinds of works. + +The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom +to share and change all versions of a program---to make sure it remains +free software for all its users. We, the Free Software Foundation, +use the GNU General Public License for most of our software; it +applies also to any other work released this way by its authors. You +can apply it to your programs, too. + +When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + +To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you +have certain responsibilities if you distribute copies of the +software, or if you modify it: responsibilities to respect the freedom +of others. + +For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, +receive or can get the source code. And you must show them these +terms so they know their rights. + +Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + +For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + +Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the +manufacturer can do so. This is fundamentally incompatible with the +aim of protecting users' freedom to change the software. The +systematic pattern of such abuse occurs in the area of products for +individuals to use, which is precisely where it is most unacceptable. +Therefore, we have designed this version of the GPL to prohibit the +practice for those products. If such problems arise substantially in +other domains, we stand ready to extend this provision to those +domains in future versions of the GPL, as needed to protect the +freedom of users. + +Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish +to avoid the special danger that patents applied to a free program +could make it effectively proprietary. To prevent this, the GPL +assures that patents cannot be used to render the program non-free. + +The precise terms and conditions for copying, distribution and +modification follow. + +@heading TERMS AND CONDITIONS + +@enumerate 0 +@item Definitions. + +``This License'' refers to version 3 of the GNU General Public License. + +``Copyright'' also means copyright-like laws that apply to other kinds +of works, such as semiconductor masks. + +``The Program'' refers to any copyrightable work licensed under this +License. Each licensee is addressed as ``you''. ``Licensees'' and +``recipients'' may be individuals or organizations. + +To ``modify'' a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of +an exact copy. The resulting work is called a ``modified version'' of +the earlier work or a work ``based on'' the earlier work. + +A ``covered work'' means either the unmodified Program or a work based +on the Program. + +To ``propagate'' a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + +To ``convey'' a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user +through a computer network, with no transfer of a copy, is not +conveying. + +An interactive user interface displays ``Appropriate Legal Notices'' to +the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + +@item Source Code. + +The ``source code'' for a work means the preferred form of the work for +making modifications to it. ``Object code'' means any non-source form +of a work. + +A ``Standard Interface'' means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + +The ``System Libraries'' of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +``Major Component'', in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + +The ``Corresponding Source'' for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + +The Corresponding Source need not include anything that users can +regenerate automatically from other parts of the Corresponding Source. + +The Corresponding Source for a work in source code form is that same +work. + +@item Basic Permissions. + +All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + +You may make, run and propagate covered works that you do not convey, +without conditions so long as your license otherwise remains in force. +You may convey covered works to others for the sole purpose of having +them make modifications exclusively for you, or provide you with +facilities for running those works, provided that you comply with the +terms of this License in conveying all material for which you do not +control copyright. Those thus making or running the covered works for +you must do so exclusively on your behalf, under your direction and +control, on terms that prohibit them from making any copies of your +copyrighted material outside their relationship with you. + +Conveying under any other circumstances is permitted solely under the +conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + +@item Protecting Users' Legal Rights From Anti-Circumvention Law. + +No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + +When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such +circumvention is effected by exercising rights under this License with +respect to the covered work, and you disclaim any intention to limit +operation or modification of the work as a means of enforcing, against +the work's users, your or third parties' legal rights to forbid +circumvention of technological measures. + +@item Conveying Verbatim Copies. + +You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + +You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + +@item Conveying Modified Source Versions. + +You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these +conditions: + +@enumerate a +@item +The work must carry prominent notices stating that you modified it, +and giving a relevant date. + +@item +The work must carry prominent notices stating that it is released +under this License and any conditions added under section 7. This +requirement modifies the requirement in section 4 to ``keep intact all +notices''. + +@item +You must license the entire work, as a whole, under this License to +anyone who comes into possession of a copy. This License will +therefore apply, along with any applicable section 7 additional terms, +to the whole of the work, and all its parts, regardless of how they +are packaged. This License gives no permission to license the work in +any other way, but it does not invalidate such permission if you have +separately received it. + +@item +If the work has interactive user interfaces, each must display +Appropriate Legal Notices; however, if the Program has interactive +interfaces that do not display Appropriate Legal Notices, your work +need not make them do so. +@end enumerate + +A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +``aggregate'' if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + +@item Conveying Non-Source Forms. + +You may convey a covered work in object code form under the terms of +sections 4 and 5, provided that you also convey the machine-readable +Corresponding Source under the terms of this License, in one of these +ways: + +@enumerate a +@item +Convey the object code in, or embodied in, a physical product +(including a physical distribution medium), accompanied by the +Corresponding Source fixed on a durable physical medium customarily +used for software interchange. + +@item +Convey the object code in, or embodied in, a physical product +(including a physical distribution medium), accompanied by a written +offer, valid for at least three years and valid for as long as you +offer spare parts or customer support for that product model, to give +anyone who possesses the object code either (1) a copy of the +Corresponding Source for all the software in the product that is +covered by this License, on a durable physical medium customarily used +for software interchange, for a price no more than your reasonable +cost of physically performing this conveying of source, or (2) access +to copy the Corresponding Source from a network server at no charge. + +@item +Convey individual copies of the object code with a copy of the written +offer to provide the Corresponding Source. This alternative is +allowed only occasionally and noncommercially, and only if you +received the object code with such an offer, in accord with subsection +6b. + +@item +Convey the object code by offering access from a designated place +(gratis or for a charge), and offer equivalent access to the +Corresponding Source in the same way through the same place at no +further charge. You need not require recipients to copy the +Corresponding Source along with the object code. If the place to copy +the object code is a network server, the Corresponding Source may be +on a different server (operated by you or a third party) that supports +equivalent copying facilities, provided you maintain clear directions +next to the object code saying where to find the Corresponding Source. +Regardless of what server hosts the Corresponding Source, you remain +obligated to ensure that it is available for as long as needed to +satisfy these requirements. + +@item +Convey the object code using peer-to-peer transmission, provided you +inform other peers where the object code and Corresponding Source of +the work are being offered to the general public at no charge under +subsection 6d. + +@end enumerate + +A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + +A ``User Product'' is either (1) a ``consumer product'', which means any +tangible personal property which is normally used for personal, +family, or household purposes, or (2) anything designed or sold for +incorporation into a dwelling. In determining whether a product is a +consumer product, doubtful cases shall be resolved in favor of +coverage. For a particular product received by a particular user, +``normally used'' refers to a typical or common use of that class of +product, regardless of the status of the particular user or of the way +in which the particular user actually uses, or expects or is expected +to use, the product. A product is a consumer product regardless of +whether the product has substantial commercial, industrial or +non-consumer uses, unless such uses represent the only significant +mode of use of the product. + +``Installation Information'' for a User Product means any methods, +procedures, authorization keys, or other information required to +install and execute modified versions of a covered work in that User +Product from a modified version of its Corresponding Source. The +information must suffice to ensure that the continued functioning of +the modified object code is in no case prevented or interfered with +solely because modification has been made. + +If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + +The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or +updates for a work that has been modified or installed by the +recipient, or for the User Product in which it has been modified or +installed. Access to a network may be denied when the modification +itself materially and adversely affects the operation of the network +or violates the rules and protocols for communication across the +network. + +Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + +@item Additional Terms. + +``Additional permissions'' are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + +When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + +Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders +of that material) supplement the terms of this License with terms: + +@enumerate a +@item +Disclaiming warranty or limiting liability differently from the terms +of sections 15 and 16 of this License; or + +@item +Requiring preservation of specified reasonable legal notices or author +attributions in that material or in the Appropriate Legal Notices +displayed by works containing it; or + +@item +Prohibiting misrepresentation of the origin of that material, or +requiring that modified versions of such material be marked in +reasonable ways as different from the original version; or + +@item +Limiting the use for publicity purposes of names of licensors or +authors of the material; or + +@item +Declining to grant rights under trademark law for use of some trade +names, trademarks, or service marks; or + +@item +Requiring indemnification of licensors and authors of that material by +anyone who conveys the material (or modified versions of it) with +contractual assumptions of liability to the recipient, for any +liability that these contractual assumptions directly impose on those +licensors and authors. +@end enumerate + +All other non-permissive additional terms are considered ``further +restrictions'' within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + +If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + +Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; the +above requirements apply either way. + +@item Termination. + +You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + +However, if you cease all violation of this License, then your license +from a particular copyright holder is reinstated (a) provisionally, +unless and until the copyright holder explicitly and finally +terminates your license, and (b) permanently, if the copyright holder +fails to notify you of the violation by some reasonable means prior to +60 days after the cessation. + +Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + +Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + +@item Acceptance Not Required for Having Copies. + +You are not required to accept this License in order to receive or run +a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + +@item Automatic Licensing of Downstream Recipients. + +Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + +An ``entity transaction'' is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + +You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + +@item Patents. + +A ``contributor'' is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's ``contributor version''. + +A contributor's ``essential patent claims'' are all patent claims owned +or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, ``control'' includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + +Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + +In the following three paragraphs, a ``patent license'' is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To ``grant'' such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + +If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. ``Knowingly relying'' means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + +If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + +A patent license is ``discriminatory'' if it does not include within the +scope of its coverage, prohibits the exercise of, or is conditioned on +the non-exercise of one or more of the rights that are specifically +granted under this License. You may not convey a covered work if you +are a party to an arrangement with a third party that is in the +business of distributing software, under which you make payment to the +third party based on the extent of your activity of conveying the +work, and under which the third party grants, to any of the parties +who would receive the covered work from you, a discriminatory patent +license (a) in connection with copies of the covered work conveyed by +you (or copies made from those copies), or (b) primarily for and in +connection with specific products or compilations that contain the +covered work, unless you entered into that arrangement, or... [truncated message content] |
From: <mma...@us...> - 2012-04-06 10:08:08
|
Revision: 10166 http://octave.svn.sourceforge.net/octave/?rev=10166&view=rev Author: mmarzolla Date: 2012-04-06 10:07:57 +0000 (Fri, 06 Apr 2012) Log Message: ----------- fixed documentation Modified Paths: -------------- trunk/octave-forge/main/queueing/doc/INSTALL trunk/octave-forge/main/queueing/doc/installation.txi trunk/octave-forge/main/queueing/doc/queueing.html trunk/octave-forge/main/queueing/doc/queueing.pdf Modified: trunk/octave-forge/main/queueing/doc/INSTALL =================================================================== --- trunk/octave-forge/main/queueing/doc/INSTALL 2012-04-06 10:02:50 UTC (rev 10165) +++ trunk/octave-forge/main/queueing/doc/INSTALL 2012-04-06 10:07:57 UTC (rev 10166) @@ -56,10 +56,12 @@ octave:1> pkg install -local queueing-1.1.0.tar.gz This will install `queueing' within your home directory, and the -package will be available to your user only. Note that Octave version -3.2.3 as shipped with Ubuntu 10.04 seems to ignore `-local' and always -tries to install the package on the system directory. +package will be available to your user only. + Note: Octave version 3.2.3 as shipped with Ubuntu 10.04 seems to + ignore `-local' and always tries to install the package on the + system directory. + To remove `queueing' simply use octave:1> pkg uninstall queueing Modified: trunk/octave-forge/main/queueing/doc/installation.txi =================================================================== --- trunk/octave-forge/main/queueing/doc/installation.txi 2012-04-06 10:02:50 UTC (rev 10165) +++ trunk/octave-forge/main/queueing/doc/installation.txi 2012-04-06 10:07:57 UTC (rev 10166) @@ -103,10 +103,14 @@ @end example This will install @code{queueing} within your home directory, and the -package will be available to your user only. Note that Octave version -3.2.3 as shipped with Ubuntu 10.04 seems to ignore @code{-local} and -always tries to install the package on the system directory. +package will be available to your user only. +@quotation Note +Octave version 3.2.3 as shipped with Ubuntu 10.04 seems to ignore +@code{-local} and always tries to install the package on the system +directory. +@end quotation + To remove @code{queueing} simply use @example Modified: trunk/octave-forge/main/queueing/doc/queueing.html =================================================================== --- trunk/octave-forge/main/queueing/doc/queueing.html 2012-04-06 10:02:50 UTC (rev 10165) +++ trunk/octave-forge/main/queueing/doc/queueing.html 2012-04-06 10:07:57 UTC (rev 10166) @@ -356,10 +356,14 @@ <pre class="example"> octave:1> <kbd>pkg install -local queueing-1.1.0.tar.gz</kbd> </pre> <p>This will install <code>queueing</code> within your home directory, and the -package will be available to your user only. Note that Octave version -3.2.3 as shipped with Ubuntu 10.04 seems to ignore <code>-local</code> and -always tries to install the package on the system directory. +package will be available to your user only. + <blockquote> +<b>Note:</b> Octave version 3.2.3 as shipped with Ubuntu 10.04 seems to ignore +<code>-local</code> and always tries to install the package on the system +directory. +</blockquote> + <p>To remove <code>queueing</code> simply use <pre class="example"> octave:1> <kbd>pkg uninstall queueing</kbd> Modified: trunk/octave-forge/main/queueing/doc/queueing.pdf =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mma...@us...> - 2012-04-06 10:02:57
|
Revision: 10165 http://octave.svn.sourceforge.net/octave/?rev=10165&view=rev Author: mmarzolla Date: 2012-04-06 10:02:50 +0000 (Fri, 06 Apr 2012) Log Message: ----------- Fixed build Modified Paths: -------------- trunk/octave-forge/main/queueing/Makefile Added Paths: ----------- trunk/octave-forge/main/queueing/doc/grabdemo.m Modified: trunk/octave-forge/main/queueing/Makefile =================================================================== --- trunk/octave-forge/main/queueing/Makefile 2012-04-06 10:01:00 UTC (rev 10164) +++ trunk/octave-forge/main/queueing/Makefile 2012-04-06 10:02:50 UTC (rev 10165) @@ -3,7 +3,7 @@ PROGNAME=queueing DISTNAME=$(PROGNAME)-$(VERSIONNUM) -SUBDIRS=inst scripts examples doc test devel +SUBDIRS=inst scripts doc test devel DISTFILES=COPYING NEWS DESCRIPTION DISTSUBDIRS=inst doc Added: trunk/octave-forge/main/queueing/doc/grabdemo.m =================================================================== --- trunk/octave-forge/main/queueing/doc/grabdemo.m (rev 0) +++ trunk/octave-forge/main/queueing/doc/grabdemo.m 2012-04-06 10:02:50 UTC (rev 10165) @@ -0,0 +1,77 @@ +## Copyright (C) 2005, 2006, 2007 David Bateman +## Modifications Copyright (C) 2009 Moreno Marzolla +## +## This file is part of qnetworks. It is based on the fntests.m +## script included in GNU Octave. +## +## Octave is free software; you can redistribute it and/or modify it +## under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 3 of the License, or (at +## your option) any later version. +## +## Octave is distributed in the hope that it will be useful, but +## WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with Octave; see the file COPYING. If not, see +## <http://www.gnu.org/licenses/>. + +clear all; + +global fundirs; + +if (nargin == 1) + xdir = argv(){1}; +else + xdir = "../inst/"; +endif + +srcdir = canonicalize_file_name (xdir); +fundirs = {srcdir}; + +function print_file_name (nm) + filler = repmat (".", 1, 55-length (nm)); + printf (" %s %s", nm, filler); +endfunction + +function y = hasdemo (f) + fid = fopen (f); + str = fscanf (fid, "%s"); + fclose (fid); + y = findstr (str, "%!demo"); +endfunction + +function dump_demo( fname, code, idx ) + if ( !idx) + return; + endif + printf("%d demos found\n", length(idx)-1 ); + [dd nn ee vv] = fileparts(fname); + for i=2:length(idx) + demoname = [ "demo_" num2str(i-1) "_" nn ".texi" ]; + fid = fopen( demoname, "wt" ); + fprintf(fid,"%s",code(idx(i-1)+1:idx(i)-1)); + fclose(fid); + endfor +endfunction + +for j=1:length(fundirs) + d = fundirs{j}; + lst = dir (d); + for i = 1:length (lst) + nm = lst(i).name; + if ((length (nm) > 3 && strcmp (nm((end-2):end), ".cc")) + || (length (nm) > 2 && strcmp (nm((end-1):end), ".m"))) + f = fullfile (d, nm); + ## Only run if it contains %!demo + if (hasdemo (f)) + tmp = strrep (f, [srcdir, "/"], ""); + print_file_name (tmp); + [code, idx] = test (f, "grabdemo" ); + dump_demo( nm, code, idx ); + endif + endif + endfor +endfor This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mma...@us...> - 2012-04-06 10:01:08
|
Revision: 10164 http://octave.svn.sourceforge.net/octave/?rev=10164&view=rev Author: mmarzolla Date: 2012-04-06 10:01:00 +0000 (Fri, 06 Apr 2012) Log Message: ----------- added full documentation sources Modified Paths: -------------- trunk/octave-forge/main/queueing/Makefile trunk/octave-forge/main/queueing/doc/INSTALL trunk/octave-forge/main/queueing/doc/Makefile trunk/octave-forge/main/queueing/doc/README trunk/octave-forge/main/queueing/doc/installation.txi trunk/octave-forge/main/queueing/doc/markovchains.txi trunk/octave-forge/main/queueing/doc/queueing.html trunk/octave-forge/main/queueing/doc/queueing.pdf trunk/octave-forge/main/queueing/doc/queueing.texi trunk/octave-forge/main/queueing/doc/queueingnetworks.txi Removed Paths: ------------- trunk/octave-forge/main/queueing/examples/ Modified: trunk/octave-forge/main/queueing/Makefile =================================================================== --- trunk/octave-forge/main/queueing/Makefile 2012-04-06 07:44:33 UTC (rev 10163) +++ trunk/octave-forge/main/queueing/Makefile 2012-04-06 10:01:00 UTC (rev 10164) @@ -18,7 +18,7 @@ \rm -f doc/conf.texi echo "@set VERSION $(VERSIONNUM)" > doc/conf.texi echo "@set VERSIONDATE $(VERSIONDATE)" >> doc/conf.texi - echo "@set top_srcdir " `pwd` >> doc/conf.texi + echo "@c @set top_srcdir " `pwd` >> doc/conf.texi DESCRIPTION: DESCRIPTION.in cat DESCRIPTION.in | \ @@ -33,7 +33,7 @@ for d in $(SUBDIRS); do \ $(MAKE) -C $$d $(MAKECMDGOALS); \ done - \rm -r -f *~ $(DISTNAME).tar.gz $(DISTNAME).tar.gz.uue $(PROGNAME) + \rm -r -f *~ $(DISTNAME).tar.gz $(DISTNAME).tar.gz.uue $(PROGNAME) $(PROGNAME)-html.tar.gz $(PROGNAME)-html.tar.gz.uue $(PROGNAME)-html distclean: clean for d in $(SUBDIRS); do \ Modified: trunk/octave-forge/main/queueing/doc/INSTALL =================================================================== --- trunk/octave-forge/main/queueing/doc/INSTALL 2012-04-06 07:44:33 UTC (rev 10163) +++ trunk/octave-forge/main/queueing/doc/INSTALL 2012-04-06 10:01:00 UTC (rev 10164) @@ -1,4 +1,4 @@ -This file documents the installation procedure of the `queueing' +This file documents the installation procedure of the Octave `queueing' toolbox. `queueing' is free software; you can redistribute it and/or modify @@ -6,9 +6,9 @@ later, as published by the Free Software Foundation. Note: This file (`INSTALL') is automatically generated from - `doc/installation.txi' in the `queueing' sources. Do not modify - this document directly, as changes will be lost. Modify the source - `doc/installation.txi' instead. + `doc/installation.txi' in the `queueing' subversion sources. Do + not modify this document directly, as changes will be lost. Modify + the source `doc/installation.txi' instead. 1 Installing the queueing toolbox ********************************* @@ -21,12 +21,13 @@ `http://octave.sourceforge.net/queueing/' - The package Web page is + Additional information can be found at `http://www.moreno.marzolla.name/software/queueing/' If you have a recent version of GNU Octave and a network connection, -you can install `queueing' directly from the prompt using this command: +you can install `queueing' directly from Octave command prompt using +this command: octave:1> pkg install -forge queueing @@ -55,11 +56,11 @@ octave:1> pkg install -local queueing-1.1.0.tar.gz This will install `queueing' within your home directory, and the -package will be available to your user only. *Note:* Octave version +package will be available to your user only. Note that Octave version 3.2.3 as shipped with Ubuntu 10.04 seems to ignore `-local' and always tries to install the package on the system directory. - To remove `queueing' you can use + To remove `queueing' simply use octave:1> pkg uninstall queueing @@ -92,79 +93,7 @@ search path each time Octave is started, and you no longer need to specify the `-p' option on the command line. -1.3 Content of the source distribution -====================================== - -The source code of the latest version of the `queueing' package can be -found in the Subversion repository at the URL: - -`http://octave.svn.sourceforge.net/viewvc/octave/trunk/octave-forge/main/queueing/' - - The source distribution contains the following directories (some of -which are not included in the installation tarball): - -`doc/' - Documentation source. Most of the documentation is extracted from - the comment blocks of individual function files from the `inst/' - directory. - -`inst/' - This directory contains the m-files which implement the various - Queueing Network algorithms provided by `queueing'. As a - notational convention, the names of source files containing - functions for Queueing Networks start with the `qn' prefix; the - name of source files containing functions for Continuous-Time - Markov Chains (CTMSs) start with the `ctmc' prefix, and the names - of files containing functions for Discrete-Time Markov Chains - (DTMCs) start with the `dtmc' prefix. - -`test/' - This directory contains the test functions used to invoke all - tests on all function files. - -`scripts/' - This directory contains some utility scripts mostly from GNU - Octave, which extract the documentation from the - specially-formatted comments in the m-files. - -`examples/' - This directory contains examples which are automatically extracted - from the `demo' blocks of the function files. - -`devel/' - This directory contains function files which are either not working - properly, or need additional testing before they are moved to the - `inst/' directory. - - - The `queueing' package ships with a Makefile which can be used to -produce the documentation (in PDF and HTML format), and automatically -execute all function tests. Specifically, the following targets are -defined: - -`all' - Running `make' (or `make all') on the top-level directory builds - the programs used to extract the documentation from the comments - embedded in the m-files, and then produce the documentation in PDF - and HTML format (`doc/queueing.pdf' and `doc/queueing.html', - respectively). - -`check' - Running `make check' will execute all tests contained in the - m-files. If you modify the code of any function in the `inst/' - directory, you should run the tests to ensure that no errors have - been introduced. You are also encouraged to contribute new tests, - especially for functions which are not adequately validated. - -`clean' -`distclean' -`dist' - The `make clean', `make distclean' and `make dist' commands are - used to clean up the source directory and prepare the distribution - archive in compressed tar format. - - -1.4 Using the queueing toolbox +1.3 Using the queueing toolbox ============================== You can use all functions by simply invoking their name with the Modified: trunk/octave-forge/main/queueing/doc/Makefile =================================================================== --- trunk/octave-forge/main/queueing/doc/Makefile 2012-04-06 07:44:33 UTC (rev 10163) +++ trunk/octave-forge/main/queueing/doc/Makefile 2012-04-06 10:01:00 UTC (rev 10164) @@ -1,6 +1,6 @@ DOC=queueing CHAPTERS=$(patsubst %.txi,%.texi,$(wildcard *.txi)) -DISTFILES=README INSTALL $(DOC).pdf $(DOC).html +DISTFILES=README INSTALL $(DOC).pdf $(DOC).html $(DOC).texi $(CHAPTERS) $(wildcard demo_*.texi) .PHONY: clean dist @@ -26,17 +26,20 @@ $(DOC).info: $(DOC).texi $(CHAPTERS) -$(MAKEINFO) $< -%.texi: %.txi DOCSTRINGS +%.texi: %.txi DOCSTRINGS DEMOS ../scripts/munge-texi -d DOCSTRINGS < $< > $@ DOCSTRINGS: $(wildcard ../inst/*.m) (cd ../scripts; ./mkdoc ../inst) > DOCSTRINGS || \rm -f DOCSTRINGS +DEMOS: + octave -q grabdemo.m ../inst/ && touch DEMOS + dist: ln $(DISTFILES) ../`cat ../fname`/doc/ clean: - \rm -f *.fns *.pdf *.aux *.log *.dvi *.out *.info *.html *.ky *.tp *.toc *.vr *.cp *.fn *.pg *.op *.au *.aus *.cps x.log *~ DOCSTRINGS $(CHAPTERS) ../INSTALL + \rm -f *.fns *.pdf *.aux *.log *.dvi *.out *.info *.html *.ky *.tp *.toc *.vr *.cp *.fn *.pg *.op *.au *.aus *.cps x.log *~ DOCSTRINGS DEMOS $(CHAPTERS) ../INSTALL demo_*.texi distclean: clean Modified: trunk/octave-forge/main/queueing/doc/README =================================================================== --- trunk/octave-forge/main/queueing/doc/README 2012-04-06 07:44:33 UTC (rev 10163) +++ trunk/octave-forge/main/queueing/doc/README 2012-04-06 10:01:00 UTC (rev 10164) @@ -10,48 +10,18 @@ models. Open, closed and mixed networks are supported, with single or multiple classes of customers. The queueing toolbox also provides functions for steady-state and transient analysis of Markov chains, as -well as fo single station queueing systems. +well as for single station queueing systems. The Web page of the queueing toolbox is http://www.moreno.marzolla.name/software/queueing/ -The latest version can be downloaded from Octave-forge +The latest version can be downloaded from Octave forge http://octave.sourceforge.net/ -This package requires GNU Octave; version 3.0.0 or later should work. -The package contains the following directories (note that some of -these are only available in the SVN repository, and are not included -in the tarball published on Octave-forge): +This package requires GNU Octave; version 3.2.3 or later should work. -inst/ - Contains the Octave m-scripts implementing all functions - provided by the queueing toolbox. - -doc/ - Contains the user documentation, which is automatically - generated from the texinfo strings embedded in the m-scripts. - -scripts/ - Contains some scripts used to extract documentation strings - from the m-files. The scripts here have been taken almost - verbatim from the GNU Octave distribution. - -examples/ - Contains demo functions which are automatically extracted from - the scripts included in the inst/ directory. The demo - functions are put in this directory so that they can be - embedded into the package documentation. - -test/ - Contains the script used to execute all tests embedded within - functions in the inst/ directory. - -devel/ - Contains scripts which are currently under development, and - therefore should not be used. - The Octave queueing toolbox is distributed under the terms of the GNU General Public License, version 3 or later. See the file COPYING for details. Modified: trunk/octave-forge/main/queueing/doc/installation.txi =================================================================== --- trunk/octave-forge/main/queueing/doc/installation.txi 2012-04-06 07:44:33 UTC (rev 10163) +++ trunk/octave-forge/main/queueing/doc/installation.txi 2012-04-06 10:01:00 UTC (rev 10164) @@ -22,8 +22,8 @@ @ifset INSTALLONLY @include conf.texi -This file documents the installation procedure of the @code{queueing} -toolbox. +This file documents the installation procedure of the Octave +@code{queueing} toolbox. @code{queueing} is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 3 @@ -31,9 +31,9 @@ @quotation Note This file (@file{INSTALL}) is automatically generated from -@file{doc/installation.txi} in the @code{queueing} sources. Do not -modify this document directly, as changes will be lost. Modify the -source @file{doc/installation.txi} instead. +@file{doc/installation.txi} in the @code{queueing} subversion sources. +Do not modify this document directly, as changes will be lost. Modify +the source @file{doc/installation.txi} instead. @end quotation @end ifset @@ -44,7 +44,7 @@ @menu * Installation through Octave package management system:: * Manual installation:: -* Content of the source distribution:: +* Development sources:: * Using the queueing toolbox:: @end menu @@ -60,13 +60,13 @@ @url{http://octave.sourceforge.net/queueing/} -The package Web page is +Additional information can be found at @url{http://www.moreno.marzolla.name/software/queueing/} If you have a recent version of GNU Octave and a network connection, -you can install @code{queueing} directly from the prompt using this -command: +you can install @code{queueing} directly from Octave command prompt +using this command: @example octave:1> @kbd{pkg install -forge queueing} @@ -103,12 +103,11 @@ @end example This will install @code{queueing} within your home directory, and the -package will be available to your user only. @strong{Note:} Octave -version 3.2.3 as shipped with Ubuntu 10.04 seems to ignore -@code{-local} and always tries to install the package on the system -directory. +package will be available to your user only. Note that Octave version +3.2.3 as shipped with Ubuntu 10.04 seems to ignore @code{-local} and +always tries to install the package on the system directory. -To remove @code{queueing} you can use +To remove @code{queueing} simply use @example octave:1> @kbd{pkg uninstall queueing} @@ -159,18 +158,24 @@ @c @c -@node Content of the source distribution -@section Content of the source distribution +@ifclear INSTALLONLY +@node Development sources +@section Development sources -The source code of the latest version of the @code{queueing} -package can be found in the Subversion repository at the URL: +The source code of the @code{queueing} package can be found in the +Subversion repository at the URL: @url{http://octave.svn.sourceforge.net/viewvc/octave/trunk/octave-forge/main/queueing/} -The source distribution contains the following directories (some of -which are not included in the installation tarball): +The source distribution contains additional development files which +are not present in the installation tarball. This section briefly +describes the content of the source tree. This is only relevant for +developers who want to modify the code or documentation; normal users +of the @code{queueing} package don't need +The source distribution contains the following directories: + @table @file @item doc/ Documentation source. Most of the documentation is extracted from the @@ -236,6 +241,8 @@ @end table +@end ifclear + @c @c @c Modified: trunk/octave-forge/main/queueing/doc/markovchains.txi =================================================================== --- trunk/octave-forge/main/queueing/doc/markovchains.txi 2012-04-06 07:44:33 UTC (rev 10163) +++ trunk/octave-forge/main/queueing/doc/markovchains.txi 2012-04-06 10:01:00 UTC (rev 10164) @@ -205,7 +205,7 @@ @example @c @group -@verbatiminclude @value{top_srcdir}/examples/demo_1_dtmc.m +@verbatiminclude demo_1_dtmc.texi @c @end group @result{} 0.083333 0.125000 0.083333 0.125000 0.166667 0.125000 0.083333 0.125000 @@ -519,7 +519,7 @@ @example @group -@verbatiminclude @value{top_srcdir}/examples/demo_1_ctmc.m +@verbatiminclude demo_1_ctmc.texi @result{} q = 0.50000 0.50000 @end group @end example @@ -595,7 +595,7 @@ @example @group -@verbatiminclude @value{top_srcdir}/examples/demo_1_ctmc_exps.m +@verbatiminclude demo_1_ctmc_exps.texi @end group @end example @@ -611,7 +611,7 @@ @example @group -@verbatiminclude @value{top_srcdir}/examples/demo_1_ctmc_taexps.m +@verbatiminclude demo_1_ctmc_taexps.texi @end group @end example @@ -670,7 +670,7 @@ @example @group -@verbatiminclude @value{top_srcdir}/examples/demo_1_ctmc_mtta.m +@verbatiminclude demo_1_ctmc_mtta.texi @result{} t = 78.333 @end group @end example Modified: trunk/octave-forge/main/queueing/doc/queueing.html =================================================================== --- trunk/octave-forge/main/queueing/doc/queueing.html 2012-04-06 07:44:33 UTC (rev 10163) +++ trunk/octave-forge/main/queueing/doc/queueing.html 2012-04-06 10:01:00 UTC (rev 10164) @@ -44,7 +44,7 @@ <ul> <li><a href="#Installation-through-Octave-package-management-system">2.1 Installation through Octave package management system</a> <li><a href="#Manual-installation">2.2 Manual installation</a> -<li><a href="#Content-of-the-source-distribution">2.3 Content of the source distribution</a> +<li><a href="#Development-sources">2.3 Development sources</a> <li><a href="#Using-the-queueing-toolbox">2.4 Using the queueing toolbox</a> </li></ul> <li><a name="toc_Getting-Started" href="#Getting-Started">3 Introduction and Getting Started</a> @@ -302,7 +302,7 @@ <ul class="menu"> <li><a accesskey="1" href="#Installation-through-Octave-package-management-system">Installation through Octave package management system</a> <li><a accesskey="2" href="#Manual-installation">Manual installation</a> -<li><a accesskey="3" href="#Content-of-the-source-distribution">Content of the source distribution</a> +<li><a accesskey="3" href="#Development-sources">Development sources</a> <li><a accesskey="4" href="#Using-the-queueing-toolbox">Using the queueing toolbox</a> </ul> @@ -321,13 +321,13 @@ <p><a href="http://octave.sourceforge.net/queueing/">http://octave.sourceforge.net/queueing/</a> - <p>The package Web page is + <p>Additional information can be found at <p><a href="http://www.moreno.marzolla.name/software/queueing/">http://www.moreno.marzolla.name/software/queueing/</a> <p>If you have a recent version of GNU Octave and a network connection, -you can install <code>queueing</code> directly from the prompt using this -command: +you can install <code>queueing</code> directly from Octave command prompt +using this command: <pre class="example"> octave:1> <kbd>pkg install -forge queueing</kbd> </pre> @@ -356,19 +356,18 @@ <pre class="example"> octave:1> <kbd>pkg install -local queueing-1.1.0.tar.gz</kbd> </pre> <p>This will install <code>queueing</code> within your home directory, and the -package will be available to your user only. <strong>Note:</strong> Octave -version 3.2.3 as shipped with Ubuntu 10.04 seems to ignore -<code>-local</code> and always tries to install the package on the system -directory. +package will be available to your user only. Note that Octave version +3.2.3 as shipped with Ubuntu 10.04 seems to ignore <code>-local</code> and +always tries to install the package on the system directory. - <p>To remove <code>queueing</code> you can use + <p>To remove <code>queueing</code> simply use <pre class="example"> octave:1> <kbd>pkg uninstall queueing</kbd> </pre> <div class="node"> <a name="Manual-installation"></a> <p><hr> -Next: <a rel="next" accesskey="n" href="#Content-of-the-source-distribution">Content of the source distribution</a>, +Next: <a rel="next" accesskey="n" href="#Development-sources">Development sources</a>, Previous: <a rel="previous" accesskey="p" href="#Installation-through-Octave-package-management-system">Installation through Octave package management system</a>, Up: <a rel="up" accesskey="u" href="#Installation">Installation</a> @@ -403,7 +402,7 @@ longer need to specify the <samp><span class="option">-p</span></samp> option on the command line. <div class="node"> -<a name="Content-of-the-source-distribution"></a> +<a name="Development-sources"></a> <p><hr> Next: <a rel="next" accesskey="n" href="#Using-the-queueing-toolbox">Using the queueing toolbox</a>, Previous: <a rel="previous" accesskey="p" href="#Manual-installation">Manual installation</a>, @@ -411,16 +410,21 @@ </div> -<h3 class="section">2.3 Content of the source distribution</h3> +<h3 class="section">2.3 Development sources</h3> -<p>The source code of the latest version of the <code>queueing</code> -package can be found in the Subversion repository at the URL: +<p>The source code of the <code>queueing</code> package can be found in the +Subversion repository at the URL: <p><a href="http://octave.svn.sourceforge.net/viewvc/octave/trunk/octave-forge/main/queueing/">http://octave.svn.sourceforge.net/viewvc/octave/trunk/octave-forge/main/queueing/</a> - <p>The source distribution contains the following directories (some of -which are not included in the installation tarball): + <p>The source distribution contains additional development files which +are not present in the installation tarball. This section briefly +describes the content of the source tree. This is only relevant for +developers who want to modify the code or documentation; normal users +of the <code>queueing</code> package don't need + <p>The source distribution contains the following directories: + <dl> <dt><samp><span class="file">doc/</span></samp><dd>Documentation source. Most of the documentation is extracted from the comment blocks of individual function files from the <samp><span class="file">inst/</span></samp> @@ -478,7 +482,7 @@ <div class="node"> <a name="Using-the-queueing-toolbox"></a> <p><hr> -Previous: <a rel="previous" accesskey="p" href="#Content-of-the-source-distribution">Content of the source distribution</a>, +Previous: <a rel="previous" accesskey="p" href="#Development-sources">Development sources</a>, Up: <a rel="up" accesskey="u" href="#Installation">Installation</a> </div> Modified: trunk/octave-forge/main/queueing/doc/queueing.pdf =================================================================== (Binary files differ) Modified: trunk/octave-forge/main/queueing/doc/queueing.texi =================================================================== --- trunk/octave-forge/main/queueing/doc/queueing.texi 2012-04-06 07:44:33 UTC (rev 10163) +++ trunk/octave-forge/main/queueing/doc/queueing.texi 2012-04-06 10:01:00 UTC (rev 10164) @@ -38,13 +38,13 @@ @strong{See also:} \args\. @end macro -@macro examplefile{file} -@example -@group -@verbatiminclude @value{top_srcdir}/examples/\file\ -@end group -@end example -@end macro +@c @macro examplefile{file} +@c @example +@c @group +@c @verbatiminclude @value{top_srcdir}/examples/\file\ +@c @end group +@c @end example +@c @end macro @ifinfo @format Modified: trunk/octave-forge/main/queueing/doc/queueingnetworks.txi =================================================================== --- trunk/octave-forge/main/queueing/doc/queueingnetworks.txi 2012-04-06 07:44:33 UTC (rev 10163) +++ trunk/octave-forge/main/queueing/doc/queueingnetworks.txi 2012-04-06 10:01:00 UTC (rev 10164) @@ -439,7 +439,7 @@ follows: @example -@verbatiminclude @value{top_srcdir}/examples/demo_1_qnsolve.m +@verbatiminclude demo_1_qnsolve.texi @end example @@ -606,7 +606,7 @@ @end iftex @example -@verbatiminclude @value{top_srcdir}/examples/demo_1_qnconvolution.m +@verbatiminclude demo_1_qnconvolution.texi @print{} k(1)=1 prob=0.17975 @print{} k(2)=2 prob=0.48404 @print{} k(3)=0 prob=0.52779 @@ -719,7 +719,7 @@ @noindent @strong{EXAMPLE} @example -@verbatiminclude @value{top_srcdir}/examples/demo_1_qnopensingle.m +@verbatiminclude demo_1_qnopensingle.texi @print{} R_s = 1.4062 @print{} N = 4.2186 @end example @@ -769,7 +769,7 @@ @noindent @strong{EXAMPLE} @example -@verbatiminclude @value{top_srcdir}/examples/demo_1_qnclosedsinglemva.m +@verbatiminclude demo_1_qnclosedsinglemva.texi @end example @@ -1088,7 +1088,7 @@ @noindent @strong{EXAMPLE} @example -@verbatiminclude @value{top_srcdir}/examples/demo_1_qnclosed.m +@verbatiminclude demo_1_qnclosed.texi @end example @DOCSTRING(qnopen) @@ -1175,7 +1175,7 @@ @noindent @strong{EXAMPLE} @example -@verbatiminclude @value{top_srcdir}/examples/demo_1_qnvisits.m +@verbatiminclude demo_1_qnvisits.texi @end example @subsection Other utility functions This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-04-06 07:44:43
|
Revision: 10163 http://octave.svn.sourceforge.net/octave/?rev=10163&view=rev Author: paramaniac Date: 2012-04-06 07:44:33 +0000 (Fri, 06 Apr 2012) Log Message: ----------- control: create ar archive slicotlibrary.a silently (-c option) Modified Paths: -------------- trunk/octave-forge/main/control/src/Makefile Modified: trunk/octave-forge/main/control/src/Makefile =================================================================== --- trunk/octave-forge/main/control/src/Makefile 2012-04-06 07:26:18 UTC (rev 10162) +++ trunk/octave-forge/main/control/src/Makefile 2012-04-06 07:44:33 UTC (rev 10163) @@ -21,7 +21,7 @@ mv slicot/src_aux/*.f . cp TG04BX.fortran TG04BX.f mkoctfile -c *.f - ar -r slicotlibrary.a *.o + ar -rc slicotlibrary.a *.o rm -rf *.o *.f slicot # slicot functions This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-04-06 07:26:24
|
Revision: 10162 http://octave.svn.sourceforge.net/octave/?rev=10162&view=rev Author: paramaniac Date: 2012-04-06 07:26:18 +0000 (Fri, 06 Apr 2012) Log Message: ----------- control: stub function to avoid gen_doc_cache warning upon package installation Modified Paths: -------------- trunk/octave-forge/main/control/src/control_slicot_functions.cc Modified: trunk/octave-forge/main/control/src/control_slicot_functions.cc =================================================================== --- trunk/octave-forge/main/control/src/control_slicot_functions.cc 2012-04-05 23:56:17 UTC (rev 10161) +++ trunk/octave-forge/main/control/src/control_slicot_functions.cc 2012-04-06 07:26:18 UTC (rev 10162) @@ -39,3 +39,17 @@ #include "slsb16bd.cc" // coprime factorization state-feedback controller reduction #include "slsb16cd.cc" // frequency-weighted coprime factorization state-feedback controller reduction #include "slsb10yd.cc" // fit state-space model to frequency response data + + +// stub function to avoid gen_doc_cache warning upon package installation +DEFUN_DLD (control_slicot_functions, args, nargout, + "-*- texinfo -*-\n\ +Slicot Release 5.0\n\ +No argument checking.\n\ +For internal use only.") +{ + octave_value_list retval; + error ("control_slicot_functions: for internal use only"); + return retval; +} + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sla...@us...> - 2012-04-05 23:56:23
|
Revision: 10161 http://octave.svn.sourceforge.net/octave/?rev=10161&view=rev Author: slackydeb Date: 2012-04-05 23:56:17 +0000 (Thu, 05 Apr 2012) Log Message: ----------- ga: bump version number There are enough changes to bump the second version number. Modified Paths: -------------- trunk/octave-forge/main/ga/DESCRIPTION trunk/octave-forge/main/ga/NEWS Modified: trunk/octave-forge/main/ga/DESCRIPTION =================================================================== --- trunk/octave-forge/main/ga/DESCRIPTION 2012-04-05 23:55:58 UTC (rev 10160) +++ trunk/octave-forge/main/ga/DESCRIPTION 2012-04-05 23:56:17 UTC (rev 10161) @@ -1,6 +1,6 @@ Name: ga -Version: 0.9.9 -Date: 2012-03-15 +Version: 0.10.0 +Date: 2012-04-06 Author: Luca Favatella <sla...@gm...> Maintainer: Luca Favatella <sla...@gm...> Title: Genetic Algorithm Modified: trunk/octave-forge/main/ga/NEWS =================================================================== --- trunk/octave-forge/main/ga/NEWS 2012-04-05 23:55:58 UTC (rev 10160) +++ trunk/octave-forge/main/ga/NEWS 2012-04-05 23:56:17 UTC (rev 10161) @@ -1,7 +1,7 @@ Summary of important user-visible changes for releases of the ga package =============================================================================== -ga-0.9.9 Release Date: 2012-xx-yy Release Manager: Luca Favatella +ga-0.10.0 Release Date: 2012-04-06 Release Manager: Luca Favatella =============================================================================== ** Remove dependency on the "communications" package and require This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sla...@us...> - 2012-04-05 23:56:04
|
Revision: 10160 http://octave.svn.sourceforge.net/octave/?rev=10160&view=rev Author: slackydeb Date: 2012-04-05 23:55:58 +0000 (Thu, 05 Apr 2012) Log Message: ----------- ga: add commented code for deleting devel/ Modified Paths: -------------- trunk/octave-forge/main/ga/devel/release Modified: trunk/octave-forge/main/ga/devel/release =================================================================== --- trunk/octave-forge/main/ga/devel/release 2012-04-05 23:55:38 UTC (rev 10159) +++ trunk/octave-forge/main/ga/devel/release 2012-04-05 23:55:58 UTC (rev 10160) @@ -119,7 +119,7 @@ ## Create an unversioned copy of the package in the sandbox dir mkdir ${TmpDir}/${Pkg} vcs_export ${TmpDir}/${Pkg} -## TODO: consider deleting the devel/ folder +#rm -r ${TmpDir}/${Pkg}/devel ## Do not release the devel/ folder ## Move to sandbox dir cd $TmpDir This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sla...@us...> - 2012-04-05 23:55:45
|
Revision: 10159 http://octave.svn.sourceforge.net/octave/?rev=10159&view=rev Author: slackydeb Date: 2012-04-05 23:55:38 +0000 (Thu, 05 Apr 2012) Log Message: ----------- ga: add copyright notice to the release script Modified Paths: -------------- trunk/octave-forge/main/ga/devel/release Modified: trunk/octave-forge/main/ga/devel/release =================================================================== --- trunk/octave-forge/main/ga/devel/release 2012-04-05 23:55:19 UTC (rev 10158) +++ trunk/octave-forge/main/ga/devel/release 2012-04-05 23:55:38 UTC (rev 10159) @@ -1,5 +1,20 @@ #! /bin/sh +## Copyright (C) 2012 Luca Favatella <sla...@gm...> +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2 of the License, or +## (at your option) any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program; If not, see <http://www.gnu.org/licenses/>. + ## Ease the preparation of Octave-Forge package and function ## reference, automating the steps described at: ## http://octave.sourceforge.net/developers.html This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sla...@us...> - 2012-04-05 23:55:25
|
Revision: 10158 http://octave.svn.sourceforge.net/octave/?rev=10158&view=rev Author: slackydeb Date: 2012-04-05 23:55:19 +0000 (Thu, 05 Apr 2012) Log Message: ----------- ga: add documentation to the release script Thanks to Carn?\195?\171 Draug for pointing to releasePKG. Reference: http://sourceforge.net/mailarchive/message.php?msg_id=29010854 Modified Paths: -------------- trunk/octave-forge/main/ga/devel/release Modified: trunk/octave-forge/main/ga/devel/release =================================================================== --- trunk/octave-forge/main/ga/devel/release 2012-04-05 23:55:00 UTC (rev 10157) +++ trunk/octave-forge/main/ga/devel/release 2012-04-05 23:55:19 UTC (rev 10158) @@ -1,5 +1,29 @@ #! /bin/sh +## Ease the preparation of Octave-Forge package and function +## reference, automating the steps described at: +## http://octave.sourceforge.net/developers.html +## +## This script: +## - Must be executed from the root directory of the package +## (i.e. where the DESCRIPTION file is placed); +## - Extracts package name and version from the DESCRIPTION file; +## - Extracts code from the current directory (git-svn is assumed at +## the moment, code for svn is disabled ATM) to a sandbox dir; +## - Creates package and function reference in the sandbox dir; +## - Lists created files in the sandbox dir. +## +## Comment/uncomment the relevant lines in the the vcs_export() +## function in order to use svn or hg or git-svn (default). +## +## +## This is an alternative for releasePKG, available at: +## http://octave.svn.sourceforge.net/viewvc/octave/trunk/octave-forge/admin/releasePKG.m?view=log +## Usage of and contribution to releasePKG is recommended. +## +## Reference: http://sourceforge.net/mailarchive/message.php?msg_id=29010854 + + ## Functions usage() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sla...@us...> - 2012-04-05 23:55:07
|
Revision: 10157 http://octave.svn.sourceforge.net/octave/?rev=10157&view=rev Author: slackydeb Date: 2012-04-05 23:55:00 +0000 (Thu, 05 Apr 2012) Log Message: ----------- ga: include (commented) hg support in the release script Thanks to Jordi Guti?\195?\169rrez Hermoso. Reference: http://sourceforge.net/mailarchive/message.php?msg_id=29008793 Modified Paths: -------------- trunk/octave-forge/main/ga/devel/release Modified: trunk/octave-forge/main/ga/devel/release =================================================================== --- trunk/octave-forge/main/ga/devel/release 2012-04-05 22:14:27 UTC (rev 10156) +++ trunk/octave-forge/main/ga/devel/release 2012-04-05 23:55:00 UTC (rev 10157) @@ -45,6 +45,7 @@ vcs_export() { Path=$1 #svn export . $Path ## svn ## svn is untested TODO: test + #hg archive $Path ## hg. Reference: http://sourceforge.net/mailarchive/message.php?msg_id=29008793 git archive master | tar -x -C $Path ## git-svn } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sch...@us...> - 2012-04-05 22:14:34
|
Revision: 10156 http://octave.svn.sourceforge.net/octave/?rev=10156&view=rev Author: schloegl Date: 2012-04-05 22:14:27 +0000 (Thu, 05 Apr 2012) Log Message: ----------- platform specific definitions improved Modified Paths: -------------- trunk/octave-forge/extra/NaN/src/xptopen.cpp Modified: trunk/octave-forge/extra/NaN/src/xptopen.cpp =================================================================== --- trunk/octave-forge/extra/NaN/src/xptopen.cpp 2012-04-05 21:52:16 UTC (rev 10155) +++ trunk/octave-forge/extra/NaN/src/xptopen.cpp 2012-04-05 22:14:27 UTC (rev 10156) @@ -27,7 +27,7 @@ // along with this program; if not, see <http://www.gnu.org/licenses/>. // // $Id$ -// Copyright (C) 2010,2011 Alois Schloegl <alo...@gm...> +// Copyright (C) 2010,2011,2012 Alois Schloegl <alo...@is...> // This function is part of the NaN-toolbox // http://pub.ist.ac.at/~schloegl/matlab/NaN/ // @@ -72,36 +72,75 @@ #define max(a,b) (((a) > (b)) ? (a) : (b)) #define min(a,b) (((a) < (b)) ? (a) : (b)) -#ifdef __linux__ -/* use byteswap macros from the host system, hopefully optimized ones ;-) */ -#include <byteswap.h> -#endif +#if defined(__MINGW32__) + /* use local version because MINGW does not provide byteswap.h */ +# define __BIG_ENDIAN 4321 +# define __LITTLE_ENDIAN 1234 +# define __BYTE_ORDER __LITTLE_ENDIAN +# include "win32/byteswap.h" +# define bswap_16(x) __bswap_16(x) +# define bswap_32(x) __bswap_32(x) +# define bswap_64(x) __bswap_64(x) -#ifdef _WIN32 -#define __LITTLE_ENDIAN 1234 -#define __BIG_ENDIAN 4321 -#define __BYTE_ORDER __LITTLE_ENDIAN -#endif +#elif defined(__NetBSD__) +# include <sys/bswap.h> +# define __BIG_ENDIAN _BIG_ENDIAN +# define __LITTLE_ENDIAN _LITTLE_ENDIAN +# define __BYTE_ORDER _BYTE_ORDER +# define bswap_16(x) bswap16(x) +# define bswap_32(x) bswap32(x) +# define bswap_64(x) bswap64(x) -#if (defined(BSD) && (BSD >= 199103)) -#include <machine/endian.h> -#define __BIG_ENDIAN _BIG_ENDIAN -#define __LITTLE_ENDIAN _LITTLE_ENDIAN -#define __BYTE_ORDER _BYTE_ORDER -#endif +#elif defined(__APPLE__) +# include <CoreFoundation/CFByteOrder.h> +# define __BIG_ENDIAN CFByteOrderBigEndian +# define __LITTLE_ENDIAN CFByteOrderLittleEndian +# define __BYTE_ORDER (CFByteOrderGetCurrent) +# define bswap_16(x) CFSwapInt16(x) +# define bswap_32(x) CFSwapInt32(x) +# define bswap_64(x) CFSwapInt64(x) -#ifndef _BYTESWAP_H -/* define our own version - needed for Max OS X*/ -#define bswap_16(x) \ +#elif (defined(BSD) && (BSD >= 199103)) +# include <machine/endian.h> +# define __BIG_ENDIAN _BIG_ENDIAN +# define __LITTLE_ENDIAN _LITTLE_ENDIAN +# define __BYTE_ORDER _BYTE_ORDER +# define bswap_16(x) __bswap16(x) +# define bswap_32(x) __bswap32(x) +# define bswap_64(x) __bswap64(x) + +#elif defined(__GNUC__) + /* use byteswap macros from the host system, hopefully optimized ones ;-) */ +# include <endian.h> +# include <byteswap.h> +# define bswap_16(x) __bswap_16 (x) +# define bswap_32(x) __bswap_32 (x) +# define bswap_64(x) __bswap_64 (x) + +#elif defined(__sparc__) +# define __BIG_ENDIAN 4321 +# define __LITTLE_ENDIAN 1234 +# define __BYTE_ORDER __BIG_ENDIAN + +#endif + + +# ifndef bswap_16 +# define bswap_16(x) \ ((((x) & 0xff00) >> 8) | (((x) & 0x00ff) << 8)) +# endif -#define bswap_32(x) \ +# ifndef bswap_32 +# define bswap_32(x) \ ((((x) & 0xff000000) >> 24) \ | (((x) & 0x00ff0000) >> 8) \ | (((x) & 0x0000ff00) << 8) \ | (((x) & 0x000000ff) << 24)) -#define bswap_64(x) \ +# endif + +# ifndef bswap_64 +# define bswap_64(x) \ ((((x) & 0xff00000000000000ull) >> 56) \ | (((x) & 0x00ff000000000000ull) >> 40) \ | (((x) & 0x0000ff0000000000ull) >> 24) \ @@ -110,7 +149,7 @@ | (((x) & 0x0000000000ff0000ull) << 24) \ | (((x) & 0x000000000000ff00ull) << 40) \ | (((x) & 0x00000000000000ffull) << 56)) -#endif /* _BYTESWAP_H */ +# endif #if __BYTE_ORDER == __BIG_ENDIAN This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <car...@us...> - 2012-04-05 21:52:25
|
Revision: 10155 http://octave.svn.sourceforge.net/octave/?rev=10155&view=rev Author: carandraug Date: 2012-04-05 21:52:16 +0000 (Thu, 05 Apr 2012) Log Message: ----------- maint: updating Laurent Mazet e-mail address Modified Paths: -------------- trunk/octave-forge/AUTHORS trunk/octave-forge/admin/qhull.spec trunk/octave-forge/extra/Windows/src/grab.cc trunk/octave-forge/extra/graceplot/inst/alternatives/print.m trunk/octave-forge/main/io/inst/xmlwrite.m trunk/octave-forge/main/io/src/cell2csv.cc trunk/octave-forge/main/io/src/csv2cell.cc trunk/octave-forge/main/io/src/csvconcat.cc trunk/octave-forge/main/io/src/csvexplode.cc trunk/octave-forge/main/io/src/xmlread.cc trunk/octave-forge/main/io/src/xmltree.c trunk/octave-forge/main/io/src/xmltree.h trunk/octave-forge/main/io/src/xmltree_read.act trunk/octave-forge/main/io/src/xmltree_read.h trunk/octave-forge/main/plot/inst/dxfwrite.m trunk/octave-forge/main/signal/inst/tukeywin.m Modified: trunk/octave-forge/AUTHORS =================================================================== --- trunk/octave-forge/AUTHORS 2012-04-05 21:45:17 UTC (rev 10154) +++ trunk/octave-forge/AUTHORS 2012-04-05 21:52:16 UTC (rev 10155) @@ -87,7 +87,7 @@ Kai P. Mueller <mu...@if...> Kurt Hornik <Kur...@wu...> Lance Norskog And Sundry Contributors -Laurent Mazet <ma...@cr...> +Laurent Mazet <lau...@ma...> Leopoldo Cerbaro <red...@li...> Levente Torok / Tor...@gm... Luca Citi Modified: trunk/octave-forge/admin/qhull.spec =================================================================== --- trunk/octave-forge/admin/qhull.spec 2012-04-05 21:45:17 UTC (rev 10154) +++ trunk/octave-forge/admin/qhull.spec 2012-04-05 21:52:16 UTC (rev 10155) @@ -80,13 +80,13 @@ %_mandir/* %changelog -* Wed Jun 16 2004 Laurent Mazet <ma...@cr...> 2003.1-1mdk +* Wed Jun 16 2004 Laurent Mazet <lau...@ma...> 2003.1-1mdk - Update to qhull new version -* Thu Sep 05 2002 Laurent Mazet <ma...@cr...> 2002.1-1mdk +* Thu Sep 05 2002 Laurent Mazet <lau...@ma...> 2002.1-1mdk - Update to qhull new version -* Thu May 30 2002 Laurent Mazet <ma...@cr...> 3.1-1mdk +* Thu May 30 2002 Laurent Mazet <lau...@ma...> 3.1-1mdk - First package # end of file Modified: trunk/octave-forge/extra/Windows/src/grab.cc =================================================================== --- trunk/octave-forge/extra/Windows/src/grab.cc 2012-04-05 21:45:17 UTC (rev 10154) +++ trunk/octave-forge/extra/Windows/src/grab.cc 2012-04-05 21:52:16 UTC (rev 10155) @@ -15,7 +15,7 @@ */ /* - * Copyright (C) 2001 Laurent Mazet <ma...@cr...> + * Copyright (C) 2001 Laurent Mazet <lau...@ma...> * * Fix error handler to avoid octave core-dump. * Change to avoid the input limit. Modified: trunk/octave-forge/extra/graceplot/inst/alternatives/print.m =================================================================== --- trunk/octave-forge/extra/graceplot/inst/alternatives/print.m 2012-04-05 21:45:17 UTC (rev 10154) +++ trunk/octave-forge/extra/graceplot/inst/alternatives/print.m 2012-04-05 21:52:16 UTC (rev 10155) @@ -77,7 +77,7 @@ ## ## Author: Daniel Heiserer <Dan...@ph...> -## 2001-03-23 Laurent Mazet <ma...@cr...> +## 2001-03-23 Laurent Mazet <lau...@ma...> ## * simplified interface: guess the device from the extension ## * font support ## 2001-03-25 Paul Kienzle <pki...@us...> @@ -85,7 +85,7 @@ ## * use tmpnam to generate temporary name ## * move "set term" before "set output" as required by gnuplot ## * more options, and flexible options -## 2001-03-29 Laurent Mazet <ma...@cr...> +## 2001-03-29 Laurent Mazet <lau...@ma...> ## * add solid and dashed options ## * change PBMplus device ## * add Corel device @@ -95,7 +95,7 @@ ## * create a .ps for printing (avoid some filtering problems). ## * default printing is mono, default convert is color. ## * add font size support. -## 2001-03-30 Laurent Mazet <ma...@cr...> +## 2001-03-30 Laurent Mazet <lau...@ma...> ## * correct correl into corel ## * delete a irrelevant test ## * check for convert before choosing the ouput device Modified: trunk/octave-forge/main/io/inst/xmlwrite.m =================================================================== --- trunk/octave-forge/main/io/inst/xmlwrite.m 2012-04-05 21:45:17 UTC (rev 10154) +++ trunk/octave-forge/main/io/inst/xmlwrite.m 2012-04-05 21:52:16 UTC (rev 10155) @@ -1,4 +1,4 @@ -## Copyright (C) 2004 Laurent Mazet <ma...@cr...> +## Copyright (C) 2004 Laurent Mazet <lau...@ma...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/io/src/cell2csv.cc =================================================================== --- trunk/octave-forge/main/io/src/cell2csv.cc 2012-04-05 21:45:17 UTC (rev 10154) +++ trunk/octave-forge/main/io/src/cell2csv.cc 2012-04-05 21:52:16 UTC (rev 10155) @@ -1,4 +1,4 @@ -// Copyright (C) 2004 Laurent Mazet <ma...@cr...> +// Copyright (C) 2004 Laurent Mazet <lau...@ma...> // // This program is free software; you can redistribute it and/or modify it under // the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/io/src/csv2cell.cc =================================================================== --- trunk/octave-forge/main/io/src/csv2cell.cc 2012-04-05 21:45:17 UTC (rev 10154) +++ trunk/octave-forge/main/io/src/csv2cell.cc 2012-04-05 21:52:16 UTC (rev 10155) @@ -1,4 +1,4 @@ -// Copyright (C) 2004 Laurent Mazet <ma...@cr...> +// Copyright (C) 2004 Laurent Mazet <lau...@ma...> // // This program is free software; you can redistribute it and/or modify it under // the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/io/src/csvconcat.cc =================================================================== --- trunk/octave-forge/main/io/src/csvconcat.cc 2012-04-05 21:45:17 UTC (rev 10154) +++ trunk/octave-forge/main/io/src/csvconcat.cc 2012-04-05 21:52:16 UTC (rev 10155) @@ -1,4 +1,4 @@ -// Copyright (C) 2004 Laurent Mazet <ma...@cr...> +// Copyright (C) 2004 Laurent Mazet <lau...@ma...> // // This program is free software; you can redistribute it and/or modify it under // the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/io/src/csvexplode.cc =================================================================== --- trunk/octave-forge/main/io/src/csvexplode.cc 2012-04-05 21:45:17 UTC (rev 10154) +++ trunk/octave-forge/main/io/src/csvexplode.cc 2012-04-05 21:52:16 UTC (rev 10155) @@ -1,4 +1,4 @@ -// Copyright (C) 2004 Laurent Mazet <ma...@cr...> +// Copyright (C) 2004 Laurent Mazet <lau...@ma...> // // This program is free software; you can redistribute it and/or modify it under // the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/io/src/xmlread.cc =================================================================== --- trunk/octave-forge/main/io/src/xmlread.cc 2012-04-05 21:45:17 UTC (rev 10154) +++ trunk/octave-forge/main/io/src/xmlread.cc 2012-04-05 21:52:16 UTC (rev 10155) @@ -1,4 +1,4 @@ -// Copyright (C) 2004 Laurent Mazet <ma...@cr...> +// Copyright (C) 2004 Laurent Mazet <lau...@ma...> // // This program is free software; you can redistribute it and/or modify it under // the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/io/src/xmltree.c =================================================================== --- trunk/octave-forge/main/io/src/xmltree.c 2012-04-05 21:45:17 UTC (rev 10154) +++ trunk/octave-forge/main/io/src/xmltree.c 2012-04-05 21:52:16 UTC (rev 10155) @@ -1,4 +1,4 @@ -// Copyright (C) 2004 Laurent Mazet <ma...@cr...> +// Copyright (C) 2004 Laurent Mazet <lau...@ma...> // // This program is free software; you can redistribute it and/or modify it under // the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/io/src/xmltree.h =================================================================== --- trunk/octave-forge/main/io/src/xmltree.h 2012-04-05 21:45:17 UTC (rev 10154) +++ trunk/octave-forge/main/io/src/xmltree.h 2012-04-05 21:52:16 UTC (rev 10155) @@ -1,4 +1,4 @@ -// Copyright (C) 2004 Laurent Mazet <ma...@cr...> +// Copyright (C) 2004 Laurent Mazet <lau...@ma...> // // This program is free software; you can redistribute it and/or modify it under // the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/io/src/xmltree_read.act =================================================================== --- trunk/octave-forge/main/io/src/xmltree_read.act 2012-04-05 21:45:17 UTC (rev 10154) +++ trunk/octave-forge/main/io/src/xmltree_read.act 2012-04-05 21:52:16 UTC (rev 10155) @@ -1,6 +1,6 @@ <!-- -*- XML -*- --> <!-- - Copyright (C) 2004 Laurent Mazet <ma...@cr...> + Copyright (C) 2004 Laurent Mazet <lau...@ma...> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/io/src/xmltree_read.h =================================================================== --- trunk/octave-forge/main/io/src/xmltree_read.h 2012-04-05 21:45:17 UTC (rev 10154) +++ trunk/octave-forge/main/io/src/xmltree_read.h 2012-04-05 21:52:16 UTC (rev 10155) @@ -1,4 +1,4 @@ -// Copyright (C) 2004 Laurent Mazet <ma...@cr...> +// Copyright (C) 2004 Laurent Mazet <lau...@ma...> // // This program is free software; you can redistribute it and/or modify it under // the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/plot/inst/dxfwrite.m =================================================================== --- trunk/octave-forge/main/plot/inst/dxfwrite.m 2012-04-05 21:45:17 UTC (rev 10154) +++ trunk/octave-forge/main/plot/inst/dxfwrite.m 2012-04-05 21:52:16 UTC (rev 10155) @@ -1,5 +1,5 @@ ## Copyright (C) 2004 Patrick Labbe -## Copyright (C) 2004 Laurent Mazet <ma...@cr...> +## Copyright (C) 2004 Laurent Mazet <lau...@ma...> ## Copyright (C) 2005 Larry Doolittle <ldo...@re...> ## ## This program is free software; you can redistribute it and/or modify Modified: trunk/octave-forge/main/signal/inst/tukeywin.m =================================================================== --- trunk/octave-forge/main/signal/inst/tukeywin.m 2012-04-05 21:45:17 UTC (rev 10154) +++ trunk/octave-forge/main/signal/inst/tukeywin.m 2012-04-05 21:52:16 UTC (rev 10155) @@ -1,4 +1,4 @@ -## Copyright (C) 2007 Laurent Mazet <ma...@cr...> +## Copyright (C) 2007 Laurent Mazet <lau...@ma...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <car...@us...> - 2012-04-05 21:45:23
|
Revision: 10154 http://octave.svn.sourceforge.net/octave/?rev=10154&view=rev Author: carandraug Date: 2012-04-05 21:45:17 +0000 (Thu, 05 Apr 2012) Log Message: ----------- fmin: deprecating in favour of fminbnd Modified Paths: -------------- trunk/octave-forge/main/optim/NEWS trunk/octave-forge/main/optim/inst/fmin.m Modified: trunk/octave-forge/main/optim/NEWS =================================================================== --- trunk/octave-forge/main/optim/NEWS 2012-04-05 19:26:23 UTC (rev 10153) +++ trunk/octave-forge/main/optim/NEWS 2012-04-05 21:45:17 UTC (rev 10154) @@ -10,6 +10,13 @@ fminunc_compat optimset_compat + ** The function `fmin' has been deprecated in favour of using `fminbnd' + directly. If one really wishes to use the short version, one can + easily create an alias on an octaverc file (see `doc startup') with + the following code + + function out=fmin(varargin) out=fminbnd(varargin{:}); endfunction + ** The package Makefile has been adapted for compatibility with Octave 3.6.0. ** Bugfixes on the functions: Modified: trunk/octave-forge/main/optim/inst/fmin.m =================================================================== --- trunk/octave-forge/main/optim/inst/fmin.m 2012-04-05 19:26:23 UTC (rev 10153) +++ trunk/octave-forge/main/optim/inst/fmin.m 2012-04-05 21:45:17 UTC (rev 10154) @@ -15,6 +15,13 @@ function ret=fmin(varargin) + persistent warned = false; + if (! warned) + warned = true; + warning ("Octave:deprecated-function", + "`fmin' has been deprecated, and will be removed in the future. Use `fminbnd' directly instead."); + endif + ## alias for fminbnd ret = fminbnd(varargin{:}); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mma...@us...> - 2012-04-05 19:26:29
|
Revision: 10153 http://octave.svn.sourceforge.net/octave/?rev=10153&view=rev Author: mmarzolla Date: 2012-04-05 19:26:23 +0000 (Thu, 05 Apr 2012) Log Message: ----------- fixed typo Modified Paths: -------------- trunk/octave-forge/main/queueing/NEWS Modified: trunk/octave-forge/main/queueing/NEWS =================================================================== --- trunk/octave-forge/main/queueing/NEWS 2012-04-05 19:15:30 UTC (rev 10152) +++ trunk/octave-forge/main/queueing/NEWS 2012-04-05 19:26:23 UTC (rev 10153) @@ -2,7 +2,7 @@ ------------------------------------------------------------------------------ ** Function ctmc_exps() can now compute the expected sojourn time - until absorption for absorming CTMC + until absorption for absorbing CTMC ** Functions ctmc_exps() and ctmc_taexps() now accept a scalar as the second argument (time). This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mma...@us...> - 2012-04-05 19:15:37
|
Revision: 10152 http://octave.svn.sourceforge.net/octave/?rev=10152&view=rev Author: mmarzolla Date: 2012-04-05 19:15:30 +0000 (Thu, 05 Apr 2012) Log Message: ----------- preparing for release Modified Paths: -------------- trunk/octave-forge/main/queueing/ChangeLog Modified: trunk/octave-forge/main/queueing/ChangeLog =================================================================== --- trunk/octave-forge/main/queueing/ChangeLog 2012-04-05 19:05:00 UTC (rev 10151) +++ trunk/octave-forge/main/queueing/ChangeLog 2012-04-05 19:15:30 UTC (rev 10152) @@ -1,6 +1,6 @@ -2012-03-XX Moreno Marzolla <mar...@cs...> +2012-04-05 Moreno Marzolla <mar...@cs...> - * Version 1.X.0 released + * Version 1.1.0 released * Fixed bug in qnvisits() which made the function behave incorrectly under particular degenerate cases. * Fixed bug in ctmc_exps() (wrong initial value in call to lsode) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mma...@us...> - 2012-04-05 19:05:06
|
Revision: 10151 http://octave.svn.sourceforge.net/octave/?rev=10151&view=rev Author: mmarzolla Date: 2012-04-05 19:05:00 +0000 (Thu, 05 Apr 2012) Log Message: ----------- preparing for release Modified Paths: -------------- trunk/octave-forge/main/queueing/doc/Makefile Modified: trunk/octave-forge/main/queueing/doc/Makefile =================================================================== --- trunk/octave-forge/main/queueing/doc/Makefile 2012-04-05 18:59:46 UTC (rev 10150) +++ trunk/octave-forge/main/queueing/doc/Makefile 2012-04-05 19:05:00 UTC (rev 10151) @@ -1,6 +1,6 @@ DOC=queueing CHAPTERS=$(patsubst %.txi,%.texi,$(wildcard *.txi)) -DISTFILES=README INSTALL $(DOC).pdf $(DOC).html $(DOC).texi $(CHAPTERS) +DISTFILES=README INSTALL $(DOC).pdf $(DOC).html .PHONY: clean dist This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mma...@us...> - 2012-04-05 18:59:52
|
Revision: 10150 http://octave.svn.sourceforge.net/octave/?rev=10150&view=rev Author: mmarzolla Date: 2012-04-05 18:59:46 +0000 (Thu, 05 Apr 2012) Log Message: ----------- Preparing for release Modified Paths: -------------- trunk/octave-forge/main/queueing/DESCRIPTION trunk/octave-forge/main/queueing/DESCRIPTION.in trunk/octave-forge/main/queueing/doc/queueing.html trunk/octave-forge/main/queueing/doc/queueing.pdf Modified: trunk/octave-forge/main/queueing/DESCRIPTION =================================================================== --- trunk/octave-forge/main/queueing/DESCRIPTION 2012-04-05 18:29:54 UTC (rev 10149) +++ trunk/octave-forge/main/queueing/DESCRIPTION 2012-04-05 18:59:46 UTC (rev 10150) @@ -13,7 +13,7 @@ and continuous-time Markov chains can be computed (state occupancy probabilities, mean time to absorption, time-averaged sojourn times). Categories: Misc -Depends: octave (>= 3.0.0) +Depends: octave (>= 3.2.3) Autoload: yes License: GPL version 3 or later Url: http://www.moreno.marzolla.name/software/queueing/ Modified: trunk/octave-forge/main/queueing/DESCRIPTION.in =================================================================== --- trunk/octave-forge/main/queueing/DESCRIPTION.in 2012-04-05 18:29:54 UTC (rev 10149) +++ trunk/octave-forge/main/queueing/DESCRIPTION.in 2012-04-05 18:59:46 UTC (rev 10150) @@ -13,7 +13,7 @@ and continuous-time Markov chains can be computed (state occupancy probabilities, mean time to absorption, time-averaged sojourn times). Categories: Misc -Depends: octave (>= 3.0.0) +Depends: octave (>= 3.2.3) Autoload: yes License: GPL version 3 or later Url: http://www.moreno.marzolla.name/software/queueing/ Modified: trunk/octave-forge/main/queueing/doc/queueing.html =================================================================== --- trunk/octave-forge/main/queueing/doc/queueing.html 2012-04-05 18:29:54 UTC (rev 10149) +++ trunk/octave-forge/main/queueing/doc/queueing.html 2012-04-05 18:59:46 UTC (rev 10150) @@ -1424,11 +1424,14 @@ — Function File: <var>p</var> = <b>ctmc</b> (<var>Q, t. p0</var>)<var><a name="index-ctmc-31"></a></var><br> <blockquote> <p><a name="index-Markov-chain_002c-continuous-time-32"></a><a name="index-Continuous-time-Markov-chain-33"></a><a name="index-Markov-chain_002c-state-occupancy-probabilities-34"></a><a name="index-Stationary-probabilities-35"></a> -With a single argument, compute the stationary state occupancy +Compute stationary or transient state occupancy probabilities +for a continuous-time Markov chain. + + <p>With a single argument, compute the stationary state occupancy probability vector <var>p</var>(1), <small class="dots">...</small>, <var>p</var>(N) for a -Continuous-Time Markov Chain with infinitesimal generator matrix -<var>Q</var> of size N \times N. With three arguments, compute the -state occupancy probabilities <var>p</var>(1), <small class="dots">...</small>, <var>p</var>(N) at time +continuous-time Markov chain with N \times N infinitesimal +generator matrix <var>Q</var>. With three arguments, compute the state +occupancy probabilities <var>p</var>(1), <small class="dots">...</small>, <var>p</var>(N) at time <var>t</var>, given initial state occupancy probabilities <var>p0</var> at time 0. @@ -1682,6 +1685,7 @@ for i=1:length(t) M(i,:) = ctmc_taexps(Q,t(i),p); endfor + clf; plot(t, M(:,1), ";State 1;", "linewidth", 2, \ t, M(:,2), ";State 2;", "linewidth", 2, \ t, M(:,3), ";State 3;", "linewidth", 2, \ Modified: trunk/octave-forge/main/queueing/doc/queueing.pdf =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mma...@us...> - 2012-04-05 18:30:00
|
Revision: 10149 http://octave.svn.sourceforge.net/octave/?rev=10149&view=rev Author: mmarzolla Date: 2012-04-05 18:29:54 +0000 (Thu, 05 Apr 2012) Log Message: ----------- Preparing for release Modified Paths: -------------- trunk/octave-forge/main/queueing/DESCRIPTION trunk/octave-forge/main/queueing/Makefile Modified: trunk/octave-forge/main/queueing/DESCRIPTION =================================================================== --- trunk/octave-forge/main/queueing/DESCRIPTION 2012-04-05 15:08:14 UTC (rev 10148) +++ trunk/octave-forge/main/queueing/DESCRIPTION 2012-04-05 18:29:54 UTC (rev 10149) @@ -1,6 +1,6 @@ Name: queueing Version: 1.1.0 -Date: 2012-03-26 +Date: 2012-04-05 Author: Moreno Marzolla <mar...@cs...> Maintainer: Moreno Marzolla <mar...@cs...> Title: Queueing networks and Markov chains analysis package for GNU Octave Modified: trunk/octave-forge/main/queueing/Makefile =================================================================== --- trunk/octave-forge/main/queueing/Makefile 2012-04-05 15:08:14 UTC (rev 10148) +++ trunk/octave-forge/main/queueing/Makefile 2012-04-05 18:29:54 UTC (rev 10149) @@ -1,5 +1,5 @@ VERSIONNUM=1.1.0 -VERSIONDATE="2012-03-26" +VERSIONDATE="2012-04-05" PROGNAME=queueing DISTNAME=$(PROGNAME)-$(VERSIONNUM) @@ -52,4 +52,7 @@ ln $(DISTFILES) $(PROGNAME)/ tar cfz $(DISTNAME).tar.gz $(PROGNAME)/ uuencode $(DISTNAME).tar.gz < $(DISTNAME).tar.gz > $(DISTNAME).tar.gz.uue + ~/src/octave-3.6.1/run-octave -q --eval "pkg load generate_html; pkg install -local $(DISTNAME).tar.gz; generate_package_html ('queueing', 'queueing-html', 'octave-forge'); pkg uninstall $(PROGNAME)" + tar cfz $(PROGNAME)-html.tar.gz $(PROGNAME)-html + uuencode $(PROGNAME)-html.tar.gz < $(PROGNAME)-html.tar.gz > $(PROGNAME)-html.tar.gz.uue This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |