Erkennungsalgorithmus zur Erzeugung von Quallen

Einführung

Als ich letztes Jahr im Meer schnorchelte, hatte der Ingenieur, den ich mitnahm, große Angst vor Quallen. Gelegentlich kamen giftige Quallen heraus, und als ich vor mir vorbeikam, hatte ich Angst.

Für mich, der das Meer liebt, fühlt sich das wie eine schreckliche Situation an. Ich dachte an einen Prozess, der mir sagt, wann Quallen wahrscheinlich auftreten werden.

Organisieren Sie zunächst persönlich die Natur der Quallen (siehe Wiki).

Die Natur der Quallen

Zuerst habe ich nachgesehen

・ Wenn Sie keinen Wasserstrom erzeugen, sinkt dieser allmählich auf den Grund des Wassers. → Schwächt sich allmählich ab und führt zum Tod ・ Wird häufig von Pinguinen gejagt ・ Die Wirkung von Quallengift auf den menschlichen Körper variiert stark je nach Art der Quallen. ・ Katsuonoeboshi, Habu-Quallen und australische Umbachi-Quallen sind gefährlich ・ Wenn Sie in Japan nach Obon am Strand schwimmen gehen, werden Sie von einer Qualle gebissen. → Zeitpunkt, zu dem Quallen erwachsen werden ・ Die Wassertemperatur bei der Zucht von Quallen beträgt ca. 25 ℃. → Stirb bei 30 Grad ・ Da die Wassertemperatur bis etwa Oktober hoch ist, treten wahrscheinlich Quallen auf. ・ Es ist schwierig, bei starkem Wind (starker Wind, Taifun usw.) aufzutreten. ・ Es ist schwierig, an Orten mit starker Flut aufzutreten. ・ Aktivitätszeitraum ist von Mitte August bis Oktober → Wenn die Meerestemperatur hoch ist ・ Wenn die Wassertemperatur niedrig ist, ist es unwahrscheinlich, dass Quallen auftreten. ・ Selbst wenn die Meerwassertemperatur am höchsten ist, sind Quallen bis etwa 7 Uhr morgens vorhanden Es hat nicht die Temperatur erreicht, bei der es leicht zu arbeiten ist. ・ Wenn ich das Schraubengeräusch des Schiffes höre, gibt es viele hohe Geräusche. Es wird angenommen, dass es die Bewegung von Quallen stoppt ・ Wenn 95% oder mehr des Körpers einer Qualle Wasser → Süßwasser enthält Sinken Sie auf den Grund des Meeres

Ich habe versucht, die Eigenschaften quantitativ zu sortieren

・ Quallen sind anfällig für hohe Temperaturen → Die Erscheinungsrate ist niedrig, wenn die Wassertemperatur 27 ° C bis 30 ° C beträgt.

· Regenprozent → Je näher es an 100% liegt, desto unwahrscheinlicher ist es, dass es erscheint → Hypothese, dass es unwahrscheinlich ist, dass es während der Regenzeit auftritt

・ Die Erscheinungsrate ist von 8/11 bis 10/1 hoch → Zeitpunkt, zu dem Quallen erwachsen werden

・ Je langsamer die Meeresströmung ist, desto geringer ist das Auftreten von Quallen → 1 Knoten ≒ 0,5 m / s → 1 Seeraum (1852 m) pro Stunde → Wenn kein Wasser fließt, sinkt es auf den Boden

・ Wenn die Salzkonzentration des Meerwassers niedrig ist, sinkt es auf den Meeresboden. → Weil die Salzkonzentration von 34-35ppt für das Wachstum geeignet ist Nicht mehr als 36ppt

Auf Implementierungsbasis organisieren

Bedingungen

・ Temperatur: 27 ≤ aktuelle Temperatur ≤ 30

・ Niederschlagswahrscheinlichkeit: 50% ≤ aktuelle Temperatur ≤ 100%

・ Gefahrenzeitraum: 8/11 ≤ aktuelles Datum ≤ 10/1

・ Meeresströmung: 1,5 ≧ Aktuelle Meeresströmung

・ Salzkonzentration: 36ppt ≤ aktuelle Konzentration

・ Die Qualität jedes Urteils ist ein boolesches Urteil

Beurteilungsmethode

