±±¾©Ê¯ÓÍ»¯¹¤Ñ§Ôº2026ÄêÑо¿ÉúÕÐÉú½ÓÊÕµ÷¼Á¹«¸æ
²é¿´: 1966  |  »Ø¸´: 9
µ±Ç°Ö»ÏÔʾÂú×ãÖ¸¶¨Ìõ¼þµÄ»ØÌû£¬µã»÷ÕâÀï²é¿´±¾»°ÌâµÄËùÓлØÌû

swustxxl

½ð³æ (ÕýʽдÊÖ)

[½»Á÷] ¡¾ÇóÖú¡¿VS2005ÊýÖµ¼ÆËã³ÌÐòµ÷ÊÔ¡¾¼±Ç󣡣¡£¡£¡¼Ó½ð±Ò¡¿

Êý¾ÝÄâºÏ³ÌÐò£¬ÔËÓÃÏֳɵĶ¯Ì¬Á´½Ó¿âLBFGS·¨£¨´øÔ¼ÊøµÄ£©£¬²Ù×÷ƽ̨ÊÇVS2005£¬½«ÆäÒýÈëMFCµ¥Îĵµ´íÎóµü³ö

ÎÒ½«Ëã·¨³ÌÐò±àÈëÁËCLoginDlg.CPPÖУ¬µã»÷button1£¬³ÌÐò¹Ø±Õ¶Ô»°¿òµ¯³öµ¥Îĵµ½çÃæ£¬ºǫ́ͬʱÍê³ÉÔËËã¡£

void CLoginDlg::OnBnClickedButton1()
{
        // TODO: ÔÚ´ËÌí¼Ó¿Ø¼þ֪ͨ´¦Àí³ÌÐò´úÂë
        _tmain();
        CDialog::OnOK();

}
ÒÔÉÏÊÇCbuttonµÄ´úÂ룬±àÒëÊ×Ïȱ¨´íµÄÊÇ_tmain()λÖã¬ËµµÄÊDz»½ÓÊÜ0¸ö²ÎÊý£¬Õâ¸ö¹«¹²º¯ÊýµÄÔ­ÐÍΪ
int _tmain(int argc, _TCHAR* argv[])
{
     .........
     .........
     return 0;
}
ÎҸɴàÖ±½Ó¶ÔÔ­º¯Êý×öÁ˸͝£¬ÈçÏ£º
int _tmain()
{
     .........
     .........
     return 0;
}
ÔÚ½â¾ö·½°¸ÖÐÓÖÌí¼ÓÁËlbfgsb.libÎļþ£¬ÓÚÊDZàÒë¡¢Á´½Ó¶¼¿Éͨ¹ý£¬ÉõÖÁ¿ÉÒÔÔËÐУ¬µ«µã»÷button1£¬³ÌÐò¾Í»á±¨´í£¬µ¯³öÈç϶Ի°¿ò£º




Ëã·¨µÄ×î³õ³ÌÐòÊÇÕýÈ·µÄ£¬¿É±àÒë¿ÉÁ´½Ó¿ÉÔËÐУ¬½á¹ûÕýÈ·£»ÎÒ¿ÉÒÔн¨Ò»¸öWIN32¿ØÖÆÌ¨Ó¦ÓóÌÐòÖØÏÖËã·¨³ÌÐòµÄЧ¹û¡£Ö¤Ã÷Ëã·¨³ÌÐò±¾ÉíÎÞÎó£¬Ó¦¸ÃÊǶ¯Ì¬Á´½Ó¿âÔÚ¼ÓÔØµ½MFC³ÌÐòʱ³öÏÖÁË´íÎó¡£
Ï£ÍûÓиßÊÖÄÜÖ¸µãÒ»ÏÂ~~²»Ê¤¸Ð¼¤

ÒÔÏÂÊÇÎÒµÄMFC³ÌÐò¹ØÓÚÒýÈëËã·¨¶¯Ì¬Á´½Ó¿âºÍÖ´ÐÐÔËËãµÄƬ¶Î£¬×îºó¸½ÉÏÁËWIN32Ëã·¨³ÌÐòºÍÎÒ×Ô¼ºµÄMFC³ÌÐò£º

// LoginDlg.cpp : ʵÏÖÎļþ
//

#include "stdafx.h"
#include "xxl_try2.h"
#include "LoginDlg.h"

//#include "stdafx.h"
#include "iostream"
#include "memory.h"
#include "malloc.h"
#include "windows.h"
#include "math.h"

using namespace std;

// CLoginDlg ¶Ô»°¿ò

IMPLEMENT_DYNAMIC(CLoginDlg, CDialog)

