当前位置: 首页>>代码示例>>C#>>正文


C# DataReader.Next方法代码示例

本文整理汇总了C#中DataReader.Next方法的典型用法代码示例。如果您正苦于以下问题:C# DataReader.Next方法的具体用法?C# DataReader.Next怎么用?C# DataReader.Next使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在DataReader的用法示例。


在下文中一共展示了DataReader.Next方法的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: Main

        public static void Main(String[] args)
        {
            String filename = "../../../../examples/data/openshop_default.data";
            int failLimit = 10000;

            if (args.Length > 0)
                filename = args[0];
            if (args.Length > 1)
                failLimit = Convert.ToInt32(args[1]);

            CP cp = new CP();

            DataReader data = new DataReader(filename);
            int nbJobs = data.Next();
            int nbMachines = data.Next();

            List<IIntervalVar>[] jobs = new List<IIntervalVar>[nbJobs];
            for (int i = 0; i < nbJobs; i++)
                jobs[i] = new List<IIntervalVar>();
            List<IIntervalVar>[] machines = new List<IIntervalVar>[nbMachines];
            for (int j = 0; j < nbMachines; j++)
                machines[j] = new List<IIntervalVar>();

            List<IIntExpr> ends = new List<IIntExpr>();
            for (int i = 0; i < nbJobs; i++)
            {
                for (int j = 0; j < nbMachines; j++)
                {
                    int pt = data.Next();
                    IIntervalVar ti = cp.IntervalVar(pt);
                    jobs[i].Add(ti);
                    machines[j].Add(ti);
                    ends.Add(cp.EndOf(ti));
                }
            }

            for (int i = 0; i < nbJobs; i++)
                cp.Add(cp.NoOverlap(jobs[i].ToArray()));

            for (int j = 0; j < nbMachines; j++)
                cp.Add(cp.NoOverlap(machines[j].ToArray()));

            IObjective objective = cp.Minimize(cp.Max(ends.ToArray()));
            cp.Add(objective);

            cp.SetParameter(CP.IntParam.FailLimit, failLimit);
            Console.WriteLine("Instance \t: " + filename);
            if (cp.Solve())
            {
                Console.WriteLine("Makespan \t: " + cp.ObjValue);
            }
            else
            {
                Console.WriteLine("No solution found.");
            }
        }
开发者ID:andreasmattas,项目名称:testcode,代码行数:56,代码来源:SchedOpenShop.cs

示例2: Main

        public static void Main(String[] args)
        {
            String filename = "../../../../examples/data/jobshop_default.data";
            int nbJobs, nbMachines;

            if (args.Length > 0)
                filename = args[0];

            CP cp = new CP();
            DataReader data = new DataReader(filename);

            nbJobs = data.Next();
            nbMachines = data.Next();
            List<IIntExpr> ends = new List<IIntExpr>();
            List<IIntervalVar>[] machines = new List<IIntervalVar>[nbMachines];
            for (int j = 0; j < nbMachines; j++)
                machines[j] = new List<IIntervalVar>();

            for (int i = 0; i < nbJobs; i++)
            {
                IIntervalVar prec = cp.IntervalVar();
                for (int j = 0; j < nbMachines; j++)
                {
                    int m, d;
                    m = data.Next();
                    d = data.Next();
                    IIntervalVar ti = cp.IntervalVar(d);
                    machines[m].Add(ti);
                    if (j > 0)
                    {
                        cp.Add(cp.EndBeforeStart(prec, ti));
                    }
                    prec = ti;
                }
                ends.Add(cp.EndOf(prec));
            }

            for (int j = 0; j < nbMachines; j++)
                cp.Add(cp.NoOverlap(machines[j].ToArray()));

            IObjective objective = cp.Minimize(cp.Max(ends.ToArray()));
            cp.Add(objective);

            Console.WriteLine("Instance \t: " + filename);
            if (cp.Solve())
            {
                Console.WriteLine("Makespan \t: " + cp.ObjValue);
            }
            else
            {
                Console.WriteLine("No solution found.");
            }
        }
