コード例 #1
0
 public void CalculatePosition()
 {
     results = new List <List <Vector3> >();
     results.Clear();
     for (int i = 0; i < optimizers.Length; i++)
     {
         GameObject          go  = optimizers [i];
         IOptimizerComponent opt = go.GetComponent <IOptimizerComponent> ();
         if (opt != null)
         {
             this.CalculatePosition(opt);
         }
     }
 }
コード例 #2
0
        protected void CalculatePosition(IOptimizerComponent opt)
        {
            List <Vector3>             list = new List <Vector3> ();
            Dictionary <string, float> para = new Dictionary <string, float> ();

            para ["x"] = initialPosition.x;
            para ["y"] = initialPosition.y;
            Dictionary <string, float> prev = new Dictionary <string, float> ();

            prev ["x"] = initialPosition.x;
            prev ["y"] = initialPosition.y;
            Dictionary <string, float> grad = new Dictionary <string, float> ();

            grad ["x"] = graphFunctionComponent.Dx(para);
            grad ["y"] = graphFunctionComponent.Dy(para);

            list.Add(new Vector3(para["x"], para["y"], graphFunctionComponent.Calculate(para)));

            opt.Initialize();
            for (int i = 0; i < maxIteration; i++)
            {
                float pz = graphFunctionComponent.Calculate(prev);
                para = opt.Calculate(prev, grad);
                float nz = graphFunctionComponent.Calculate(para);
                list.Add(new Vector3(para["x"], para["y"], nz));
                float dz = (nz - pz);
                grad ["x"] = graphFunctionComponent.Dx(para);
                grad ["y"] = graphFunctionComponent.Dy(para);

                prev ["x"] = para ["x"];
                prev ["y"] = para ["y"];
            }

            results.Add(list);
            Debug.Log("Log1");
        }