void CLinprogNewDlg::OnBnClickedButton1() //Button1为在对话框上新建立的一个按钮
{
// TODO: 在此添加控件通知处理程序代码
double b[3]={20,42,30};//要传入的参数
double X[3];//要传出的参数
mwArray mwB(1, 3, mxDOUBLE_CLASS);
mwArray mwX(1, 3, mxDOUBLE_CLASS);
mwB.SetData(b, 3);
MyLinprog(1,mwX,mwB);
mwX.GetData(X,3);
CString str;
str.Format("%.0f",X[1]);//做实验,只求一个数值
MessageBox(str,"求和结果");
}
matlab m函数代码如下:
function [x] = MyLinprog(B)
f =[-5;-4;-6];
A = [1 -1 1;3 2 4;3 2 0];
b = B;
lb = zeros(3,1);
[x] = linprog(f,A,b,[],[],lb);
end
为matlab help文件的一个例子。
目标函数 f(x) = –5x1 – 4x2 –6x3,
约束条件 x1 – x2 + x3 ≤ 20
3x1 + 2x2 + 4x3 ≤ 42
3x1 + 2x2 ≤ 30
0 ≤ x1, 0 ≤ x2, 0 ≤ x3.
包含文件都已设置好。
现在的问题运行程序,当第一次单击Button1按钮时,出现正确结果。证明设置正确。但是当第二次单击Button1按钮时,程序出现错误,弹出错误提示对话,显示“LinprogNew.exe 中的 0x7c812afb 处未处理的异常: Microsoft C++ exception: mwException @ 0x0012f3fc 。”。在网上搜索,有大侠说,指针越界或者数组溢出。还请过来人给指点一二。晚生感激不尽
4 个解决方案
#1
自己顶一下,希望大侠不吝赐教。
#2
自己再顶一下。希望大家帮帮忙。
#3
楼主最后解决问题了么,能否告诉我们呢。
#4
楼主怎么解决的,我也碰见这个问题,急呀。
#1
自己顶一下,希望大侠不吝赐教。
#2
自己再顶一下。希望大家帮帮忙。
#3
楼主最后解决问题了么,能否告诉我们呢。
#4
楼主怎么解决的,我也碰见这个问题,急呀。