예제 #1
0
        public void TestIntegerValue()
        {
            IntegerVariable var = new IntegerVariable();

            var.CheckForStore(1);
            Assert.AreEqual(1, var.Value);
        }
예제 #2
0
        public void TestIntegerVariableNullValue()
        {
            IntegerVariable var    = new IntegerVariable();
            bool            actual = var.CheckForStore(null);

            Assert.IsFalse(actual);
        }
        public new static IntegerVariable Random()
        {
            var x = new IntegerVariable();

            x.SetRandomValues();
            return(x);
        }
예제 #4
0
        protected override void InitializeConstraintSystem(ConstraintThingySolver solver)
        {
            const int n = 8;

            // i stole this formulation of N-queens from the Choco documentation

            IntegerVariable[] queens = new IntegerVariable[n];

            for (int i = 0; i < n; i++)
            {
                queens[i] = new IntegerVariable(solver, null, new IntegerInterval(1, n));
            }

            for (int i = 0; i < n; i++)
            {
                for (int j = i + 1; j < n; j++)
                {
                    int k = j - i;

                    IntegerVariable kVar = new IntegerVariable(solver, null, new IntegerInterval(k, k));

                    Constraint.NotEqual(queens[i], queens[j]);
                    Constraint.NotEqual(queens[i], Constraint.Add(queens[j], kVar));
                    Constraint.NotEqual(queens[i], Constraint.Subtract(queens[j], kVar));
                }
            }
        }
예제 #5
0
파일: If.cs 프로젝트: gdseller/fungus
        public bool EvaluateCondition()
        {
            BooleanVariable booleanVariable = variable as BooleanVariable;
            IntegerVariable integerVariable = variable as IntegerVariable;
            FloatVariable   floatVariable   = variable as FloatVariable;
            StringVariable  stringVariable  = variable as StringVariable;

            bool condition = false;

            if (booleanVariable != null)
            {
                condition = booleanVariable.Evaluate(compareOperator, booleanData.Value);
            }
            else if (integerVariable != null)
            {
                condition = integerVariable.Evaluate(compareOperator, integerData.Value);
            }
            else if (floatVariable != null)
            {
                condition = floatVariable.Evaluate(compareOperator, floatData.Value);
            }
            else if (stringVariable != null)
            {
                condition = stringVariable.Evaluate(compareOperator, stringData.Value);
            }

            return(condition);
        }
예제 #6
0
 public void then_can_create_variable()
 {
     Variable variable = new IntegerVariable(12, "Var12")
     {
         Driver = new DriverModbusRTU(),
         DriverConfiguration = new DriverConfiguration()
     };
 }
예제 #7
0
    private void AddValueToList(FieldInfo f)
    {
        IBaseVariable variable = null;

        if (f.FieldType.ToString() == "System.String")
        {
            variable = new StringVariable();
        }
        else if (f.FieldType.ToString() == "System.Int32")
        {
            variable = new IntegerVariable();
        }
        else if (f.FieldType.ToString() == "System.Single")
        {
            variable = new FloatVariable();
        }
        else if (f.FieldType.ToString() == "System.Boolean")
        {
            variable = new BooleanVariable();
        }
        else if (f.FieldType.ToString() == "System.String[]")
        {
            variable = new StringVariableArray();
        }
        else if (f.FieldType.ToString() == "System.Int32[]")
        {
            variable = new IntegerVariableArray();
        }
        else if (f.FieldType.ToString() == "System.Single[]")
        {
            variable = new FloatVariableArray();
        }
        else if (f.FieldType.ToString() == "System.Boolean[]")
        {
            variable = new BooleanVariableArray();
        }
        else if (f.FieldType.ToString() == "UnityEngine.Vector2")
        {
            variable = new Vector2Variable();
        }
        else if (f.FieldType.ToString() == "UnityEngine.Vector3")
        {
            variable = new Vector3Variable();
        }
        else if (f.FieldType.ToString() == "UnityEngine.Vector2[]")
        {
            variable = new Vector2VariableArray();
        }
        else if (f.FieldType.ToString() == "UnityEngine.Vector3[]")
        {
            variable = new Vector3VariableArray();
        }
        if (variable != null)
        {
            variable.value = f.GetValue(this);
            ListValue.Add((string)f.Name, variable);
        }
    }
예제 #8
0
 void Awake()
 {
     TileSwapHandler.AnyPhysicalSwapMade += OnAnyPhysicalSwapMade;
     TileSwapHandler.AnyBoardSwapMade    += OnAnyBoardSwapMade;
     minAmountForMatch = tileBoardVals.GetVariable("minAmountForMatch")
                         as IntegerVariable;
     tiles = boardGenerator.GenerateBoard(this);
     UpdateColumnsAndRows();
 }
 void GetReferencesFromScene()
 {
     flowchart         = GameObject.FindObjectOfType <Flowchart>();
     flowchartTransVar = flowchart.GetVariable <TransformVariable>("thisTrans");
     gameSaver         = GameObject.FindObjectOfType <GameSaver>();
     gameLoader        = GameObject.FindObjectOfType <GameLoader>();
     saveManager       = GameObject.FindObjectOfType <SaveManager>();
     saveReader        = saveManager.SaveReader;
     someInt           = flowchart.GetVariable <IntegerVariable>("someInt");
     GetRefsToGameObjects();
 }
예제 #10
0
        //[Test]
        //public void then_can_save_integer_1_byte_minValue_minus255()
        //{
        //    byte[] allData = new byte[5];
        //    int value = 0x40;
        //    serializer.MinValue = -255;
        //    serializer.MaxValue = 255;
        //    serializer.Serialize(value, allData);
        //    allData[3].ShouldEqual((byte)0x3f);
        //    allData[4].ShouldEqual((byte)0x1);
        //}

        //[Test]
        //public void then_can_deserialize_integer_1_byte_minValue_minus255()
        //{
        //    byte[] allData = new byte[5];
        //    allData[3] = 0x3f;
        //    allData[4] = 0x1;
        //    int value = 0x40;
        //    serializer.MinValue = -255;
        //    serializer.MaxValue = 255;
        //    ((int)serializer.Deserialize(allData)).ShouldEqual(value);

        //}

        //[Test]
        //public void then_can_save_integer_2_bytes()
        //{
        //    byte[] allData = new byte[5];
        //    int value = 0x3020;
        //    serializer.MinValue = 0;
        //    serializer.MaxValue = 0xffff;
        //    serializer.Serialize(value, allData);
        //    allData[3].ShouldEqual((byte)0x20);
        //    allData[4].ShouldEqual((byte)0x30);
        //}

        //[Test]
        //public void then_can_deserialize_integer_2_bytes()
        //{
        //    byte[] allData = new byte[5];
        //    allData[3] = 0x20;
        //    allData[4] = 0x30;
        //    int result = 0x3020;
        //    serializer.MinValue = 0;
        //    serializer.MaxValue = 0xffff;
        //    ((int)serializer.Deserialize(allData)).ShouldEqual(result);

        //}

        //[Test]
        //public void then_can_save_integer_3_bytes()
        //{
        //    byte[] allData = new byte[7];
        //    int value = 0x302036;
        //    serializer.MinValue = 0;
        //    serializer.MaxValue = 0xffffff;
        //    serializer.Serialize(value, allData);
        //    allData[3].ShouldEqual((byte)0x36);
        //    allData[4].ShouldEqual((byte)0x20);
        //    allData[5].ShouldEqual((byte)0x30);
        //}

        //[Test]
        //public void then_can_deserialize_integer_3_bytes()
        //{
        //    byte[] allData = new byte[7];
        //    allData[3] = 0x36;
        //    allData[4] = 0x20;
        //    allData[5] = 0x30;
        //    int result = 0x302036;
        //    serializer.MinValue = 0;
        //    serializer.MaxValue = 0xffffff;
        //    ((int)serializer.Deserialize(allData)).ShouldEqual(result);
        //}

        //[Test]
        //public void then_can_deserialize_integer_4_bytes()
        //{
        //    byte[] allData = new byte[7];
        //    allData[3] = 0x78;
        //    allData[4] = 0x36;
        //    allData[5] = 0x20;
        //    allData[6] = 0x30;
        //    int result = 0x30203678;
        //    serializer.MinValue = 0;
        //    serializer.MaxValue = 0x7fffffff;
        //    ((int)serializer.Deserialize(allData)).ShouldEqual(result);

        //}

        private static IntegerVariableSerializer CreateSerializer(BitStream stream, int minValue, int maxValue)
        {
            IntegerVariable variable = new IntegerVariable(0, "intVar")
            {
                MinValue = minValue,
                MaxValue = maxValue,
            };
            var serializer = new IntegerVariableSerializer(variable);

            return(serializer);
        }