CLoginDlg::CLoginDlg(CWnd* pParent /*=NULL*/)
        : CDialog(CLoginDlg::IDD, pParent)
{

}

CLoginDlg::~CLoginDlg()
{
}

void CLoginDlg:oDataExchange(CDataExchange* pDX)
{
        CDialog:oDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CLoginDlg, CDialog)
        ON_BN_CLICKED(IDC_BUTTON1, &CLoginDlg::OnBnClickedButton1)
END_MESSAGE_MAP()

// CLoginDlg ÏûÏ¢´¦Àí³ÌÐò
// LBFGS.cpp : ¶¨Òå¿ØÖÆÌ¨Ó¦ÓóÌÐòµÄÈë¿Úµã¡£
//¼ÆËãÌݶȱ£´æÔÚgÖУ¬¼ÆËãÄ¿±êº¯ÊýÖµ±£´æÔÚfÖÐ
//nÊDzÎÊý¸öÊý£¬xÊDzÎÊýÏòÁ¿
void fcn2(int n,double *x, double*t, double *y,double &f, double *g ){
        f=0;
        g[0]=0;
        g[1]=0;
        g[2]=0;
        g[3]=0;
        g[4]=0;
        g[5]=0;
        for(int k=0;k         {
                double tmp=y[k]-(x[0]*t[k]*exp(x[1]*t[k])+x[2]*t[k]*exp(x[3]*t[k])+x[4]*t[k]*exp(x[5]*t[k]));
                f+=tmp*tmp;
                g[0]+=-2*tmp*t[k]*exp(x[1]*t[k]);
                g[1]+=-2*tmp*t[k]*x[0]*exp(x[1]*t[k])*t[k];
                g[2]+=-2*tmp*t[k]*exp(x[3]*t[k]);
                g[3]+=-2*tmp*t[k]*x[2]*exp(x[3]*t[k])*t[k];
                g[4]+=-2*tmp*t[k]*exp(x[5]*t[k]);
                g[5]+=-2*tmp*t[k]*x[4]*exp(x[5]*t[k])*t[k];
        }

        return;
}

extern "C" void __declspec(dllimport)  __stdcall lbfgsb(int n,int m,double *x, double *l, double *u, int *nbd, double f, double *g, double factr, double pgtol, double *wa, int *iwa,char *task, int iprint,char *csave,bool *lsave,int *isave, double *dsave);

int main()//int argc, _TCHAR* argv[])
{
        const char dllPath[] = "lbfgsb.dll";

        //¼ÓÔØ¶¯Ì¬¿âÎļþ
        HINSTANCE hLibrary = LoadLibraryA(dllPath);
        if(hLibrary == NULL){
                int error =GetLastError ();
                cout<<"Error of LoadLibrary = "<
                cout<<"Can't find the dll file."<                 FreeLibrary(hLibrary);
                return -1;
        }

        /* £¨Èç¹û»ñµÃÕâ¸ö³ÌÐòµÄ¾ä±ú£©»ñµÃÕýÔÚÔËÐгÌÐòµÄ·¾¶ºÍÎļþÃû*/
        bool exePathOut=true;

        if(exePathOut){
                char exePath[1000] = "\0";
                GetModuleFileNameA(hLibrary,exePath,sizeof(exePath));
                cout<         }

        bool *lsave;
        char *task,*csave,*str;
        int n, m,iprint,*nbd,*iwa, *isave;
        double f, factr, pgtol,*x,*l,*u,*g,*wa,*dsave;
        double t[7]={1,1.5,2,2.5,3,3.5,5};
        double y[7]={10.78,80.35,58.81,43.04,23.05,12.35,6.61};

        iprint = 1;
        factr=1.0E+7;       
        pgtol=1.0E-5;
        f=0.0;

        n=6;
        m=10;

        nbd=new int[n];
        iwa=new int[3*n];
        x=new double[n];
        l=new double[n];//ÉèÖñäÁ¿ÏÂÏÞ
        u=new double[n];//ÉèÖñäÁ¿ÉÏÏÞ
        g=new double[n];
        wa=new double[2*m*n+4*n+12*m*m+12*m];
        dsave=new double[29];
        isave=new int[44];
        str=new char[60];
        csave=new char[60];
        task=new char[60];
        lsave=new bool[16];


        for(int i=0;i         {
                nbd=0;
                l=1.0;
                u=10;
        }

        for(int i=1;i         {
                nbd=0;
                l=1.0;
                u=10;
        }

        for(int i=0;i         {
                x=0.0E0;
        }

        sprintf(task,"%s","START";

        while(1){
                lbfgsb(n,m,x,l,u,nbd,f,g,factr,pgtol,wa,iwa,task,iprint,csave,lsave,isave,dsave);
                strncpy(str,task,2);
                if (strncmp(str,"FG",2)==0)
                {
                        fcn2(7, x,t,y,f, g );
                        continue;
                }
                strncpy(str,task,5);
                if(strncmp(str,"NEW_X",5)!=0)
                {
                        for(int i=0;i                         {
                                cout<<"x["<<                         }
                        break;
                }
        }

        delete[] nbd;
        delete[] iwa;
        delete[] x;
        delete[] l;
        delete[] u;
        delete[] g;
        delete[] wa;

        delete[] lsave;
        delete[] task;
        delete[] csave;
        delete[] str;
        delete[] isave;
        delete[] dsave;

        system("pause";
        return 0;
}

void CLoginDlg::OnBnClickedButton1()
{
        // TODO: ÔÚ´ËÌí¼Ó¿Ø¼þ֪ͨ´¦Àí³ÌÐò´úÂë
        main();
        CDialog::OnOK();

}


ÕâÊdzÌÐò
http://good.gd/767141.htm
ÕâÊÇËã·¨µÄÕýÈ·³ÌÐò
http://good.gd/767144.htm

[ Last edited by swustxxl on 2010-10-20 at 10:47 ]
»Ø¸´´ËÂ¥

» ²ÂÄãϲ»¶

» ±¾Ö÷ÌâÏà¹Ø¼ÛÖµÌùÍÆ¼ö£¬¶ÔÄúͬÑùÓаïÖú:

ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

swustxxl

½ð³æ (ÕýʽдÊÖ)

ajian04:»¶Ó­½»Á÷~ 2010-10-18 13:23:48
ÒýÓûØÌû:
Originally posted by Ïë·ÉµÄÖí at 2010-10-17 14:25:12:
ÎÒÖªµÀÒ»¸öÊýÖµ¼ÆËãÀà¿â¡¶VC++ÊýÖµ¼ÆËãÀà¿â¡·²»´í£¡Äã¿ÉÒÔÊÔÊÔ£¡»¹ÓоÍÊÇÄã¿ÉÒÔÁ¬½ÓMatlab£¡

ÎÒÊDZàдӦÓóÌÐò¸øÓû§Ê¹Óõ쬱¾Éí³ÌÐòÖ»Óм¸Õ×£¬²»¿ÉÄÜ»¹ÈÃÓû§¶îÍâ×°¸ö¼¸°ÙÕ×µÄMATLABÖ§³Ö°É¡£ÄãÍÆ¼öµÄÊéÎÒ»áÈ¥²éÔÄһϣ¬¶àлÁË
7Â¥2010-10-17 18:41:20
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
²é¿´È«²¿ 10 ¸ö»Ø´ð

magic7004

½ð³æ (Ö°Òµ×÷¼Ò)

¡ï
ÓàÔó³É(½ð±Ò+1):лл²ÎÓëÓ¦Öú£¡ 2010-10-18 10:32:55
Ö±½Óµ÷ÓÃDLLÖеĺ¯Êý£¬ÐèÒªDLLµÄÍ·Îļþ(.h)ºÍ¿âÎļþ(.lib)
Á÷Ã¥²»¿ÉÅ£¬¿ÉŵÄÊÇÁ÷Ã¥ÓÐÎÄ»¯£¬ÓÐÎÄ»¯ÓÖBHµÄÁ÷Ã¥ÎÞµÐ~~£¡
3Â¥2010-10-17 09:27:00
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

magic7004

½ð³æ (Ö°Òµ×÷¼Ò)

¡ï
ÓàÔó³É(½ð±Ò+1):лл²ÎÓëÓ¦Öú£¡ 2010-10-18 10:33:02
ÁíÍ⣬C++±àÒëÆ÷»á¶Ôº¯Êý¸ÄÃûµÄ¡£Â¥Ö÷¿ÉÒÔÓÃloadlibraryºÍgetprocaddressÀ´µ÷ÓÃDLLÖеĺ¯Êý¡£
Á÷Ã¥²»¿ÉÅ£¬¿ÉŵÄÊÇÁ÷Ã¥ÓÐÎÄ»¯£¬ÓÐÎÄ»¯ÓÖBHµÄÁ÷Ã¥ÎÞµÐ~~£¡
4Â¥2010-10-17 09:29:21
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

Ïë·ÉµÄÖí

ľ³æ (ÕýʽдÊÖ)

¡ï
ÓàÔó³É(½ð±Ò+1):лл²ÎÓëÓ¦Öú£¡ 2010-10-18 10:33:11
ÎÒÖªµÀÒ»¸öÊýÖµ¼ÆËãÀà¿â¡¶VC++ÊýÖµ¼ÆËãÀà¿â¡·²»´í£¡Äã¿ÉÒÔÊÔÊÔ£¡»¹ÓоÍÊÇÄã¿ÉÒÔÁ¬½ÓMatlab£¡
5Â¥2010-10-17 14:25:12
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[¿¼ÑÐ] 329Çóµ÷¼Á +17 miaodesi 2026-04-02 20/1000 2026-04-05 18:33 by À¶ÔÆË¼Óê
[¿¼ÑÐ] 313Çóµ÷¼Á +5 º£ÈÕº£ÈÕ 2026-04-04 7/350 2026-04-05 13:58 by imissbao
[¿¼ÑÐ] Çóµ÷¼Á +11 111623 2026-04-04 11/550 2026-04-05 11:38 by lqwchd
[¿¼ÑÐ] Ò»Ö¾Ô¸½­ÄÏ´óѧ085501»úе¹¤³Ìר˶326·Ö£¬±¾¿Æ¼Ñľ˹´óѧ +5 ¹ËÈô¸¡Éú 2026-04-03 9/450 2026-04-05 09:57 by 1753564080
[¿¼ÑÐ] 309·Ö085801Çóµ÷¼Á +11 MY_angel 2026-03-31 11/550 2026-04-04 19:11 by À¶ÔÆË¼Óê
[¿¼ÑÐ] 348·Ö»·¾³¹¤³Ì¡¤µ÷¼Á +10 ÎâÑå׿24k 2026-04-03 11/550 2026-04-04 14:19 by Î޼ʵIJÝÔ­
[¿¼ÑÐ] ±¾¿Æ211£¬×¨Òµ085404£¬293·ÖÇëÇóµ÷¼Á +5 Á«²Ë¾ÍÊÇź°É 2026-04-04 5/250 2026-04-04 14:08 by ÕâÊÇÒ»¸öÎÞÁĵÄê
[¿¼ÑÐ] 11408£¬284·Ö£¬¶þÕ½Õæ³ÏÇóµ÷¼Á +4 12.27 2026-04-02 4/200 2026-04-03 14:14 by dxiaoxin
[¿¼ÑÐ] Ò»Ö¾Ô¸»ª¶«Àí¹¤´óѧ£¬080500ѧ˶£¬317·Ö£¬Çóµ÷¼Á +13 s1145 2026-03-31 15/750 2026-04-03 11:44 by msi123
[¿¼ÑÐ] 0856²ÄÁÏÓ뻯¹¤µ÷¼Á£¬339 +14 10213207 2026-03-31 14/700 2026-04-02 21:01 by 1104338198
[¿¼ÑÐ] ²ÄÁÏר˶322·Ö +11 ¹þ¹þ¹þºðºðºð¹þ 2026-04-01 11/550 2026-04-02 10:52 by lnilvy
[¿¼ÑÐ] 0805Çóµ÷¼Á +8 ÊÇË®·Ö 2026-03-31 8/400 2026-04-02 10:46 by guanxin1001
[¿¼ÑÐ] ²ÄÁϵ÷¼Á +12 Ò»ÑùYWY 2026-04-01 12/600 2026-04-02 09:15 by olim
[¿¼ÑÐ] 302Çóµ÷¼ÁÒ»Ö¾Ô¸±±º½070300£¬±¾¿ÆÖ£´ó»¯Ñ§ +8 Ê¥ÈÕ¶úÂüÌõ 2026-04-01 11/550 2026-04-02 07:40 by chemdavid
[¿¼ÑÐ] ²ÄÁϵ÷¼Á +12 Ò»ÑùYWY 2026-04-01 12/600 2026-04-02 00:21 by °ÙÃë¹âÄê
[¿¼ÑÐ] 292Çóµ÷¼Á +17 ľ³æer12138 2026-04-01 17/850 2026-04-01 21:37 by Æß¶È²»ÐÅÈÎ
[¿¼ÑÐ] 311Çóµ÷¼Á +10 ÀîÜÆÐÂ1 2026-03-31 10/500 2026-04-01 14:38 by chenqifeng666
[¿¼ÑÐ] 318Çóµ÷¼Á +10 ³Â³¿79 2026-03-30 10/500 2026-03-31 17:37 by 544594351
[¿¼ÑÐ] 080500-315·Ö¸´ÊÔµ÷¼Á +9 Éϰ¶3821 2026-03-31 9/450 2026-03-31 17:29 by ÌÆãå¶ù
[¿¼ÑÐ] ¼ª´óÉúÎïѧ326·ÖÇóµ÷¼Á +3 sunnyupup 2026-03-31 3/150 2026-03-31 09:28 by longlotian
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û