Automatically running AnyLogic sliders so that different combinations are chosen - java

I am creating a system dynamics model in AnyLogic to be representative of a water mass balance for a city. One of the important aspects of this is to understand how different conservation measures affect supply-demand relationships. There are 3 different conservation measures and there are five different levels of adoption for each: 0%, 25%, 50%, 75%, and 100%. This makes a total of 125 combinations. I was thinking of linking the 3 parameters to sliders in order to choose the level of adoption, but going through each combination manually appears to be unnecessarily grueling. Does anyone know if it is possible that during run time the model is able to choose the different combinations on its own? If so, how can this be accomplished?

Parameter variation experiment should be ideal for what you need: https://anylogic.help/anylogic/experiments/parameter-variation.html#parameter-variation-experiment
Create a parameter in main for each measure you want to vary. Then, in the experiment's properties, you can specify the range and step to define the different values you want the parameters to take.
Then, when you run it, all possible combinations will be run.

Related

Anylogic Experiment stuck using varied in range parameter but works fine in freeform parameters

I am trying to run an experiment with two varied parameters.
The experiment will run well if I choose to vary the parameter in freeform, e.g. surgeLevel: uniform(2,5), surgeDuration: uniform(20,60). However, if I use varied in range parameter variation, e.g. surge Level: min(2),max(5),step(0.1), surgeDuration: min(20),max(60),step(1), the experiment will not even be able to finish 1 round of simulation. Does anyone know how to make the experiment run smoothly with varied in range parameters?
I am trying to generate four datasets using my root model outputs for the experiment.
experiment java code
a screenshot of my freeform parameter
a screenshot of my varied in range parameter
The experiment runs very well if I use the freeform option, but will be extremely slow if I choose the varied in range option for reasons I cannot figure out. I will prefer to run in the varied in range format since it will allow me compare different condition under fixed seed.

JSprit: How to maximize the number of available vehicles to reduce time

I am trying to solve a vrp which consists of pickups and deliveries. I have 73 vehicles and I want to use all the available vehicles to reduce overall time of process. I observed that the result is 24 vehicles never been used while other got multiple jobs. The issue is some of assigned vehicle actually come back to the next job at location that is nearer to unassigned vehicle while further to it last location. So looks like the engine still trying to use least vehicle. How could I change the parameters like:
“FixedCost”,
“DistanceCost”,
“TravelTimeCost”,
“WaitingTimeCost”
to maximize the number of vehicles used? I have tried to change some ways (put some values to FixedCost or make it equal to zero), add values to DistanceCost, TravelTimeCost, but still not working. I still seeing vehicles taking multiple jobs while many vehicle nearer to some of that jobs will never been used on it's available time.
I believe maximizing number of vehicles is not your genuine demand but maybe you want to minimize the longest route in terms of time.
So that is the same problem as AbeProblemMinMax.
However, this is implemented in jsprit v1.3 which is a quite old version. See here for a re-implementation in v1.7.3.

How do I select statistically significant points from the set of points?

Server is receiving a certain rate(12 per minute) of monitoring data for some process via external source(web services, etc). Now process may run for a minute(or less than) or for an hour or a day. At the end of the process, I may be having 5 or 720 or 17280 data points. This data is being gathered for more than 40 parameters and stored into the database for future display via web. Imagine more than 1000 processes are running and the amount of data generated. I have to stick to RDBMS(MySQL specifically). Therefore, I want to process the data and decrease the amount the data by selecting only statistically significant points before storing the data to the database. The ultimate objective is to plot these data points over a graph where Y-axis will be time and X-axis will be represented by some parameter(part of data point).
I do not want to miss any significant fluctuation or nature but at the same time I cannot manage to plot all of the data points(in case the number is huge > 100).
Please note that I am aware of basic statistical terms like mean, standard deviation, etc.
If this is a constant process, you could plot the mean (should be a flat line) and any points that exceeded a certain threshold. Three standard deviations might be a good threshold to start with, then see whether it gives you the information you need.
If it's not a constant process, you need to figure out how it should be varying with time and do a similar thing: plot the points that substantially vary from your expectation at that point in time.
That should give you a pretty clean graph while still communicating the important information.
If you expect your process to be noisy, then doing some smoothing through a spline can help you reduce noise and compress your data (since to draw a spline you need only a few points, where "few" is arbitrary picked by you, depending on how much detail you want to get rid of).
However, if your process is not noisy, then outliers are very important, since they may represent errors or exceptional conditions. In this case, you are better off getting rid of the points that are close to the average (say less than 1 standard deviation), and keeping those that are far.
A little note: the term "statistically significant", describes a high enough level of certainty to discard the null hypothesis. I don't think it applies to your problem.

Calculating the average of multiple time-series with random sampling interval

I've tried searching for answers, but couldn't find one that exactly match my problem.
I'm doing a stochastic simulator of biological systems, where the outcome is a "Scatter-plot" time series with concentration levels at some random points in time. Now i would like to be able to take the average time-series of multiple simulation runs and are in doubt how to proceed as up to 500 simulation runs, each with several thousands measurements, can be expected.
Naturally, i could "bucket" the intervals probably losing some precision or try to interpolate the missing measurements. But what is the preferred method in my case?
This has to be implemented in Java and i would prefer a citation to a paper that explains the method.
Thanks!
If you want a book, Simulation Modeling & Analysis by Law or Discrete Event System Simulation by Banks, Carson, Nelson & Nicol both devote several chapters to time series output analysis. For "breaking news", there are several analysis tracks that have papers on recent developments in the field in the Paper Archives section at WinterSim.org. For a flow-chart of how to decide what type of analysis may be appropriate, see Figure 4 on p.60 of this tutorial paper from WinterSim 2007.

Is there any metric for measuring the design effectiveness of a java web GUI?

For a specific GUI of my java web application, some members of my team have designed different web GUIs. Each of the designed GUIs has its own pros and cons. Is there a metric to evaluate a web GUI and score each designed one a “goodness mark”? I want to pick up that GUI that has the highest score. Or any tools is available for this evaluation?
Not really, because "goodness" means different things to different people. On a web site you might measure that as how many people make it to the checkout though different interface variations, or how quickly they find a page they're looking for or how long they stay on the site etc.
You could measure some things against known standards, accessibility for example and there are some very general design principles (a grid layout is generally better than random jumble for example, consistency in placement and ordering of buttons is another).
If your application has a sufficiently high number of users to make a sensible sample size then a typical approach is A/B testing where you serve different versions of the interface to different people and see what happens. However, you still need to decide on a goal to measure against (number of sales, time spent on site etc) to compare the two versions.
If you have a small user base or this is an internal application then direct user feedback might be the better option - i.e. just go and ask them which they find easier/better to use.
You can try the "usefulness" vs "easy to use" metric.
Get some of your users sit down to rate UI with -10 to 10 on both variable, and plot them on the graph with different color, obviously more dots on top left is the better one.
I use this approach a lot as it can be done in like 10 minutes, and you can switch the "variable" depend on the project scope.
just my 2 cents
Test it on real customers. The one they feel most content with is the one they are most likely to continue paying you for. That's the best GUI.
This is really a personal call, depending on the intended purpose of the GUI, and its future users. If it's intended for sight-impaired people, I would use large and clear fonts and buttons, and possibly sound. It really depends on what you need.
You should make your own metric, and sort (or even give weights to) the options according to the desired preferences.
For accessibility, there are automatic tools, e.g. HTML Validator for firefox.

Categories

Resources