예제 #11
0
        public void IntegerDifferenceConstraint3()
        {
            ConstraintThingySolver solver = new ConstraintThingySolver();

            IntegerVariable x = new IntegerVariable(solver, "x", new IntegerInterval(0, 0));
            IntegerVariable y = new IntegerVariable(solver, "y", new IntegerInterval(5, 5));
            IntegerVariable z = new IntegerVariable(solver, "z", new IntegerInterval(-50, -6));

            Constraint.Difference(z, x, y);

            Assert.AreEqual(0, solver.Solutions.Count());
        }
예제 #12
0
        public void then_work_with_one_driver_one_experiment()
        {
            Server server = new Server {
                Timer = new RealtimeFixedIntervalTimer {
                    Interval = 20
                }
            };
            ValueStorage storage = new ValueStorage();

            server.ValueStorage = storage;

            IDriver driver = new OneValueTestingDriver
            {
                ValueStorage = storage,
                Timer        = new RealtimeFixedIntervalTimer {
                    Interval = 20
                },
                ValueToPostToVariableStorage = Tuple.Create(1, 3.14),
            };
            Variable var1, var2, var3;

            driver.AddVariable(var1 = new IntegerVariable(1, "Var1"));
            driver.AddVariable(var2 = new IntegerVariable(2, "Var2"));
            driver.AddVariable(var3 = new IntegerVariable(3, "Var3"));

            server.AddDriver(driver);

            Experiment experiment = new Experiment {
                Name = "Exp1"
            };

            experiment.AddVariable(var1);
            experiment.AddVariable(var2);
            experiment.AddVariable(var3);

            server.AddExperiment(experiment);

            server.Start(0);
            experiment.Start(0);

            Thread.Sleep(100);

            server.RequestVariables("Exp1", (values) =>
            {
                values.Count.ShouldEqual(3);
                values[1].ShouldEqual(3.14);
                values[2].ShouldBeNaN();
                values[3].ShouldBeNaN();
                Debug.WriteLine("Done!");
            });

            Thread.Sleep(100);
        }
예제 #13
0
        public void IntegerSumConstraint3()
        {
            ConstraintThingySolver solver = new ConstraintThingySolver();

            IntegerVariable x = new IntegerVariable(solver, "x", new IntegerInterval(1, 1));
            IntegerVariable y = new IntegerVariable(solver, "y", new IntegerInterval(1, 1));
            IntegerVariable z = new IntegerVariable(solver, "z", new IntegerInterval(10, 10));

            Constraint.Sum(z, x, y);

            Assert.AreEqual(0, solver.Solutions.Count());
        }
예제 #14
0
        public void then_can_add_variable_value()
        {
            IValueStorage storage  = new ValueStorage();
            Variable      variable = new IntegerVariable(16, "Var16");
            double        newValue = 14.54;

            storage.Enqueue(variable.ID, newValue);
            Tuple <int, double> read = storage.Dequeue();

            read.Item1.ShouldEqual(variable.ID);
            read.Item2.ShouldEqual(newValue);
        }
