Hi,

I'm working on an android application for the analysis of measurements
(e.g, blood pressure) using a Bayesian network model (PEModelOR is the
class in my android application), which is embedded in a smart phone.
Since the measurements are to be taken at sequential times, the model
contains a number of variables referring to different time controls.
With the initial version with 2 controls the model run without a
problem but when I extended the model to 4 controls it crashed
producing the following error:

10-12 16:50:15.291: WARN/dalvikvm(4848): VFY: arbitrarily rejecting
large method (regs=134 count=17618)
10-12 16:50:15.291: WARN/dalvikvm(4848): VFY:  rejected Lcom/example/
pregmonit/PEModelOR;.<init> ()V
10-12 16:50:15.291: WARN/dalvikvm(4848): Verifier rejected class Lcom/
example/pregmonit/PEModelOR;
10-12 16:50:15.311: DEBUG/AndroidRuntime(4848): Shutting down VM
10-12 16:50:15.311: WARN/dalvikvm(4848): threadid=1: thread exiting
with uncaught exception (group=0x40027e08)
10-12 16:50:15.341: ERROR/AndroidRuntime(4848): FATAL EXCEPTION: main
10-12 16:50:15.341: ERROR/AndroidRuntime(4848): java.lang.VerifyError:
com.example.pregmonit.PEModelOR
10-12 16:50:15.341: ERROR/AndroidRuntime(4848):     at
com.example.pregmonit.EBayes.<init>(EBayes.java:20)
10-12 16:50:15.341: ERROR/AndroidRuntime(4848):     at
com.example.pregmonit.EBayes.android_main(EBayes.java:78)
10-12 16:50:15.341: ERROR/AndroidRuntime(4848):     at
com.example.pregmonit.Status.onCreate(Status.java:54)

I saw that in a recent discussion
http://groups.google.com/group/android-developers/browse_thread/thread/2126a73ba0cf7ade
Dirk has encountered the same problem but unfortunately I could not
see any solution to that.
The extended PEModelOR method runs without problems in Java but it
fails in the android application due to the dalvikvm verifier as far
as I understood. The PEModelOR method is a description of a Bayesian
Network in java and it simply contains definition of 62 variables and
62 probability distribution tables (in total 700 lines and the java
file is 41 KB); below is a sample of the code (note that BayesNet is a
class loaded via external jar):

import BayesianNetworks.*;
public class PEModelOR extends BayesNet {
        public PEModelOR() {
        name = "PEModelOR";
......
final DiscreteVariable DB =
new DiscreteVariable ("DB",
DiscreteVariable.CHANCE,
new String[] { "yes","no" });
.......
DiscreteFunction p62=
new DiscreteFunction(
new DiscreteVariable[] {DB},
new DiscreteVariable[] {FHDiab},
new double[] {0.0052, 0.2, 0.9948, 0.8 });
.......

Does the size/definition of PEModelOR cause the problem? I'm not sure
how I can split it as it needs to be loaded at once for creating the
network and running the model with available measurements. The thing
is that this is even not the final version of the model, where the
goal is to have 11 time controls, ending up with 112 variables and
probability tables, and 1245 lines.

Is there a way out or alternative of implementing PEModelOR so that it
does not fail at verification?
I will highly appreciate any help and suggestions on solving this
problem. Thanks a lot in advance.

Cheers, MarVel

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to