1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- package algorithms.geneticAlgorithm.holegGA.Components;
- import ui.controller.Control;
- import ui.controller.SimulationManager;
- import ui.model.Model;
- import classes.AbstractCpsObject;
- import classes.HolonObject;
- import classes.SubNet;
- import algorithms.geneticAlgorithm.Components.GAFittnessFunctionStrategy;
- import algorithms.geneticAlgorithm.holegGA.ParameterArray;
- public class HolegFittnessFkt implements GAFittnessFunctionStrategy<HolegIndividual>{
-
- Control controller;
- Model model;
- SimulationManager simManager;
- ParameterArray params;
- double suppliedPoints;
- double oversuppliedPoints;
- double undersuppliedPoints;
- double partiallysuppliedPoints;
- boolean everyoneSupplied;
-
- public HolegFittnessFkt(Control controller){
- model = new Model();
- simManager = new SimulationManager(model);
- }
- @Override
- public double calculateFittness(HolegIndividual candidate){
- model.getObjectsOnCanvas().clear();
- model.getEdgesOnCanvas().clear();
- candidate.configurateNetwork();
- model.getObjectsOnCanvas().addAll(candidate.getObjects());
- model.getEdgesOnCanvas().addAll(candidate.getAllEdges());
- simManager.calculateStateForTimeStep(model.getCurIteration());
-
- everyoneSupplied = true;
- double fittness = 0;
- for(AbstractCpsObject abs : candidate.getObjects()){
- if(abs instanceof HolonObject){
-
- switch (((HolonObject) abs).getState()){
-
- case HolonObject.SUPPLIED :
- fittness += suppliedPoints;
- break;
-
- case HolonObject.OVER_SUPPLIED :
- fittness += oversuppliedPoints;
- everyoneSupplied = false;
- break;
-
- case HolonObject.NOT_SUPPLIED :
- fittness += undersuppliedPoints;
- everyoneSupplied = false;
- break;
- case HolonObject.PARTIALLY_SUPPLIED:
- fittness += partiallysuppliedPoints;
- everyoneSupplied = false;
- break;
- }
- }
- }
- return fittness;
- }
-
- public float getCurrentOverProduction(){
- float overProd = 0;
- for(SubNet subnet : simManager.getSubNets()){
- overProd += subnet.spareProduction;
- }
- return overProd;
- }
-
- public boolean getEveryoneSupplied(){
- return everyoneSupplied;
- }
-
- public Model getModel(){
- return model;
- }
-
- public void setParameters(ParameterArray params){
- this.params = params;
- suppliedPoints = (double)params.get(params.SUPPLIED_POINTS);
- oversuppliedPoints = (double)params.get(params.OVERSUPPLIED_POINTS);
- undersuppliedPoints = (double)params.get(params.UNDERSUPPLIED_POINTS);
- partiallysuppliedPoints = (double)params.get(params.PARTIALSUPPLIED_POINTS);
- }
-
- }
|