From ab84a100325d5bd09b5bc0c2364d376a880aa22c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=A2=E6=A1=82=E7=BA=B2?= Date: Wed, 7 Dec 2016 10:23:50 +0800 Subject: [PATCH 1/4] Update README.md --- README.md | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index bf4e303..7b7e5c9 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,20 @@ -# Microsoft.VisualBasic.Parallel -> Further reading: [Parallel library of GCModeller parallel computing](http://www.codeproject.com/Articles/1076209/Easy-Distribution-Computing-in-VisualBasic) +# sciBASIC# ComputingServices Parallel library +> Further reading on codeproject article: [Easy Distribution Computing in VisualBasic](http://www.codeproject.com/Articles/1076209/Easy-Distribution-Computing-in-VisualBasic) ##### Runtime -Require of VisualBasic server CLI runtime ++ Require of sciBASIC# runtime -> PM> Install-Package VB_AppFramework +```bash +# https://github.com/xieguigang/sciBASIC# +PM> Install-Package sciBASIC -Pre +``` -Or reference to source code project: ++ And also required of SMRUCC.WebCloud web runtime for RQL module -> https://github.com/xieguigang/VisualBasic_AppFramework +```bash +# https://github.com/SMRUCC/SMRUCC.WebCloud +``` ##### Steps of the distributed computing in this library @@ -24,9 +29,10 @@ Through these steps, your function on the local client should be running on the **Important NOTE:** + Please notices that the function which is running on the remote machine should be a statics method and donot reference to the module variable as the module variable is probably not initialized on the remote machine, just using the variable limits in your function inner local variable. + Example: -```vb.net +```vbnet Module Test1 Dim m_var As Integer @@ -53,7 +59,7 @@ End Module ### Usage of the remote linq script to query remote resource -```vb.net +```vbnet Imports var source = http://linq.gcmodeller.org/kegg/ssdb/nucl/xcb @@ -69,9 +75,10 @@ Unlike the SQL langauge, the RQL language is a object-oriented language for quer #####Using RQL language rest API First the repository server should implements the RQL services on the server program, the RQL services which is available in the RQL project; Then your client user that can query your repository server directly by using linq script in two ways, examples as: + ###### 1. query repository throw linq script -```vb.net +```vbnet Imports GCModeller.RQL var source = "http://linq.gcmodeller.org/kegg/ssdb" From f930ccadc577fe4cf6d394a70c11a6a4922794e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=A2=E6=A1=82=E7=BA=B2?= Date: Wed, 7 Dec 2016 10:35:36 +0800 Subject: [PATCH 2/4] Update README.md --- GAF_distribute_computing/README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/GAF_distribute_computing/README.md b/GAF_distribute_computing/README.md index 492916f..f00e1fc 100644 --- a/GAF_distribute_computing/README.md +++ b/GAF_distribute_computing/README.md @@ -1,2 +1,9 @@ ## Distribute Computing Demo: Genetics Algorithm +### The speed limitation step in GA estimates + +One of the speed limitation step in GA eastimates is the fitness sorts for selects the best population that can evolved. For calculate the fitness of a parameter set, ODEs will be computed and the Euclidean distance will be calculated between the estimates function and observation data. This calculation operation will takes a long time to run if the data resolution is very high and population is very large. + +For a GA estimation that running on a single machine, the only way to boost this operation is using parallel linq, but a single machine is too power limited, so that a server cluster will required for solving this large scale data analysis problem. For solving a system parameter estimates problem using GA, in a server cluster, then we needs distribute computing. + +For running GA on a single machine, makes it run on a server cluster, we just needs devide its population into sevral parts, and then push the fitness calculation task onto each single machine in our server cluster, then we can makes this GA analysis running in distribute method. From d8e265979ad4387175bbb3628c0cef8bfca36cea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=A2=E6=A1=82=E7=BA=B2?= Date: Wed, 7 Dec 2016 11:41:54 +0800 Subject: [PATCH 3/4] Add files via upload --- .../Mutation-and-fitness.png | Bin 0 -> 57746 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 GAF_distribute_computing/Mutation-and-fitness.png diff --git a/GAF_distribute_computing/Mutation-and-fitness.png b/GAF_distribute_computing/Mutation-and-fitness.png new file mode 100644 index 0000000000000000000000000000000000000000..30fbb560d49dc9e360556acd9b2aba13ce9eb7e2 GIT binary patch literal 57746 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 Date: Wed, 7 Dec 2016 11:43:12 +0800 Subject: [PATCH 4/4] Update README.md --- GAF_distribute_computing/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/GAF_distribute_computing/README.md b/GAF_distribute_computing/README.md index f00e1fc..c05a9d7 100644 --- a/GAF_distribute_computing/README.md +++ b/GAF_distribute_computing/README.md @@ -7,3 +7,6 @@ One of the speed limitation step in GA eastimates is the fitness sorts for selec For a GA estimation that running on a single machine, the only way to boost this operation is using parallel linq, but a single machine is too power limited, so that a server cluster will required for solving this large scale data analysis problem. For solving a system parameter estimates problem using GA, in a server cluster, then we needs distribute computing. For running GA on a single machine, makes it run on a server cluster, we just needs devide its population into sevral parts, and then push the fitness calculation task onto each single machine in our server cluster, then we can makes this GA analysis running in distribute method. + +![](./Mutation-and-fitness.png) +> A basic calculation in GA