Simulation en java
Je suis novice dans le monde de la simulation, et qui veulent apprendre comment les programmeurs de développer de véritables projets de simulation en java. Je voudrais utiliser eclipse.
Quelqu'un pourrait-il point à d'autres choses que j'ai besoin de savoir (par exemple, d'autres packages, etc logiciel. et de leurs fins)?
Je crains que la question peut sembler un peu vague comme il n'est pas clair que le type de projet que je suis en train de parler. Mais étant un novice, laissez-moi vous dire que c'est pour commencer comment code un projet de simulation.
- Ce genre de simulation?
Vous devez vous connecter pour publier un commentaire.
Si vous êtes à la construction d'une Modèle de Monte-Carlo pour un la simulation d'événements discrets ou modèle de simulation pour la tarification de produits dérivés vous devriez trouver qu'il y a un corps de cadre code déjà là. Si vous faites une simulation numérique comme un modèle éléments finis vous serez en basant votre simulation sur un la matrice calcul de la bibliothèque. D'autres types de simulation existent, mais ce sont les deux plus susceptibles de cas.
Je n'ai jamais écrit un modèle par éléments finis et savez rien à propos de ces derniers, bien que j'aie eu l'occasion de le port de l'un à l' DEC Visual FORTRAN à un moment donné. Bien que le programme (SAFIR, si quelqu'un se soucie) a été commenté en français, le portage de l'exercice consistait à modifier deux fonctions de date pour un total de 6 lignes de code FORTRAN et écrire un fichier makefile.
Monte-Carlo modèles se composent de mesure de base de la population pour obtenir les distributions d'une ou plusieurs variables d'intérêt. Ensuite, vous prenez un Générateur de nombres Pseudo Aléatoires avec une bonne statistiques et géométriques propriétés (la Mersenne Twister algorithme est largement utilisé pour cela) et d'écrire une la fonction pour convertir la sortie de ce à un variable aléatoire avec la distribution appropriée. Vous serez probablement en mesure de trouver bibliothèque fonctions que faire si vos variables ont vraiment une distribution inhabituelle.
Alors vous de construire ou d'obtenir un cadre de simulation et d'écrire une routine qui prend les variables aléatoires et fait ce calcul que vous voulez faire pour le modèle. Vous l'exécutez, de stocker les résultats de chaque simulation, jusqu'à ce que l'erreur est dans certains souhaitée, le niveau de tolérance. Après cela, vous devez calculer les statistiques (moyennes, les distributions etc.) de toutes les pistes du modèle de simulation.
Il y a beaucoup de ressources sur le web, et de nombreux livres sur la simulation de la modélisation, en particulier dans le domaine de la valorisation des produits dérivés. Vous devez chasser autour et voir ce que vous pouvez trouver.
Comme une part, le
au hasard
module sur Python a des fonctions de conversion pour quelques distributions. Si vous en voulez un, vous pouvez obtenir ce port et de la fonction de conversion approprié pour java. Vous pouvez utiliser la sortie de python un avec la même série de nombres aléatoires pour tester l'exactitude du code java.Simulation à événements discrets est une bonne option pour les problèmes qui peuvent être modélisés comme des différents événements qui ont lieu à des moments précis. Les principales activités sont:
Par exemple, vous pouvez simuler l'activité dans un garage comme les entrées et les départs de voitures et la perte de clients qui ne peuvent pas entrer parce que le garage est plein. Cela peut être fait avec deux classes de modèle de Voiture et le Garage, et trois catégories d'infrastructures, un Événement de classe (décrit ci-dessous), un Calendrier pour gérer les événements, et un Moniteur à accumuler des données.
Voici un bref aperçu de la façon dont cela pourrait fonctionner.
Événement
L'Événement a un moment, et représente l'appel d'une méthode spécifique sur un objet d'une classe spécifique.
Annexe
L'obligent à une file d'attente d'Événements, commandé par heure de l'Événement. L'Horaire des lecteurs de l'ensemble de la simulation avec une simple boucle. Tant qu'il y a des Événements (ou jusqu'à l'Événement qui marque la fin de la simulation, course):
Voiture
De la classe de Voiture est titulaire d'inter-arrivée et la durée de séjour des statistiques.
Quand une Voiture arrive, c':
enregistre son arrivée avec le Moniteur,
consulte l'horloge mondiale, détermine combien de temps avant la prochaine Voiture devrait arriver, et les messages que l'arrivée d'un Événement sur le Calendrier.
demande au Garage si il est complet:
si complet, la Voiture enregistre son départ comme un client perdu avec le Moniteur.
si pas plein, la Voiture:
enregistre son entrée avec le Moniteur,
dit le Garage, il a signé (de sorte que le Garage peut diminuer sa capacité disponible),
détermine combien de temps il va rester, et les postes de son départ de l'Événement avec le Calendrier.
Quand une Voiture s'écarte, c':
dit le Garage (donc le Garage peut augmenter la capacité disponible), et
journaux de son départ avec le Moniteur.
Garage
Le Garage assure le suivi des Voitures qui sont actuellement à l'intérieur, et il connaît sa capacité disponible.
Moniteur
Le Moniteur conserve la trace des statistiques qui vous intéressent: nombre de clients (avec l'arrivée des Voitures), le nombre de clients perdus (qui est arrivé lorsque le lot était plein), la durée moyenne de séjour, le chiffre d'affaires (basé sur les tarifs de stationnement), etc.
L'exécution d'une simulation
Lancer la simulation en mettant les deux Événements dans le calendrier:
l'arrivée de la première Voiture (modélisé par l'instanciation d'un objet Voiture et en appelant son "arrivée" de l'événement) et
la fin de la simulation.
Répéter la simulation de base de la boucle jusqu'à la fin de la simulation de l'événement est survenu. À ce moment-là, demander au Garage de faire rapport sur ses occupants actuels, et de demander au Moniteur rapport à l'ensemble des statistiques pour la session.
La réponse courte est qu'il dépend.
À moins que vous pouvez faire de la question plus spécifique, il est impossible de donner une réponse.
Que voulez-vous simuler?
Par exemple, si vous voulez simuler l'ajout de deux numéros, vous pouvez le faire en utilisant quelque chose comme:
Si vous voulez simuler le rebond d'une balle, vous pouvez le faire avec un peu d'équations mathématiques et les bibliothèques graphiques.
Si vous souhaitez simuler un navigateur web, vous pouvez le faire aussi.
Donc la réponse exacte dépend de ce que la simulation que vous voulez faire.
Venir avec un problème de première.
Il n'y a pas de telles choses comme un générique de "simulation". Il y a beaucoup de techniques là-bas.
Si vous êtes un gamer qui veut avoir un pseudo-physique, peut-être quelque chose comme cette serait ce que vous aviez à l'esprit.
Regarder Repas Symphonie: http://repast.sourceforge.net/repast_simphony.html
"Repast Simphony 2.0 Beta, publié sur 12/3/2010, est une solution étroitement intégrée, richement interactive, de la croix-plate-forme Java basée sur la modélisation du système qui s'exécute sous Microsoft Windows, Apple Mac OS X, et Linux. Il soutient le développement extrêmement flexible, modèles de l'interaction des agents pour une utilisation sur les postes de travail et les petites grappes de calcul.
Repast Simphony modèles peuvent être développés dans plusieurs différentes formes, y compris la ReLogo
dialecte de Logo, de point-et-cliquez sur les diagrammes de flux, Groovy, ou Java, qui peuvent être entrelacés de façon fluide NetLogo
modèles peuvent également être importés.
Repast Simphony a été utilisée avec succès dans de nombreux domaines d'application, y compris sciences sociales, les produits de consommation, des chaînes d'approvisionnement, l'avenir possible de l'hydrogène infrastructures
et ancien piétonne traffico nom de quelques-uns."
C'est une vieille question, mais pour la Simulation en Java, j'ai juste installé et testé par JavaSim
Mark Little, de l'Université de Newcastle upon Tyne. Aussi loin que je peux dire, ça fonctionne très bien si vous avez un modèle que vous pouvez convertir en une simulation d'événements discrets. Voir la Marque du site http://markclittle.blogspot.com.au/2008/03/csimjavasim.html. J'ai aussi tenté d'utiliser Desmo-J, qui est très vaste et dispose d'un 2-D en mode graphique, mais ne pouvait pas obtenir ce que ça va en vertu de JDK 1.6 sur un Mac.