1、即故当时,有否则,由可推得。综合起来。,有既有 (1)因此,当时,我们有而当综合上述两种情形,将结果代回到中去得于是,将式(1)带入乘子迭代公式得回到一般约束优化问题,此时,增广拉格朗日函数为乘子迭代的公式为令则终止准则为二、算法框图三、算法程序import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.text.NumberFormat;public class Shu extends Frame implements ActionListenerLabel labelx12,labelx1,label
2、x22,labelx2,labelx1x2,labela,labelb,labelc,label11,label12,labelnum,labelnumber;TextField textx12,textx1,textx22,textx2,textc1,textx1x2,texta,textb,textc,textnum,textnumber;Button button;TextArea textarea; /10double x1,x12,x22,x2,x1x2,c1,a,b,c,num,number;double a1x1,a1x2,a1c,a2x1,a2x2,a2c;int n=1;do
3、uble ans,answ;public Shu()ans=new double20;answ=new double20;labelx12=new Label(x12+);labelx1=new Label(x1+labelx22=new Label(x22+ /20labelx2=new Label(x2+labelx1x2=new Label(x1*x2+ labela=new Label(labelb=new Label(labelc=new Label(=0label11=new Label(min label12=new Label(s.t.textx12=new TextField
4、(3);textx1=new TextField(3);textx22=new TextField(3); /30textx2=new TextField(3);textx1x2=new TextField(3);textc1=new TextField(3);texta=new TextField(3);textb=new TextField(3);textc=new TextField(3);labelnumber=new Label(:labelnum=new Label(:textnum=new TextField(3);textnumber=new TextField(3);butt
5、on=new Button(enterbutton.addActionListener(this);textarea=new TextArea(10,10);Box box1=Box.createHorizontalBox(); /44box1.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);
6、/54box1.add(labelx1x2);box1.add(textc1);Box box2=Box.createHorizontalBox();box2.add(label12);box2.add(texta);box2.add(labela);box2.add(textb);box2.add(labelb);box2.add(textc);box2.add(labelc); /64Box box3=Box.createHorizontalBox();box3.add(labelnum);box3.add(textnum);box3.add(labelnumber);box3.add(t
7、extnumber);box3.add(button);Box boxh=Box.createVerticalBox();boxh.add(box1);boxh.add(box2);boxh.add(box3);boxh.add(Box.createVerticalGlue();setLayout(new BorderLayout();add(boxh,BorderLayout.NORTH);add(textarea,BorderLayout.SOUTH); /78addWindowListener(new WindowAdapter() public void windowClosing(W
8、indowEvent e) System.exit(0); );setVisible(true);setBounds(100,100,600,600);validate(); /88public void actionPerformed(ActionEvent e) if(e.getSource()=button)x12=Double.parseDouble(textx12.getText();x1=Double.parseDouble(textx1.getText();x22=Double.parseDouble(textx22.getText();x2=Double.parseDouble
9、(textx2.getText();x1x2=Double.parseDouble(textx1x2.getText();c1=Double.parseDouble(textc1.getText(); /98a=Double.parseDouble(texta.getText();b=Double.parseDouble(textb.getText();c=Double.parseDouble(textc.getText();num=Double.parseDouble(textnum.getText();number=Double.parseDouble(textnumber.getText
10、();f(x12,x1,x22,x2,x1x2,c1,a,b,c);void f(double x12,double x1,double x22,double x2,double x1x2,double c1,double a,double b,double c)a1x1=2*x12+number*a*a;a1x2=x1x2+number*a*b; /110a1c=x1-num*a+number*a*c;a2x1=x1x2+number*a*b;a2x2=2*x22+number*b*b;a2c=x2-num*b+number*c*b;ansn=(a2c*a1x2-a1c*a2x2)/(a1x
11、1*a2x2-a2x1*a1x2);answn=(a1c*a2x1-a2c*a1x1)/(a2x2*a1x1-a1x2*a2x1);NumberFormat f1=NumberFormat.getInstance();f1.setMaximumFractionDigits(4);String s1=f1.format(ansn);ansn=Double.parseDouble(s1); /120NumberFormat f2=NumberFormat.getInstance();f2.setMaximumFractionDigits(4);String s2=f2.format(answn);
12、answn=Double.parseDouble(s2);num=num-number*(a*ansn+b*answn+c);if(n=10)textarea.setText(x1=+ansn+ x2=+answn+ +n);else2)if(ansn=ansn-1)&(answn=answn-1) textarea.setText(else /130n+=1;public static void main(String args) new Shu(); 四、算法实现例1 用乘子法求解问题解:运行程序(1)显示出对话框。(2)输入目标函数和约束条件的系数并填入和值,点击enter。(3)输出结果为最优解。例2 用乘子法求解问题例3用乘子法求解问题例4用乘子法求解问题
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1