Package fmg.fmg8.endlAutomat.fitness

Source Code of fmg.fmg8.endlAutomat.fitness.FitnessZahnrad

/**
*
*/
package fmg.fmg8.endlAutomat.fitness;

import fmg.fmg8.umgebung2D.Roboter;
import fmg.fmg8.umgebung2D.Vektor2D;

/**
* @author aifb
*
*/
public class FitnessZahnrad implements FitnessVerfahren {

    /**
     * Berechnet eine tempor�re Fitness f�r den aktuellen Zustand des Roboters.
     * Es wird der letzte Befehle betrachtet (erstes Element der Liste).
     *
     * @param rob  Der Roboter, dessen Fitness berechnet werden soll.
     *
     * @return  Die aktuelle tempor�re Fitness.
     */   
    @Override
    public int fitness(final Roboter rob) {
        // Kollisionen
        int fitKoll = (int) ((double) rob.getAnzUnfaelle()
                 * rob.getPars().getAbzugUnfall().doubleValue());
        rob.resetAnzUnf();
        double abstand1, abstand2;
        Vektor2D mitte1, mitte2;
       
        // Aus Collision avoidance (nur MOVE-Teil):
        int bef0 = ((Integer) rob.getBefehle().get(0)).intValue();
        String befehl0 = fmg.fmg8.umgebung2D.Konstanten.BEF[bef0].toUpperCase();
        int fitCollAvoid = 1;

        if (!befehl0.equals("MOV")) {
            fitCollAvoid -= 1;
        }

        // N�he zu Zahnrad belohnen.
        mitte1 = rob.getUmg().getDynWaende()[47].mittelpunkt();
        mitte2 = rob.getUmg().getDynWaende()[221].mittelpunkt();
        abstand1 = rob.getPosition().distanz(mitte1);
        abstand2 = rob.getPosition().distanz(mitte2);

        fitCollAvoid *= abstand2 / abstand1;
       
        return fitCollAvoid - fitKoll;
    }

}
TOP

Related Classes of fmg.fmg8.endlAutomat.fitness.FitnessZahnrad

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.