예제 #15
0
        public override void OnEnter()
        {
            if (key == "" ||
                variable == null)
            {
                Continue();
                return;
            }

            var flowchart = GetFlowchart();

            // Prepend the current save profile (if any)
            string prefsKey = SetSaveProfile.saveProfile + "_" + flowchart.SubstituteVariables(key);

            System.Type variableType = variable.GetType();

            if (variableType == typeof(BooleanVariable))
            {
                BooleanVariable booleanVariable = variable as BooleanVariable;
                if (booleanVariable != null)
                {
                    // PlayerPrefs does not have bool accessors, so just use int
                    booleanVariable.Value = (PlayerPrefs.GetInt(prefsKey) == 1);
                }
            }
            else if (variableType == typeof(IntegerVariable))
            {
                IntegerVariable integerVariable = variable as IntegerVariable;
                if (integerVariable != null)
                {
                    integerVariable.Value = PlayerPrefs.GetInt(prefsKey);
                }
            }
            else if (variableType == typeof(FloatVariable))
            {
                FloatVariable floatVariable = variable as FloatVariable;
                if (floatVariable != null)
                {
                    floatVariable.Value = PlayerPrefs.GetFloat(prefsKey);
                }
            }
            else if (variableType == typeof(StringVariable))
            {
                StringVariable stringVariable = variable as StringVariable;
                if (stringVariable != null)
                {
                    stringVariable.Value = PlayerPrefs.GetString(prefsKey);
                }
            }

            Continue();
        }
예제 #16
0
        public void then_fail_can_add_driver_start_variables()
        {
            int variableId = 17;
            var variable   = new IntegerVariable(variableId, "Name")
            {
                DriverConfiguration = new object()
            };

            driver.ValueStorage = new VariableStorageStub();
            driver.Timer        = new TimerStub();
            driver.Start();
            driver.AddVariable(variable);
        }
예제 #17
0
 private void OnCollisionEnter2D(Collision2D collision)
 {
     DebrisCreator?.Create();
     SoundPlayer.Play(DestructionSound);
     //начисление очков за сбитого врага
     if (collision.gameObject.CompareTag("Player"))
     {
         PlayerScore += Info.ScoreToGain;
     }
     //процедура уничтожения астероида
     Instantiate(DestructionEffect, gameObject.transform.position, Quaternion.identity);
     Destroy(gameObject);
 }
예제 #18
0
        public void then_can_remove_driver_variables()
        {
            int variableId = 17;
            var variable   = new IntegerVariable(variableId, "Name")
            {
                DriverConfiguration = new object()
            };

            driver.ValueStorage = new VariableStorageStub();
            driver.Timer        = new TimerStub();
            driver.AddVariable(variable);
            driver.RemoveVarible(variableId).ShouldBeTrue();
        }
예제 #19
0
        public void then_work_heavy_scenario_single_instances()
        {
            Server server = new Server {
                Timer = new RealtimeFixedIntervalTimer {
                    Interval = 20
                }
            };
            ValueStorage storage = new ValueStorage();

            server.ValueStorage = storage;

            IDriver driver = new AllValuesTestingDriver
            {
                ValueStorage = storage,
                Timer        = new RealtimeFixedIntervalTimer {
                    Interval = 20
                },
                ValueToPost = 3.14
            };
            Experiment experiment = new Experiment {
                Name = "Exp1"
            };

            int varCount = 1000;

            for (int i = 0; i < varCount; i++)
            {
                var variable = new IntegerVariable(i, "Var" + i);
                driver.AddVariable(variable);
                experiment.AddVariable(variable);
            }
            server.AddDriver(driver);
            server.AddExperiment(experiment);

            server.Start(0);
            experiment.Start(0);

            Thread.Sleep(50);

            server.RequestVariables("Exp1", (values) =>
            {
                values.Count.ShouldEqual(varCount);
                for (int i = 0; i < varCount; i++)
                {
                    values[i].ShouldEqual(3.14);
                }
                Debug.WriteLine("Done!");
            });

            Thread.Sleep(100);
        }
예제 #20
0
        public void when_zip_files_on_day()
        {
            Experiment exp = new Experiment();

            exp.Name = "Exp1";
            IDriver driver = new DriverInt()
            {
                ValueStorage = new ValueStorage()
            };

            IntegerVariable integerVariable = new IntegerVariable(0, "var1")
            {
                Driver = driver, MinValue = 0, MaxValue = 16, LogValues = true
            };

            exp.AddVariable(integerVariable); // 5 bits
            IntegerVariable integerVariable1 = new IntegerVariable(1, "var2")
            {
                Driver = driver, MinValue = 0, MaxValue = 1015
            };

            exp.AddVariable(integerVariable1); // 10 bits
            BoolVariable boolVariable = new BoolVariable(2, "var3")
            {
                Driver = driver, LogValues = true
            };

            exp.AddVariable(boolVariable); // 1 bits
            driver.AddVariable(integerVariable);
            driver.AddVariable(integerVariable1);
            driver.AddVariable(boolVariable);
            logger = new VariableLogger(new List <Experiment>()
            {
                exp
            });
            exp.Start(20);
            Mock <IDateTimeProvider> mock = new Mock <IDateTimeProvider>(MockBehavior.Strict);

            logger.TimeProvider = mock.Object;
            mock.Setup(x => x.Now).Returns(DateTime.Now);
            Dictionary <int, double> varValues = new Dictionary <int, double>
            {
                { 0, 23 },
                { 1, 12 },
            };

            logger.ReceiveVariableValues(varValues);
            mock.Setup(x => x.Now).Returns(new DateTime(2012, 5, 12));
            logger.ReceiveVariableValues(varValues);
        }
예제 #21
0
        public void Cuando_recive_valores_son_salvados_solo_los_que_tienen_que_ser_salvados()
        {
            Experiment exp    = new Experiment();
            IDriver    driver = new DriverInt()
            {
                ValueStorage = new ValueStorage()
            };

            IntegerVariable integerVariable = new IntegerVariable(0, "var1")
            {
                Driver = driver, MinValue = 0, MaxValue = 16, LogValues = true
            };

            exp.AddVariable(integerVariable); // 5 bits
            IntegerVariable integerVariable1 = new IntegerVariable(1, "var2")
            {
                Driver = driver, MinValue = 0, MaxValue = 1015
            };

            exp.AddVariable(integerVariable1); // 10 bits
            BoolVariable boolVariable = new BoolVariable(2, "var3")
            {
                Driver = driver, LogValues = true
            };

            exp.AddVariable(boolVariable); // 1 bits
            driver.AddVariable(integerVariable);
            driver.AddVariable(integerVariable1);
            driver.AddVariable(boolVariable);
            logger = new VariableLogger(new List <Experiment>()
            {
                exp
            });
            Dictionary <int, double> varValues = new Dictionary <int, double>
            {
                { 0, 23 },
                { 1, 12 },
            };

            logger.ExperimentsLogger.Count.ShouldEqual(1);
            ExperimentLoggerStub stub = new ExperimentLoggerStub(exp);

            logger.ExperimentsLogger.RemoveAt(0);
            logger.ExperimentsLogger.Add(stub);
            logger.ReceiveVariableValues(varValues);
            stub.ValuesReceive[0].ShouldEqual(23);
            stub.ValuesReceive[1].ShouldEqual(12);
        }
예제 #22
0
        public void when_encoder_message_response_pakage_write_register()
        {
            c     = 0;
            _ints = new List <byte> {
                1, 2, 3, 4, 5, 6, 186, 221, 8, 9, 10, 11, 12, 197, 106
            };
            var register = new IntegerVariable(1, "Var1")
            {
                DriverConfiguration =
                    new ModbusConfiguration(stationRtu.Object, 20483, ModbusTypeData.Inputs_Registers)
            };

            byte[] messag = new byte[] { 1, 6, 80, 3, 20, 0, 103, 202 };
            port.Setup(x => x.Write(messag, 0, messag.Length));
            encoderDecoder.CreateMessageResponsePackageWriteRegister(register, 20);
            encoderDecoder.Message.SequenceEqual(messag);
            encoderDecoder.Response.SequenceEqual(_ints);
        }
        public void then_can_save_variables()
        {
            Experiment exp    = new Experiment();
            IDriver    driver = new DriverInt()
            {
                ValueStorage = new ValueStorage()
            };

            IntegerVariable integerVariable = new IntegerVariable(0, "var1")
            {
                Driver = driver, MinValue = 0, MaxValue = 16, LogValues = true
            };

            exp.AddVariable(integerVariable); // 5 bits
            IntegerVariable integerVariable1 = new IntegerVariable(1, "var2")
            {
                Driver = driver, MinValue = 0, MaxValue = 1015
            };

            exp.AddVariable(integerVariable1); // 10 bits
            BoolVariable boolVariable = new BoolVariable(2, "var3")
            {
                Driver = driver, LogValues = true
            };

            exp.AddVariable(boolVariable); // 1 bits
            driver.AddVariable(integerVariable);
            driver.AddVariable(integerVariable1);
            driver.AddVariable(boolVariable);
            ExperimentLoggerStub     logger    = new ExperimentLoggerStub(exp);
            Dictionary <int, double> varValues = new Dictionary <int, double>
            {
                { 0, 23 },
                { 1, 12 },
            };

            logger.ReceiveNewVariableValues(varValues);
            exp.Start(0);
            Thread.Sleep(50);
            logger.ExperimentSerializer.Serializers.Count.ShouldEqual(2);
            logger.ExperimentSerializer.Serializers.ElementAt(0).Value.ShouldBeInstanceOfType(typeof(IntegerVariableSerializer));
            logger.ExperimentSerializer.Serializers.ElementAt(1).Value.ShouldBeInstanceOfType(typeof(BoolVariableSerializer));
        }