开发者ID:andreasmattas,项目名称:testcode,代码行数:53,代码来源:SchedJobShop.cs

示例3: Main

        public static void Main(String[] args)
        {
            String filename = "../../../../examples/data/flowshop_default.data";
            int failLimit = 10000;
            int nbJobs, nbMachines;

            if (args.Length > 0)
            filename = args[0];
            if (args.Length > 1)
            failLimit = Convert.ToInt32(args[1]);

            CP cp = new CP();

            DataReader data = new DataReader(filename);

            nbJobs = data.Next();
            nbMachines = data.Next();

            List<IIntExpr> ends = new List<IIntExpr>();
            List<IIntervalVar>[] machines = new List<IIntervalVar>[nbMachines];
            for (int j = 0; j < nbMachines; j++)
            machines[j] = new List<IIntervalVar>();
            for (int i = 0; i < nbJobs; i++)
            {
            IIntervalVar prec = cp.IntervalVar();
            for (int j = 0; j < nbMachines; j++)
            {
                int d = data.Next();
                IIntervalVar ti = cp.IntervalVar(d);
                machines[j].Add(ti);
                if (j > 0)
                {
                    cp.Add(cp.EndBeforeStart(prec, ti));
                }
                prec = ti;
            }
            ends.Add(cp.EndOf(prec));
            }

            IIntervalSequenceVar[] seqs = new IIntervalSequenceVar[nbMachines];
            for (int j = 0; j < nbMachines; j++)
            {
            seqs[j] = cp.IntervalSequenceVar(machines[j].ToArray());
            cp.Add(cp.NoOverlap(seqs[j]));
            if (0 < j)
            {
                cp.Add(cp.SameSequence(seqs[0], seqs[j]));
            }
            }

            IObjective objective = cp.Minimize(cp.Max(ends.ToArray()));
            cp.Add(objective);

            cp.SetParameter(CP.IntParam.FailLimit, failLimit);
            Console.WriteLine("Instance \t: " + filename);
            if (cp.Solve())
            {
            Console.WriteLine("Makespan \t: " + cp.ObjValue);
            }
            else
            {
            Console.WriteLine("No solution found.");
            }
        }
开发者ID:andreasmattas,项目名称:testcode,代码行数:64,代码来源:SchedPFlowShop.cs

示例4: buildModel

 //----- RCPSP Model creation ------------------------------------------------
 private static void buildModel(String fileName)
 {
     int nbTasks, nbResources;
     DataReader data = new DataReader(fileName);
     try {
       nbTasks = data.Next();
       nbResources = data.Next();
       List<IIntExpr>    ends             = new List<IIntExpr>();
       List<IConstraint> capacityCtList   = new List<IConstraint>();
       List<IConstraint> precedenceCtList = new List<IConstraint>();
       ICumulFunctionExpr[] resources = new ICumulFunctionExpr[nbResources];
       int[] capacities = new int[nbResources];
       for (int j = 0; j < nbResources; j++) {
     capacities[j] = data.Next();
     resources[j] = cp.CumulFunctionExpr();
       }
       IIntervalVar[] tasks = new IIntervalVar[nbTasks];
       for (int i = 0; i < nbTasks; i++) {
     tasks[i] = cp.IntervalVar();
     tasks[i].Name = "ACT" + i;
       }
       for (int i = 0; i < nbTasks; i++) {
     IIntervalVar task = tasks[i];
     int d, smin, emax, nbSucc;
     d    = data.Next();
     smin = data.Next();
     emax = data.Next();
     task.SizeMin  = d;
     task.SizeMax  = d;
     task.StartMin = smin;
     task.EndMax   = emax;
     ends.Add(cp.EndOf(task));
     for (int j = 0; j < nbResources; j++ ) {
       int q = data.Next();
       if (q > 0) {
         resources[j].Add(cp.Pulse(task, q));
       }
     }
     nbSucc = data.Next();
     for (int s = 0; s < nbSucc; s++ ) {
       int succ = data.Next();
       IConstraint pct = cp.EndBeforeStart(task, tasks[succ]);
       cp.Add(pct);
       precedenceCtList.Add(pct);
     }
       }
       for (int j = 0; j < nbResources; j++) {
     IConstraint cct = cp.Le(resources[j], capacities[j]);
     cp.Add(cct);
     capacityCtList.Add(cct);
       }
       precedenceCts = precedenceCtList.ToArray();
       capacityCts   = capacityCtList.ToArray();
       IObjective objective = cp.Minimize(cp.Max(ends.ToArray()));
       cp.Add(objective);
     } catch (ILOG.Concert.Exception e) {
     Console.WriteLine("Error: " + e);
     }
 }
