2011-09-30 40 views
7

Tôi đang cố giải quyết một số phương trình đơn giản trong .NET. Tôi đã xem qua số Math.NET và đánh giá nó. Các phương pháp Solver() dường như là những gì tôi cần nhưng tôi không thể tìm ra cách sử dụng các điều kiện phụ với phương pháp này.Giải phương trình trong .NET

Để minh họa cho vấn đề của tôi, tôi sẽ cung cấp cho bạn một mẫu:

Given: 
0 <= a_i <= 100 
0 <= b <= 100 
0 <= c 
a_i, b and c are given 

x_1, ..., x_n should be optimized 

f(x) = x_1*a_1 + x_2*a_2 + ... + x_n*a_n = b 

Side conditions: 
g(x) = x_1 + x_2 + ... + x_n = c 
0 <= x_i 

Có thể để giải quyết một vấn đề như vậy bằng cách sử dụng phương pháp giải quyết hoặc bất kỳ thành phần khác của Math.NET hoặc bạn có biết bất kỳ (miễn phí cho sử dụng thương mại) Thư viện .NET có thể được sử dụng để giải quyết vấn đề này? Tôi không muốn viết một thuật toán cho một vấn đề phổ biến như vậy.

Trân trọng & cảm ơn trước

+0

bản sao có thể có của [Thư viện tối ưu hóa miễn phí trong C#] (http://stackoverflow.com/questions/1211201/free-optimization-library-in-c) – duffymo

Trả lời

1

Bạn cần trình tối ưu hóa có các ràng buộc như phương pháp simplex hoặc tối ưu hóa phi tuyến tính Marquardt.

+0

vấn đề trông khá tuyến tính với tôi;) - ngay từ cuốn sách, Simplex hoặc Điểm nội thất đều tốt cho điều này - nhưng đây thực sự là một câu trả lời? – Carsten

+0

Bạn không thể tìm thấy những gì bạn đang tìm kiếm trừ khi bạn biết tên của nó. – duffymo

+0

Cuối cùng tôi đã quyết định chuyển sang Simplex của tôi Tôi đã viết một lần tại trường đại học cho NET, hoạt động tốt :) – Jay

2

ALGLIB là rất tốt cho những công việc này. Xem trang của họ trên constrained optimization.

EDIT: Nó có cả giấy phép miễn phí (GPL) và giấy phép thương mại bắt đầu từ 370 đô la.

+0

cảm ơn - đã không kiểm tra điều này một thời gian - + 1 cho lời nhắc;) – Carsten

2

IMHO Microsoft Solver Foundation là cách để thực hiện việc này. Phiên bản Express là AFAIK miễn phí và đủ mạnh cho hầu hết các ứng dụng nhỏ hơn.

Như tôi thấy bây giờ Phiên bản Express chỉ thụt lề để thăm dò - nhưng hiện tại có (Standard? Lib) cho người đăng ký MSDN nên tôi không xóa bài đăng này, vì bạn có thể đăng ký MSDN.

Các vấn đề liên quan