예제 #24
0
    //If a block is activated by the user, then this is not needed in the flowchart
    //Copies the variables in the list from the GM flowcharts to the activated flowchart
    public void CopyGameMasterToFlowchart()
    {
        gm = GameObject.Find("GameMaster").GetComponent <GameMaster>();
        Flowchart gmQuest = gm.GetQuestFlowchart();
        Flowchart target  = this.GetComponent <Flowchart>();

        Variable sourceVar = null;

        for (int i = 0; i < varNames.Length; i++)
        {
            sourceVar = gmQuest.GetVariable(varNames[i]);

            StringVariable tempstr = sourceVar as StringVariable;
            if (tempstr != null)
            {
                target.SetStringVariable(varNames[i], tempstr.Value);
                continue;
            }

            BooleanVariable tempBool = sourceVar as BooleanVariable;
            if (tempBool != null)
            {
                target.SetBooleanVariable(varNames[i], tempBool.Value);
                continue;
            }

            IntegerVariable tempInt = sourceVar as IntegerVariable;
            if (tempInt != null)
            {
                target.SetIntegerVariable(varNames[i], tempInt.Value);
                continue;
            }

            FloatVariable tempFloat = sourceVar as FloatVariable;
            if (tempFloat != null)
            {
                target.SetFloatVariable(varNames[i], tempFloat.Value);
                continue;
            }
        }
    }
예제 #25
0
        public void IntegerDifferenceConstraint5()
        {
            ConstraintThingySolver solver = new ConstraintThingySolver();

            IntegerVariable x = new IntegerVariable(solver, "x", new IntegerInterval(1, 5));
            IntegerVariable y = new IntegerVariable(solver, "y", new IntegerInterval(1, 5));
            IntegerVariable z = new IntegerVariable(solver, "z", new IntegerInterval(-3, 10));

            Constraint.Difference(z, x, y);

            int solutionCount = 0;

            foreach (var solution in solver.Solutions)
            {
                solutionCount++;

                Assert.AreEqual(z.CurrentValue, x.CurrentValue - y.CurrentValue);
            }

            Assert.AreEqual(24, solutionCount);
        }
예제 #26
0
        public void IntegerSumConstraint5()
        {
            ConstraintThingySolver solver = new ConstraintThingySolver();

            IntegerVariable x = new IntegerVariable(solver, "x", new IntegerInterval(1, 1));
            IntegerVariable y = new IntegerVariable(solver, "y", new IntegerInterval(1, 2));
            IntegerVariable z = new IntegerVariable(solver, "z", new IntegerInterval(3, 3));

            Constraint.Sum(z, x, y);

            int solutionCount = 0;

            foreach (var solution in solver.Solutions)
            {
                solutionCount++;

                Assert.AreEqual(z.CurrentValue, x.CurrentValue + y.CurrentValue);
            }

            Assert.AreEqual(1, solutionCount);
        }
예제 #27
0
        public void Setup()
        {
            server = new Server();
            Experiment exp = new Experiment()
            {
                Name = expName
            };

            server.AddExperiment(exp);
            Mock <IDriver> driver = new Mock <IDriver>(MockBehavior.Strict);

            driver
            .Setup(x => x.WriteValue(varId, newValue));

            Variable variable = new IntegerVariable(varId, "Var1")
            {
                Driver = driver.Object
            };

            exp.AddVariable(variable);
        }
