Использование Math.Pow с Microsoft Solver Foundation

Я работаю над простым решателем и изо всех сил пытаюсь использовать Math.Pow.

Почему я не могу использовать Math.Pow(error1, 2) в следующих строках?

error1 = error1 * error1;
error2 = error2 * error2;

Выдает ошибку:

Ошибка 3 Аргумент 1: невозможно преобразовать Microsoft.SolverFoundation.Services.Term в double

Соответствующий код:

using Microsoft.SolverFoundation.Common;
using Microsoft.SolverFoundation.Services;

... 

private void Form1_Load(object sender, EventArgs e)
{    
    var solver = SolverContext.GetContext();
    var model = solver.CreateModel();
    Decision R = new Decision(Domain.Real, "R");
    Decision T = new Decision(Domain.Real, "T");
    model.AddDecisions(R);
    model.AddDecisions(T);

    var xr1=5;
    var xr2=4;
    var xp1 = 6;
    var xp2=8;
    var error1 = xr1 * R + T - xp1;
    var error2 = xr2 * R + T - xp2;
    error1 = error1 * error1;
    error2 = error2 * error2;
    model.AddGoal("error",GoalKind.Minimize,error1+error2);

    var solution = solver.Solve();
    var valordeR = R.GetDouble();
    var valordeT = T.GetDouble();
}  

person Matimont    schedule 23.11.2013    source источник
comment
Поскольку метод Math.Pow не имеет перегрузки принимает Decision в качестве параметра?   -  person Soner Gönül    schedule 23.11.2013
comment
Я только что отредактировал свой пост, ошибка: Аргумент 1: невозможно преобразовать из Microsoft.SolverFoundation.Services.Term в double   -  person Matimont    schedule 23.11.2013


Ответы (1)


Вы можете использовать Model.Power метод. Math.Pow только для парных.

error1 = Model.Power(error1, 2);
error2 = Model.Power(error2, 2);
person Kamil Budziewski    schedule 23.11.2013