简体   繁体   English

在Microsoft Solver Foundation中使用Math.Pow

[英]Using Math.Pow with Microsoft Solver Foundation

I'm working on a simple solver exercise and I'm struggling to use Math.Pow . 我正在做一个简单的求解器练习,并且正在努力使用Math.Pow

Why I can't use Math.Pow(error1, 2) in the following lines? 为什么在以下几行中无法使用Math.Pow(error1, 2)

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

It gives an error: 它给出了一个错误:

Error 3 Argument 1: cannot convert from 'Microsoft.SolverFoundation.Services.Term' to 'double' 错误3参数1:无法从'Microsoft.SolverFoundation.Services.Term'转换为'double'

The relevant code: 相关代码:

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();
}  

You can use Model.Power method. 您可以使用Model.Power方法。 Math.Pow is for doubles only. Math.Pow仅适用于双打。

error1 = Model.Power(error1, 2);
error2 = Model.Power(error2, 2);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM