package org.singinst.uf.model; import java.util.ArrayList; import java.util.List; import java.util.TreeSet; import org.singinst.uf.math.MathUtil; public class RescheduledEventsRelation extends CalculationRelation { /*@Override protected Calculation getCalculationForYear(double year) { // TODO Auto-generated method stub return null; }*/ public RescheduledEventsRelation(Node node) { super(node); } protected Calculation probabilityAiIsPossible() { return new Calculation("Probability that AGI is possible") { @Override protected double rawEvaluate(StringBuilder htmlConsole) { MathUtil.ScienceSpeedModelParameters scienceSpeedModelParameters = scienceSpeedModel(); org.singinst.uf.common.LogUtil.info(String.format( "institutional_base_year: %g\n" + "institutional_mean_slope_log_factor: %g\n" + "institutional_stddev_slope_log_factor: %g\n" + "population_base_year: %g\n" + "population_mean_log_year: %g\n" + "population_stddev_log_year: %g\n" + "population_mean_init_log_rate: %g\n" + "population_stddev_init_log_rate: %g\n" + "population_mean_slope_log_rate: %g\n" + "population_stddev_slope_log_rate: %g\n" + "sequencedata_base_year: %g\n" + "sequencedata_mean_log_year: %g\n" + "sequencedata_stddev_log_year: %g\n" + "sequencedata_mean_init_log_factor: %g\n" + "sequencedata_stddev_init_log_factor: %g\n" + "sequencedata_mean_slope_log_factor: %g\n" + "sequencedata_stddev_slope_log_factor: %g\n" , scienceSpeedModelParameters.institutional_base_year , scienceSpeedModelParameters.institutional_mean_slope_log_factor , scienceSpeedModelParameters.institutional_stddev_slope_log_factor , scienceSpeedModelParameters.population_base_year , scienceSpeedModelParameters.population_mean_log_year , scienceSpeedModelParameters.population_stddev_log_year , scienceSpeedModelParameters.population_mean_init_log_rate , scienceSpeedModelParameters.population_stddev_init_log_rate , scienceSpeedModelParameters.population_mean_slope_log_rate , scienceSpeedModelParameters.population_stddev_slope_log_rate , scienceSpeedModelParameters.sequencedata_base_year , scienceSpeedModelParameters.sequencedata_mean_log_year , scienceSpeedModelParameters.sequencedata_stddev_log_year , scienceSpeedModelParameters.sequencedata_mean_init_log_factor , scienceSpeedModelParameters.sequencedata_stddev_init_log_factor , scienceSpeedModelParameters.sequencedata_mean_slope_log_factor , scienceSpeedModelParameters.sequencedata_stddev_slope_log_factor )); return getDependency().value(NodeIDString.Q1_1, ScalarSubIDString.PROBABILITY) / 100; } }; } MathUtil.EventDiscreteDistributionSchedule rescheduledProbabilities; @Override protected List getCalculations(final List years) { List retVal = new ArrayList(); for (final double year : years) { retVal.add(new Calculation("Probability of AI by " + (int) year) { @Override protected double rawEvaluate(StringBuilder htmlConsole) { if (year == ModelUtil.BASIC_MODEL_YEARS[0]) { calculate(MathUtil.wrapDoubleArray(ModelUtil.BASIC_MODEL_YEARS)); } return MathUtil.expc(rescheduledProbabilities.logitnerp(year).clogProbEvent); } }); } return retVal; } private void calculate(List years) { double[] yearsInOtherCalculations = ModelUtil.BASIC_MODEL_YEARS; double[] yearsHere = MathUtil.unwrapDoubleList(years); //new double[years.size()]; //for (int i=0; i beforeYearsSortedSet = new TreeSet(MathUtil.wrapDoubleArray(yearsInOtherCalculations)); { double i = ModelUtil.LATEST_YEAR - ModelUtil.EARLIEST_IA_YEAR; double factor = (yearsInOtherCalculations[yearsInOtherCalculations.length-1] - ModelUtil.EARLIEST_IA_YEAR) / (yearsInOtherCalculations[yearsInOtherCalculations.length-2] - ModelUtil.EARLIEST_IA_YEAR) ; i *= factor; while (i <= ModelUtil.LATEST_UNACCELERATED_YEAR - ModelUtil.EARLIEST_IA_YEAR) { beforeYearsSortedSet.add(Math.round(i/ModelUtil.YEAR_STEPSIZE)*ModelUtil.YEAR_STEPSIZE + ModelUtil.EARLIEST_IA_YEAR); i *= factor; }; i = ModelUtil.LATEST_YEAR - ModelUtil.EARLIEST_IA_YEAR; i /= factor; while (i <= ModelUtil.EARLIEST_YEAR - ModelUtil.EARLIEST_IA_YEAR) { beforeYearsSortedSet.add(Math.round(i/ModelUtil.YEAR_STEPSIZE)*ModelUtil.YEAR_STEPSIZE + ModelUtil.EARLIEST_IA_YEAR); i /= factor; }; } double[] beforeYears = MathUtil.unwrapDoubleList(new ArrayList(beforeYearsSortedSet)); //List clogPAiWrapped; double[] clogPAi; //clogPAi = MathUtil.unwrapDoubleList(clogPAiWrapped); clogPAi = new double[beforeYears.length]; for (int i=0; i300d) clogPAi[i]=300d; } MathUtil.EventDiscreteDistributionSchedule s_before = new MathUtil.EventDiscreteDistributionSchedule(); MathUtil.EventDiscreteDistributionSchedule s_after; s_before.time = beforeYears; //ModelUtil.BASIC_MODEL_YEARS; //s_before.time = java.util.Arrays.copyOf(ModelUtil.BASIC_MODEL_YEARS, yearsInOtherCalculations.length+2); //s_before.time[yearsInOtherCalculations.length] = ModelUtil.LATEST_YEAR*(1+2*MathUtil.DOUBLE_EPS); //s_before.time[yearsInOtherCalculations.length+1] = ModelUtil.LATEST_YEAR*(1+4*MathUtil.DOUBLE_EPS); s_before.clogProbEvent = clogPAi; //s_before.clogProbEvent = java.util.Arrays.copyOf(clogPAI, yearsInOtherCalculations.length+2); s_before.logitSubevents = new double[][]{}; MathUtil.ScienceSpeedModelParameters scienceSpeedModelParameters = scienceSpeedModel(); s_after = MathUtil.clogMarginalScienceSpeedEventRescheduling( scienceSpeedModelParameters, s_before, yearsHere, 1000); rescheduledProbabilities = s_after; //List rescheduledProbabilities = new java.util.ArrayList(years.size()); //for (int i=0; i