开发者ID:andreasmattas,项目名称:testcode,代码行数:60,代码来源:SchedConflict.cs

示例5: CreateModel

        private void CreateModel(String dataFile)
        {
            DataReader data = new DataReader(dataFile);
            nbJobs = data.Next();
            nbMachines = data.Next();

            int[] rel = new int[nbJobs];
            int[] due = new int[nbJobs];

            costs = new int[nbMachines][];
            int[][] dur = new int[nbMachines][];
            for (int j = 0; j < nbMachines; j++)
            {
                costs[j] = new int[nbJobs];
                dur[j] = new int[nbJobs];
            }

            for (int i = 0; i < nbJobs; i++)
                rel[i] = data.Next();

            for (int i = 0; i < nbJobs; i++)
                due[i] = data.Next();

            for (int j = 0; j < nbMachines; j++)
                for (int i = 0; i < nbJobs; i++)
                    costs[j][i] = data.Next();

            for (int j = 0; j < nbMachines; j++)
                for (int i = 0; i < nbJobs; i++)
                    dur[j][i] = data.Next();

            machines = new IIntervalVar[nbMachines][];
            for (int j = 0; j < nbMachines; j++)
                machines[j] = new IIntervalVar[nbJobs];
            for (int i = 0; i < nbJobs; i++)
            {
                IIntervalVar job = cp.IntervalVar();
                job.StartMin = rel[i];
                job.EndMax = due[i];
                job.Name = "Op" + i;
                IIntervalVar[] jobm = new IIntervalVar[nbMachines];
                for (int j = 0; j < nbMachines; j++)
                {
                    jobm[j] = cp.IntervalVar(dur[j][i]);
                    jobm[j].Name = "Alt" + i + "_" + j + "_C" + costs[j][i];
                    jobm[j].SetOptional();
                    machines[j][i] = jobm[j];
                }
                cp.Add(cp.Alternative(job, jobm));
            }
            for (int j = 0; j < nbMachines; j++)
                cp.Add(cp.NoOverlap(machines[j]));
        }
开发者ID:andreasmattas,项目名称:testcode,代码行数:53,代码来源:SchedGoalProg.cs

