1

상당히 복잡한 상황을 해결하기 위해 Microsoft Solver Foundation 2를 사용하려고합니다. 그러나 가능한 한 모델을 덤프 할 때도 UnsupportedModelException이 발생합니다.
누구나 내가 뭘 잘못하고 있는지 아이디어가 있습니까?
다음은 문제가되는 동작을 재현하는 데 필요한 최소한의 예제입니다. Microsoft Solver Foundation 제약

var ctx = SolverContext.GetContext(); 
var model = ctx.CreateModel(); 
var someConstant = 1337.0; 

var decisionA = new Decision(Domain.Real, "decisionA"); 
var decisionB = new Decision(Domain.Real, "decisionB"); 
var decisionC = new Decision(Domain.Real, "decisionC"); 

model.AddConstraint("ca", decisionA <= someConstant); 
model.AddConstraint("cb", decisionB <= someConstant); 
model.AddConstraint("cc", decisionC <= someConstant); 

model.AddConstraint("mainConstraint", Model.Equal(Model.Sum(Model.Abs(decisionA), decisionB, decisionC), someConstant)) 

model.AddDecisions(decisionA, decisionB, decisionC); 

model.AddGoal("myComplicatedGoal", GoalKind.Minimize, decisionC); 

var solution = ctx.Solve(); 

solution.GetReport().WriteTo(Console.Out); 

Console.ReadKey(); 

내 실제 모델하는 의 형태로 몇 가지 제약 조건이 완료되면이 포함되어야 것을 고려하시기 바랍니다 A + B < = someValue와, 내가 궁극적으로 할 기꺼이 어떤 경우가되지 않도록 지원, 미리 알려 주시기 바랍니다. 그렇다면 .NET에서 사용할 수있는 친숙한 인터페이스 (잘 알려진 상업용 패키지 만 사용하십시오.)로 다른 솔버에 대한 제안을 보내 주시면 감사하겠습니다. 사전에

덕분에

답변

1

잡아 소스를 시도합니다 (여러 Model.Abs있다). 그것이 죽으면 뭔가 잘못된 설치와 가장 짧은 해결책은 제거, 재부팅 및 다시 설치하는 것입니다.

http://geekswithblogs.net/cyoung/archive/2009/02/25/129672.aspx

OK, 지금 당신이 차 제약을 언급 한 이상 익스프레스 버전은 확실히 그들을 지원 dosn't : 버전 수도

http://code.msdn.microsoft.com/solverfoundation/Thread/View.aspx?ThreadId=2756

기업을하지만 $$$$ 비용 - 경우 당신은 "Academic Enterprise"를 가지고 있습니다. 아직 Gurobi 솔버가 없기 때문에 돈을 버는 것을 생각하기 전에 특정 질문 (http://gurobi.com/)을 보내고 그것을 처리 할 것이라고 말한 경우에 대비하여 몇 가지 보증을 요청하는 것이 좋을 것입니다.

+0

이 코드는 올바르게 작동하는 것 같지만 불행히도이 문제가 완전히 해결되지 않습니다. 내가 겪고있는 문제는 모델링 단계에있는 것 같아요. SFS가 공식적으로 제 문제를 해결할 수 없거나 올바른 방법으로 사용하지 않고있는 것처럼 보입니다. 달려 드는 문제는 2 차 제약이 필요합니다. 이것은 이미 4 차 방정식 시스템에서 오는 문제의 분해 된 버전입니다. 2 차 제약 또는 모델링 트릭을 사용할 방법이 필요합니다. – em70

1

난 당신이 제약에 사용하기 전에 모델에 결정을 추가 할 필요가 있다고 생각합니다. 당신은 당신의 코드가 나를 위해 작동하는 결정을 만든 후이 줄을 추가하는 경우이 링크에서

model.AddDecisions(decisionA, decisionB, decisionC); 

나단

+0

내 잘못, 당신은 그렇습니다.하지만 곱셈/지수/결정의 절대 값과 관련된 제약 조건을 입력하자마자 예외가 다시 발생합니다. 모델을 재현하려면 Model.Sum 호출에서 decisionA를 Model.Abs (decisionA)로 바꿀 수 있습니다. – em70