Obwohl es sich um einen Originalstandard handelt, wird das Bewertungsergebnis unten ausgegeben

Bedingungen ① Lass uns mit einem klaren Gefühl ans Meer gehen, ohne uns um Quallen zu sorgen!  (true,false,false,true,true) ・ Temperatur: 27 ≤ aktuelle Temperatur ≤ 30 ・ Niederschlagswahrscheinlichkeit: 0% -40% ・ Gefahrenzeitraum: 8/11 ≤ aktuelles Datum ≤ außer 10/1 ・ Meeresströmung: 1,5 ≧ Aktuelle Meeresströmung ・ Salzkonzentration: 36ppt ≤ aktuelle Konzentration

② Es wird regnen, aber es erscheinen keine Quallen! (true,true,false,true,true) ・ Temperatur: 27 ≤ aktuelle Temperatur ≤ 30 ・ Niederschlagswahrscheinlichkeit: 50% -100% ・ Gefahrenzeitraum: 8/11 ≤ aktuelles Datum ≤ außer 10/1 ・ Meeresströmung: 1,5 ≧ Aktuelle Meeresströmung ・ Salzkonzentration: 36ppt ≤ aktuelle Konzentration

③ Fast alle Quallen kommen heraus. Lass uns zu Hause herumspielen. (false,false,true,false,false) ・ 27 ≧ Aktuelle Temperatur ・ Niederschlagswahrscheinlichkeit: 0-40% ・ Gefahrenzeitraum: 8/11 ≤ aktuelles Datum ≤ 10/1 ・ Meeresströmung: 1,5 <Aktuelle Meeresströmung ・ Salzkonzentration <36ppt

③ Die Grundlagen werden herauskommen! Es wird jedoch möglicherweise nicht angezeigt.

★ Bedingung 1 (wahr, falsch, wahr, wahr, wahr) ・ Temperatur: 27 ≤ aktuelle Temperatur ≤ 30 ・ Niederschlagswahrscheinlichkeit: 0% -40% ・ Meeresströmung: 1,5 ≧ Aktuelle Meeresströmung ・ Salzkonzentration: 36ppt ≤ aktuelle Konzentration     or ★ Bedingung 2 (wahr, falsch, wahr, wahr, wahr) ・ Temperatur: 27 ≧ Aktuelle Temperatur ・ Niederschlagswahrscheinlichkeit: 0% -40% ・ Meeresströmung: 1,5 ≧ Aktuelle Meeresströmung ・ Salzkonzentration: 36ppt ≤ aktuelle Konzentration     or ★ Bedingung 3 (wahr, falsch, wahr, wahr, wahr) ・ Temperatur: 27 ≤ aktuelle Temperatur ≤ 30 ・ Niederschlagswahrscheinlichkeit: 0% -40% ・ Meeresströmung: Aktuelle Meeresströmung ≧ 1.5 ・ Salzkonzentration: 36ppt ≤ aktuelle Konzentration    or ★ Bedingung 4 (wahr, falsch, wahr, wahr, wahr) ・ Temperatur: 27 ≤ aktuelle Temperatur ≤ 30 ・ Niederschlagswahrscheinlichkeit: 0% -40% ・ Meeresströmung: 1,5 ≧ Aktuelle Meeresströmung ・ Salzkonzentration: Aktuelle Konzentration <36ppt

Implementiertes Programm (endlich ...)

JellyFishAlert.java


import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.Calendar;
import java.util.function.Function;

public class JellyFishAlert {

	public static void main(String[] args) {
		
		//Kommandozeilenargumente(Temperatur,regnerischer Prozentsatz,Seestrom Urteil,Beurteilung der Salzkonzentration)
		if(args.length == 4) {
			System.out.println("Der für die Berechnung erforderliche Wert ist OK!");
		}else {
			System.out.println("Geben Sie das Befehlszeilenargument korrekt an");
			System.exit(0);
		}

		//Urteilskarte erstellen(Die Notation von a bis g ist ja. .. )
		boolean a[] = {true,false,false,true,true};
		boolean b[] = {true,true,false,true,true};
		boolean c[] = {false,false,true,false,false};
		boolean d[] = {true,false,true,true,true};
		boolean e[] = {true,false,true,true,true};
		boolean f[] = {true,false,true,true,true};
		boolean g[] = {true,false,true,true,true};

		//Temperaturbeurteilung
		Function<Integer, Boolean> is_temperature = (tmperature) -> {
  			return tmperature >= 27 && tmperature <= 30 ? true : false;
		};
		
		//Beurteilung der Niederschlagswahrscheinlichkeit
		Function<Integer, Boolean> is_rainy_percent = (rainy_percent) -> {
  			return rainy_percent >= 50 && rainy_percent <= 100 ? true : false;
		};
		
		//Beurteilung der Gefahrenperiode
		Function<LocalDateTime, Boolean> is_jellyfish_danger_date = (now) -> {
			Calendar cTime = Calendar.getInstance();
  			return now.isBefore(LocalDateTime.of(cTime.get(Calendar.YEAR), 8, 11, 0, 0)) 
  					&& now.isAfter(LocalDateTime.of(cTime.get(Calendar.YEAR), 10, 1, 23, 59)) ? true : false;
		};
		
		//Seestrom Urteil
		Function<Integer, Boolean> is_ocean_current = (current_knot) -> {
  			return  current_knot <= 1.5 ? true : false;
		};

		//Beurteilung der Salzkonzentration
		Function<Integer, Boolean> is_salinity = (current_salinity) -> {
  			return  current_salinity >= 36 ? true : false;
		};
		
		//Aktuelle Seebedingungen (Temperatur)/regnerischer Prozentsatz/gefährlicher Tag/Meeresströmung/Salzkonzentration)
		boolean state_of_sea[] = {is_temperature.apply(Integer.valueOf(args[0])),
				is_rainy_percent.apply(Integer.valueOf(args[1])),
				is_jellyfish_danger_date.apply(LocalDateTime.now()),
				is_ocean_current.apply(Integer.valueOf(args[2])),
				is_salinity.apply(Integer.valueOf(args[3]))
		};		
		
		//Beurteilung der Korrespondenz mit Quallen
		if(Arrays.equals(a,state_of_sea)) {
			System.out.println(JellyFishDangerStatus.NODANGER.status);
		}else if (Arrays.equals(b,state_of_sea)){
			System.out.println(JellyFishDangerStatus.LOWDANGER.status);
		}else if (Arrays.equals(c,state_of_sea)) {
			System.out.println(JellyFishDangerStatus.HIGHTDANGER.status);
		}else if(Arrays.equals(d,state_of_sea) 
				|| Arrays.equals(e,state_of_sea) 
				|| Arrays.equals(f,state_of_sea)
				|| Arrays.equals(g,state_of_sea)) {
			System.out.println(JellyFishDangerStatus.MIDDLEDANGER.status);
		}else {
			System.out.println(JellyFishDangerStatus.UNKNOWNDANGER.status);
		}
	}
	
	public enum JellyFishDangerStatus {
        NODANGER("Gehen wir mit einem klaren Gefühl ans Meer, ohne uns um Quallen zu sorgen!"),
        LOWDANGER("Es wird bewölkt regnen, aber es werden definitiv keine Quallen auftauchen!"),
        HIGHTDANGER("Die meisten Quallen kommen heraus. Lass uns zu Hause herumspielen."),
        MIDDLEDANGER("Die Grundlagen werden herauskommen! Es wird jedoch möglicherweise nicht angezeigt."),
		UNKNOWNDANGER("Unberechenbar. Geh sofort vom Meer weg.");

        private final String status;

        private JellyFishDangerStatus(String status) {
        this.status = status;
        }

        public String getStatus() {
            return this.status;
        }
    }
}

Am Ende

Ich habe die meiste Zeit damit verbracht, nach Informationen über Quallen zu suchen. ..

Es ist nicht möglich, Quallen mit so etwas zu besiegen, aber ich hoffe, es kann helfen, eine Situation zu schaffen, in der die breite Öffentlichkeit keine Angst vor Quallen hat. Ich möchte in Zukunft weiter forschen. Es wäre großartig, wenn es in eine Unterwasserdrohne eingebaut werden könnte.

Recommended Posts

Erkennungsalgorithmus zur Erzeugung von Quallen
Poisson-Schrittschritt-Erkennungsalgorithmus
Automatisierung der Algorithmusgenerierung mit genetischen Algorithmen