示例6: Main

        public static void Main(String[] args)
        {
            String filename = "../../../../examples/data/rcpspmm_default.data";
            int failLimit = 30000;
            int nbTasks, nbRenewable, nbNonRenewable;

            if (args.Length > 0)
                filename = args[0];
            if (args.Length > 1)
                failLimit = Convert.ToInt32(args[1]);

            CP cp = new CP();
            DataReader data = new DataReader(filename);

            nbTasks = data.Next();
            nbRenewable = data.Next();
            nbNonRenewable = data.Next();
            ICumulFunctionExpr[] renewables = new ICumulFunctionExpr[nbRenewable];
            IIntExpr[] nonRenewables = new IIntExpr[nbNonRenewable];
            int[] capRenewables = new int[nbRenewable];
            int[] capNonRenewables = new int[nbNonRenewable];
            for (int j = 0; j < nbRenewable; j++)
            {
                renewables[j] = cp.CumulFunctionExpr();
                capRenewables[j] = data.Next();
            }
            for (int j = 0; j < nbNonRenewable; j++)
            {
                nonRenewables[j] = cp.IntExpr();
                capNonRenewables[j] = data.Next();
            }

            IIntervalVar[] tasks = new IIntervalVar[nbTasks];
            List<IIntervalVar>[] modes = new List<IIntervalVar>[nbTasks];
            for (int i = 0; i < nbTasks; i++)
            {
                tasks[i] = cp.IntervalVar();
                modes[i] = new List<IIntervalVar>();
            }
            List<IIntExpr> ends = new List<IIntExpr>();
            for (int i = 0; i < nbTasks; i++)
            {
                IIntervalVar task = tasks[i];
                int d = data.Next();
                int nbModes = data.Next();
                int nbSucc = data.Next();
                for (int k = 0; k < nbModes; k++)
                {
                    IIntervalVar alt = cp.IntervalVar();
                    alt.SetOptional();
                    modes[i].Add(alt);
                }
                cp.Add(cp.Alternative(task, modes[i].ToArray()));
                ends.Add(cp.EndOf(task));
                for (int s = 0; s < nbSucc; s++)
                {
                    int succ = data.Next();
                    cp.Add(cp.EndBeforeStart(task, tasks[succ]));
                }
            }
            for (int i = 0; i < nbTasks; i++)
            {
                IIntervalVar task = tasks[i];
                List<IIntervalVar> imodes = modes[i];
                for (int k = 0; k < imodes.Count; k++)
                {
                    int taskId = data.Next();
                    int modeId = data.Next();
                    int d = data.Next();
                    imodes[k].SizeMin = d;
                    imodes[k].SizeMax = d;
                    int q;
                    for (int j = 0; j < nbNonRenewable; j++)
                    {
                        q = data.Next();
                        if (0 < q)
                        {
                            renewables[j].Add(cp.Pulse(imodes[k], q));
                        }
                    }
                    for (int j = 0; j < nbNonRenewable; j++)
                    {
                        q = data.Next();
                        if (0 < q)
                        {
                            nonRenewables[j] = cp.Sum(nonRenewables[j], cp.Prod(q, cp.PresenceOf(imodes[k])));
                        }
                    }
                }
            }

            for (int j = 0; j < nbRenewable; j++)
            {
                cp.Add(cp.Le(renewables[j], capRenewables[j]));
            }

            for (int j = 0; j < nbRenewable; j++)
            {
                cp.Add(cp.Le(nonRenewables[j], capNonRenewables[j]));
            }
//.........这里部分代码省略.........
开发者ID:andreasmattas,项目名称:testcode,代码行数:101,代码来源:SchedRCPSPMM.cs

示例7: Main

        public static void Main(String[] args)
        {
            String filename = "../../../../examples/data/learningeffect_default.data";
            int failLimit = 10000;
            int nbJobs, nbMachines;

            if (args.Length > 0)
                filename = args[0];
            if (args.Length > 1)
                failLimit = Convert.ToInt32(args[1]);

            CP cp = new CP();
            DataReader data = new DataReader(filename);

            nbJobs = data.Next();
            nbMachines = data.Next();
            IIntExpr[] ends = new IIntExpr[nbJobs];

            IIntervalVar[][] machines = new IIntervalVar[nbMachines][];
            int[][] sizes = new int[nbMachines][];
            for (int j = 0; j < nbMachines; j++) {
                 machines[j] = new IIntervalVar[nbJobs];
                 sizes[j] = new int[nbJobs];
            }

            for (int i = 0; i < nbJobs; i++)
            {
                IIntervalVar prec = cp.IntervalVar();
                for (int j = 0; j < nbMachines; j++)
                {
                    int m, d;
                    m = data.Next();
                    d = data.Next();
                    IIntervalVar ti = cp.IntervalVar(0, d);
                    machines[m][i] = ti;
                    sizes[m][i] = d;
                    if (j > 0)
                    {
                        cp.Add(cp.EndBeforeStart(prec, ti));
                    }
                    prec = ti;
                }
                ends[i] = cp.EndOf(prec);
            }

            for (int j = 0; j < nbMachines; j++)
            {
                double alpha = data.Next() / ((double) 100);
                IIntervalVar[] chain = new IIntervalVar[nbJobs];
                IIntervalVar prec = cp.IntervalVar();
                IIntExpr[] indices = new IIntExpr[nbJobs];
                for (int i = 0; i < nbJobs; i++) {
                    IIntervalVar syncti = cp.IntervalVar();
                    if (i > 0)
                    {
                       cp.Add(cp.EndBeforeStart(prec, syncti));
                    }
                    prec = syncti;
                    chain[i] = syncti;
                    IIntExpr index = cp.IntVar(0, nbJobs -1);
                    indices[i] = index;
                    // Learning effect captured by the decreasing function
                    // of the position (0 <= alpha <= 1).
                    // At first position, in the sequence index = 0; there is no
                    // learning effect and duration of the task is its nominal duration
                    cp.Add(cp.Eq(cp.SizeOf(machines[j][i]),
                                 cp.Floor(cp.Prod(sizes[j][i],
                                                  cp.Power(alpha, index)))));
                }
                cp.Add(cp.Isomorphism(chain, machines[j], indices, nbJobs));
                // The no-overlap is a redundant constraint in this quite
                // simple model - it is used only to provide stronger inference.
                cp.Add(cp.NoOverlap(machines[j]));
            }

            IObjective objective = cp.Minimize(cp.Max(ends));
            cp.Add(objective);

            cp.SetParameter(CP.IntParam.FailLimit, failLimit);
            Console.WriteLine("Instance \t: " + filename);
            if (cp.Solve())
            {
                Console.WriteLine("Makespan \t: " + cp.ObjValue);
            }
            else
            {
                Console.WriteLine("No solution found.");
            }
        }
开发者ID:andreasmattas,项目名称:testcode,代码行数:89,代码来源:SchedLearningEffect.cs

示例8: Main

        public static void Main(String[] args)
        {
            String filename = "../../../../examples/data/rcpsp_default.data";
            int failLimit = 10000;
            int nbTasks, nbResources;

            if (args.Length > 0)
                filename = args[0];
            if (args.Length > 1)
                failLimit = Convert.ToInt32(args[1]);

            CP cp = new CP();
            DataReader data = new DataReader(filename);
            try
            {
                nbTasks = data.Next();
                nbResources = data.Next();
                List<IIntExpr> ends = new List<IIntExpr>();
                ICumulFunctionExpr[] resources = new ICumulFunctionExpr[nbResources];
                int[] capacities = new int[nbResources];

                for (int j = 0; j < nbResources; j++)
                {
                    capacities[j] = data.Next();
                    resources[j] = cp.CumulFunctionExpr();
                }
                IIntervalVar[] tasks = new IIntervalVar[nbTasks];
                for (int i = 0; i < nbTasks; i++)
                {
                    tasks[i] = cp.IntervalVar();
                }
                for (int i = 0; i < nbTasks; i++)
                {
                    IIntervalVar task = tasks[i];
                    int d, nbSucc;
                    d = data.Next();
                    task.SizeMin = d;
                    task.SizeMax = d;
                    ends.Add(cp.EndOf(task));
                    for (int j = 0; j < nbResources; j++)
                    {
                        int q = data.Next();
                        if (q > 0)
                            resources[j].Add(cp.Pulse(task, q));
                    }
                    nbSucc = data.Next();
                    for (int s = 0; s < nbSucc; s++)
                    {
                        int succ = data.Next();
                        cp.Add(cp.EndBeforeStart(task, tasks[succ - 1]));
                    }
                }

                for (int j = 0; j < nbResources; j++)
                {
                    cp.Add(cp.Le(resources[j], capacities[j]));
                }

                IObjective objective = cp.Minimize(cp.Max(ends.ToArray()));
                cp.Add(objective);

                cp.SetParameter(CP.IntParam.FailLimit, failLimit);
                Console.WriteLine("Instance \t: " + filename);
                if (cp.Solve())
                {
                    Console.WriteLine("Makespan \t: " + cp.ObjValue);
                }
                else
                {
                    Console.WriteLine("No solution found.");
                }
            }
            catch (ILOG.Concert.Exception e)
            {
                Console.WriteLine(" ERROR: " + e);
            }
        }
开发者ID:andreasmattas,项目名称:testcode,代码行数:77,代码来源:SchedRCPSP.cs

示例9: Main

        public static void Main(String[] args)
        {
            String filename = "../../../../examples/data/jobshopflex_default.data";
            int failLimit = 10000;

            if (args.Length > 0)
                filename = args[0];
            if (args.Length > 1)
                failLimit = Convert.ToInt32(args[1]);

            CP cp = new CP();

            DataReader data = new DataReader(filename);
            int nbJobs = data.Next();
            int nbMachines = data.Next();

            List<IIntervalVar>[] machines = new List<IIntervalVar>[nbMachines];
            for (int j = 0; j < nbMachines; j++)
                machines[j] = new List<IIntervalVar>();
            List<IIntExpr> ends = new List<IIntExpr>();

            for (int i = 0; i < nbJobs; i++)
            {
                int nbOperations = data.Next();
                IIntervalVar prec = cp.IntervalVar();
                for (int j = 0; j < nbOperations; j++)
                {
                    int nbOpMachines = data.Next();
                    IIntervalVar master = cp.IntervalVar();
                    List<IIntervalVar> members = new List<IIntervalVar>();
                    for (int k = 0; k < nbOpMachines; k++)
                    {
                        int m = data.Next();
                        int d = data.Next();
                        IIntervalVar member = cp.IntervalVar(d);
                        member.SetOptional();
                        members.Add(member);
                        machines[m - 1].Add(member);
                    }
                    cp.Add(cp.Alternative(master, members.ToArray()));
                    if (j > 0)
                        cp.Add(cp.EndBeforeStart(prec, master));
                    prec = master;
                }
                ends.Add(cp.EndOf(prec));
            }

            for (int j = 0; j < nbMachines; j++)
            {
                cp.Add(cp.NoOverlap(machines[j].ToArray()));
            }

            IObjective objective = cp.Minimize(cp.Max(ends.ToArray()));
            cp.Add(objective);

            cp.SetParameter(CP.IntParam.FailLimit, failLimit);
            Console.WriteLine("Instance \t: " + filename);
            if (cp.Solve())
            {
                Console.WriteLine("Makespan \t: " + cp.ObjValue);
            }
            else
            {
                Console.WriteLine("No solution found.");
            }
        }
开发者ID:andreasmattas,项目名称:testcode,代码行数:66,代码来源:SchedJobShopFlex.cs

示例10: ReadData

    private void ReadData(String fileName)
    {
        DataReader data = new DataReader(fileName);

        numActors = data.Next();
        actorPay = new int[numActors];
        for (int a = 0; a < numActors; a++)
            actorPay[a] = data.Next();

        numScenes = data.Next();
        sceneDuration = new int[numScenes];
        for (int s = 0; s < numScenes; s++)
            sceneDuration[s] = data.Next();

        actorInScene = new IIntSet[numActors];
        for (int a = 0; a < numActors; a++)
        {
            int[] inScene = new int[numScenes];
            int nbScene = 0;
            for (int s = 0; s < numScenes; s++)
            {
                inScene[s] = data.Next();
                if (inScene[s] != 0)
                    nbScene++;
            }
            int[] playScene = new int[nbScene];
            int n = 0;
            for (int s = 0; s < numScenes; s++)
            {
                if (inScene[s] != 0)
                {
                    playScene[n] = s;
                    n++;
                }
            }
            actorInScene[a] = cp.IntSet(playScene);
        }
    }
开发者ID:andreasmattas,项目名称:testcode,代码行数:38,代码来源:Talent.cs

示例11: Main

        public static void Main(String[] args)
        {
            String filename = "../../../../examples/data/stochastic_jobshop_default.data";
              int failLimit = 250000;

              if (args.Length > 0)
            filename = args[0];
              if (args.Length > 1)
            failLimit = Convert.ToInt32(args[1]);

              // Data reading
              DataReader data = new DataReader(filename);
              int nbJobs, nbMachines, nbScenarios;
              nbJobs      = data.Next();
              nbMachines  = data.Next();
              nbScenarios = data.Next();
              int i,j,k;
              // machines[i][j]: machine used by jth operation of job i
              int[][] machines = new int[nbJobs][];
              for (i = 0; i < nbJobs; i++) {
            machines[i] = new int[nbMachines];
            for (j = 0; j < nbMachines; j++) {
              machines[i][j] = data.Next();
            }
              }
              // durations[k][i][j]: duration of jth operation of job i in scenario k
              int[][][] durations = new int[nbScenarios][][];
              for (k = 0; k < nbScenarios; k++) {
            durations[k] = new int[nbJobs][];
            for (i = 0; i < nbJobs; i++) {
              durations[k][i] = new int[nbMachines];
              for (j = 0; j < nbMachines; j++) {
            durations[k][i][j] = data.Next();
              }
            }
              }

              CP cp = new CP();
              IIntervalSequenceVar[] refSequences = new IIntervalSequenceVar[nbMachines];
              IIntExpr sumMakespan = cp.IntExpr();
              for (k = 0; k < nbScenarios; k++) {
            IIntervalSequenceVar[] scenarioSequences = new IIntervalSequenceVar[nbMachines];
            IIntExpr scenarioMakespan =
              MakeScenarioSubmodel(cp, nbJobs, nbMachines,
                               machines, durations[k],
                               scenarioSequences);
            // Objective function is aggregated
            sumMakespan = cp.Sum(sumMakespan, scenarioMakespan);
            // For each machine, a sameSequence constraint is posted across all scenarios
            if (0==k) {
              refSequences = scenarioSequences;
            } else {
              for (j = 0; j < nbMachines; j++) {
            cp.Add(cp.SameSequence(refSequences[j], scenarioSequences[j]));
              }
            }
              }
              // Objective function is expected makespan
              INumExpr expectedMakespan = cp.Quot(sumMakespan, nbScenarios);
              IObjective objective = cp.Minimize(expectedMakespan);
              cp.Add(objective);
              cp.SetParameter(CP.IntParam.FailLimit, failLimit);
              cp.SetParameter(CP.IntParam.LogPeriod, 1000000);
              Console.WriteLine("Instance \t: " + filename);
              if (cp.Solve()) {
            Console.WriteLine("Expected makespan \t: " + cp.ObjValue);
            for (j=0; j<nbMachines; ++j) {
              IIntervalSequenceVar s = refSequences[j];
              Console.Write(s.Name + ":\t");
              IIntervalVar op = cp.GetFirst(s);
              for (; !op.Equals(cp.GetLast(s)); op = cp.GetNext(s, op))
            Console.Write(op.Name+ "\t");
              Console.WriteLine(op.Name+ "\t");
            }
              } else {
            Console.WriteLine("No solution found.");
              }
        }
开发者ID:andreasmattas,项目名称:testcode,代码行数:78,代码来源:SchedStochasticJobShop.cs

示例12: Main

        static void Main(string[] args)
        {
            String filename;
            if (args.Length > 0)
                filename = args[0];
            else
                filename = "../../../../examples/data/facility.data";

            CP cp = new CP();
            int i, j;

            DataReader data = new DataReader(filename);
            int nbLocations = data.Next();
            int nbStores = data.Next();
            int[] capacity = new int[nbLocations];
            int[] fixedCost = new int[nbLocations];
            int[][] cost = new int[nbStores][];

            for (i = 0; i < nbStores; i++)
                cost[i] = new int[nbLocations];

            for (j = 0; j < nbLocations; j++)
                capacity[j] = data.Next();

            for (j = 0; j < nbLocations; j++)
                fixedCost[j] = data.Next();

            for (i = 0; i < nbStores; i++)
                for (j = 0; j < nbLocations; j++)
                    cost[i][j] = data.Next();

            IIntVar[] supplier = cp.IntVarArray(nbStores, 0, nbLocations - 1);
            IIntVar[] open = cp.IntVarArray(nbLocations, 0, 1);

            for (i = 0; i < nbStores; i++)
                cp.Add(cp.Eq(cp.Element(open, supplier[i]), 1));

            for (j = 0; j < nbLocations; j++)
                cp.Add(cp.Le(cp.Count(supplier, j), capacity[j]));

            IIntExpr obj = cp.ScalProd(open, fixedCost);
            for (i = 0; i < nbStores; i++)
                obj = cp.Sum(obj, cp.Element(cost[i], supplier[i]));

            cp.Add(cp.Minimize(obj));

            cp.Solve();

            Console.WriteLine();
            Console.WriteLine("Optimal value: " + cp.GetValue(obj));
            for (j = 0; j < nbLocations; j++)
            {
                if (cp.GetValue(open[j]) == 1)
                {
                    Console.Write("Facility " + j + " is open, it serves stores ");
                    for (i = 0; i < nbStores; i++)
                    {
                        if (cp.GetValue(supplier[i]) == j)
                            Console.Write(i + " ");
                    }
                    Console.WriteLine();
                }
            }
        }
开发者ID:andreasmattas,项目名称:testcode,代码行数:64,代码来源:Facility.cs

示例13: Main

        static void Main(string[] args)
        {
            String filename;
            if (args.Length > 0)
                filename = args[0];
            else
                filename = "../../../../examples/data/facility.data";

            CP cp = new CP();
            int i, j;

            DataReader data = new DataReader(filename);
            int nbLocations = data.Next();
            int nbStores = data.Next();
            int[] capacity = new int[nbLocations];
            int[] fixedCost = new int[nbLocations];
            int[][] cost = new int[nbStores][];

            for (i = 0; i < nbStores; i++)
                cost[i] = new int[nbLocations];

            for (j = 0; j < nbLocations; j++)
                capacity[j] = data.Next();

            for (j = 0; j < nbLocations; j++)
                fixedCost[j] = data.Next();

            for (i = 0; i < nbStores; i++)
                for (j = 0; j < nbLocations; j++)
                    cost[i][j] = data.Next();

            IIntVar[] supplier = cp.IntVarArray(nbStores, 0, nbLocations - 1);
            IIntVar[] open = cp.IntVarArray(nbLocations, 0, 1);

            for (i = 0; i < nbStores; i++)
                cp.Add(cp.Eq(cp.Element(open, supplier[i]), 1));

            for (j = 0; j < nbLocations; j++)
                cp.Add(cp.Le(cp.Count(supplier, j), capacity[j]));

            IIntExpr obj = cp.ScalProd(open, fixedCost);
            for (i = 0; i < nbStores; i++)
                obj = cp.Sum(obj, cp.Element(cost[i], supplier[i]));

            cp.Add(cp.Minimize(obj));

            cp.SetParameter(CP.IntParam.Workers, 1);
            cp.SetParameter(CP.IntParam.SearchType, CP.ParameterValues.DepthFirst);
            cp.SetParameter(CP.IntParam.LogPeriod, 1);
            cp.SetParameter(CP.IntParam.LogSearchTags, CP.ParameterValues.On);

            cp.ClearExplanations();
            cp.ExplainFailure(15);
            cp.ExplainFailure(20);
            int[] failureArray = { 3, 10, 11, 12 };
            cp.ExplainFailure(failureArray);

            cp.Solve();

            Console.WriteLine();
            Console.WriteLine("Optimal value: " + cp.GetValue(obj));
            for (j = 0; j < nbLocations; j++)
            {
                if (cp.GetValue(open[j]) == 1)
                {
                    Console.Write("Facility " + j + " is open, it serves stores ");
                    for (i = 0; i < nbStores; i++)
                    {
                        if (cp.GetValue(supplier[i]) == j)
                            Console.Write(i + " ");
                    }
                    Console.WriteLine();
                }
            }
        }
开发者ID:andreasmattas,项目名称:testcode,代码行数:75,代码来源:FacilityExplanations.cs


注:本文中的DataReader.Next方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。