092惩罚函数的乘子法Word下载.docx

上传人:b****5 文档编号:19673167 上传时间:2023-01-08 格式:DOCX 页数:13 大小:206.70KB
下载 相关 举报
092惩罚函数的乘子法Word下载.docx_第1页
第1页 / 共13页
092惩罚函数的乘子法Word下载.docx_第2页
第2页 / 共13页
092惩罚函数的乘子法Word下载.docx_第3页
第3页 / 共13页
092惩罚函数的乘子法Word下载.docx_第4页
第4页 / 共13页
092惩罚函数的乘子法Word下载.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

092惩罚函数的乘子法Word下载.docx

《092惩罚函数的乘子法Word下载.docx》由会员分享,可在线阅读,更多相关《092惩罚函数的乘子法Word下载.docx(13页珍藏版)》请在冰豆网上搜索。

092惩罚函数的乘子法Word下载.docx

故当

时,有

否则,由

可推得

综合起来。

,有

既有

(1)

因此,当

时,我们有

而当

综合上述两种情形,将结果代回到

中去得

于是,将式

(1)带入乘子迭代公式

回到一般约束优化问题,此时,增广拉格朗日函数为

乘子迭代的公式为

则终止准则为

二、算法框图

三、算法程序

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

importjava.text.NumberFormat;

publicclassShuextendsFrameimplementsActionListener

{

Labellabelx12,labelx1,labelx22,labelx2,labelx1x2,labela,labelb,labelc,label11,label12,labelnum,labelnumber;

TextFieldtextx12,textx1,textx22,textx2,textc1,textx1x2,texta,textb,textc,textnum,textnumber;

Buttonbutton;

TextAreatextarea;

//10

doublex1,x12,x22,x2,x1x2,c1,a,b,c,num,number;

doublea1x1,a1x2,a1c,a2x1,a2x2,a2c;

intn=1;

doubleans[],answ[];

publicShu(){

ans=newdouble[20];

answ=newdouble[20];

labelx12=newLabel("

x1^2+"

);

labelx1=newLabel("

x1+"

labelx22=newLabel("

x2^2+"

//20

labelx2=newLabel("

x2+"

labelx1x2=newLabel("

x1*x2+"

labela=newLabel("

labelb=newLabel("

labelc=newLabel("

=0"

label11=newLabel("

min"

label12=newLabel("

s.t."

textx12=newTextField(3);

textx1=newTextField(3);

textx22=newTextField(3);

//30

textx2=newTextField(3);

textx1x2=newTextField(3);

textc1=newTextField(3);

texta=newTextField(3);

textb=newTextField(3);

textc=newTextField(3);

labelnumber=newLabel("

δ:

"

labelnum=newLabel("

μ:

textnum=newTextField(3);

textnumber=newTextField(3);

button=newButton("

enter"

button.addActionListener(this);

textarea=newTextArea(10,10);

Boxbox1=Box.createHorizontalBox();

//44

box1.add(label11);

box1.add(textx12);

box1.add(labelx12);

box1.add(textx1);

box1.add(labelx1);

box1.add(textx22);

box1.add(labelx22);

box1.add(textx2);

box1.add(labelx2);

box1.add(textx1x2);

//54

box1.add(labelx1x2);

box1.add(textc1);

Boxbox2=Box.createHorizontalBox();

box2.add(label12);

box2.add(texta);

box2.add(labela);

box2.add(textb);

box2.add(labelb);

box2.add(textc);

box2.add(labelc);

//64

Boxbox3=Box.createHorizontalBox();

box3.add(labelnum);

box3.add(textnum);

box3.add(labelnumber);

box3.add(textnumber);

box3.add(button);

Boxboxh=Box.createVerticalBox();

boxh.add(box1);

boxh.add(box2);

boxh.add(box3);

boxh.add(Box.createVerticalGlue());

setLayout(newBorderLayout());

add(boxh,BorderLayout.NORTH);

add(textarea,BorderLayout.SOUTH);

//78

addWindowListener(newWindowAdapter()

{publicvoidwindowClosing(WindowEvente)

{

System.exit(0);

}

});

setVisible(true);

setBounds(100,100,600,600);

validate();

}//88

publicvoidactionPerformed(ActionEvente)

if(e.getSource()==button)

x12=Double.parseDouble(textx12.getText());

x1=Double.parseDouble(textx1.getText());

x22=Double.parseDouble(textx22.getText());

x2=Double.parseDouble(textx2.getText());

x1x2=Double.parseDouble(textx1x2.getText());

c1=Double.parseDouble(textc1.getText());

//98

a=Double.parseDouble(texta.getText());

b=Double.parseDouble(textb.getText());

c=Double.parseDouble(textc.getText());

num=Double.parseDouble(textnum.getText());

number=Double.parseDouble(textnumber.getText());

f(x12,x1,x22,x2,x1x2,c1,a,b,c);

}

voidf(doublex12,doublex1,doublex22,doublex2,doublex1x2,doublec1,doublea,doubleb,doublec)

a1x1=2*x12+number*a*a;

a1x2=x1x2+number*a*b;

//110

a1c=x1-num*a+number*a*c;

a2x1=x1x2+number*a*b;

a2x2=2*x22+number*b*b;

a2c=x2-num*b+number*c*b;

ans[n]=(a2c*a1x2-a1c*a2x2)/(a1x1*a2x2-a2x1*a1x2);

answ[n]=(a1c*a2x1-a2c*a1x1)/(a2x2*a1x1-a1x2*a2x1);

NumberFormatf1=NumberFormat.getInstance();

f1.setMaximumFractionDigits(4);

Strings1=f1.format(ans[n]);

ans[n]=Double.parseDouble(s1);

//120

NumberFormatf2=NumberFormat.getInstance();

f2.setMaximumFractionDigits(4);

Strings2=f2.format(answ[n]);

answ[n]=Double.parseDouble(s2);

num=num-number*(a*ans[n]+b*answ[n]+c);

if(n>

=10)

{textarea.setText("

x1="

+ans[n]+"

x2="

+answ[n]+"

"

+n);

else

2){

if((ans[n]==ans[n-1])&

&

(answ[n]==answ[n-1]))

{textarea.setText("

else//130

n+=1;

publicstaticvoidmain(Stringargs[])

newShu();

}

四、算法实现

例1.用乘子法求解问题

解:

运行程序

(1)显示出对话框。

(2)输入目标函数和约束条件的系数并填入

值,点击enter。

(3)输出结果

为最优解。

例2.用乘子法求解问题

例3.用乘子法求解问题

例4.用乘子法求解问题

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1