예제 #28
0
        public void EightQueens()
        {
            const int n = 8;

            ConstraintThingySolver solver = new ConstraintThingySolver();

            // i stole this formulation of N-queens from the Choco documentation

            IntegerVariable[] queens = new IntegerVariable[n];

            for (int i = 0; i < n; i++)
            {
                queens[i] = new IntegerVariable(solver, null, new IntegerInterval(1, n));
            }

            for (int i = 0; i < n; i++)
            {
                for (int j = i + 1; j < n; j++)
                {
                    int k = j - i;

                    IntegerVariable kVar = new IntegerVariable(solver, null, new IntegerInterval(k, k));

                    Constraint.NotEqual(queens[i], queens[j]);
                    Constraint.NotEqual(queens[i], Constraint.Add(queens[j], kVar));
                    Constraint.NotEqual(queens[i], Constraint.Subtract(queens[j], kVar));
                }
            }

            int answerCounter = 0;

            foreach (var solution in solver.Solutions)
            {
                answerCounter++;
            }

            Assert.AreEqual(92, answerCounter);
        }
예제 #29
0
        public void SetUp()
        {
            exp = new Experiment {
                Name = "Exp1"
            };
            driver = new DriverStub();
            Variable var1 = new IntegerVariable(1, "Var1")
            {
                Driver = driver
            };
            Variable var2 = new IntegerVariable(2, "Var2")
            {
                Driver = driver
            };
            Variable var3 = new IntegerVariable(3, "Var3")
            {
                Driver = driver
            };

            exp.AddVariable(var1);
            exp.AddVariable(var2);
            exp.AddVariable(var3);
        }
예제 #30
0
    /**
     * Loads a flatzinc file (passed as the first argument) and solves it.
     */
    private static void Solve(String filename)
    {
        Model model = new Model(filename);

        model.LoadFromFile(filename);
        // Uncomment to see the model.
        // Console.WriteLine(model.ToString());
        // This is mandatory.
        model.PresolveForCp(/*verbose=*/ false);
        // Display basic statistics on the model.
        model.PrintStatistics();

        FlatzincParameters parameters = new FlatzincParameters();

        // Initialize to default values as in the C++ runner.
        parameters.all_solutions    = false;
        parameters.free_search      = false;
        parameters.last_conflict    = false;
        parameters.heuristic_period = 100;
        parameters.ignore_unknown   = false;
        parameters.log_period       = 10000000;
        parameters.luby_restart     = -1;
        parameters.num_solutions    = 0;
        parameters.restart_log_size = -1;
        parameters.threads          = 0;
        parameters.time_limit_in_ms = 10000;
        parameters.logging          = false;
        parameters.verbose_impact   = false;
        parameters.thread_id        = -1;
        parameters.search_type      = FlatzincParameters.DEFAULT;
        // Mandatory to retrieve solutions.
        parameters.store_all_solutions = true;

        Solver solver = new Solver(model);

        solver.Solve(parameters);

        int last = solver.NumStoredSolutions() - 1;

        if (last >= 0)
        {
            SolutionOutputSpecsVector output_vector = model.output();
            foreach (SolutionOutputSpecs output in output_vector)
            {
                if (output.variable != null)
                {
                    IntegerVariable var = output.variable;
                    Console.WriteLine(output.name + " = " +
                                      solver.StoredValue(last, var));
                }
                if (output.flat_variables.Count > 0)
                {
                    String line = output.name;
                    foreach (SolutionOutputSpecs.Bounds b in output.bounds)
                    {
                        line += "[" + b.ToString() + "]";
                    }
                    line += " = {";
                    bool start = true;
                    foreach (IntegerVariable var in output.flat_variables)
                    {
                        if (start)
                        {
                            start = false;
                        }
                        else
                        {
                            line += ", ";
                        }
                        line += solver.StoredValue(last, var);
                    }
                    line += "}";
                    Console.WriteLine(line);
                }
            }
        }
    }